diff options
Diffstat (limited to 'doc')
108 files changed, 6639 insertions, 12567 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am index 5a0077b..40551b3 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ ## Process this file with automake to produce Makefile.in -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2022 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # @@ -16,41 +16,49 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -SUBDIRS = cyclo if ENABLE_GTK_DOC -SUBDIRS += reference +SUBDIRS = reference endif -EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf stamp_docs \ - COPYING COPYING.LESSER +EXTRA_DIST = gdoc TODO stamp_docs COPYING COPYING.LESSER info_TEXINFOS = libtasn1.texi -libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) +libtasn1_TEXINFOS = fdl-1.3.texi $(gdoc_TEXINFOS) +libtasn1_TEXINFOS += asn1Coding-help.texi asn1Decoding-help.texi asn1Parser-help.texi -AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) -AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ - --no-split --number-sections --css-include=texinfo.css +AM_MAKEINFOHTMLFLAGS = --no-split $(AM_MAKEINFOFLAGS) dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 -asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ - --name="ASN.1 syntax tree generator for libtasn1" \ - --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) - -asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ +asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) -asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ +asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) +asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ + --name="ASN.1 syntax tree generator for libtasn1" \ + --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) + +asn1Coding-help.texi: $(top_srcdir)/src/asn1Coding.c + $(AM_V_GEN)$(top_builddir)/src/asn1Coding$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Coding-help.texi + +asn1Decoding-help.texi: $(top_srcdir)/src/asn1Decoding.c + $(AM_V_GEN)$(top_builddir)/src/asn1Decoding$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Decoding-help.texi + +asn1Parser-help.texi: $(top_srcdir)/src/asn1Parser.c + $(AM_V_GEN)$(top_builddir)/src/asn1Parser$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Parser-help.texi + gdoc_MANS = gdoc_MANS += man/asn1_get_length_der.3 gdoc_MANS += man/asn1_get_tag_der.3 @@ -72,6 +80,7 @@ gdoc_MANS += man/asn1_find_node.3 gdoc_MANS += man/asn1_length_der.3 gdoc_MANS += man/asn1_octet_der.3 gdoc_MANS += man/asn1_encode_simple_der.3 +gdoc_MANS += man/asn1_object_id_der.3 gdoc_MANS += man/asn1_bit_der.3 gdoc_MANS += man/asn1_der_coding.3 gdoc_MANS += man/asn1_write_value.3 @@ -122,6 +131,7 @@ gdoc_TEXINFOS += texi/asn1_find_node.texi gdoc_TEXINFOS += texi/asn1_length_der.texi gdoc_TEXINFOS += texi/asn1_octet_der.texi gdoc_TEXINFOS += texi/asn1_encode_simple_der.texi +gdoc_TEXINFOS += texi/asn1_object_id_der.texi gdoc_TEXINFOS += texi/asn1_bit_der.texi gdoc_TEXINFOS += texi/asn1_der_coding.texi gdoc_TEXINFOS += texi/asn1_write_value.texi @@ -146,7 +156,7 @@ gdoc_TEXINFOS += texi/asn1_check_version.texi GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ - $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ + $(top_srcdir)/lib/structure.c $(top_builddir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c compare-makefile: @@ -161,7 +171,7 @@ compare-makefile: MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ - grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ + grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' $(srcdir)/Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; @@ -173,7 +183,7 @@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs -stamp_docs: +stamp_docs: $(top_srcdir)/.version $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ @@ -183,7 +193,7 @@ stamp_docs: -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ - -copyright "2006-2015 Free Software Foundation, Inc." \ + -copyright "2006-2022 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ diff --git a/doc/Makefile.in b/doc/Makefile.in index 9d5e0e5..60b456b 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +14,7 @@ @SET_MAKE@ -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2022 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # @@ -104,39 +104,87 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@ENABLE_GTK_DOC_TRUE@am__append_1 = reference subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/src/gl/m4/alloca.m4 \ + $(top_srcdir)/src/gl/m4/clock_time.m4 \ + $(top_srcdir)/src/gl/m4/close.m4 \ + $(top_srcdir)/src/gl/m4/dup2.m4 \ + $(top_srcdir)/src/gl/m4/eealloc.m4 \ + $(top_srcdir)/src/gl/m4/errno_h.m4 \ + $(top_srcdir)/src/gl/m4/explicit_bzero.m4 \ + $(top_srcdir)/src/gl/m4/fcntl-o.m4 \ + $(top_srcdir)/src/gl/m4/fcntl.m4 \ + $(top_srcdir)/src/gl/m4/fcntl_h.m4 \ + $(top_srcdir)/src/gl/m4/fopen.m4 \ + $(top_srcdir)/src/gl/m4/free.m4 \ + $(top_srcdir)/src/gl/m4/fseeko.m4 \ + $(top_srcdir)/src/gl/m4/fstat.m4 \ + $(top_srcdir)/src/gl/m4/ftell.m4 \ + $(top_srcdir)/src/gl/m4/ftello.m4 \ + $(top_srcdir)/src/gl/m4/getdtablesize.m4 \ + $(top_srcdir)/src/gl/m4/getopt.m4 \ + $(top_srcdir)/src/gl/m4/gettime.m4 \ + $(top_srcdir)/src/gl/m4/gettimeofday.m4 \ + $(top_srcdir)/src/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/src/gl/m4/inttypes.m4 \ + $(top_srcdir)/src/gl/m4/largefile.m4 \ + $(top_srcdir)/src/gl/m4/lseek.m4 \ + $(top_srcdir)/src/gl/m4/malloc.m4 \ + $(top_srcdir)/src/gl/m4/malloca.m4 \ + $(top_srcdir)/src/gl/m4/mode_t.m4 \ + $(top_srcdir)/src/gl/m4/msvc-inval.m4 \ + $(top_srcdir)/src/gl/m4/msvc-nothrow.m4 \ + $(top_srcdir)/src/gl/m4/nocrash.m4 \ + $(top_srcdir)/src/gl/m4/open-cloexec.m4 \ + $(top_srcdir)/src/gl/m4/open-slash.m4 \ + $(top_srcdir)/src/gl/m4/open.m4 \ + $(top_srcdir)/src/gl/m4/pathmax.m4 \ + $(top_srcdir)/src/gl/m4/read-file.m4 \ + $(top_srcdir)/src/gl/m4/realloc.m4 \ + $(top_srcdir)/src/gl/m4/stat-time.m4 \ + $(top_srcdir)/src/gl/m4/stat.m4 \ + $(top_srcdir)/src/gl/m4/stdarg.m4 \ + $(top_srcdir)/src/gl/m4/stdio_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_socket_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_stat_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_time_h.m4 \ + $(top_srcdir)/src/gl/m4/time_h.m4 \ + $(top_srcdir)/src/gl/m4/timespec.m4 \ + $(top_srcdir)/src/gl/m4/ungetc.m4 \ + $(top_srcdir)/src/gl/m4/version-etc.m4 \ + $(top_srcdir)/src/gl/m4/wchar_h.m4 \ + $(top_srcdir)/src/gl/m4/year2038.m4 \ + $(top_srcdir)/m4/00gnulib.m4 $(top_srcdir)/m4/__inline.m4 \ + $(top_srcdir)/m4/absolute-header.m4 \ + $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_file_escapes.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/extensions.m4 \ + $(top_srcdir)/m4/extern-inline.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/include_next.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 \ + $(top_srcdir)/m4/ld-version-script.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/limits-h.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4-gl/00gnulib.m4 \ - $(top_srcdir)/m4-gl/__inline.m4 \ - $(top_srcdir)/m4-gl/absolute-header.m4 \ - $(top_srcdir)/m4-gl/extensions.m4 \ - $(top_srcdir)/m4-gl/extern-inline.m4 \ - $(top_srcdir)/m4-gl/gnulib-common.m4 \ - $(top_srcdir)/m4-gl/gnulib-comp.m4 \ - $(top_srcdir)/m4-gl/include_next.m4 \ - $(top_srcdir)/m4-gl/ld-version-script.m4 \ - $(top_srcdir)/m4-gl/limits-h.m4 \ - $(top_srcdir)/m4-gl/longlong.m4 $(top_srcdir)/m4-gl/minmax.m4 \ - $(top_srcdir)/m4-gl/multiarch.m4 $(top_srcdir)/m4-gl/off_t.m4 \ - $(top_srcdir)/m4-gl/ssize_t.m4 $(top_srcdir)/m4-gl/stddef_h.m4 \ - $(top_srcdir)/m4-gl/stdint.m4 $(top_srcdir)/m4-gl/string_h.m4 \ - $(top_srcdir)/m4-gl/strverscmp.m4 \ - $(top_srcdir)/m4-gl/sys_types_h.m4 \ - $(top_srcdir)/m4-gl/valgrind-tests.m4 \ - $(top_srcdir)/m4-gl/visibility.m4 \ - $(top_srcdir)/m4-gl/warn-on-use.m4 \ - $(top_srcdir)/m4-gl/wchar_t.m4 $(top_srcdir)/m4-gl/wint_t.m4 \ + $(top_srcdir)/m4/manywarnings.m4 $(top_srcdir)/m4/minmax.m4 \ + $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/off_t.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/ssize_t.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \ + $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdlib_h.m4 \ + $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strverscmp.m4 \ + $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \ + $(top_srcdir)/m4/valgrind-tests.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -196,6 +244,7 @@ PDFS = libtasn1.pdf PSS = libtasn1.ps HTMLS = libtasn1.html TEXINFOS = libtasn1.texi +TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html DVIPS = dvips @@ -270,9 +319,7 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = cyclo reference +DIST_SUBDIRS = reference am__DIST_COMMON = $(dist_man_MANS) $(libtasn1_TEXINFOS) \ $(srcdir)/Makefile.in $(top_srcdir)/build-aux/mdate-sh \ $(top_srcdir)/build-aux/texinfo.tex COPYING COPYING.LESSER \ @@ -304,16 +351,15 @@ am__relativize = \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_VALGRINDFLAGS = @AM_VALGRINDFLAGS@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ -ASN1_VERSION_MAJOR = @ASN1_VERSION_MAJOR@ -ASN1_VERSION_MINOR = @ASN1_VERSION_MINOR@ -ASN1_VERSION_NUMBER = @ASN1_VERSION_NUMBER@ -ASN1_VERSION_PATCH = @ASN1_VERSION_PATCH@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -335,7 +381,10 @@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ +DEFAULT_VALGRINDFLAGS = @DEFAULT_VALGRINDFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ @@ -345,49 +394,523 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FUZZ_LIBS = @FUZZ_LIBS@ GCOV = @GCOV@ GENHTML = @GENHTML@ -GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ +GETOPT_H = @GETOPT_H@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_CXXFLAG_ALLOW_WARNINGS = @GL_CXXFLAG_ALLOW_WARNINGS@ +GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ +GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ +GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ +GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ +GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ +GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ +GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ +GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ +GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ +GL_GNULIB_DUP = @GL_GNULIB_DUP@ +GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ +GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ +GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ +GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ +GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ +GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ +GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ +GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ +GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ +GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ +GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ +GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ +GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ +GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ +GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ +GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ +GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ +GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ +GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ +GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ +GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ +GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ +GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ +GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ +GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ +GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ +GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ +GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ +GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ +GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ +GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ +GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ +GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ +GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ +GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ +GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ +GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ +GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ +GL_GNULIB_LINK = @GL_GNULIB_LINK@ +GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ +GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ +GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ +GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ +GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ +GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ +GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ +GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ +GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ +GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ +GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ +GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ +GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ +GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ +GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ +GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ +GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ +GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ +GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ +GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ +GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ +GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ +GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ +GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ +GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ +GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ +GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ +GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ +GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ +GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ +GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ +GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ +GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ +GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ +GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ +GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ +GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ +GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ +GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ +GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ +GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ +GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ +GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ +GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ +GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ +GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ +GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ +GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ +GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ +GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ +GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ +GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ +GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ +GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ +GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ +GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ +GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ +GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ +GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ +GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ +GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ +GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ +GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ +GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ +GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ +GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ +GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ +GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ +GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ +GL_GNULIB_READ = @GL_GNULIB_READ@ +GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ +GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ +GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ +GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ +GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ +GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ +GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ +GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ +GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ +GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ +GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ +GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ +GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ +GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ +GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ +GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ +GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ +GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ +GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ +GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ +GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ +GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ +GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ +GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ +GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ +GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ +GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ +GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ +GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ +GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ +GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ +GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ +GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ +GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ +GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ +GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ +GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ +GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ +GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ +GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ +GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ +GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ +GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ +GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ +GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ +GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ +GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ +GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ +GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ +GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ +GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ +GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ +GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ +GL_SGL_GNULIB_ACCESS = @GL_SGL_GNULIB_ACCESS@ +GL_SGL_GNULIB_ALIGNED_ALLOC = @GL_SGL_GNULIB_ALIGNED_ALLOC@ +GL_SGL_GNULIB_ATOLL = @GL_SGL_GNULIB_ATOLL@ +GL_SGL_GNULIB_BTOWC = @GL_SGL_GNULIB_BTOWC@ +GL_SGL_GNULIB_CALLOC_GNU = @GL_SGL_GNULIB_CALLOC_GNU@ +GL_SGL_GNULIB_CALLOC_POSIX = @GL_SGL_GNULIB_CALLOC_POSIX@ +GL_SGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_SGL_GNULIB_CANONICALIZE_FILE_NAME@ +GL_SGL_GNULIB_CHDIR = @GL_SGL_GNULIB_CHDIR@ +GL_SGL_GNULIB_CHMOD = @GL_SGL_GNULIB_CHMOD@ +GL_SGL_GNULIB_CHOWN = @GL_SGL_GNULIB_CHOWN@ +GL_SGL_GNULIB_CLOSE = @GL_SGL_GNULIB_CLOSE@ +GL_SGL_GNULIB_COPY_FILE_RANGE = @GL_SGL_GNULIB_COPY_FILE_RANGE@ +GL_SGL_GNULIB_CREAT = @GL_SGL_GNULIB_CREAT@ +GL_SGL_GNULIB_CTIME = @GL_SGL_GNULIB_CTIME@ +GL_SGL_GNULIB_DPRINTF = @GL_SGL_GNULIB_DPRINTF@ +GL_SGL_GNULIB_DUP = @GL_SGL_GNULIB_DUP@ +GL_SGL_GNULIB_DUP2 = @GL_SGL_GNULIB_DUP2@ +GL_SGL_GNULIB_DUP3 = @GL_SGL_GNULIB_DUP3@ +GL_SGL_GNULIB_ENVIRON = @GL_SGL_GNULIB_ENVIRON@ +GL_SGL_GNULIB_EUIDACCESS = @GL_SGL_GNULIB_EUIDACCESS@ +GL_SGL_GNULIB_EXECL = @GL_SGL_GNULIB_EXECL@ +GL_SGL_GNULIB_EXECLE = @GL_SGL_GNULIB_EXECLE@ +GL_SGL_GNULIB_EXECLP = @GL_SGL_GNULIB_EXECLP@ +GL_SGL_GNULIB_EXECV = @GL_SGL_GNULIB_EXECV@ +GL_SGL_GNULIB_EXECVE = @GL_SGL_GNULIB_EXECVE@ +GL_SGL_GNULIB_EXECVP = @GL_SGL_GNULIB_EXECVP@ +GL_SGL_GNULIB_EXECVPE = @GL_SGL_GNULIB_EXECVPE@ +GL_SGL_GNULIB_EXPLICIT_BZERO = @GL_SGL_GNULIB_EXPLICIT_BZERO@ +GL_SGL_GNULIB_FACCESSAT = @GL_SGL_GNULIB_FACCESSAT@ +GL_SGL_GNULIB_FCHDIR = @GL_SGL_GNULIB_FCHDIR@ +GL_SGL_GNULIB_FCHMODAT = @GL_SGL_GNULIB_FCHMODAT@ +GL_SGL_GNULIB_FCHOWNAT = @GL_SGL_GNULIB_FCHOWNAT@ +GL_SGL_GNULIB_FCLOSE = @GL_SGL_GNULIB_FCLOSE@ +GL_SGL_GNULIB_FCNTL = @GL_SGL_GNULIB_FCNTL@ +GL_SGL_GNULIB_FDATASYNC = @GL_SGL_GNULIB_FDATASYNC@ +GL_SGL_GNULIB_FDOPEN = @GL_SGL_GNULIB_FDOPEN@ +GL_SGL_GNULIB_FFLUSH = @GL_SGL_GNULIB_FFLUSH@ +GL_SGL_GNULIB_FFSL = @GL_SGL_GNULIB_FFSL@ +GL_SGL_GNULIB_FFSLL = @GL_SGL_GNULIB_FFSLL@ +GL_SGL_GNULIB_FGETC = @GL_SGL_GNULIB_FGETC@ +GL_SGL_GNULIB_FGETS = @GL_SGL_GNULIB_FGETS@ +GL_SGL_GNULIB_FOPEN = @GL_SGL_GNULIB_FOPEN@ +GL_SGL_GNULIB_FOPEN_GNU = @GL_SGL_GNULIB_FOPEN_GNU@ +GL_SGL_GNULIB_FPRINTF = @GL_SGL_GNULIB_FPRINTF@ +GL_SGL_GNULIB_FPRINTF_POSIX = @GL_SGL_GNULIB_FPRINTF_POSIX@ +GL_SGL_GNULIB_FPURGE = @GL_SGL_GNULIB_FPURGE@ +GL_SGL_GNULIB_FPUTC = @GL_SGL_GNULIB_FPUTC@ +GL_SGL_GNULIB_FPUTS = @GL_SGL_GNULIB_FPUTS@ +GL_SGL_GNULIB_FREAD = @GL_SGL_GNULIB_FREAD@ +GL_SGL_GNULIB_FREE_POSIX = @GL_SGL_GNULIB_FREE_POSIX@ +GL_SGL_GNULIB_FREOPEN = @GL_SGL_GNULIB_FREOPEN@ +GL_SGL_GNULIB_FSCANF = @GL_SGL_GNULIB_FSCANF@ +GL_SGL_GNULIB_FSEEK = @GL_SGL_GNULIB_FSEEK@ +GL_SGL_GNULIB_FSEEKO = @GL_SGL_GNULIB_FSEEKO@ +GL_SGL_GNULIB_FSTAT = @GL_SGL_GNULIB_FSTAT@ +GL_SGL_GNULIB_FSTATAT = @GL_SGL_GNULIB_FSTATAT@ +GL_SGL_GNULIB_FSYNC = @GL_SGL_GNULIB_FSYNC@ +GL_SGL_GNULIB_FTELL = @GL_SGL_GNULIB_FTELL@ +GL_SGL_GNULIB_FTELLO = @GL_SGL_GNULIB_FTELLO@ +GL_SGL_GNULIB_FTRUNCATE = @GL_SGL_GNULIB_FTRUNCATE@ +GL_SGL_GNULIB_FUTIMENS = @GL_SGL_GNULIB_FUTIMENS@ +GL_SGL_GNULIB_FWRITE = @GL_SGL_GNULIB_FWRITE@ +GL_SGL_GNULIB_GETC = @GL_SGL_GNULIB_GETC@ +GL_SGL_GNULIB_GETCHAR = @GL_SGL_GNULIB_GETCHAR@ +GL_SGL_GNULIB_GETCWD = @GL_SGL_GNULIB_GETCWD@ +GL_SGL_GNULIB_GETDELIM = @GL_SGL_GNULIB_GETDELIM@ +GL_SGL_GNULIB_GETDOMAINNAME = @GL_SGL_GNULIB_GETDOMAINNAME@ +GL_SGL_GNULIB_GETDTABLESIZE = @GL_SGL_GNULIB_GETDTABLESIZE@ +GL_SGL_GNULIB_GETENTROPY = @GL_SGL_GNULIB_GETENTROPY@ +GL_SGL_GNULIB_GETGROUPS = @GL_SGL_GNULIB_GETGROUPS@ +GL_SGL_GNULIB_GETHOSTNAME = @GL_SGL_GNULIB_GETHOSTNAME@ +GL_SGL_GNULIB_GETLINE = @GL_SGL_GNULIB_GETLINE@ +GL_SGL_GNULIB_GETLOADAVG = @GL_SGL_GNULIB_GETLOADAVG@ +GL_SGL_GNULIB_GETLOGIN = @GL_SGL_GNULIB_GETLOGIN@ +GL_SGL_GNULIB_GETLOGIN_R = @GL_SGL_GNULIB_GETLOGIN_R@ +GL_SGL_GNULIB_GETOPT_POSIX = @GL_SGL_GNULIB_GETOPT_POSIX@ +GL_SGL_GNULIB_GETPAGESIZE = @GL_SGL_GNULIB_GETPAGESIZE@ +GL_SGL_GNULIB_GETPASS = @GL_SGL_GNULIB_GETPASS@ +GL_SGL_GNULIB_GETPASS_GNU = @GL_SGL_GNULIB_GETPASS_GNU@ +GL_SGL_GNULIB_GETSUBOPT = @GL_SGL_GNULIB_GETSUBOPT@ +GL_SGL_GNULIB_GETTIMEOFDAY = @GL_SGL_GNULIB_GETTIMEOFDAY@ +GL_SGL_GNULIB_GETUMASK = @GL_SGL_GNULIB_GETUMASK@ +GL_SGL_GNULIB_GETUSERSHELL = @GL_SGL_GNULIB_GETUSERSHELL@ +GL_SGL_GNULIB_GRANTPT = @GL_SGL_GNULIB_GRANTPT@ +GL_SGL_GNULIB_GROUP_MEMBER = @GL_SGL_GNULIB_GROUP_MEMBER@ +GL_SGL_GNULIB_IMAXABS = @GL_SGL_GNULIB_IMAXABS@ +GL_SGL_GNULIB_IMAXDIV = @GL_SGL_GNULIB_IMAXDIV@ +GL_SGL_GNULIB_ISATTY = @GL_SGL_GNULIB_ISATTY@ +GL_SGL_GNULIB_LCHMOD = @GL_SGL_GNULIB_LCHMOD@ +GL_SGL_GNULIB_LCHOWN = @GL_SGL_GNULIB_LCHOWN@ +GL_SGL_GNULIB_LINK = @GL_SGL_GNULIB_LINK@ +GL_SGL_GNULIB_LINKAT = @GL_SGL_GNULIB_LINKAT@ +GL_SGL_GNULIB_LOCALTIME = @GL_SGL_GNULIB_LOCALTIME@ +GL_SGL_GNULIB_LSEEK = @GL_SGL_GNULIB_LSEEK@ +GL_SGL_GNULIB_LSTAT = @GL_SGL_GNULIB_LSTAT@ +GL_SGL_GNULIB_MALLOC_GNU = @GL_SGL_GNULIB_MALLOC_GNU@ +GL_SGL_GNULIB_MALLOC_POSIX = @GL_SGL_GNULIB_MALLOC_POSIX@ +GL_SGL_GNULIB_MBRLEN = @GL_SGL_GNULIB_MBRLEN@ +GL_SGL_GNULIB_MBRTOWC = @GL_SGL_GNULIB_MBRTOWC@ +GL_SGL_GNULIB_MBSCASECMP = @GL_SGL_GNULIB_MBSCASECMP@ +GL_SGL_GNULIB_MBSCASESTR = @GL_SGL_GNULIB_MBSCASESTR@ +GL_SGL_GNULIB_MBSCHR = @GL_SGL_GNULIB_MBSCHR@ +GL_SGL_GNULIB_MBSCSPN = @GL_SGL_GNULIB_MBSCSPN@ +GL_SGL_GNULIB_MBSINIT = @GL_SGL_GNULIB_MBSINIT@ +GL_SGL_GNULIB_MBSLEN = @GL_SGL_GNULIB_MBSLEN@ +GL_SGL_GNULIB_MBSNCASECMP = @GL_SGL_GNULIB_MBSNCASECMP@ +GL_SGL_GNULIB_MBSNLEN = @GL_SGL_GNULIB_MBSNLEN@ +GL_SGL_GNULIB_MBSNRTOWCS = @GL_SGL_GNULIB_MBSNRTOWCS@ +GL_SGL_GNULIB_MBSPBRK = @GL_SGL_GNULIB_MBSPBRK@ +GL_SGL_GNULIB_MBSPCASECMP = @GL_SGL_GNULIB_MBSPCASECMP@ +GL_SGL_GNULIB_MBSRCHR = @GL_SGL_GNULIB_MBSRCHR@ +GL_SGL_GNULIB_MBSRTOWCS = @GL_SGL_GNULIB_MBSRTOWCS@ +GL_SGL_GNULIB_MBSSEP = @GL_SGL_GNULIB_MBSSEP@ +GL_SGL_GNULIB_MBSSPN = @GL_SGL_GNULIB_MBSSPN@ +GL_SGL_GNULIB_MBSSTR = @GL_SGL_GNULIB_MBSSTR@ +GL_SGL_GNULIB_MBSTOK_R = @GL_SGL_GNULIB_MBSTOK_R@ +GL_SGL_GNULIB_MBTOWC = @GL_SGL_GNULIB_MBTOWC@ +GL_SGL_GNULIB_MDA_ACCESS = @GL_SGL_GNULIB_MDA_ACCESS@ +GL_SGL_GNULIB_MDA_CHDIR = @GL_SGL_GNULIB_MDA_CHDIR@ +GL_SGL_GNULIB_MDA_CHMOD = @GL_SGL_GNULIB_MDA_CHMOD@ +GL_SGL_GNULIB_MDA_CLOSE = @GL_SGL_GNULIB_MDA_CLOSE@ +GL_SGL_GNULIB_MDA_CREAT = @GL_SGL_GNULIB_MDA_CREAT@ +GL_SGL_GNULIB_MDA_DUP = @GL_SGL_GNULIB_MDA_DUP@ +GL_SGL_GNULIB_MDA_DUP2 = @GL_SGL_GNULIB_MDA_DUP2@ +GL_SGL_GNULIB_MDA_ECVT = @GL_SGL_GNULIB_MDA_ECVT@ +GL_SGL_GNULIB_MDA_EXECL = @GL_SGL_GNULIB_MDA_EXECL@ +GL_SGL_GNULIB_MDA_EXECLE = @GL_SGL_GNULIB_MDA_EXECLE@ +GL_SGL_GNULIB_MDA_EXECLP = @GL_SGL_GNULIB_MDA_EXECLP@ +GL_SGL_GNULIB_MDA_EXECV = @GL_SGL_GNULIB_MDA_EXECV@ +GL_SGL_GNULIB_MDA_EXECVE = @GL_SGL_GNULIB_MDA_EXECVE@ +GL_SGL_GNULIB_MDA_EXECVP = @GL_SGL_GNULIB_MDA_EXECVP@ +GL_SGL_GNULIB_MDA_EXECVPE = @GL_SGL_GNULIB_MDA_EXECVPE@ +GL_SGL_GNULIB_MDA_FCLOSEALL = @GL_SGL_GNULIB_MDA_FCLOSEALL@ +GL_SGL_GNULIB_MDA_FCVT = @GL_SGL_GNULIB_MDA_FCVT@ +GL_SGL_GNULIB_MDA_FDOPEN = @GL_SGL_GNULIB_MDA_FDOPEN@ +GL_SGL_GNULIB_MDA_FILENO = @GL_SGL_GNULIB_MDA_FILENO@ +GL_SGL_GNULIB_MDA_GCVT = @GL_SGL_GNULIB_MDA_GCVT@ +GL_SGL_GNULIB_MDA_GETCWD = @GL_SGL_GNULIB_MDA_GETCWD@ +GL_SGL_GNULIB_MDA_GETPID = @GL_SGL_GNULIB_MDA_GETPID@ +GL_SGL_GNULIB_MDA_GETW = @GL_SGL_GNULIB_MDA_GETW@ +GL_SGL_GNULIB_MDA_ISATTY = @GL_SGL_GNULIB_MDA_ISATTY@ +GL_SGL_GNULIB_MDA_LSEEK = @GL_SGL_GNULIB_MDA_LSEEK@ +GL_SGL_GNULIB_MDA_MEMCCPY = @GL_SGL_GNULIB_MDA_MEMCCPY@ +GL_SGL_GNULIB_MDA_MKDIR = @GL_SGL_GNULIB_MDA_MKDIR@ +GL_SGL_GNULIB_MDA_MKTEMP = @GL_SGL_GNULIB_MDA_MKTEMP@ +GL_SGL_GNULIB_MDA_OPEN = @GL_SGL_GNULIB_MDA_OPEN@ +GL_SGL_GNULIB_MDA_PUTENV = @GL_SGL_GNULIB_MDA_PUTENV@ +GL_SGL_GNULIB_MDA_PUTW = @GL_SGL_GNULIB_MDA_PUTW@ +GL_SGL_GNULIB_MDA_READ = @GL_SGL_GNULIB_MDA_READ@ +GL_SGL_GNULIB_MDA_RMDIR = @GL_SGL_GNULIB_MDA_RMDIR@ +GL_SGL_GNULIB_MDA_STRDUP = @GL_SGL_GNULIB_MDA_STRDUP@ +GL_SGL_GNULIB_MDA_SWAB = @GL_SGL_GNULIB_MDA_SWAB@ +GL_SGL_GNULIB_MDA_TEMPNAM = @GL_SGL_GNULIB_MDA_TEMPNAM@ +GL_SGL_GNULIB_MDA_TZSET = @GL_SGL_GNULIB_MDA_TZSET@ +GL_SGL_GNULIB_MDA_UMASK = @GL_SGL_GNULIB_MDA_UMASK@ +GL_SGL_GNULIB_MDA_UNLINK = @GL_SGL_GNULIB_MDA_UNLINK@ +GL_SGL_GNULIB_MDA_WCSDUP = @GL_SGL_GNULIB_MDA_WCSDUP@ +GL_SGL_GNULIB_MDA_WRITE = @GL_SGL_GNULIB_MDA_WRITE@ +GL_SGL_GNULIB_MEMCHR = @GL_SGL_GNULIB_MEMCHR@ +GL_SGL_GNULIB_MEMMEM = @GL_SGL_GNULIB_MEMMEM@ +GL_SGL_GNULIB_MEMPCPY = @GL_SGL_GNULIB_MEMPCPY@ +GL_SGL_GNULIB_MEMRCHR = @GL_SGL_GNULIB_MEMRCHR@ +GL_SGL_GNULIB_MKDIR = @GL_SGL_GNULIB_MKDIR@ +GL_SGL_GNULIB_MKDIRAT = @GL_SGL_GNULIB_MKDIRAT@ +GL_SGL_GNULIB_MKDTEMP = @GL_SGL_GNULIB_MKDTEMP@ +GL_SGL_GNULIB_MKFIFO = @GL_SGL_GNULIB_MKFIFO@ +GL_SGL_GNULIB_MKFIFOAT = @GL_SGL_GNULIB_MKFIFOAT@ +GL_SGL_GNULIB_MKNOD = @GL_SGL_GNULIB_MKNOD@ +GL_SGL_GNULIB_MKNODAT = @GL_SGL_GNULIB_MKNODAT@ +GL_SGL_GNULIB_MKOSTEMP = @GL_SGL_GNULIB_MKOSTEMP@ +GL_SGL_GNULIB_MKOSTEMPS = @GL_SGL_GNULIB_MKOSTEMPS@ +GL_SGL_GNULIB_MKSTEMP = @GL_SGL_GNULIB_MKSTEMP@ +GL_SGL_GNULIB_MKSTEMPS = @GL_SGL_GNULIB_MKSTEMPS@ +GL_SGL_GNULIB_MKTIME = @GL_SGL_GNULIB_MKTIME@ +GL_SGL_GNULIB_NANOSLEEP = @GL_SGL_GNULIB_NANOSLEEP@ +GL_SGL_GNULIB_NONBLOCKING = @GL_SGL_GNULIB_NONBLOCKING@ +GL_SGL_GNULIB_OBSTACK_PRINTF = @GL_SGL_GNULIB_OBSTACK_PRINTF@ +GL_SGL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_SGL_GNULIB_OBSTACK_PRINTF_POSIX@ +GL_SGL_GNULIB_OPEN = @GL_SGL_GNULIB_OPEN@ +GL_SGL_GNULIB_OPENAT = @GL_SGL_GNULIB_OPENAT@ +GL_SGL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_SGL_GNULIB_OVERRIDES_STRUCT_STAT@ +GL_SGL_GNULIB_PCLOSE = @GL_SGL_GNULIB_PCLOSE@ +GL_SGL_GNULIB_PERROR = @GL_SGL_GNULIB_PERROR@ +GL_SGL_GNULIB_PIPE = @GL_SGL_GNULIB_PIPE@ +GL_SGL_GNULIB_PIPE2 = @GL_SGL_GNULIB_PIPE2@ +GL_SGL_GNULIB_POPEN = @GL_SGL_GNULIB_POPEN@ +GL_SGL_GNULIB_POSIX_MEMALIGN = @GL_SGL_GNULIB_POSIX_MEMALIGN@ +GL_SGL_GNULIB_POSIX_OPENPT = @GL_SGL_GNULIB_POSIX_OPENPT@ +GL_SGL_GNULIB_PREAD = @GL_SGL_GNULIB_PREAD@ +GL_SGL_GNULIB_PRINTF = @GL_SGL_GNULIB_PRINTF@ +GL_SGL_GNULIB_PRINTF_POSIX = @GL_SGL_GNULIB_PRINTF_POSIX@ +GL_SGL_GNULIB_PTSNAME = @GL_SGL_GNULIB_PTSNAME@ +GL_SGL_GNULIB_PTSNAME_R = @GL_SGL_GNULIB_PTSNAME_R@ +GL_SGL_GNULIB_PUTC = @GL_SGL_GNULIB_PUTC@ +GL_SGL_GNULIB_PUTCHAR = @GL_SGL_GNULIB_PUTCHAR@ +GL_SGL_GNULIB_PUTENV = @GL_SGL_GNULIB_PUTENV@ +GL_SGL_GNULIB_PUTS = @GL_SGL_GNULIB_PUTS@ +GL_SGL_GNULIB_PWRITE = @GL_SGL_GNULIB_PWRITE@ +GL_SGL_GNULIB_QSORT_R = @GL_SGL_GNULIB_QSORT_R@ +GL_SGL_GNULIB_RANDOM = @GL_SGL_GNULIB_RANDOM@ +GL_SGL_GNULIB_RANDOM_R = @GL_SGL_GNULIB_RANDOM_R@ +GL_SGL_GNULIB_RAWMEMCHR = @GL_SGL_GNULIB_RAWMEMCHR@ +GL_SGL_GNULIB_READ = @GL_SGL_GNULIB_READ@ +GL_SGL_GNULIB_READLINK = @GL_SGL_GNULIB_READLINK@ +GL_SGL_GNULIB_READLINKAT = @GL_SGL_GNULIB_READLINKAT@ +GL_SGL_GNULIB_REALLOCARRAY = @GL_SGL_GNULIB_REALLOCARRAY@ +GL_SGL_GNULIB_REALLOC_GNU = @GL_SGL_GNULIB_REALLOC_GNU@ +GL_SGL_GNULIB_REALLOC_POSIX = @GL_SGL_GNULIB_REALLOC_POSIX@ +GL_SGL_GNULIB_REALPATH = @GL_SGL_GNULIB_REALPATH@ +GL_SGL_GNULIB_REMOVE = @GL_SGL_GNULIB_REMOVE@ +GL_SGL_GNULIB_RENAME = @GL_SGL_GNULIB_RENAME@ +GL_SGL_GNULIB_RENAMEAT = @GL_SGL_GNULIB_RENAMEAT@ +GL_SGL_GNULIB_RMDIR = @GL_SGL_GNULIB_RMDIR@ +GL_SGL_GNULIB_RPMATCH = @GL_SGL_GNULIB_RPMATCH@ +GL_SGL_GNULIB_SCANF = @GL_SGL_GNULIB_SCANF@ +GL_SGL_GNULIB_SECURE_GETENV = @GL_SGL_GNULIB_SECURE_GETENV@ +GL_SGL_GNULIB_SETENV = @GL_SGL_GNULIB_SETENV@ +GL_SGL_GNULIB_SETHOSTNAME = @GL_SGL_GNULIB_SETHOSTNAME@ +GL_SGL_GNULIB_SIGABBREV_NP = @GL_SGL_GNULIB_SIGABBREV_NP@ +GL_SGL_GNULIB_SIGDESCR_NP = @GL_SGL_GNULIB_SIGDESCR_NP@ +GL_SGL_GNULIB_SLEEP = @GL_SGL_GNULIB_SLEEP@ +GL_SGL_GNULIB_SNPRINTF = @GL_SGL_GNULIB_SNPRINTF@ +GL_SGL_GNULIB_SPRINTF_POSIX = @GL_SGL_GNULIB_SPRINTF_POSIX@ +GL_SGL_GNULIB_STAT = @GL_SGL_GNULIB_STAT@ +GL_SGL_GNULIB_STDIO_H_NONBLOCKING = @GL_SGL_GNULIB_STDIO_H_NONBLOCKING@ +GL_SGL_GNULIB_STDIO_H_SIGPIPE = @GL_SGL_GNULIB_STDIO_H_SIGPIPE@ +GL_SGL_GNULIB_STPCPY = @GL_SGL_GNULIB_STPCPY@ +GL_SGL_GNULIB_STPNCPY = @GL_SGL_GNULIB_STPNCPY@ +GL_SGL_GNULIB_STRCASESTR = @GL_SGL_GNULIB_STRCASESTR@ +GL_SGL_GNULIB_STRCHRNUL = @GL_SGL_GNULIB_STRCHRNUL@ +GL_SGL_GNULIB_STRDUP = @GL_SGL_GNULIB_STRDUP@ +GL_SGL_GNULIB_STRERROR = @GL_SGL_GNULIB_STRERROR@ +GL_SGL_GNULIB_STRERRORNAME_NP = @GL_SGL_GNULIB_STRERRORNAME_NP@ +GL_SGL_GNULIB_STRERROR_R = @GL_SGL_GNULIB_STRERROR_R@ +GL_SGL_GNULIB_STRFTIME = @GL_SGL_GNULIB_STRFTIME@ +GL_SGL_GNULIB_STRNCAT = @GL_SGL_GNULIB_STRNCAT@ +GL_SGL_GNULIB_STRNDUP = @GL_SGL_GNULIB_STRNDUP@ +GL_SGL_GNULIB_STRNLEN = @GL_SGL_GNULIB_STRNLEN@ +GL_SGL_GNULIB_STRPBRK = @GL_SGL_GNULIB_STRPBRK@ +GL_SGL_GNULIB_STRPTIME = @GL_SGL_GNULIB_STRPTIME@ +GL_SGL_GNULIB_STRSEP = @GL_SGL_GNULIB_STRSEP@ +GL_SGL_GNULIB_STRSIGNAL = @GL_SGL_GNULIB_STRSIGNAL@ +GL_SGL_GNULIB_STRSTR = @GL_SGL_GNULIB_STRSTR@ +GL_SGL_GNULIB_STRTOD = @GL_SGL_GNULIB_STRTOD@ +GL_SGL_GNULIB_STRTOIMAX = @GL_SGL_GNULIB_STRTOIMAX@ +GL_SGL_GNULIB_STRTOK_R = @GL_SGL_GNULIB_STRTOK_R@ +GL_SGL_GNULIB_STRTOL = @GL_SGL_GNULIB_STRTOL@ +GL_SGL_GNULIB_STRTOLD = @GL_SGL_GNULIB_STRTOLD@ +GL_SGL_GNULIB_STRTOLL = @GL_SGL_GNULIB_STRTOLL@ +GL_SGL_GNULIB_STRTOUL = @GL_SGL_GNULIB_STRTOUL@ +GL_SGL_GNULIB_STRTOULL = @GL_SGL_GNULIB_STRTOULL@ +GL_SGL_GNULIB_STRTOUMAX = @GL_SGL_GNULIB_STRTOUMAX@ +GL_SGL_GNULIB_STRVERSCMP = @GL_SGL_GNULIB_STRVERSCMP@ +GL_SGL_GNULIB_SYMLINK = @GL_SGL_GNULIB_SYMLINK@ +GL_SGL_GNULIB_SYMLINKAT = @GL_SGL_GNULIB_SYMLINKAT@ +GL_SGL_GNULIB_SYSTEM_POSIX = @GL_SGL_GNULIB_SYSTEM_POSIX@ +GL_SGL_GNULIB_TIMEGM = @GL_SGL_GNULIB_TIMEGM@ +GL_SGL_GNULIB_TIMESPEC_GET = @GL_SGL_GNULIB_TIMESPEC_GET@ +GL_SGL_GNULIB_TIMESPEC_GETRES = @GL_SGL_GNULIB_TIMESPEC_GETRES@ +GL_SGL_GNULIB_TIME_R = @GL_SGL_GNULIB_TIME_R@ +GL_SGL_GNULIB_TIME_RZ = @GL_SGL_GNULIB_TIME_RZ@ +GL_SGL_GNULIB_TMPFILE = @GL_SGL_GNULIB_TMPFILE@ +GL_SGL_GNULIB_TRUNCATE = @GL_SGL_GNULIB_TRUNCATE@ +GL_SGL_GNULIB_TTYNAME_R = @GL_SGL_GNULIB_TTYNAME_R@ +GL_SGL_GNULIB_TZSET = @GL_SGL_GNULIB_TZSET@ +GL_SGL_GNULIB_UNISTD_H_GETOPT = @GL_SGL_GNULIB_UNISTD_H_GETOPT@ +GL_SGL_GNULIB_UNISTD_H_NONBLOCKING = @GL_SGL_GNULIB_UNISTD_H_NONBLOCKING@ +GL_SGL_GNULIB_UNISTD_H_SIGPIPE = @GL_SGL_GNULIB_UNISTD_H_SIGPIPE@ +GL_SGL_GNULIB_UNLINK = @GL_SGL_GNULIB_UNLINK@ +GL_SGL_GNULIB_UNLINKAT = @GL_SGL_GNULIB_UNLINKAT@ +GL_SGL_GNULIB_UNLOCKPT = @GL_SGL_GNULIB_UNLOCKPT@ +GL_SGL_GNULIB_UNSETENV = @GL_SGL_GNULIB_UNSETENV@ +GL_SGL_GNULIB_USLEEP = @GL_SGL_GNULIB_USLEEP@ +GL_SGL_GNULIB_UTIMENSAT = @GL_SGL_GNULIB_UTIMENSAT@ +GL_SGL_GNULIB_VASPRINTF = @GL_SGL_GNULIB_VASPRINTF@ +GL_SGL_GNULIB_VDPRINTF = @GL_SGL_GNULIB_VDPRINTF@ +GL_SGL_GNULIB_VFPRINTF = @GL_SGL_GNULIB_VFPRINTF@ +GL_SGL_GNULIB_VFPRINTF_POSIX = @GL_SGL_GNULIB_VFPRINTF_POSIX@ +GL_SGL_GNULIB_VFSCANF = @GL_SGL_GNULIB_VFSCANF@ +GL_SGL_GNULIB_VPRINTF = @GL_SGL_GNULIB_VPRINTF@ +GL_SGL_GNULIB_VPRINTF_POSIX = @GL_SGL_GNULIB_VPRINTF_POSIX@ +GL_SGL_GNULIB_VSCANF = @GL_SGL_GNULIB_VSCANF@ +GL_SGL_GNULIB_VSNPRINTF = @GL_SGL_GNULIB_VSNPRINTF@ +GL_SGL_GNULIB_VSPRINTF_POSIX = @GL_SGL_GNULIB_VSPRINTF_POSIX@ +GL_SGL_GNULIB_WCPCPY = @GL_SGL_GNULIB_WCPCPY@ +GL_SGL_GNULIB_WCPNCPY = @GL_SGL_GNULIB_WCPNCPY@ +GL_SGL_GNULIB_WCRTOMB = @GL_SGL_GNULIB_WCRTOMB@ +GL_SGL_GNULIB_WCSCASECMP = @GL_SGL_GNULIB_WCSCASECMP@ +GL_SGL_GNULIB_WCSCAT = @GL_SGL_GNULIB_WCSCAT@ +GL_SGL_GNULIB_WCSCHR = @GL_SGL_GNULIB_WCSCHR@ +GL_SGL_GNULIB_WCSCMP = @GL_SGL_GNULIB_WCSCMP@ +GL_SGL_GNULIB_WCSCOLL = @GL_SGL_GNULIB_WCSCOLL@ +GL_SGL_GNULIB_WCSCPY = @GL_SGL_GNULIB_WCSCPY@ +GL_SGL_GNULIB_WCSCSPN = @GL_SGL_GNULIB_WCSCSPN@ +GL_SGL_GNULIB_WCSDUP = @GL_SGL_GNULIB_WCSDUP@ +GL_SGL_GNULIB_WCSFTIME = @GL_SGL_GNULIB_WCSFTIME@ +GL_SGL_GNULIB_WCSLEN = @GL_SGL_GNULIB_WCSLEN@ +GL_SGL_GNULIB_WCSNCASECMP = @GL_SGL_GNULIB_WCSNCASECMP@ +GL_SGL_GNULIB_WCSNCAT = @GL_SGL_GNULIB_WCSNCAT@ +GL_SGL_GNULIB_WCSNCMP = @GL_SGL_GNULIB_WCSNCMP@ +GL_SGL_GNULIB_WCSNCPY = @GL_SGL_GNULIB_WCSNCPY@ +GL_SGL_GNULIB_WCSNLEN = @GL_SGL_GNULIB_WCSNLEN@ +GL_SGL_GNULIB_WCSNRTOMBS = @GL_SGL_GNULIB_WCSNRTOMBS@ +GL_SGL_GNULIB_WCSPBRK = @GL_SGL_GNULIB_WCSPBRK@ +GL_SGL_GNULIB_WCSRCHR = @GL_SGL_GNULIB_WCSRCHR@ +GL_SGL_GNULIB_WCSRTOMBS = @GL_SGL_GNULIB_WCSRTOMBS@ +GL_SGL_GNULIB_WCSSPN = @GL_SGL_GNULIB_WCSSPN@ +GL_SGL_GNULIB_WCSSTR = @GL_SGL_GNULIB_WCSSTR@ +GL_SGL_GNULIB_WCSTOK = @GL_SGL_GNULIB_WCSTOK@ +GL_SGL_GNULIB_WCSWIDTH = @GL_SGL_GNULIB_WCSWIDTH@ +GL_SGL_GNULIB_WCSXFRM = @GL_SGL_GNULIB_WCSXFRM@ +GL_SGL_GNULIB_WCTOB = @GL_SGL_GNULIB_WCTOB@ +GL_SGL_GNULIB_WCTOMB = @GL_SGL_GNULIB_WCTOMB@ +GL_SGL_GNULIB_WCWIDTH = @GL_SGL_GNULIB_WCWIDTH@ +GL_SGL_GNULIB_WMEMCHR = @GL_SGL_GNULIB_WMEMCHR@ +GL_SGL_GNULIB_WMEMCMP = @GL_SGL_GNULIB_WMEMCMP@ +GL_SGL_GNULIB_WMEMCPY = @GL_SGL_GNULIB_WMEMCPY@ +GL_SGL_GNULIB_WMEMMOVE = @GL_SGL_GNULIB_WMEMMOVE@ +GL_SGL_GNULIB_WMEMPCPY = @GL_SGL_GNULIB_WMEMPCPY@ +GL_SGL_GNULIB_WMEMSET = @GL_SGL_GNULIB_WMEMSET@ +GL_SGL_GNULIB_WRITE = @GL_SGL_GNULIB_WRITE@ +GL_SGL_GNULIB__EXIT = @GL_SGL_GNULIB__EXIT@ +GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ @@ -395,43 +918,233 @@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ +HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ +HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ +HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETENTROPY = @HAVE_GETENTROPY@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETPASS = @HAVE_GETPASS@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GETUMASK = @HAVE_GETUMASK@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ +HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_QSORT_R = @HAVE_QSORT_R@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SETSTATE = @HAVE_SETSTATE@ +HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ +HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOL = @HAVE_STRTOL@ +HAVE_STRTOLD = @HAVE_STRTOLD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOUL = @HAVE_STRTOUL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ +HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSFTIME = @HAVE_WCSFTIME@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ @@ -441,36 +1154,70 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ LIBTOOL = @LIBTOOL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_FUZZING_ENGINE = @LIB_FUZZING_ENGINE@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ +LOG_VALGRIND = @LOG_VALGRIND@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAJOR_VERSION = @MAJOR_VERSION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINOR_VERSION = @MINOR_VERSION@ MKDIR_P = @MKDIR_P@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ NM = @NM@ NMEDIT = @NMEDIT@ +NUMBER_VERSION = @NUMBER_VERSION@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ @@ -482,42 +1229,216 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ +PATCH_VERSION = @PATCH_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ +REPLACE_ACCESS = @REPLACE_ACCESS@ +REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ +REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ +REPLACE_CREAT = @REPLACE_CREAT@ +REPLACE_CTIME = @REPLACE_CTIME@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_EXECL = @REPLACE_EXECL@ +REPLACE_EXECLE = @REPLACE_EXECLE@ +REPLACE_EXECLP = @REPLACE_EXECLP@ +REPLACE_EXECV = @REPLACE_EXECV@ +REPLACE_EXECVE = @REPLACE_EXECVE@ +REPLACE_EXECVP = @REPLACE_EXECVP@ +REPLACE_EXECVPE = @REPLACE_EXECVPE@ +REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ +REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FFSLL = @REPLACE_FFSLL@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREE = @REPLACE_FREE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETPASS = @REPLACE_GETPASS@ +REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_INITSTATE = @REPLACE_INITSTATE@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ +REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKNODAT = @REPLACE_MKNODAT@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RANDOM = @REPLACE_RANDOM@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ +REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ +REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETSTATE = @REPLACE_SETSTATE@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOL = @REPLACE_STRTOL@ +REPLACE_STRTOLD = @REPLACE_STRTOLD@ +REPLACE_STRTOLL = @REPLACE_STRTOLL@ +REPLACE_STRTOUL = @REPLACE_STRTOUL@ +REPLACE_STRTOULL = @REPLACE_STRTOULL@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_TZSET = @REPLACE_TZSET@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSTOK = @REPLACE_WCSTOK@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ +VALGRINDFLAGS = @VALGRINDFLAGS@ +VALGRIND_PROGRAM = @VALGRIND_PROGRAM@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ +WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ @@ -545,8 +1466,10 @@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ @@ -574,6 +1497,13 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ +sgl_LIBOBJDEPS = @sgl_LIBOBJDEPS@ +sgl_LIBOBJS = @sgl_LIBOBJS@ +sgl_LTLIBOBJS = @sgl_LTLIBOBJS@ +sgltests_LIBOBJDEPS = @sgltests_LIBOBJDEPS@ +sgltests_LIBOBJS = @sgltests_LIBOBJS@ +sgltests_LTLIBOBJS = @sgltests_LTLIBOBJS@ +sgltests_WITNESS = @sgltests_WITNESS@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ @@ -581,17 +1511,12 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = cyclo $(am__append_1) -EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf stamp_docs \ - COPYING COPYING.LESSER - +@ENABLE_GTK_DOC_TRUE@SUBDIRS = reference +EXTRA_DIST = gdoc TODO stamp_docs COPYING COPYING.LESSER info_TEXINFOS = libtasn1.texi -libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) -AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) -AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ - --no-split --number-sections --css-include=texinfo.css - +libtasn1_TEXINFOS = fdl-1.3.texi $(gdoc_TEXINFOS) asn1Coding-help.texi \ + asn1Decoding-help.texi asn1Parser-help.texi +AM_MAKEINFOHTMLFLAGS = --no-split $(AM_MAKEINFOFLAGS) dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 gdoc_MANS = man/asn1_get_length_der.3 man/asn1_get_tag_der.3 \ @@ -605,13 +1530,14 @@ gdoc_MANS = man/asn1_get_length_der.3 man/asn1_get_tag_der.3 \ man/asn1_decode_simple_ber.3 man/asn1_perror.3 \ man/asn1_strerror.3 man/asn1_find_node.3 man/asn1_length_der.3 \ man/asn1_octet_der.3 man/asn1_encode_simple_der.3 \ - man/asn1_bit_der.3 man/asn1_der_coding.3 \ - man/asn1_write_value.3 man/asn1_read_value.3 \ - man/asn1_read_value_type.3 man/asn1_read_tag.3 \ - man/asn1_read_node_value.3 man/asn1_array2tree.3 \ - man/asn1_delete_structure.3 man/asn1_delete_structure2.3 \ - man/asn1_delete_element.3 man/asn1_create_element.3 \ - man/asn1_print_structure.3 man/asn1_number_of_elements.3 \ + man/asn1_object_id_der.3 man/asn1_bit_der.3 \ + man/asn1_der_coding.3 man/asn1_write_value.3 \ + man/asn1_read_value.3 man/asn1_read_value_type.3 \ + man/asn1_read_tag.3 man/asn1_read_node_value.3 \ + man/asn1_array2tree.3 man/asn1_delete_structure.3 \ + man/asn1_delete_structure2.3 man/asn1_delete_element.3 \ + man/asn1_create_element.3 man/asn1_print_structure.3 \ + man/asn1_number_of_elements.3 \ man/asn1_find_structure_from_oid.3 man/asn1_copy_node.3 \ man/asn1_dup_node.3 man/asn1_parser2tree.3 \ man/asn1_parser2array.3 man/asn1_check_version.3 @@ -631,11 +1557,12 @@ gdoc_TEXINFOS = texi/decoding.c.texi texi/errors.c.texi \ texi/asn1_decode_simple_ber.texi texi/asn1_perror.texi \ texi/asn1_strerror.texi texi/asn1_find_node.texi \ texi/asn1_length_der.texi texi/asn1_octet_der.texi \ - texi/asn1_encode_simple_der.texi texi/asn1_bit_der.texi \ - texi/asn1_der_coding.texi texi/asn1_write_value.texi \ - texi/asn1_read_value.texi texi/asn1_read_value_type.texi \ - texi/asn1_read_tag.texi texi/asn1_read_node_value.texi \ - texi/asn1_array2tree.texi texi/asn1_delete_structure.texi \ + texi/asn1_encode_simple_der.texi texi/asn1_object_id_der.texi \ + texi/asn1_bit_der.texi texi/asn1_der_coding.texi \ + texi/asn1_write_value.texi texi/asn1_read_value.texi \ + texi/asn1_read_value_type.texi texi/asn1_read_tag.texi \ + texi/asn1_read_node_value.texi texi/asn1_array2tree.texi \ + texi/asn1_delete_structure.texi \ texi/asn1_delete_structure2.texi texi/asn1_delete_element.texi \ texi/asn1_create_element.texi texi/asn1_print_structure.texi \ texi/asn1_number_of_elements.texi \ @@ -646,7 +1573,7 @@ gdoc_TEXINFOS = texi/decoding.c.texi texi/errors.c.texi \ GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ - $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ + $(top_srcdir)/lib/structure.c $(top_builddir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c all: all-recursive @@ -662,9 +1589,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/Makefile + $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1034,7 +1961,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1321,21 +2247,33 @@ uninstall-man: uninstall-man1 uninstall-man3 .PRECIOUS: Makefile -asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ - --name="ASN.1 syntax tree generator for libtasn1" \ - --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) - -asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ +asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) -asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac - $(HELP2MAN) $(HELP2MAN_OPTS) \ +asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) +asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/.version + $(AM_V_GEN)$(HELP2MAN) $(HELP2MAN_OPTS) \ + --name="ASN.1 syntax tree generator for libtasn1" \ + --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) + +asn1Coding-help.texi: $(top_srcdir)/src/asn1Coding.c + $(AM_V_GEN)$(top_builddir)/src/asn1Coding$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Coding-help.texi + +asn1Decoding-help.texi: $(top_srcdir)/src/asn1Decoding.c + $(AM_V_GEN)$(top_builddir)/src/asn1Decoding$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Decoding-help.texi + +asn1Parser-help.texi: $(top_srcdir)/src/asn1Parser.c + $(AM_V_GEN)$(top_builddir)/src/asn1Parser$(EXEEXT) --help > tmp-$@ && \ + mv tmp-$@ asn1Parser-help.texi + compare-makefile: @MANS=""; \ TEXINFOS=""; \ @@ -1348,7 +2286,7 @@ compare-makefile: MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ - grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ + grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' $(srcdir)/Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; @@ -1360,7 +2298,7 @@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs -stamp_docs: +stamp_docs: $(top_srcdir)/.version $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ @@ -1370,7 +2308,7 @@ stamp_docs: -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ - -copyright "2006-2015 Free Software Foundation, Inc." \ + -copyright "2006-2022 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ @@ -19,7 +19,7 @@ Current list: (-) Means low priority (ie. nobody is interested to develop that) ---------------------------------------------------------------------- -Copyright (C) 2002-2014 Free Software Foundation, Inc. +Copyright (C) 2002-2022 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. diff --git a/doc/asn1Coding-help.texi b/doc/asn1Coding-help.texi new file mode 100644 index 0000000..ef5f5d9 --- /dev/null +++ b/doc/asn1Coding-help.texi @@ -0,0 +1,13 @@ +Usage: asn1Coding [OPTION] DEFINITIONS ASSIGNMENTS +Generates a DER encoding of ASN.1 DEFINITIONS file +and ASSIGNMENTS file with value assignments. + +Mandatory arguments to long options are mandatory for short options too. + -c, --check checks the syntax only + -o, --output=FILE output file + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> diff --git a/doc/asn1Coding.1 b/doc/asn1Coding.1 index 40affb4..3636883 100644 --- a/doc/asn1Coding.1 +++ b/doc/asn1Coding.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH ASN1CODING "1" "July 2019" "asn1Coding libtasn1 4.14" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ASN1CODING "1" "August 2022" "libtasn1 4.18.0.33-b8a32" "User Commands" .SH NAME asn1Coding \- ASN.1 DER encoder .SH SYNOPSIS @@ -23,11 +23,19 @@ display this help and exit \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR -Written by Fabio Fiorina +Written by Fabio Fiorina. .SH "REPORTING BUGS" -Report bugs to help\-libtasn1@gnu.org +Report bugs to: help\-libtasn1@gnu.org +.br +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +.br +General help using GNU software: <https://www.gnu.org/gethelp/> .SH COPYRIGHT -Copyright \(co 2017\-2019 Free Software Foundation, Inc. +Copyright \(co 2022 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Coding diff --git a/doc/asn1Decoding-help.texi b/doc/asn1Decoding-help.texi new file mode 100644 index 0000000..35a00f4 --- /dev/null +++ b/doc/asn1Decoding-help.texi @@ -0,0 +1,13 @@ +Usage: asn1Decoding [OPTION] DEFINITIONS ENCODED ASN1TYPE +Decodes DER data in ENCODED file, for the ASN1TYPE element +described in ASN.1 DEFINITIONS file, and print decoded structures. + + -b, --benchmark perform a benchmark on decoding + -s, --strict use strict DER decoding + -t, --no-time-strict use strict DER decoding but not in time fields + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> diff --git a/doc/asn1Decoding.1 b/doc/asn1Decoding.1 index 2cbed81..7f991d9 100644 --- a/doc/asn1Decoding.1 +++ b/doc/asn1Decoding.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH ASN1DECODING "1" "July 2019" "asn1Decoding libtasn1 4.14" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ASN1DECODING "1" "August 2022" "libtasn1 4.18.0.33-b8a32" "User Commands" .SH NAME asn1Decoding \- ASN.1 DER decoder .SH SYNOPSIS @@ -24,11 +24,19 @@ display this help and exit \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR -Written by Fabio Fiorina +Written by Fabio Fiorina. .SH "REPORTING BUGS" -Report bugs to help\-libtasn1@gnu.org +Report bugs to: help\-libtasn1@gnu.org +.br +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +.br +General help using GNU software: <https://www.gnu.org/gethelp/> .SH COPYRIGHT -Copyright \(co 2017\-2019 Free Software Foundation, Inc. +Copyright \(co 2022 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Decoding diff --git a/doc/asn1Parser-help.texi b/doc/asn1Parser-help.texi new file mode 100644 index 0000000..8ba1c87 --- /dev/null +++ b/doc/asn1Parser-help.texi @@ -0,0 +1,14 @@ +Usage: asn1Parser [OPTION] FILE +Read FILE with ASN.1 definitions and generate +a C array that is used with libtasn1 functions. + +Mandatory arguments to long options are mandatory for short options too. + -c, --check checks the syntax only + -o, --output=FILE output file + -n, --name=NAME array name + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> diff --git a/doc/asn1Parser.1 b/doc/asn1Parser.1 index 8aa549e..b4432e9 100644 --- a/doc/asn1Parser.1 +++ b/doc/asn1Parser.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH ASN1PARSER "1" "July 2019" "asn1Parser libtasn1 4.14" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ASN1PARSER "1" "August 2022" "libtasn1 4.18.0.33-b8a32" "User Commands" .SH NAME asn1Parser \- ASN.1 syntax tree generator for libtasn1 .SH SYNOPSIS @@ -26,11 +26,19 @@ display this help and exit \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR -Written by Fabio Fiorina +Written by Fabio Fiorina. .SH "REPORTING BUGS" -Report bugs to help\-libtasn1@gnu.org +Report bugs to: help\-libtasn1@gnu.org +.br +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +.br +General help using GNU software: <https://www.gnu.org/gethelp/> .SH COPYRIGHT -Copyright \(co 2017\-2019 Free Software Foundation, Inc. +Copyright \(co 2022 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Parser diff --git a/doc/cyclo/Makefile.am b/doc/cyclo/Makefile.am deleted file mode 100644 index 541c7f0..0000000 --- a/doc/cyclo/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -## Process this file with automake to produce Makefile.in -# Copyright (C) 2002-2014 Free Software Foundation, Inc. -# -# This file is part of LIBTASN1. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -EXTRA_DIST = cyclo-$(PACKAGE).html - -vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" - -cyclo-$(PACKAGE).html: - (cd ${top_srcdir}/lib && \ - $(PMCCABE) *.[ch] \ - | sort -nr \ - | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ - -v lang=html -v name="$(PACKAGE_STRING)" \ - -v vcurl=$(vcurl) \ - -v url="http://www.gnu.org/software/$(PACKAGE)/" \ - -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ - > tmp - mv tmp $@ diff --git a/doc/cyclo/Makefile.in b/doc/cyclo/Makefile.in deleted file mode 100644 index 8149c60..0000000 --- a/doc/cyclo/Makefile.in +++ /dev/null @@ -1,658 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright (C) 2002-2014 Free Software Foundation, Inc. -# -# This file is part of LIBTASN1. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc/cyclo -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ - $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ - $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ - $(top_srcdir)/m4/ax_am_macros_static.m4 \ - $(top_srcdir)/m4/ax_check_gnu_make.m4 \ - $(top_srcdir)/m4/ax_code_coverage.m4 \ - $(top_srcdir)/m4/ax_file_escapes.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4-gl/00gnulib.m4 \ - $(top_srcdir)/m4-gl/__inline.m4 \ - $(top_srcdir)/m4-gl/absolute-header.m4 \ - $(top_srcdir)/m4-gl/extensions.m4 \ - $(top_srcdir)/m4-gl/extern-inline.m4 \ - $(top_srcdir)/m4-gl/gnulib-common.m4 \ - $(top_srcdir)/m4-gl/gnulib-comp.m4 \ - $(top_srcdir)/m4-gl/include_next.m4 \ - $(top_srcdir)/m4-gl/ld-version-script.m4 \ - $(top_srcdir)/m4-gl/limits-h.m4 \ - $(top_srcdir)/m4-gl/longlong.m4 $(top_srcdir)/m4-gl/minmax.m4 \ - $(top_srcdir)/m4-gl/multiarch.m4 $(top_srcdir)/m4-gl/off_t.m4 \ - $(top_srcdir)/m4-gl/ssize_t.m4 $(top_srcdir)/m4-gl/stddef_h.m4 \ - $(top_srcdir)/m4-gl/stdint.m4 $(top_srcdir)/m4-gl/string_h.m4 \ - $(top_srcdir)/m4-gl/strverscmp.m4 \ - $(top_srcdir)/m4-gl/sys_types_h.m4 \ - $(top_srcdir)/m4-gl/valgrind-tests.m4 \ - $(top_srcdir)/m4-gl/visibility.m4 \ - $(top_srcdir)/m4-gl/warn-on-use.m4 \ - $(top_srcdir)/m4-gl/wchar_t.m4 $(top_srcdir)/m4-gl/wint_t.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AS = @AS@ -ASN1_VERSION_MAJOR = @ASN1_VERSION_MAJOR@ -ASN1_VERSION_MINOR = @ASN1_VERSION_MINOR@ -ASN1_VERSION_NUMBER = @ASN1_VERSION_NUMBER@ -ASN1_VERSION_PATCH = @ASN1_VERSION_PATCH@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ -BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ -BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ -BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ -BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ -CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ -CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ -CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ -CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ -CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ -CONFIG_INCLUDE = @CONFIG_INCLUDE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCOV = @GCOV@ -GENHTML = @GENHTML@ -GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ -HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ -HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ -HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ -HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ -HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ -HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ -HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ -HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ -HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ -HAVE_FFSL = @HAVE_FFSL@ -HAVE_FFSLL = @HAVE_FFSLL@ -HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ -HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ -HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MEMCHR = @HAVE_MEMCHR@ -HAVE_MEMPCPY = @HAVE_MEMPCPY@ -HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ -HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ -HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ -HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ -HAVE_STDINT_H = @HAVE_STDINT_H@ -HAVE_STPCPY = @HAVE_STPCPY@ -HAVE_STPNCPY = @HAVE_STPNCPY@ -HAVE_STRCASESTR = @HAVE_STRCASESTR@ -HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ -HAVE_STRPBRK = @HAVE_STRPBRK@ -HAVE_STRSEP = @HAVE_STRSEP@ -HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ -HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ -HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ -HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ -HAVE_VISIBILITY = @HAVE_VISIBILITY@ -HAVE_WCHAR_H = @HAVE_WCHAR_H@ -HAVE_WCHAR_T = @HAVE_WCHAR_T@ -HELP2MAN = @HELP2MAN@ -HTML_DIR = @HTML_DIR@ -INCLUDE_NEXT = @INCLUDE_NEXT@ -INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ -LIBTOOL = @LIBTOOL@ -LIMITS_H = @LIMITS_H@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_AGE = @LT_AGE@ -LT_CURRENT = @LT_CURRENT@ -LT_REVISION = @LT_REVISION@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ -NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ -NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ -NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ -NEXT_LIMITS_H = @NEXT_LIMITS_H@ -NEXT_STDDEF_H = @NEXT_STDDEF_H@ -NEXT_STDINT_H = @NEXT_STDINT_H@ -NEXT_STRING_H = @NEXT_STRING_H@ -NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ -PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ -PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ -RANLIB = @RANLIB@ -REPLACE_MEMCHR = @REPLACE_MEMCHR@ -REPLACE_MEMMEM = @REPLACE_MEMMEM@ -REPLACE_NULL = @REPLACE_NULL@ -REPLACE_STPNCPY = @REPLACE_STPNCPY@ -REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ -REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ -REPLACE_STRDUP = @REPLACE_STRDUP@ -REPLACE_STRERROR = @REPLACE_STRERROR@ -REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ -REPLACE_STRNCAT = @REPLACE_STRNCAT@ -REPLACE_STRNDUP = @REPLACE_STRNDUP@ -REPLACE_STRNLEN = @REPLACE_STRNLEN@ -REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ -REPLACE_STRSTR = @REPLACE_STRSTR@ -REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ -SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ -STDDEF_H = @STDDEF_H@ -STDINT_H = @STDINT_H@ -STRIP = @STRIP@ -UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ -WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ -WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ -WINT_T_SUFFIX = @WINT_T_SUFFIX@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -gl_LIBOBJS = @gl_LIBOBJS@ -gl_LTLIBOBJS = @gl_LTLIBOBJS@ -gltests_LIBOBJS = @gltests_LIBOBJS@ -gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ -gltests_WITNESS = @gltests_WITNESS@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -ifGNUmake = @ifGNUmake@ -ifnGNUmake = @ifnGNUmake@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = cyclo-$(PACKAGE).html -vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/cyclo/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/cyclo/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - cscopelist-am ctags-am distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -cyclo-$(PACKAGE).html: - (cd ${top_srcdir}/lib && \ - $(PMCCABE) *.[ch] \ - | sort -nr \ - | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ - -v lang=html -v name="$(PACKAGE_STRING)" \ - -v vcurl=$(vcurl) \ - -v url="http://www.gnu.org/software/$(PACKAGE)/" \ - -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ - > tmp - mv tmp $@ - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/doc/cyclo/cyclo-libtasn1.html b/doc/cyclo/cyclo-libtasn1.html deleted file mode 100644 index 232ffa2..0000000 --- a/doc/cyclo/cyclo-libtasn1.html +++ /dev/null @@ -1,315 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd"> -<html> -<!-- Generated by gnulib's pmccabe2html at 1563563397 --> -<head> -<title>Cyclomatic Complexity report for GNU Libtasn1 4.14</title> - -<meta name="description" content="Cyclomatic Complexity report for GNU Libtasn1 4.14"> -<meta name="keywords" content="Cyclomatic Complexity report for GNU Libtasn1 4.14"> -<meta name="resource-type" content="document"> -<meta name="distribution" content="global"> -<meta name="Generator" content="pmccabe2html"> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<script language="javascript" type="text/javascript"> -function show_hide(idCapa, idButton, fuerzaVisibilidad){ var button = document.getElementById(idButton); var capa = document.getElementById(idCapa); if (capa) { if (fuerzaVisibilidad && fuerzaVisibilidad!="") { if (fuerzaVisibilidad=="visible") capa.style.display=""; else capa.style.display="none"; } else { if (capa.style.display == "none") { capa.style.display = ""; button.innerHTML = "↑"; } else { capa.style.display = "none"; button.innerHTML = "↓"; } } }} -</script> -<style type ="text/css" media="screen"> -<!-- -body { - font-family: Helvetica, sans-serif; -} - -.page_title { - font: 18pt Georgia, serif; - color: darkred; -} - -.section_title { - font: 14pt Georgia, serif; - color: darkred; -} - -.report_timestamp { - color: darkred; - font-weight: bold; -} - -.function_src { - text-align: left; - background: white; -} - -.resume_table { -} - -.resume_header_entry { - color: black; -} - -.resume_number_entry { - color: darkred; - font-weight: bold; - text-align: right; -} - -.ranges_table { - border-spacing: 0px; - border-bottom: solid 2px black; - border-top: solid 2px black; - border-left: solid 2px black; - border-right: solid 2px black; -} - -.ranges_header_entry { - padding: 5px; - border-bottom: solid 1px black; - font-size: 1em; - font-weight: bold; - color: darkred; - text-align: left; -} - -.ranges_entry { -} - -.ranges_entry_simple { - background: #87ff75; -} - -.ranges_entry_moderate { - background: #fffc60; -} - -.ranges_entry_high { - background: #ff5a5d; -} - -.ranges_entry_untestable { - background: #993300 -} - - -.function_table { - border-spacing: 0px; - border-bottom: solid 2px black; - border-top: solid 2px black; - border-left: solid 2px black; - border-right: solid 2px black; -} - -.function_table_caption { - font-size: 1.1em; - font-weight: bold; - color: black; - padding: 5px; -} - -.function_table_header { -} - - -.function_table_header_entry { - padding: 5px; - border-bottom: solid 1px black; - font-size: 1em; - font-weight: bold; - color: darkred; - text-align: left; -} - -.function_entry { -} - - -.function_entry_simple { - background: #87ff75; -} - -.function_entry_moderate { - background: #fffc60; -} - -.function_entry_high { - background: #ff5a5d; -} - -.function_entry_untestable { - background: #993300 -} - - -.function_entry_name { - font-size: 1em; - text-align: left; - font-weight: bold; - text-valign: top; - - border-top: solid 1px black; - padding: 3px; -} - -.function_entry_cyclo { - font-size: 1em; - text-align: right; - text-valign: top; - - border-top: solid 1px black; - padding: 3px; -} - -.function_entry_number { - font-size: 1em; - text-align: right; - text-valign: top; - - border-top: solid 1px black; - padding: 3px; -} - -.function_entry_filename { - font-size: 1em; - text-align: left; - text-valign: top; - - border-top: solid 1px black; - padding: 3px; -} ---> -</style> -</head> -<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> -<a href="http://www.gnu.org/software/libtasn1/">Back to GNU Libtasn1 4.14 Homepage</a><br/><br/> -<div class="page_title">GNU Libtasn1 4.14 Cyclomatic Complexity Report</div> -<p>Report generated at: <span class="report_timestamp">Fri Jul 19 21:09:57 CEST 2019</span></p> -<div class="section_title">Summary</div> -<table class="summary_table"> -<tr> -<td class="summary_header_entry"> -Total number of functions -</td> -<td class="summary_number_entry"> - -</td> -</tr> -<tr> -<td class="summary_header_entry"> -Number of low risk functions -</td> -<td class="summary_number_entry"> - -</td> -</tr> -<tr> -<td class="summary_header_entry"> -Number of moderate risk functions -</td> -<td class="summary_number_entry"> - -</td> -</tr> -<tr> -<td class="summary_header_entry"> -Number of high risk functions -</td> -<td class="summary_number_entry"> - -</td> -</tr> -<tr> -<td class="summary_header_entry"> -Number of untestable functions -</td> -<td class="summary_number_entry"> - -</td> -</tr> -</table> -<br/> -<div class="section_title">Details for all functions</div> -<table class="ranges_table"> -<tr> -<td class="ranges_header_entry"> - -</td> -<td class="ranges_header_entry"> -Cyclomatic Complexity -</td> -<td class="ranges_header_entry"> -Risk Evaluation -</td> -</tr> -<tr> -<td class="ranges_entry_simple"> - -</td> -<td class="ranges_entry"> -0 - 10 -</td> -<td class="ranges_entry"> -Simple module, without much risk -</td> -</tr> -<tr> -<td class="ranges_entry_moderate"> - -</td> -<td class="ranges_entry"> -11 - 20 -</td> -<td class="ranges_entry"> -More complex module, moderate risk -</td> -</tr> -<tr> -<td class="ranges_entry_high"> - -</td> -<td class="ranges_entry"> -21 - 50 -</td> -<td class="ranges_entry"> -Complex module, high risk -</td> -</tr> -<tr> -<td class="ranges_entry_untestable"> - -</td> -<td class="ranges_entry"> -greater than 50 -</td> -<td class="ranges_entry"> -Untestable module, very high risk -</td> -</tr> -</table> -<br/> -<table width="90%" class="function_table" cellpadding="0" cellspacing="0"> -<tr class="function_table_header"> -<td class="function_table_header_entry"> - -</td> -<td class="function_table_header_entry"> -Function Name -</td> -<td class="function_table_header_entry"> -Modified Cyclo -</td> -<td class="function_table_header_entry"> -Number of -<br/> -Statements -</td> -<td class="function_table_header_entry"> -Number of -<br/> -Lines -</td> -<td class="function_table_header_entry"> -Source File -</td> -</tr> -</table> -<hr color="black" size="2"/> Copyright (c) 2007, 2008 Free Software Foundation, Inc. -</body> -</html> @@ -1,8 +1,8 @@ -eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}' - & eval 'exec perl "$0" $argv:q' +eval '(exit $?0)' && eval 'exec perl -S "$0" ${1+"$@"}' + & eval 'exec perl -S "$0" $argv:q' if 0; -## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +## Copyright (c) 2002-2021 Simon Josefsson ## added -texinfo, -listfunc, -pkg-name ## man page revamp ## various improvements @@ -23,7 +23,7 @@ eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}' # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # This will read a C source code file and scan for embedded comments # in the style of gnome comments (+minor extensions - see below). @@ -97,21 +97,21 @@ eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}' # * my_function # **/ # -# If the Description: header tag is ommitted, then there must be a blank line +# If the Description: header tag is omitted, then there must be a blank line # after the last parameter specification. # e.g. # /** # * my_function - does my stuff # * @my_arg: its mine damnit # * -# * Does my stuff explained. +# * Does my stuff explained. # */ # # or, could also use: # /** # * my_function - does my stuff # * @my_arg: its mine damnit -# * Description: Does my stuff explained. +# * Description: Does my stuff explained. # */ # etc. # @@ -302,8 +302,8 @@ sub dump_section { # parameterlist => @list of parameters # parameters => %parameter descriptions # sectionlist => @list of sections -# sections => %descriont descriptions -# +# sections => %section descriptions +# sub just_highlight { my $contents = join "\n", @_; @@ -704,11 +704,11 @@ sub output_man { print ".SH \"REPORTING BUGS\"\n"; print "Report bugs to <". $args{'bugsto'} . ">.\n"; print ".br\n"; - print "General guidelines for reporting bugs: http://www.gnu.org/gethelp/\n"; + print "General guidelines for reporting bugs: https://www.gnu.org/gethelp/\n"; print ".br\n"; if ($args{'pkgname'}) { print $args{'pkgname'} . " home page: " . - "http://www.gnu.org/software/" . $args{'module'} . "/\n"; + "https://www.gnu.org/software/" . $args{'module'} . "/\n"; } print "\n"; } @@ -739,7 +739,7 @@ sub output_man { print "should give you access to the complete manual.\n"; print "As an alternative you may obtain the manual from:\n"; print ".IP\n"; - print ".B http://www.gnu.org/software/" . $args{'module'} . "/manual/\n"; + print ".B https://www.gnu.org/software/" . $args{'module'} . "/manual/\n"; print ".PP\n"; } } @@ -1006,7 +1006,7 @@ foreach $file (@ARGV) { $contents .= $1."\n"; } } else { - # i dont know - bad line? ignore. + # i don't know - bad line? ignore. print STDERR "warning: $lineno: Bad line: $_"; } } elsif ($state == 3) { # scanning for function { (end of prototype) @@ -1062,7 +1062,7 @@ foreach $file (@ARGV) { $state = 0; } - + } } diff --git a/doc/libtasn1.html b/doc/libtasn1.html deleted file mode 100644 index 47e7509..0000000 --- a/doc/libtasn1.html +++ /dev/null @@ -1,2352 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- This manual is for GNU Libtasn1 -(version 4.14, 29 March 2019), -which is a library for Abstract Syntax Notation One (ASN.1) and -Distinguished Encoding Rules (DER) manipulation. - -Copyright (C) 2001-2019 Free Software Foundation, Inc. - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A -copy of the license is included in the section entitled "GNU Free -Documentation License". --> -<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>GNU Libtasn1 4.14</title> - -<meta name="description" content="GNU Libtasn1 4.14"> -<meta name="keywords" content="GNU Libtasn1 4.14"> -<meta name="resource-type" content="document"> -<meta name="distribution" content="global"> -<meta name="Generator" content="makeinfo"> -<link href="#Top" rel="start" title="Top"> -<link href="#Concept-Index" rel="index" title="Concept Index"> -<link href="#SEC_Contents" rel="contents" title="Table of Contents"> -<link href="dir.html#Top" rel="up" title="(dir)"> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} -blockquote.smallquotation {font-size: smaller} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -div.smalldisplay {margin-left: 3.2em} -div.smallexample {margin-left: 3.2em} -div.smalllisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -pre.smalldisplay {font-family: inherit; font-size: smaller} -pre.smallexample {font-size: smaller} -pre.smallformat {font-family: inherit; font-size: smaller} -pre.smalllisp {font-size: smaller} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -body { - margin: 2%; - padding: 0 5%; - background: #ffffff; -} -h1,h2,h3,h4,h5 { - font-weight: bold; - padding: 5px 5px 5px 5px; - background-color: #c2e0ff; - color: #336699; -} -h1 { - padding: 2em 2em 2em 5%; - color: white; - background: #336699; - text-align: center; - letter-spacing: 3px; -} -h2 { text-decoration: underline; } -pre { - margin: 0 5%; - padding: 0.5em; -} -pre.example { - border: solid 1px; - background: #eeeeff; - padding-bottom: 1em; -} -pre.verbatim { - border: solid 1px gray; - background: white; - padding-bottom: 1em; -} -div.node { - margin: 0 -5% 0 -2%; - padding: 0.5em 0.5em; - margin-top: 0.5em; - margin-bottom: 0.5em; - font-weight: bold; -} -dd, li { - padding-top: 0.1em; - padding-bottom: 0.1em; -} - ---> -</style> - - -</head> - -<body lang="en"> -<h1 class="settitle" align="center">GNU Libtasn1 4.14</h1> - - - - - -<a name="SEC_Contents"></a> -<h2 class="contents-heading">Table of Contents</h2> - -<div class="contents"> - -<ul class="no-bullet"> - <li><a name="toc-Introduction-1" href="#Introduction">1 Introduction</a></li> - <li><a name="toc-ASN_002e1-structure-handling-1" href="#ASN_002e1-structure-handling">2 ASN.1 structure handling</a> - <ul class="no-bullet"> - <li><a name="toc-ASN_002e1-syntax-1" href="#ASN_002e1-syntax">2.1 ASN.1 syntax</a></li> - <li><a name="toc-Naming-1" href="#Naming">2.2 Naming</a></li> - <li><a name="toc-Simple-parsing-1" href="#Simple-parsing">2.3 Simple parsing</a></li> - <li><a name="toc-Library-Notes-1" href="#Library-Notes">2.4 Library Notes</a></li> - <li><a name="toc-Future-developments-1" href="#Future-developments">2.5 Future developments</a></li> - </ul></li> - <li><a name="toc-Utilities-1" href="#Utilities">3 Utilities</a> - <ul class="no-bullet"> - <li><a name="toc-Invoking-asn1Parser-1" href="#Invoking-asn1Parser">3.1 Invoking asn1Parser</a></li> - <li><a name="toc-Invoking-asn1Coding-1" href="#Invoking-asn1Coding">3.2 Invoking asn1Coding</a></li> - <li><a name="toc-Invoking-asn1Decoding-1" href="#Invoking-asn1Decoding">3.3 Invoking asn1Decoding</a></li> - </ul></li> - <li><a name="toc-Function-reference-1" href="#Function-reference">4 Function reference</a> - <ul class="no-bullet"> - <li><a name="toc-ASN_002e1-schema-functions-1" href="#ASN_002e1-schema-functions">4.1 ASN.1 schema functions</a></li> - <li><a name="toc-ASN_002e1-field-functions-1" href="#ASN_002e1-field-functions">4.2 ASN.1 field functions</a></li> - <li><a name="toc-DER-functions-1" href="#DER-functions">4.3 DER functions</a></li> - <li><a name="toc-Error-handling-functions-1" href="#Error-handling-functions">4.4 Error handling functions</a></li> - <li><a name="toc-Auxilliary-functions-1" href="#Auxilliary-functions">4.5 Auxilliary functions</a></li> - </ul></li> - <li><a name="toc-Copying-Information-1" href="#Copying-Information">Appendix A Copying Information</a> - <ul class="no-bullet"> - <li><a name="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">A.1 GNU Free Documentation License</a></li> - </ul></li> - <li><a name="toc-Concept-Index-1" href="#Concept-Index">Concept Index</a></li> - <li><a name="toc-Function-and-Data-Index-1" href="#Function-and-Data-Index">Function and Data Index</a></li> -</ul> -</div> - - -<a name="Top"></a> -<div class="header"> -<p> -Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Libtasn1"></a> -<h1 class="top">Libtasn1</h1> - -<p>This manual is for GNU Libtasn1 -(version 4.14, 29 March 2019), -which is a library for Abstract Syntax Notation One (ASN.1) and -Distinguished Encoding Rules (DER) manipulation. -</p> -<p>Copyright © 2001-2019 Free Software Foundation, Inc. -</p> -<blockquote> -<p>Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A -copy of the license is included in the section entitled “GNU Free -Documentation License”. -</p></blockquote> - - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="#Introduction" accesskey="1">Introduction</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#ASN_002e1-structure-handling" accesskey="2">ASN.1 structure handling</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Utilities" accesskey="3">Utilities</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Function-reference" accesskey="4">Function reference</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Copying-Information" accesskey="5">Copying Information</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> - -Indices - -</pre></th></tr><tr><td align="left" valign="top">• <a href="#Concept-Index" accesskey="6">Concept Index</a>:</td><td> </td><td align="left" valign="top">Index of concepts and programs. -</td></tr> -<tr><td align="left" valign="top">• <a href="#Function-and-Data-Index" accesskey="7">Function and Data Index</a>:</td><td> </td><td align="left" valign="top">Index of functions, variables and data types. -</td></tr> -</table> - -<hr> -<a name="Introduction"></a> -<div class="header"> -<p> -Next: <a href="#ASN_002e1-structure-handling" accesskey="n" rel="next">ASN.1 structure handling</a>, Previous: <a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Introduction-1"></a> -<h2 class="chapter">1 Introduction</h2> - -<p>This document describes the Libtasn1 library that provides -Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T -recommendation) parsing and structures management, -and Distinguished Encoding Rules (DER, as per X.690) encoding and -decoding functions. -</p> -<p>The main features of this library are: -</p> -<ul> -<li> On-line ASN.1 structure management that doesn’t require any -C code file generation. - -</li><li> Off-line ASN.1 structure management with C code file generation -containing an array. - -</li><li> Distinguished Encoding Rules (DER) encoding support. - -</li><li> No limits for INTEGER and ENUMERATED values. - -</li><li> It’s Free Software. -Anybody can use, modify, and redistribute the library under the terms -of the GNU Lesser General Public License version 2.1 or later. The -command line tools, self-tests and build infrastructure are licensed -under the GNU General Public License version 3.0 or later. - -</li><li> Thread-safety. -<a name="index-threads"></a> -No global variables are used and multiple library handles and session -handles may be used in parallel. - -</li><li> Portability. -<a name="index-Porting"></a> -The code should work on all Unix like operating systems, and Windows. -The library itself should be portable to any C89 system, not even -POSIX is required. -</li></ul> - -<hr> -<a name="ASN_002e1-structure-handling"></a> -<div class="header"> -<p> -Next: <a href="#Utilities" accesskey="n" rel="next">Utilities</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="ASN_002e1-structure-handling-1"></a> -<h2 class="chapter">2 ASN.1 structure handling</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="#ASN_002e1-syntax" accesskey="1">ASN.1 syntax</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Naming" accesskey="2">Naming</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Simple-parsing" accesskey="3">Simple parsing</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Library-Notes" accesskey="4">Library Notes</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Future-developments" accesskey="5">Future developments</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -</table> - -<hr> -<a name="ASN_002e1-syntax"></a> -<div class="header"> -<p> -Next: <a href="#Naming" accesskey="n" rel="next">Naming</a>, Up: <a href="#ASN_002e1-structure-handling" accesskey="u" rel="up">ASN.1 structure handling</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="ASN_002e1-syntax-1"></a> -<h3 class="section">2.1 ASN.1 syntax</h3> - -<a name="index-ASN_002e1-schema"></a> - -<p>The parser is case sensitive. The comments begin with <code>--</code> and -end either with another <code>--</code>, or at the end of the respective -line, whichever comes first. The C-style <code>/*</code>, <code>*/</code> -comments are not supported. -</p> -<p>For an example of the syntax, check the <samp>pkix.asn</samp> file -distributed with the library. -</p> -<p>ASN.1 definitions must follow the syntax below: -</p> -<pre class="verbatim"> definitions_name {<object definition>} - - DEFINITIONS <EXPLICIT or IMPLICIT> TAGS ::= - - BEGIN - - <type and constants definitions> - - END -</pre> -<p>The <code>::=</code> token must be separate from other elements, so the -following declaration is invalid: -</p> -<div class="example"> -<pre class="example"> -- INCORRECT - Version ::=INTEGER -</pre></div> - -<p>The correct form is: -</p> -<div class="example"> -<pre class="example"> Version ::= INTEGER -</pre></div> - -<p>Here is the list of types that the parser can manage: -</p> -<a name="index-Supported-ASN_002e1-types_002c-list-of"></a> - -<ul> -<li> <code>INTEGER</code>; -</li><li> <code>ENUMERATED</code>; -</li><li> <code>BOOLEAN</code>; -</li><li> <code>OBJECT IDENTIFIER</code>; -</li><li> <code>NULL</code>; -</li><li> <code>BIT STRING</code>; -</li><li> <code>OCTET STRING</code>; -</li><li> <code>UTCTime</code>; -</li><li> <code>GeneralizedTime</code>; -</li><li> <code>GeneralString</code>; -</li><li> <code>NumericString</code>; -</li><li> <code>IA5String</code>; -</li><li> <code>TeletexString</code>; -</li><li> <code>PrintableString</code>; -</li><li> <code>UniversalString</code>; -</li><li> <code>BMPString</code>; -</li><li> <code>UTF8String</code>; -</li><li> <code>VisibleString</code>; -</li><li> <code>SEQUENCE</code>; -</li><li> <code>SEQUENCE OF</code>; -</li><li> <code>SET</code>; -</li><li> <code>SET OF</code>; -</li><li> <code>CHOICE</code>; -</li><li> <code>ANY</code>; -</li><li> <code>ANY DEFINED BY</code>. - -</li></ul> - -<p>This version doesn’t handle the <code>REAL</code> type. It doesn’t support -the <code>AUTOMATIC TAGS</code> option, and the <code>EXPORT</code> and -<code>IMPORT</code> sections, either. -</p> -<p>The <code>SIZE</code> constraints are allowed, but no check is done on them. -</p> -<hr> -<a name="Naming"></a> -<div class="header"> -<p> -Next: <a href="#Simple-parsing" accesskey="n" rel="next">Simple parsing</a>, Previous: <a href="#ASN_002e1-syntax" accesskey="p" rel="prev">ASN.1 syntax</a>, Up: <a href="#ASN_002e1-structure-handling" accesskey="u" rel="up">ASN.1 structure handling</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Naming-1"></a> -<h3 class="section">2.2 Naming</h3> - -<p>Consider this definition: -</p> -<pre class="verbatim"> Example { 1 2 3 4 } - - DEFINITIONS EXPLICIT TAGS ::= - - BEGIN - - Group ::= SEQUENCE { - id OBJECT IDENTIFIER, - value Value - } - - Value ::= SEQUENCE { - value1 INTEGER, - value2 BOOLEAN - } - - END -</pre> -<p>The notation to access the ‘<samp>Group</samp>’ type of the ‘<samp>Example</samp>’ -definition above is ‘<samp>Example.Group</samp>’ (as a NUL-terminated string.) -Such strings are used in the functions described below. -</p> -<p>Others examples: -</p> -<ul> -<li> field ‘<samp>id</samp>’ of the ‘<samp>Group</samp>’ type: ‘<samp>Example.Group.id</samp>’; - -</li><li> field ‘<samp>value1</samp>’ of the ‘<samp>value</samp>’ field of the ‘<samp>Group</samp>’ -type: ‘<samp>Example.Group.value.value1</samp>’. - -</li></ul> - -<p>Elements of structured types unnamed by the respective definition -receive the names <code>?1</code>, <code>?2</code>, and so on. -</p> -<p>The <code>?LAST</code> name indicates the last element of a <code>SET OF</code> or -<code>SEQUENCE OF</code>. -</p> -<hr> -<a name="Simple-parsing"></a> -<div class="header"> -<p> -Next: <a href="#Library-Notes" accesskey="n" rel="next">Library Notes</a>, Previous: <a href="#Naming" accesskey="p" rel="prev">Naming</a>, Up: <a href="#ASN_002e1-structure-handling" accesskey="u" rel="up">ASN.1 structure handling</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Simple-parsing-1"></a> -<h3 class="section">2.3 Simple parsing</h3> - -<p>For simple types like <code>OCTET STRING</code> the simple parsing functions listed -below may be used instead. -</p> -<ul> -<li> <a href="#asn1_005fdecode_005fsimple_005fder">asn1_decode_simple_der</a> -</li><li> <a href="#asn1_005fencode_005fsimple_005fder">asn1_encode_simple_der</a> -</li></ul> - -<hr> -<a name="Library-Notes"></a> -<div class="header"> -<p> -Next: <a href="#Future-developments" accesskey="n" rel="next">Future developments</a>, Previous: <a href="#Simple-parsing" accesskey="p" rel="prev">Simple parsing</a>, Up: <a href="#ASN_002e1-structure-handling" accesskey="u" rel="up">ASN.1 structure handling</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Library-Notes-1"></a> -<h3 class="section">2.4 Library Notes</h3> - -<a name="index-Header-file-libtasn1_002eh"></a> - -<p>The header file of this library is <samp>libtasn1.h</samp>. -</p> -<a name="index-Main-type-asn1_005fnode"></a> - -<p>The main type used in it is <code>asn1_node</code>, and it’s used to store -the ASN.1 definitions and structures (instances). -</p> -<p>The <code>NULL</code> constant can be used for the variable -initialization. For example: -</p> -<div class="example"> -<pre class="example"> asn1_node definitions = NULL; -</pre></div> - -<p>Some functions require an <code>errorDescription</code> argument of type -<code>char *</code>, pointing to a pre-allocated buffer of at least -<code>ASN1_MAX_ERROR_DESCRIPTION_SIZE</code> bytes size (e.g., as in -‘<samp>char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];</samp>’). -</p> -<p><code>ASN1_MAX_NAME_SIZE</code> is the maximum number of characters allowed -for an ASN.1 identifier. -</p> -<hr> -<a name="Future-developments"></a> -<div class="header"> -<p> -Previous: <a href="#Library-Notes" accesskey="p" rel="prev">Library Notes</a>, Up: <a href="#ASN_002e1-structure-handling" accesskey="u" rel="up">ASN.1 structure handling</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Future-developments-1"></a> -<h3 class="section">2.5 Future developments</h3> -<a name="index-Future-developments"></a> - -<ul> -<li> Add functions for a C code file generation containing equivalent -data structures (not a single array like now). - -</li><li> The <code>REAL</code> type. - -</li></ul> - -<hr> -<a name="Utilities"></a> -<div class="header"> -<p> -Next: <a href="#Function-reference" accesskey="n" rel="next">Function reference</a>, Previous: <a href="#ASN_002e1-structure-handling" accesskey="p" rel="prev">ASN.1 structure handling</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Utilities-1"></a> -<h2 class="chapter">3 Utilities</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="#Invoking-asn1Parser" accesskey="1">Invoking asn1Parser</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Invoking-asn1Coding" accesskey="2">Invoking asn1Coding</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Invoking-asn1Decoding" accesskey="3">Invoking asn1Decoding</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -</table> - -<hr> -<a name="Invoking-asn1Parser"></a> -<div class="header"> -<p> -Next: <a href="#Invoking-asn1Coding" accesskey="n" rel="next">Invoking asn1Coding</a>, Up: <a href="#Utilities" accesskey="u" rel="up">Utilities</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Invoking-asn1Parser-1"></a> -<h3 class="section">3.1 Invoking asn1Parser</h3> -<a name="index-asn1Parser-program"></a> - -<p><code>asn1Parser</code> reads a single file with ASN.1 definitions and -generates a -file with an array to use with libtasn1 functions. -</p> -<pre class="verbatim">Usage: asn1Parser [options] file - -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. - -n name : array name. -</pre> -<hr> -<a name="Invoking-asn1Coding"></a> -<div class="header"> -<p> -Next: <a href="#Invoking-asn1Decoding" accesskey="n" rel="next">Invoking asn1Decoding</a>, Previous: <a href="#Invoking-asn1Parser" accesskey="p" rel="prev">Invoking asn1Parser</a>, Up: <a href="#Utilities" accesskey="u" rel="up">Utilities</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Invoking-asn1Coding-1"></a> -<h3 class="section">3.2 Invoking asn1Coding</h3> -<a name="index-asn1Coding-program"></a> - -<p><code>asn1Coding</code> generates a DER encoding from a file with ASN.1 -definitions and another one with assignments. -</p> -<p>The file with assignments must have this syntax: -</p> -<pre class="verbatim">InstanceName Asn1Definition - -nameString value - -nameString value -... -</pre> -<p>To specify the field of a <code>CHOICE</code> to be used, specify its name -as a value to the <code>CHOICE</code> element itself. Use <code>''</code> to -denote the root element itself. -(as in the example below.) -</p> -<p>The output file is a binary file with the DER encoding. -</p> -<pre class="verbatim">Usage: asn1Coding [options] file1 file2 - file1 : file with ASN1 definitions. - file2 : file with assignments. -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. -</pre> -<p>For example, consider an ASN.1 definitions file as follows: -</p> -<pre class="verbatim">MYPKIX1 { } - -DEFINITIONS IMPLICIT TAGS ::= - -BEGIN - -OtherStruct := SEQUENCE { - x INTEGER, - y CHOICE { - y1 INTEGER, - y2 OCTET STRING }, -} - -Dss-Sig-Value ::= SEQUENCE { - r INTEGER, - s INTEGER, - other OtherStruct - z INTEGER OPTIONAL, -} - -END -</pre> -<p>And a assignments file as follows: -</p> -<pre class="verbatim">dp MYPKIX1.Dss-Sig-Value - -r 42 -s 47 -other.x 66 -other.y y1 -other.y.y1 15 -z (NULL) -</pre> -<p>Running the command below will generate a <samp>assign.out</samp> file, -containing the DER encoding of <code>PKIX1.Dss-Sig-Value</code>. -</p> -<pre class="verbatim">$ asn1Coding pkix.asn assign.asn1 -</pre> -<p>If the root element is of the <code>CHOICE</code> type, the assignment file -may be like (using the types defined in <samp>pkix.asn</samp>): -</p><pre class="verbatim">elt PKIX1Implicit88.GeneralName - -'' dNSName -dNSName example.org -</pre> -<hr> -<a name="Invoking-asn1Decoding"></a> -<div class="header"> -<p> -Previous: <a href="#Invoking-asn1Coding" accesskey="p" rel="prev">Invoking asn1Coding</a>, Up: <a href="#Utilities" accesskey="u" rel="up">Utilities</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Invoking-asn1Decoding-1"></a> -<h3 class="section">3.3 Invoking asn1Decoding</h3> -<a name="index-asn1Decoding-program"></a> - -<p><code>asn1Decoding</code> generates an ASN.1 structure from a file with -ASN.1 -definitions and a binary file with a DER encoding. -</p> -<pre class="verbatim">Usage: asn1Decoding [options] file1 file2 type - file1 : file with ASN1 definitions. - file2 : binary file with a DER encoding. - type : ASN1 definition name. -Options: - -h : shows the help message. - -v : shows version information and exit. - -o file : output file. -</pre> -<p>For example, after generating the <samp>assign.out</samp> file from the -example section of the <code>asn1Coding</code> command above, the -following -invocation will decode the DER data. -</p> -<pre class="verbatim">$ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value -</pre> -<hr> -<a name="Function-reference"></a> -<div class="header"> -<p> -Next: <a href="#Copying-Information" accesskey="n" rel="next">Copying Information</a>, Previous: <a href="#Utilities" accesskey="p" rel="prev">Utilities</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Function-reference-1"></a> -<h2 class="chapter">4 Function reference</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="#ASN_002e1-schema-functions" accesskey="1">ASN.1 schema functions</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#ASN_002e1-field-functions" accesskey="2">ASN.1 field functions</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#DER-functions" accesskey="3">DER functions</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Error-handling-functions" accesskey="4">Error handling functions</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="#Auxilliary-functions" accesskey="5">Auxilliary functions</a>:</td><td> </td><td align="left" valign="top"> -</td></tr> -</table> - -<hr> -<a name="ASN_002e1-schema-functions"></a> -<div class="header"> -<p> -Next: <a href="#ASN_002e1-field-functions" accesskey="n" rel="next">ASN.1 field functions</a>, Up: <a href="#Function-reference" accesskey="u" rel="up">Function reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="ASN_002e1-schema-functions-1"></a> -<h3 class="section">4.1 ASN.1 schema functions</h3> - -<a name="asn1_005fparser2tree-1"></a> -<h4 class="subheading">asn1_parser2tree</h4> -<a name="asn1_005fparser2tree"></a><dl> -<dt><a name="index-asn1_005fparser2tree"></a>Function: <em>int</em> <strong>asn1_parser2tree</strong> <em>(const char * <var>file</var>, asn1_node * <var>definitions</var>, char * <var>error_desc</var>)</em></dt> -<dd><p><var>file</var>: specify the path and the name of file that contains -ASN.1 declarations. -</p> -<p><var>definitions</var>: return the pointer to the structure created from -"file" ASN.1 declarations. -</p> -<p><var>error_desc</var>: return the error description or an empty -string if success. -</p> -<p>Function used to start the parse algorithm. Creates the structures -needed to manage the definitions included in <code>file</code> file. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if the file has a correct syntax and every -identifier is known, <code>ASN1_ELEMENT_NOT_EMPTY</code> if <code>definitions</code> not -<code>NULL</code> , <code>ASN1_FILE_NOT_FOUND</code> if an error occurred while -opening <code>file</code> , <code>ASN1_SYNTAX_ERROR</code> if the syntax is not -correct, <code>ASN1_IDENTIFIER_NOT_FOUND</code> if in the file there is an -identifier that is not defined, <code>ASN1_NAME_TOO_LONG</code> if in the -file there is an identifier whith more than <code>ASN1_MAX_NAME_SIZE</code> -characters. -</p></dd></dl> - -<a name="asn1_005fparser2array-1"></a> -<h4 class="subheading">asn1_parser2array</h4> -<a name="asn1_005fparser2array"></a><dl> -<dt><a name="index-asn1_005fparser2array"></a>Function: <em>int</em> <strong>asn1_parser2array</strong> <em>(const char * <var>inputFileName</var>, const char * <var>outputFileName</var>, const char * <var>vectorName</var>, char * <var>error_desc</var>)</em></dt> -<dd><p><var>inputFileName</var>: specify the path and the name of file that -contains ASN.1 declarations. -</p> -<p><var>outputFileName</var>: specify the path and the name of file that will -contain the C vector definition. -</p> -<p><var>vectorName</var>: specify the name of the C vector. -</p> -<p><var>error_desc</var>: return the error description or an empty -string if success. -</p> -<p>Function that generates a C structure from an ASN1 file. Creates a -file containing a C vector to use to manage the definitions -included in <code>inputFileName</code> file. If <code>inputFileName</code> is -"/aa/bb/xx.yy" and <code>outputFileName</code> is <code>NULL</code> , the file created is -"/aa/bb/xx_asn1_tab.c". If <code>vectorName</code> is <code>NULL</code> the vector name -will be "xx_asn1_tab". -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if the file has a correct syntax and every -identifier is known, <code>ASN1_FILE_NOT_FOUND</code> if an error occurred -while opening <code>inputFileName</code> , <code>ASN1_SYNTAX_ERROR</code> if the syntax is -not correct, <code>ASN1_IDENTIFIER_NOT_FOUND</code> if in the file there is -an identifier that is not defined, <code>ASN1_NAME_TOO_LONG</code> if in the -file there is an identifier whith more than <code>ASN1_MAX_NAME_SIZE</code> -characters. -</p></dd></dl> - - -<hr> -<a name="ASN_002e1-field-functions"></a> -<div class="header"> -<p> -Next: <a href="#DER-functions" accesskey="n" rel="next">DER functions</a>, Previous: <a href="#ASN_002e1-schema-functions" accesskey="p" rel="prev">ASN.1 schema functions</a>, Up: <a href="#Function-reference" accesskey="u" rel="up">Function reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="ASN_002e1-field-functions-1"></a> -<h3 class="section">4.2 ASN.1 field functions</h3> - -<a name="asn1_005farray2tree-1"></a> -<h4 class="subheading">asn1_array2tree</h4> -<a name="asn1_005farray2tree"></a><dl> -<dt><a name="index-asn1_005farray2tree"></a>Function: <em>int</em> <strong>asn1_array2tree</strong> <em>(const asn1_static_node * <var>array</var>, asn1_node * <var>definitions</var>, char * <var>errorDescription</var>)</em></dt> -<dd><p><var>array</var>: specify the array that contains ASN.1 declarations -</p> -<p><var>definitions</var>: return the pointer to the structure created by -*ARRAY ASN.1 declarations -</p> -<p><var>errorDescription</var>: return the error description. -</p> -<p>Creates the structures needed to manage the ASN.1 definitions. - <code>array</code> is a vector created by <code>asn1_parser2array()</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if structure was created correctly, -<code>ASN1_ELEMENT_NOT_EMPTY</code> if * <code>definitions</code> not NULL, -<code>ASN1_IDENTIFIER_NOT_FOUND</code> if in the file there is an identifier -that is not defined (see <code>errorDescription</code> for more information), -<code>ASN1_ARRAY_ERROR</code> if the array pointed by <code>array</code> is wrong. -</p></dd></dl> - -<a name="asn1_005fdelete_005fstructure-1"></a> -<h4 class="subheading">asn1_delete_structure</h4> -<a name="asn1_005fdelete_005fstructure"></a><dl> -<dt><a name="index-asn1_005fdelete_005fstructure"></a>Function: <em>int</em> <strong>asn1_delete_structure</strong> <em>(asn1_node * <var>structure</var>)</em></dt> -<dd><p><var>structure</var>: pointer to the structure that you want to delete. -</p> -<p>Deletes the structure * <code>structure</code> . At the end, * <code>structure</code> is set -to NULL. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful, <code>ASN1_ELEMENT_NOT_FOUND</code> if -* <code>structure</code> was NULL. -</p></dd></dl> - -<a name="asn1_005fdelete_005fstructure2-1"></a> -<h4 class="subheading">asn1_delete_structure2</h4> -<a name="asn1_005fdelete_005fstructure2"></a><dl> -<dt><a name="index-asn1_005fdelete_005fstructure2"></a>Function: <em>int</em> <strong>asn1_delete_structure2</strong> <em>(asn1_node * <var>structure</var>, unsigned int <var>flags</var>)</em></dt> -<dd><p><var>structure</var>: pointer to the structure that you want to delete. -</p> -<p><var>flags</var>: additional flags (see <code>ASN1_DELETE_FLAG</code> ) -</p> -<p>Deletes the structure * <code>structure</code> . At the end, * <code>structure</code> is set -to NULL. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful, <code>ASN1_ELEMENT_NOT_FOUND</code> if -* <code>structure</code> was NULL. -</p></dd></dl> - -<a name="asn1_005fdelete_005felement-1"></a> -<h4 class="subheading">asn1_delete_element</h4> -<a name="asn1_005fdelete_005felement"></a><dl> -<dt><a name="index-asn1_005fdelete_005felement"></a>Function: <em>int</em> <strong>asn1_delete_element</strong> <em>(asn1_node <var>structure</var>, const char * <var>element_name</var>)</em></dt> -<dd><p><var>structure</var>: pointer to the structure that contains the element you -want to delete. -</p> -<p><var>element_name</var>: element’s name you want to delete. -</p> -<p>Deletes the element named * <code>element_name</code> inside * <code>structure</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful, <code>ASN1_ELEMENT_NOT_FOUND</code> if -the <code>element_name</code> was not found. -</p></dd></dl> - -<a name="asn1_005fcreate_005felement-1"></a> -<h4 class="subheading">asn1_create_element</h4> -<a name="asn1_005fcreate_005felement"></a><dl> -<dt><a name="index-asn1_005fcreate_005felement"></a>Function: <em>int</em> <strong>asn1_create_element</strong> <em>(asn1_node <var>definitions</var>, const char * <var>source_name</var>, asn1_node * <var>element</var>)</em></dt> -<dd><p><var>definitions</var>: pointer to the structure returned by "parser_asn1" function -</p> -<p><var>source_name</var>: the name of the type of the new structure (must be -inside p_structure). -</p> -<p><var>element</var>: pointer to the structure created. -</p> -<p>Creates a structure of type <code>source_name</code> . Example using -"pkix.asn": -</p> -<p>rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if creation OK, <code>ASN1_ELEMENT_NOT_FOUND</code> if - <code>source_name</code> is not known. -</p></dd></dl> - -<a name="asn1_005fprint_005fstructure-1"></a> -<h4 class="subheading">asn1_print_structure</h4> -<a name="asn1_005fprint_005fstructure"></a><dl> -<dt><a name="index-asn1_005fprint_005fstructure"></a>Function: <em>void</em> <strong>asn1_print_structure</strong> <em>(FILE * <var>out</var>, asn1_node <var>structure</var>, const char * <var>name</var>, int <var>mode</var>)</em></dt> -<dd><p><var>out</var>: pointer to the output file (e.g. stdout). -</p> -<p><var>structure</var>: pointer to the structure that you want to visit. -</p> -<p><var>name</var>: an element of the structure -</p> -<p><var>mode</var>: specify how much of the structure to print, can be -<code>ASN1_PRINT_NAME</code> , <code>ASN1_PRINT_NAME_TYPE</code> , -<code>ASN1_PRINT_NAME_TYPE_VALUE</code> , or <code>ASN1_PRINT_ALL</code> . -</p> -<p>Prints on the <code>out</code> file descriptor the structure’s tree starting -from the <code>name</code> element inside the structure <code>structure</code> . -</p></dd></dl> - -<a name="asn1_005fnumber_005fof_005felements-1"></a> -<h4 class="subheading">asn1_number_of_elements</h4> -<a name="asn1_005fnumber_005fof_005felements"></a><dl> -<dt><a name="index-asn1_005fnumber_005fof_005felements"></a>Function: <em>int</em> <strong>asn1_number_of_elements</strong> <em>(asn1_node <var>element</var>, const char * <var>name</var>, int * <var>num</var>)</em></dt> -<dd><p><var>element</var>: pointer to the root of an ASN1 structure. -</p> -<p><var>name</var>: the name of a sub-structure of ROOT. -</p> -<p><var>num</var>: pointer to an integer where the result will be stored -</p> -<p>Counts the number of elements of a sub-structure called NAME with -names equal to "?1","?2", ... -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful, <code>ASN1_ELEMENT_NOT_FOUND</code> if - <code>name</code> is not known, <code>ASN1_GENERIC_ERROR</code> if pointer <code>num</code> is <code>NULL</code> . -</p></dd></dl> - -<a name="asn1_005ffind_005fstructure_005ffrom_005foid-1"></a> -<h4 class="subheading">asn1_find_structure_from_oid</h4> -<a name="asn1_005ffind_005fstructure_005ffrom_005foid"></a><dl> -<dt><a name="index-asn1_005ffind_005fstructure_005ffrom_005foid"></a>Function: <em>const char *</em> <strong>asn1_find_structure_from_oid</strong> <em>(asn1_node <var>definitions</var>, const char * <var>oidValue</var>)</em></dt> -<dd><p><var>definitions</var>: ASN1 definitions -</p> -<p><var>oidValue</var>: value of the OID to search (e.g. "1.2.3.4"). -</p> -<p>Search the structure that is defined just after an OID definition. -</p> -<p><strong>Returns:</strong> <code>NULL</code> when <code>oidValue</code> not found, otherwise the pointer to a -constant string that contains the element name defined just after -the OID. -</p></dd></dl> - -<a name="asn1_005fcopy_005fnode-1"></a> -<h4 class="subheading">asn1_copy_node</h4> -<a name="asn1_005fcopy_005fnode"></a><dl> -<dt><a name="index-asn1_005fcopy_005fnode"></a>Function: <em>int</em> <strong>asn1_copy_node</strong> <em>(asn1_node <var>dst</var>, const char * <var>dst_name</var>, asn1_node <var>src</var>, const char * <var>src_name</var>)</em></dt> -<dd><p><var>dst</var>: Destination asn1 node. -</p> -<p><var>dst_name</var>: Field name in destination node. -</p> -<p><var>src</var>: Source asn1 node. -</p> -<p><var>src_name</var>: Field name in source node. -</p> -<p>Create a deep copy of a asn1_node variable. That -function requires <code>dst</code> to be expanded using <code>asn1_create_element()</code> . -</p> -<p><strong>Returns:</strong> Return <code>ASN1_SUCCESS</code> on success. -</p></dd></dl> - -<a name="asn1_005fdup_005fnode-1"></a> -<h4 class="subheading">asn1_dup_node</h4> -<a name="asn1_005fdup_005fnode"></a><dl> -<dt><a name="index-asn1_005fdup_005fnode"></a>Function: <em>asn1_node</em> <strong>asn1_dup_node</strong> <em>(asn1_node <var>src</var>, const char * <var>src_name</var>)</em></dt> -<dd><p><var>src</var>: Source asn1 node. -</p> -<p><var>src_name</var>: Field name in source node. -</p> -<p>Create a deep copy of a asn1_node variable. This function -will return an exact copy of the provided structure. -</p> -<p><strong>Returns:</strong> Return <code>NULL</code> on failure. -</p></dd></dl> - -<a name="asn1_005fwrite_005fvalue-1"></a> -<h4 class="subheading">asn1_write_value</h4> -<a name="asn1_005fwrite_005fvalue"></a><dl> -<dt><a name="index-asn1_005fwrite_005fvalue"></a>Function: <em>int</em> <strong>asn1_write_value</strong> <em>(asn1_node <var>node_root</var>, const char * <var>name</var>, const void * <var>ivalue</var>, int <var>len</var>)</em></dt> -<dd><p><var>node_root</var>: pointer to a structure -</p> -<p><var>name</var>: the name of the element inside the structure that you want to set. -</p> -<p><var>ivalue</var>: vector used to specify the value to set. If len is >0, -VALUE must be a two’s complement form integer. if len=0 *VALUE -must be a null terminated string with an integer value. -</p> -<p><var>len</var>: number of bytes of *value to use to set the value: -value[0]..value[len-1] or 0 if value is a null terminated string -</p> -<p>Set the value of one element inside a structure. -</p> -<p>If an element is OPTIONAL and you want to delete it, you must use -the value=NULL and len=0. Using "pkix.asn": -</p> -<p>result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", -NULL, 0); -</p> -<p>Description for each type: -</p> -<p><strong>INTEGER:</strong> VALUE must contain a two’s complement form integer. -</p> -<p>value[0]=0xFF , len=1 -> integer=-1. -value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. -value[0]=0x01 , len=1 -> integer= 1. -value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. -value="123" , len=0 -> integer= 123. -</p> -<p><strong>ENUMERATED:</strong> As INTEGER (but only with not negative numbers). -</p> -<p><strong>BOOLEAN:</strong> VALUE must be the null terminated string "TRUE" or -"FALSE" and LEN != 0. -</p> -<p>value="TRUE" , len=1 -> boolean=TRUE. -value="FALSE" , len=1 -> boolean=FALSE. -</p> -<p>OBJECT IDENTIFIER: VALUE must be a null terminated string with -each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. -</p> -<p>value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. -</p> -<p><strong>UTCTime:</strong> VALUE must be a null terminated string in one of these -formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", -"YYMMDDhhmmss+hh’mm’", "YYMMDDhhmmss-hh’mm’", -"YYMMDDhhmm+hh’mm’", or "YYMMDDhhmm-hh’mm’". LEN != 0. -</p> -<p>value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 -at 12h 00m Greenwich Mean Time -</p> -<p><strong>GeneralizedTime:</strong> VALUE must be in one of this format: -"YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", -"YYYYMMDDhhmmss.s+hh’mm’", "YYYYMMDDhhmmss.s-hh’mm’", -"YYYYMMDDhhmm+hh’mm’", or "YYYYMMDDhhmm-hh’mm’" where ss.s -indicates the seconds with any precision like "10.1" or "01.02". -LEN != 0 -</p> -<p>value="2001010112001.12-0700" , len=1 -> time=Jannuary -1st, 2001 at 12h 00m 01.12s Pacific Daylight Time -</p> -<p>OCTET STRING: VALUE contains the octet string and LEN is the -number of octets. -</p> -<p>value="$\backslash$x01$\backslash$x02$\backslash$x03" , -len=3 -> three bytes octet string -</p> -<p><strong>GeneralString:</strong> VALUE contains the generalstring and LEN is the -number of octets. -</p> -<p>value="$\backslash$x01$\backslash$x02$\backslash$x03" , -len=3 -> three bytes generalstring -</p> -<p>BIT STRING: VALUE contains the bit string organized by bytes and -LEN is the number of bits. -</p> -<p>value="$\backslash$xCF" , len=6 -> bit string="110011" (six -bits) -</p> -<p><strong>CHOICE:</strong> if NAME indicates a choice type, VALUE must specify one of -the alternatives with a null terminated string. LEN != 0. Using -"pkix.asn"\: -</p> -<p>result=asn1_write_value(cert, -"certificate1.tbsCertificate.subject", "rdnSequence", -1); -</p> -<p><strong>ANY:</strong> VALUE indicates the der encoding of a structure. LEN != 0. -</p> -<p>SEQUENCE OF: VALUE must be the null terminated string "NEW" and -LEN != 0. With this instruction another element is appended in -the sequence. The name of this element will be "?1" if it’s the -first one, "?2" for the second and so on. -</p> -<p>Using "pkix.asn"\: -</p> -<p>result=asn1_write_value(cert, -"certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); -</p> -<p>SET OF: the same as SEQUENCE OF. Using "pkix.asn": -</p> -<p>result=asn1_write_value(cert, -"tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if the value was set, -<code>ASN1_ELEMENT_NOT_FOUND</code> if <code>name</code> is not a valid element, and -<code>ASN1_VALUE_NOT_VALID</code> if <code>ivalue</code> has a wrong format. -</p></dd></dl> - -<a name="asn1_005fread_005fvalue-1"></a> -<h4 class="subheading">asn1_read_value</h4> -<a name="asn1_005fread_005fvalue"></a><dl> -<dt><a name="index-asn1_005fread_005fvalue"></a>Function: <em>int</em> <strong>asn1_read_value</strong> <em>(asn1_node <var>root</var>, const char * <var>name</var>, void * <var>ivalue</var>, int * <var>len</var>)</em></dt> -<dd><p><var>root</var>: pointer to a structure. -</p> -<p><var>name</var>: the name of the element inside a structure that you want to read. -</p> -<p><var>ivalue</var>: vector that will contain the element’s content, must be a -pointer to memory cells already allocated (may be <code>NULL</code> ). -</p> -<p><var>len</var>: number of bytes of *value: value[0]..value[len-1]. Initialy -holds the sizeof value. -</p> -<p>Returns the value of one element inside a structure. -If an element is OPTIONAL and this returns -<code>ASN1_ELEMENT_NOT_FOUND</code> , it means that this element wasn’t present -in the der encoding that created the structure. The first element -of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and -so on. If the <code>root</code> provided is a node to specific sequence element, -then the keyword "?CURRENT" is also acceptable and indicates the -current sequence element of this node. -</p> -<p>Note that there can be valid values with length zero. In these case -this function will succeed and <code>len</code> will be zero. -</p> -<p><strong>INTEGER:</strong> VALUE will contain a two’s complement form integer. -</p> -<p>integer=-1 -> value[0]=0xFF , len=1. -integer=1 -> value[0]=0x01 , len=1. -</p> -<p><strong>ENUMERATED:</strong> As INTEGER (but only with not negative numbers). -</p> -<p><strong>BOOLEAN:</strong> VALUE will be the null terminated string "TRUE" or -"FALSE" and LEN=5 or LEN=6. -</p> -<p>OBJECT IDENTIFIER: VALUE will be a null terminated string with -each number separated by a dot (i.e. "1.2.3.543.1"). -</p> -<p>LEN = strlen(VALUE)+1 -</p> -<p><strong>UTCTime:</strong> VALUE will be a null terminated string in one of these -formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". -LEN=strlen(VALUE)+1. -</p> -<p><strong>GeneralizedTime:</strong> VALUE will be a null terminated string in the -same format used to set the value. -</p> -<p>OCTET STRING: VALUE will contain the octet string and LEN will be -the number of octets. -</p> -<p><strong>GeneralString:</strong> VALUE will contain the generalstring and LEN will -be the number of octets. -</p> -<p>BIT STRING: VALUE will contain the bit string organized by bytes -and LEN will be the number of bits. -</p> -<p><strong>CHOICE:</strong> If NAME indicates a choice type, VALUE will specify the -alternative selected. -</p> -<p><strong>ANY:</strong> If NAME indicates an any type, VALUE will indicate the DER -encoding of the structure actually used. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if value is returned, -<code>ASN1_ELEMENT_NOT_FOUND</code> if <code>name</code> is not a valid element, -<code>ASN1_VALUE_NOT_FOUND</code> if there isn’t any value for the element -selected, and <code>ASN1_MEM_ERROR</code> if The value vector isn’t big enough -to store the result, and in this case <code>len</code> will contain the number of -bytes needed. On the occasion that the stored data are of zero-length -this function may return <code>ASN1_SUCCESS</code> even if the provided <code>len</code> is zero. -</p></dd></dl> - -<a name="asn1_005fread_005fvalue_005ftype-1"></a> -<h4 class="subheading">asn1_read_value_type</h4> -<a name="asn1_005fread_005fvalue_005ftype"></a><dl> -<dt><a name="index-asn1_005fread_005fvalue_005ftype"></a>Function: <em>int</em> <strong>asn1_read_value_type</strong> <em>(asn1_node <var>root</var>, const char * <var>name</var>, void * <var>ivalue</var>, int * <var>len</var>, unsigned int * <var>etype</var>)</em></dt> -<dd><p><var>root</var>: pointer to a structure. -</p> -<p><var>name</var>: the name of the element inside a structure that you want to read. -</p> -<p><var>ivalue</var>: vector that will contain the element’s content, must be a -pointer to memory cells already allocated (may be <code>NULL</code> ). -</p> -<p><var>len</var>: number of bytes of *value: value[0]..value[len-1]. Initialy -holds the sizeof value. -</p> -<p><var>etype</var>: The type of the value read (ASN1_ETYPE) -</p> -<p>Returns the type and value of one element inside a structure. -If an element is OPTIONAL and this returns -<code>ASN1_ELEMENT_NOT_FOUND</code> , it means that this element wasn’t present -in the der encoding that created the structure. The first element -of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and -so on. If the <code>root</code> provided is a node to specific sequence element, -then the keyword "?CURRENT" is also acceptable and indicates the -current sequence element of this node. -</p> -<p>Note that there can be valid values with length zero. In these case -this function will succeed and <code>len</code> will be zero. -</p> -<p><strong>INTEGER:</strong> VALUE will contain a two’s complement form integer. -</p> -<p>integer=-1 -> value[0]=0xFF , len=1. -integer=1 -> value[0]=0x01 , len=1. -</p> -<p><strong>ENUMERATED:</strong> As INTEGER (but only with not negative numbers). -</p> -<p><strong>BOOLEAN:</strong> VALUE will be the null terminated string "TRUE" or -"FALSE" and LEN=5 or LEN=6. -</p> -<p>OBJECT IDENTIFIER: VALUE will be a null terminated string with -each number separated by a dot (i.e. "1.2.3.543.1"). -</p> -<p>LEN = strlen(VALUE)+1 -</p> -<p><strong>UTCTime:</strong> VALUE will be a null terminated string in one of these -formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". -LEN=strlen(VALUE)+1. -</p> -<p><strong>GeneralizedTime:</strong> VALUE will be a null terminated string in the -same format used to set the value. -</p> -<p>OCTET STRING: VALUE will contain the octet string and LEN will be -the number of octets. -</p> -<p><strong>GeneralString:</strong> VALUE will contain the generalstring and LEN will -be the number of octets. -</p> -<p>BIT STRING: VALUE will contain the bit string organized by bytes -and LEN will be the number of bits. -</p> -<p><strong>CHOICE:</strong> If NAME indicates a choice type, VALUE will specify the -alternative selected. -</p> -<p><strong>ANY:</strong> If NAME indicates an any type, VALUE will indicate the DER -encoding of the structure actually used. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if value is returned, -<code>ASN1_ELEMENT_NOT_FOUND</code> if <code>name</code> is not a valid element, -<code>ASN1_VALUE_NOT_FOUND</code> if there isn’t any value for the element -selected, and <code>ASN1_MEM_ERROR</code> if The value vector isn’t big enough -to store the result, and in this case <code>len</code> will contain the number of -bytes needed. On the occasion that the stored data are of zero-length -this function may return <code>ASN1_SUCCESS</code> even if the provided <code>len</code> is zero. -</p></dd></dl> - -<a name="asn1_005fread_005ftag-1"></a> -<h4 class="subheading">asn1_read_tag</h4> -<a name="asn1_005fread_005ftag"></a><dl> -<dt><a name="index-asn1_005fread_005ftag"></a>Function: <em>int</em> <strong>asn1_read_tag</strong> <em>(asn1_node <var>root</var>, const char * <var>name</var>, int * <var>tagValue</var>, int * <var>classValue</var>)</em></dt> -<dd><p><var>root</var>: pointer to a structure -</p> -<p><var>name</var>: the name of the element inside a structure. -</p> -<p><var>tagValue</var>: variable that will contain the TAG value. -</p> -<p><var>classValue</var>: variable that will specify the TAG type. -</p> -<p>Returns the TAG and the CLASS of one element inside a structure. -CLASS can have one of these constants: <code>ASN1_CLASS_APPLICATION</code> , -<code>ASN1_CLASS_UNIVERSAL</code> , <code>ASN1_CLASS_PRIVATE</code> or -<code>ASN1_CLASS_CONTEXT_SPECIFIC</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful, <code>ASN1_ELEMENT_NOT_FOUND</code> if - <code>name</code> is not a valid element. -</p></dd></dl> - -<a name="asn1_005fread_005fnode_005fvalue-1"></a> -<h4 class="subheading">asn1_read_node_value</h4> -<a name="asn1_005fread_005fnode_005fvalue"></a><dl> -<dt><a name="index-asn1_005fread_005fnode_005fvalue"></a>Function: <em>int</em> <strong>asn1_read_node_value</strong> <em>(asn1_node <var>node</var>, asn1_data_node_st * <var>data</var>)</em></dt> -<dd><p><var>node</var>: pointer to a node. -</p> -<p><var>data</var>: a point to a asn1_data_node_st -</p> -<p>Returns the value a data node inside a asn1_node structure. -The data returned should be handled as constant values. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if the node exists. -</p></dd></dl> - - -<hr> -<a name="DER-functions"></a> -<div class="header"> -<p> -Next: <a href="#Error-handling-functions" accesskey="n" rel="next">Error handling functions</a>, Previous: <a href="#ASN_002e1-field-functions" accesskey="p" rel="prev">ASN.1 field functions</a>, Up: <a href="#Function-reference" accesskey="u" rel="up">Function reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="DER-functions-1"></a> -<h3 class="section">4.3 DER functions</h3> - -<a name="asn1_005flength_005fder-1"></a> -<h4 class="subheading">asn1_length_der</h4> -<a name="asn1_005flength_005fder"></a><dl> -<dt><a name="index-asn1_005flength_005fder"></a>Function: <em>void</em> <strong>asn1_length_der</strong> <em>(unsigned long int <var>len</var>, unsigned char * <var>der</var>, int * <var>der_len</var>)</em></dt> -<dd><p><var>len</var>: value to convert. -</p> -<p><var>der</var>: buffer to hold the returned encoding (may be <code>NULL</code> ). -</p> -<p><var>der_len</var>: number of meaningful bytes of ANS (der[0]..der[der_len-1]). -</p> -<p>Creates the DER encoding of the provided length value. -The <code>der</code> buffer must have enough room for the output. The maximum -length this function will encode is <code>ASN1_MAX_LENGTH_SIZE</code> . -</p> -<p>To know the size of the DER encoding use a <code>NULL</code> value for <code>der</code> . -</p></dd></dl> - -<a name="asn1_005foctet_005fder-1"></a> -<h4 class="subheading">asn1_octet_der</h4> -<a name="asn1_005foctet_005fder"></a><dl> -<dt><a name="index-asn1_005foctet_005fder"></a>Function: <em>void</em> <strong>asn1_octet_der</strong> <em>(const unsigned char * <var>str</var>, int <var>str_len</var>, unsigned char * <var>der</var>, int * <var>der_len</var>)</em></dt> -<dd><p><var>str</var>: the input data. -</p> -<p><var>str_len</var>: STR length (str[0]..str[*str_len-1]). -</p> -<p><var>der</var>: encoded string returned. -</p> -<p><var>der_len</var>: number of meaningful bytes of DER (der[0]..der[der_len-1]). -</p> -<p>Creates a length-value DER encoding for the input data. -The DER encoding of the input data will be placed in the <code>der</code> variable. -</p> -<p>Note that the OCTET STRING tag is not included in the output. -</p> -<p>This function does not return any value because it is expected -that <code>der_len</code> will contain enough bytes to store the string -plus the DER encoding. The DER encoding size can be obtained using -<code>asn1_length_der()</code> . -</p></dd></dl> - -<a name="asn1_005fencode_005fsimple_005fder-1"></a> -<h4 class="subheading">asn1_encode_simple_der</h4> -<a name="asn1_005fencode_005fsimple_005fder"></a><dl> -<dt><a name="index-asn1_005fencode_005fsimple_005fder"></a>Function: <em>int</em> <strong>asn1_encode_simple_der</strong> <em>(unsigned int <var>etype</var>, const unsigned char * <var>str</var>, unsigned int <var>str_len</var>, unsigned char * <var>tl</var>, unsigned int * <var>tl_len</var>)</em></dt> -<dd><p><var>etype</var>: The type of the string to be encoded (ASN1_ETYPE_) -</p> -<p><var>str</var>: the string data. -</p> -<p><var>str_len</var>: the string length -</p> -<p><var>tl</var>: the encoded tag and length -</p> -<p><var>tl_len</var>: the bytes of the <code>tl</code> field -</p> -<p>Creates the DER encoding for various simple ASN.1 types like strings etc. -It stores the tag and length in <code>tl</code> , which should have space for at least -<code>ASN1_MAX_TL_SIZE</code> bytes. Initially <code>tl_len</code> should contain the size of <code>tl</code> . -</p> -<p>The complete DER encoding should consist of the value in <code>tl</code> appended -with the provided <code>str</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful or an error value. -</p></dd></dl> - -<a name="asn1_005fbit_005fder-1"></a> -<h4 class="subheading">asn1_bit_der</h4> -<a name="asn1_005fbit_005fder"></a><dl> -<dt><a name="index-asn1_005fbit_005fder"></a>Function: <em>void</em> <strong>asn1_bit_der</strong> <em>(const unsigned char * <var>str</var>, int <var>bit_len</var>, unsigned char * <var>der</var>, int * <var>der_len</var>)</em></dt> -<dd><p><var>str</var>: BIT string. -</p> -<p><var>bit_len</var>: number of meaningful bits in STR. -</p> -<p><var>der</var>: string returned. -</p> -<p><var>der_len</var>: number of meaningful bytes of DER -(der[0]..der[ans_len-1]). -</p> -<p>Creates a length-value DER encoding for the input data -as it would have been for a BIT STRING. -The DER encoded data will be copied in <code>der</code> . -</p> -<p>Note that the BIT STRING tag is not included in the output. -</p> -<p>This function does not return any value because it is expected -that <code>der_len</code> will contain enough bytes to store the string -plus the DER encoding. The DER encoding size can be obtained using -<code>asn1_length_der()</code> . -</p></dd></dl> - -<a name="asn1_005fder_005fcoding-1"></a> -<h4 class="subheading">asn1_der_coding</h4> -<a name="asn1_005fder_005fcoding"></a><dl> -<dt><a name="index-asn1_005fder_005fcoding"></a>Function: <em>int</em> <strong>asn1_der_coding</strong> <em>(asn1_node <var>element</var>, const char * <var>name</var>, void * <var>ider</var>, int * <var>len</var>, char * <var>ErrorDescription</var>)</em></dt> -<dd><p><var>element</var>: pointer to an ASN1 element -</p> -<p><var>name</var>: the name of the structure you want to encode (it must be -inside *POINTER). -</p> -<p><var>ider</var>: vector that will contain the DER encoding. DER must be a -pointer to memory cells already allocated. -</p> -<p><var>len</var>: number of bytes of * <code>ider</code> : <code>ider</code> [0].. <code>ider</code> [len-1], Initialy -holds the sizeof of der vector. -</p> -<p><var>ErrorDescription</var>: return the error description or an empty -string if success. -</p> -<p>Creates the DER encoding for the NAME structure (inside *POINTER -structure). -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if DER encoding OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if <code>name</code> is not a valid element, <code>ASN1_VALUE_NOT_FOUND</code> if there -is an element without a value, <code>ASN1_MEM_ERROR</code> if the <code>ider</code> vector isn’t big enough and in this case <code>len</code> will contain the -length needed. -</p></dd></dl> - -<a name="asn1_005fget_005flength_005fder-1"></a> -<h4 class="subheading">asn1_get_length_der</h4> -<a name="asn1_005fget_005flength_005fder"></a><dl> -<dt><a name="index-asn1_005fget_005flength_005fder"></a>Function: <em>long</em> <strong>asn1_get_length_der</strong> <em>(const unsigned char * <var>der</var>, int <var>der_len</var>, int * <var>len</var>)</em></dt> -<dd><p><var>der</var>: DER data to decode. -</p> -<p><var>der_len</var>: Length of DER data to decode. -</p> -<p><var>len</var>: Output variable containing the length of the DER length field. -</p> -<p>Extract a length field from DER data. -</p> -<p><strong>Returns:</strong> Return the decoded length value, or -1 on indefinite -length, or -2 when the value was too big to fit in a int, or -4 -when the decoded length value plus <code>len</code> would exceed <code>der_len</code> . -</p></dd></dl> - -<a name="asn1_005fget_005ftag_005fder-1"></a> -<h4 class="subheading">asn1_get_tag_der</h4> -<a name="asn1_005fget_005ftag_005fder"></a><dl> -<dt><a name="index-asn1_005fget_005ftag_005fder"></a>Function: <em>int</em> <strong>asn1_get_tag_der</strong> <em>(const unsigned char * <var>der</var>, int <var>der_len</var>, unsigned char * <var>cls</var>, int * <var>len</var>, unsigned long * <var>tag</var>)</em></dt> -<dd><p><var>der</var>: DER data to decode. -</p> -<p><var>der_len</var>: Length of DER data to decode. -</p> -<p><var>cls</var>: Output variable containing decoded class. -</p> -<p><var>len</var>: Output variable containing the length of the DER TAG data. -</p> -<p><var>tag</var>: Output variable containing the decoded tag (may be <code>NULL</code> ). -</p> -<p>Decode the class and TAG from DER code. -</p> -<p><strong>Returns:</strong> Returns <code>ASN1_SUCCESS</code> on success, or an error. -</p></dd></dl> - -<a name="asn1_005fget_005flength_005fber-1"></a> -<h4 class="subheading">asn1_get_length_ber</h4> -<a name="asn1_005fget_005flength_005fber"></a><dl> -<dt><a name="index-asn1_005fget_005flength_005fber"></a>Function: <em>long</em> <strong>asn1_get_length_ber</strong> <em>(const unsigned char * <var>ber</var>, int <var>ber_len</var>, int * <var>len</var>)</em></dt> -<dd><p><var>ber</var>: BER data to decode. -</p> -<p><var>ber_len</var>: Length of BER data to decode. -</p> -<p><var>len</var>: Output variable containing the length of the BER length field. -</p> -<p>Extract a length field from BER data. The difference to -<code>asn1_get_length_der()</code> is that this function will return a length -even if the value has indefinite encoding. -</p> -<p><strong>Returns:</strong> Return the decoded length value, or negative value when -the value was too big. -</p> -<p><strong>Since:</strong> 2.0 -</p></dd></dl> - -<a name="asn1_005fget_005foctet_005fder-1"></a> -<h4 class="subheading">asn1_get_octet_der</h4> -<a name="asn1_005fget_005foctet_005fder"></a><dl> -<dt><a name="index-asn1_005fget_005foctet_005fder"></a>Function: <em>int</em> <strong>asn1_get_octet_der</strong> <em>(const unsigned char * <var>der</var>, int <var>der_len</var>, int * <var>ret_len</var>, unsigned char * <var>str</var>, int <var>str_size</var>, int * <var>str_len</var>)</em></dt> -<dd><p><var>der</var>: DER data to decode containing the OCTET SEQUENCE. -</p> -<p><var>der_len</var>: The length of the <code>der</code> data to decode. -</p> -<p><var>ret_len</var>: Output variable containing the encoded length of the DER data. -</p> -<p><var>str</var>: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. -</p> -<p><var>str_size</var>: Length of pre-allocated output buffer. -</p> -<p><var>str_len</var>: Output variable containing the length of the contents of the OCTET SEQUENCE. -</p> -<p>Extract an OCTET SEQUENCE from DER data. Note that this function -expects the DER data past the tag field, i.e., the length and -content octets. -</p> -<p><strong>Returns:</strong> Returns <code>ASN1_SUCCESS</code> on success, or an error. -</p></dd></dl> - -<a name="asn1_005fget_005fobject_005fid_005fder-1"></a> -<h4 class="subheading">asn1_get_object_id_der</h4> -<a name="asn1_005fget_005fobject_005fid_005fder"></a><dl> -<dt><a name="index-asn1_005fget_005fobject_005fid_005fder"></a>Function: <em>int</em> <strong>asn1_get_object_id_der</strong> <em>(const unsigned char * <var>der</var>, int <var>der_len</var>, int * <var>ret_len</var>, char * <var>str</var>, int <var>str_size</var>)</em></dt> -<dd><p><var>der</var>: DER data to decode containing the OBJECT IDENTIFIER -</p> -<p><var>der_len</var>: Length of DER data to decode. -</p> -<p><var>ret_len</var>: Output variable containing the length of the DER data. -</p> -<p><var>str</var>: Pre-allocated output buffer to put the textual object id in. -</p> -<p><var>str_size</var>: Length of pre-allocated output buffer. -</p> -<p>Converts a DER encoded object identifier to its textual form. This -function expects the DER object identifier without the tag. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> on success, or an error. -</p></dd></dl> - -<a name="asn1_005fget_005fbit_005fder-1"></a> -<h4 class="subheading">asn1_get_bit_der</h4> -<a name="asn1_005fget_005fbit_005fder"></a><dl> -<dt><a name="index-asn1_005fget_005fbit_005fder"></a>Function: <em>int</em> <strong>asn1_get_bit_der</strong> <em>(const unsigned char * <var>der</var>, int <var>der_len</var>, int * <var>ret_len</var>, unsigned char * <var>str</var>, int <var>str_size</var>, int * <var>bit_len</var>)</em></dt> -<dd><p><var>der</var>: DER data to decode containing the BIT SEQUENCE. -</p> -<p><var>der_len</var>: Length of DER data to decode. -</p> -<p><var>ret_len</var>: Output variable containing the length of the DER data. -</p> -<p><var>str</var>: Pre-allocated output buffer to put decoded BIT SEQUENCE in. -</p> -<p><var>str_size</var>: Length of pre-allocated output buffer. -</p> -<p><var>bit_len</var>: Output variable containing the size of the BIT SEQUENCE. -</p> -<p>Extract a BIT SEQUENCE from DER data. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> on success, or an error. -</p></dd></dl> - -<a name="asn1_005fder_005fdecoding2-1"></a> -<h4 class="subheading">asn1_der_decoding2</h4> -<a name="asn1_005fder_005fdecoding2"></a><dl> -<dt><a name="index-asn1_005fder_005fdecoding2"></a>Function: <em>int</em> <strong>asn1_der_decoding2</strong> <em>(asn1_node * <var>element</var>, const void * <var>ider</var>, int * <var>max_ider_len</var>, unsigned int <var>flags</var>, char * <var>errorDescription</var>)</em></dt> -<dd><p><var>element</var>: pointer to an ASN1 structure. -</p> -<p><var>ider</var>: vector that contains the DER encoding. -</p> -<p><var>max_ider_len</var>: pointer to an integer giving the information about the -maximal number of bytes occupied by * <code>ider</code> . The real size of the DER -encoding is returned through this pointer. -</p> -<p><var>flags</var>: flags controlling the behaviour of the function. -</p> -<p><var>errorDescription</var>: null-terminated string contains details when an -error occurred. -</p> -<p>Fill the structure * <code>element</code> with values of a DER encoding string. The -structure must just be created with function <code>asn1_create_element()</code> . -</p> -<p>If <code>ASN1_DECODE_FLAG_ALLOW_PADDING</code> flag is set then the function will ignore -padding after the decoded DER data. Upon a successful return the value of -* <code>max_ider_len</code> will be set to the number of bytes decoded. -</p> -<p>If <code>ASN1_DECODE_FLAG_STRICT_DER</code> flag is set then the function will -not decode any BER-encoded elements. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if DER encoding OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if <code>ELEMENT</code> is <code>NULL</code> , and <code>ASN1_TAG_ERROR</code> or -<code>ASN1_DER_ERROR</code> if the der encoding doesn’t match the structure -name (* <code>ELEMENT</code> deleted). -</p></dd></dl> - -<a name="asn1_005fder_005fdecoding-1"></a> -<h4 class="subheading">asn1_der_decoding</h4> -<a name="asn1_005fder_005fdecoding"></a><dl> -<dt><a name="index-asn1_005fder_005fdecoding"></a>Function: <em>int</em> <strong>asn1_der_decoding</strong> <em>(asn1_node * <var>element</var>, const void * <var>ider</var>, int <var>ider_len</var>, char * <var>errorDescription</var>)</em></dt> -<dd><p><var>element</var>: pointer to an ASN1 structure. -</p> -<p><var>ider</var>: vector that contains the DER encoding. -</p> -<p><var>ider_len</var>: number of bytes of * <code>ider</code> : <code>ider</code> [0].. <code>ider</code> [len-1]. -</p> -<p><var>errorDescription</var>: null-terminated string contains details when an -error occurred. -</p> -<p>Fill the structure * <code>element</code> with values of a DER encoding -string. The structure must just be created with function -<code>asn1_create_element()</code> . -</p> -<p>Note that the * <code>element</code> variable is provided as a pointer for -historical reasons. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if DER encoding OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if <code>ELEMENT</code> is <code>NULL</code> , and <code>ASN1_TAG_ERROR</code> or -<code>ASN1_DER_ERROR</code> if the der encoding doesn’t match the structure -name (* <code>ELEMENT</code> deleted). -</p></dd></dl> - -<a name="asn1_005fder_005fdecoding_005felement-1"></a> -<h4 class="subheading">asn1_der_decoding_element</h4> -<a name="asn1_005fder_005fdecoding_005felement"></a><dl> -<dt><a name="index-asn1_005fder_005fdecoding_005felement"></a>Function: <em>int</em> <strong>asn1_der_decoding_element</strong> <em>(asn1_node * <var>structure</var>, const char * <var>elementName</var>, const void * <var>ider</var>, int <var>len</var>, char * <var>errorDescription</var>)</em></dt> -<dd><p><var>structure</var>: pointer to an ASN1 structure -</p> -<p><var>elementName</var>: name of the element to fill -</p> -<p><var>ider</var>: vector that contains the DER encoding of the whole structure. -</p> -<p><var>len</var>: number of bytes of *der: der[0]..der[len-1] -</p> -<p><var>errorDescription</var>: null-terminated string contains details when an -error occurred. -</p> -<p>Fill the element named <code>ELEMENTNAME</code> with values of a DER encoding -string. The structure must just be created with function -<code>asn1_create_element()</code> . The DER vector must contain the encoding -string of the whole <code>STRUCTURE</code> . If an error occurs during the -decoding procedure, the * <code>STRUCTURE</code> is deleted and set equal to -<code>NULL</code> . -</p> -<p>This function is deprecated and may just be an alias to asn1_der_decoding -in future versions. Use <code>asn1_der_decoding()</code> instead. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if DER encoding OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if ELEMENT is <code>NULL</code> or <code>elementName</code> == NULL, and -<code>ASN1_TAG_ERROR</code> or <code>ASN1_DER_ERROR</code> if the der encoding doesn’t -match the structure <code>structure</code> (*ELEMENT deleted). -</p></dd></dl> - -<a name="asn1_005fder_005fdecoding_005fstartEnd-1"></a> -<h4 class="subheading">asn1_der_decoding_startEnd</h4> -<a name="asn1_005fder_005fdecoding_005fstartEnd"></a><dl> -<dt><a name="index-asn1_005fder_005fdecoding_005fstartEnd"></a>Function: <em>int</em> <strong>asn1_der_decoding_startEnd</strong> <em>(asn1_node <var>element</var>, const void * <var>ider</var>, int <var>ider_len</var>, const char * <var>name_element</var>, int * <var>start</var>, int * <var>end</var>)</em></dt> -<dd><p><var>element</var>: pointer to an ASN1 element -</p> -<p><var>ider</var>: vector that contains the DER encoding. -</p> -<p><var>ider_len</var>: number of bytes of * <code>ider</code> : <code>ider</code> [0].. <code>ider</code> [len-1] -</p> -<p><var>name_element</var>: an element of NAME structure. -</p> -<p><var>start</var>: the position of the first byte of NAME_ELEMENT decoding -( <code>ider</code> [*start]) -</p> -<p><var>end</var>: the position of the last byte of NAME_ELEMENT decoding -( <code>ider</code> [*end]) -</p> -<p>Find the start and end point of an element in a DER encoding -string. I mean that if you have a der encoding and you have already -used the function <code>asn1_der_decoding()</code> to fill a structure, it may -happen that you want to find the piece of string concerning an -element of the structure. -</p> -<p>One example is the sequence "tbsCertificate" inside an X509 -certificate. -</p> -<p>Note that since libtasn1 3.7 the <code>ider</code> and <code>ider_len</code> parameters -can be omitted, if the element is already decoded using <code>asn1_der_decoding()</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if DER encoding OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if ELEMENT is <code>asn1_node</code> EMPTY or <code>name_element</code> is not a valid -element, <code>ASN1_TAG_ERROR</code> or <code>ASN1_DER_ERROR</code> if the der encoding -doesn’t match the structure ELEMENT. -</p></dd></dl> - -<a name="asn1_005fexpand_005fany_005fdefined_005fby-1"></a> -<h4 class="subheading">asn1_expand_any_defined_by</h4> -<a name="asn1_005fexpand_005fany_005fdefined_005fby"></a><dl> -<dt><a name="index-asn1_005fexpand_005fany_005fdefined_005fby"></a>Function: <em>int</em> <strong>asn1_expand_any_defined_by</strong> <em>(asn1_node <var>definitions</var>, asn1_node * <var>element</var>)</em></dt> -<dd><p><var>definitions</var>: ASN1 definitions -</p> -<p><var>element</var>: pointer to an ASN1 structure -</p> -<p>Expands every "ANY DEFINED BY" element of a structure created from -a DER decoding process (asn1_der_decoding function). The element -ANY must be defined by an OBJECT IDENTIFIER. The type used to -expand the element ANY is the first one following the definition of -the actual value of the OBJECT IDENTIFIER. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if Substitution OK, <code>ASN1_ERROR_TYPE_ANY</code> if -some "ANY DEFINED BY" element couldn’t be expanded due to a -problem in OBJECT_ID -> TYPE association, or other error codes -depending on DER decoding. -</p></dd></dl> - -<a name="asn1_005fexpand_005foctet_005fstring-1"></a> -<h4 class="subheading">asn1_expand_octet_string</h4> -<a name="asn1_005fexpand_005foctet_005fstring"></a><dl> -<dt><a name="index-asn1_005fexpand_005foctet_005fstring"></a>Function: <em>int</em> <strong>asn1_expand_octet_string</strong> <em>(asn1_node <var>definitions</var>, asn1_node * <var>element</var>, const char * <var>octetName</var>, const char * <var>objectName</var>)</em></dt> -<dd><p><var>definitions</var>: ASN1 definitions -</p> -<p><var>element</var>: pointer to an ASN1 structure -</p> -<p><var>octetName</var>: name of the OCTECT STRING field to expand. -</p> -<p><var>objectName</var>: name of the OBJECT IDENTIFIER field to use to define -the type for expansion. -</p> -<p>Expands an "OCTET STRING" element of a structure created from a DER -decoding process (the <code>asn1_der_decoding()</code> function). The type used -for expansion is the first one following the definition of the -actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if substitution OK, <code>ASN1_ELEMENT_NOT_FOUND</code> -if <code>objectName</code> or <code>octetName</code> are not correct, -<code>ASN1_VALUE_NOT_VALID</code> if it wasn’t possible to find the type to -use for expansion, or other errors depending on DER decoding. -</p></dd></dl> - -<a name="asn1_005fdecode_005fsimple_005fder-1"></a> -<h4 class="subheading">asn1_decode_simple_der</h4> -<a name="asn1_005fdecode_005fsimple_005fder"></a><dl> -<dt><a name="index-asn1_005fdecode_005fsimple_005fder"></a>Function: <em>int</em> <strong>asn1_decode_simple_der</strong> <em>(unsigned int <var>etype</var>, const unsigned char * <var>der</var>, unsigned int <var>_der_len</var>, const unsigned char ** <var>str</var>, unsigned int * <var>str_len</var>)</em></dt> -<dd><p><var>etype</var>: The type of the string to be encoded (ASN1_ETYPE_) -</p> -<p><var>der</var>: the encoded string -</p> -<p><var>_der_len</var>: the bytes of the encoded string -</p> -<p><var>str</var>: a pointer to the data -</p> -<p><var>str_len</var>: the length of the data -</p> -<p>Decodes a simple DER encoded type (e.g. a string, which is not constructed). -The output is a pointer inside the <code>der</code> . -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful or an error value. -</p></dd></dl> - -<a name="asn1_005fdecode_005fsimple_005fber-1"></a> -<h4 class="subheading">asn1_decode_simple_ber</h4> -<a name="asn1_005fdecode_005fsimple_005fber"></a><dl> -<dt><a name="index-asn1_005fdecode_005fsimple_005fber"></a>Function: <em>int</em> <strong>asn1_decode_simple_ber</strong> <em>(unsigned int <var>etype</var>, const unsigned char * <var>der</var>, unsigned int <var>_der_len</var>, unsigned char ** <var>str</var>, unsigned int * <var>str_len</var>, unsigned int * <var>ber_len</var>)</em></dt> -<dd><p><var>etype</var>: The type of the string to be encoded (ASN1_ETYPE_) -</p> -<p><var>der</var>: the encoded string -</p> -<p><var>_der_len</var>: the bytes of the encoded string -</p> -<p><var>str</var>: a pointer to the data -</p> -<p><var>str_len</var>: the length of the data -</p> -<p><var>ber_len</var>: the total length occupied by BER (may be <code>NULL</code> ) -</p> -<p>Decodes a BER encoded type. The output is an allocated value -of the data. This decodes BER STRINGS only. Other types are -decoded as DER. -</p> -<p><strong>Returns:</strong> <code>ASN1_SUCCESS</code> if successful or an error value. -</p></dd></dl> - - -<hr> -<a name="Error-handling-functions"></a> -<div class="header"> -<p> -Next: <a href="#Auxilliary-functions" accesskey="n" rel="next">Auxilliary functions</a>, Previous: <a href="#DER-functions" accesskey="p" rel="prev">DER functions</a>, Up: <a href="#Function-reference" accesskey="u" rel="up">Function reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Error-handling-functions-1"></a> -<h3 class="section">4.4 Error handling functions</h3> - -<a name="asn1_005fperror-1"></a> -<h4 class="subheading">asn1_perror</h4> -<a name="asn1_005fperror"></a><dl> -<dt><a name="index-asn1_005fperror"></a>Function: <em>void</em> <strong>asn1_perror</strong> <em>(int <var>error</var>)</em></dt> -<dd><p><var>error</var>: is an error returned by a libtasn1 function. -</p> -<p>Prints a string to stderr with a description of an error. This -function is like <code>perror()</code> . The only difference is that it accepts -an error returned by a libtasn1 function. -</p> -<p><strong>Since:</strong> 1.6 -</p></dd></dl> - -<a name="asn1_005fstrerror-1"></a> -<h4 class="subheading">asn1_strerror</h4> -<a name="asn1_005fstrerror"></a><dl> -<dt><a name="index-asn1_005fstrerror"></a>Function: <em>const char *</em> <strong>asn1_strerror</strong> <em>(int <var>error</var>)</em></dt> -<dd><p><var>error</var>: is an error returned by a libtasn1 function. -</p> -<p>Returns a string with a description of an error. This function is -similar to strerror. The only difference is that it accepts an -error (number) returned by a libtasn1 function. -</p> -<p><strong>Returns:</strong> Pointer to static zero-terminated string describing error -code. -</p> -<p><strong>Since:</strong> 1.6 -</p></dd></dl> - - -<hr> -<a name="Auxilliary-functions"></a> -<div class="header"> -<p> -Previous: <a href="#Error-handling-functions" accesskey="p" rel="prev">Error handling functions</a>, Up: <a href="#Function-reference" accesskey="u" rel="up">Function reference</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Auxilliary-functions-1"></a> -<h3 class="section">4.5 Auxilliary functions</h3> - -<a name="asn1_005ffind_005fnode-1"></a> -<h4 class="subheading">asn1_find_node</h4> -<a name="asn1_005ffind_005fnode"></a><dl> -<dt><a name="index-asn1_005ffind_005fnode"></a>Function: <em>asn1_node</em> <strong>asn1_find_node</strong> <em>(asn1_node <var>pointer</var>, const char * <var>name</var>)</em></dt> -<dd><p><var>pointer</var>: NODE_ASN element pointer. -</p> -<p><var>name</var>: null terminated string with the element’s name to find. -</p> -<p>Searches for an element called <code>name</code> starting from <code>pointer</code> . The -name is composed by different identifiers separated by dots. When -* <code>pointer</code> has a name, the first identifier must be the name of -* <code>pointer</code> , otherwise it must be the name of one child of * <code>pointer</code> . -</p> -<p><strong>Returns:</strong> the search result, or <code>NULL</code> if not found. -</p></dd></dl> - -<a name="asn1_005fcheck_005fversion-1"></a> -<h4 class="subheading">asn1_check_version</h4> -<a name="asn1_005fcheck_005fversion"></a><dl> -<dt><a name="index-asn1_005fcheck_005fversion"></a>Function: <em>const char *</em> <strong>asn1_check_version</strong> <em>(const char * <var>req_version</var>)</em></dt> -<dd><p><var>req_version</var>: Required version number, or <code>NULL</code> . -</p> -<p>Check that the version of the library is at minimum the -requested one and return the version string; return <code>NULL</code> if the -condition is not satisfied. If a <code>NULL</code> is passed to this function, -no check is done, but the version string is simply returned. -</p> -<p>See <code>ASN1_VERSION</code> for a suitable <code>req_version</code> string. -</p> -<p><strong>Returns:</strong> Version string of run-time library, or <code>NULL</code> if the -run-time library does not meet the required version number. -</p></dd></dl> - - -<hr> -<a name="Copying-Information"></a> -<div class="header"> -<p> -Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Function-reference" accesskey="p" rel="prev">Function reference</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Copying-Information-1"></a> -<h2 class="appendix">Appendix A Copying Information</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="#GNU-Free-Documentation-License" accesskey="1">GNU Free Documentation License</a>:</td><td> </td><td align="left" valign="top">License for copying this manual. -</td></tr> -</table> - -<hr> -<a name="GNU-Free-Documentation-License"></a> -<div class="header"> -<p> -Up: <a href="#Copying-Information" accesskey="u" rel="up">Copying Information</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="GNU-Free-Documentation-License-1"></a> -<h3 class="appendixsec">A.1 GNU Free Documentation License</h3> - -<a name="index-FDL_002c-GNU-Free-Documentation-License"></a> - -<div align="center">Version 1.3, 3 November 2008 -</div> - -<div class="display"> -<pre class="display">Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. -<a href="http://fsf.org/">http://fsf.org/</a> - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -</pre></div> - -<ol start="0"> -<li> PREAMBLE - -<p>The purpose of this License is to make a manual, textbook, or other -functional and useful document <em>free</em> in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. -</p> -<p>This License is a kind of “copyleft”, which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. -</p> -<p>We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. -</p> -</li><li> APPLICABILITY AND DEFINITIONS - -<p>This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The “Document”, below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as “you”. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. -</p> -<p>A “Modified Version” of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. -</p> -<p>A “Secondary Section” is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document’s overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. -</p> -<p>The “Invariant Sections” are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. -</p> -<p>The “Cover Texts” are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. -</p> -<p>A “Transparent” copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not “Transparent” is called “Opaque”. -</p> -<p>Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. -</p> -<p>The “Title Page” means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, “Title Page” means -the text near the most prominent appearance of the work’s title, -preceding the beginning of the body of the text. -</p> -<p>The “publisher” means any person or entity that distributes copies -of the Document to the public. -</p> -<p>A section “Entitled XYZ” means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as “Acknowledgements”, -“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” -of such a section when you modify the Document means that it remains a -section “Entitled XYZ” according to this definition. -</p> -<p>The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. -</p> -</li><li> VERBATIM COPYING - -<p>You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. -</p> -<p>You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -</p> -</li><li> COPYING IN QUANTITY - -<p>If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document’s license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. -</p> -<p>If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. -</p> -<p>If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. -</p> -<p>It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -</p> -</li><li> MODIFICATIONS - -<p>You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: -</p> -<ol type="A" start="1"> -<li> Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -</li><li> List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. - -</li><li> State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -</li><li> Preserve all the copyright notices of the Document. - -</li><li> Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -</li><li> Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -</li><li> Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document’s license notice. - -</li><li> Include an unaltered copy of this License. - -</li><li> Preserve the section Entitled “History”, Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled “History” in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -</li><li> Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the “History” section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -</li><li> For any section Entitled “Acknowledgements” or “Dedications”, Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. - -</li><li> Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -</li><li> Delete any section Entitled “Endorsements”. Such a section -may not be included in the Modified Version. - -</li><li> Do not retitle any existing section to be Entitled “Endorsements” or -to conflict in title with any Invariant Section. - -</li><li> Preserve any Warranty Disclaimers. -</li></ol> - -<p>If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version’s license notice. -These titles must be distinct from any other section titles. -</p> -<p>You may add a section Entitled “Endorsements”, provided it contains -nothing but endorsements of your Modified Version by various -parties—for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. -</p> -<p>You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. -</p> -<p>The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -</p> -</li><li> COMBINING DOCUMENTS - -<p>You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. -</p> -<p>The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. -</p> -<p>In the combination, you must combine any sections Entitled “History” -in the various original documents, forming one section Entitled -“History”; likewise combine any sections Entitled “Acknowledgements”, -and any sections Entitled “Dedications”. You must delete all -sections Entitled “Endorsements.” -</p> -</li><li> COLLECTIONS OF DOCUMENTS - -<p>You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. -</p> -<p>You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -</p> -</li><li> AGGREGATION WITH INDEPENDENT WORKS - -<p>A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an “aggregate” if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation’s users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. -</p> -<p>If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document’s Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. -</p> -</li><li> TRANSLATION - -<p>Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. -</p> -<p>If a section in the Document is Entitled “Acknowledgements”, -“Dedications”, or “History”, the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. -</p> -</li><li> TERMINATION - -<p>You may not copy, modify, sublicense, or distribute the Document -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense, or distribute it is void, and -will automatically terminate your rights under this License. -</p> -<p>However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. -</p> -<p>Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. -</p> -<p>Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, receipt of a copy of some or all of the same material does -not give you any rights to use it. -</p> -</li><li> FUTURE REVISIONS OF THIS LICENSE - -<p>The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>. -</p> -<p>Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License “or any later version” applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. If the Document -specifies that a proxy can decide which future versions of this -License can be used, that proxy’s public statement of acceptance of a -version permanently authorizes you to choose that version for the -Document. -</p> -</li><li> RELICENSING - -<p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any -World Wide Web server that publishes copyrightable works and also -provides prominent facilities for anybody to edit those works. A -public wiki that anybody can edit is an example of such a server. A -“Massive Multiauthor Collaboration” (or “MMC”) contained in the -site means any set of copyrightable works thus published on the MMC -site. -</p> -<p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 -license published by Creative Commons Corporation, a not-for-profit -corporation with a principal place of business in San Francisco, -California, as well as future copyleft versions of that license -published by that same organization. -</p> -<p>“Incorporate” means to publish or republish a Document, in whole or -in part, as part of another Document. -</p> -<p>An MMC is “eligible for relicensing” if it is licensed under this -License, and if all works that were first published under this License -somewhere other than this MMC, and subsequently incorporated in whole -or in part into the MMC, (1) had no cover texts or invariant sections, -and (2) were thus incorporated prior to November 1, 2008. -</p> -<p>The operator of an MMC Site may republish an MMC contained in the site -under CC-BY-SA on the same site at any time before August 1, 2009, -provided the MMC is eligible for relicensing. -</p> -</li></ol> - -<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a> -<h3 class="heading">ADDENDUM: How to use this License for your documents</h3> - -<p>To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: -</p> -<div class="smallexample"> -<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.3 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover - Texts. A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -</pre></div> - -<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the “with…Texts.” line with this: -</p> -<div class="smallexample"> -<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with - the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts - being <var>list</var>. -</pre></div> - -<p>If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. -</p> -<p>If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. -</p> - -<hr> -<a name="Concept-Index"></a> -<div class="header"> -<p> -Next: <a href="#Function-and-Data-Index" accesskey="n" rel="next">Function and Data Index</a>, Previous: <a href="#Copying-Information" accesskey="p" rel="prev">Copying Information</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Concept-Index-1"></a> -<h2 class="unnumbered">Concept Index</h2> - -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a> - -</td></tr></table> -<table class="index-cp" border="0"> -<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-A">A</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-ASN_002e1-schema">ASN.1 schema</a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-syntax">ASN.1 syntax</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1Coding-program">asn1Coding program</a>:</td><td> </td><td valign="top"><a href="#Invoking-asn1Coding">Invoking asn1Coding</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1Decoding-program">asn1Decoding program</a>:</td><td> </td><td valign="top"><a href="#Invoking-asn1Decoding">Invoking asn1Decoding</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1Parser-program">asn1Parser program</a>:</td><td> </td><td valign="top"><a href="#Invoking-asn1Parser">Invoking asn1Parser</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-FDL_002c-GNU-Free-Documentation-License">FDL, GNU Free Documentation License</a>:</td><td> </td><td valign="top"><a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-Future-developments">Future developments</a>:</td><td> </td><td valign="top"><a href="#Future-developments">Future developments</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-H">H</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-Header-file-libtasn1_002eh">Header file libtasn1.h</a>:</td><td> </td><td valign="top"><a href="#Library-Notes">Library Notes</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-Main-type-asn1_005fnode">Main type asn1_node</a>:</td><td> </td><td valign="top"><a href="#Library-Notes">Library Notes</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-Porting">Porting</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-S">S</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-Supported-ASN_002e1-types_002c-list-of">Supported ASN.1 types, list of</a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-syntax">ASN.1 syntax</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Concept-Index_cp_letter-T">T</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-threads">threads</a>:</td><td> </td><td valign="top"><a href="#Introduction">Introduction</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -</table> -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a> - -<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a> - -</td></tr></table> - -<hr> -<a name="Function-and-Data-Index"></a> -<div class="header"> -<p> -Previous: <a href="#Concept-Index" accesskey="p" rel="prev">Concept Index</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p> -</div> -<a name="Function-and-Data-Index-1"></a> -<h2 class="unnumbered">Function and Data Index</h2> - -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Function-and-Data-Index_fn_letter-A"><b>A</b></a> - -</td></tr></table> -<table class="index-fn" border="0"> -<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr> -<tr><td colspan="4"> <hr></td></tr> -<tr><th><a name="Function-and-Data-Index_fn_letter-A">A</a></th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005farray2tree"><code>asn1_array2tree</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fbit_005fder"><code>asn1_bit_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fcheck_005fversion"><code>asn1_check_version</code></a>:</td><td> </td><td valign="top"><a href="#Auxilliary-functions">Auxilliary functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fcopy_005fnode"><code>asn1_copy_node</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fcreate_005felement"><code>asn1_create_element</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdecode_005fsimple_005fber"><code>asn1_decode_simple_ber</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdecode_005fsimple_005fder"><code>asn1_decode_simple_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdelete_005felement"><code>asn1_delete_element</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdelete_005fstructure"><code>asn1_delete_structure</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdelete_005fstructure2"><code>asn1_delete_structure2</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fder_005fcoding"><code>asn1_der_coding</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fder_005fdecoding"><code>asn1_der_decoding</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fder_005fdecoding2"><code>asn1_der_decoding2</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fder_005fdecoding_005felement"><code>asn1_der_decoding_element</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fder_005fdecoding_005fstartEnd"><code>asn1_der_decoding_startEnd</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fdup_005fnode"><code>asn1_dup_node</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fencode_005fsimple_005fder"><code>asn1_encode_simple_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fexpand_005fany_005fdefined_005fby"><code>asn1_expand_any_defined_by</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fexpand_005foctet_005fstring"><code>asn1_expand_octet_string</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005ffind_005fnode"><code>asn1_find_node</code></a>:</td><td> </td><td valign="top"><a href="#Auxilliary-functions">Auxilliary functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005ffind_005fstructure_005ffrom_005foid"><code>asn1_find_structure_from_oid</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005fbit_005fder"><code>asn1_get_bit_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005flength_005fber"><code>asn1_get_length_ber</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005flength_005fder"><code>asn1_get_length_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005fobject_005fid_005fder"><code>asn1_get_object_id_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005foctet_005fder"><code>asn1_get_octet_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fget_005ftag_005fder"><code>asn1_get_tag_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005flength_005fder"><code>asn1_length_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fnumber_005fof_005felements"><code>asn1_number_of_elements</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005foctet_005fder"><code>asn1_octet_der</code></a>:</td><td> </td><td valign="top"><a href="#DER-functions">DER functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fparser2array"><code>asn1_parser2array</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-schema-functions">ASN.1 schema functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fparser2tree"><code>asn1_parser2tree</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-schema-functions">ASN.1 schema functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fperror"><code>asn1_perror</code></a>:</td><td> </td><td valign="top"><a href="#Error-handling-functions">Error handling functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fprint_005fstructure"><code>asn1_print_structure</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fread_005fnode_005fvalue"><code>asn1_read_node_value</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fread_005ftag"><code>asn1_read_tag</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fread_005fvalue"><code>asn1_read_value</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fread_005fvalue_005ftype"><code>asn1_read_value_type</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fstrerror"><code>asn1_strerror</code></a>:</td><td> </td><td valign="top"><a href="#Error-handling-functions">Error handling functions</a></td></tr> -<tr><td></td><td valign="top"><a href="#index-asn1_005fwrite_005fvalue"><code>asn1_write_value</code></a>:</td><td> </td><td valign="top"><a href="#ASN_002e1-field-functions">ASN.1 field functions</a></td></tr> -<tr><td colspan="4"> <hr></td></tr> -</table> -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Function-and-Data-Index_fn_letter-A"><b>A</b></a> - -</td></tr></table> - -<hr> - - - -</body> -</html> diff --git a/doc/libtasn1.info b/doc/libtasn1.info index 8f0aa76..7766aa5 100644 --- a/doc/libtasn1.info +++ b/doc/libtasn1.info @@ -1,11 +1,11 @@ -This is libtasn1.info, produced by makeinfo version 6.5 from +This is libtasn1.info, produced by makeinfo version 6.7 from libtasn1.texi. -This manual is for GNU Libtasn1 (version 4.14, 29 March 2019), which is -a library for Abstract Syntax Notation One (ASN.1) and Distinguished +This manual is for GNU Libtasn1 (version 4.19.0, 18 August 2022), which +is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. - Copyright (C) 2001-2019 Free Software Foundation, Inc. + Copyright (C) 2001-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -24,11 +24,11 @@ File: libtasn1.info, Node: Top, Next: Introduction, Up: (dir) Libtasn1 ******** -This manual is for GNU Libtasn1 (version 4.14, 29 March 2019), which is -a library for Abstract Syntax Notation One (ASN.1) and Distinguished +This manual is for GNU Libtasn1 (version 4.19.0, 18 August 2022), which +is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. - Copyright (C) 2001-2019 Free Software Foundation, Inc. + Copyright (C) 2001-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -280,14 +280,20 @@ File: libtasn1.info, Node: Invoking asn1Parser, Next: Invoking asn1Coding, Up 'asn1Parser' reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions. -Usage: asn1Parser [options] file +Usage: asn1Parser [OPTION] FILE +Read FILE with ASN.1 definitions and generate +a C array that is used with libtasn1 functions. -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. - -n name : array name. +Mandatory arguments to long options are mandatory for short options too. + -c, --check checks the syntax only + -o, --output=FILE output file + -n, --name=NAME array name + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> File: libtasn1.info, Node: Invoking asn1Coding, Next: Invoking asn1Decoding, Prev: Invoking asn1Parser, Up: Utilities @@ -313,14 +319,19 @@ element itself. (as in the example below.) The output file is a binary file with the DER encoding. -Usage: asn1Coding [options] file1 file2 - file1 : file with ASN1 definitions. - file2 : file with assignments. -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. +Usage: asn1Coding [OPTION] DEFINITIONS ASSIGNMENTS +Generates a DER encoding of ASN.1 DEFINITIONS file +and ASSIGNMENTS file with value assignments. + +Mandatory arguments to long options are mandatory for short options too. + -c, --check checks the syntax only + -o, --output=FILE output file + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> For example, consider an ASN.1 definitions file as follows: @@ -378,14 +389,19 @@ File: libtasn1.info, Node: Invoking asn1Decoding, Prev: Invoking asn1Coding, 'asn1Decoding' generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding. -Usage: asn1Decoding [options] file1 file2 type - file1 : file with ASN1 definitions. - file2 : binary file with a DER encoding. - type : ASN1 definition name. -Options: - -h : shows the help message. - -v : shows version information and exit. - -o file : output file. +Usage: asn1Decoding [OPTION] DEFINITIONS ENCODED ASN1TYPE +Decodes DER data in ENCODED file, for the ASN1TYPE element +described in ASN.1 DEFINITIONS file, and print decoded structures. + + -b, --benchmark perform a benchmark on decoding + -s, --strict use strict DER decoding + -t, --no-time-strict use strict DER decoding but not in time fields + -h, --help display this help and exit + -v, --version output version information and exit + +Report bugs to: help-libtasn1@gnu.org +GNU Libtasn1 home page: <https://www.gnu.org/software/libtasn1/> +General help using GNU software: <https://www.gnu.org/gethelp/> For example, after generating the 'assign.out' file from the example section of the 'asn1Coding' command above, the following invocation will @@ -436,7 +452,7 @@ asn1_parser2tree occurred while opening 'file' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if in the - file there is an identifier whith more than 'ASN1_MAX_NAME_SIZE' + file there is an identifier with more than 'ASN1_MAX_NAME_SIZE' characters. asn1_parser2array @@ -468,7 +484,7 @@ asn1_parser2array occurred while opening 'inputFileName' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if - in the file there is an identifier whith more than + in the file there is an identifier with more than 'ASN1_MAX_NAME_SIZE' characters. @@ -517,7 +533,7 @@ asn1_delete_structure2 unsigned int FLAGS) STRUCTURE: pointer to the structure that you want to delete. - FLAGS: additional flags (see 'ASN1_DELETE_FLAG' ) + FLAGS: additional flags (see 'ASN1_DELETE_FLAG_ZEROIZE' ) Deletes the structure * 'structure' . At the end, * 'structure' is set to NULL. @@ -543,8 +559,8 @@ asn1_delete_element asn1_create_element ------------------- - -- Function: int asn1_create_element (asn1_node DEFINITIONS, const char - * SOURCE_NAME, asn1_node * ELEMENT) + -- Function: int asn1_create_element (asn1_node_const DEFINITIONS, + const char * SOURCE_NAME, asn1_node * ELEMENT) DEFINITIONS: pointer to the structure returned by "parser_asn1" function @@ -564,7 +580,7 @@ asn1_create_element asn1_print_structure -------------------- - -- Function: void asn1_print_structure (FILE * OUT, asn1_node + -- Function: void asn1_print_structure (FILE * OUT, asn1_node_const STRUCTURE, const char * NAME, int MODE) OUT: pointer to the output file (e.g. stdout). @@ -582,8 +598,8 @@ asn1_print_structure asn1_number_of_elements ----------------------- - -- Function: int asn1_number_of_elements (asn1_node ELEMENT, const char - * NAME, int * NUM) + -- Function: int asn1_number_of_elements (asn1_node_const ELEMENT, + const char * NAME, int * NUM) ELEMENT: pointer to the root of an ASN1 structure. NAME: the name of a sub-structure of ROOT. @@ -600,7 +616,7 @@ asn1_number_of_elements asn1_find_structure_from_oid ---------------------------- - -- Function: const char * asn1_find_structure_from_oid (asn1_node + -- Function: const char * asn1_find_structure_from_oid (asn1_node_const DEFINITIONS, const char * OIDVALUE) DEFINITIONS: ASN1 definitions @@ -616,7 +632,7 @@ asn1_copy_node -------------- -- Function: int asn1_copy_node (asn1_node DST, const char * DST_NAME, - asn1_node SRC, const char * SRC_NAME) + asn1_node_const SRC, const char * SRC_NAME) DST: Destination asn1 node. DST_NAME: Field name in destination node. @@ -633,7 +649,7 @@ asn1_copy_node asn1_dup_node ------------- - -- Function: asn1_node asn1_dup_node (asn1_node SRC, const char * + -- Function: asn1_node asn1_dup_node (asn1_node_const SRC, const char * SRC_NAME) SRC: Source asn1 node. @@ -757,8 +773,8 @@ asn1_write_value asn1_read_value --------------- - -- Function: int asn1_read_value (asn1_node ROOT, const char * NAME, - void * IVALUE, int * LEN) + -- Function: int asn1_read_value (asn1_node_const ROOT, const char * + NAME, void * IVALUE, int * LEN) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to @@ -831,8 +847,8 @@ asn1_read_value asn1_read_value_type -------------------- - -- Function: int asn1_read_value_type (asn1_node ROOT, const char * - NAME, void * IVALUE, int * LEN, unsigned int * ETYPE) + -- Function: int asn1_read_value_type (asn1_node_const ROOT, const char + * NAME, void * IVALUE, int * LEN, unsigned int * ETYPE) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to @@ -907,8 +923,8 @@ asn1_read_value_type asn1_read_tag ------------- - -- Function: int asn1_read_tag (asn1_node ROOT, const char * NAME, int - * TAGVALUE, int * CLASSVALUE) + -- Function: int asn1_read_tag (asn1_node_const ROOT, const char * + NAME, int * TAGVALUE, int * CLASSVALUE) ROOT: pointer to a structure NAME: the name of the element inside a structure. @@ -928,7 +944,7 @@ asn1_read_tag asn1_read_node_value -------------------- - -- Function: int asn1_read_node_value (asn1_node NODE, + -- Function: int asn1_read_node_value (asn1_node_const NODE, asn1_data_node_st * DATA) NODE: pointer to a node. @@ -1013,6 +1029,26 @@ asn1_encode_simple_der *Returns:* 'ASN1_SUCCESS' if successful or an error value. +asn1_object_id_der +------------------ + + -- Function: int asn1_object_id_der (const char * STR, unsigned char * + DER, int * DER_LEN, unsigned FLAGS) + STR: An object identifier in numeric, dot format. + + DER: buffer to hold the returned encoding (may be 'NULL' ). + + DER_LEN: initially the size of 'der' ; will hold the final size. + + FLAGS: must be zero + + Creates the DER encoding of the provided object identifier. + + *Returns:* 'ASN1_SUCCESS' if DER encoding was OK, + 'ASN1_VALUE_NOT_VALID' if 'str' is not a valid OID, + 'ASN1_MEM_ERROR' if the 'der' vector isn't big enough and in this + case 'der_len' will contain the length needed. + asn1_bit_der ------------ @@ -1041,8 +1077,8 @@ asn1_bit_der asn1_der_coding --------------- - -- Function: int asn1_der_coding (asn1_node ELEMENT, const char * NAME, - void * IDER, int * LEN, char * ERRORDESCRIPTION) + -- Function: int asn1_der_coding (asn1_node_const ELEMENT, const char * + NAME, void * IDER, int * LEN, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 element NAME: the name of the structure you want to encode (it must be @@ -1329,8 +1365,8 @@ asn1_der_decoding_startEnd asn1_expand_any_defined_by -------------------------- - -- Function: int asn1_expand_any_defined_by (asn1_node DEFINITIONS, - asn1_node * ELEMENT) + -- Function: int asn1_expand_any_defined_by (asn1_node_const + DEFINITIONS, asn1_node * ELEMENT) DEFINITIONS: ASN1 definitions ELEMENT: pointer to an ASN1 structure @@ -1349,7 +1385,7 @@ asn1_expand_any_defined_by asn1_expand_octet_string ------------------------ - -- Function: int asn1_expand_octet_string (asn1_node DEFINITIONS, + -- Function: int asn1_expand_octet_string (asn1_node_const DEFINITIONS, asn1_node * ELEMENT, const char * OCTETNAME, const char * OBJECTNAME) DEFINITIONS: ASN1 definitions @@ -1459,8 +1495,8 @@ File: libtasn1.info, Node: Auxilliary functions, Prev: Error handling function asn1_find_node -------------- - -- Function: asn1_node asn1_find_node (asn1_node POINTER, const char * - NAME) + -- Function: asn1_node asn1_find_node (asn1_node_const POINTER, const + char * NAME) POINTER: NODE_ASN element pointer. NAME: null terminated string with the element's name to find. @@ -2015,44 +2051,45 @@ Function and Data Index * asn1_array2tree: ASN.1 field functions. (line 9) -* asn1_bit_der: DER functions. (line 77) +* asn1_bit_der: DER functions. (line 97) * asn1_check_version: Auxilliary functions. (line 26) * asn1_copy_node: ASN.1 field functions. (line 144) * asn1_create_element: ASN.1 field functions. (line 72) -* asn1_decode_simple_ber: DER functions. (line 457) -* asn1_decode_simple_der: DER functions. (line 436) +* asn1_decode_simple_ber: DER functions. (line 477) +* asn1_decode_simple_der: DER functions. (line 456) * asn1_delete_element: ASN.1 field functions. (line 57) * asn1_delete_structure: ASN.1 field functions. (line 30) * asn1_delete_structure2: ASN.1 field functions. (line 42) -* asn1_der_coding: DER functions. (line 102) -* asn1_der_decoding: DER functions. (line 290) -* asn1_der_decoding2: DER functions. (line 254) -* asn1_der_decoding_element: DER functions. (line 317) -* asn1_der_decoding_startEnd: DER functions. (line 350) +* asn1_der_coding: DER functions. (line 122) +* asn1_der_decoding: DER functions. (line 310) +* asn1_der_decoding2: DER functions. (line 274) +* asn1_der_decoding_element: DER functions. (line 337) +* asn1_der_decoding_startEnd: DER functions. (line 370) * asn1_dup_node: ASN.1 field functions. (line 162) * asn1_encode_simple_der: DER functions. (line 51) -* asn1_expand_any_defined_by: DER functions. (line 390) -* asn1_expand_octet_string: DER functions. (line 410) +* asn1_expand_any_defined_by: DER functions. (line 410) +* asn1_expand_octet_string: DER functions. (line 430) * asn1_find_node: Auxilliary functions. (line 9) * asn1_find_structure_from_oid: ASN.1 field functions. (line 129) -* asn1_get_bit_der: DER functions. (line 232) -* asn1_get_length_ber: DER functions. (line 166) -* asn1_get_length_der: DER functions. (line 130) -* asn1_get_object_id_der: DER functions. (line 212) -* asn1_get_octet_der: DER functions. (line 186) -* asn1_get_tag_der: DER functions. (line 147) +* asn1_get_bit_der: DER functions. (line 252) +* asn1_get_length_ber: DER functions. (line 186) +* asn1_get_length_der: DER functions. (line 150) +* asn1_get_object_id_der: DER functions. (line 232) +* asn1_get_octet_der: DER functions. (line 206) +* asn1_get_tag_der: DER functions. (line 167) * asn1_length_der: DER functions. (line 9) * asn1_number_of_elements: ASN.1 field functions. (line 111) +* asn1_object_id_der: DER functions. (line 77) * asn1_octet_der: DER functions. (line 27) * asn1_parser2array: ASN.1 schema functions. (line 35) @@ -2078,67 +2115,73 @@ Function and Data Index Tag Table: -Node: Top863 -Node: Introduction1855 -Node: ASN.1 structure handling3224 -Node: ASN.1 syntax3483 -Node: Naming5071 -Node: Simple parsing6052 -Node: Library Notes6379 -Node: Future developments7161 -Node: Utilities7460 -Node: Invoking asn1Parser7680 -Node: Invoking asn1Coding8142 -Node: Invoking asn1Decoding9879 -Node: Function reference10634 -Node: ASN.1 schema functions10918 -Ref: asn1_parser2tree11117 -Ref: asn1_parser2array12169 -Node: ASN.1 field functions13488 -Ref: asn1_array2tree13705 -Ref: asn1_delete_structure14557 -Ref: asn1_delete_structure214931 -Ref: asn1_delete_element15386 -Ref: asn1_create_element15858 -Ref: asn1_print_structure16512 -Ref: asn1_number_of_elements17141 -Ref: asn1_find_structure_from_oid17736 -Ref: asn1_copy_node18214 -Ref: asn1_dup_node18700 -Ref: asn1_write_value19060 -Ref: asn1_read_value23094 -Ref: asn1_read_value_type26027 -Ref: asn1_read_tag29035 -Ref: asn1_read_node_value29742 -Node: DER functions30088 -Ref: asn1_length_der30291 -Ref: asn1_octet_der30877 -Ref: asn1_encode_simple_der31685 -Ref: asn1_bit_der32515 -Ref: asn1_der_coding33306 -Ref: asn1_get_length_der34329 -Ref: asn1_get_tag_der34869 -Ref: asn1_get_length_ber35431 -Ref: asn1_get_octet_der36024 -Ref: asn1_get_object_id_der36883 -Ref: asn1_get_bit_der37552 -Ref: asn1_der_decoding238225 -Ref: asn1_der_decoding39623 -Ref: asn1_der_decoding_element40562 -Ref: asn1_der_decoding_startEnd41869 -Ref: asn1_expand_any_defined_by43321 -Ref: asn1_expand_octet_string44126 -Ref: asn1_decode_simple_der45127 -Ref: asn1_decode_simple_ber45769 -Node: Error handling functions46470 -Ref: asn1_perror46686 -Ref: asn1_strerror47027 -Node: Auxilliary functions47438 -Ref: asn1_find_node47630 -Ref: asn1_check_version48225 -Node: Copying Information48824 -Node: GNU Free Documentation License49077 -Node: Concept Index74192 -Node: Function and Data Index75298 +Node: Top866 +Node: Introduction1861 +Node: ASN.1 structure handling3230 +Node: ASN.1 syntax3489 +Node: Naming5077 +Node: Simple parsing6058 +Node: Library Notes6385 +Node: Future developments7167 +Node: Utilities7466 +Node: Invoking asn1Parser7686 +Node: Invoking asn1Coding8552 +Node: Invoking asn1Decoding10627 +Node: Function reference11759 +Node: ASN.1 schema functions12043 +Ref: asn1_parser2tree12242 +Ref: asn1_parser2array13293 +Node: ASN.1 field functions14611 +Ref: asn1_array2tree14828 +Ref: asn1_delete_structure15680 +Ref: asn1_delete_structure216054 +Ref: asn1_delete_element16517 +Ref: asn1_create_element16989 +Ref: asn1_print_structure17649 +Ref: asn1_number_of_elements18284 +Ref: asn1_find_structure_from_oid18885 +Ref: asn1_copy_node19369 +Ref: asn1_dup_node19861 +Ref: asn1_write_value20227 +Ref: asn1_read_value24261 +Ref: asn1_read_value_type27200 +Ref: asn1_read_tag30214 +Ref: asn1_read_node_value30927 +Node: DER functions31279 +Ref: asn1_length_der31482 +Ref: asn1_octet_der32068 +Ref: asn1_encode_simple_der32876 +Ref: asn1_object_id_der33718 +Ref: asn1_bit_der34384 +Ref: asn1_der_coding35175 +Ref: asn1_get_length_der36204 +Ref: asn1_get_tag_der36744 +Ref: asn1_get_length_ber37306 +Ref: asn1_get_octet_der37899 +Ref: asn1_get_object_id_der38758 +Ref: asn1_get_bit_der39427 +Ref: asn1_der_decoding240100 +Ref: asn1_der_decoding41498 +Ref: asn1_der_decoding_element42437 +Ref: asn1_der_decoding_startEnd43744 +Ref: asn1_expand_any_defined_by45196 +Ref: asn1_expand_octet_string46007 +Ref: asn1_decode_simple_der47014 +Ref: asn1_decode_simple_ber47656 +Node: Error handling functions48357 +Ref: asn1_perror48573 +Ref: asn1_strerror48914 +Node: Auxilliary functions49325 +Ref: asn1_find_node49517 +Ref: asn1_check_version50118 +Node: Copying Information50717 +Node: GNU Free Documentation License50970 +Node: Concept Index76085 +Node: Function and Data Index77191 End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/doc/libtasn1.pdf b/doc/libtasn1.pdf Binary files differdeleted file mode 100644 index af15f47..0000000 --- a/doc/libtasn1.pdf +++ /dev/null diff --git a/doc/libtasn1.ps b/doc/libtasn1.ps deleted file mode 100644 index b0c8398..0000000 --- a/doc/libtasn1.ps +++ /dev/null @@ -1,8362 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software -%%Title: libtasn1.dvi -%%CreationDate: Fri Jul 19 19:09:57 2019 -%%Pages: 36 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT12 CMSY10 CMMI12 CMMI10 CMTT10 CMSS10 -%%+ CMSL10 CMSLTT10 CMB10 CMTT9 CMR9 CMMI9 -%%DocumentPaperSizes: Letter -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -q -o libtasn1.ps libtasn1.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2019.07.19:2109 -%%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 -/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 -def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}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: CMMI9 -%!PS-AdobeFont-1.0: CMMI9 003.002 -%%Title: CMMI9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9. -% 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/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup -/UniqueID get 5087384 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 /CMMI9 def -/FontBBox {-29 -250 1075 750 }readonly def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def -/FullName (CMMI9) 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 -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB -7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 -7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 -BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 -82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC -E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 -91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E -540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 -7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 -93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D -EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 -972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A -6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 -796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 -DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B -D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 -E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D -0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 -F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 -ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 -72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F -F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 -4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 -692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C -BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 -4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 -CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 -41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A -9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 -5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 -2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 -8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B -33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 -03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 -749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE -CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE -3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F -64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F -90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 -DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 -F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D -4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF -49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 -E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 -58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE -88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 -B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE -7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 -01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 -19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 -194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 -53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 -F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 -412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 -C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC -C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 -4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 -E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 -AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF -00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A -E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 -C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC -B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 -2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 -F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 -0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 -28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 -E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A -C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 -20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B -7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE -5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 -74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 -90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 -3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 -98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 -54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 -93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC -19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A -9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD -E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 -A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB -107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA -5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 -22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 -B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D -403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 -D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 -20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 -943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 -AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F -A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 -B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA -2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 -2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F -E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D -E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F -8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 -87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 -2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 -D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC -512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 -4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 -6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 -9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A -0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 -9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B -FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 -430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 -56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE -718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 -F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE -95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B -EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE -6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 -6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 -630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 -6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA -89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 -3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 -90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 -38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 -EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 -B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 -9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 -1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF -1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C -62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 -84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 -AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 -D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 -BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 -4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 -531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 -FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 -43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 -D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 -0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 -E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 -DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 -99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD -8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 -8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 -A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 -362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 -C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 -E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 -07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F -0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 -190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 -5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D -F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 -005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 -6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C -D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 -F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 -F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE -2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 -F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 -0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD -73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 -62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 -5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 -F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F -6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 -DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 -EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 -E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 -536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 -36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF -B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 -F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 -431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 -5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C -074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 -E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 -2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 -324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F -FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR9 -%!PS-AdobeFont-1.0: CMR9 003.002 -%%Title: CMR9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9. -% 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/CMR9 known{/CMR9 findfont dup/UniqueID known{dup -/UniqueID get 5000792 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 /CMR9 def -/FontBBox {-39 -250 1036 750 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def -/FullName (CMR9) 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 12 /fi put -dup 44 /comma put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 83 /S put -dup 85 /U put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 -15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E -ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 -B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 -85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C -DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 -F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D -2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 -B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 -78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 -E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 -41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 -B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 -55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA -700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 -8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A -F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 -FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 -3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 -B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 -AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 -461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC -CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 -CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C -4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F -291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 -D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 -C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 -D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 -9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 -2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 -A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB -2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E -2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 -AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 -9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB -B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 -0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D -9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B -42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 -C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 -623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 -B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 -E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 -CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D -07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 -53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 -EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 -52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 -F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC -D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 -81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D -B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 -B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A -31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF -E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 -846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 -46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E -44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 -A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A -BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 -1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 -D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 -6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A -E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E -24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E -75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D -EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 -C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 -5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 -099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 -7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE -53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 -7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F -7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C -D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 -CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD -866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B -B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 -ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B -B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 -FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B -40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 -D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 -2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 -39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 -1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 -F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 -253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B -14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 -6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E -E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B -9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E -EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 -FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F -289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 -A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 -5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 -5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 -152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE -67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 -BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 -3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 -713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF -2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 -D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 -6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB -A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 -F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 -26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A -C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 -350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 -70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 -F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 -F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 -9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 -DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 -F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D -064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF -1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 -A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E -E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF -01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C -40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C -72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 -24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 -EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 -D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 -83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 -5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 -1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 -AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC -4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 -7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 -65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 -B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 -FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 -4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 -8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 -1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 -10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B -C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 -8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A -C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 -7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F -852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C -3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 -648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD -855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE -1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C -1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 -B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 -D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 -24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C -552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 -6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 -800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 -6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 -E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 -5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 -00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F -E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 -82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 -6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 -128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D -744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 -84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF -AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 -5D24AB1323A0BDCC0A8FCCAD408E091D37B62D3D1BF8537CFC619A78488DA0CF -87FF97E3181A579D373539E8AFF22856FD03F4C387BA307983EDE87FE0F320FF -41E45F60704B913C7381D84E98411045E4AC9FFDF8168FA2286D8C7EBF681EA8 -787E7960CFCAF502B7A3066310BE7A1159A02F1BF2C5C11A3A9A52E01DE3E108 -8ECF6C9F892370DE073A17C26D92487DC47818C92555B5FA22B8E2D726EBDC07 -7B0E0DBF8060AEAD5106824D748D9C085BAC95E031069395B41D5BB131FCDAFB -5CB678DA317AA3082296487B40E1D4297E22905E096C47A26F4DF5975ED35156 -F33D505FE3ED168177598CA0CE444A03F66032BD7D1C1ACA0EF9FC36C4C9CE25 -C9B1F2420CF9A96365BAA62E2704F2C662090D58BB4E0B099DDB4EEBF8D05F97 -A5CBC658236F5E4D62BAEFB5996AB9E8EC4F4F9AC53FF17CC7A87BF1B8EC4626 -1C500327CCB89B0EB07A9F4903E0C5A5E7370D90B50C010286EB368B0503D038 -A2EF77A39178507E41DBE433DF19D3F69A70793D051F813CD263B5DA690579AC -1789D2D4CA15488F73F1F01CA8FC188FA30CB08809D8228AAC5A10954A6E5471 -F8D84AF40CBD5C92F789EB1742E17D5EF1F7212D71A06BD7091360023093F101 -36EB44A8DE87A4A196B0140641000B445FD8F603A9A7F2C6F77EF6963811F7C9 -15649EE1D81DC3E988A7A797D76DB89758A73428D690AAC6CAF6E216CA40F8C6 -2E05352428D4C5BDF539C8E423815555A1051370EFB3A9606D3D58F46E7D0B97 -CCA0C589D0E36D25CE3938B059FB0E2C8361014B57098F96088C5C98E7AF24CF -F8A8308EA440CD67106B94310E4C81D9D739DF88C655165C148CA55C7A1E2F7E -A6F673ED5F34F1C1D20B609A152EDECFA26875C005B5D3394AFC2E2FC73EC0D8 -693A9561AD2C3F9B9E9C94C53ADDD85AF53C31B80C1B952D9DFDD486216B5470 -4294478B4C661D4A4E9FA155F8AEC542E9824B68E6CE5EA8AC69ADBF68EB3D17 -34B6A9696D4C6CE733DAE0E07696962EED3A3A13C4041ADC5F52005EA6134A66 -F51F736877EF6935620706F1C7F6D4391BBA261C0A456437333F630E77FE0351 -524E0228494AE590925549D708865836B98C22DB4B3DDC0B03B7AC91452ACC9A -A35B5300C6AD185B4115777FF1887C18E2A8D7197B0F7D20C6783F1ACAEF307D -3A3D8A0CA6E668E9686C074CDB097FE2EE3CB1633A72BC1E72A5F984675CA442 -44BE2B6DA017CC81B0402ADB03580FEDC3E27F17BB92A3AF2F2A94D9355ECCF6 -100298E5BEAA35E237A6377AF642F9342CA7B1395A06C40BD8009CC6A8448523 -E4FB6152AB32DC44649E9CA36C02A450B982E0AE37EF099A4DAB23C856C986AD -FEAA0B463EFDF2934B81739E6EE4DAEEF6E7CC0ED6A45B7F628AF18546E746ED -2F6A256953F207A7A6C9DD70F51DDEE2A9AA21F29C260D73AD90ED18C0460515 -0D9B3A9D82BE7DA27A34D0A23A3CAE652858FC87D056998142D7125BCB55D9FF -7B893CC31F7949ADAFA7FD22C8F9537DE6D5AF5C6EA86933F8B05B923630AF9F -932D151B0B3E8667D726E21D32EDD1B93AEA254F7742B0626117F71AD443B5F3 -E244ADDB741168B14285868040702DB2339BF7DF2E553AA9B765C965D6911982 -4B157A2FADC6FD33E9B0E6741B843611735C86E03CCE6750FD21CF6C091DEE5E -FECC8B1D3B1C4B27C8709EECEDE568036854398EB687A52E1E15CCF8481B4169 -D825AAC0866A01B77B5DB834161B4CD9385A5A7186B75648703EB60E90F27338 -24306CE505EBA5B75AE6563CDDAC46DE844726A222F8E7995239C70F9A781725 -9964898D854B87711D7D6290DD4760DBC11157156B0E2E20CEDB0A5814B5BC4F -BD587F14DB25055F0CE7BA4C3F2AD371F10BA0FC4C1BD496258350CDB97056F9 -FCB96071835E56BF1D384A44FB411C043ADC0B94FA3370BE0617216EB4ED64CD -18471A493D5F4CF3863FD2408A3180229FA3AC3AA762A8A88C2E79E277AD698D -2F2FE368F51654EF912AB5C92989675EC9E0A818C9ED94A71DBE46014A352D4D -916368BCB4152454BD9D5DE9D002DEDF2FF6342EA28A436EAFCAF9102A25E5F0 -47CC8473EC2AC8E4B2C2C0E8BF5DBA1C7EEE0BF66C206D543D9F4C412CB128CE -57F60B0D5EF70270B40D4EFDAA421F4059C474F61319A9C0B0BB98EAD3B5ADAB -B830C68513A5DFAAB3A29363889DBA63C13F646A21F005F985B4BAB5F16FED1D -B8A81E4164F827F359A4630C2955964D0D8088408A3E376555159AE9BDA25911 -5AE9A1445AE2A9CA93F73B047C8E669D29DD9BF99B3ECC3B24B56EACBFDD1F93 -A6800310FF9AFEBCB6AF6A97107FBBA08DFB4C48A30C24D13B30CA0BD0790FF3 -8C7BF80A1721B36E82428DA07F52E69E4370442D6C28DE1FC1560CC93DE2B34E -A544E3DA352DEC39D0DD73AE3F8A22299AC83A56F2D0A289D4CFD073A0A3E9C5 -22649BB893E0FDDA363F4543D60590D9CFEDB389FC57DFC352A86FEAB3030F33 -647818D10537C66A0EDFBC956B7448512F12D228F1E6CEDEF1CC8BA5D2CC9FCC -EF56AC106082AFBC7C33AA5AA3A5F74816562B18B15A72DFA22E53AB387F6F55 -81E7A55FC1FF18C49EA9C747626EA2CD8FE45998A2200B201A15701791D5943B -61A6EBC0487B07FF578EE8CD2CE2B4CF0118BC31A1EB064F3BA5770D9D6ABE3B -980FAE493351448D8CEE5D7A01BCE562BF10CD298038522A0D75A6D0B597724C -53AD288C60521B13572393735AC27E705A6BC0BE25ACFA16A3B6075F1D04CDBE -0540416BD8B26A3BB4A9D8774A3000FFA9477E051D943562E3B9EE8911AA8B94 -940E1F4E493CFEE1C6C5D90BD37ADA86614B9AF52CC8105D836ECA2AAF91EDF2 -530F0529C6D8F19269C314967DD567EEA133DF88DB64327D446FF0212FCC07C7 -72ACBC7A0A254BDBC3A08CA81A20CFBB26838AA2828DC8A69C05C8414B8ED70B -75A3E2B72E8591A5E1D5B944B8FFAA59E1742A2AB9401919FCC947F81DFCD331 -BAADEC41BEE83FEB705ACD7E9C0B9BB3F2B0419BD82297251269765F4B620CB9 -036B00E305A703A3AB78546BFE29DEB9BA7B5395D75493A2FF6B8B3B67CF5A07 -0A10EC484D74B359BFB7E71F5BCC1D4FF658FB34C55E5D0338D3FD5F788EFF7C -6425857EA25379430E12F1F63D7640D3C9E38603EBA4A11F13AD42E41F704581 -551DD05C638A30F8B4EBF5F8B6206FCEDFED42B5B689C7F102D9D09F03B04788 -FED13E7CEA6134A544E5DD874C32705EF99EC771C5A5FF2498C0D2C58390930A -96DCC10569F5575CD03C046E071BD75320E0C64AD0D4B6FCD0B228A3128E675B -CC3AD244DC7B873D1DF85F196BFDAE905100C987975A7D8ECDC4BD5FB580D025 -01B3FFC0D277177A27BB43537251C9296C2100009DE18D807EC3D57A1C81A1C8 -7041972DF0A32A0C3A5BC386F71C169A6735162606D251EA7811B893B9A65E87 -0930D2B0F81EE86A3F13BB3679BC7D0EE881D461F04C7090FA5CBAD034A75C78 -C5D044AAEF0554832C59F6FCC0C296BD1117D2ECD7059B975D2BF9BE05E48D4A -02A380C71ADBBCF356F1BCD9A99F64627B7AA7F492E93E4E9A7C6CF85FE63F09 -E6FF5B7F9270933D8B167D25C856339038A338FFB01251F723BE4A8F671A23F8 -31F0CE94575A7CFCFE93A021B1798908F72D1B78654E35D8695DC1904A396C6F -C02C903D5D6BE52687CD39533543DDD22338ED2941F1821F5C3110501B55A71E -F69983E9DA01E7CB967B31A44EF56EEFA5C394C4A1068A4AA40A08EA39FE35B4 -5EAC7164E93F84B80275AD080C4BC34D560FB2B29AE900DACF0DC5184C9235D1 -2BD92B31ED15ED2A6919143453F3ABBF70B5657F1F3BFE97412FB42F70DB3D61 -3DFAA7C0EF9D7FE6A4F783485647EDEF954ECEBFB633E45E6D47290DD967805C -FCA6353D14BED1445083CB2BF453995B6C57D77B763B5C8F93E7FCDC15145F70 -0EDBB5FF2F1ADA0B10453FC4DE754DA25261434EC57D6002846CC79951FBB211 -B0FDFCEE5105C6005EE478E6198A7C06CCD709AC6FA8E54F2432F57EBEF4E658 -C25FF7DAEF0B65EF65424ECDD2BFCD831CC1C3C708FD24BD45BE97A9D4A74F91 -4AF903B8A897B46E14EFFEE5CB7C9CD27B1D311C994524A5D880A4948ACDB3E5 -141A16B5574BDFEA5B172C0C4279189DF348C515DA4426C092F69729A7B17F4C -246163859962178FC305672D6A625DF5B7AB93B1C3BD5A607CA04AF4A1452AC6 -0B8B38C006D1B766B078C4399BF86B2D41574384B1EF37AA1B987124C4587DC9 -6EF5AB8B02585D925DCA1B36148CD513A1B47A3F4272017307BEC08FAEBA3452 -531075B36A05E2FCC900E7ED592B9B8867E0F5F677C72E6CDA1458BC8D05E024 -11323238C0921BAAFD46B87DB328AE59A9095AE876E5C0199FBBC5D697A34E6D -8F20F709F5E94D0E7E2DB8A36F53C74405C7737ECB543FE4C35ACFD212B25492 -3E5DBDA4274C755F56508EF0A00B4A5FB496C4B8D82113B3ADEC9E1AF9AAFC32 -858AC0B6998248ADB0FC3560D0C144D24AF6480C6009EABA9700FB0CB881451A -5DABC2CE6A2B4FD6D138BE6B9248717C6CEB8CE6850CDFC1F666C0202046B6D5 -9407D14D60862AAB2F2A6653DDD05AEBDAC0F9EFB53AA6AD4A5AD9E0A8A41EF1 -A3F9E2683A1F5B987348EBA05647DB91B3D0BC34B0B59C171118DF9BED1F38E9 -8CB8C3F8A586F56F387E2B40A2096C87AD5ED5110064BD1116F753E7C03FB4EA -C8582F2F7DD2C267161103CEFDA79D131D3A632278209CD9D611A4B1A65368BD -534984BD9B8D74D122A08106D8713830B6F303A806CCDC5C88B18C5F92E20B95 -07E0F04AC62E003848EAB97DCDCB43BE9FCC06C8F0CCE00D2297569222B19B8C -2718E26C1F7D57C4B7F4E7B088306BDB1E2C91571B1CF6EE988F155EB2BE1965 -1F646417DA862C48583B395D0122AB642BB6F4DF684FDC70007F7C8E2401F5F8 -1D13ABBCE9E981D46EC65D1F92A3CF1D13DEF2A525B13734F3D60469D57496E1 -4851CBBC9A49408580D718665CD043F39A1F86F8DC6F52C44361FEB0D80E9FEF -F06C758AA6FE965ED042A27A7EDDFA0FF748252068422010F8666F53EF5AF748 -DBAA54405EF9ED986F9F98A54B3325C87A47E1F358D0A8B5BF559B6C775E75F2 -0948B50B3AC74B3F87D65E7EC856C35BC3C3B4C1984F27A79BEF093BF9AB9B98 -EC589A00ACDE0AD5847DCA9DB3621C44403E714C881A05F55D9E7504BBA15ADC -37C89A7BF2A239CB02C17FCC1069527F86261B411A18F36ED64DEC101C35E534 -A809987F682C28DEC6D00A04F0D6AAE12DC5A898D47DF5DBDC11B59C69749E8F -5FB2E5D2F5092361C360752046D9CA4786EF07B4F3942FE255D1ACCB6B3E2088 -1802925738CDBE31550A683D4CFAE8751664506DD9797894FBECF81DDE61106B -A158E0B46CDAAA2F321A1E276835162860FD8B2E0167ABB3C7B3242A800F8407 -26E3D08380D7FB3B9D1D9651CEB60A2FFFC58673064FA240F04D6B7EC86EB4AE -47B0D0FE41D039CFA872E74845BA09C40D5374B218BBEB4C89F92C7B33B529C7 -5081EF37095DECC6BB88A1CC5E64E32A94C5AD2575F952E5E4D97D3CB759D222 -F79AD602DCDD04AC16EF772A99ABDF5832A1E38477E0240682B9E1EC74174B5A -9C9F918669796F583D2CD2453584F42D84CE0DA43179E4FCBEF9071B19F307DB -F44554FE434FABBF6D6D1DB10F7792A060475A9F4D4B16E2C670FB8AEAF8D055 -2973659344D0B7C76FF21D5CB40278DD9210EE8A62634D1CA996BCEE95F77B14 -0C4E1569EABF70176D3D43C75BE31EBB33F6545E3BC85EB688E643A05E6EBD51 -2F997D7955ABFDA3CEECDCD6110C8FAF0383EE50C2F418E45769287BCF153F85 -7ED1B2DDF33065018575FC28B9C746B9A1BDB182D2411CA7442E8B86861DD800 -BDF1D45793F8563A3B559EDBFBE8DBF2232AC8CFEA5B84BA2DA15F7E9B196DC1 -979B4DAEC9A3D28BD9802532D6CED80432EAF850634E90DCD8C431CECDE213D6 -BBBA8143A90227A1169AE78069213C2120B27134C9AA21C64ACF5A1305C03857 -35D640D2E3E08BE86D9700174FAC3AF3C0C401937812E42006EC08E0C71983C7 -0B50F78122A167C5D1632E344FE011B121EEC247CB77165706ECDBA76F11097F -BCA6237820C2E8DF105907B2816CBC970A4777DA8B22278237AE2AEAA7228A93 -AA96C976F5E766053FE61DD832E6F9E4511C67D4FEB20AA5DC6AABED295E8AF8 -747F75C718981EFAD0992618A8926590EB02BABBB1CE8853D7312D81253DA4DD -0550F21FB558BD9405CF0689918BE2927C2F428A324530560B8AD86DAD1DA6BA -7863528F4C7E9F9D92CC3E04E57E1C1B929CAFB9583F7B0C8306FC256F6896B9 -89642D8E61B65DF6CA998E52F826331A363B787F3A532D97DC002BC5B5EF6CA0 -F352C2FF69F7EA510B574DE3E5BDE03FA365C8CBCCC8515766997F821BD4CE85 -282DE60C3A93C153353CA8DA4F7DE805D0B9A2C77183F45B40C62E1E511470A1 -E7645850CD18B3174AC45EDF31FEFB8672E4D6F740674E208AFE9DCDE3BFAB61 -4BE0E6E4ED3B2B1C4617FB6DEF15130C6816AEC54244D0F825C9C7919B5A16B2 -4688B45C5B4B7C48491442C11B86E5E2E94FC7FD8BCC462306FE11E6AD43B431 -FD0A6093386DA78B12DC09B07E68256BA4CA7038E08A15D41EF05EB0D7BB7A01 -6EDF907D9D813FD567AF255F05ADCCC8B197D025B2D2F1B1EE2EAE446B5E210D -28404EB952843FB9902D5EBDB7BC162BF3064606C07AE9435FF315A9DB803AF7 -E0156B7431CFB6995F3FD1586CC5964C5E4E261CFD6FDD2E8EFB29740CFC4BBA -1A6A7E619B6399B99EF06126146DE30FF6814E261B4445E180144BFE7C92181C -6CE7A52756D9482D7AE3F2CF3082BBA123796C7624AC1C793363EF77930044DC -3966389C117E4803DA46D59525CF0DD10E910FEA930952401DEABAB305498FB5 -AF1E8018900D50B6DCBD883DCA94DEFE042CAF00E8C1DC261F4474108F2ACF96 -F4512E7D0362843BFE4EA9F15C5ED3B3C27AA9971D3651DAD1BF0FC339A76B09 -1A5F45459D8CA1285BDDA77A6A59F8D4DD81CD19CDACC7D66FA1841800AD0479 -45D70B2D146D57E765C86612FAFAC2AED07DBF4C7CBB1DDF840363F821869AAB -CD91AC7648A6A898762408FD7A17993C173D78CA38B27E7EE6C7EC1380ADB707 -11C1AB09F03E2DEBAF55968B232F45E4BBF2CCF2DECC0BEA681BFE96A1D3974D -9EA36FA5B00D9E659371593044487E92AEF37474C940B3A4EC26E497B451DEE4 -028CBDFF61EACE96FD74DFD7799F901FD6681B385969BA497133B052A90420F4 -6D0A138EA47833B6FB3501052BAF8A7F3BD62AB4B0ED06A694F778D261BF2215 -A027BED793CE8D4BF9B4DA153813DA70A207EF712534929058372C0BB5B7B516 -20BCD0BFCBC338E8EC70AC841CE44EF460CFA687C3890EA068545A62D8307E6C -7017C6046D1E4C2528C6A99D51528DDCFEC132F4BDBB007E63D4B1F045FAC208 -6C39C9616A63118A600F83AF3FA335889635F7C2751A521806DF8305E220AD26 -3657D3C4DB43B1E6247D0D541CF9FB55D8845DB1B2CEA75DE0899E900A250C43 -2B9104CAF040526F5463BAABDDC9A0222CAB87108415BEEDE2972D7E2720897D -E41E3D806A118BC0FD0356088482ABE043DACD5E0301310BC1047358740E5B10 -C7EFCC8F2DB61273058AAB5173D414C97D3F18701E78C6294BA5A3FE0CAC4003 -86311A6466EAB7ED99EAE360795F32359233F93C017CC318A960BB9162238E2E -2C16BEB936E00FC3AF0C5626AA76470D4B87F921572FABDA2FD810951E80B674 -56928C2140038F0486DAA7874423A738716E882F16A0C72CD2A5DAEA1530FDB1 -736CE88270A96AFA2A1D77B7FD9F64E7D39A78CA88C2846AA558DA3D2595457B -98625043FD6E2F87F71973BB88FF5188EAAAAFDCDC7FC403D5F8BAAD045E888E -03BB9B8F721F003FD3A7EB9FA1AE1761E236E11A7BC3F2E6E100CD3C867682DB -B607F1C0A9A24D5605603C238234DCE8E9460DF420BFE4F6EFC1B982F30B2BBE -ACACC718F5905E49ECB73F52486080CE0E92960347A20F79323A4B2B57AE6706 -299AAF55023204E023B81E79CD86F9FDD780FA60F156096FCAE6AF9A0187C8B4 -4C182DFE94AB6E187CDE6CF2793735F09CB3D135E5237A94CDE9F1A837409E6A -8D790E9EB0994D0118F33AC9E539FE5020361BBE79A5856FB1612A0A5FD3D3B4 -BEF2128F32EF1C3069D2F288B02A8EDF99AF1B34FAB5D0AE271001DF678722D9 -D1A7DF2D0B1BDEA0207D1C9F323059AC25B90A67E7819DEBB54146AEEAEA8D78 -C13C31CEF0422CE6552D78B54BFFE6EC1CD03AAE5C037739E141A7417488EF2D -A8788DF9FE4AC6EC70CA1CB64F4ADF195BE0ACFADDAC1BE579A0750EB17BCC19 -C17BC246CE43A554C1924A1FE6118474F5E10D1C44015586CA8BEEBDC0F200A9 -FD3E1FF666AF6A12122546D21C5C12838BBC40BBC8C445D9C0896A628736C8CE -69EB2A06F9F837E33355B4E1A6B44DAABC209AE0193F4E4637997A1A63D5AAD1 -E9BEE0260AE43ABBFCCB14AC660C0B6FDAC1580E6E0341566467C546AB8A2CE6 -5EE856F6EE9B3F2572B252E2F58D7E82C8991BD4A3B37D200137783CDEF90EFC -552C5FC51193E04DC7E5EC1CC630D7B769CC3FF4836DFCCB3E3B93719807B5A3 -B51D9EF5AC2EAE7115EFA451DD08FAE18C5B8AAC3284605688A6164FF418A02F -FCFD540938705CD0CEF5DEB30B81BDD01ABCAE96EB63E795D84FC9EBBA17674E -6A6158DA99DC7A5759F5DE319DA40429BC877C97B5E78C6A15C1E54512B77D46 -0B42E9E8129E4E97692492BF1A94BDE3A57CEB391A1CD1D8D50EF61CCD0D2834 -6C3A3198B3186005E9D5D2CA887E6126655E28088C7C05863899CFFA4D1FBB47 -2374C66106A32F5A43772B9DB91C55528A720632150EC8B58CD13DB7A9BF2FB9 -10083A86AD68B11955AD3D9291ADD506E6B21FB3228EA524BE3B4AC41C6F090A -0E463B6542FC86AAA3CEB42E4FF1412200E2E174CBE3D9D546FED9617DFE041A -34E94FDF8E3C8C32FDEDB8C7F6588C79C6B68477A595DAC95374EC8AC7FFC386 -1C04A56EE013932A8384C2E5021929EFA2AEE2AF9C62057F93AA2E3BC49F9409 -1D0ED2BF14311BF4EA815F488791752FC3DB0B4846D348EB152E93BB7E46F04A -CE5C794F8CDF58982DAEADCF94BA0240DEB78CB1745D4E4FD8FA3A6C29154F79 -F15B573606740C6266F6078D30B4F040915C802BFEF566834DBF63FE4B1B7700 -B4BEB611795FFDF7E5FEE3F70F27324755168D4543A0FD555BC591B42E157616 -FA03F0131E44FE62766C3759B7F7C48817974466EBD3299F2B88AFC890B725A6 -61519EBDD3CE31CCA4D21FB1F921D0DC6BA4175C227D6D72B876114E0788072E -F6D4094A0174B1B82934A718E8D9B37F8E442754E4A1EA80C3409A76526E0A2B -51F829D97E11B5FE6CC9CF1C0C94CA289B7C1CEAFD0979FB53843B0C9D18C7FC -832166FC861F93C6A863418BD3207182A02B902942694790D71CA71B90A1A328 -155823F2CECB7D3990443253053855FC4DCE8C61157DBFC6C78B5C42471B0D1E -DF2293B64FBB55E646293095899105100A7F7F849568B06FEBEA96BD91A7A642 -D7B1F6A019EB8C7B2E50C20B037EB4C97E39886D1227481BC1CEB3F21BCDEDAA -013921FBA7F4D80160CB66C4263B08C73E677CE284BE8BD96B7A2024601644F8 -B4FCC2C56B788D7E6C5F87AC6B2255D29E4208D87C38C651B9326512BAD326AA -FA7149F925CF2BB661418001956570F4DBBA089679749DC68943AB20BA91C4CC -D9E3738F767B250A325C0954BC076687F2A89FC36898B6BFC56C523D15206884 -8779F53399755CEA73D6B1F7CCDEAD0FFB0289839EADD20F9A8937E75169B4A8 -BE049C4483A1F60EE36F7C966A5553568B412085AAF94AA225405C504ECEF174 -D2C4315A16B23CE9FE2F9A4270E20312B1151B9BAFC3467A635838582634E238 -1294B6A5A3D2EDC0B052942FF75B83723B983B7B3CA88D17BB702CA279BB0D25 -F1A791BE09211C81E7891343B1CF5B9CB33B632E2C3F850A7663B4A2BF606621 -4028DF65A778CA59244EC5E268BCE9F584C75C5858AA0B10F60D31BBCB6E495D -2C4D4EFA7464DA34F991FE6E94ECCB3F324145B2863349C3E259A65D9D838052 -893E380BD4F7E9E6B1EE4C46A8565D920ED2EF8FFEC6C7F8ED70B167C9EBB3C1 -203D0AD10F018AC054B2313E95500964C1DD87CA82AC039F77FEA85192C6520A -89D95FB78786BAF0284277633F5916F6C574821B85A42B4A388855B47ACA6F8A -3C69E72621DB5E4F78E5A61E26F292A198CE0A765A60EDD08C4680C82E711504 -1A70280695130659E002CD94B186C589DB5CA9D03699C12DA3149F1B7E0CC1DC -2B5F405DDC446F0FC5040A9FDA697076B52110B969E4AC1502CB6164CDB3E79E -D19AD4A5EB5087FDAAD2E91399905F36CD9D2DCBE911D0FA0006A8E56295B6CF -6D71FAC5DE577AF9B15853EFC9C7E329A5FA990847FF22874B6D3F5AE1A267CB -C1DC19C8684CF5E9FFCF07C6F3C36DF955C6F90995E189FEDF311D067B660BDB -F5681312548B1A9C6708302087668335B1A9717393DBC4DAD2392B1E2D635AF2 -4063049477529F514823ADE008F70E5A1C27975DC16E4E1D776D3731F018B6B9 -36A513490D47A098FA3E48238EE966FAE16DE1141571C179FB195B588CFD9346 -8C93661136290686445972EEAB3986130293053A42460468F6A1D4A0476E373F -816848147690B16F0DDBE40A33259C4D7BE567B0A30FCDB72656EF3F2C7B0C2A -D9EC1C20313D6EF620D91401ADB127F7A4894A527004DC093DCEEC68C3ECF570 -3946BDA46E157CEAECB18DB9A3BED918A843890DEBD627743ADA0D2BBDADBCEE -CAF875257FD719D2378DA73D40DE69AFFC7DBFEAC22086060EFEBDD8DC4A195C -B61709FB30CF4C49651D4CC0F83CB17A0AA95D0F242A050D0013CC3875C64884 -0A4530E8CAAB0A201AB3972B0A45C88B5D6073D13A15A6D99FF8B74420FA05B8 -3585563E4FDA820469E7DF6968D6E09CE289DA730281797F53EB1B6C1B572D21 -5A86442D6DEDC4BEF7CEB97ACEF89645DCC7895F8F01F8AA5A0D107847158B82 -1E9AA415470666425B8E6412F60A2514E50798C031ADF765AB6A3AE48916BF9D -3749C14C389CC521FF43B4AD2920171E954BD7CC538E073EF067F5520B501EF0 -CBE092670DA7EB95D2AC2F7FD8400B23394D7ECC2B0C7E04245D0EB7BB7DC502 -7CAFE40FDD064F6B7B6CAA32626D035105D493DA5EE537DB279CF85F47A30D9B -7840A7DF5F377054E475779BEAF49D19F0841DFB7178AFD3E78572521C982CE0 -129273B6E82803E411A8EB53D03600046F64FB2D61798E41A46CFC1B7C2DF778 -E1D7630285E8312D454BF3F4A9129D95A19C0ECD7FCAE1455462F81F37FB072A -339ED9F3444DA57DA602078B1532DC4D5AA7067A4970CFDD2070E8213FE5E3D6 -67EAA315D8BE56E77BE27777888845A92C1460A4DA692CAFAC741F7C4F59B835 -F3C999660C6BDEDBBA1035BB798377B1F9AE405FB6001274A1866A0D66461526 -D49EA641CC477097608E13FC6A6F46F2519D728210ECC6C8876590B1B755EC5E -1B8A02F710CCE815099EFE37532A42DBC5C1437E312E1116479CADA52FF0B3D0 -8913EA2BB70DD578B3483E8CD2F5D289B80AEAA0354D3167134DFE93A9595496 -BAC05AD4FB6B336302BB1656B10DDD6A10D40F316D673BEB60662F3AE68851B1 -CCC18ECF887D010FBA58CF22AA18473C5B2A337AD62748428B91478B774C4779 -FA97082369335AAAF1ECD3A844807971D4E9CBB9E8398814EA819ADB3694F13C -C8DEFF8FB3E4BF646CD90E686BE6B841F1FEBA1A9F4BFA56B7DBC76A3C547896 -93C015F4C970D575F7E9C55915294905DE60614B74900B5203794349D4107329 -61B217BC412F8CEAC16E0324C9AA57AE75BEFA4AF93CE7A11C5487054C01ACF1 -897A87E6D388C5BA742C1EFF729289AC6E449DEEB8DF3CF10AE90FBE4927DDC7 -C5FE8744854E4B4D52B0022CF113AB5599770732EBB5A4E51EDB89EF0FB51C5D -102C348E6DB504D8F3E876D76E719B6F03B17F9E256FF016B18D0011AD254A9F -97A57C674CC6B0CB3C18965A9F9AB6B750C5E06E69F6DAF92C8BF3D05C47AB89 -CB70874501FA1E18181D2EC8AFC358576A042AE217FFFE8AB3F9A6DC611998A7 -D39016BD1F19199CE9FC4D564E610898699DCC1E80EFC83D7759FF763BA0185F -84B8D256055F3A7F03DC50F41C46F1217C79B3A58F765DE05A95192FC66E6590 -CCA7E9C35C9C1C064B5C88ED16DE3972A02BDE65A6A1DAA06E1ED260E836B64E -417214564FE1295617A4547151F1EA981F2C8620A50F7DFE356D4A51B0B51A70 -3984A46C75ABEF4DAE9DFCAC0B247327FF58DDC909B413FE613CB5F750879A58 -9031CA9618A49C9E173A8C2DAA71639C1B997CE35446D56D8C974ECE47A66EEB -7D495BB277B0C3082CC2999745F249100925A900C6BE8538654B48627762D9DB -B9D60CBE98DC66BD82E50812C350A1DD233B5345B23A67E7C577911EC54D0353 -8EB7237F6C071BC4BC0FBB4DFE9CFE60047809E1099E6DC69A862CDB347EFE34 -19E54A232BA6BA50D3B719A004D43AD15E0E83C032AD793CD92C6B2168BE3701 -B7CD00CF51DF513D407D8EF2D017D014F6C101ED3060184C51879222847F8559 -6069D748D3A5C4692A5636D13706ED0000D4F0C9175F3E0E628B471A6B895E1F -375034CF93CABA4A5D40F2305FEF8AA9E1F14173D5FCEE27142AFADA5ECD1687 -43ECF7A960A0DF7222C1641C2EEBE02F5E1C7FA688807C0E09E72098B39C0BC3 -819E61685F2A115CBCABBFC82C68A2D816379D463A30A0B395617B423E79DFCC -0DA89AA1CDFD8231BA44C72BA122FAA1EF41279F079D3FD842D3A51E07BEA2B8 -132D14C8B676CCC4B7EE0AAB7B47C952F5B2559C7F1D3462E8A9A108BCD76E8B -C47E564DD731F929606EAE8AED8714D38AA3D9120788E9CA4D1F6897737E013A -846AC95641D8AC8228C871E5347D1ACA6F5F324BE7757ED3D3A5C012D3E85F24 -1ABC609B03D5A6BB7D9CEE401B4F9E219622A376F931DD713DB0043BE5B3E70F -B88626D5FC25E86CD1A4400EEEE3A4683F396D181604242E9A5E28527EA2A2EB -EFB34D5AAA4BC71894F75287B4EE684E5130EE7EF20FD737571C340F7867F9B8 -E24E2C0D1BDD7925CED12DB7A8597E9F67B20A8DF00036DC4C60FFA898D6DF3D -90D75F6416492ECC4B00AA810F44FD40B8F9357B80474D0D68C8C7F2101DDA86 -6553989C836A0E3745042DCD2A47F4B74C983BFF77D70082DD899C7E0C084EC3 -EE2476F5103E4041C79C655AE1F10B6FF35C1CBEEE98080193C4ED852C1090DB -16FD990D8251780586A0DC44F0DB20315629A2A7310FA25AE8A4B9A3841FA7B4 -45D915C9BCCD18661FA3AA20E9B9F4C2CB2D06B8F85C765E1715D85F5CA8827C -BFE55D5E822354B4458886A1C778B2CC57FCF78AC8FD4CD507DB46FB96D45C18 -345B58EB67A6D5CDCE3710EA04F019190F03DF361FC73F5227F23C4D654800F8 -C9FDBAB5DDE070235FC7EA62941A9B9B9FB28266424497F3 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.0: CMSLTT10 003.002 -%%Title: CMSLTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10. -% 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/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000800 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 /CMSLTT10 def -/FontBBox {-20 -233 617 696 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 78 /N put -dup 86 /V put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 -2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 -6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 -979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E -ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF -B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 -A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA -3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F -D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC -6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F -3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C -4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 -DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 -753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 -54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D -107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 -7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 -328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 -85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C -2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 -308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 -CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 -739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 -FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 -F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 -3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A -A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F -55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC -A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB -69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 -82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 -8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 -0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 -0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 -1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 -D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F -B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 -170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 -767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D -EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F -AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 -826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 -8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 -345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE -67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD -802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E -20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 -5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 -0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 -22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC -4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF -CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B -4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 -0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 -220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 -7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 -27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE -B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 -7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 -A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D -45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 -F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 -C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 -AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 -DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 -FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA -997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 -3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A -2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 -31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 -A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 -43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D -4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 -94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E -425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 -FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 -51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 -859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 -E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F -2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 -82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA -22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D -200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 -892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 -0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 -437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 -BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 -E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 -DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 -CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 -80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F -FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA -9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 -031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 -9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 -9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 -4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB -57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B -2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 -0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 -03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 -22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 -06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC -39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD -E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 -A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 -9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 -B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F -79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 -2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 -8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA -1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA -0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 -BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 -312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 -B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F -9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 -A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 -91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F -7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D -78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC -7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 -766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 -016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D -C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 -8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 -E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC -6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 -B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 -44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB -C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE -5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB -42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A -F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 -CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 -9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 -82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 -0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 -F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 -EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA -E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD -D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD -F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F -14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 -BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 -9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 -6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A -6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 -4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE -C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B -A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C -9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 -42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE -7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 -1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D -4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 -CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 -D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 -CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 -0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 -92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 -57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 -5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 -57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 -8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 -C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 -7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 -B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 -EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 -D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 -DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 -F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D -D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 -56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 -46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 -52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA -19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D -465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 -0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE -078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B -DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 -F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525 -EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F -BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9 -50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B -C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985 -328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD -50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693405EF98 -F858322DCEA45E0874C545D25FE1EE28D810BD6419086FF1DC4A62013C0F6D58 -847518074F20001C39224885CC19DB05CF529A5DB077BFA6D5B68BEDC6958D09 -2B365C59D8C3A353A122AECBB827AE42E47EB04249576CE31DE9BCA35D07240A -6F69B89B9935158AEBE8781A899AB3C2BB6A4BC3597095B97C230B79CAC029E4 -78E281C1ED6B5E4225622665362B5762EB6FE519B5E5C50B9C4EF0E260822D33 -30ADFD72E06BE6594F20F246F4ED26D2719CC07E45A8B6475CF5FF3D0FB64AE2 -85C75E0F17689F40DC131C7581765227BEF4C89AB774DEC849A38750054D0B1C -60D4A8EAD48BBA905D2E3EB7B5BD9CADD45307A4A65EC799FE37B08D7C0F8753 -A083B2B87327457BF4547DD1326DFBF51F10D49118E0CF4A1A368E411E2905EC -A093EE2FE4347379DD07F3C1C1DC067D48C136EBE6B99A3805376DED05E1E605 -CC8FFA759ECE4E58E21F258709D239137FFD34EE5EF6E53DAD321EBDC06771FE -3E96FD537BF8EF63366C90BA5E77BB59F8628E300F5E549D119D2DA30879A888 -1F2953B629DD1437A60B3698E3CFDFC1F12E07082902FA3E23167CE7874AAB7F -D2DF50C21055A27666A633B41907307B13BED7C00B2F314DD3D4C33C9306796B -14965F50472541AC8004A51BE2365E6F105067802BDCCB138AA878932142BB7D -7E6E7F299B1AE97D0DBFBE7D75306F4EF9C15263D8CFB802648470153E6B6C71 -9814F6CCBF23D4B1BB058311A786495AAAC92BE050C66C4EAE5357CA21C46557 -4F6B931AA118D2F9B30CB8A8AAC0A2F4E5EDFB7E46F93420962B7532CFE01C89 -13BF1E6F66FC55D4E5E7773E7CB1CE68ED0B9225105133380423B59CA4C446F3 -3AA5CB992D8F62C9AF1FBFE707EBFAE4A2B8A3C2E6E32A03190436B8B75049A9 -6ACEA7BD977E27D1A5F994FA3FC93B647FD4E7A6BFC9C001DE061EBE5BE479CF -FB45E6E44703FC7A2A5AD3DA491F37878AC1105A4916FE24FE41394644CFF58A -E5C3772A1A5ED8A50AFB09808953728BA35BA8BA4CF2DE443BCCB5AC9677B6E9 -C9AB1FEBE847D58B9CEB6C18EC54AEF2AFBF0BE45A90B2D988BD20A5AE0772CD -114A9088BC1284F71DA07AFE82E9D115BB7CC9EE9CA46E866C04BCA817BCAE9F -8DD9956B629A0FB8C5212F0FD468AA3A8C4ADC4959FA3E94667D179EF954D5BB -C82DAADA60D5C9C58CB005FED35FDD27935452BCDCE81F4C3B98EF940BCBD291 -F7136B7389831CF2E7CE5C10B1B5D7A9B1129532B930EFCC77BA2B7334D75ED4 -F55F9E5CF7CA562902C563763D338CAA34CC704C3D371E5AD53EC3337F0477D8 -8350B7C3073DA7F3344F3217512AF40504AAB5346739E0E7F2CCB57BCCBED7E3 -6BC776D0784C9DD9647F402E9016399B8CF71A92D8AA690E4BEDE0FFF8A51EA1 -A850F461F971B568633E754562EDBB4B23707BE8C925BECD39C7961DDFF64558 -B2B2C0E71AE1135DD6F4DDDF11850711AF6E7F2660E1EDB116BF15CA28BC824D -34970D2DC9D52121AD3F31358897A39B8635331AC09EC867FBA3F9B8EA745C16 -3951A6467BB68326D29E9462B3E00EC3C437E4C2F950D9285BE860F3F063372D -71AB40E08B2A39DA0CB4010017532AB5ED5B7E5005F73CF7C089304473C7B94D -68F54D62C50869A61EA34F7C0793BCB0A047DC27F6E6A08F34CFF2C5C31C8637 -0C9C21FE3D93BDBF3C5DDA6BB33B93E01A1522121E6A9D3D5A30D8982878AD27 -22FEB267E82F38623E652700239F117D12A4F6A57387A7A6F7867FFBFD6F0745 -5D0A5B69C7047C7F08C5B83051BC46076FDA4DC828FCD01F9F76B8247B06DB92 -99DAC349332E001332596314FCCA75B8EB22EA2F24C05C2295B2707A8DFA54DC -E09AC95C953AB08B35A89A502C7523B5FC210D980672253E11A903BEA058C778 -F851F4F4EA9917CFA5736FF7991CF9BDA2E3FF6F396DB02436400D00EA29B978 -E067319E3F989D6123FC539444EA1C84B817E30E84F1338C62C45F50BF62C7F9 -ED456A638033EF81DD0BBA0C8C664C6F732F6D1E8DA9A563C95A07DE42FF40A7 -DD9D2CCEBD4490C000F0EB12F9131058F8E35ED3E75CB15305BE17BC97213A82 -552E8231E504B4C96D0B62A991526C61564BC0C951335952AF331B6B201361E1 -A99CBD65AFC99D3F8FD857D3B3A7ED9D9A61325F1ED3BA09E94C0D84DB1E1BD6 -CE76F7E290C5EFB99759F7171682E8697067991036F2CE41D44EF37A879FC326 -F8483AB36A05AB235BC73C9B562429D12DEEF0EF0F204450DF384FE6F132FECB -DEBC4056F0BDE6AF45398C196A0D1E74E0B640519DC092E0DC23347856A38998 -2AC14A6F4793C60A3DD445B0E6C539992653E6DCC949419E5A7ADAB751586033 -D0E0826ED4F0AC5C1285FF7EE091961E2F5DEBF78CCC68FAD7414BB27A01BB46 -D6F315033E9D1B5C038B17340FF0013116A0F2EE8A6589DACA9CDEF0AF6797B6 -02C6DD1D56D3FAC4532CFEAB3CD4D1877FD08A06F70E63CBAD3CD3103454916F -02386321D2756BC346AE3BF1076CB2C1161817012F0DA022523EC4066F8952B5 -503CAF9C6D4C5839A238BCEA65877256A657B4B938612FE40C053824BDBD2C7D -054969AF604A220F45C48A8E10FF6A833992DA54402D26F9996576191E4A0949 -57189E0A91838E035C1E08D2C0AA98F91E6C8F3997FED4723865942ED0FB66D0 -2DD949A5E6BE0BF2425A2EE40FE82849BA632846E486D23A45D581AE87E80705 -4A13EEB693B54413B06B6D4D70643391DEA7CB26D4A48F11C37B545CBF48A9F6 -4386055C383854C299489C5AEAF9C20BF82B43B2C1729ED1AD228EF77B74C346 -B7EC1C36555347A71D1E950E4061CF4F57B52D5AEAEE2760393D4BF3ADC65068 -D5471FD94171E091FEB2DA1294FD7D69CD5B7EAE50BC33FFABAB8184145D5730 -31E689350AA72E7A6D296C3CAA518674965C7EB6E94FC0FDDBD89251272EADA9 -4EF3C3CED3F243B42807EDAAA43111FBD48CC024E5B1B87F4739F68139416A41 -AE5C3F781749969DAF3B72CF046952B88523F298989B3346C1AE94AD4AAF4F0E -D3C4DDD52B0CA3C6DA35457F27213868C696AD6E1AFD51CDAF81FE381B38A34D -5F9D853CE3CA524D14CC686849D6C37EAD53A54EC6DA047919029D315EFE289B -BE7E7DAE27BA0BAA7D24B89697F4DC0545BD063A1C4173A05AF4F329B3BF19D5 -E1C65C375F11903D7CEC079DBE4932C2E3F4214D7F589355434A682BEA16AE5B -4DA87B50BA703761045DD143C23567E6AFD5BBBA8440044C5E32B53890ADC45D -D3989B02908948EC1A2579649FB03D22C4AB42A27F4D3332D85C33FD195FB008 -E03AD14F9B920586B451B78C1DC99CE6AEC69C0166E63672DBF451A7ECAE9856 -BC09494CD1931F0531799050646C346B6EEB42BF2FB9ECFBC57C1B44364331B2 -F09B1EFD9C47D3E0B5612AA08D2EE1EF5D0C174538069B2D200F10ACDB498B4C -39BBEDADDA5972D5599CAA3B4937CC3949D911197D416749D4BF658A16BD6650 -5BA8D329F91A54F29EB0FE77F02F9E5B29FCE6CDA23B11EA992357C27DD0F60C -D1CEDE052067427FFEB2355A428FD236184EBBD212D2E72057CFECA199B56CCF -A3D11C9BDE7206978BF8F0E010B66E9B994FB660B8626AE1D4AF0DEE348DDB39 -1C8B5874A217A15D46BA2724F2EC57391542248EC76E5CA1526BBE460A860EFF -D5A0F3AE40BA877D8204C7B71C9850E97C5AF24CAF551DACCC48CC810042441F -3DC8044D7C1B07DCA7D3C216356F9CFD5A8A35FAAE0FEBF63AE64370BF0BFFBC -55D34224C1DE007D795C197D6C8FBA6512C1FCC26376E3A382218C821E186846 -C7FE3A8A727ED707ECFCAB9AC7528E37054F74B3D128B6106CA55E4977BED82C -0BB77277190789D9E66688AF64A4FEA32E2078271F0A9529E670F857C08AC444 -A46E129DD03D6D6D393D3C2BD8569968D012D1931337359B30580F390575AB79 -34323E6A7CB4C8CFE453AB998F41B1917F0A17BDBE816201D3C21F174A613D96 -6B4A6E0A69379FB841C35BAF6344DD9B068D8509F5CE9165601A5120589A01C5 -D383A5630B2B1E1F086F7D03477EAEC46D47B8FFA41E1070870F50E28BF15780 -31DABC5A352D942C9B322A864785D2966A045612941B7E44A78EF091AAC431F4 -25BBEA6B9029E0003F36A680ECC1AAF8DB13099996238C76E78718CC7EF7E463 -C5CCBEA4D5DC20E92C85D6D9778D393D875B8842CDD13265E7A78843F80CD765 -08938812B40CC6F4AAF3534A10B59A4DF2E0948623454EDC64435BEA8BA56132 -B08848E59699FAD5D15F36192E9EEA91634252F9B59D556354919DC10F63442D -43F386EFA6DDADBA47DA742685E01FE21539EEEDF576DD2BC1FB73806A4D4D6A -A8F5A30411D17C82E6B44B3E7EE398CBBB4C0360339AE40EEA2A22AA7C602BE0 -6FA169982C8A45B9B68C25919F53ED72F09C0A2F67155F6335BCB3EC88BA8904 -4C3C8075B63E979C16BAFC6F8D7965401788AF479E8597E9752D9449B61A71E8 -A2F829656290D8043B2A18F6B94F16544A38C12A4E76AEADDA44BE6804E71CD6 -53C3E906663EA02354E6101C121F5E9A014DC5B820D50325EE5F03714DB8E3C1 -C05C2868CC10EC464F9A0F1D3BF4AA86EAB2C23E319A62EDFB1378A82F0C5EBE -B8383799FD2B99C9DE8528B9C561958C574074F3CAFAAB965694E78CF4DDBFBC -39773428B2EF2ADCB2698209D84A11582A819CACB7F31018B0584710BA6F2A0E -5D02DE49C51BEFE15E670BFFCF0F5AE31E86F2107F4F1DEE7D8F947E7C227524 -B9D626C053FA117B0F1335CF986F5C6525C1B01C1FDED43967E0676C7913EF4E -DEEA1D00618EEBB1B44CDCF95BFEB9314E613625D779BA0FE20A10340656D003 -2E9911A1A12CC2C3EAE3FE5079E59387A78900E104C109CC1E7D42891FD8840A -8904C66B30214E4EF3940E8AD961568827224BFD71E226ABFAB007257452C565 -921410EFAADB9D76DF9D7BF5ED2E4AF9D3CD5BE8C76914BE651306EB1B23EA67 -3F970DD558E29384E92AFF6484337F9389C8F45591A21F039ED138EA38B75F00 -3DB3903C3A09BF1B094F7DD3349855C36184BE2E264401C684A6665F8C59C1A2 -1C3E99CD024B926941D6460CCE5437F49200D91E3C8F57BD541488B73B5CFC2B -F6CE561CB0FAEFB48832390CE49AEA10105AA0EAF2B0081931622DE2F293A8A6 -77127F33D3D77B24CF681A41AB3AF79BE9BCFE4055C5EA87462E71D4BE383DC6 -58A13AFCCB68198EF397FA0F1A7402032ACC91B32DEA2B359E86A04922A7ED1C -393CE21CD818DC8906769289FE37D9B24EE0A930903A2D0C71B041BE16389E3E -E414C0073C39D52EFA64E4BDDB2720FABF5530AEEE989F8917035FA58C3BAF65 -0B053C5408056CF6E282EA0DD44D1E25C9B3E408EE46E615E045B0284B588F71 -264504E87622C1585BCE3B7B1F378391E9CA50FF078439902AAF9096CAC7ABDA -3726965A20A91477777B8718149505C5A0318E978E7FEFF9ECF75D623FD26285 -D3369FBC598BDFD4CB062195714BC11EB27FB0BC937BF8E102D7014B39441A15 -A600D595D21D72FEEAB71FA1DEE8D0B3F4AF0AE89246F6A2E4B56D1A8DEE1A3B -B3C0BBDB16F236FF4DA2291DBDCF610CAFBB3FE3B7988B2D82094D4A752E3CB1 -5841551FE65D4214280B62C1DAF884AE268193D4704A415719DB474685A20094 -B0A7C6537B548355CE366331E34181BC0B9A1993A9B392044D8A69191CB7EEBE -BEEDE6FF0204D02C32D46304B6748F548A21B5665E6C1EBC5132DE625B52F9E8 -5720CCDBDA7CCA8F17E35D4F3CDC7EE8B5A2A101D8F5BC8B9E76623DCFC771CD -510CFAEEB0135C4A645E9B7DF4D2A9FE4E7EE8E39643CD2E31BF0118C7FF3853 -A0FD5CB3D51B6A17DFAA2139293D55CE797AEE9B9B1201D6C076DBEBA7582281 -B7165B4121CEF151406595F7F720AAF34A09DB2A33B5819982A3DA3220BCCB1D -F115F38236365A8BC92FA7607DA6157797EB1D3F307855CC54A94C06ADCF9A4F -DB0453DE9C6AE3BDFAADC171060A99D131C3D1AC071D426878CE2F0F8A507C4F -DA901DEFF10FEAAE4242F39E6E449742CB84EC59D7E5E5E6213BFED114F49818 -8C69FFF4542ED08C7104A2D402CD6EB62A6394DA4E9DF5EEA294F36B3F790CDB -593795EFB453E5146B7E7569848311CC344484375044FC6160D54E86C0ACB8FB -DA3FB4BF1615283B495EAC9A0B5B0FB1D0BD6A2310BFC9A326EBC982FE5EED2D -06B52F1AC50AF1B166860525B639898FE0A87397291B8BB8D7AE2CE1946D21AF -537D7BD873530B8BF512003E272F671E44AE95B81BC578C2408E8614B0778C1E -80270E429954BA23FDAA02D1303049C6EF413F7EE9DAE6BF8F60827A5133E0C1 -904F3D0C0D1DB275E26A1E2282FC976508D9DDA622761BB996DBCA8346F15977 -FE454E3FE9EBD3EFC8D670D7DAB41281A8386896ABEB52C022075E7CAEDEA345 -EEAF8AAA2CBFAED8733E9D26A3DB1EA69B2548C9A0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.0: CMTT9 003.002 -%%Title: CMTT9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9. -% 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/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup -/UniqueID get 5000831 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 /CMTT9 def -/FontBBox {-6 -233 542 698 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 59 /semicolon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 76 /L put -dup 78 /N put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 -42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 -4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 -689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 -0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA -610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 -3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 -C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 -995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE -EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 -2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 -4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC -B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 -D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE -510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 -BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF -93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC -F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 -45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 -4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 -088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 -9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A -09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 -E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C -0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A -FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C -94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 -03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF -409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 -45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 -39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 -58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 -84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A -0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F -F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD -B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD -D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B -3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B -7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D -8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 -712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E -C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 -E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA -A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC -2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 -757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C -54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 -DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 -08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD -6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 -A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 -336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D -E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB -3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A -E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 -1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 -FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 -A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 -465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 -3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 -CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF -573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA -9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D -15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D -D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 -15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 -64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 -D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C -D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 -576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 -ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 -EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC -9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 -3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A -1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD -FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 -C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA -4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 -CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 -3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D -D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 -BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 -1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D -4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 -C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D -80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C -AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 -59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 -3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 -14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 -B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 -F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 -54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 -34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 -825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 -BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 -4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F -66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E -2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF -F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A -1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 -37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 -741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 -39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC -887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 -B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD -15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 -5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 -80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 -A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 -BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 -2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B -B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 -F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B -9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 -CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 -DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 -6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B -7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 -D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B -9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 -EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 -0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 -1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 -85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 -EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F -D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 -E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 -88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 -E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 -01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 -54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A -97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 -B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 -D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 -18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE -A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 -1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 -31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 -408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF -1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E -29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 -BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B -AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 -0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D -99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE -480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC -D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 -FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB -587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 -A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C -C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C -AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D -AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 -48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 -385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 -8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 -4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C -839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C -320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 -7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E -DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D -DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F -461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A -BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 -1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A -3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 -0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 -EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA -AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 -F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 -097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3 -AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B -65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9 -CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14 -87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8 -A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2 -C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC -575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474 -E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC -CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882 -ADAEFB625EA966F3877B3FFEA518B809A4BD1977BF1902EB9F06FBAE30E8932A -D1761807C92594B57F86E1E36BE9027B7D1E0C22A83A2140A91406D0289D3833 -C3361F8882CF720E445B144B633F199BD875EF97202DF88AB3EBA034E510A6A2 -D2F464F6D5AEDC833F8BB9BA74A6679F71D843D6BC4D40FCC68B411224212236 -3B94C160C14C57E0BF68104DF3C99880C25245EC98AE48F71BE243D4278C2B17 -1CAFBE0C365E96559B77E607BFFC6634D03B8E25BDEF3FD2E3D8B66473C7B425 -45A646CF3B68A56D1C64C5456A61E5ACDE212CDF6DCDF6D589049EF6C91C30AA -8556424F309355355EA52E8F7342A91D122FAB2DFFDEAA78506228B49385C05B -08793E912D338712173DD0DB44C7C3281FA3D8B14CBA99A3938B147564342923 -D53A2BF18D334DE5E31659A3434EAC96A8D7B363AAEF5CA4DAE67A27890C07AC -F31A6BA7E4A3C2AF654C025F17FCEBEC864C0A9B7B68571CA56BFA4A249896FD -96BB19B8F250672878B67BA411BBAFE3CBBD940F005DBF32F1D682F487A1D1B0 -854922FF69C8D6600E67142D651192A911ABE2602E5126FFDC351E1845A22D02 -AFC17BAF941906E5F7A3C35D2DAC2A2F1C958E637A0EB5401B195FF1E1908B3C -EE13700E365119C68B8A0C3471D3E7911A6734A678F43E86FC55570385E5E107 -4CD618E7430A92C695F6ABA13A68FC71C573D62F6FEAE12D6C1EEE1F1C424C6B -CFF56BDE7FC34F88A144A62CFCE0D377F8BA416827181FBC7FF8538FA19B1ADA -1A12DAA904DE6087D90A750CF8B76F97E3AE0BE6F65145F7E99F566C8D18F817 -532DDE4EC38F5127D404053F3B6CB4694D9973209533D99DC44948178F9F976B -697A04799D7FCEFB13B347143472353503A3DAC56A753E96F46E1AA1D736D7CC -55E6E80EFF0FDBA4A7728E5B5BE6A98BDB93DF5E27253D9C646B595B0507DE97 -CEE5379120D39CA5F22E3952261C0205AFC2A7AFE07F0D8352072E6455A62FFD -3FBAFB256E0B4288E8F6B724CCB0913026D7B19435183FEB0E7FDB7DA521A9DD -EC933881FABA422199AF4F4FBE7BBF8F89F4733A31CF7814673A4BB142CBF3B1 -987E1BA9A6E3372A3ECC943A373940E4411F69F23477CDB2638C060A96023009 -555378908A27BBB6DA89D5D556A536E38DC41FC66F35EAEC9C948AFB2A826A6A -5E8DE93976448E0DA8C81AC71B78F76FB1B265E446C05DDA5E049298BFE6A4B2 -DE4053742E11EC7FAEB122D6E3E30D91F075B38C7A4D0BBA4BD4EDB637BCAF9C -D2A3E27AFD24071B4CB37722D8027E8604CB80E3EAAF45F7098F730B11016E29 -29E6E8460703BFC901B4314A825C3D1783A46F5947A46CAF30BF4A66C7EA7ACB -A63A3FD2FFD9B7DD4D72EFBD5C0314885AC7EDEC9C04244B07CAFD993B9EF84A -E12A23548EE99CF89A77C5990687BEE34FCEC3EA658448015BC90B0786E5402F -9F432FF356324779145310A982E269789AE091E430A0F4C9F3EF03B93C2220E7 -CB0627B8C4193154081CE3A57E64F659ACE95511BF4FC4D4D4D78A503B68613B -4E6DE03A7EAA69B0C6EF0C08A117D3F1416D077BE519E668A3D7826C924446CE -08FB7DAE6E73301DCEB2312BC57401DB7CB38F2ED4567735C4792DF450C91F28 -35AD53A70F762499AD712984A65BC7561CB0B0E9FFDB1F961284DDF22C42DE23 -9A734C6EF90E453F1721890BA4056EE43FEF8743407CFDC3A4BCBD0D74CFC14B -019585A4E0055F8A79C1ECA2EB40EC0639BEB7F11F82E006C772173319ED3765 -ED20E579EAFED984C0F83C694968E8BE5000C9F9BAF72F24462164578FBE03AF -8779FDB09149BBB336335C58575B0476E8D97D06CFE4F8842348AAE075872F22 -6CE687C9C127C17720B7AB19B734670E7F241D493F71F7F670E3348E205E1243 -18D645C5B19C1F5359CCD9D3E9B5167BDC1FDA655AF47B45A7D15552583AA514 -FFC9A9E84D5D3EAAD53C17F42F650BD3E160635F8A4502F31A8781A72D893AE4 -7E65B5C524F5292E2D6DEC4DEB56BF52D612335401568F3B260DD73FE1E92219 -0F3FCDC127A654E3E258DF662815A673845C91131CBFEB5750A3BA225892FAB5 -2BC7341D758CFFFDD768983EF8CA9082CE935FACA20ADE200C148E4C97A81E45 -BC7C49D180E7640AB9CDEE1D03851AAA9A5DCF5EE98BA5AE501AEB4DD6C188E7 -8917B66C41523220E0722168D50264F000046A23102A0302F68E3A17BB370456 -FECA547897AC46F4E91D7A82401AB537041F144284F8A7AF17B723669E9AC554 -9A0F0874E4C471E01F2D53930493C52FD6C61175A67A4E16EC362B6CC4B242A0 -8AA814B7ECB7FF829F121E9016CD0F9E4DF347D00AA7A30C148BBD5D857E8685 -00B284B3CA2F0DF0E7C5871A1F2107A2AD69517B3DD43591058DD5C628E27073 -BE2A18DF6E768E8E25003F6A06FC0173673209F1DB7794C144466AE8B5E1271D -37E874DCA477D70AAA8100F75425DB765BF94EA131CFE379632CFC31D907DBB7 -9F1C967FF459F490EDA15522E7C6E0399E7B76642DD67B2310987936074617F4 -4750B22CC1BD7AAB80B2C764118F317852B90580C369324CCD3AEC4B62D43004 -1B51981E02DD34A98B01A8508B189DE0C4E83813721D3B34417F63D4A25F640E -D09CAF6958C35F1E1F17F2C846A623002A91B9FC2689D944F1BC4F265F71E3DA -8CE72ADC538ED824DFE439634392FAE73FD525F563158CFC77E0E4F73C6E2297 -D9D1559BCD92805B4C92EEC03B61F313725A14BDB45D923733EE78E33EF3F43F -36DF9D01307833C59F0F385921086E0888A660BA2F78AD31252AF074602AA100 -E149F7EA08A1F6BDC3895AE0090CC1C43545DD9C639FB9B39D52F3AE78BBDFC2 -A25C3AE98BEA9DCA8A4ABE31096CE36CEBE9BE231D7567115FD2FCA246ED3916 -A041B7B38140B3A85C1AAD83A5E7D540F3F5EA71B7D5A60E6B278C981962297A -CE19E330B29652E763300876007240244775D1E3D78A3CA90A2516F68BD02677 -54899B8CDA19653E67C5B7CD73E173E4234F116E85B9FE48C50544A644523FC4 -E7472344E92271838CA7C85A11B028AE10A02771D3ABDEB514123D947859EB2C -AC95A65233B92E29C00FED999E4ABE5470C7F5661A371B7E1D65C57E7951CA42 -89B2D52283208ECB114D13C0049ED6D128750D55D3230DB53DBB5D26DB7D2A6A -1F70AF774E25ACB2037FE312A5EEDC40694A38BAAE1821CE515197F8D950857B -7AB5552C30B3114899951A421299894A07249015D943D128043D14AF40837B48 -14650157A807E412AF4E9009C281AA161FA8EDA7A1B59B6DC8C92056941127DB -8697F91BEA0847DD52FE27EF171DE0B4C6A03AD86C61C8A7D60ABF434FA8C7E1 -BFF12B8B21765D09795176CBCB70BADA370A6D5A6C55DA23C09A23663AD3D4B1 -3BC46E8DD66F74B8A9AC681A443F0341CBBB9920264EA6A1591A69882A46EE26 -0557E482A086AC5AB23B027D10E4B939A109DC2DC98B6A5F9E4CC9EC8D98FD54 -FA9540F5905F03093983FF900088332721E33B06CE903E133CB8FAE79C72284E -05005AD63DF217244278AA0CF5E02E0686857D8DE1F74EFC620F0E2A0CDCEF00 -11D89F33A7CE21672FC42089A81A427AE0806C6E5E5C954D1B5DD54E00FA4CF3 -B628A88CDEA0D61147962F5812837FFE6E7EB6043001B7DD871F4A5FE994CAB2 -3F5088B577B1A80546DCED65F01893D51D2F5BEB330E1A1F7537D07B3E1124A9 -6E8F443034498841EB49E467791ECA165990D265D6B7DCAF0518A659DF3EE073 -01EE946984292152FBF2FD33363E2EC01BD6D0C64FEDF18AF375695080B9A152 -29609B360C1E08E04D685E9FA0238FEFCB44A533B46E69F293CEDB3497A252B1 -B94952182838E0BC28D7BDD56D5285179C325E91B3483F678A6037B67229E55C -C6DB7175994B3B968FBAE1AAD369A61DB153FBD4E85F656E5BA6F47FC3EB9ABD -E877461DA4327359FAEF13F31648A9E2611BA9F8F92C046DB0C790C9BF7190C8 -6664A22A8DCADC378C434E63807051EA2CD0C8A068052DA3532B74BEB7523FCC -3E46B53C228AD100C962BC17C1A6120B22BC9BA7FABCC73C8D853CEAEE0CE4BE -61361522BFB29DAD47D8C63161DD149DB3B4A56F69CE6F06E0B8A0F5C130795C -CC75DE509A39AB65E6E948C57ECAFEFF85E48A33A344BCAC6D2B3A9E147CF412 -44B42D1E1999749013B86A54ADE9F21BB47ED0B9B0FBE6E04862CDF0A6EC36C8 -E278993B652E248FA402C96821FE3B4AA0A36E48897A176E3D7BFB8CAE2FB727 -67F1C9F310EA97B784EE5314972D59E0FB1DFCF1CD627228CBBBB78EA9295DED -3AAA3E0237DE3F86A76AD6814D05355B0296FA57F55855AB17CA33082FC055FF -FD15B98195A545958A1F7695ECE82216010A3B9B9E9F7CC95DB7649D011749B3 -6B21242D5C58C7F627DA1DE432DE5DCB6701AD43BE64ED5E129D654ABE811E2E -A8148D1C87135BCFEB584C62839A13D1C3B9E3AD1B07E8F39852E90DAF725A61 -575F6D0D884A6A362BBDA1C04CBF86CC9B38F248011F18BDF2AD86F59FB9A748 -752D1AD5D0BB7868ED11C7C5A97895502D9955AEEE1273BC97B3585BC8E0F64F -89A91959FE49CFB9E5090AAD27F3C9D9BD15E4CA2DF2F237897CA6945BCB862C -E353B8BE6F2B1D4E1BCF7226494A2F1FB86008FFC8F5F461176B53A7BA4E03C8 -4FA72ECCF1F8919AFD9A7A886AEA9005B14A928D52997A7FA77730B4D1E7D366 -50E80C99E8F04D78099D320F7CC45791FE45F069B794A37F2C4C8E24002D7487 -494C7A1122751CF6ED23C2F991B65861D809E0EBDB71E36408FE840959AEF3E3 -427B1C3FB3F213BCF32528BC101C0BAE5FD1B874189FC51B86E821426F37CD4F -98726B1553178576E8CB2CB6ED773EDD4FF7821A3AA19B5F170E7E0064E2D2ED -F6237CBE00C3B7851102D8287D23926F21977FF11935EE0C1AEACF76159FC031 -1D522D600DEAF60A76C49FAC7EA9FBB25CEAB8EC0E06B55F5502DA23DE3E429E -EE8677FAFA080E9644BF2401599E876B7D6B534A228DD92C137DDA792F24221E -C16A7C5CCD2AB7B9F01C77FC23EB879D0F6023BBF59822DB6AEFFA993CB02BD2 -52214DABC729DA7939DDB909EED4B834E328459CA45AF906012BF058AF847AE0 -18EDF77AA15D12BB3F01449C225613EB5D11D93882F7F05E627E42F2B799BE7D -9249C8F9226E929AE04ED6A51A66D789319721162E127379EE9514AB7A8308E8 -B3EEBA20F0C558EA68068BA71C9CEA158F49C295D5CCB312A6952B49F93BF4BA -0643969797744812290640085654BDAE5E5CE8A78B252ABD6E2E8ADE87DF953A -0EDF7411E58383B6A269D928DD4D3ABB621BB4FEECDD9E84B29452859B60222F -170639491FC6F77F39A256341FD992156CBC45213AEFB43316F2C3E446D7806D -6F56245B738E0F7CD2E1BDF80ACB163D425D05583AE7E7373D687F079F4A28DA -8B6EDBAF5C3C741C2BBB3D33FA4FFD71AE242E52F68B6496AFC50097EF031824 -E7E43BBB6020F93BFD437F06CECF02194A8CB87B2652E97063FECC204E4F0398 -23743A81A2EA02BD016791E99403E67EADA4ECA4490279652933F42857351217 -62118964338C51F534C68B9B9BE719C166AD3AD9ED522514A99C97E8014D5852 -380A81B5890E0A277102130BE0969E6DBC015F676BC0B3B0DE30D07901B10BF9 -45B89F18EE13A0D617FE3ECA8E6EA04652AF6CDC7F009A52B531EA70522CC31E -A0E91B6E9D60EEC4DD7F92B9083C7B019CE01AC885F6B5857AFD4123B1B87E58 -F0A889C898732E0D079184450F12BBCADBB249FB593D81738B8F69DBB5016F60 -3048F5C1D5CA2266259DD2CE37CDE4A7E1633C4D3577E390521F8A8D8BB7F6FA -6063AB1089F18C8E30F87727C4CF78D5C54B0464E17E55C4347AB0EFB810C049 -C2307E4F520110A137DEC343CABC1F642EDDDF233B96AB7F8416676BB32D2479 -65C48F746E7019C839414CEE81A03DC435F10717A85286BBCFEACF24C9A671BD -4820BCBBC896A30DA3450C4F4947CE3A07E717BC789DC4EEF25CE4AD2BEC0411 -FE152A289C1D26C9508D206386B65AA1B2AAC060163819C8496F3609E291FA71 -B29E5A529994FE4956C4EC6FA95AFFDADC2DE58ECF6C6E160D3306B8FD42E398 -4F9C0900EF120203684823BF309F03E23195F2848F51E321DFFD9BC24B6E3BB2 -474C7CA890DE8C0EFDD1085D37FC800173ECC63FAFEAD51B681F964EFDB5C0B2 -7DD7E8EF6F333497B3FEB72FE035324FBBB06E7488441083CBD10F2E6024BD4C -72A0AED77847FBBADCA8B2880D3CC8E04BD1503C70DB1D8DA1C2BE303F0C7CE1 -7673488237350657DE4B7FC9775C13B6231DB84845755755F67D4ABCE6F45658 -E17CE8FAE0CAC26733FDD493E15CF5D1AD5BEFE23D6E1EB335A3706E3A71EB22 -40BAC5D469EEAB3686691127037D50A7B2AFDB496D2B1E9FAC69DC1E83A0D833 -AB839AAEACE34AAA0F4272774E7DDDA88586A381C6133F12A41EE11FDE813E59 -B6E5C3914AFB7F786C39CFA9C5A8E73D49B3511EEE9AEBAEED94B8D559DE5CE9 -CBE6BD710215DB65F041A230740F28BDDB46A89B38AC8767F252ACD1B297EA4C -EE114AAB6EFF10D398CA1B788AE63B672C867474220F6F20FE9F0B1AC1650B2C -EBB80EB68D62024EC5C2124F3607DF8776928BC25867C4730808308FBC326156 -5A99B88CD042F581A389B459A6F8FC484EE8C17DE640C7928A78CFBB9C6104FE -004009DF77FAFE4E1C092F6E5FA048D771D7F25AAC0013D0402A1AFD1E8D0515 -BFDC767DB9BE89407322857519236AEAC3A076CEEEEE7FEECB30B6751EE09E9C -472DBDA84A3D45A6CD9B9E7A29FB31852315389E7038F57923EC9225803A6A68 -7EA2F3EF394AA6CCB8336F34F75E2B5E577A4724663A0A35338A8E95C989B9C7 -CE48B675933214EE6FA7EE94B3249ABCEB5EC75A714C30CB88E27B9752DFD3DD -0CC44FC1E3230D92274E1F35429B377DBE57867A40F37B8B88260C3A72ACDCD2 -C8AEF714124B838C638468A9405C46CB2BE67A118A117FBE0A0CAFD9A36D2882 -516B94676566B98BFA1EF6DB6D7258F9420EF010ACB3DAA97409CB272A60AE22 -0E03F9C40889C514E3A4D1BB3A10A6DCC439EBE37D8C28472060DB405F74E855 -27BAD6D66BFC8CCCA038F5BB9EE0F5F1EECB64311A731EA3A22B52AC2AA9933B -7909A46DC299C3D701527E734C339955325265C0D5A3E30B1506239F803847ED -0ED27F81C1B982FC881769BB5DB178405501DDD2507EE8B038FC9F440E849736 -2CA4A7CA8F25BC2DDB645DC96DA317DE9BA8A2207329D3A722D2D15663E47E19 -13058EAFA7BE4635666070C17BFA087FEE6244495F5E5AA6CA1FF1054215E9CF -AD6160126243C941031D3675B73AB83602B8FD765A81D49A8D7AB9A3D107BAE8 -234D9FDFD2D720C1894FE036D249B7A19165A744F8A5D1C226258F8A6ABE0B3A -65DBB2E761542D20EB327375A1B6738F0814C9273D30863144AF710492D90C61 -6861198193A64E9A6BC1093CFBA2890C4132D1B9F0D133AE52F0B8A39197534B -22BBCF08BCA93A492FA327E92008F42BAC0AD14AF049D2C23CD92D84C9749282 -FD4A491333DCFCE526AA22C2C68C1A85D18199782807725C5D1363A72CEF75BD -1ACFBF1B64590C6A24F09B6D4E0C433C49DC99ABE220361E98D25C594253DD5E -903F487B4C2553F78B70C03B8E3658405FD8427065ACE263AAE8AEF2D92ECFDE -71DF9CB7DD61A9EC5B0AAED868F91423A410527C057D8F543B93DA02F40CE88A -E4F29A755430068AC26CF97EF481B5650AEDE5E6BE6E03AAA2F1BB0D04507028 -26C0166B4F91FADD73BD4C557C2B3BB477B3A73921821A704F18103489109533 -3B7F59422F9FF147EED3FEF9BD2EC6EE9C4305593C5563CB6C400353EF3DF249 -0E9CAB7918B61706BC300A39AEB4650ECCF7A3E9342297E4E6AB177F6CB63BF2 -C33DC31FCA946D8B4D33788CB6C91AACCE90DDF5F1B92DC2E7B2D0E244F3C893 -F37B7E2FFE10EF0D1AD762243840BBC99232B1CAC7A321AF88D2BA62B55E305E -ABF6323CB529D0766E0E8F4230D9EE5BB6863B605A0DF56695C01AE054CCB502 -1905489F1A486FE00B284356D1AB83D27BEEDAAEC8DB318114590D0324755C61 -18521C015B5855F0992792E644D194BB3F52E4679659FC4B8AE383F7EF29ECB9 -6EBEA201A8875DEA6410CCBF09BF050D08182DEB13264F55E0F5FFAC218370E6 -5E9C8AF9E349856AB11D393B583F4FEED6EB4EFF9727084D69977D67EB7B61FB -A79DB726E75FD817270B6CF8C8D0A57A6F83ED03B1D3DE572324E7F4BD4D1B99 -97140FF18BF45B6198202AB9A30DEF4ED9695D5FEC15942FC363E9CDEF782F04 -486F71CE6BFA5E8D53C969065D990700E3485967EC03EFEAF0F479CFFBED405A -2D29B98307EA5D4E2CF536DA21F66A961F9A860EBA38B51EF6A106E009DCF099 -B0A2DB3D768850526B90ACE82FB6589D3459351DF1CD37F9CFA174D2F9597A50 -C1033304D971EC0C2314B2AF3E665DF1B53F751E913CB5D4808501B507059879 -769E3ADCC2D8E3875C7D6EF7E7CB48DD07E2F0B415E869D196B6D0B8B80023C5 -7501F75710AF487BD35DBC56BEA988EFB72A60D37DDB34A3E16E4C3302041FED -F67725B1E85AA62C438D812902CD301CD6B0711356956B3EE81244634ACFE99B -695465D6249EA7D73F0530B7A5C6C321E52608C33699498800E0B496288D2C91 -F85FE65F17A7127E7B24B965CA8901ACBADEEAC73A7DE07B53966F0A5D857486 -674B6BD44831C3DA3914E72DB66AC7F1F7553DD8F8125779348ACB28B313A5EC -BFD42000EC537ECF0A191364CEE8F7557697852610AF5C00EC2E23DF58BDC5B4 -D7238CF054E0019259CFF06D29A7045757429F71ED61743C71A6CD09D0CC9DA9 -289B1C880D8E07C79E66FFB61682EB3162821C9DD3161EEB998269A42D64A160 -9E07F3D060E6D9055636B786218A103F8ECEE20933D1233FBFF0ECF9F01BAF09 -560441BB6A0B6931192496CF3485BEC03F10581B3C8936A6C3BB0C3D4AF346BB -0FF8AC37DDAE5D82561F31DEA6107119F89EC25056E7FD5984EA349407EBE597 -BD71E2EE4E8034690BF158D2EECE68EA603FAD5E0258CE2084F898D7C7CE7625 -3D8990CAAAF8A87C730FCF7D9DA3E5991545CF680CE9CFF96FF99F2660E2164E -44AF04EF697F3F3FC8940BCA00A526D8AB419FF20FE6A0A007301F9AEA8324FB -5B069EDB2AAC535F5489F723BA457401417A63CC98BBC70C26FCE973F4AFF4DD -B3F3CF7AAD27AACB8C23D7E421D512A82259212FBA5D6DE572A40D04BB05D470 -EDB61AE5E4358F11D3FE840D24AC2D9CE4F91B3B9A357CBC8DFAFC8A0776DF14 -32A016B0D5F8226A7F3FE390001BC336024657D1F7151DF5098030553D71F87B -6A5C46D286D0AA3E946538ECD82EDAAF2C6B608041945232E52E27DE9928875F -D2406BA32126FCC92FCA719DCFFA13CDF0367E294AE6A4DAE01CC1D70E59AFBF -EAC961C6B3F63F3696FE3105F7980D24AD4F14BF7F35F84674AD400A94BE2A02 -9F243BE2AEDB5AA8BDC1A3FD5371E265149C110754A70412B068828C611EA981 -2907E87A12DEE88636F904F865C6CA994C0D139AAEEC147A2ED1955F527A7230 -51D5266D8C7CD0A1C1A9EA24CF1E65BCE6EBE21E04D7C94B0FF6DCE002F05BCE -1FDFF4F6BB1C72A49CE1A78A2916382D3DFD5A8A9E6D27C170D1626B702231BB -9921646CD185E87A367BDDB9DDC2F2239F3CBFAA9B73DDBFB2E5A6EBDCB0902E -CD432D6171B96245102B362BB07BC33B677CD115B309E98C35E02A515BF3B651 -99789B6B3C8E81C983D1AC9B9E53F4B3BB0AF40D3861C206272B07433C091734 -8123BF670D0BD74E04131F26C7BE882288C3700D0C3E804C23843BBB689CEE18 -40BF8DE4C4A90327099E286377892C3BF307240D0012C3BF05551B1D66F57F6E -D5409CF3C82F5AFFD40FD83C998626CBB46EB5B53317DB98C7D4C08F230DC51B -393211EB6B -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMB10 -%!PS-AdobeFont-1.0: CMB10 003.002 -%%Title: CMB10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMB10. -% 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/CMB10 known{/CMB10 findfont dup/UniqueID known{dup -/UniqueID get 5000761 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 /CMB10 def -/FontBBox {-62 -250 1011 750 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMB10.) readonly def -/FullName (CMB10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) 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 58 /colon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 89 /Y put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF -3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5 -F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2 -E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7 -70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B -DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224 -617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723 -7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46 -0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A -014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C -9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0 -1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77 -7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7 -04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693 -A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35 -5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713 -F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A -4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F -72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE -23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4 -BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA -547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B -69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C -0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93 -00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97 -EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695 -56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09 -55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C -9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998 -DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334 -83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB -F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D -68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953 -44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4 -3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16 -71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A -8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B -92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1 -06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6 -3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33 -7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9 -FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41 -F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC -4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C -AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB -B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B -5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9 -14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C -10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1 -D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D -430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE -C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182 -CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1 -E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C -583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B -B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229 -50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF -BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C -FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632 -33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E -86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4 -2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF -F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919 -960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC -6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D -B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278 -DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84 -674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC -C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363 -E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6 -9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B -7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC -31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA -5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32 -D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89 -EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF -95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5 -A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8 -AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF -3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE -7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666 -05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466 -40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1 -669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31 -74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5 -9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533 -839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47 -B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615 -30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29 -335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4 -EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15 -E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814 -F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F -1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5 -09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9 -68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839 -C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE -28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6 -2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F -C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D -8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B -8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3 -2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676 -34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8 -A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41 -4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877 -C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B -FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB -F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B -6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269 -7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6 -35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3 -71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4 -FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4 -53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35 -F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37 -89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C -DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2 -ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A -9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E -3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A -784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6 -3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E -2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10 -620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E -86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212 -3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF -98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B -1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6 -CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A -2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6 -DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A -BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C -180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0 -86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13 -708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A -7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302 -987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3 -1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33 -01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B -A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2 -424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4 -90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168 -FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA -CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3 -D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1 -D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9 -A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92 -63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E -B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2 -32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082 -730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968 -B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5 -5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938 -50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2 -E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39 -2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D -1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478 -9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A -CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076 -6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0 -ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750 -32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90 -9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF -770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C -D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9 -AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19 -FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0 -4595590B2DAEF5F3CCACE8AD4CE8585DF4099665B05B32FC49160ED307573D18 -6C4D88C07CCD1BD4A0179BDDE6524D8CC9A70318578646EE6F4DE040C56C90C3 -C5C5827A77DB584E95F55F083D07AF133B31DB611D1831D93180F66A13E86AAD -573C57B42DA521764563F69E7D4E26057622C17A135716EBB2552F644065C733 -451295216950B589D09E00FE06779D50AA82A4653649B7CDCA11A1FF27AFA7FF -189A798A6DD355CE23F77BF90DD88672ED1AE3C262A2071CD9E6E8710E44EA18 -8EAF3FC2FD7A203792FD5A925E03F5FDF5FC3C0D975724B9C0EB5891CFFFAAF7 -AC4180C714BFB1BC100B055AEC13D255FDD48CDE21EFBBE6A2A5CCC75DEAEB75 -CA1B5C649CF209DAF2ED786DC4D0E02F1AEFAA8A7B2B96971E35DE1AEB60A50B -B4E5B18753CB1E6E18FD08BF00E01DB6497645F29D666701A930476B878C7843 -D729490D64FDFA946762B2F71AFD7E3CD2A7B155D6445774A471A84FD5CDEF48 -1419EBD5CA76742B84B005FD3D7F5D0A202078C60A3EB61C7968C12BA1B1CF83 -9535A9996D9C9D14CC9FDC101E93F5F396F67B8A4FE51072EE7DA28E3906583F -35CAED5618F0ABFE7D3672D76A7449C08F9792974A8C1C2622D70DE226150B34 -53837D484381789D8673CF3AFF90F47A05693636793248CA1D44B3B6A5E028BE -269547F702CA435816F1BDB39AE1149875B161BCE0DB75DE95DA1BE70A2C366E -E11B1A869ABBA393582BD97E050E901F9B23C20748D834ECB5FE32E06EDA2F60 -595AF15003353C011562E3889E1BF4E13D3DE9C58589B532070BDA0F3A7BEDD2 -12A036F88C7D30144D5D1C9A3B81501477D400D1EE712655165161D835442623 -DD542F2ABBB0A78F6AA9CCAEBFA0CD1DBE48F1F686D4261958C098758C35DA58 -0A1AAE1CED2FBEC8C44CE1F8A5F10F602867F7221C9D0A61D88CB723D24E8326 -0C03E6972FDA35AE55F39C5E29D5D494FD0D60E6C78DE97997305FFD8F4CAF0E -11D5026DC14DAED7313C563E6AEA855D814FF8FDD90AD358174D63B3648890A6 -72F197BE3646736CABE2E958E2790C4E1548D7C792B67769AA61C93101D5624F -A5C7E3D4A05EE5E4C4361956C7BFF0715DAC7D7BF7B247261B96DC90796B29B7 -8E4189CBECCD2855A3A44CDE3FB6713AEE18EC6A80C25B44EE2E27DB564382C7 -325EE9F9CCD66964426235DD8C3F9D4D942035390992F7E3D76AE26C7E49FB8C -8EAF494F0AC282E65B88F77362620F1FD5FEE696A396F09DA628F1C9AE52752D -D3635A23EFBB52741ABA793DB9C6AF8937D9C6FB65A3A74444D1DC5ED2FF9E64 -4DE563E622AAC07AE77A30FA0A7B6F584CB9FD2735D4CDCF2E233C140CD26DFD -CAF6997AF68737072213DAD93F653B34E945659A6AA5B9915B454BA332CF97F6 -E8F243D51E0E1DEC43D22CC476E46FA369989C6DA3E719D6C083B5D0000DCC98 -0989E0CC95E1C4E64095949CC3E78BC20A9EED5DA7D0B76D84512454D28FF041 -2DD70B186C108F4B0FDAFDE64467D45EDC7C86CE1DDFA7B50E7CFBB4A34CD64C -F3502DFFEA6F3CF7A4728FB4F997DEA662B7342E5B888380B311B26F6C04DA69 -210A90F17020D85AD3A3E0D9B150FA2BAEE57C8398CB09F131C3A43A2C9F712D -7BFFBCF5B04E43606F58E4ACBE46563111E03D2B5E4A640EC06FC8D881ADB29D -B3057662D5C106A0DFA73200920CA8E9E8D23007C133912C8F44941D140C5A10 -A943710AAA2236A986387D8E9668567AF0DB7D9DFB15CADFC3E50AE185AA1FE2 -5A134AAF24B12E936A5CD45A26872973A30A7250220D746AACA419A9D94A8D84 -314DF20993ED48AAA34E837178CDFDC510573E1378B3C3DA3875188993EA44A9 -93FE7D260BAEF28AAFAD27B0B19B8F00F8AB1B7AFE2DB6C252060A5244EB431B -A2F35A215C29028028A96E44E169A24314F3F37F2FF5B80F7EA3B8E73C402A13 -A2BEAEA9E949BEC40ED8BE8F03BD6D54BBE59E76C4B3DA8CD33DA98841968E4C -919565F7F2EEC4C5A8328F69FE9A26E3CB14B8D03270BB9C036C10AADD960F0E -BB23EEF3B97181AEDC88F17E0350037BCA93A39D3153F303E5D164E87CED1784 -D5B7575B08FF53F9E7AFF3E19D21B5505052CD89B18E0801916C1ECD5676FC09 -73DA419A7FDB74019C3B76690DE77B745A5D5D7C3F08572479EB17CA2207FEC8 -016D168AECE7149AAEB7F2DDADC2B37ACB9A7F01A7248C23F1882E354853EA32 -D5411221981642C703BE65ABC5610A2C19BCBD7298C9237F9E56E69F230648F1 -1B70159D591A0BF54656AB0811F1AA63169374BB2812B5E90DFCC5D6E6670233 -F9B72EADAF155F23D30430068D9348F2B5CDF6E87711697886AB2B9D32780A4D -D7EED7746C03AE642B555CFB2F939BE002E6AA1D1A352205A836F9B7BED77497 -C217284F49C014A7C14DC5F6E2549599D2F9413FEB7DBA1CD4681098626A5D86 -A42D4AC9B54C319A5DAC64994E333D39870A196F3B042770F7161365A1D5A348 -C47C538FFC4A622E23F94739294ADA17A4FCFD6B48CD7720E061905A617A8CCE -198F217116F0D832285D186B0DC0C46B2699F68E3A1D7C6B672DA603364E6D41 -851FE53F57813FC6C6AC832F67E2B5A5BAA81A0C1FFC57FEB37107CD89892F94 -32F498B3B9A2F7E886510021065F9421F785584B098F3CC567E9DA3F214F210F -E1D9906BC2BCD69B76231B487AABB3D42C98378B02E6A16324340372366A5760 -3EEBF37ED1E0FC37782911EDCFCEA08DC52E275637CE19084A9486B6986FB22C -30A491336921FDD1679C98426B577E6C81D9791D5F8AC8F5888A2E224077E795 -8095BA13DA81A2A2E80CAD4574BE8893E5E8FC0CC4A121652019FC74E73AF632 -82ED4CFC9AD9A880D14C6D900BA9DBF9694CCD0CC35FADB29EC2E09422D07D1D -5421CAFCACC1CD630F4B46CDF090B44DC73EB893B5B1AE2F16E3270C752C64B6 -23A2FE298B3564BEECC913783DA708B230D5A7CDC42074E4287DF9EABFDE6120 -738C4A4F7D09CD01E07F2DB19DB6754091A7A3AA45DAB5CDEBE3DCAD7581CBB2 -C935B1810A8EFFE7F9084913D99A467F93BF3179DB5DBF1F93A37F36DA93B956 -DB6B6E2904D7229E3164CAD351D64BA96D83F430C48653E84B79E69AE214688D -092F235B6A267511E462984C3ECA939485D87A95F68E5DE88FE0175955BE4392 -C46A2974B652AF3CDC409998114BF92E9AEBCE43C83C04BE4F6D9715EAE4064A -31DB9D81B941ACEAAD2DAC4C787F40CCF137A4B9C65AA2120749306D94D99B4D -B28A21F817D731F12740CEA06617BF9DC92315B774F06AC88759A3C40A58EB77 -5D20241D44AA4EB2DF9993E4D9050FDB4B178138D6F02D1FFEB44F351191EC67 -A7930041BD9656AFECE6163093F5AAA2D51E0CCA3A48606509A310D5536DD95B -AE761E61CB744C892D695A181851520889C43F9B7D8907276F68F1AE593666D6 -7548BB9FF533299A95C069F8C4B4A449F7A341015B34B6B20E27FFE397F8A305 -334F966AE97B43B70C08A898F40E626F45DC84EAB2EA5F9727C7A44ED82A25B6 -006A049FD3B3507410ED0EB973A4216610CA7D04E067699703217DE681CC9BA8 -C8B5E8C00BF48D54B981B8CD2B0239594137E5EFCB11E5A680D4327B8BECA9C0 -1E19ADF17A7551D1D0B80D43D34B964394E585D29CA4F2EC49A04DB0AE0FAA0D -3FBA77512511F6A23799384C345065FF178A58898004B41A14A487260EB12E5E -FF0792F7A8D3D9EDF397628A938C6D4A177BE426AFE8984CB0D8431121F13E71 -8F4CCDD18A6DB7A459D8937A3311F7257F3B5DE23F7FA84F898F8CB1B7B0581F -8D6052ED0CEEB645367D687DAF765D1C835796B6393AF161B901ADB6662B5AE2 -0B4EB20FE07E86F5605C19DC6A89DB7E840D99792E0C42CB7DD54C8D30ADC881 -72B28765BB4B3AB0DA6AC374CBE2CA337942C5CB36D584939CA95EA6858FE467 -600A8BE37EAAB8F95007C729E39E34B7B7405B97CFD84438EC2A99B29CA442E1 -21FC47447C687812F2410C4C42396212574B620B6D5062D02F0B580405B0E577 -D09184B5E84D56FE066AAB60C5346E048E167CAECB805E769D1B234C87681994 -BB2086CFD8E7EF154E37C7E394C68679B62CB825524412360521FAD65F0328FE -2DA8906AF45FBDA9E64E656769C8807276FE9D25104113D9C3F6ABD3117397FB -6E6F306C300640FEC16B96DE079C93BD55B1A1E7E810E119E40FDD0E50FE3249 -74C98C81F02AE7A0EAB03DA52809BF67AC0311A36A957FA069E8A45649C4702E -4C505AE7271E675D85122255BE1AAB1F4B49981F41C7FC1ED23CB5F793664F81 -FE1437612BB26D8F002EABB11C521256026B18E09873C575BE9CEB07B9634A3E -67B0F7619FFD482EBFEC7CDCBD2BC2EF67DE03616F7B5632DE8E30DDA2DBF44A -57A89B2CD35B8D707EFDCECC6337D79BA1CD9B5899951452513E57E920D37DF3 -EFA97648504C1CB32B3F212B75DDE4C89CB562EFAED528C2C70C292C17CD47C3 -20E5966C1C998ED56D59C697A0238182818DB5E7D3126C6CE4BBAB83FE95BBFD -061A651E5D80589B390B0FB0E5C3F46DA1175BC1B3967625E4960E5DD49EDB49 -E73D4D0D495701425A4D2A7C132477B5BF04DE04B2CCDFC6E6B39D626651F6CB -7A684EEA6AEC5FCF6935CF34A8E99A07A482F9711126814D11B9F9996967560B -764FCB1622EB86C00D8455F345D54337D9317BC2A0B7A67066B93CB411FC5D76 -48952A3F1CE2235646FAC97F6CE26D86103FC3545AB80AACB4157BB6274D6049 -3B98373F2C7F5DB95DFE924B700C24EBFAB668415B598B51E7DF1118E7A9CCDB -84C22F07FF137A2AF7148C6F1B010D63A8537BE5E0E94179CF00D56ED1B2EE4C -F591CF933B48C8B077CFE4FA042D6BC5B87B87A6E44A4F48E0461250343CA592 -B676FD7E1B21269E5B13B9A199693310934BD08993A3F2219C9CEAE599A8A579 -6265E21A3C265391BC9A286DB9D86A61BE2F4085BB6CF0CB3ADE60850A77376B -EB2B60EA26AD90185B38FA6F491093031E1DD198A45DD0E399B3BA18B423E226 -04C06AE10E48FDF523C593FA69C553C0A4EF593A95F276116FA109E792E528AF -405277E1574B06316530194167C662A146DA58AE761203B49793C2A9264B09ED -BC1C32B80766A678BDEA8DEDF2EBB73127333C65CB5899D328F8C29AF1EB1029 -112D740C53D467D0FE4656A7FF2E081824F4F3E5F63E0F09C2A81171CADFF5D2 -04DB9DDDCB4E67C53B9844B7C16A8FEB26EEF7D3D1EE014D6966688522E6D7A6 -FD0931528CE3EA05F97083D07E62C650748443EC704428C65EA0056E4E78F008 -A0202F9FA844F007CC976ACA3C43B9F5D39A2BAF1B762D0B3E30369800C2B0D4 -0B7D5CCE446084B4AF3363DF8A0E45CDE38F35028DE1A934B4145A5CF3F7C553 -C9405F7EC419F1293E86EE719C9B0C9E2BA82A47E8BE253B50465A44AF0E5076 -87B30162D28535BE14210EE3E58BB42DEFCB0298A16493095C0537B15F02AC15 -C86EF4C483A530763BBA9C900B8ADBD47064001D6F84A83847D6F8BA793240BA -E5C01102EE11BEF2BA9C02A3C8C782ACFA1603C1250C5AF1264CD6A7C4FAA9F4 -A33A34459F490A2A5893CACD560A545A7BA4701A87B7DDD56F0E988C87336ACF -2939678EF8E199684EEE271293F13E80373EBC937FDA6F869D1B97F0BA304B4B -D529D5FFD556D67ED89FC5545CECFFCA7868F38FA8253811EE27711CC7917515 -2708613F7CCFA38F02F50B614A534D8C3DD71D5494C855118E0C0DD626F7ED21 -A133B4DC8D7FCBB8A88C65BA0FA2611C6001C0DCAB8270DFD050FF8B223B1081 -1B740C8528BA5FF99B1AEA07ED7201E503E002D22378233FD7E8034C2227D825 -CBB532CE157D15BA8E800DC86536ABC67920445D035AA3B567121259384103BD -AFFA991BB45D6C0FE371C8586DB7BE2615457EFEECD5B9FF1078CE635F82A11A -214DEBF2EF2A8A9AABD955B8A18691A4C011C95EDEA1FBD7C2D90795AF52523A -8B2E7812E32544F473BC66131D88E2579BD40EC909B90848836387758169BD04 -D5B0D81BFA8D3814E9CCBF5C9B80E255A0A25F4563F46716EC2D55D3EEA9C709 -E9583BDCC0FF91CA2168DB3F39AB24529B2A8CAE8755DB986E450761BCF1EAF9 -1AEEBC92CC3BAB679ACEABEB65418B9A24C30424446A0240A79B8F43722B781E -0EC507B5897212DF9DC0669ACECF91424AE7FA8C7E316051283B21AE563776BB -BEB8F437C346F3A2EF01A89D1DBD74342F095AD3C48323D59B9B57F09A4A3219 -06F5452908C03E86F9D6251A18529F672A72D63B30540F0BB53126386AABBF64 -B214451426BA856DAEF710C921B4277911DF8C764D6BB16EC7C0912C8D977145 -5A39AFC2496AE9225FDE8C450D0D30656A59B12DF76031D8A222899B56A9A02C -C31EFF971978D9A2F178150B41E8FE3620889F86A88CEEA40396B386E1269425 -3BE3158D132E44CA57ACC84428F3C37ABE11BF3D4D4FA89615D8F0E08E910290 -961D78828D86FCD711418F42DDDC98DBBADC85EB73667B6F2988F8BC908A1828 -91FE7E9963B2C964E2FE6339C3D069010D0CD76B1423B63F789118BEE4D5A80B -B8E67D03A907A6893ACD7071E800085BB8C752714DB977E7E5DF51DE6C9BA1D5 -06FBAA820CE7050802FA035C5F190A5300C73519CE7B4E8FDD306B66B9355EF1 -04866D4C8ABA0F5CE2C0A04A860BE373AA8F9CBE667354BEC34B658BED07F524 -0C245EC8DEAE13871C5A81DC2D3E96624E4C59D512CF102A385746D4D4926AC3 -9015356C7AE571E3ECCC85CDB150EB9D680FE5E4FE2E947E787ACF108A69EB04 -40340E84FB3370392D1166D2540F7F8647B0E7371EE1F6721C3BCA61790EF5F2 -5CA19C0B5205E7D7D3DA5A29C1C5E4FDC39CFDBA0E328AFAA7D180C361F87D99 -9D0AA0A89DE7D2E20806CEDDA33190551D8C3EDD8707579C27BD0599F81EFE05 -B3692AD7793DB181BAA2AD259AD259018D6E89BA6CBCE0E8E7B0B6A3280C6A2F -576CF551573A48056D3D41C4B3A49427820941F9B57797B8DBDB0302526DEAF2 -0E5229A641C7C039E8D020584E1B1EF280EE56BCC14DFB63586884F110533302 -B4457E36BEA004FEF4515A005F8470C61F087E1EED156764605834FFFC0B7DD4 -9789591B36A11920D4EA93910DE95981AFBBFD3C6A81949A2E2016A2CDF3BAEF -7ACE82E38674DC5B8F52A06A96612337F2F1445CDB3496B611A18F39E03C6461 -FA8905865DABEF52DABDEA7F2F763B40C1F9207BF03FD382F64D0165EC3CDCF0 -BB754FDF19DB7F811E9A75DB01F9EADC98D6F10AED43FA6356881D3365EE5E68 -EEB42CA564C54DE7548F90A886E845351EC27A83CCE8B3BD32EBCAA12C5A7FE6 -9422095B9DD0A4616F98B192187E424200BCC505ADDC2DB21D6CF76FD105A9C1 -94167FF621CF4761A30D6944BE5ED318549C63489C66663709BD0EFD2CD73818 -9EF273C2FEEA55CF7363C135C2337CA841C25919058CFECED561ED166CBE8911 -270E11B03B68233394EEFAC74863F363F02EAB4A19AB4A8E6F8B8459EFC4A051 -A71790DC29E5D9A168E622465BD32E732DFA6BDFB4C177A6B2E2FE80F7FE0881 -004AFE84314885E3DFF7BFA930F77FD32CA80E186E0A1564D8A0F94B0FB487A0 -4B1A79D324EA0B4598B0005D6F09C80A9105A8FE5D9710F6F4CC5B7DBB1D04F5 -657CF089C63AE52D1368AC78240CF16F57C441EFB4A0840BF4F5CCFFAFA3E788 -1A702CC6385869068A31B500782B7F8AAD42DA876776DB7A8B14221C763E73EB -682062D9C9932DAC5A76E6CBD81026EB205BDB56775506A07D0ECBB0F2E1F7D5 -424F56C988145CA9CE53848D1456EBEB0D9B5DAB1CE8B15533BEB915C2A68EB8 -3D5F6699DE9956BEB2D9026805E574C86F00DBFEA624B8AB959D720C8C340B3A -89F71AA318B2E2ECCDB6603BAA29B568500F545DF04C6F5510F3B1C491C00E79 -863C0395201F04DA8318E84453E92133C01DB1F3A65F5B1E2CAC2E32267C0870 -DA00B4C270E0093110BED8D02435ECE0ECFE8FD47603A5599478B9D058B5F7C2 -E2EDCF2D14EB05B845F62D5910E344A334AEAEBB9BFAD50C05F646D1CF4608F9 -7C06756157F0B681BA58C962B99CE8BD998E3BF2B6BA27D1E537463E9D2209FA -8E1E69CD64DF8DD8DB0DF3D49E3E4B7C87174D3803B24E89DDD48AB253213D26 -6DC24C503C96B7136375257297FE6FB35581D48478A8D2C7BABC1BB36F0FE2D9 -48093524E0406CFD0034483A95E7871858691C2397E3A23A1746377135705C31 -A8669EE4AFF55A36A01BFCC92490D1046C772EDB9F28CE119FFA80D03307FE8C -507B32D4C08907DEF3A591A581AC8C3473E18F87D1D504E92B0DD9F1A6137B14 -31E93538C8E13B678CCEE2EB9050070908688B03C8D7CFF7206359E05F589326 -D7F2487D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.0: CMSL10 003.002 -%%Title: CMSL10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10. -% 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/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup -/UniqueID get 5000798 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 /CMSL10 def -/FontBBox {-62 -250 1123 750 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 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 12 /fi put -dup 13 /fl put -dup 42 /asterisk put -dup 44 /comma put -dup 49 /one put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 73 /I put -dup 76 /L put -dup 78 /N put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D -DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 -7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 -C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 -25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 -7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 -299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 -80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB -5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 -8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 -5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F -F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B -966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E -A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 -9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 -A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD -94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A -DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 -E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 -5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 -8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 -155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E -4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 -44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D -8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 -04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC -A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F -F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 -111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 -8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C -567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 -C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 -C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 -51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 -66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 -9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 -2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 -4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 -5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 -0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 -233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D -BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF -62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 -B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 -DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 -C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA -CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC -38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D -FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 -303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 -8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 -8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 -C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 -9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 -4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 -03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 -93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 -91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 -FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 -06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 -95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 -9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 -7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 -6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 -5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 -3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 -CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 -797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 -DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 -CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 -8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 -04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 -78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE -730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F -021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 -CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 -90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD -97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 -F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 -4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 -40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 -3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B -362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 -DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 -7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 -04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 -DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B -C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 -B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F -9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 -3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE -D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 -B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 -74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A -44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 -A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 -3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 -BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 -01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 -6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD -DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A -CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C -683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D -87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF -550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 -2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB -17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB -3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E -F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F -B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B -1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 -61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 -124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 -ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 -0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 -D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 -F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 -BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 -75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A -8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 -B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E -7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD -F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F -F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 -322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E -523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 -6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 -66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 -B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 -5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 -093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 -B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 -6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 -EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF -A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 -8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE -144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 -7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F -172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 -254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 -5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 -011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 -B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC -0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E -3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB -E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E -993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E -0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 -18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 -ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F -CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 -1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 -A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A -6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B -BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 -DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 -1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 -93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 -E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 -4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB -F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 -4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 -361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 -95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C -AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 -50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 -88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 -AB7916D44EC2210CB941B9C9DDBA700AA803F99E12BDCE73F10F769D7C8E1AB0 -77431FDD829222D4A00DFFA8E5FC89B8DEC03AA4910C57E6A689EBC39EA345CD -785A2885C8133229160EB3DF0B348DE734E4F78CBFE9340432C21026C5832003 -E5688E20806F46ED465309FBCD5D50D1585C981C7430956CB436B883730AEDAC -1E76732CC2F9B08F3950A7B84F0CA9C5B92A11EDC335D079E6ACC69BD64BF071 -A2E22CA7B18E275EB0CF680AFAC9DDE4F9B48568A1F4CE84E9D8E13F000D152E -42DB1C1ED509438C43F0EC0000499BCF9017D11C9A36BEF738A570C32B63D0D7 -094312E00AFCA7B279DDFCA02547EEA7732A94507E88C1A87E90036DD4C97198 -A7145BF87D4B200E420BC52CF878D7ADA20C9A6F6851041AAE0E9CC14D2260A8 -01D960F30642F93C430A0ABF38071E7B0721204512584029A7E9C12314C653FD -A41C1A4711A791BC0528ECAA06AAA93D7870FF4B7A523B3FED95499A1E77612A -EB1ADA9F11E3E4D8C30D8A8C84D24C8F971CCDA2E28D3B5A9D42DD218AE82DA1 -D5E0D10B8CAD1681877AD642239C9CFEBAA787828E101EF74D259636633118CA -3D90EC062543C6ED387073AEBD2F8DDCF1BBDF739E10C7A27AEF82268278FDA4 -79553CC1A7B3653FCEE4D9C539BE35BE94B7E2EF4F7936900F6370D91EFFCDBA -8A93730C7E5C3CADF8FE3149F1E643CB0C2B1083E2AC2EE88FE9CAE1E03B7616 -6A8258CDBDB05D16371EF193E602853FE755DC07152946A9E3B4118F3381B71E -B75970EAD7515AFBFF0F1782E12AEAD5213AC3C882711A66A964C144897882FF -3778B69A447AAAAC2266822A7B9CCE94C6D75E0D4697A4BD039ACD3EB32E778D -9068DBC51C2D206874F9EF20727636CFB18EC847AA078F7A17D436BF9B8752CD -F040AA54CB999A9B43958234140B984545A2C39B12455293FBB35DE8E6831F24 -BED673E1B560E073A030BB41FE748DF4390D757E08B7031BEFD4FE872794D2C4 -1E32A70708A651F0B8FB7E733EF31A64B32E5F98761A506240517AF9DEDD662B -10816F00645F13FF275F7D4E0CC124A81194EC8BC48E078A7D4BDDF5D4B7B2DD -0A9301BEC91CB24890FB50599D6555245F1F1EAB7B3A795D999EE38EF652A608 -82D0D16B4DC55BEB358BBFAF45F4853E6C264C01D970FDC56DEDAA9E52C89DB3 -FA62A8406BD7314F0C894442FCD4897E78D6221C517F488A88DAB0F1AD70EEAD -4F6D280898C9F52D1F8379DF8D9913D8855815188ACE4CFC939ADDEF50E26340 -E25DD19BA83B83F93DD10AF8DF2D7266705FBF8542ABD4C87F9DD9EF15924196 -F07966E72B6EFB11878E68C299345D622C702DADF0285E47F09A3A3D70A07BB0 -F4DF0A8DA9D30E16E84CEFCA563244B34B511C5DB543EBB035E9D4D17BF6445C -30719B7AB9180381A07101451C4DD52A6A73B9513D95D62D79048990B4123FEA -9874B2C62B2AA34C0C89ABBC949F7D7C46447ADBA1904E041DC03372ACCD71E9 -F4FDA11A80DE03E01D3BA5E0997C2C7BA6C7E545DDE69BBA4F5407EC62E36D03 -1755649986E6611114E8B7DEF9B1C2D5E2EB35CC6061CDB91E90D9A0CEF0B90D -39E0CC5410761DF6E682605919CD47BFB3430322DD6DD633A4D130A299AE4E3A -B1A5B94D8C3F7020A41431D5D29A9142A6B1DCA95757C07FB38DE5C5CBBC0C69 -A1826D2609385577FF9AA344C52DE955553128BA5575BEF4B57A77A365FD7EB8 -6F34F8EF4E1A93F0E7D714AE73E0CC221A1EDF703F3296ED98092E442233F9CD -7AB32141DD30A42884305205FE48737741E10B3CD8B596C8954BCD0C9E859684 -C5B9E093E3DAC688EEAF117CDC0DE395824DEF1A36C29F301591E2767084A3E4 -F1A257BAED233D07C2ACCBAF068B47B056988DC206C8AF4739A2E2EF3AA1D12C -9AEB31B33AC8A1C1475CC61956BC5AB5943C3A69AE8C1D5C4F0E9DCF0CDE59C5 -D55041B4BFC408451CDBD3C0EAF632192BF198BA2112F05C0DA304D7B3F93623 -FD16C814C7EF4AD67F2958AEF6E60E19E5103440A6C14633ACD429111D29CEA4 -45E7F64B2C53B1858EA47B17938DF8C8FA558A10EB6D67128CD95A17BDAD8EF0 -951749BA711B6F3CB0F964B00A436127C9DC4AD6EF6E47018EB6718C1727571B -D032FDF5654E30B2F57EC9EAF515BF5A919AFA0CCF790D21AACE034A4DEF402F -3F7453F6E29E029D8B8B2644C1F2FC9B8377CBABD17C9F105D9205B4A0F04D68 -0DC8DB39E836A1BDC3639D48D04E93BDA4560F76E6CCF82977EF6FE274672D6D -9FED417BBDC9741F11718026FC1B77CDCF546ABE536B2D36871E7531A97C3571 -E30F3DEC5C3E295B5B8E43CDF2A4A69EA8CFAEEBA0A9B242840131E46B48E0A0 -6019A42547D8C7EBBE4E95D968D2F6D7760EBB55A01D167825AA471AEEAE5E63 -66E02A3D438D8961D12FABAA939CAC35C4AEFBCDD71A661F7200F8C06B4F7D08 -8918786B55C16255DDB34AA0AAB6631B3796165ED2CF8C5C43E94B1FB0CB8879 -0347980D841A62575F2C561527E0390210133FEC80B47C1936D5071C68073D83 -892D0B651D998B1615534138F8DD8881A5F11C305489C9569DEE6EB4A79CC85E -1AD68914303D0A99DDF17256E05283D62E9A5FAF40BC243565BAD4F7BCEFA18E -D29414E64EC89C5E2B95773F4410F6550BC41B32DC0FA9B000C54A94206D50CB -6782EC80A281F3D303A5434CE334F69985751A08E77C04C4E0CA7CDA9F82A61C -8D70D0D474D68C84AEB6F620FC74361FD4C7E68FCD866D8246C854D4E8C8AFE2 -2E8DAD5C1B04EA2A52B50FC5A0397D9757C186F5DCBF0A61D87EE9A4EEE8D2EA -C6F1072C022FB02EE93FAD70BA0F5FBC6BDC6FCC102A0D1A08118C3BE4D63923 -94540D3D522142B5EF5191D17CD53CA2A7BBDE2929A1647CCD42834F089CB0B6 -DFD1B720524879D64285C901104B2720706CCA8C260EB07FC58D48A60F07E67B -8C973B417840FFF6491C1BEE23DA8697FBEC187F0CD1A3EE3D8F841C8E0B3967 -CC093AD66C45FB2C1D5399865E310A0C3AC6A12ADF57EBEF1707138CF26834CE -F5919CD38C908C7838F4F21F43F8F454E9AABEE0BFE619483F96DD4EEA6D49B3 -29552B9E8C0733009A05890F112ABCFF48DFA2D78393A47344498A0D3C15D1ED -3E2F7AEEF4524EDB587C5EECA2D60A3A30FB45610BF72A91AB842375C220CB5E -36F8DB85AE859727FF3A91D6EFF971C1230D2A473B413879C710EC966F5E496E -231FFB5DE1FBB31538A154BEC2E3B08E84F6B28583257B89A8E90FD35334AF62 -3AEBDC978D97406CEC3D9EE1ED93B17C578ED574A30D8CBEA7439C692431D0B5 -19F21FB3493F4DCA68D0618CDB56A9EFCCC8FDEBFDBE69DC68396F73E810CE3F -B7AD97A5429747122B3E62036D01C8883ED9F75B8057F9537DB523E4B8A529A2 -17024D658D51226C0C1C9C26ABA8F40A5BF947AD2B6EA8D3FA99A01F44407862 -5AEA73879EEB1405E79B0AA0A19D69AD2609F3C7CA747742EB0554FE3EA3AE93 -E7F5177BEC64E3991ED64DE57B2B1130B37EDB3C21ABAF643C9029B25D46CB19 -E0482FEF08751EB68167AE5DB2C595E163B731C2D3AA1D1A746F3A9E8ECA4E92 -7582DA2EE3CE8D73B6203FFCDA22CE7036DC1458BA00DC2F5BC3F9B4CC570648 -0079DEA599BE9011650C2C278032673BAD62BCCB1668B2420619E92937A22515 -AE01042D93F60A662B13A5B4656855D20A69F15CBB3A7E421EB9D650C666BA96 -5C652BB442AC10ADD8574BF3B3B3E758712EF1B53E20FAE119951BA3C0B712A9 -948D6FCE5323D1C61A32930E7A95D379FDD261E7E5021AB3D226DFC1E9316A7D -4D174386511D5E95EB176E3209CB003E0C7DE3BD2F6E5EF145F2B9190BF257F4 -BA3A04F64F1EA8E8F442EDD9BA259DEA105788604530A130CA074E5BB91272AB -1FC1221B4E373E91E2B81143FBF191664B5E65371CCC56038776682EBFABC8D8 -BAB9F32CB746EFFA3F34A446C4112AFED6A663231B551A99CD8C0555B6548F81 -469917A923E975A92775E7A8E993636413E1E4FB23D80217670ADBD7BA928432 -ADF96D692A0800501403D2C9A0F380EB2BD63A31E9167C641F087E3FA0483F6C -3E2ABE7C5ADA302EF93C1FA9B7DC5B58B5FB75EECB1F091D39E7BFBBE38A4C7E -DF5E70BD5E2BF0DDDEB232CA06A551D557FC7766FA1A8DDAA28D9A905F976730 -073DBDE12F9BF76B8CE18280756B07540E63A4AE3FBED314B95C1DFC8DD0DD54 -9736CAF4E4DA6811F5A2DD6A4A1F9D9B2E7478ADEECBA39F3E923865C341223D -5619EE8F80CE3DB1420EF673B7218B462F416AFABC491958D58ED138E6367A9E -90E5ECE4666690BB65403C0D074262200D09FC3D9444820E78CB4BE195641E87 -FEAE594E1501EDACF1887F02D43D8E2B08A0478300104B8EAF06C3B2A2F8D9B5 -9E48C1FF0A4B614076C77CF53D1EED2740E1B716A030A16B2D7FC431708B25AE -2F117867E11BFFA9581967D269317CED3A9A83494B59D9C3B31FF3AA9E31ADF9 -72C1DE847E2C159B54326D08330EB4A2F9C198CF52541C8FFB3B7096638D9BFA -FBF90FAFBF091401EC2A295A355054BDC46B306EEE1D6BB57EFA3A9C82919F54 -B1D23B0AAF163ADFDE3FE845D34A5147F53F5191972E658751221672BF9F74DE -6458ABEF3A496D74936B7DF66EB6BDE8119F2402D5F086D5FC02453DE8B55B90 -5602C160A8F7BB4EBD91B4D236FB0A09600D458C05A076C5F55EA2339DCEA3A6 -C6CA0AD602654EC9DBF7447EB7C07C50D18C125A4B796CE1FCDFD65ECADE4F0E -814E4A74E8D32BBB63D144F542C623D9F0494B41F95E7557CE6BD8A6626FE1B5 -599DB2718F1F2624E8C0782B7FFE6009ED3444796B8A59007AEF885A243232D0 -61AF681426CF4292E70DCDE23A78FB4F40E91507A0E43B59C08F2B65F31E41F7 -8ECA66C120C8E13C9871DF8225FAC9A70DBE3DE0D46AB24C935774918771E870 -27BE1D66C8908E40B7F23210051A02293B65E595AC7609D232333D2DC372E48E -CA3B003793B2F38A6FD02C07230097DE2E19B713B7989B183715A35550FD4919 -A4DD41821F728DCB71EA9FB7EB58EC34092262A5B2659868936EC05485F625DD -C05F941E5F054A6BC5B936106B50910FC4DA37CF58E75F3BD4F2D8E6FDB433D1 -65B1E5E4BAC3A512DCB3F4B7341DA97086444E1C0C779D50983915139BA4E708 -EAEB93952FCACE01ACA486B9650E540D8416D0F2B3FF85BE8B03A8007192AE50 -9F82230AECD436D306D6D3E139E2E2B21C4179CE7863F51F448DDDF73E5DE588 -03396314426CEA0BD015E7986D566A92AF709CC9FD8E977E45832D68BDD0B735 -E487843379A8358B097C143077FE9C1BE13AD252AD73B91813170A1EEDE40F1B -EA816F1EC0D115A0AD46EA89139717965FE6E65D50A3D948C1C736C58BE90092 -743CB3D2C896A1A6B4451CF100E1CEEB6940AB6F90B40F9CCB1B34BF9550C981 -ADC52608D05E81B9F79EECA760BDF1154EAEA6B414FC12EF38A239FF1EDD45B1 -F2532E41F3485F8497D1611AA29903B29B818A3BDB1A9ABA30A8816F01392539 -5DCABE87B5D53375352D28668BF09D315C7A81E09CE49AF6419986B2111489A9 -0746077BD99A6E3BD318AC80B4DBD3D9C0ED1F5DCD419846F9BF06434711B74C -EA90E2EF3377298C39DCEE6A2125E66771D432FF3A2391F51CE44C71EE59C1DB -3875F050069A600D1842354D3D46D036938A00BFFAE3E467BEA91B58941BF007 -DDF72129F593B94F0E3F194266F25269F78657E6459DBDD5F098673FCBE1058F -E764AA3A7BE37893EB8AFF107A7CF315390320D6A082B11DE3FA3D54B2630E89 -43AF6611E29AF2465506778A6050BD24235E6BC078BF26064D23A3E9DC453949 -E2962100A3054C2B4B79183D2FFCA25FEF1D2EB506D65B3971FA512B174E9404 -E17D7F615B6D10D16F0B0642DF109B28D7C8ADBD38701B7C1A2EE9F66D64492C -36BB3E4534131C4977E20EB13B8E082AE3E537CD19BEA18712AC2B015A0D9FB5 -6105C2D29DFB8EA608D14876C2B70D940C564826264511CC9A2F6C2DB7F359E5 -18C52544682534F66B57E456161ED9F805DE6EB707C3057203AC21430630D182 -D8A6510865216E407C842107F7991165DCCAB03DFDC3A1D10F4C16E31445BA5C -A222191EA6D1DB9FEDF54FC6015381C9BD36F2DD7D40F0F52AC0AE817CF84322 -AA6671116326BDF83A2D4AFB77C72ECB5D8262220CAB18C0FDA2C068A2B0A959 -357F0DCA26E529AA1E265E7D2D2408037A08AE3C12032DDA78499EB3F401CC61 -185F333B7FA54A4C233CF9D0AAEF0EA7D714D829000D99C6D67916CBC13F77B3 -47362B661C731F1FE2E8CB40285818C2A2349CA2D1CE8C5A8A23FCC839F4D487 -36977F1D56EF68CB2EAC4BE045B45A355BD780204FC029767C089A0D2EC210EC -68D8D916ABEBAADB6C34C8CBCF567306BED2F0BF185B1CA87A97273009F7CC43 -DB515293F1D96F0BFB3E565CB609EC2FB0CA30684A1015BDBD6DA5BEB74C4A1E -198E27E7ACAB2357CE190E9ECB3FA0E6482FACBAE6F7ED55CEC3893F8B872636 -DE8DEAB7A282B5151F6E60AFD2CC0B9AEB020CAB8A06F6E369D375BF18AE2437 -4B6BCD547315A79F9D06C6C19FB289183112FD43F864F74C58771C7DA86F10F3 -4A8419956F73A0650B1D42F9DB17719A0DD122C1CCAAD2DB719A352FEE48B092 -C88821FD5A80A21D9CD52A19B53A5CEC0BA4E12CA3862DBB06333E7967CDF346 -0420809AAD013040D0CAC775C5BA94766AD642EAED1984286122DE12FB4EC052 -B690638F7E4B1D4098F76A0CC8041612EDF98187F404BBDC21E1454C50A30DA9 -A5CCED2C3F8A5302A04203EC98D7F0CED5096885C7E2ABB685D4136469750EAF -B7171467945BE6957DFAB66718D485CB0CACB7A4AA2FD573BE04446D3641B445 -F206D7ED7DDA77856DFBAE2E2BCAE0544BB391960392A7E7078B30E6374CDDC3 -D84145FA5E1CFB3FC678CC801FBF9CB087211036EC3163B213A3C943BFCDA7B1 -33D8444C35CBBD735DB0554CE1A0AAC1C960F9733CF21821B3F9EBA98629A0AE -9F78B901D566BA36909DFE43F767EB69822B691E4ADEB5D9912DF00B83875DD1 -BA339909AB5B0CBD7059328B057C2479DEA0F7D30969B3798D9791FBE8A5C300 -1084B4A37FB1C8E092A1F1500F490B6889333B3D0933CBBADA164B66CCDDD058 -1974EAD60EF7A5E1D12AD801D177E8DF6C45662C1421B73493E2B5FCE4FF6EE0 -572F856735957317CE2E46FC3852F947B38730BD3C79F2B91B855C8A05EA6217 -F350F8EFCA470EAD29CA75A0659D56C99EEEF35586AD14DCDD4DE6564F826FF5 -9B104518DA0D9451D0076DC69BEC4C5717BE5D5ADDF0821009F56846AB0EA42A -70B9E592FB09C8B3B4F562A421DF521FC1D4643BCA7DBA767D49C16D08EA703F -56431948182CE03FC006609329C5EFC0DA0AB00747EC83B558E5617C5E57EA79 -E62B80BB798F870CB0E5F4372FB16101A9961866B4FC4F67FE297408E5BBA6B3 -7973893F42BC5DBF09544A4E2E9E79FA0B18F429C480F52833E3AC0E350D0CF1 -858D0BBD416DCBA87811F666928D81C26B9C22ACF3B55A7B62296CE3A6C7AD0A -4CF089E94B62872C46F45C368B6CA8D493D5DB2C1DF40009E67BFAB564E4151B -C62F4F36BA1D10429DADB302A23941E87F5E6B29588E9139B6053356C92B0FCC -B4FB39B7CB1624F20392D20A4743C02BD1F09C5600E6C90151C0E5E1E971F163 -89EABCD20AF83D5FFC6022B0F536FDD16DA3FA77CCE24C5FF4200512E585E90A -748F22ECE06F9BDEAEA923494AFB0E11C649C9AE42F7A2AF0DDE89781E187022 -73E0AD18D8297C5B310BA89A29814699A9A6F75F2D764441A1B66FA01D169C58 -8384FA3E89CF6105E8FF5AB09D29881057C0C61A359564B05ACB8BF11769DABF -A628B03E53F385BB3F99DA04A756D2B89145FB5143736DD76E09C2572A46C3B5 -30C81C32F810BC8135CB2F86D7E186573485340A6656CDC1ED3BC6BB5FD7F0E3 -6F66A83969D596B7087D1EC5D9E971DD09DD8C6ED6BA35AA68B903DA3F685807 -3C68601ED9D2E26A199192BEEDAB5E7CC3BCEA0B4C5CCC17DEE0F39473E9E94C -D75563B966F856C70AAF46A02A975BAC28A85C154CCA163D467966EB61927B69 -83DA57F613B5972993177ECEAC7A0771DA42206559898C434F266D70F8B9796A -F520E8EFBAE685DDDF22C8B4B268E3ACF32D93E8BF96692F3959F319BF397E13 -CE13D16552CD85685F31BE90073448BF68A8FF08F35670C6D5E3DC9977F4EC50 -5D06AD240063E3FD5F6E11A17BBC9CE908374944068E75D48CC7667412D61341 -6642EA0B191F1209C452E35FF50A176273D04F12A6E524D4338140A77BB395CD -956918A470D264A36E813E30F5740DAF3AD14E6A55C8FD419997A15831878731 -ACC10B2F552C99582CBDF3BCBA8AF730E27690DB2EA83E7B6F7ACCFE8603C3FE -4818314EEE5595247D6B2B433DB4FA02EC8E73A1B630138C9B03ED2FE9214335 -2810180AB7E89CDC1627B787F0E682F7B85F89E22BE09EF3A14072BA7336E83C -C429C0B183188323FEADD719AE6CBC769B0283062F85FF8310E6B8C2161D4091 -7DCE2E98018383E808A35A5B9F38893DAF081EC1198EEEE19B63391F8E075F02 -2ED0A405A71BCB5932730CBAA5761DFF46F7FDA5ED956089738F42F7206926A2 -0BB0C41B4F0E0F32DBF5306FE89B3C47E6F4E7D7AD9D8EE773CD1C831A98EB94 -52D2D591403813B8C11D892C58FDC81D3E890C277641FBC7A2BDD00668C2C1FB -27EF428F7FD67FAECAAFA06A3EC09A638367FFD13F7E83AAB1FCCEF0CD0E8D9A -3480E7176BC82728D51F48AF03CF625894620F204DB44A0CAE566B6449C9BD86 -94D59B9F79D763EB7C119F4507365976289CE5C8C785642F80FB2DF5E5166AC8 -D7466B098B8648502573008812ABD6A3A85BA9CE967CEE0E26A20CDFF06FF3DD -97629CDB45C468AB870D58C6FC2B4658A0CDEBA62B7968369E96737FFCC39DC0 -599EEB31B801294E9D36B9A54A97DDD90DA57DD726E90EF841DEEF0966083E13 -CDF97C81FFD9C9FDB17E96C32D0B8B3D9874B361E6F4E753A713F08859A2BE3D -9497DC6ADD7E9A285DB4F518B255E0752E56FA3536598D859091A9A2A8BB81EE -FCAD0095F567D6A57CC7737D073FCA5E551D9BFCA9C981261F19F87626DE7CC8 -6304AC68E704A6083297D3A5DE79079C138D18F5B3BEE39E8FAD8783F8BF8CB3 -5D4737CA9674A94C165ECF3922F1F421F59B7CDA3E725F6E67191E780063ED30 -CC01F952314FBE98A7A7237D25B69B96176E196B5747279BD5A6324749954D2B -DC0FA6684F3BC6B88541091F06C9354655480A0AD8F9279FD072380C57346D09 -BC443C6B6B6E34FCCB472CF8C633C54A281EC850CBD63D11C10C9DC322B6D27D -B9EF881F6DB191B1B732584FA01200F29BF185536965A8561949BAC59A50E903 -04D33F1ADAF2DAE3AB61811E63931B6DE791A0E87C633728A812CB9F88AD4224 -0903FC9E756A2869F6F0048230387526DE9C1DDB1B6CCBDC51BE12825522E7CF -7521D9A7B499A8CC14B4AB2648A40D5C8D8ACA2A9EC3D0F3619FFB3C1CBA6737 -B67B2784C4329D1DB704A0A083A87BB09BB081707EA8B75F15D53B8B488AD985 -6DEB5049632526A4E8158EF44CEE56A8CA55072864B07F4E2078E4F7BAEFAFAF -E9E0BC1DD5B734F23E57E3B77FDD2B93BB410BAFD9257542CDD4B5804695E6D8 -D2C65AE4F024037BB099E9FD16077AF3036B97F6353941F01A27265EB63912DE -DEDF5EAABA24F177326D9CCFBA2C360C14470C0458008BB42091344E6CC9E057 -9BD8370E04F7783B66C370B6EF23932DF99A1C1C840AF6CFE7C874F198E6BBBB -ED973F802FDCFA4FD2179F242ABE5FF2FDD171D7A5C48AA5E39F30AA62910B13 -991DCDCA0632AFB4A7B8D2DEB698FA9BEE262D3E796A08C11F4B5DBAB8091840 -28D061F8A6CF293D7BEDFF4F26B1305BD24A378764F6015B7D7FD40B038E351D -7929140482B996200D7D6AAE9B7431E85DA600716230A7C48E8E76FEF8127D76 -095410A7ADDEFDB9D04A019ADDDD68C4C7A97164B4218C721E6069BA189F912E -D0D98577C5110BB3A3ADCAF46F095AFEE3B7119508649A0A5CD950B6AA7FAB2D -9EBFDEB9AB222E4033F0433698B9D3972965E4A6FC4F4F8CC12AF2CA74FD9884 -8D3725FA14CD504CF1E6A439CDB22CBA88558E97B5C6E9FD2DF50DF08E4EDD4B -6F6FD5FCAF83D2BCAD758CA480845E0412B0D013C0566071917938BE6D8BC745 -48B22D1F8305D88C5FAC4D21E3E2041E46DB9E701DF2775B3581928CF79FA717 -CD5D7E0914DAA0CEDC5C50909BD8D9F262C80C17A4AD97CBF20B0CDAFD59EBCD -8504F57C36885BD13952993D64D451B1C3DC070C7585F85058251AF2C1E336B7 -1551511DC102295A5B66E16E1FB81ADB280CD0362947097F92F93D1C0AB5F8DD -210682BE092201FC8A908CF2B4AB5CDFBC419899082104891D955F72D2899090 -8DA7CD5A0A6BE0818AEA58126CE5F482EFC7033877DC2D029BBFAEC1CA3C40AC -979E4B6694CE5EBA17F829463AA7E6489027425E61B327601FCB7DECF112C4BE -1904479AC72496E7B03D51F3A50EF1DC56259F85E7033648CB02C5A1A21C739F -2423295BE548B2D00EA678F6E20DABC7D3B38989850A26C23E2B995EE20521A8 -B6A0C19F16113478495F8092CDB092D9B6A4DC9113E82C6DF873174345CA39F8 -7D7C6006DE44473EABFF83064E83FD1B6D1A5FEDE316C6B69D6A6A001B744CD7 -D5D953488BD09C9F630D1532253DC33A8F925F5770DCB8534422FA8C58B6E143 -42178F9122798908A8B6E1D04F21E668438B211F5EB99901ACCEDE25DDFDE032 -4B7FD2FBD842EA15D10E97EF9E6A206B5A7FAD8247498A34E260BB0F0D69032C -07D7E477340DBBE32B5DF907EAECB9C91EDCBAAED33E1732268623EC0D9FC04B -47542516AD530E95720F743E2F6BF708E75F10C987B153 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSS10 -%!PS-AdobeFont-1.0: CMSS10 003.002 -%%Title: CMSS10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10. -% 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/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup -/UniqueID get 5000803 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 /CMSS10 def -/FontBBox {-61 -250 999 759 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def -/FullName (CMSS10) 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 40 /parenleft put -dup 41 /parenright put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 -63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 -274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F -388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B -E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D -AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 -154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B -4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 -29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 -CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 -C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 -131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 -302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 -F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 -AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 -28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 -121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A -A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D -8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 -69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 -BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 -C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 -B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 -8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 -161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 -F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E -A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 -0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 -D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 -B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 -DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 -261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA -B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 -64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 -F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 -AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 -CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF -5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 -73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 -A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D -EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F -1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 -D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C -13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 -C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 -08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 -B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 -23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA -56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 -2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB -DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE -3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D -5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D -9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 -2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 -F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB -73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 -B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 -11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 -03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE -F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 -5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 -60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 -622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F -BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 -C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 -8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 -1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 -F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F -D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE -257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA -7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 -611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 -246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 -E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 -AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 -EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 -0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A -94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 -73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 -AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 -8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 -5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE -6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 -B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 -129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B -AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB -8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C -B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 -753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD -A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 -93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE -207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 -3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 -7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 -D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 -09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C -5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 -B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 -E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 -C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 -F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 -7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 -99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A -96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 -1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B -48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F -4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A -45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 -D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 -838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 -5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA -ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 -DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF -E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 -5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 -46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D -491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A -DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 -F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B -0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 -EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 -E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 -0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD -ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D -8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C -8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 -A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 -4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 -AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C -2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 -14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A -647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E -6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 -4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 -D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD -60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 -4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 -BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 -1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 -6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE -65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF -D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 -6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 -85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC -7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 -BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 -9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 -6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 -2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A -374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 -39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 -AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F -1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 -E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 -AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD -B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 -CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF -9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 -DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 -670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD -99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B -8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 -E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A -F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 -DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 -99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E -DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF -51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A -40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 -AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 -DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 -8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 -BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 -BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A -0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0 -4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A -8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E -5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C -7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E -4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC -717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1 -FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37 -25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0 - -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.0: CMTT10 003.002 -%%Title: CMTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10. -% 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/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000832 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 /CMTT10 def -/FontBBox {-4 -233 537 696 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 125 /braceright put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 -7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 -6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 -14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 -0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 -3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 -BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F -D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 -FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB -556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F -8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E -F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB -B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 -125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 -A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 -4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC -56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 -E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F -15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 -2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 -05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 -6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD -04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 -C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 -70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA -4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A -A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 -62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 -240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D -69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 -ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 -121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 -0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB -D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A -0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 -D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C -550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 -CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A -9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 -FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F -7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 -E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 -50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A -2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 -9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 -44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE -49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 -385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 -8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 -6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C -EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 -E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB -C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE -484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 -4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 -0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C -6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F -5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C -1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 -909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 -BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 -CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 -2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 -CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 -EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 -0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 -9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A -D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 -21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 -7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F -52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A -FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD -AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 -F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 -067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E -E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 -C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 -5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B -0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD -CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC -2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD -E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 -56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 -F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F -E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F -0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D -67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 -EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 -CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 -9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 -9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 -C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 -327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 -F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC -60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD -A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 -B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 -0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F -1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 -DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D -55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C -7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E -75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 -E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 -8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E -F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB -8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F -D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 -54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 -49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 -CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 -34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 -1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA -6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A -DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 -E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD -4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD -2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC -ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 -3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE -97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C -FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 -A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF -639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 -D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 -E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 -1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E -A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 -F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 -5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 -4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 -664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 -4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 -35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 -1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 -01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A -5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 -2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 -DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C -BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 -39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 -C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 -99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 -7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE -D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 -6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 -5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 -6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B -F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 -E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 -39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 -7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 -ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 -6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 -2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 -1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 -06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE -5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A -288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E -7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F -759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF -E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E -03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A -6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 -314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 -74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D -906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 -673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E -A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 -931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B -CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 -E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 -4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 -2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE -F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B -E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE -E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE -251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 -7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 -46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C -E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 -DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 -F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 -507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 -46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 -2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C -C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 -CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 -57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 -788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B -A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C -C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505 -27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA -1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7 -4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46 -F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F -2FD466826D4E6175E9B3AF676603DD8C5F5B037022B38CB7DEA203B11D993027 -884012CDC35C4B36242F8D77D188AFE30F09D5D4B9E13A466FB208B9C3B3D269 -A12EBE66EF7F6ABFBFC024B72BC06828FA7AEF04633B1A7C93B778D17B0AA1C6 -721295869CDDB94DE898C26F40B1E3E93B68B06A63719C44432BDB45C3FDE04E -7EE718BABB4A57C7709D3C41E6A3C997C0E7BFD60854EB52A73DAD8E02F6E43C -4EC19A0D6311293BB240782BA1DBDDC0F65287E6061FD3333718D7CFCDAC4715 -589A5ECAD2762C643C0A7B2750C7038F6B8F275D9423DBE3F3A442F625747D58 -A26B03775F1EDB35BFAD9ED9C2C341F89804D41A9445EB2BDAFB2043F674EA73 -4962020D8641448B253F4C108BB1244279064765CA38869A7EB73377A168E596 -1B1E7F573D8C09649963F67CB13DA10D55938E6321008B54FAEEE7AF48EF153B -520A8E750230D50631819EEECB35B69369C888AAB9103BF3A60A7CF6F357E20D -EED0F3DD636D920AB08797A37577156E3C56B37604C8DB2744DBE77CCFFF9E9C -150CB37173CC122C366366EDB5847053A74ACDE3AC86A253EF7BF3B90C59647C -A265D5F3F9D60352A41DBE682C3091F64C3298369C71197245000C81B17A69BE -E8F7AF9BEE7AD5DD407E9C262D52603B16C5B0A87BC7ED85E10FA988DB688A92 -470100856BE028C6A8ED4630A58A2C716E79E4AA1C59E99D1B38E65AA30B7BC3 -B4FC020B003DBCF97082521BCDDC572969864809C35F0BC5C7A59B86DDE788CF -4544D70446CFD36D388A7BFC0674CEF8E44EA7FC0DA8EEB5B4A8A4D61FB4D8A7 -964BD32CF308E0F0A7CAD61670A6E0C0B0377951B7ED60BBA08F874D9E95CDDB -D3FED52C51D26800DAB50AA62361C0D1A1757831BB68863A34DCC811ABD1BDED -4F258F2DAC1FAF16061EC47F5F742E507C3A3B72190E56E9B5E403A0771421FB -BA346C531A4E12532D0986434EF9655C3E1D9966AC9F9F2DF8B5381E8C764746 -D14BB1ED9A0BAF084C74913B3C9D7F90080AB112BBA10812A077E0D090BAA92A -2E88142580FBCA6E5AC62145C7A4FE583A6A1F7212624FAA4BF2B5FCA3CAE188 -2F21BF5FDF3BDFE3F72744C3D842117D4ECBB70A98762196BE6D9B2127C5B629 -94AF67FFB984878F2DB8F3819AE130F9785522624503B9CBF36A2678B3C9E3D2 -79826C464A9D9065659902F630A527EE40BE9CDE25106188E837BCE71D465576 -0275556A73BC10E2496B580DA205C1E334B77577A4F2CA9A204C9811B60D89A9 -C4746392E83EA6BF260F17003E3D5CEF2BDBE28FD4ACCE6AF7CC9768F726431F -C42B143A26C67464E6D24E11AD4ABAF999FD03F2B9D816D51DDD3E3A8E4FF196 -4DD14E67A8E9FD2D028D1969F2D9366C404A0C19D6800DCF6A1A1079B45E7E63 -3CCD3F2DED5AF585C938A805AF9CA4A3FD6219FC44CD0E303FFA652726DC0145 -EC6F96F1B0497C84A6623D32353CD7684A1F4437B892CADF70334FF6D7B4C6F4 -97331632FF1FB14388EDF4BD996C2E1563BDA1F17916F2594A12C4176BEEBE9F -1EBA0D351978D9114E360E1E97265EF76FA4123E6ABB60D4EB1C67E7E16CEA41 -8ADB60B13F58C8E45D64FF0A49EC86948AFC2A6C2C778D5F3FFC73250A597961 -B66368352FB83F2948AA66104BF95D062AF7FA1C5E841724B47DFFC6DE5B4667 -59C193D44CE020779A0B6E2E7AD45948B2225F017324471F2E9474AE0185C815 -632552ECB91EBF0ED1FA7A4A3BAB2D9C409673850C4C8235DA5F8C164F24B4A8 -1242B86EA0D8819E4A6691BA3B2E079D47374D02DEC8C94DBA8B02D496EEFFF2 -D9E6B8CE0C5A08EB556702A7948BFEAC76ECEE848BE845F00CF9C96E49C1C8FD -E45265271E6E9F502C8BA397253013F7B36669E5A15D4135E96C39075D9EC1A9 -87BD4483518FD415861028AADD85995F8CCD4CFD94C7D63FD35E370A8E2A8FE6 -8032B72C34E9E46C35733E6174779CDF1D7F5C2021806525D7ECB9CEB57ADB54 -B836AC834D57F69EAF2E79C875A1B630138C9B03ED2FC51197FE003A1868F38E -5ED37A4059F02FFB141C9777BADC54034911C9AB27A302E7159AC789FC5E5CE9 -EF2FFB5759B3C76AF9E24214CDEBB2918B910C105609EA380514F643E9AB0D57 -8534DD2C434F3EFA6C94B7BD3485EB7A78582F459C6A054E126E18C534A2EC03 -D628846D3ED6A4C1CD9A8C9AA0639BFF5BE9788EDD3A24389AAF9E7D995EB567 -5E54C76D753154EA4A57CDEE9250F59ED11D12826D7439BBB7B70BF8F3CFEE4D -4DF2FA84E2F18D400ECD0D1A78AA64AA9F59E6B219F4047F1C16E861E74481E5 -39AE96224C82F799A00C0ED0FA0639680D067AFF647A1941BACD26F508AA6EEB -CB9FA43A1FD95383F60429A55B68CFA6410F6E80400F9AC9F012CCB56957CDD0 -B9093B7AED6E64971113A3E0F30F0EBBBD7C03E1ECC927BD1C88AA72E0D5D0FF -E7F814E3E29934516ACBACA207CC58B83E4C95882B7061CE86EF4D5E77653411 -0E77771D733BFD1B44CFA2460615EB10B1B0D593BFC4172DAEC9AF82B8C494D5 -4B9A1AB78CF03A6551F9F1B2D2F945524969FF5CE3796E9756902F2645465412 -9CBBD99BFAEFDDE78FFB6E6D8882C233355671ACA927B533B84D89680BA3BD37 -FAEADF8A1EE2C7D32CA2908051F9CE5336AA67E42AD842F98E8C5D15D1339193 -DA36217EC992E4A5CDCA0138CDCA8C80B419A990383E4DAFB7F06CE54C8D2812 -CFE50328396E1E484864A9674A24AC6657F47AF780DB3B09CF5270F6FB67F1B6 -3AAD016B2CD017C7D6CD5F7C3A6C39C9279097919A225431CFEDD243AD1C3262 -45A52A6BB700D5C6BADAC7CC5E325437EF1F238C8CE77973DFA2758AC5DFB0D1 -91874A22B11A284FD2685CFA01021377B7DB6EF732E9EA93FA1D52F604D45696 -397CFCE2E697B6D8845297F4EAA0DD8DFF3B4169AFE951EEF8B3A0091D31B4D9 -96C5B570E0EB109B83F26E4E2D38652776D7C08B8FA74BE4B5EFBDFF0FB1276B -C2C38BDE4010A54A2A787355F644CF95463B39C0F30912A18682CD389B114D6B -D96092257734422B9B94CF11AC283BA9EBF422086C34FFB080574BC74150B59B -86BCF45476AEB3E070173ADEF15F3D9927DD57898B1AEF83FDF158BB1C1F7D1C -36CF7974311E4EB7AD062FB94446CEEF7A41E5988EBCA5EE039CC187C28D1A07 -7153E501CAE9E0765E7108B3E54279E2AAA4D6C8AF8AE7EBB921A762B70CD379 -D8BD0C3C2A75D382C7F7CA7EA2386EB3931A013386DC15BDC0CA127DBB50CE4C -55522120A77DD300B20F014E5FD531B2CF7B64C60EFED90931B88D365E15F460 -3409DE0EC4AB6828DB307652292BC6E164095F10543FCE8183F3285A0F5A43C6 -E5A4F99F013328654BE25FF9F1A00B28C3567DAAE8E4298CAFFF3D23DF7042A9 -D16EA73CC66D766BF0F492B7FA78EEAC5F48AABB5CEBEB2EA12D4D4E236C0523 -45F3FA88307D43CABCF98D3BECA6B1C66D0E6E7728F9BFDA5F8B00BBB431BB68 -B07FBEEA571AC45DC2705507FA1E0AA56736E66D332AE7467649B01791CEF85C -9F5E61EED5917625917D54E64A6D311109C5FC77642BFE690E3436F426F5E8E6 -D1C7F0DC69F82A70A6C6B8F4EE56BAD49CB69A1095E9338DD02D0204F6B4A172 -65801587FF6A606854C28FA8412ADCB8C9037A75F11825A4B25358C99A3DB841 -C8A67BDDBD597BAAC92AA904D56CB71D7FBEDF3D4A28643BC0EDA94FB838F194 -B973AE5762FAEDDEBA5E1937359FD8A7322F8FAFC3A9D455CBDB14F871C07D7A -1FBBC2835BE086A6064CE3370C6309091FC1527FFF1737C320D6563676DBFF82 -5B854E07FDE16D2EC0FA60ED7400CC42E9DC3D9F393FCF8BF720BE5C40F35EC1 -E1AD3A43E4B4F1E6D9F517AE1AE8605EEBBEA5D55845C295B0819A0020124A8F -1230C36D82EAC9F0820947A3D6785FD9188D6EF4493CD4586DC64865CB524DBD -98A6184759803A89790C56FBFF78A6033FA8F9D5D4F4174A8F90B06199C6B64B -2F7F3E4834F08716DBC38752080C0C3634B5939DC11296A628B7C5D0EE52B047 -CC0D33E294787D350DAEF2B0AF65C41088BB0D45534ACC945D0A3AF72BD37244 -0C4CBCBE8F6FE5C750A2D6362BD31B0BD557B682502049B3F951DCBC2B5073DA -4B40A5F777461276F43795DA60ADD19395C929F7D7FA41B9E37468648F8F257C -0DA9512648DAF02FEF7B66BDBC0231457205A651093B5BC70574DCD97E81EE3D -024ED0F83F65EF66A6675449FCBFC8092F02029253453F3B76988E83EF752556 -8F85BA3C5C14FF6DC3BAFB4A70B3E7A52014FE94662E7CE2B72CED3850277A2C -10423E25A7F2A3D320D8F1E60750FC419C124464E59AA4B64ED94A92F68AA079 -257626532AAB68BC6BD10FE586388EF64F2813D6CA8BB62D34BCDDAE6EA29DC1 -3ACCEDF31DC9D64B9AF3D282CBE18344C70F6051900B11B3E3C463FEDE2A2CD2 -042C9052E1555E101B4914254CEB79B356D788D142B6101BF8FC2704982CCEBB -6E7A544CB6AAE38A8D9DB3A82DF63EFC3E8AE4F043B7821762C26F172B65C26F -A96C8BA3E3B863EA1E9A83D2E5A64E0C4A5B430F9875641E56BD57F964FC11E3 -46FFB31B0E1E4ED6982FD6E0924E49D59702A6B3E3201019B537D75C2CDA942E -2FFFE9E119E775BD2C24C53A65C602FCC2B2A5E9BD6F91D4FB857B294940B381 -8F66AC4EC56C14A87575F9C19729216D08896CD9DE00BB216EB775E15844975A -5BFD89F556FC081048EC3B6E6458F760741878F7D8BEDB7FE7B1CB31869B88C8 -E5CB264D335E0172D41F97AF6CE9B270EB0ED73FB97A20741C02785E60AFD1DA -C1D9EDEB1DAF0B0E08E8B7056415CEB973404CDFB31A56EFE4F561D0F16DE6E1 -DE0A6F3A560CF5B8092F7C394475983A5624348845FCE4D2A31DCB0097359329 -1A7236A7CED818C5C10BC32862C9A9483FC1B8D28A4ED48D142FB752BCB97144 -BBDDAE4444BE8CF003EAC9A72C81E5ED24A22C4AFE36137BF405FA1717E34599 -69CB28475A61A0AAC42AE1110A1FC7596EFB94D29913AB8FC433F021DDC99B6F -B1297B6D9FEC200EDB3A2C7866C9D48D1CD113894CAB558D1CEED46274F9664B -5B01ADB8C3D2669385B39AF0EDE82F2DC0B1721B87BFB8F8A52DFC012587E4AA -CB77D79AE9F1B4A363318B4D68B44B4B9138A4D164A8E6BCE52DEA85E420229E -AD6DDD7FA414CB3EB0E6AD6F320E2EB399DA2373194951DCAB8D37994D4CDD96 -3A0697CF3EA66657F3132A7718A6A8CA650E1E454597950BAC0D203E0D14E39B -488CCF015BD273DDC4F1962DFFB6C549888E66AF7C12189C4D322C46A1B94811 -4E68EC5FE69703E348C5B3E991AAC5A48F35659CC1079944F0FB00831E46531B -76DE3789894C940AF34A6906AE8E6519B21EFD8F0EEDCE95656E9F4FAF4217E8 -F6666CFD725AC5E0C8D84765B5B324D03F4C8860B2B67E110F5B7091D3709FB5 -01E70588FE0C48051A8AA4DE3EBF08052E1E82421B48B63D08427D3A8341D32C -A5099445CD86BFB6A7B2A325F766FD377FE664725E07A9E0C06AC677F716C039 -03E7C505D8DD4B53D901500893C9CDD5DD1741EA2FDEEE27D660BD74EAE458EC -1962EEF85B4F5C52A1C35D68AE3F0FA8E05D74685FBE82D5CE3B48DF42495AB6 -682FBD474C6A4D6D0B7BAD5A0C8B473385F9F20A6B90114900A357E8C3A5579A -EE7C17C5DF4580391B0BDB54095E6AFF70EA373BF6259B5EBC65DD04055AC8AA -A551C1375F9A5474415F6BE80DC4F9C33E90BD7054745A43E679B4C31976B677 -ECDB117F214BD226141F81E65AD48B9970CBF2979D480B25DB8EB8C4C398E901 -9B233314B0451A846215C9114651CE3B281BB456943E845D6991AE7E2887689C -8484921BB3628216A31845A956C74DE35E41F6A52732CE86363BAB159081AE2B -429864EA615983FCC78522F9C044C3C3243997FCD7928685AF789D10A4AFD65C -34B1E170C18DE780875428B197EDFDBCA00F5819DFEA045E89AFC4043C892F39 -0F569F2F9F565FA16DF286E9745CA5051A24B31B18D7C3E912F99E2310E61E02 -8F3815455A787CD3229C376AC2432BCD5871C7E4295904C631357A8F6D06B1E8 -832E72CA53BF79C2CA8CE90DE93C61AAF973165EC8BB718A9608610C57629469 -87C2AC93CE52DB00EF76C794B338E076A44ACF09D5F823757547850116C0C9F6 -E0CE2469EA405D8E1304268CD471A0DFC668A244AF45916028EC6D643DBA519A -C07E0E551B261247AD147A256A523040BC5D36EF8424BCC27D290778E856FD62 -30A17E2A55966CC8C9AAE4463CBC3F7A1C232BE92D993B74CCCC5A91FDDCAC20 -42ADC63A334B97D988FA5973D9B493C87146443EC417CF4E3280619734B07806 -3DFF5982DD1E262711383BA61D08E8E54F5FF58989690E62FC39C304186913F6 -27FCDBABA76A648EB4A0497A4470606E02044C4722ECC612FC8E0100ED206D69 -C9110C604EA391B33A63719D837EB628D8207F9A531977CEC0A5292C53B8B89F -C6A080D70D9ECB4D48153165D2E20F6DBF24E37F2BAB2FCEA5327E3670850368 -58276BC6BAB3D2A6E448DAAFF82D2B65EBCE9EFE2D7B906B14A21E11C3F811AF -1736FA7183FA883124028E0FE2568235447960EBA22EC16296F0DAB461339F38 -62717140B2C30BAB034B97C5007655B26F402C9559FC2E7A0A6A8881E30DD364 -D1DAB7D6C212813E11FB38713572749FD38ED7EDAC1C7D6BA1247362CF12AE7F -34DC3C4520D524F06107CB51A064465A7A7227BCAB01C84422998F9B53BDC547 -49A357A3D779ACF4F351A8A20C95D08E6930A2C81614B0424C1577B3A2DCE0B9 -275A416E789C4689079B182A5F81EF8642CE885CFC6C5DADAD8F9E4E088FC0B8 -8D1444D811ADCE4E886D03D2B055042B52D900854F44BCB6C84094A6223699A5 -68C7C749C9224C42132CC1A2162CC1388D42AAF7CEA313CFFC773E3528902080 -536948BCEE07BED5CE0311A5BFC377E92A44BEF9ABCDDE0EEE11E536F529E85A -CBFF27F0178F00608C191847BCC717D46AE62B8C3CC5F9AAF01BBE1635D94E1D -701F54EACDE52AB6670632E496271D1A2A2A47F08B85F6E8AA6BDCD096250D49 -7DA3BDC2CFD002C0859D45D8EAA340FC8BCF33471B7EAC9DC43A870C06584E3E -4A5FF7D96F7601D0DE362D5D4D2555A2E8E297145695C4F785B97AADB96A0860 -C93C934B4EC3502479F875E10D9618D349BFB882DD82FBAD6CAF2497654A549E -D61D88D37F36F379E4876FA0EB6AFE12B95BC6D4CAB5A986A6967EA29DF54880 -B4B12A9F2B79A1834A5CDA98B322DE8AADFBF527C2919B8A3BCDC326D77E76FD -73639226E6CC218220C9D830FDEAEAAB7AF5C0D1328DE62564D95BD81C835B06 -BB8083E57135321AFB9877E08CCB020B0C67A9DCB596A5F29080D60EF5D0FE7F -6B79C5ADD43BF8E7EB767AE4C5FD61B5272369E42B73AF889E310C169E38D3DA -4A261ED657A7339130277C0F9EC6CBEF69472477B9212C81A61192D3E0E46686 -2641182C16701ECF8409978E2CAD7518012658991E57D28E4AC66D51C5226424 -02BECE6555DA1A22700A87573E9AE0E31EC99A8EB5CCA2A993A4B10EF7A3610E -DC92826DEE23716AC8892BD57E19BC473DD05D7A0E38B002CD41922B38269974 -F25E522576CA16BE833B451D4D1AA1773B37C5697BFE8CD84C9E2E9D56CD2725 -C4A1877B40E4767984FDE1C2B37A9725C98584D3FB294C4246881AACBF67A10F -BA056B5BABDBBC3FD8703E6FF094E662DC8A2FDDA6D42A53B20E3C9F5B467E76 -3059367071EB9E000B1935CD542FDCC761334C7B7FAA9D92C949B307662FD8FF -953184211C28C17A87A9857833551160C734915CC955E2B100AED778708B2234 -1DA4CF42420E2F48AC577E37B0215F963FC7844BFA15ECAE83245A850F41571D -7EB94F24F517ED326030FC06C0725AC234BCA5EB709AC94D87852024F50184DC -5424EECD7764A0D20036B28DAD748E2084A0CF1623CEF44165CB787B3CB1842A -47468B5D75B3E0AE1887DF58F7939BBE8907FE09C87B5DC7DD64031D60B972C9 -A2701651E350B6FEA8CED3C1026BB7527CEF496C5B6E9FDCDB90BFC820885F86 -AEC5AA8A1AB6646B21906C0CBAE9F55BA7F19067197EC9184C35804E0E5F0CD1 -B04EC4DC38F49B8A5A9C19187E1DB5CF387A938121F184AF436D7EB5DD8FA12A -9FC81A6A033CF6D578B70359158C1E2D6013618F5F872B52F4FF53918D7836D2 -09BA3CB9B54C136B8E4C88E87127470E6455735969D96FDF80F676861CA1B3EA -C0B660713CEAD17C58EAB552121E1427C88514350BD4764B13E5A9F7C4743036 -43C5366D8E21D5A671FBB8FA9F2624F12CBCD6E091CE2BBDC995F22B5E8BFE79 -F004AF81C8F356ED727FEB566FEBCEA9C3492EF8DC96F2F577D83E971A04259C -D4854A8082B0D0412187D52A1577258CEA6E5C9C7285A5E25F56D7E6174842D2 -6A0DE01BFB8DC07C68D2AEAACBF689B2E04B331688F34905C70FE440DE181813 -0794D602A78DA154A0E645A755FE24E9DF53A8B4F088FE37D2605ED5ED7F0AE5 -F6A6FB2C217F345655B278963C63824D9EADB59C7B1162C34552458D07297E96 -2E5AFEB35AF92F1C80CA21034D1ADC6ACF5CDC8A222CF4F99F7A18835F58ED6E -1F6AAB4C9B87B871597FEC7DDC2E1F5FFA5EE99DF922836271B4A8FC656E8B54 -46390B875F620C87C91770D9680014AB56E3FF4DD716B24C37974740D64F8DA3 -83090823A2603D738C2BD6D0B5D7AB9327FDD6755D8F7F5A6F1AB1ED99ACD70B -9A484496AF0DD7C685591A9C9E68B4DCF72EAFDB06E17A1AC7DC52B7BD1FFCC9 -D9BE7F1B614D78583FB226AF258BC38AA717495F69A6F2A07540751777F8F5D6 -48FA795F46D17FDCE22A2C24C90405E24A7A8CF5994216850FDA44F072AB1856 -6C3E4BB95CF70387C627A92BB98D83CC90B20A9DB97E812C04B4A4CFB13B698E -364716FC614B11DE2E2E005825F94A7EEEF36BE353DDDECFB6E6DA6B5F8BE620 -0DCFAE92106A75B5930473286DBF79ADBF6EAA24CCDFD78CBCD044AA3CEAC5C1 -28552ED49D36BD421A7F8850AABFF7BEFDA18E2947AB2123AFF0BF96EE9B79F1 -9C7ECFEAD3C0019D2A4B3D38B748F8CFA2DDF7E927CE235B7EDF0D1E537BC93B -49D338C3F7432849BB6D23E9F9156627EEF4B450C24272A28DDC49F3CEE89962 -31DE631573BB6E668F5D957909DA00E6709A98ED6144DEDF200DCDD2831DFDB0 -DABC6241AD9C20F19A71435669C8BE538F1C30C68080100347C24B57FE747D6E -B4053F7185BAA9B34EA42945212026AA852F9002182C8834CA14331792901E33 -FAA0BE73BBA726223FF2568281EF66C01A5A607493F0CC5EDDE04C1D5A6524F4 -E7D9BE4B705B73B71F2CDC2FCCD1D4667386EEF0D7040BB168F26A123A9367E4 -6CAE6F5FEAB9035ED8A33D2990624A49B63725E56D509CC674F517A288DE55A5 -D7BDD56550458877C44C79F2C074A0846776C533F675DC7DAC1E29A3A3CEFA2B -0FEC3C803FA8105C6FED3F7057C9EC2009CFC0D6FEA28A074401BAC04BD8A263 -171926C38F07B84FA04FEC39815E22D9546307785860038F3525EAB182282F45 -1C05BAEBC80F28B606CD069ED3D56C1595DFA3F6E62165DBF1EFEDB802455AAD -96F10430ABE6C2DD44B1F4FC13CC5B45EF3737C272DACCAF2538C3BC50E80C62 -C866714B08347B11F8E891F8168F7FB9F6237A1C2E70916AECBDA1516009922F -F4D3FE0A3821732AFCCBA5EF377077CB470C271E14DB53E89F5204F925081159 -1D3461BC0A6BFF29E96F6B10760C3DEFAA87D1755F50C0CC1C0B40C08587FDF4 -32915F8C54139F71CAC33B62D87D322F2F14B8352AC8FCE60F59E7B63DF0E3D5 -E1756D0B70565448B6865136385CA8C2FC8643C49082660259402A42D3F3A2BA -0788BA660E3C1B5C42EE028B111606C802E964DDD644435758E05E87B4442C3D -640582C97265F09BCCE96F3ABA0CCA9DB76326AF0282B4D4A6D74E84AC0B6377 -5A0B5B5C9758DCB9D9F658C4D773FC4083D911450097CD4A93B504BD6515C0BA -D13BAE94B40980D1898D1A6B4075540E9EC15A80F20590B5BC7FAE201DF0E359 -E7A65F856E80BE304086DBA7E958353AC24543AAC9209195DC68AFD46FF165FE -342BBC77CF2596578B15197F6A7EBF94E6E76B014817E890677C83EB419419A6 -221DF308522D945B5ED34A395167476F1F795AAC0AA84C190C353BE149D50D99 -F8F5F2D463CCB6D4C3BD53C0D2FB668D726140295B0255BB8B1A574BB3B72D61 -1C2441DBBED31AF04911F1C92E6E615A51C44D7580D859221FADFE07FFD9AEB3 -1361A8C071F1DA5F0D4F956BF6C1ACBC1EF9BF3B6C276AA96772C8B1570C0E7A -CB001B497A61694344B665B6C8EAB0385E1B27DC2AF97395E0C7315F9EB780B0 -9FD3941132BC2E3E7380AF786BF395E51B50C1DD9F2081A3C4A4353BC4C2BF29 -E11A522E62B335ED896FE6CD9BFA9061CC9F88CFA976BBF50C75C1D0A788C47C -C04002D700AA65BB3CF133304F521D2138108EB7062DC6B430DDFA8B2D9848DC -9B9CB14E3153616229DB50EA2F99BFD76F1AE1F7138BB20EEBBEC936FE2C3AE1 -32E23DDB9EDF4FD40BED50913C4516F30BD1C9093BFAE537A4AE4E40929AA924 -A82E9DCE7A9E5E657D000F958F8DB7F0D8226D2C0AEEFB2F837A77E7C2BF760C -6728AEFE032A82125B487EC4355DDD9DFB541DC313992CF1E204AF8714C740C8 -B096C87DE1000478FAA93C0966B9DD0693EAB6CDF30C1507424998C9C64FFF3B -97002CC08ACB30F05222048EE59FF315D07B458D992365E0EC0C0C8860269A86 -4562BF2F8A561CD08DD5C16625FD26708E52A8C6FC065F4CC11B8359695E2B66 -2B712387F7DB0B4DE29ACAA503D84B5251F3CDBC64C0B24EE759AA0483BFC67F -EB0826C1FF9C4102E2E55788BEE0129731E74F7A1CCD8EFF687D52C36C5EAEAF -39A5DA549C84DC7C2404ABCA432569860F70CEC5C09D5F1F6F7C8E771AE47E43 -E0A6EF05B0338D065F9A3AE5F5C802D8ED5A87877E491E3D0FB1C199EE9335E3 -5E6FBC17B4C33EAB15A6CEC38E3794B96E838425D7CC961A146808B88DE353F0 -09F9813831A6065490E1D3516467DCAAB8B508FE8A24357CE001CE2AACB7117E -BD32D2B3818E7F205EC2AB344C4F082570F3955692EDC670EE21A2D4F30C4D2E -5314632B7FBF2A5737D8749281F41191562109809E45766CE933180C0E5AE101 -A857E96B1D52FAEFCF6910F1A241C8EAEBF6F5CF73C5FE84EFBB73BACC47DF16 -4755F72E62F669C157686EC559AAB485A132CC47D0A34605C06540EC7BE0485A -BF7653D4E191CAADB45EAF770901A9E590004524CEADA3A90D644392F2E24577 -9EAFDE24F3FF88F54EC4E4CA70EAD012722824C025F202076A33C48B06379F89 -6B34C0D0C4D7723B5C130767C64ECE0D40F7AA07676391831FCA5BB4CEAFBF06 -FCD07570CB9FED395B2F34F2F06F405D94E8CA048146022467BBBBCE9A45D8B7 -A5F0E76AF213C54B6C0E071B6080C4EB603F6ED7B2E3FB7B250DEFAE8F6B0E46 -603E7E5AC92D01AEA2DE6C858D2E8E644C705047A3720264904E407E0990C830 -249441336188E63108CB8360774CBA9812779156AF52CF9E14F1B25F19EBC646 -3F97ECA6E26117065EB974098BD7D3478FEB9E69C80956AF7130B6414DB6A7F6 -ACD38BB0798D8E805AD4F8E0DBCE8A2BD64104C9476AF18B51BB62942541A8CB -4769024A2F0B83229C5B0AF5E543C4E4E38870B1F3748226B65602C5898C317C -0984F152FE7915B1A4491290BFA0FBC91D59F2D58F0A0002EFEF77F1AB0AC9D4 -B2B1EEF4734ACD37171EF2DF46609B929957F1770D539EC3DF3018E33E3D9D42 -E20EBF54A65BBD4605F30AFD12638E768507D92A4D4CD31B146DB78B75A4F8B2 -3D1097DB4730CD3A90566987EE22DB64B2B690AA49E38F97D9355AD8547D1AAA -DB256F41C2AF211BE2DCBF5112256CDC9DA80DFB1C7512E46BACC94DA61E141D -647C722A913FE8286DF36F3D64ED7103702AEF7497AADABB862FD61D36FEED9A -B3D130E5ADBCCDE21B58F8EFE6A36FFAC88846D2FB6E39501FA6FAE4BCF93B6A -4EB312B78FDD01C3E6A93072FB2707D44001BEA2FD1756DA7487538B35FB2583 -004331E9895E34CBEF44A061C56E72D841A9DA7BF779178D6D0C8FD5E173DB76 -381D9549F09D5297900D73D4D5C1863E7A32C582C76A029B0A3DF60AF84E3C9F -16E8BA6B4F035CB72897C5E400C535E93428DDA70EC35B4598B80461CD3A3CF5 -6AC4E410D10D78169481F83DF3DFB33C68060E1CA2044FBE8FBFD8411D811B8A -69736A3B58FD4C8D5F68C9F1B83BF5D1138E8387A8E04F630CFA89D0BDF3C9F7 -5494496DF6E70C8D01CE604B376A5C74C1976A54E662262BA8024ECD6E129C44 -4C8E07547103C2F7687019F585D3F8878FE9403621EB3DC7D85C2C6F30AE23B4 -6C450BCF969B3E31EBDC468376EECCA3D062F7C59654818DAD9A0912012CBA1E -54721C01D4558E2DBD7CFB7FD1E02F1E7F725A181B642B1E9877D715480BE25E -6BFA7A3066216EFEEFEE483843F9C40B5EA04A405ADEB25654A33D1CFE16CF76 -2FFB5A55B6DEBC4B9524A8263B49EAA9A9B40A05377007487BA5C504B11CAC39 -87A0BE02DA2CFC31A8581D619CF49F5E44F58D74A03CCDF062A11DE29CDFD36C -6A68E596E5A71D2C13B2B67D2F9CAC94A143D4D070462D87709DC8B4CECF7D33 -9D4647F496B9F6EA69E61D697ED196CBBD9AEB6345A59A2449F77A387339E501 -E74B0F079CB2CB703E3EFFB68285DBDF3F331602FE0FC1F0F2EB38A6C477A78E -58C24DE6381BBE6F7B27B78C5361816BA08A792D7410BD44BAB2766B1A81239D -EC2A59B73405B412C2905A45DCEEB97794BE48E19A25D099578D1B8F35152362 -D618D20C644ACFAAADFA17E4BE0C7E13709E4D09EF47426CDB57186E86C1E909 -A35BBE68B667D0882CDCBAC54F8CFB8F647EF13A302BB43149F9C332E25AB9D7 -7860B75D59FEE75664D78E253B4AA3F54250F4A79F1F46ED4C59B9F847521E78 -02B0361113A5CB83C17CE2BD5DAA55FA3ABFF44D86FC797DCC1F99EE8CB4CBAB -CB8615FF6A914D179AC027C6ECD688206DBA54A2531F1AFBABB6883557E886DF -FC5C71451BEFF41376474BCF24DF6E91D01FF6BC178ED39FACCABF65C1E24E30 -FFCE97516333FD4D27E1ADB0B91F62E8305F8C153CD378F20EA1D2EF962328DE -5D0FAE0D3996E75042BDEC5B9592F79EFEA5271F032039F412F7C213406A0568 -46ED642E9522AC3B33E49F47DBE352D9AACD6E36EE440675DBF404BAF986C51F -63091646F5B33E6ED76A029A7E89CC774F797222BB96B8735D7726F7FC7F1DBB -6085A1899995C603AA59546562B354297ECF3A87ED8C2DED3A3F7BC6B74C429E -15AF13B52DB9EF3494BEF638403F91CC513A578856C0B466D6B3523DD4571F2A -17E508BA1D5EF953AA281B85095BEF79F27764AD20AF1F506DD2E717BA54795C -38A64A5C41DAD526400BFC079482EDA8C4CA95A629BD9C11BE3B64166662C05B -6EC997E65073CA80D5709BBF90D1776C7092C61E989F75E4F7613C63E4495639 -07D815795122528D2FBA1A27D2B2188B0E51975FA7BF2D28130D1D1C4339320A -9199A9BF24A7281FD18DBA1E445FABCF1832D125330E64FE673554C44B4CD26A -2186ADF57793CA017167E6699567FF5FA0DE8687F86AFC92A263BA0FCA0A8DB9 -9B16311E613472D9FEC5BFD39DC268E0A2D760BC19F6ABE0358A32244916F089 -0A6D203D2AF91B9F3FFACA55A9F6FB6B2EB32D3624F12362C09E600EA7A0A643 -DE2D6AD0F04D5870E52F2D1CA8179EE3BB9C8323D4ADD3471CE9697338A910D6 -8A79B1719822A5864F6E93D01D96E5252DFFAF076A11D8C1FD419E3D92A7A023 -1167DC9F87B1355DE64859145D188622F5007A65795E1DDC991BDA29C627EF5E -CF55E60EF9ED9666A5E45CFB9CA7825D7E0B679C0D5FE02EAF80C12D14A86AA5 -784D77BCA5DF9744A81E68F486AB0996D5DAEC32A1609A718D5FB86663985F50 -8AC1CB89A2A3CEC73323E495BC5BACC411B3952C8AE37D84497CA3075ECE6AA3 -A4F252A796A4CF4EF6347891FA54E81A21121465B46DF88D590CCE159D0BFB12 -246D35E1A6F369E47B5C5CC59FC5BF78DC2FF476D1CFC3C1AA14E6CF679CC658 -0294E5622E6F392A0BC4E7BFCD3E54B8FA6B7E476BF2ADC67EFE627899BA746F -0C7312DEE1DBF8B71170EBFB4C3DB37609F3A5B6491C781C169C46B65BD4C7C3 -8520F297E1C25749EEEE7C92FC9DF43533FEEB00132CC1B5EFD7CEDF2534B256 -912526F12590D8A23924C26A22E8B0F3BBA6DD83E727481F6187C4FC0E026F3D -7EB38E72E1ECC5F4758524E6AB300CAD45F06B34E660233E4EBF73004A6E5D28 -F80822FA405CB830C25C6F0D75105DB8A3994BB9257BD1A39DAD2AB2BE814BC8 -FBE19C3074799D30ED470BFE77B4D484A9415B52A4B3B748294444831469CBE9 -DF73B2B96828273266EE1CE7E233E574F7B2D21DD7CD5E6B755BC54B78E23B62 -E3708E8BF213C0E5C3580968CFB0124A91BC461A7132E135F2976D8D49CF1564 -ABA2E715D31B2A9F951677F9047B6AC42DEEA1325E63472DAF7374E6914C554E -5EAF8654DF454C89850FB57379F9EE2FB8BBA4C1CE06E5A689349585BDBBBEC7 -0F0C29DC31C97F7D9637B673F03973ECAF59FA4537A4A91B483DBBE0FF641DF6 -C32E7CB0E2F4783CDDE88E9B71656F8A38D39106263E7D812CF8C9E5302F30F3 -B286D28D12D34546D833D63EDBBD301A32E4D84A49ED74020C7EF8D244A4BD8D -76092C90A9C46E4DCC985DC9EB98ADD60AB42D258163A585C2E96A718B1AF3FA -F82E65D3F5FA63BEF81D635EA40D715B1B8D41E4680A8FCCC881DF8EBE280C51 -9B48514A93693F22624B60E6A408BC4B6E99050533136B7A80BAB4D556D170DB -37943C7867E2F360CD99EECC0941ADAB053C4DABDBE5AA7C51CFCDD5F52BBDD0 -0435513D1923FA8EA278B434D98F5C38BDA87F5FA804BB9F3531FB0AD92C7091 -36E169A7FB8DD656EAB156CA53B0AE51AE1BA0D9465E0DB14AC6C9317D599B2E -02575E1EF48AE6F9D37DAB1D2FBCC9DED16CD08D031DC37509F2DE2A1C75FF44 -3D27D3190EFAA4862C8CC17C5899E2D06758D0CE4FEED4B9904A1B5C59EB3BB2 -2CCB6F94A1068A2C0A4312512D09E8E131495F0778B147700947F137DDE49F09 -C4E98C9D09DDEC7BCE2028D8DA083005F55DC2F7955F09F3A302B94F14C6BC61 -F676B84125753E175FD9566477F456E539C867413F1B0C2821A37B504D03149D -733E17A4635F3BE3A99F21A00718DBDDE36890735BBCD5FD6B79FBCC3C58688D -5AC44904089513A146744DBEFEC3FDAA82AD8461064B9CA1F53F45284B565949 -0B5617015FA25AB2F38DC5F425BCDF2B3C3E49ADAC1B74F7FE737CB5E961B005 -55153B0DA51CEC202416136984D640E7E913A37619150D45593505DDBEC9D461 -A4CB8ADD6F0816DBC3258C39C26D9C23F0A83BEDA744FFFB92BE95862D934084 -B02D44CFAD4AF3F43A358F21C3665C201AB87649CC9E6B03008DFAD41533C335 -9271F6212F1A3A4CAFD8FFC77393B0F434424F345687D60692E61294B59BE135 -A88109012E14C2602B72C783377BFD8C6E08392DD4A917AB29E79D5F470D60D1 -09F35A4C53A027D1B037E68C746D9EFF59835A58DC912864D266C0EB6E5791D9 -A0FD39024A64C1261CA7D9D4E396241BE808E2C0D2EED9BE545954A02F0B6E4D -63272D0A4BAF74A66A9D7626A6AF21FFD4FA2213D524F6784FF3CAC74FF74922 -A4F670CF057032D3036C9A361161BDC356F7AFD58777C90C8CF97776B6D910BC -405E1FD7066792CD137F7E3D52D0188C7AD1BCD67F72657C2F5F4AAD4CF465BE -A2529DF2C60E9BB834FE5DECD16D1062095E2BA9D9A316325AF0BBD3800F537B -9FF87C602C104655D2E8B28ED276F20869A9A97244A4FE1705C6D2690A743559 -A57790B86CA7C99FAD6ED5BA19A5849CB4888A35302087C015BF38198149936E -76AF06B0EA8F51C90D2D70BD3D1D5711DF6C402CBF050FCCB1BB2F148FFD3698 -EC950C59F65BCE68F22029D6244F6E585E160E235E0DAB7BA440FDB7CB21F471 -337FAB834131C78327A7D6EF9415F5294DDA616B17FCCA3CD94853C930BA5836 -343EC14E60986F5F5A6A5D6915B1C968025B5CADE5C5EF65B0222B81051D07EC -B1CFE4BCC052F4AEA5D5A3F1D2C0EF5AA256402B0BE874DFA9C4D8E9BEB7E901 -B6E98C58B9BC7AACC592B716D8BE64B9322FD7793B5C759D9B2855E4215EABEB -AE54F9DE651E7A108E444F72C7333C10739FB44B69CA887D2AA363A0D3B84537 -705EB9B3CF8CF4997917D5D57C9509DC4DD1EE8D03BA5BF280CC89C8DF317A1B -54AF2A6E11630F56C2AA9A1A8F05F49D9BEBFDFDBF163B51D3916706A01B5D14 -E9EB155060D09A61A8B302FDFE85C6D62A3FCF8AAE3C525726802F8A1CA5813B -F6121ADA8486129AB7A792E791CD6A8987B747F6833930C503D6E530B4B6DC18 -87B80CFB0AA87CFF8304C4ECB8A2E404B7A5932A965FFBCAB12BF7B3EF68E2C5 -AC089CD88DAD97E6DC4359FAA7EA672DD787A69B07B477D8BAEF29CD1EDD221E -AC3980B3D74523ADCE1ED4D5E6426355C6B2B5857359B7B7707ECDD4501A6B70 -55CDCD0892D1F28099C331B3A5B3CEC3524189B37AF696E8BF2B19183698D42C -8D9D7294B8A25933E70D514043393CE83CAD9B669D5B65277E1294979C8B5733 -510EDD4915BDE3FA9B57EC365662C1B4F3A2276E627895DEECB32E5B05ACAB6F -BBCDEB32889F78789862FBB3EAE77E16BD5AF534A3A04AEB484BD500FE942C37 -735FA0C3D274F48F96C1F52FCDD1C782CF810EAB485E7D28D6D3A95E6FEA264C -2CE8F66D9A988D3C20A8857A978F48CFD79C5049E6AA36C71EAE67C6A3DFDC81 -7FC8D6F3025F7DA2F700B72F16E32A379542F7A9261EA1CEACDFD567B563CBD2 -C7B6870D268747D778545F33FBDD128106DF455DFF84AFE5DEFCAD295CCD5941 -69CEACC1B3AD661E54217AD7685DE74BBDE56016F3E8F197EFAEA6E00FEF4B27 -E6504856A6CD4CF3299BF4257A114CDF40874009730989A4A2E0377B6E5E6A62 -452534218DA4FBF9AFA443B1B86986A9BC2185DB02A723502A1936A33287A850 -F6C2DD755B62DB4B481EF392BE9244D08826287EB033DA13E0FBC94132874112 -C1911B39542805EC001E45AE4B4DF452A77B72DC3EF03349D0092A08031A6B12 -3D18BC428FE3CCD6C0446ECC3505248727FD641455F0ADABAAA1AEE0A8B3D00C -FE5D6509CA929CE140EE150E790792E847626F98CEE5E17014A0F0F474276E84 -622EC6FA348E06115BD2E4B13DB02F53D072573D8479D28C9529ACC224167D2F -F0DBFDED9341F6491555331FBCE012033CFA627DE88AF8E25AD19DD4271B39D7 -60387D59062E34339A95AFED386833941380127CD9600E7E3F3A27BA9ADC1D35 -EC725EC46BA57A63C339E58066FD385583E8958CD45FA99BC77E71FE23E1E338 -E014A99AC3915B5FD331BC2387F9FF93081BC0244D03839C2ECF90BEAEE7E522 -E65C1F0F2BC9FC52DBD7840A0DE37938419177C6EA2CFE705A804217656521BC -FE3B9A64D83BE3CB28E8567689A5FB632A7C0FE2D18C70512EA4D64F87E774AA -CD3AA031ACCD9386744695923F0344103276C3AB6F3741AF69604C519901446D -3A12157DE158C06B10BE262907D9AF95F25E9D6D3FDC5FAAF92F3DE042A144E9 -D923EF6317D30C115D07E7A53A9356EC375882C8E6AFA0E7A9E7549368D68D79 -4660168DB5E0EA39B27E9ABE37D81830A90902ACE346336B4A3553F96FA27FE6 -B0D872ED36B85F2C00BAE0EABF40BE377EBFBEBA4BDC7EC9B0E09959CC43988B -CA2B44CA18B10CDD9DEDFDE8BF59214F1D9E5E585D457B28DD0F94BCFA601123 -97F94118E3A61E67E201C14CE07DE1DFEA766B7AD07F292267E5EC374F9B9395 -6D7A3161E903C0D9179E423A98AC006D9C0CB07CE874AE3D6716F05F76409289 -83BCFA351684D5918BF0EB05487D534614C3262CDC7FFE1E67D6EFCFA7504C40 -8940691630048E7670347EEEE1F5FDEE09ACC413689374DAB4C08846FF2C3EF1 -CCA35E50D820BDCCFD9B41373E2B69C5A391AEA1C98CC87E8404F4DDF79F11FE -07C6370B1BDA73DA1103B10FEC9374BFA373416F7AFE313ECD78914E167B4FFD -043796AC7A84C7D0490EB03645EE5464DFA5BEFEBFFAD7ADF83A2FBB315C62CD -29781BAAF0950D71DD863E0F304B214AD56FF42F10F03DA3884A5A30282431DC -85F2A3C84CCD70D1FAA62F0F4A71FC647DBE78437D96E52928591A2157933FCF -F2207083D262984DE8B112A5C210337D177F44F9ED3C62A76D9482122E89EF48 -B5540FAFDA5FC8CB78B21598F7A1A97E90D9E3899B92D84281A1F0C32545C153 -3C6024A3775936D9801C70CA6F91A44C802662A6AEFEC44003BA151459461CB6 -74E74195259572 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.0: CMBX12 003.002 -%%Title: CMBX12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12. -% 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/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup -/UniqueID get 5000769 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 /CMBX12 def -/FontBBox {-53 -251 1139 750 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) 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 12 /fi put -dup 40 /parenleft put -dup 41 /parenright put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 56 /eight put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE -0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D -2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 -1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C -42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 -FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE -78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 -22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE -A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 -4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 -4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 -95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D -9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC -5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF -9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 -CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 -BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 -9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 -EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A -D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE -2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE -947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B -0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 -4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C -BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 -F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 -6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 -D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 -F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 -481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 -FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D -419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 -7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B -70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 -2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE -0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC -9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A -C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D -1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 -A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 -21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 -7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 -17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 -30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F -3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 -96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 -B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 -1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B -57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE -B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC -8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 -8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 -B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E -BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC -21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 -D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 -FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F -A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 -A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 -A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA -DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 -7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F -07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 -BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E -8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 -E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C -B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 -45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 -2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 -5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF -A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 -5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 -E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 -5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 -6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 -8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB -BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 -9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB -B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B -B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E -8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD -595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E -FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 -13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A -FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 -DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB -313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 -C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 -F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD -DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 -8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 -E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 -A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 -C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 -417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 -19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 -9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 -12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 -3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 -A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 -90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 -3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 -B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B -82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 -1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 -AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D -9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 -2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 -99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A -31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 -3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 -F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 -70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E -5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 -84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 -BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 -8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 -5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 -9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B -F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E -94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE -0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC -E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 -7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 -596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 -F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E -7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 -1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 -AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE -4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F -744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D -67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA -054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA -6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B -8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE -CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 -EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 -C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 -57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 -5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F -C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 -CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 -848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C -B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB -77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 -87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 -3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 -409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 -A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B -72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D -99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD -8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB -E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C -82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 -C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 -EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 -23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A -59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F -C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 -1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C -403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 -1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 -75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E -0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 -82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 -C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 -A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC -9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 -0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C -5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 -62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D -6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E -1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 -648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 -FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 -754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A -E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3 -C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055 -531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F -AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB -BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13A9 -C528A198B8EC8654AD69CCB5C209964A2B25D6DA9BA0FFB366D19D8C69701D7E -8ECBEA88569601C80E19A4165AC73F32D0ED08C8FD0D0407325DFF60D69BC8FB -95D27536CFD07285E9FA0E957BD98B45C2E7A24AA33635C6683B801BC89AF92B -57BDBD4C4FA2979D6344AC3198440DB1709FAF1D9DBD7EF56D6161464803216E -9866C68434A3533C4372DB3C1CFA11ED5321C3F4CE7CF78E392506AAF7257AFC -7C9AD27EB8EB637A93384B54EAC3BD084571DDF97EB5E82C643FAC667BC3DD3F -D981A9E0DDB7320B07F23CCFFC4D74C034EC6C36DD66D907A4D34CB94409D362 -04EC03D1FB2A58E607C6ED3FDE67E97D9446876F6C685938EAC48CFE4A228E83 -FF5AEB1A4FE7EC29B33D17293570D43B501DA206F7CB0C5AF321C58E21F739B3 -49C19AEA6529CC550471E98E84DADA143F571A340759AC0809A695A56EBE8BF7 -6074197773630952FC57B9A3EE95B0E63CC4474A6ADB4D9E7FDD3B2B35294CC9 -D9F6B1C2786D00FD841BA8007988D6B4DA71736F63B1BA028230C46B0AD6A6AC -8126FAA43863ADCE0DF29E8B4C9EF15CF7D80AF346C45A9C347273FBE528E1D5 -389D396B339BD8129B462513B063D931CCDF8F346959483BAB970A4428B9EFBB -0773F9B2DFA2D6566AA2963DA654DC21F8F11EE928A083406353DEF3829EA553 -EB6EB0DAD22A4245AC88B5C509DF6C290D93AAE1E5BE9ED6BDA7D04AB0B0998C -A1264CE0025B1B2E2463A5CDC5CF0F60AA49AAD32391A5F97E27115223C6D1B8 -CA9346C5E650DB86749EE83275610023D41A47D0E5425E74D16A6EB98EC38C6E -00DFCE06B41D2FEAA761F5102718086A15E02717309F7D3B6140293E4B1A46D8 -6E8FEBBBAD104DFD4DE26B87E61A3C0043AC2C2DA283E1167D0E07DD24C80C94 -CBDDC86A09F86E651BAF3E059217118A0408612BAE85E4253C83E3AA5066CC08 -7E6528CCBDBDB5A63297B0BA85E9753B1C968783835EC4006D89F51C3E7D5DD3 -31C9CBC83D175E7832A643AA617DC3B38D8BDC98B7E806BA0F224E8AB73100C8 -A7ACE961DF33A8D97D6F86D5321B57EB2055525ABC17B676585E0DF57FD4E591 -1E6E9C8FB7991EFD37827EF2620B4BC0FDE501354F8ABD9997B508EA7731FFB3 -305944D9A5D4241F0A617F28587E7AE09F73C60B4D1FA1C37CB23B10A8E3FBAD -A2E067B24AE9AC5715F62BD011EF14B6DEA21DA0F2E8BD27C918683CD1484950 -2C5DF9BEEE20A2F79E60B803E8E3D47DCB19F8F24AA44524361B5A8DE4017ED1 -0A04EE08C9E9724268FDF318A6D037F8344FB9DD23441CF3ADBE7EE059E00D4F -B093E7216014B26A490F3779DC5E0D60635537BC8B0B681A20BC3106D4904947 -B6E8F68EC6B10B0B8D1304273BAE5D764FCB8A1C33CB55CA860258773A3C4A67 -794668D72813A662BA507A1EDB1316165E5148822ADAF61F31C8B4788D720A8B -6437E764CCCDDFB1206E7B84AF01BFCA1A695B75D96C47DE7C62670DF0FF4C29 -D0340782B68BFB6CE59C43F54C83C645138BD08492A5D8DA321703B4FDBE8313 -A4C6A13B04618755B5DA2C506CA059B87DF17085F1181FE5A23359C2EC1B27CA -E60567F112BAF14E9DAE8B749D28BF8263866E9019A963884A2DBF7F1F0B4A4E -B7C7A0E084F4A8F76EF5B001E3052DF0CF80C56DD85057073E7A1C1FE182A81C -B72098679C11A375F715270D5D834E94EA4F222F7D3DBAB1AB1AF1EAB16E7675 -42C5985A38613C54FF89DAD80417B054A826D5B6F47CC25FE6C5E831447674F6 -E7D0637D9E729D1F288075BAD89588DF7AEC9EFAB07A2B73D8245A4990A7DD94 -11A1D63F6E1F9934A807BE37EC1A897EFBA4DF6998C910DD75658BF6F133196F -438C818B549AC11198008DEF1548AA8DB6CBBC8980C96513E790F19CC3A3C151 -1B12A9B524F6026F3551632A3BA2C9FF376AEFA6BAE9D99A990D6B5714C06D3D -8F68CA21B985E93B0FCDCFB8A39F8DF7B996310B2C1C32FAE1189D6826363B69 -AE6B1B7231D8545A0863B20340CDD552B304B98236927CCBA7BABDE112C25380 -2D08885E8AD17C915908BBC9786D595A0C33A4E7EC1EB66825AE036892DFCB32 -F0576B232F99D99AF3E45D1F26FA0DAB711852AAE2523C6795478BA47E4883FC -92A1223B740DF537FFCAEA617CE3E01DB8518D1B4F60633820F0583187D99EA5 -72E4CECAC883823E5F7EFB04E211AB3D3362FE18F9EBC87470E3C62AB782B5AD -518B69458817EC3A7B8B026E624AE303D18E9E18768F3D3CC978DA4DA6926738 -678E2F96F751AC5F55FA5069B815AF3E06071937F0D013EB7791E718899D92E0 -F13260F6A4F8D6B0BA5405523919E543AE935DD6E1121D4F2DB2C46224CB23BC -39D8537A61DE02008507809DC8906549846FE92F4A835E2217E45CB52E41C696 -98171C24A8F4EF4539F8FBD56355DC995E6E2033E6CC70686CBFA59C19E29A08 -3FB507DB7262FF4520CC3B9194EF5BEAD93EDD5CBBF775A894EEC324676DCF96 -24AEB7824D5B0A506A5838F4E8651795D1611577E86A55393644B2A13E5B075A -FDB70F8619D12A0554476531F69011ACBEE38895BB29439BFB469759E13B9595 -AD5712F767893E2DA66E73C9A88BF9C131C2E1494B2BD04697CD7655966A2D7F -4591E4FE21C817D5337856B6A17F4C2AB207CE750692DB20A25A13EDE487B3BC -0AB2A5C821DB76C4E9100B0D7C4AAF737495DF622216064C01698126F8F237B6 -6016C1FCA6322E7733F0CA0EB83459B143C970CC26EFB1FBA673DE3043FE2489 -2B06DF11D30E1984F7B57DE00892890F36C445E0004DD0492D0BFC40D8DFA970 -4C18FE162CDA7DD31D69714E55E455399C3DEDE5A9A23151ACE7F23D34E70F98 -0F1AF32C7984263F920CDAED21D94CF9DDD72E8EA7AAA7EDDE944F167E318A43 -FAEAC3F77026C771C81017AB544FC6F81009D861402817ACA88FA41C36798168 -29E7204C78F0A89166C1F27B1151988825CB4330693F33B30E0B006352966677 -7FB5E5D522018FA4C7AEB791E84315D67D114481E4427F0D219BDDE0E10AC009 -677247624ACA604F41D4074B24DE54B57E9FBCFD202A40EDB497690935AFDE21 -0FAC4108BCEB82440D51DD0A0D0D61E3F21204E61AC15BD51061DD72EC27A4F4 -7EB24BB58BD6B081C68645E555F9EE3F5B71615BC98F03CE9F059BDE71F3C3B8 -C0283919A815DEFC70CD1C8C450C6E9CF1001371EEB6651EAE42C1848C0F271D -0466DFB548B0DBAE1A0F79CC7F9CF5D113CAFA86A04048E0F6A0F6A0E0D42E29 -866D8AF62A565F302609905808DD338460BF75A75DDDDE4B38A569149B2EB856 -8AC05433CE5DF29CB9F653BAC71270C8BBFDDC4794FBBBD407134C1A2F4D22F3 -3D18EC493CAC8BC6EF887B78762B179B038D83C1C96A8F6D2C507AC5DF3E3003 -22E63A4F67DC02E2D59A44E5DFE529ACCE3A4CEE2567FBB6FD1CA178DBD1399D -2CE138F853D68514F186EAAD924D9952D551504D7C95449248C979181BA3DF5A -8925BCB229E63DA811716D82B56365629960DE392076FE533516CCE02E341137 -EC32EECBC9ECACF92B03BAA83859FBA0584EEA52B3904B69C1ACD8B56CD320B2 -3DEC1D1DA1B66741F1C32CB8F4DA6FC6C8C64C5C3D0A0BCED43C5CB88E5E2B84 -6C5E062278DF5F323E2BB59CBD5B1F41F43BB3C7AD92A69B048758C90E0D3A52 -6FB41FA9EB8BFC592793F45FDD2157DC92B4A910312DC2067C6C5179BC170DC2 -1E445045E7E5720410DB949BF761C9EA5830D2C474FAA17431B0B69D504C8F49 -52911906240AA7A6E649577251FBA1B694F34F6D382E8FDA76708690341646BB -E4C8FC130D1EB7214C56A203983C0AAE490726E24D6CC83F06E29E117DDED606 -5ECDBDED5D5DF2F48F642A19F9E59B3A0C39D11050DC4895956B4ED5F71CB7CD -806D50CD68C66C797BBC187FD3313474361A2EC0C30B98A7EAC314BE1049D354 -72F2C754771C49A3B8DE3BDD7D332D5FF160D2C128C7B4524B3C2191372AAA1A -0A6BA0D4B8D440B4CB17098A59622AA62423C4F7CDCB2DCD45F7553E61FBD272 -EB86A952B821C8A360C531B77C49CE62BD37550DC26DBC8F1060D6710AED5646 -FB43A9845023ECE6444B084AC06E83393370C505874C1260117CFAECC1AEB626 -B9076582EB7F4BF3F5938AA89A3903E8FC147D4E3B89B06D7B51672391BB7F98 -003B1AF7980E84302BB8ED67B4456B6F45BD1F2155ECD5B60C9D8633D2BBA367 -2F503192AD0C9F3A204AA41B8AE03DD9D8A8E7FEAAA29F0AE5F18892E64A050F -A44185D62296B9CADDBDAF78E769051D212D294B14265D37FD248C2F8370BACA -D33E7785D00C79714D6F4C11D512033798826B3B711B7BF306133C9F536E18B0 -AC2169060D5B42FE9D70FE52C3CF104F2E28B872AADCB33422A5106EEDC941DC -29FEE0EC5020582C0784556A74E3697EC5BBBFE08B7E878C06A13660F164C740 -2B6E26475AB9E4944EDBA4169A9D36B43D2D88948B53B1B9C8ACB8CE7880000B -4226719FB522758866ED95E18B0965FA0BB633FBB79D67F12DC20AF71FEF1A5C -7C895EA14CD857C5C79B5CD31B7A831905E7178E26657AA3026FB65E2FC0E201 -5489E6B9B60F361CE78514DA8A89FC3CC7C434EF6AA0E60C215DA385A8910697 -4C1B9562FC0016794C2A124E27FCA078404500FB9B3475B7A599F87CE00DD4D2 -745292C279F8907DD01EE660B88B41AC46524297065681BD24AA1979E00978D2 -7C33725AD1953F5BA713C8ABE20D350B00929A29FC28C5081D9745773108F37B -D7064CF53AC0788B5F3445808E1A7FFA9064D1614EEC7D193F137D8BC89D4E4D -7224D2C322B0C35A641ECF98048CF8A750C6CFB4E1EED164C354EF8DEFD02829 -0F91E7C1B1F3E98F9EF0C84FFE10197F116278A5EE0330DD552329B1177CC4F7 -C6A79F8D96C4392F22815A222BE811B4B81FF99E729F2D74BB86E59144C42092 -B2EC7CD29E91788DFFFEB6FC9E777B7638C3CFD777DCCDDF2EE14388482D89EA -9413310C2834290131D8154DA17FD72260D811DE1C82B9761BD0FE86C799A163 -99AE61D5A271B610410346F4B9894AD72E9E6F6C63678C1FD1706B118BA4C60E -69236F15FF65459E08D6942250D0A568DA1CCA3F85A0924C4CAEA475467D5D54 -B674EABB35604C4337382F8FB16194681FA11EC85677E57DCFCE6B7CF780FBE6 -1E8C9FACA71FAF605C03FA5880514AAA760C91C85F2B2190BEC2EAEA4E46EA02 -5172F34E607A0846126675E96859B1C657DCCDBB3A64CD8315BA8C88E833D217 -D352BF66F5FA87940EE2A1777C9E1E867D8D2DCB33B242C491763629311B1E84 -38EF9B80554E5F8DA022BE06F57838FB5327592B97853E6DA510BB5FD2142DF8 -E602A1635AA59CAEE7FAE408B381CC505ED188354A7D56707B3B5B7F2A83DE3D -9D3C34B160DE3BBB0602C0102F8BF5D17D739F2FAD17C5E403A0C6E9D3EBB864 -39A015CBE7ADADE67C60414A78DC6856AD0EA0998F51352485E48B1539F42531 -2E10B6E3FB27E60D445C9755DEF5BFF503573B06FE971C769B0026A866389FD6 -6FB25812D7C06D5799BC6A271F1F9B0FB41C0E3F466EB109C8D0DCE23D3D2B6B -3566329ECE6951E6C5AF424C7C7ED0C1F3B1BB7B212BF4A5FC7859465FFB90BB -57BA658CD542A24049F2E6897A812AADE9B1642AA573B6AB80277DEC2A869787 -070B4F72EF11D1DE9C79A34858997DB1A7789D7590FEEAC1E6150E01BACE5334 -7CFB81CCC5D42E3A395807AC19177AC8667B9C71AC0CA9D048989DE54E6BE675 -BAF3F13BC331E3AF75F6AB2B14E234CFC3EC303A22AA64A2A3B21DD02996460A -0BBB2431B58D0667D8EAA51D3E03C27C1CD779FB914D02BEE1E544EC44A0A4AD -936713AB7729B634FE216181F4D5508B680893A2F28EA451EF35701091195A25 -2D5C727A723D589EAB2DB1AA45B271FC9AE17C0B387C627510EE80DB03FE64AD -A453C9CAEBAB4BDF449FE9A0E00911C10ECDD8A9CE2FF49BB9FD2F92660B31C5 -9811ACC24162DBE7992660A880B5493D03F4B7B0FC512B22A33A1E3AB3BABC0F -4B3648E710959103A0D5F6E6E9A86BF3F4EAC6BEF1AFAD3038AA48D0A38B4C90 -B0B7005D8D3725C8563FD71DAD5F59E7F14C2E2327BADD45EE4854E4790F8D3E -8F2CF554208DA4789A198489AA1D0FA3B358FB2E8245D6A6E2B449B9F91F2241 -E79504B052E33581DC98F440ABB4B48AFDDFF1939DC3F52EB07DB9FA636F5F7C -6A0076210981C77D0126260CE1D224519469AD53E5ECB0FF473F960463A8C353 -18033ADC1CECF34BE3D751F59EF711AF0B00188ADC2D215C2BEFD52B63E0478B -553B3BAFF351AF373F3C94B2C279A9E0964FA918719657D270B4DF14CEDF43C0 -230F467F10B3B814C7472E7B0301298E67F518DCAE3DD02F34661896828145AD -9CDF4D547747DCC70E1A43ED757B6FBA6BD2D2229F2EE00D5D6DCDDE1A5765C9 -532A98A6BA32238AD2767BFDCFD271F009B778D152DFFC5F7B3E93FB30B479D0 -95CB3DA664F7037FE20B286C7C21BD14D1C11537097674E4774AE403915DCD42 -4BF85C7A06F5C721CD92EFEE90DC0ECDF37F8C4723CAC2ECE44271954B67C721 -89634E05E351C4B3F360356B2C02727A46F2A0721CDC42D5FBAD1968DA46B729 -E72BE77930740652E4E56CE02DF5A881B61968166F07E36088B5451EB870C14A -D9A07E34EF0D7C92156DCEA851F625F933E61F36DA3320F7A4535289FAEC6883 -42955C50434FDB86A1830D48FFC598774D502584D6CC867FC50238EC24D2B58A -6CF0AF823822CEFC74F874B84658F4CD54370AFBCAEEBBE60AA457AA5DA1A06C -C8F92A48460E94E7CC3E28791F2885E28544FA5ACB0F4125DE6F8D532DDF420B -7283A6591659F5B56E61504B5322B4B1CC80A0463DCD00B6821F56446E43F029 -E56E69F8C28B3112EDA3AA5E69046FBA5E57ECF686979BE5B243819BC34CA308 -FE1258B6A1127E701593AE44C88715CF4D3547DC6C66E85F8C14494AF4F07F9F -22723D40A8D483B725246DF4757706783AF56C1A953DD68BC97285C5315CCD5A -4350D8742CF7FA13D1A46042ABFA25CC6120EDA9948D262FBB66055C464C14A0 -B8977B5BB2DAD142F46CFEB4A36B7EC51D55E728883F50672F3E1D4FFE41E5CF -30571C3EE09101C213AECAF90EE8698B740FA5717FF2198C005568E9DB201600 -833437B707AF68F52E9B68EFC36D73E9D4582AB0F135EA890D939FB1BE866144 -67CC07007B66C9CE3F7B204E75369E22D09B4F88E6DF4F7918A79AF5819C7A77 -3DDA23B3F1242BC2A61545E112255DFD97B86E859EA508CC77577BD9404AC9C6 -7A998CC511760C3CBFCD9F6F53A7B1F7B5EB6ECCC074A05E533A67FCA3CA63B0 -552D00C4D31149B29173A8667D9713756D64911540A9D4F3D071C90A76E8B9B4 -B0066037E9359AB21FF5855ED9E71BD1E9848D6A663694BE34FCC171305B2826 -BE177DDDC9B1B97BBC79E45EFC7E70FB11AF79699F373E700CE4D171086461DE -D8E061B240997646FFBD6D273FA9604861DBBF3A50DA307E28AE218C3D0818C1 -4331CF7C0F448650AD20A77AB23CC5F40C48CCD602D0B32D4C7CD7B4B607E262 -D07B5214069C6856D31F40B0D50A63B079D065F79C3ACFA853C2C8A3DC2572D0 -B5DD285BB0ADD7596FDED62DF7C68EFF979DB5E0182FD061DF55362EDE0B03CB -70A15526CBE98186701557FFD27556E64DF68EB38234AA13770C733477CE8A39 -0B65A272D1DB66EBA12234F1AD36E0F2B0289820CEDCBDD4CC852F53207BED97 -CB93E853456D631D7DC397ED5A6ADF59E8D04756921A319E8A85DEE2FD175D86 -A5094BFFE6FF5BA43715E2E2941741E63570CF3489C7DDF94AE79A0021F76384 -6E76CA3C1AC552EE4B66DFD560EBDA38EF5E93DDA803BD06E2EE8003E2276790 -896D51B88E4FA90061EE472BECF58A133B35920E47BBA565727DFBEF612ED98E -895C8936833C52C5703B5F79F58F4C3171F2071040881EEABBD9D4313F246856 -AFCCF15AA4A087A9483BD95C260BF5B59485B74E1E3E98F92505B0D27F46F832 -CD562D0649886F2CAD709585334B034F3C4B93692C0082EACFFBFF259ADAA6D1 -9F863393DC0C772B2A9230FDB5FF02E8F0B5C059DBAC8D8F75BE0B3650AFA3E4 -4292F1CF0A4AF45D9BD8856FF82D93AD77ECD217024A8F619A5B8667D286FA94 -587224B5CF48327FBA64FDEB58FEE11560EA78252F6F3E3520319090EDF0B565 -EECA2CB5FEAD5B42A95B19D4CF41BAC211CEE425FE833DC7F67146FA46AEEAFA -2AC315DD3D7017B652AB372D6941E9AE38D8BF6F48F5032CC938C7F8AAC3ADA8 -ABAEDC939E982B4C92C666CB24A5242D5504A788338BC5663222F502094EBEC4 -007B13BB67213B30783987029BF3458DD1714F59421AAAD0C298519EA2A4F4E5 -38703C5CFFD13C621EB988C6EDEE218B5D5315164FBF0C41F32B5A48E50FF7F4 -B60B005B69ACA39396DA5969BFD468B28BEA77413E80A3F7027A31A81FCAC929 -108189FD78D3D3B6B22529ACDC418F7D8050A4DA3275FD84E7F2822325CD1E5B -B0CD6685FA050D53B892CDD028FBE94BA9E2F1C61BD56DEFD7789C2BAAF164B4 -F8FBBF983001B91D0A667F94EE096CC9695C0F84B3BA9BCA6B50787EF1DDC483 -C5DEC8B12C00B19F9D1C680BBC3751E3F9C964F3302B4B9CECB9F6DBA34BEAA3 -CA2F39CC530488640FC1A7CC894E4AED03A08176F3AC15C3FA26FE85C9D9BAFB -9F4CC02255074CCB951B7E878D7AB997737417BC010499D7F91610D5E2A67AC6 -F8D95510738B83B43DFF22C451A3096F758616FF223882017663DA7AB0AA0D87 -4CE2C31640489CB32EA91176D5C39531746330ADC7925AAEB086075BBFD5E9E2 -4D8967A73090B20310432A8D7FB3D0A756F6D73B36020F040E710792561FA99E -3307619D6B65F1AE55F0B053FA8DE24D54619AA5ED9F0C1A7157AD8B9D97A142 -386DB15AC36D6CCF453C2EFA6A4615935D388250A11B296307A45B90D7E76BDA -609198C8FA31C6E5CE1A1AEDD544CBE2D7C6FCEF1CA63BA2D57D2744578956FE -D463214CEE5C154966E10F0A64E25DF25BE8538F9CDF5D480BD8004082070F38 -C88473561C641E815A6D94820D0CDE56829F0AAE4BE1315D360DEB4CB25B4FBF -791999D4FA7206256B177D8450D50A32A7F806D89471EE96CC7E85356D2C1E35 -288B7FBC0036792A4E7DE77DEB347F2168B3BD9AFD31177AB5E4990957869944 -243087BC9F048C218368BD6C738832CEC99D7F31159A33026442ED4D27771E12 -BF02554203415B1877941037C72CB762B51471C79365C018D506AAD55464A248 -7EB6E55D9B0527CAC8A915BA84F4DAE556B427F48E3120142AED5705789C2708 -AE94395B1F7B875EFF7F19B9AB8AF28737FC304E32C8633625DAE96D1D732E29 -59879BACFBB15ABFE8A6EE1150AEB29713B428FFAFB619206D71FC382B1215EE -759318C5CFEA9C0E5E8E3B7F47DE607B6F93C19AF28467568A3F373AEDC78AC0 -CE99A407D97154FD68220CA66F7D3EA77B323A7015FA9D9E8AC5927D0E7F4A4F -1FC871BFA999EC749E09FE2AEB8220705B0AC8CB4DBBC409CEA6B47F98B67CED -DED64869A1F9B3BCA0A85D66B1C27301DE7542FDEEAB005F2FB76CA066664B94 -968C3E637E055EFB165093574FB6EA732B959FE708C52FFEF012CC1117C85EF6 -56B97BA4B30322F7B3F1F95233A3C897E5316BB86E8C331FF1A858429E0D98FC -DA67AA525C035606A8ABDBE35B742B53183CE047EA2CDE1C08EDF08E5355F694 -1C34925DB0D5314CC0B205F40775A500B76491789B90D4604D3545E2D7DAC1EA -400B2CF72EADCE9C7409900ADD1C6057DBBD97D332F6435C0B91B14D081EBE01 -EC9230E6D12B6455E401CB100C7B3590D23CE094C79BE8266F1F24937448FEA7 -C74CE914AE8DFE853F3E068433A6DA96F156A0014C457040587BAE7DB4CAE2C0 -EC1FF60747BAFB376D5F87DB5CE2A8512453088742214C38F5B6E0D7644A0C1A -F67087FA502BB43C27B32931D8315CB8A425341ABC3E7656588AB563E9CC456C -E46CC1E57DD4B2A83CEE5FD154001568DB6AFBCEBE8FAA4458AFA35BF37E4C71 -1D112063753E5B66C8B4E801A5E46F6053C8B55A95086615D6601924A6633C4A -C4D8EB0B7A5C8AA7E49FCFDC8182EEA53DB300AADBCA3836FC88A140A155C726 -54CA5DDD926DDD0C1555C26E30AAE25D1CA4A2478D0FDE0EC996A1399D5C0F69 -C349AAA9206B2554D7D6C68DA845053641E22B965314B6F28D69628FE8D5C243 -E978E6B81B3F916E722DBAF355B18812021267A9E3C324B3D9F6BCF7B5B50CC2 -D5B72D9DE9D485E103F25E1F42FF7BF040B3B6B5DFBB36BCD8E8B6379CA3198A -7AEC551899A044FEE3CAAD9A2C3D839DD370C97C194D5A4F2815785E413A0597 -C61887CC4842988FBB321DCF73FB977402DA1E3D9EFAA176230295ABFD079DD9 -9B2D187B82BD7FCAFF1EA271FF74ED0210D616BCBB443800C9FCA4F467A19717 -DD0D36AD7CD6CBA51AEB15755E68789368851FAE22F39F3CBA9CA1DEFC304E17 -33BF87828DE7758DADAF45CB27CB0A64DEB8F4CCE7FF05CEB0E4E016B9675CA4 -E7E001E16FB153610F077EDE525873CE46E0A3997EF7F73D8DF38B916A8AF808 -93C2463BF8B9C5875B76FD983F00311BE872F5CDB5B1647508F422FBF2A56986 -6358FA3C232E7E6063C82F74823036BB7AF8F8D545D12D82B2195DCEC5969DF2 -0EE8CE3123CB3010FBEF3FCCD7F1920ACC42FFB593697B786E6A6F52E10C1A15 -208783D4280FC31CC679F9E4A00E684B74EF11900CCBF5554CFCE34B65A9A999 -68AB22E0A438B4DC1CBFC32755F7DC8FE58A7956C1BBBD29983200DDDAA59C5B -4CE550F5E0AB048E98DA80BDEBA63ADD9DB6C7DC3A3F6E25C1FB6B638120925D -C897B2C05C4179A0E48740439BEA3FFCD35C71B21ADFD7C8412706D3868C4BDE -30F6B8CAE82D86AF842CFEDCAB3CF67BDF0AF7FCE6A0E7AD2D247446C38B2CF3 -26CD3D7E09F5CE2535283C43D04C9391C7A1CDFA6F2571F786A1F0189B9BAFCB -AB1CDDF8190D7CE364F8FF8EBCBBD5F646C095CF27A34B7235566BFE8B012E01 -CC721A7B3FFD795A0EBAF81A8A0A7820B99E98166C1AF177B87446927CC0C239 -54BBAE855E9FBD704DE67917FABE3034A953930949AFCF79A59AD8A387CA1FA4 -58131723EB2935C02EBBE6F9554BDDBEA5EA55E3FD6BCF25DA52765D65054BB8 -4A5C2AD1312892297E1C45570F0622D145BE35C8758391F28C04B3AC4282D1AE -084E080892C76C1B9C9F738760879908EC5B3A90DAB7A6538080A484E54B9FF0 -1C2885E93F1F16E52E0A3C9F6802E6345BBC5DBC5E7C57C85104427CA3182C7A -54E95B22D149BFBA403CC8A960EC62EDABA1881F31B92C54DD21C96298A7703E -E9D2DBA4B91A23C4E5F3D225A38C07818DA8C2F261D950FC8AB6042023248E37 -6BA0AE50B9A85F04EB48523143AE40695F127E34E070331620415B95A5ECB24F -C46696AC6F75020F6322DFD03B42788C535DB541FEA6F846380E8F5800B7E060 -51A387FC9AAF598C88CEF209FA38E008D8707A34245EFB722BB373D7E6B1E6CF -BDF2DBCE22FD2C85F78C4C4FC31F3C2F6B553C4295A1E26665BD166FFB7DF6BE -A6E9D18FB735F2DA53138A4A4352B36A08B662528FE0237FF37FFF218D88F2EC -50741BC5E98E856B17D8015869044657657BDB90D69A0FD5D5D0CF4A6A091E56 -938D444D0618D7B45C22F65E18B034282849355ACE83A188D164FA36367AE6C3 -35C775F72A89A4017A4071EAE1118B88C58CB1DE4E20EE1955BE0BFE8646CCF7 -05322E5566D14B5318A2328648CE7C1AC36B077D1A8AF17AC827E500B09FF496 -69CF7446403EF7B00C4F1832F1F6692B5FBACFA7FF9A719E5DDC8F25A798CEE9 -F4F114E522F00B7A415AFBCE48D09958DE98CAAF427FFDFD635A7ED5DCFD5F7B -6D7AF2B5E78F4446753C8CE59F923D4728ACE448F35BF3FBBC8B2ABCF49432D3 -AA49924191FC8AFDAD01863EE8716B6D76A6512B40BDE9C18C7D321646539DB5 -A09047ACE1815F462E82DC593548CF68B78D52049AED0E44627779613BC02BCD -2B5BDC8D2091271D44BA1362DE0E44E46CAA9D966D429848FA422A73061A12F2 -B1BE7A81533D810479F91C9656D3AB7F00B9332AB851743C0F25E32F37E943FA -370B4EB25781068D8DFAAEC50CF86028610CDB59CEEC4AB547EB3908897AF9ED -CA74EA35D2CA70A70BC83B0AC2E4A5E558098AE2B12EB42397CFCA0F9C9E15BC -9431FB2F10224F22F0E191291110FC5E1313A99EA12B3E3318263AAD516BCF66 -C71C825091984E21010B29025E3FBDC518E8960AABEAE236F03611CAB6F87D03 -EF0DA8DAC4D2C58A9ABD40E592B2756FB21E4D7D2F2D3259F51CEB6BCBB1B4E2 -33BC3B474D779565D69F0FF19113A20553F85DFDB4FF9E175606240A7562B12D -4B8B8F938AFDCFDAD721A64972573F6251D363FA971FDC41F2E02F7DF28C0AED -EAD3A9CBBED541FA7E6AD7BEA83945118B83564782FBCEC5B466B96DA7809BFD -A86907AA67FCC568533218DDB3D201301379A1B9EA8A32DE36B1F7F93F99F0BB -FA3F4D002793063ADB685A8935EA4A5E549767853A6488C6DFC2E70B3A455D0A -29E8F6FD949E810C0EC0F6F835DDD975EF68B4DA83F23A14945195248F667B32 -EF2F958253C7F5FD49AD7E545911E963D76006C57322D2CE2FF3F1DD1256152B -3226C0CA03B72F409C91151FF59EC80C2B7431C656E94E19904AB842D63BC797 -1C6552AB4B265ABC2AA8B66096AEC22E778232043288EE0F60D6ABB319B9D2BD -0FBF6F0BFFF5DEDC3A39AECD6821EDE1B213F7A2E6A7BA475389D647F663642D -E4C5C3F0DE1C0030EE381006CB01B5E5947AE6E837DD2ADBFC967557A0182EDD -16B10FE9BDD490CA0A3C351B025FC63A08D1415163EBD31ECEFC3F50586142BB -205E41E1ECEC46CD2209D760D75E743AD13AF1E761A8B7F996ABCAEA43645546 -F42C87F6909258CC74419B96A39D6DA3233834894CC60B03F867B6ADAA2C18F6 -0040A9D8E70BAB12221217095DFC57117CDEB536FDA09E11787D4F7B448F88 -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: (<http://www.ams.org>), 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 -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\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 -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 -B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 -CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 -3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 -404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 -262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 -084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 -E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMMI12 -%!PS-AdobeFont-1.0: CMMI12 003.002 -%%Title: CMMI12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12. -% 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/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup -/UniqueID get 5087386 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 /CMMI12 def -/FontBBox {-31 -250 1026 750 }readonly def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def -/FullName (CMMI12) 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 -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE -882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 -2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A -7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 -0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 -987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 -609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC -182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A -CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A -1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE -C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D -3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 -D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E -E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 -761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 -8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F -68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D -10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 -262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 -922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 -56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 -32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA -7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 -7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A -46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD -754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF -88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F -CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A -7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 -8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 -BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B -CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 -8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B -D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 -135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A -C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 -1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 -07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 -14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D -7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D -2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D -639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 -D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F -90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 -10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E -1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E -8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC -D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 -1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 -9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 -EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE -DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 -60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 -FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D -203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 -FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 -DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F -2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D -244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 -31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B -724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 -F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 -D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA -AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 -CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF -01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D -CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA -287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 -8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 -9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 -6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 -7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C -192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA -AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 -A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 -50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 -A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 -3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF -CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 -5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 -8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE -084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 -92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 -AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 -97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF -92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 -7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 -5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 -13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 -6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 -5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 -6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 -F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E -A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 -7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A -9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 -E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 -AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD -F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 -0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 -1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 -7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E -38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 -5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F -3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B -B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 -15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B -AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 -6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 -CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 -EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 -A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D -806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 -461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 -4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 -9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C -172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 -69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E -ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 -356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 -E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 -7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C -B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A -31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF -EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 -98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 -C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 -AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 -E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 -76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 -8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 -CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 -761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A -2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 -89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 -D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF -C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 -D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 -B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 -AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F -D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 -866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD -207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 -756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 -60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD -A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A -1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 -A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 -C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 -03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 -1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B -97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE -D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 -4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF -94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 -201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 -9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 -CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 -29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 -4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED -66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 -14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 -84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 -6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 -49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C -224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 -5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 -A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 -1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D -5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 -40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C -E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B -C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD -CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D -2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE -710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 -FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 -FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 -5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 -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: (<http://www.ams.org>), 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 -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\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 13 /circlecopyrt put -dup 15 /bullet 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 -88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 -657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE -D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 -AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 -3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E -7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B -A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 -2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 -CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D -9E592159338E1293F449380E13C21AE42E6861DBBF4AE99A7469F871A3940835 -FFBE7F316FA9BB834EAB18625F0960352C75105A92F175850289B1AE177E0D52 -E43635C41B85F75CFB706BC92B0BF90367E180A141703EF69FD064C0FA34618A -5D9684895C3EF50F4AAF6E0F78D483280942D3F9C1A18FE7FA657928477AAC74 -ABCC21B622EBE2C0AD9EDEDAEDAA9A6E3D96E01CC837668FAC44FB52307CE618 -BE8399078154C80E7DB52F0CD16717DC59203497E89D69B390E9966C19D36188 -E47270673493F7DFC14C72B5B4737AD52783C573B5F12D50E9D54AD65C2C310C -72BAF2A8ADAD81ACF0C49DF971775F2DB7404FC9AD6B30C947A348B28B0C042F -CD9756359BA6942D643D8B7BC54E6047DFE25215CE5EE74CC3076975A3F324DF -E8D80F42AE4A1C00B155FE56A61CCC09924E4D7DA7EE07987C2EF9E91AED55CF -524C54E553030B5F -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.0: CMTT12 003.002 -%%Title: CMTT12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12. -% 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/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup -/UniqueID get 5000833 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 /CMTT12 def -/FontBBox {-1 -234 524 695 }readonly def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 64 /at put -dup 97 /a put -dup 98 /b put -dup 101 /e put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 -7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 -A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 -4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C -A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 -75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 -9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 -098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 -ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 -DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B -5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 -F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 -2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 -E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 -C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 -42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D -4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 -95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 -830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3 -FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF -F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19 -13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11 -6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE -896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2 -91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492 -660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6 -6E7295A254FEFC41A66EA6833A6A4EE0E75EF6B6FAF292DC5D2AFB61D5203DB5 -4BAEAABAF39E9F98B45F22F2E37F337A7BA412807A31B4A5A4E1627BAA964B77 -6AA397D368985045244ACE969799A9489CCA8FEFCF2EAF262ECE08BBD9573C79 -2785F1004C34F4D728E9E820B4133FD5F823B067F6686C82BCD35123E4831E38 -CDD5ADB098BC3F1B4162F45B11ED39CFB65DB1A10646D0B9FB5BBE475031B2AC -9E0769CB063B82D1232E24CAA86D9D5DBB9737B1E69608106D34CFEE3FFB4213 -5DBFB88BF9012F430D55CEFEDD5CC1D28B8EFE3C133F1A0E241CD2D0D58B0ADB -AB93AA7B1E312CCCD8E06297A5F698A55D9B7E19979C06675953B4E2B7FE860B -60B8A3DF7F12B1FE54E0D9BA9EFB53BA76FFBE54E140B94FF41FBD7937FBE7B4 -1793C8CF35C92915A6F47F6513B74F9F6C1F6C44D2D82B80C2262C7F86CC6C45 -426AD4602CBA422E55FCCC58DC17CF3C2F68E393BFA04605EA06279D2B96B458 -394495413B5C9864F865CCBCB290B4A064C74FE5367FF5A397AFFD3C1CA41B36 -B80204B315496B84452E91C2FA59A36836E01419147C5174EB4A58DA454F5097 -BA64EE9B8F88B56DD1DA088A8AB19259083F064F7394F15A135B36FBADB0EC07 -8B9040FD797CD026EC077DDEB665A7BF575C3FE620D5D4AE74BE2B0D7CD5D507 -6C0859246278D92425CCF174C2E80A6998FE14371FFA63D81ADB8373950CB08C -92CF8F65B73B97725BB875F3E66F0BF3669F875186970E2DD1A8B28D8CC1BBF0 -E3530AC0D2BE7719C48277382E624EF7D90BA5F927EB674E1D6FC4382C32C808 -2DA4901E93B1CFF340652C44396BC4C76BE4B6512D2B56FA1420636B3F714891 -8C7A5543A4B0101C8161C237A842482831ABD0593ECE98F42D80FE070E60B6B3 -4E93C4498239324AC4E3FA4406A035C7BE26B0086BED3AFCDD331F7D1B7D02FD -1AD03EFF049A2F90B85F30901014118EAB318DF795CDB289770D51C9261994FB -BC65DEB07C434D6E332373BD0DADD7A06781218DE5E32B7CB002DE4337251413 -48416F8489C37D39F61F639AC54F6E2D0A5B7949B29B3A8754FEE5E1A8A4019B -30ACBB895C90AD7D94D70F48CDB3AE3FE60488E867A6CE5521F6C123D389B6B3 -540FE72436B7BD5826B731CC6B5A5C397F3347F4979132C67C2695EBCD7FFFFE -98C943FA7AC98AB500866BD7906F62D1E9FCB6D3C28D10A9CE61CE4A023E79AF -EECAD72DD7B61802329D255563129DE5DE81F3E6D6D47E10893AC5929FCE2357 -EA2A84635A3FA92DD77C0A4B8C62CE26D5FAB880E7B974F7C843EA8BAFAFA4BE -5FD97AF9602CF1FABF41DF555DCD8C23DDF0ACFE58DC92D83F13775CFD453AB8 -AB3C4A9180ED6851246C4E58B5187F82CB98FB92FE17720679207130C8EBE243 -66F44050BFB10DB7A7B151EA5F90C2A5889599BAB1A6D1AE4C023FCB0BF495CD -F2C3CD3FBBFF8DF3AD63F5716194F5E382FBF2BA32567D10CB75433DA871E13D -94BB94F4E6F58658C04C764DF512229AACFD4985EA952AD56E0D592A9D408C64 -BD22046AE570216940CA422DB6BBB375A653A5B1D3BD5C0A6A4EB9438F33F9E7 -9B7AE1EC2D56DDA6E84127A4A47E9466A5CF70AE376E9B92B1F0528FAAA73AFA -268085C35C818ADBE05B241FBEE328A83EC622F1FC694D3EFD539C76A4807E07 -A4D2F49437B9DC18E21D621CFD31432659FFBA4DC702B91D4205030D89449381 -B7964BD73E96C4CCADC84680216482CC4578781B57028C023D63849F705E54C7 -2D652A48565B5B6AFAEC1174B331EC00EB7C528AE30297EAD23237E0DA25D83D -2254B13EE297478C5C9D7013AAD70416035EB9D9D7116609CAF1C5523CA28512 -D721627DF21F83487989F6CA9457D25181A0BFC6F072BCBB202135EE8612B14B -BF88CBAED2700C4D067B5AAFB33AE61E106091EFE34B61C58F938BA3705F91E6 -500258C054591BE8DAA18D55BB68FB131AFD7E55E7E1FF9234C08768E95D258A -700B8890BB4DF7B805684DE78230F0AF49C0A2222948D4F6E087B6CF1DF0FF47 -0ED967F5C3F417E0AFD4AF3547BCF8624302DF187512A35E569626ABE3FFDF7D -938B0D47BE9301EE955F6344F3D597CD33CCAAE12ECE2A1EA661EAAAC990823A -A34B5E982469151CF1737FC478879B75A4F1A4C4D94DB447EA53AE052B981ADA -3772B6536ADCA2AC1FEE3FAF27112714BEC13C6FA033BCEB5F8CAEAEBAD0B8E7 -2F4513F724BD2C5A1A22ADA7C90361C06B0CF1C92243DCF099BF786CE67F0C6C -7179B2E1572F7359A7AE6327C50AE1B55B2F5B035ED799A0C1283408CBCE62B4 -4151E03692E10D5E889BA8D0CA0489E8EFFF65BEE997D47FDDA5858F064BA96E -4709EEFCF60FCCE763A5E97D264200A4BF05AF02E0A932233FF14A1DB2EEAAA2 -D5C92243B284E40938265745D66F9776360E8BD59C1F5C18622B52FC9F499D03 -5C98EE8FEB34A5DBEC3F796C0B0C30B2B97EA5A2F7305005497F0424FE3EA4E0 -D53B54A745A91337BB054A350E481838E2018D8D129A07757FF8868E47A565AC -F1A13CCC73804B3F15B0E4B85AC88CA29441AA98237C6C38CB011D3DF2FCEA1E -B1E66D0F99073BCCC56E7CC897A9EC0F18D7766CA957298E54B1D1300E2E084F -E7016C6F59098D1520DD64EBB7CDDC67B3584F56E65E3217C4345E0CAE956E37 -95ABEDAEF1176AF7BFF82419D5677FD3AF166A93C39378ABC473794F7EE0328B -766E975B33D433D0CF4BF557FCF7947F0383DEEE280FE89CEF22CD97B81D3885 -43F0D2622025E2A75D9267EDF1CBB550099040BC567BA08CF196884658C1911F -E770576F4593A178DFFED391C24CF8E2D7075F34AD7A523F3395699C638BA120 -7B283483A0FDF760050D652A81A13570822B40CDD16BEED9A91966E2C5C28AB0 -7763CEA5E2D431C847D39CE52DC7E260CD7519AFF39BAEDA081AFC8DBED06E98 -29D9BBF552758E86DECB8C194EB6ADD7DDAFE5D58C57BA5F503585E7C24127B1 -105A6C97068483D77D25955EE3E0993E0F9DAE5298A2431EBAD28AE8E45C09FB -D89A396F83802C07E7F9BDBCED7D8360E704FA59B179F19908A36064230B503B -3B0B7FCC2ED0455E15533771DE613F2BEC8EC308A24EFA5EE37A0169B4721BF4 -881C0632FDF2D24D32F031686CABF7B04BF0BEDA2729C249426200E6948BBFAF -EB5A1F7654894571260D014E8AD2A84ABABA5806B0811EFFC3143946442BCC20 -19F428A66193BBBAE1F42D665630DBF98ED5FD7BB7E5E9315B4AFC92C6539884 -6873112145638C8B49AB9B69C1C375D0990976CBFF33EDC5A12282DD6DF068F9 -9C911EB366090F4A8E18A742E47044C9F3CE6B3B0868E05547B291B11DB75615 -3AD37193123C6B0EDE151AF8F4367A33B3E0A61027D8017006BD21FED4829C25 -50A7582D055B4391ABC43BB00F1398C0CC2CC02732C2593550EB0DF5DCA08263 -24D34186707037E229C0645D0088CDBFD06A1C852F1612F027DF7B6C4F2E4644 -4E69CFA4FF355F7A2B4147D0063EEB414E5449CD88C0A928FF5C58F5EF48DFF0 -D804D1BA5A4AF4E6415A75BD211BF564787B8BF9976EEA6872CDD75D313EF1BB -8C70B32CD81205F8ABF4EAB77729B34B20A9216B9F0083A2DBEED75D1D6D8536 -D86BA6F0F8FA76AE2A6DF3BBF815666E9975A5141A0B23499A40FC94519F30AA -A7E1A8B5FFBF2DF9F1E14F5ADC13F3F0617BABDDE5153CCB18CA9EA53EA4408F -AE16444F3F916B1AC1F0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%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: (<http://www.ams.org>), 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 -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\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 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 33 /exclam put -dup 34 /quotedblright put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 61 /equal put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 124 /emdash 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 -E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 -5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F -4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F -E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF -9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 -89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 -7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 -AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 -3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E -61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E -6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C -F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1 -C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9 -8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D -29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86 -32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44 -13026DD6800BFE15E90592641FE99BCD18039598DC7B08AA89EE6792B576B29F -787176E0CE92270D872A5988E8CB83661FE8E8FD331668DDF9A87EA0FCB904E9 -FC2B5F090705C9CC49A85453967C697A72F27326FCF642B945A85944A34E460C -7E173819BABE5F350CD7E792B9CAE496423F13BBD49CB9F4E39D27A26395B983 -259BA11CECF2AB41FDD22698FC491906217FFC0F76FEB03DEA39BC8396874506 -EFC8A06F0F7EA849168C00D81728C739ADEC153F5A13A46FD1263D937A9EA004 -743883705AD534722FF109146B9E567225A16C4CD76EB07661DA821464D89187 -6369A5381C669E1741F7E40D5DE218554B7A51DDC4563E0F5AE07CF0A0966ECF -940E042C3B4DB2FCD8FCE4282EB39B5A164C35432A49165860AD65A0F555FAE6 -8D75B6400BC802A021411BFC4ABA5671F5BDB495EFF99DE8AEF14E78E8B6EDCD -C8C1E80B548817F55A6013554AD7715A7340F0C1768E26D564F397DAEE458E60 -E6850880E9E01C8D7B9A44418303A6563D84C33161045BAD96270F0C23D49233 -A469A1480B694F268C275A7750E3157C34BA420C338B9DB2E608AA18D0305BBF -875D7087C2DDF908883EAD6F518231408ED09DDCAB966E1673371DCB4DC4B04B -86215140470BED1FF40FC55A94AAFFBAFD9547DFB6E7441F6F18DD0CDAAAD67F -1C3DDF4A1A7E192BFECA9058986AEAC3F88D3DB996AE492FC54574037CDE8865 -4BF8FB8E7C60A284B0CDDC7A2ED1CC6EF05E054163BA55331C8F47F596B4EA6A -D29F48FA8167AB4AC152B091AD4296CEC91A73ED481864AFD7C9D8F85A00E6C4 -72E1589F2D647A483A51BA47CD9ACD8DD2CA4B3708C3EBA20AC324DEB563E615 -5A18BC810529D06C3726B892A054C65D1233FE771549F1E7A55BF993492C3652 -41F32BA17242A4167169EC84AB54891ABBAB7980B1B1CAD2C43493C10ABF5345 -53E8752D615673E5ABF7D3CF2687DEB3FAAD963C890C5781E272CFA67F94EC19 -C3EC4C5C017F5A2AC23DD671EAE66A013051689E887C20BBB90B79A821F5227F -9C8A17CB202849141A1F213F2D5912955DFA0D8FF1D8395DEFFF1E716739F246 -66C276AAF9EF371377AC7B45386A18D452DCED16EC5AF86017252D059DFCA837 -D14D41823F03E91830D6C17BEB76A16623AAC58A9FEAAA07D3BFCE05B6DCBFE1 -152EF48D4F01F9F4C2221E457DB19D77CD878AD8FED8BFDB27007903D49A177A -E1C1F837B105D9B64BDFD5A084820A161D75FFAC8F8EA78CC6D148F1442F1384 -7661502B92469D4BC8FF30DF9234D29F453310878E2AA72F293DB0618E0A1BE7 -54949F6488FB99AF0D7FA4DA1316C3C5279767142D132F62ECD52FBBC0D754AD -58FBF92629DC8866A0698E72EBE2F2C0A09F68895770EC42B469B08C7092733A -20452669523E73E7D5423DBE0776FA931871C65158C01E28758239390507C37F -337101AC139F611354123A5FBB4A0CDD161BE84AD71BE2DEA92FD943B1D0E2BB -C195472D10E123CEF708FFC2D5D16596990C20A062A2A358EE110B7EEBEBF697 -7DFA3351785BCCD59B4B3B349146BE9655842F51E82A44F0C6CA75B1CA5DD9F3 -D3BA6F0E89A63DFEBB88C96BCC680D3C03CA447409D52B19EEAEDDC49285AE8B -7087326C4F6517C3C9B02C10D1EADC6DB9D4943E0080A6024A24C791748AA798 -478EDCA0FC6B150DE7F8D50030A5A0F7EBBED6B1E29CDD745FCED01ACABDF295 -91D77AB0DD370D77E5EEA4A9472D14C6ABE29431E85C642F239150FCB0FD6DE2 -E74E8B47BE08F21DE99A181F16CE0CE0F1D72C4E96EDB597095038AED8CCB91F -B008F4EFC07E0361F8EA96BF0A4F3E8973249AFE0478D26BB1B5C5B3F8307508 -702DAEA6C2A88BFA33BE2046E61FFEAAD917E7F290E61760D5282C6BF357908E -644DF3F0BC7458C4F183F981AFB53440609E21DCDF05445629F196BF168366E3 -6623A868D4872655A2BD4FB87D3C932A44B9E07EA5CCEC059F7CB48D0051F3EC -1ADDCE1B474EE33580A5EE6ABE33479FC9E0916D418090EDB58EA45CEC2AFB75 -6B69E6D768EC8C82886A801A9DEF5ECD07AFB3C480144A602FAE78B968D26324 -734EBFBFA159B07ED5C94355E2B3BBEFC0C5E465F9FE403CAAC6A1C29F0D5895 -D51ECA2720C697D103B20F96993BB98AF649914F29527629DCEA100374B6120C -DD89264B95468EF1801F71550220B035B6A8E7B9F01BD6CBB30775DC75B1594F -8217B9A85D5E041C605C3C78D25CCDA88656F64C44A839C9C15EB8D5B00DB7BA -78FB0FD1D38E0521BF734C146A7D10D12B5079AF87467FFE9FD9445DAD66A569 -F3530B95CDACC4AEC5ADB5A77EEA86ED95F3811AD2A502FF553ED90BCC8A2C4B -968A7AE8D42F9B5350F7E81D09228398FCDA1106977FAA9A4370CBCC6A3B6066 -DAABE9C89AFC879E17DA9D60E86735975AB42349B4E37AF180E6FA628D056602 -E7EADDBF20707AEA86ED95F3811AD2DDF1A71C902662E2236641EB26C6DCEE68 -DE612EC635B3413ABDC2777C4930031F36ABE7BD07A54E5B551B90E4C1C49E74 -66413712A7FBBCA79D2FDABE1C7FEAA054C40C469B09385B88D9E163AD864BD8 -C7A95BC217EBBF0B9BDC9A30E8C8FDBC987307740E0186759F296F25FE60AE5F -5F4F3DE80062B8D95BB3851BC1CF1BFB30FF521940D4119108FDD2D1038ADC68 -C70D7175476917012FBF01163B4F13119754DAEB4C88C67D4FE859D927E0E6CE -A0332DB9F6F17A639ACB871032ED406DE854C900FC91F942CE5D0AAB28D29B2D -45B4975BEFD7CDAD2FCEE66DD889E47371A677AC6F4922CC21BD95A0707D2617 -08E5E6CCD078D7F9F3F61D889666F8AC7AC87A367EF9FFD4BDA2E48C7E5A10B6 -E3F942D03B8DBF4AF73074469DCACB20E24A6DFD76A069C9775A00E4A1A6D411 -1306326604E56F26766ABB680F60D676592306D8BC3083B06765C7D1D84B0F34 -9C57342972549BA8BADE4B571230AE6DA656922D74D5E2B23186163ACA97C7DB -C2269B8FE1AB9ED38E709D15DC351B7CFF110480B09786384B0E19F7F0C20B11 -FDB0F4A7D9552A5ED697D69314BF898C1C28CE865AB509C6B4C0EA755BD1980C -36D3455F588556CBC4B24764D050C69D000FC26EB800D16745C5E877A24E0D9A -F8B58AEC57969F5233E2AB4CF85048789BE20ED902017BCFA6A9CCCC6BBA1D3D -DD417FDEBD304FE32E2C6FC4F32392E8936325CF2A102DC6987CF2D8090BA7D3 -F1B16D8417B607F842FEC77F0570DD4AA98D8BEDBD3A5F962FA8BAF58DF43A39 -DF4F494458A2969EABF685A634431D9F3C63D5BE1A5C36ABEE60E3E1188B69F0 -C8D4B8A9C469B32C9ED1980C4CB5C34A4743415E2C941F291BE9931CCEA75CD3 -ECE1A04EBF44CCC1CA894957FD2498D84BAC4D6490ADB8D70DCE7A8462EA4D0A -2EBC632FFD96A6EB49A8E75EDFC1818C66A3A3E9415BE35C9DFC6B499F9FA286 -33C57BF883777AD1303366AEDB794CF2656A1729DF422189455C5FF2D23C1A5B -17EB0604F9AC1C484FB10FD194704BB2C426C55671372515A8F5FDE717BDD52F -97832A24AE9413B8C7B18D4B6DA7E01B21C53A8A1661CDA7C26290C67E3994C7 -7E833C1720D5FD1EC1C284015CDE18CEAB3867E917C98CE6C0779DAAA1422A57 -E98AD4D7CED96488C463B3A2FF79DB14D5999DF00E240548B918AA5E62E5A350 -B0EE6B87CFD1AA40DE86470F131CD145379EC562BEDCD4DB77132F8E6CCD47A6 -E71EFB7075790A3AEE5CCA6955EF3E43AC17191F202257AA0DA9383D8667CEAF -CC575961B1906BD44A9A652307B7EF8BFDBB7FBCF13C3B599FDBBB774F7272C8 -492ECF2B562A200D633B0FC7ABE5BF2E6C34ACDC5E5B0E351AAD9155CC3AC213 -4D7E7FBE2A98DC8F23BC236AD4161E5A44503A563F06AE338B9637B600F8514C -34C5E0AC65D85B53B18C99512BDA1619B1E0A54FC1CAC0F095C29B50B083E4D0 -458BB51FB51548B8A94A0290E121BEFE8C3E1720BA52FE118C79F8DA266F89F3 -2B9AA41CEF288BBE9905F191DF058B1700A5D79FD0452BA27898573929069189 -D5851D2D72794E883821B9A157CF685641A99FC0D7CB15E2DFD2F6459FF88757 -0B3DA85186B878777DED4FFDCC47019E52461C67B3240705C19A10B538CC9FE1 -7E24F3D2AECF62EE446194C687E5912D550BC96BC0610A93CC0E261DB8ABD77E -D0E8AF55678E261DD2E57767F045BCF8BC54BCA3800F83AA1B7CB194FBE4B27A -F60F60498E7D31F50947C86CCDD07710EBD56908E048ACDDAB2E08316401D8B1 -81EE22BC79035632E6F3D5BEEB8A2D8B7CE61B83270BE6D3A996D0F7028AC1B2 -6AA9510AFB2C804AA4A34ADD935932FF2D48C9E29D4BA44201CF03A765A772C1 -3941242BF84DF465C1E569145E6051FDE8EC2BEC97F0ECAB1B4DB17DA98F3388 -22A119DA37BC20C5A23E03EBEAA6B0F3D06F91A39ACA120792704A8363BF66AC -6EBA491BAE27702071FC1636B5CEDEF9431A5D7952CC1B50E39E6D615219A7E1 -0CBCAA8F832C827516C1A6B4935F4301AC7AAE77183C14FA5B76B08C3D154265 -A22CD8602239E2B32CE919AF44BC79005815B1D2C65378405645FCD9C5E125CF -B3E3DA1B660E5D1129031466E74A50D27E8F9A47ABF9F7DF911B50DFB497BAA3 -74638EFDB6E4C10FE3C5E7010CBF7A45582DFC0EB253B2F036A68A737A1A560E -8ED6B2D834045D61A03BDC63D641835DF3132F2D25A368590AD47310066954E1 -21701C915003C885E577E9097CE4186BE217A2F3D7A38325D20C60358C55E4CC -8EEC502D0C44A9B6828B7F1780DEF8060D7DAF7474926A63A6F73A85D5595125 -B964E95FAE6315C4BB0926CED5F7930F3C8C5F5E19FF44103E7A8324E14A75A5 -1E8883D1E8ACFB0580F0FA5C3C72F4B1F4CCB137705DA7E04938A5C9499709F7 -C85F07715651765921F017176B028A832560766631E307AF7F2BC5BC6FE2F8F8 -5BBB01D9FD44CD3B745454F6D3C8A57BF24C94BFAF5D43E0DB17CCC998E696CD -96E60FD8EAFC2AD77513900E07D00C705EC6388EAF26373E931425A333F06B6F -CDB93259DAF1D24D6EB0C53FD42447B49C723FEE17CC806342545AEE71E16A2E -C47905B31E052F4A95FE1375C77D62EFBEC3F2B57AD54524BFA4D11AAB4F8853 -323C8816DC662BD77E861AD3CAA8A3B0EBC1E43A5C1A88B0D510C486B03F9A18 -500A65894BED74898ED02FF14D29F561FF22B2095A63FBF9F73DC9DA46C03682 -DDE3C7F3E3D03C092F4AED3001E326570EC7A588A546DACF76CB14EBE8C7960D -0F13DF6E8C3B6C991D4E7E15881D4F8BCE999E31F55FF6088E7937A4E70B166F -7EEF5728CB89313B463A6295389531F30F1FF3033636F365D0464DE72CFD498D -EEB8CBD021C52D73CD659821A69D164B0CE8B2BAF5C35CDB1E964033836D2E38 -0B7577DEC6EAB35B8F4CE239D2259164F21B92AA53591B2387FFD46F21B18BCA -1817A627188C59EBA49A4BDA43B6C11F480EA54E583D0C5AD125BAA7D6C45C30 -5D4E5E9F003A2BA9F69523A88ADA4AD77F0F17B6231F6CDD3B65CE78E1E6E101 -B7C02295F60B5B33BF0867995A8037A9305D2F00D8C0693C7BEA51C82E5BAF05 -FC43B2C67ECCF0C96993E112F294CEB38383D63FF4CE2879A361D332630357E3 -07B111B8B91EB30CC14D31520EB574CBE1F1C5AE370CE1C7012417E9D0E081F8 -BF21E2B5B9DFCB452C98056DF1A31AD385163AFAB9A874DC6E344E7BBAA04202 -AB129DD4F8F78C10C346EC6878535A7566ED562387E9DCD3F920550A78CD3E2B -43FD9E5EFED97A541D8916E5AC7634327D48B9FC52332E827D593943063FBE28 -10635C18C7666E5BF3B33D78D9A633D6F3C4B442E0144E020F668E91DA73132C -6A1641AB98C5CB25CFF36F9D07C294627F1BFE1D0F328DFACF2A412DA1484B87 -63BA9326DD9494095045E652F0B91CF654A62521266536A14387E3164EADE1EF -55331B0C06D2C95524D388DA05E583D22606A8ECD8484B2AD0E4D6EF64A30456 -48CC571B65EBF0EA6033858BE43059075FBFB1592CFED2248DFB1ABB920132CD -36E6791B2015823FDC64FF7CE796E7A26B9A5AB859E42B12F69A905B2CB2F9D1 -223DFEA464E8CCF03881C5181819A48F9424774E04E429C30241066661038CF2 -C93BEF67F9F0B197A6C27B7179650BBF709591382A44E9382079C8B59291E0F1 -5FB82804985D453D2FDAB0E1AE990CBBCAF196AE7C63E2338D907EE63CC6CAC1 -703882EA95A137AC6F633255BA19E2A651B901DC8A44C77024C089E77AE8ABA7 -5309E0E8458F67AA264140D21EDF0DE67F24D7F5BA3A908D8923413B476303C7 -C3B8D68D41119827CF436FAE3348AD96414C1A6AF5308E8BC344818284DFD28C -6F227A98273FA15B054786FFC37ACEFF660C0B7B92BD2B482CDFDEE82A4EBC8A -04DC835F6720A4AA064A5E12D8D23E33690159E9B9672520358862685CB5800D -D6E24EE5B06DEA0D4CEB482F384904D21563A1DD0BD62FB9ED5EDBA8738E90A3 -782F94AAD44200652873239F07009E86AC3E80D7496684040B32289ECD009117 -91A81A6C0F84ECAEF8A4E6845F715917CF19E0596F72F71710D649CFE12BDCD5 -A936E48B8FDF57F8289EA61ECCC07DED2405EE4902940AA292014429A736095A -2063A0EFB9C51A05E8656F65ECA56588DEFD523FD855EC13B28C716B66015813 -AE3795854769ABC2DA719924E1AC8B295AEC0A6FA683BBCEF338566E8E3561E8 -3EF63E5B3518751291EF27BBFC695480622539F82495BA74058A6AA62F5E0FCE -460DA156D2C5B2F97D0F43661F1E47686BF8CFD2FB19C3CED38BF2D29F015D3B -511721A4D30642208E92B9E13A0D1F8ED44A701773D14DF0CB0E032FA0793789 -8731FAE6F07F80B68B9952C5067E3051B6B92CFCE6FDA116D04C6D42DB304834 -4589C43B695AA80AD63ADE37E0022AFE98D3A8754AC543C883825F71B3C1940E -DD56E6592AD60AA728F2937E23CF9280E9BD21300387AD687142E954EF567C1B -B22038D1B311A3C09E4DDBCE9F51F4ECF83E01D51F782E10B620750E2C4422CB -80970C04DE72DDF2D79C24F77A3B5D8D1FD1A4A60CF964C507E70F36C94FC49C -40281C092F51E15D134C025F48CB242466FA6BC67A043A2B51375E49B5E23A65 -056D27230A209105505FF1EC4385F03B972C5EF54B1D68D1F880832D1617889B -E3992494886663211A2AAE74E5F222786B294E7F407CF56B0E5BC8EC7CBE8530 -BBDE27B9096F2B26C4E34CD2F1ECF212CE844CD0837CA857B05B698E39B6F28F -C6726DFCC4AB93563E13B27689153341BC606532640DF6578271B0C79C78D6D6 -DCA8F81F3E1A5E51A2C079F6360AFECE8D78F5FBA770D0B5DB9950E38715B682 -E12307AF08FEA673C350A720C998374D858364EDD89338CE98B6F6EDA54E9DBA -8282237CDC03F3FACDEFFEB144E4515B262C7AD44086A38797B4A8AF0EC1EE2A -F76E9D37B8F95E9D2E9470EBDD681F1680705BFFBC47E7BF436E2EE112E6C32C -F1A79ADF8A04C6CDE3AF914051262F8476A3C98C9413388E7C2CA43C2815AF6B -4118CF875EFCE5198FF3992A6E2132D04C2877B78CB2462CD9AEDC8B1FAB3BA4 -AE9B88218ADFD18C20A27D45535672225C8314D9374F71A37FE89BC2B1653F2C -9BA81FB8302E456D3D70D746DCB50C8AD964B73257D3D029BD257426A3AE0F91 -247CAFCDA9A58D3DCD8008603A5DE0521B302E4D4D09B1223571FE8B1A4F5E28 -D86427BC862A62B609784D1DE7AD977738F5B057BD986ADA869E15D9D584FC9E -78EEE2F63AEE8DE0F6F70C60A6FA5909EE36207D17CFD7A525BE444125388FA3 -B4EC467D63E6AEFA796DC56C8FD8D2DC570C851B70411891A1CF2B2563E39BC7 -5668922B661DEF5A805B9516C1D8C4548186E9FA937A00931295B2A5241E23D9 -D14CAED32A28F016276A996737B9043B69D135C4EC5315F8B18FF168EC1657D6 -9EE29F8B214C32241B47ED1D21BCD2C55C7D7ECA13A297BF58F56E78A3C5F718 -9F937888483402D1B69DB5B159837260F1E58F895080EC30FE323D1791C2F1C2 -E25C919074D6485F10B9B608C3A0FBECE628D2A07BF81710119FDDB6C70937C2 -DCB42D82297C762C2CE8B16C2274728D5F1795DA49076F55A03AAA3B39E3EE63 -5F26F787F605C610D0FFFD8EF07F08249E4367D4FC5A72A6729190F6C5392689 -D894518367ED02B283EAF68ABDA35BF03637A9EEA0991B170BA4E94A483D9702 -6FC921DAE58B59164C3863C59ABC971E8C7E95FDC7242CC2871265B0C214DBAB -44920C2BE36820C375C0583DF09CF4341DC7A047A277FA8742AE36D942E9C95E -74BD1AC87BFBFD6EAAEF6509528FF9512910A89AE00CF891D61DF8950736E909 -7B4F40717A7A7C3C84CAE4F2D2C25D7390F8DD1B61964B92D763B431EC43E4BB -55C6BABBA783DDC400452573195C3D0AB0F49D50A77C5BC17890E2FD63064917 -DF2DD12AF76D8403427306446DE37D8853D4462EA2B0A67FDBB974A78AC6B7D3 -702047C1BD247C2C443E7D0944EA05741910083A06529F27BD6CD02C25FDA535 -2C16D351AB0ECF6DCD090D80AFEA59FCCBA9014D4BB4093C8A8DBF6CD8473492 -64559A000D55C7C55376D66603F3112DA770A2995DC39BA4EB348FFC96DC7A74 -595F2F7320DC650A7EB4349F2D4119B5E6F176B2D82E96C27251BD3D0E20498A -6CCC26E21BDCEC8F4FDF45E36257749C97E5D730A4D4698277A7B39460314E86 -4091F86394DC6ABD399B8750B55455FC68643C937C94A3D4DC63EF4DFC1772C7 -2993FE3C7A807EFBAE415258ABC674D537C21F84335AD02A9E4FFA99F55B8CE6 -5F1E19C90A187F99828BD85229C64451228057BF6FD848C897FD56A5903063EE -935DFEB4E4FA8EE80D2618388C7EF5EF12B6F10AF274371F45CF0A1EEF3FD649 -D25871125A7F3D125C54DD247075B508667EEEF405CD7FE5505B40D42251B0BC -FA700B95013DD0D2955CDD13EE6C8940E5BEA7DF36C3CA6E905E27788C6C2E35 -416961A3EF9A831D7876C4930CEED5B0F2EB65869969F2658AB50449E627237A -1EE56ADC5B2A7F3DADF90ECC0179705A0049BD3A7844C3D8F792439C85A8CD09 -9AB53D3DC13C85D0112FD877B3983A0EE39277EEE1FF627200BE573719402944 -16352A7A430090B6E9DEF2B388002B8EFCFA9448FB9B9379BB47832DC466B6E2 -C228835DBC59F672D3F63BD0909C6128DB46F6EBA560A227D5A91F6B52F81EA4 -5F2912C2119022150780B3B69C0224C40FBDD0FA0E216671526361ED2C379A9A -63743D302DD08FE437CC63E7078B6990D6AEBDBDD49789B328C5478D36BF2C2B -1B39BED5627E742AF084D63C2CE77E5666ADBD58C0563872537EB827E072DB9F -22EE512FAD2D3F3A638C89FA689C36B7BF0D6A8B1881174B6134C41967B7F539 -82891B10684AF751A5143C17B444E5FFD715A52FB88A504C37FACDFDE5852569 -23F98A7060F16F264B52690E030A05A03FC365A25B4F2CBCD00864A5075AFC24 -5C7E17609D1B045F84696C42063DB18788C5368FC1CA77C5BE509556D4A2F78B -E5E3267286367FC5D8AF6B94F0C8D6AD27DD21FB6A8B8360004F82ACD4496253 -D31B544CE8D5BDADDB81CAE0EB5E072AC6CC4DD3FD495115354AB93067CBB6E3 -560AAD419A4445528B5316E7D0198825DDFE73628FA4B0CA39F8A88CFCA923AF -2346E469D4002CE612FB6B71F213E2F183AF448DEC02E04BB7DFE662572C87AD -EB3C52A9795F8C9AD1DE39F05D6AF9781E34F191EE5044FB30D3B733CA40EDC5 -8547FCD0297E8AE949D1A3FF703CFD66D4B7FC94E88C42394D99B79AAD2329AD -E7A589552EBFAE3F07376467B7BBCB08A0F90071A154F5E51399CEAD2D291F39 -0CCA15489876D6617E6928872895E46A51DCCFC2D230B160E54AAA7DECD7066C -5A70C11B2704EAB8132F1B7D6262551215EECE958ABCF01ACC98B1CA1484642B -96B3B254A63778C385E92F249978AEC54511BA3F36CF60D058919414C1800605 -57B45DC98B556A350B99C5E0488ECCDCBB8D9607CDF40FC2FFDDF6D9B9032299 -009352CD70B5E7F89F69960B2359B910C31851C9478E4340479263B6DFB52F96 -C64007C7FB5489D6E421DF86E7A4207BD83C69F567BC0887BB58F1EE69351DAB -B7512B0C015B8CB97591F7391F584C08CBC3AB58658118486E77D64F0AB9C269 -6BE51B5C2BB6DAD8D7544A1A0B193C3AA33527B5461B23A7EA9C5E622BA43C1A -2867ED9F4B0BF1195476C6C0EC5017266CF262B192F80F794D88BE78AB09EB98 -B5BD32FED7F47AA7DB208B5AD86F78A5730DCDE533B1A7ECA8ABC3B0EF02ADDF -CE0B9967B2865E13DD17F3C2B89111FF6EC170D1992242654B8F31605BFD5164 -44DEE30EEE588718A15299C93C7E862DBB3ED2204D5E04F19740FE75A7441380 -F554BD5FF4A65D59CD6666825113C4C9BE2978DCC651B5A9B49E371DF112DDA7 -78B1E5AB7CA9166F1C563BE7B0C3194899993554F063E42FFE0772CE3296ED0C -C4A04A6CCF168BAC5660A8571E858D5B0F539F541258A6B5DDDA73E09AB4A76F -9F2F3C88999C5ECCA90E9A8EDB3C7FF5C7FD207D93DC1FECCC650157C24A8E93 -5727DCF4D05497575122E59237EFA9A415B0780684B752072E05E453B83A678A -7D5D5C3350DF128572364D93CB4B714C53AE7652D8169CBC4BE48F5A622AC156 -75FF33D2CD347D849D7F4014E39F6E4A8FB4789B1B2AE9F3A87AB86148EF3FCE -45ED77E90F445D217495696827A429285FA47C3E354E35089916FEE4EA1867EF -C6BDC2AF437D6AFECA803BDA1D8CC26B167FC8BC0B765E6C4FFABDCB486E7544 -C9DAEDFD6ECAA9E900F5CF7023CC8AC7AB951C91CCF7A18FF33ED6179704CDF5 -EC6E9FEE72E88936E7CF3B4E14E52CDB046E18E7DD7A7622EA804F31D9F072B8 -99AF8495782D70CB3D445848D607A3BCFAD05FD16B8BB3470B211F3967354B88 -87D554B30A78BF185D2890F38A1BBE0C7FBEA09EF87008A89F301800AD9CCE1C -4C9FB2ADE6B3739FA207BB2C70CE7F6A19793B6508B6C19739D47FE0C6D7B3A3 -D2A9FFF6F8AE4458ABC9BA6167C8B31107C119BC0250494A59897FE380772A4C -0B60C20D44C218A9042BFD7393DDDDB6B6EDFF203AC1BA06D53683E9CC93C557 -8DD8395C85F8ADDB3BBF5A15F6812755C88EDC58A1104E643F9C81693B70E98C -180103127A6D961E0B41759DA615D317680399B30CFD39D3DD1311CD36EFE597 -FD8485DC0FF421D31F1912930BDABF8877950752B9FD2557A74EBEA591CF6D45 -487251DBB4C19B2D12795EEADA7A4A89C2AB877B9D14551EFD649B7868963F26 -D8462C12256B122B7F56AEF135C88021CE8ABEFC1D42CFB7DC62784C25121B72 -E5792A3CF4E51A5515CC2363E123E27AEA04B0D3C92E5C2719E202654DF7F093 -E67C0A7EB730EB302E4D69BC25236252B6AEDD1996D69F8FD52CE72184FB8B80 -396C24CDDC54F2CA5E27839DE141299FB7BC8509F9874C4BED39B1D6551BC6F8 -AACBCF458336E95F4D87375B4FD0476C7C8553E116CC281D74E71DADDADE6D42 -75ED626FBC9F9D637A823531F3C194DFDC6B19CD129FEFC0A3D8978F49DCCA5B -2F54B45C85DF463F65E9982246FF70E11CAB3B011F8645419D07615F900D77B5 -45180E311E0C6C1FFA38F4916C92205E2A26B559C00CE8798D853BCA814C31CD -2C00A445B22328C5ABE1858AE7D45A37B762F21AEFC382E026BCF18BEFC22C07 -1F5E5359FB89C8079EBE1E61C2E947B42B60591465FDF2068C9548934812B394 -8288405C376429709CC2F0A790A676312A1F7B6A2C201A835D23F7915AF31C9E -D16AE13C31245412952085C6511983B603D5A9C4D948ED4E5688D444B92040D9 -799E567CE717B7D10212A4CDE7196A055E661155A06D5BAF79ABECB174D1314C -9BFA608B4A1BF31F3298BD908EE724A656356037573F643696C7E50229A02801 -4F869145725CC69457D983A9EF5A091D52D089B81FE9447358A275D1AD2D5FC1 -C174122BCC8C7D6AC9B9CB78962314A9DD8FB8F2DEB144A6B041D160C9095D25 -F72984D6191AF657489DB7A787067700522FBDEC3A25D13CAD71DA2E44A5F9C3 -B8F5983A564EAC8E7840366BC6045D4885AA5278A704AA73742E7DBA94245260 -587BB24460D421703E6A279F8F583F1385FE0729622A17A070D9AB48AB371A10 -A6D0A5DF77250137667BD4B96F13B55B07B6D2477B1EADF3F55BBED7C7D1330B -073AE7BB89D1A4F5062A4A3B2B0EE53B21EB748D1353FEE8DB441446127BE568 -9440CDAA3C1EE4FFFCAE52ADFA631475438CBEDFBAF3CB40A1D65D47F27A48AF -E88F57F50FAC2CB424A9F35C93C7473D2E9E361125D92642D2C25CBC9BE82D79 -E62507CEB5093DA15CF3EC2E4C99BF6DB1B84AC71720544DF2F4CA7C00046DA3 -60D2254C7320B2ECA36A68E92ACDAE4E3DB361F115C6C82C24EF3C0E773A42D5 -0AD85ED3A753A70DA18AE80B34C590BF0F787A60F6A06412E4D5B169FAA5AE73 -3FF4D5F97AEE71FC0EE1FE6D8C39AE67E9B599D4547F85DF41C5BEDD0BD876B7 -F632549BD6E4CA2D041DCB92DF49269B2847405A6C2908EBEBE3E23398C00749 -616A087F403C0F7A904402844A9F3F8D12ADC69B62040676E5E7471F3037BBEE -B702C43E180647CB3B204F74B9C352BBAE635DE85696690CC58BC3C5DBF00540 -88B756FFB12843D8A477B81BE67263A46350B690E754988E24DB1C03B2EF9A98 -F6138987079C2DF69E4FEF592FC203445BABE7001DD2DB39E9F3C3080DA2ED50 -77F717628868E0021A5E9233E61FB3C3389583D83C22B1AA0391CAFFD924430C -88DA60D5F27F7BA6C8FE1980DBC7717D726F799FD710EEFD2BBE10FD89650E1C -756CAD4438B0A64ED5CDFEA5D0C0D1E6B3E69D279DF532F73AD95D11181D9DFF -A3E9489C6BCB2EDD8B807F9431080047ECA1F1DEB062130B04CCD30DEB378095 -12DC6D807C64164663DB8A54768FAD151DD8A6465CC0421E00CF88BA29E7D010 -86992FAABA0691B2FE05454AB656190AF690143008D4476DC3B66C69FEB150C2 -70FC9E986D7A82CDE0A24BA276DDF300EA9656A8970744BEBC5A864FA3CF9956 -2D2621AAF180783FCDB677A7DB384B0A92CD42C10AEF2A9D8843388B059C9AE8 -F020FD785AC36F258D75BE391B7E085C85C14EB3E9AFAF18AFB7A4E8B8B79CC1 -136070F037E37BC1B62E37A77FBA9FB2F46BFE7196B17D6B84F49959819DD1D0 -1C2ED8034D3E34EC34CEEE4EB129AA5BA15A0D4DB4D8796C50363AF98E460100 -0ED834F1FFEDFA99DA4678784D50DF9A5D11148E7E79E8FEA75D9BA7F5CDF435 -A145DD3BE0C8B711AFD17CF7F909EA1FB9CFD4C1717545A59FDF0BD14AB7DAB4 -795EC7C47EA8195D1C49AA123D0769F276FE1C61A4168FB7328B173EE86B6BD1 -B43BE66C925135EDBC52A3828BA722AC70C21AD47EBCB8389D5F2CCC6B458F9E -304027EB16C70E4AF5E876D73AC63B62FB286BEAFDF3A8FD4A90814C9511AA18 -13BCD561D54E86C0ACB8FBDA3FA8712D746D261AE0E2A3831196F227CAB7A847 -FA1D9D6B3C16ABD37D826433F2E0733B55CF8C01FF41265903CB1D8124FDDF53 -08CCA5FAEF161B11B73566AF119C1E3B46771DA6E64A5D38357CEB8FFEBEC145 -3F6C04D2391BE10CED95526744A7254860B862328ED2882DEAF17B785BAD0CF9 -CE68162ED656AE163928E851235434DE64544B21EBC47BB9682CE60E17947EC5 -AABBAD6722DC8473B18A07DF13391DCB29E0169354454B0652A0DBC955844906 -139BDA0BE4EEE9DE6EBDE41CE534C9740A75D079974B8A75B0B6A90FA55766A1 -5B5BF32BDAEE12311BAB2831ACA44CD3953649803DF0A57A5555B33E2CCAA124 -4FAFE2953F67D3B891444C4210419C589EF3A4860FFA77442634CEFF8AAEE32D -BD9E2BBD1726DB317638D497BA8F34958F5D947AC24E89BCA6689CD0178233CD -ADA6E10649966FD2E7A40FB877F9FB2ED1E98043847C4089CCA5C02D6BF671EC -DDC0AB16A1B96D4D3F46B0BDDBD6CBC08E78A1F0FE0BE577F5C2658E56E76411 -2AE3E36B4489125B30C34F50B2FF086FC52C07FAA51C7374FEED8FA2E499116B -62DEECD96152EC9F97BA2840DE630D9FF069908CBA92DC4478D6AF9873E84C49 -8372CE8BED20411E90A7E80F919C25DC44EE7019D4BC928985DA5DE620481AFA -A13B66A64025D97E365FE5335AD4AF076408350BA62D1BD9434B008BD4E64773 -CF6CD42F176DE673805F052E4050D7B4810FE0340BDB4D517018C9A4F4C357C4 -6C4D0FD14723248FE456B091587AC404D293D885885ED7A4657E36F76C9FAE9C -C3D80604023DE93CDA65726C8CAC2B9106D0615132F70A8D23BC43E5E475712A -1078EC1EA16801732127AADF396A0028B3296D6D1769AD7773BB03A8272EEDED -E36F76030DDA855E25B5753025D7C405BD95873BC32972AB992998F5B5A46108 -4F5AD890665234A77DCFEB4F3336D0936A59CB05C4814FD743CF1B5C44528872 -3EEDB0B7D0C6D621CC38B1745F3072244D5DA13FE3859980120029A1EAE2421C -C5C14C3BD89D58A1D7F93ECA5DE9685F54F4E64833FCF95BE8C5AB2026554398 -E8F787DB595F1B5661D0E69C7357DF82CB478BF52055C73DD6C9987A0E3FF814 -B3A62235A1E38EA066F2DF9A01D52CC3162BBDC7C9290C093BACFAFB35BE4965 -3D4A82A2456381E8C69D7303B9D6C95C1FBCBA7A5B886870C590A3EFFEE9916E -1FD5EE9C00BB1712A05D625B3B75D63C449EAF96438DE3D56905879B39C338D5 -1801E834A438361ECAD75D85579CACA00C83DDD8F53A587DA9463BA3DB07052A -539DACB330560FA30AE77E239ADC1E1ADE16FF555AA32195EA2DC865D1173A72 -34EBE565B08C25E6D2E012DEE128ECD369410AD22F2354DDDBA62461C0B25DAA -28A61F7CA33A5D405253921E83916C01E5ECC9BDCCDE9A8E9F83028F47F61154 -549ED5E9211CA29E46553BFBC1A066BDAA0F6988F420764C3A102D1CF352A4E5 -4A649EBDD587D56FB89FD9BECD7F1DA1FE2A0E5FDCC9F741B624B0C641B6F174 -14B0F0E9791E794C4FD628577F55F7F480640362A61280CF59699EFDC74B6183 -30C720457BD73038C8514DBD4B479A7AE28317348C5016A2FB5795CC7D0EE466 -46BFBD0FABC8D9D20BBF133A4C2456A51BD68A4696A528534AF2ABE6A503DC76 -D2C6633BD227A02ACC62A5313B9DA70B4BE5BAD8BFEFF3DD4224A6C6D96BD232 -2217DB0450A68C788EAA618404CB7AEF9CB75BAD39F59092A13C9EFF7FEDDD5F -1C872B80000949C6FF418F40838CC3371AD625BF2A51F46EA2F451F29381AE8C -719E96B544772E43DC60DBE33575ED357C59BF146469C50880EFCEB8D91A76A9 -42A52C5E20BA7213ED6D12580D4E12F8D5C8D0E731ADCB6DA94D1C498A1C8CA3 -B88F5DC29063E043CB1610ED9CC0EFEA122B3F9DEBD2FAF31FA8C16D39B41049 -D5586DBAE9F3BB680CCE74A053416241090D0179929A5D17047641E9E01145EF -04C59DCA92C99C72A6E450FDD462AA97CD724F91E452A6C7BAF10F9663F370BD -82F1DF6821808F3EE971F8AD22F10129B55D3C69E43F8EFD8DCFE64D191BDCEB -6F3813ECFEC667021FE72EBAA04083F8773490ED73F110C094FD55BED46748C2 -2BFD936C952ADFAEFDD97BD87B20D791780AD6CDAA8652BE4F068EB14040FA01 -CAF3F15246AD0487A2728432B37CDE9ADE14DC6D8AC1DD9CD3A5333C5F1A0ACD -CC181A050655CFDB8596083A64E819D17C5E5ADD32462B04B346523B1D2FE542 -BB3267C06C3A45F451BF28E32A8930D145CD4B394119EC00A4502DEE350BA643 -EFB74F01F32A7015975DBC98B448530A6779E6638E42999F51636FDABD6B58F8 -E3995339F7FF3A9F52241F9917E32A3F610B66C711882BE72751B7B73886C167 -C626D934DDA1387E89D9A13B88628935C5E6991032DB69EE9D00EE530D2BB5F5 -B45053FED98719EEE851E1A36DDBD83FF86B80F5FC12216105DCECF8C4AF41A9 -6E412E0C2F1866F53139131638AE35A73911B1D96C8B8FA40C246CA8E9279527 -1F99EF9285EFDA72715F52300D473FBBE977F5C5DAFE04BDA286BCEA940E3FA2 -BD7FAAF157480021D1211C2096AB1974A154D0091121E018EA0399880B21A260 -81670B26887BF14959D4A21FD139836F4126544A51084977F044FEB4810393F8 -418C32E0A2A0C03302D333D1EC32C188F311A1924CF48A2FDE0700430AEAD23F -3FA4B230472208A940EBBDB7826237F4B6F73071268A49C220DFA4B9FC0144CD -FBAA4602E33EF7541AFC3D5472F4525FE4F74ED4CE53389021E711C9AA8F0FAF -B674A8F62C2D317FD8091258DF35B0D69A0ACF64C2BC79342811FD4D8A04E08A -5D6DE5B96C1900E69370B6D0321A2A8D315D785F761E5BDD3343A66D5CD0C809 -827F0265C6FDB14EEFBB75A907967AF5ED715E149A91F8213D915C6C60FD33FE -48C36645F4F476A130319A1AE332F73DD76EDEFE02F7E97ABB3D11F2E8504356 -99C0747A3CBDDF002C25C051E1C7DB92E011470F9E309FDCE30E6ED8D78F1583 -F5F8F74A2BC4355B6D9DD29AA0D57D9A8652C86F9F33766FF16CDABD7799ED6B -D399950C2C728EE95AD880B1A4EA0042E5B198BF647F5BAB61CB57F8F2450E26 -5BFEE67F5BDC4A8C97779F64B6959AB1E23A2BF752CEDEAE0834ADDAAF780986 -A11687EC66FE8FA4610D606713788A0C34EE603E3A9538B618AC2EFFCF16E5BB -18DFDC3EBB84602E03743E72E7D0CC314FB59554929DA6924DCCBE64045721CE -6A9A5116A3F2B7D78B8E7FBE7B79FC55EC16451655C9087A602D1CC33010CD8C -369E7DC96FA6FCDAC2EC05ABBF5DB82E1718D05AF629101D5D7635E1E2D378EE -A123456E311F4237F4A165CFAE5F2E2F83A0F39A0BFAF5C7B6AA4CF14E40590D -3DC9A7C67395092377734DE58E150427CC6BDE166ACE44227ECB056AFC5A11BD -F44260CEEF1C53B8935978197789967A92B1F3575B41613D87E926B9B1AF03E6 -8648392B7CB2BEA66D0D7619BA23B47EBC5DB07DC2A8997B30BB7F63F98E9D70 -DD2F945777A74D7B36F8BC00571C96CCDC1397CC4E531507B135C71F263AB868 -F87E02A47C7D8A95E4638E7E3BF14180DA09BDEF281A8ABFA5DFEA3F412C87E5 -B45F24D87418C1E397824D73C2D785650ED15D868B011E1AEE36AFB32DAB82F2 -8AC23958148447CBD2E57283AF4742299D8B865FAB70AF4ACBD8FE6C00CD6292 -2FF0A88E9B3B95EEEF82A31322E79D8E3548F582899214A4A862FABBD1937E4E -3FE6CCFFAEDA522E9EF53E33BEDF7EFFC992CB8CEA8DABE083475DB864376158 -931D93B618F8D98CDED544817DCDB2345C9F769B307736432DEFE14FB16735AD -7B87C42EA7844A47AEF6DAD0CADFC78780E5B980D00C2BAA6BC12F94AAF87C2F -863D3392D9F92AA698BB6DF8D6B8F18D87BCEA4C7EE1686F079F72EE73464042 -8B001491E8EACADA1CEF26D90A007E056D8549A0BBC0E350FD74B4253FA84608 -F6AA0823472BE190F6A7B948F68D5369103BBD85C3510CEE91926FE5F96A8907 -C6AB5B3D7A8B6EA04F03F3113B3A06A01D7D7AEA934D5B664727CB5552E26336 -426D31BD1191A1F9BD3CAC8AF1B63087F0280C0F3AA2D139E58912BDDD402938 -BDCB9FCF874D286E2945C8E90EAF47335277AD275B6E0BCB59EEE72E6D8CDDEC -3974294C1422C0961AAE2812AB1C43EC9F4AC1B3E81D1FC06DACF6FF4F17693F -AD1662AD2462B44B4157A687038C0913FB7DE2E25559696F3F2AF579ABB9E4D3 -3E41D238E64A2C1A9C21E2118846B3C8E48F3BF1F4F6EB1F3BF2C0EA8E279DC6 -70A7B1606C72E283B575A8C4375477BE6D63F2E71CDB071900A281D3CDCE997D -01C166295DB3700213BEBA265240675D20B478240368C8B82710F6602E833E20 -C924347FE3953FB574F6EB6BD969FBD04B4FBA3C5D9536FCAABE187875550DDC -2D5F9A446D0951859114659A448E38A36BD37D0CF79B13EB5D68B45B2316DCA3 -DE2C015C318462D7C201AEEDB5C932B22950097475850EEAFB7916BB8D4EE2F3 -1EE3FA20E85B28A3C34168D23272DE3F6A9786138FCE8F18E6337C10744B64E6 -A9D1571FD2724A1D2310DBE3C96ABF6CF93DB3B3DC537E66E5D4DE83DC21B416 -BA779D6448B7C9EDB85F3E71E7393392A0542FE9F5DF4C10B54D54A7D0439359 -B4606E0E56DF9842953E29BAE7AFB52A12DBA546B41EE7DC5EC3968D8C8C0847 -57A145590AA930CD23030C155D3A2FAF64DF4E0C4D1D0F1AB80F64CEEE326F72 -948DAB18CC90BE7E996DD2CCDCBDAE0CBF853B27B44212A298068D18D6DC4444 -D48581E65C28BF8FB9DCF10A7F50CE2840B1A4F451203983E10C4D59C07E6B31 -C35DC6D02A4856E2A6D3FD63B36C9C2BB173F5D5097241D97DEE4BC152873489 -B2E08848165B619F84BB425E29F9A661C772C45774EC3F0260309FEE571E954A -B77B06E59228808FBA8F8D6EF67541697CB4E736FAF12CF1AD56C1AF3EEE2F53 -B7E837630C9E2EED1680783F523375E387DA32184F061DBDEC0C7582B3E9EDE3 -8B35BC9EA4C95731C3093507AFDA346C47B5F5A59FD126C5684AA4C487FE5543 -ACC5CDAC42A58AF0B8BB78FE767C96BF200C1806C5495818304F13596F8EBDEF -EA38FEBD5144593F8CC99CD0B5554BB262120C5CA0035038C8D573EA43696E6B -9E8273A62C8C937DC7FE34BF4AA143171024659796E12E3E3A38F05039FAC149 -B5632CAA9DBC7FE569D7DFE18F57C98400B39FB9D00B7826F4C5522C431A7A60 -0DA851DC945B494CD977767C5FFB69623CEF38C19C3A3D5689CE2A287FF22EE6 -DBD82AE1C7791E2C15EC430B00083DE7E672B9795A1CFD5A8E8CAA7F0CA0E7A8 -B6631A3F943362D862A114C8FE66255B882E82DD604F1B723C05F8DFDF2EE6D4 -39C21F35D99ABF1E1FF19BD0B327DC6A0AE410D1DAE017CFACCC7E8286EC4125 -7F86E2951A4B4D01FB058F785397F079D370682282D164264801D3A5F59D8FD3 -514E781EB5BD1656AA04ABA65F0525F366B792982124D6861E2861A6E3D44455 -4331C8B9B129AF407A56A6D5C29632F1994CB864F5978ACA86E56382C5D74AFA -8A05EC9B136950C3AAFFE587573F1F3E16CBD110C30076D082B29666A5E45CF9 -3F52A4B405E0167D24052ADA9E98853D3455220E8640E1CBE4854FBA97462893 -88D824148DF46933044D09F3B03007AE8DB2A52A22DF786D6AA7E990B0772E47 -231F7865B1E394BADB1DD501EA736778C75EEFA1F9A54B42522A1804A9CE08F0 -A7E82E14BC4D4991995BC16CDE6E7915B8710711A18B9FB97A32DCF69CA8078E -716ACFC562603FF79A7B0D7E87A60DA33C0E3C50EBD3229EE1B7461EBA4994AB -0D391441FF59661836D3617738C44AE20B494035C46709FEACBAC37C51DF0ADD -937441C9E1509C1465C86C08CB2DA4028E873968ACC5E0EF8683EBC9280152F9 -69011E2075941CA66DB2110C971D5778FBC13ED24470BAED6565C244DEFCF245 -797B16127CBC1C08A4B6C4F7D4A9DFC92DBFF7B59C64ABA51243129287F85886 -DE1926D3232A035CBAB7B47266B4A1084BE1DDD7FB7D0E4591345F039502C727 -486712BE3BD19DEEBE744CE2FEFEB6F26C3C17C54A21581A51D4DA8A1AA11056 -5109D5936109AA310ED6499B0E5D40CE7B2361F955816A2599509C2C74F16500 -F74D8CCF0E7F0B6ABFECAEA687E037E5117D97B20DF518643251A0E460B4F6EE -84F171DF6E51F0566D797026E96C1B1B607D5FCBFF7736E780636B1EBBC93826 -AF5665D8F5ADD711B47628DE98DB2C04BAD30BB7D585C116D97A5F55B517658A -24E9325EEC3956E66151ED897102036DA56B80C8FFD40644B78B1AE1265EF578 -17053339690655C02BEDC59321C51BDCC90A17908E21275318292101AFF192D0 -B966D7F13FD49C0A4B6DC01D0B7CC7787D549409E8A4A9DA24E7DA5C6F736A23 -6C82FFFA8E80A9AC290FE9D9C8F480B15252D8BEF76A8E16E106B82C8BA1762E -70D3EC0D8CE7FCD065098D9777C456BA6F35F5E382B05BCBCC25725A8BF15CE9 -ECB6B5263D064AB44EF669C8E0547CB22E0950D513BBB39D9329E6388512A58B -C3FAD349A20A1AACB0A5B43130DED84D63C9AFE1DEC1AF4DCA7CE23529D5DF3C -A183F9085F0E21541B14D0262B2C5A8CBC093A5888A607D80C7930C211274F98 -41145F821C06DA96099AE2466C5E15D95C203FD918DF0464E8F9FED955873277 -EE903EFECEFF313E863BA272A489E1C98B4DCDE2481968F69EE63BAFC75EE724 -07AF31DEC2C8040BFB39E0F370C377345C196539E2A50596253BA5D173296E82 -5AA562591C39697668689B03DECE87E2865029A9937E14612BD86F52A25689C3 -A216C44F11760E65D0115ADF2DE08AF7B3B877F317D190CDC54C451881A9375B -47A033559A12D40AF985662431B9AD2D2D3C375CD51D2674AD9968610C072E1D -F73984B844D97C6B4D48A2134180044022745582EA5CA4EC26E73A3FCF265FFC -B42F2A53C3BD3E483CCEBA578A078B3E3D37CEEDD06295559E7AC740C43C8580 -39E9C988B4972D5F53FAF9B9223BDDEB42CE2EADCEDED117FA4A1E5141915C74 -3E6713988FFADB9C101E7EA4E32926D602B4C71CC4E74E2B6ED2C5DCADD466FE -6E59CECB040107E032E8C41C7E8EDC9AA14C19A7BE0AB050B80FCD1724297215 -55FE58D604ED04F2BEF433E4E8D743CCEC8A140C3B88CA2B37783DD21CC210D9 -118843AAF5F1E42C971522B208C7A5EBA00D6C28AEFD2C7CEB27DFEB34C4F616 -E761C946A6485F7A5DBFD921E1C3FA41F927B0714F5549923B1C27F6C704DCE8 -CC14D43F5E61C16BE2030B378DDBB3C28B2F31EB3A9B2DE4125D9CB589803E70 -E1F9FA1D93D9000C9699B28BF58A9B833B66179BD143DF97F4E24226D7521ABF -3FFBD47D0DD8783373FD30EC663646BE383B662A11CA47E53EAB63D102D2D9D4 -6EF28DB89DCD5301654506704455A708CF5AB954536CB43935CBE2621305C53F -8356DE33BB289807C2F25A91855D3EEE681965ED4231B5068A223116300CE8C2 -312618208F8C1E5ACCFB8FDEA53FA3B63167AF02135CC4CCE66A18220BABEF94 -71202D27835A4B33BD1AFAD7FD36F3DA41A48D2424BCD5353D0B5C9AEAE3FB20 -FD00FCE101C595F41B96B18DA7F963A77C1B6F11809C5D5B7047DD7B7ED4F62B -B7333EC8E40F432A9E323DBC7E03FE6E77A80133A731F42698B610B773CEDB2A -03EF63BDE89D3EA8483C7D9D6A3CDD6136D5B59215B5E8A7342F69556C3A3DB4 -7F10148CA111550A9EF89CA6B124A427C270DBC8A87BA8368DE2ADAA2192CF8B -6871079E8E4443615EFF3D40563B7DD45D61F9059895E4915405D085865092B2 -CB3696AD723FB57419FCDB1971DAFC7F0C60DDC9641674162626319268DB3590 -43D1A0B795D92F34FA3B53359BDBAAB0E8AD87880F750E2AC05DDD8EA50FD7C2 -DADE975A9D383DACB1D4BD91CC064808825687E1EB47383BF09E639075446075 -F6D1DA2201F3C9919CF8247F03694671F653A2681048EB85AD38364CC41E6BC7 -B7C320EB0BFFCD328E8ACA2EC0DC397EDD9710A888BDFFB5D7F4C18C9145E604 -7DACEED08D365B9BC4544F06F19AD3E452A468901182D2FB1D86AAAE7D7CCC27 -4D38D73921F3A8BDE658C5D0EC4028F2BFADC53945976FD7DCBA7621CEF2532E -129FAE3421163C288CAC50ADC7E4D9F903C668FA533ED2970ABF1155772C0503 -DA2DAFDC9AE2B9C3E3F69A368E335FA1AE61DB86E3103110D94BC0E579811BCB -A73AEF0D63FA1286F8DF9C3BF0B4CC39A8DD1235763E2E41BF295215303663E1 -089ED4A32C7BA6298D3869758873C687AEB356F9FB7259AFDAE54872D5569F12 -5504DAA00675BED893051226EE0F8CFE97FCF34486DBE79A83138F0C17A4D446 -1DD177C06611752E681DF48A5BA9FD18BBBB4CF93BB4378DA3F94BEC2E499DE7 -301C3C35C1EAC523422A62AE984AFEEB5A3AC132164CE9CD7B6CCA854DBEC672 -5A6E85D0A2929655453B1F8D899B31214416E0DC6408BBC7726F466A75483B9E -82A809966554FD7DA7D129FEF19CCD36485C0C8111C0F65445AE8FA18A88F65B -3FE53F0288488F7FAC353C3D4148316AC6CCB58E54ECC1DF8B1F0A5BE79C037C -1D66B2773C16497D104F5B8FF98997673D0E17D1302010B1EC836AA936BCB8C9 -ECE8021CBB7AA4EDE0807B0E1CC9C73D6063817F37D2E6ADD4213BE9F2FA7F3D -1A905D272D40F2667D0294F06A528E002231ADCCE93EE8D8C83DB1D60177F181 -C9EE9F67644A6DBF72DEB4D6BFBF2F4482EF642FA539FA9B11064017D4E2BE24 -CC88CACF66A8985A5553283ED33DA5F0E0E54A3932FB9F7F7E261ACAC5DBD46F -A0A60BA41D14F5040BFDD6C9ED7B54F1E54C1DA55955815CF354F47DA7E6E2B5 -B64B48650C2205A807683514711EF6D77ACD8BD7F424A189AB88570B1A511157 -F0F3FDDF868AC6E0F0AEFE887E1B962198CE9AD45FE86CD904FEA50730B6D256 -979FFEF083080A0402FABF95848D194235EE82581079E13DD35391EF2798A87C -046F2D8F22FB936BFD373A7B42202DCE9AB3649CA62DA38F86202699F1BF925F -E4EB251D4E62A3715F946EA1EAFAC067FA3A5CB857A683D62BFB3693CE879195 -D566E6303BCF90CF402D61882D8C69B4EB10EA808101D040D1BED63E31DCD339 -BCB74DFD079B9A9B6D6640EFB13271E933FA0ADFEDE7A87538432F6EAB4FE095 -1E6DE7E738ACEBC87D8AAE22E2ABDE4C93800B639FDE1DFF522C7914F23BC412 -AE85BCE949CB0EA61DC23465631126166E79F8F6F5283CF8065EBF661724AC75 -26300339112D345AF28CCF08FCFB79DFD18FE29E46A3635D2A7679EC332C0977 -D990F9FC23974FDEC676EA3103C511303FF0E0E2124FDBC4654C71DC1EF66939 -869F82E023A824A78F2AA914D66DB7766DF78385F1C5A02F06B460E592F38E25 -11D88F3C7C6CDD7778304BB2A7B5034A230F6FD79434B8482E44B5EA0504D4F1 -E1FAC676C1931DF6117C984408693D8347E241BAA7F0C65DB7BA695553BF4756 -7054F0DE33C6C4E8A0C2DB192A738DEC60453F7BDA82698491910126F9762F66 -17B40D677AB73FC5A69D021A3289160A03FABBCF3F5CC97A802B8AE852C95C4C -4F87101381363761D803A9450D2DE0FCE3AB48F13BD859D41BD884A7865174DF -6FE24A98CFAD6B64FF0C2790CFA2E602A4FE1780982982A55A06EBDA791DFC9E -FB456E31FA716ADF758CBAFB7FE82175483B72697F2754ECE0D451386A6C55B4 -7CD891EF8CB7EA1DD3118A2FD37EBB4EF8C6EBDE568AE2EBCB7083937CFB44F8 -D22A0874DF470229839C6B16724F24A6078BFEC824375C550B1000D3491735AB -63BA324E193AAF31FBDA29E4542DAF129275847AB0E01F4D0D0EB02B8B13BBB6 -7BB8B63A9CAA73AD1AEB412A20062EEAA0BE81C9C8D7B6931A7958AEE0F39BFE -7C3FB88133273B600662DA77954C64E4EF8753ABD0537FEBC836EED5D7FA6E94 -B8732A6829536BAC09567036082AA5DC5E2FC04F81FD09CCC2E06A38777E9B55 -3B1B1CABD695328CBD62884B2F3967DBFAD2B34D05EAE84A9D26D3AC5E06137E -029A3DD224DD394A083EAE22983493EDA8E79D44593F2FCE1AD619DF37098882 -56B364BCC055BB078AC5C64FECED4772A3AD84C5F118F72BBE0EC662F711C781 -FF06E7FDF967E976CE2C4AC70C6DF29AB01AD6D24D45BD096361D01F2164D956 -F1817C88F84C20295A78296307CF499B32719D081919B869188CA8F1BE38E78B -036105BE04BBAF24D2D903842C139919961DEC745F9C311C019802024A7DC772 -A2B4298D951A3B32694C680B0838428348CFAA55C4E434290C8F8829A58AD442 -D70095B3EF67AEAD84CC8B5EE39B242DA8AF17CC368109FE09A8255597C93E78 -B55E37529BE1FFB9EC7B130AFA22616E02832D45D20B0D3D724AFBA85D123EF5 -B821F5AD338666B99473238F7D0CC629D84CB5F1E319820BAFE6A9E87D84C47F -F7FEE41C0A4B07DDC4D36F41C5BF46AD6ACF1B7129A2EDAF5B005173AA7E43A0 -5CB99AA0B6BB2A25DD4CAB130511401EC745C2AB6B3CEA7110853B55311CE6A8 -7CEA42FDD8D483B3C05FF2C1BA20F504343B03A84258B30FD0525D323A3671B9 -18C15363EF8CECFD3FFD93170E427820847FB9E5270FEDCE5E00BE05349A721F -552CEE50DABA48AB98631555C6B9C05965E9650C3E8189954957F83D366EA95C -123E37C9AE58F141959767508FE7DAEE0A2797B992E78DE4B79E1FCA9E7C91CD -91C77EC2E1090069D1DE25968290BE7CCC80E1B9B2823EAD8FD92E45C1D44C7C -AC8DACA28397C3DA27DA5D67B706C003A8507F3A1E85F4004C27DB20FEF9CEAA -4D3904E7AD7F556B5F777B843ACE2D6FE00CF8492C101E232E8BBA0F9E9D50A2 -6ED9FD235F8D3DE2272D98836AD4394AC669A855A16125FA754CD81A23B753A4 -638DC517C0762030D93F7F91D0933D197960350551A4748DC67C6E51A3C03D7E -1BDBD11F624AD9DB1E8EAE650783731A176EB7F4F6FDF972F09723689508DB0D -79B1B335DDE06CDE1B2CC182B7F142CD7690AAFE1C0A65B0147C64AD3C4B779D -4C8B99668D3258FABB40ECAF0D8030C030A25DB7835012C03AD5D32C71B16D29 -D8CE2A2402B9EDF8F5FCA404FF49AE12FD47F3A65DE77AF571A4C9BBFF6EFC1D -15EC16083AF4F28C3C2CF6A3C38A3E255C90BF5CD91AE886EF07613CEF333B6C -08EABE48D7D9A3BBD92955FF6960DB410849946B1D769853D6F1CA89E405A8FF -F96E7B3E7845567B4D639D058447B793902544A125F76421E6760701E50BB9B9 -B2DF78815C771F3EBFDEBB80E415C29D661A2095793F93325F4DD948E78F2EED -DC7295EA159C9102806E0FB888284AD7D128AA9CCA6971245CB62695B1731355 -F0818ACEC8681721C36DFC80ECF0E9D59589080E941B049C772194E83DE1E26E -D05087746F3EF6595180C4480008CFEF2F0AB926519BA31392E3A84A07F2C0B8 -5890AF6485B5AF0C01DD099D6E8C46A1C177E592EFB1AA43A4C225136D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (libtasn1.dvi) -@start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41 -2[41 43 30 30 30 1[43 38 43 64 21 2[21 43 38 23 34 43 -34 43 38 11[58 1[43 2[52 1[58 70 48 3[58 60 50 1[59 55 -1[58 7[38 38 38 38 38 38 38 38 38 38 1[21 1[21 31[43 -12[{}45 74.7198 /CMR9 rf /Fc 134[39 3[39 39 39 39 2[39 -39 39 39 2[39 39 2[39 3[39 97[{}13 74.7198 /CMSLTT10 -rf /Fd 134[39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 -39 39 39 39 39 39 39 39 39 39 39 39 8[39 39 39 39 2[39 -1[39 1[39 2[39 1[39 39 39 39 39 39 39 5[39 7[39 39 39 -1[39 39 39 39 2[39 39 39 39[{}52 74.7198 /CMTT9 rf /Fe -133[40 4[51 35 36 39 3[51 76 25 2[25 1[45 1[42 51 40 -1[44 7[69 3[70 63 51 69 2[68 71 86 55 2[36 71 71 1[60 -70 66 65 69 6[25 58[{}32 90.9091 /CMB10 rf /Ff 133[40 -48 48 1[48 51 35 36 36 48 51 45 51 76 25 1[28 25 1[45 -28 40 51 40 51 45 10[68 7[68 7[59 62 69 54[51 51 12[{}30 -90.9091 /CMSL10 rf /Fg 133[52 52 52 1[52 52 52 52 52 -52 52 52 52 52 52 1[52 52 1[52 52 52 52 52 52 52 1[52 -8[52 7[52 7[52 52 52 68[{}29 99.6264 /CMSLTT10 rf /Fh -137[53 55 39 39 39 2[50 55 1[28 2[28 55 50 1[44 55 44 -1[50 20[62 2[36 2[65 68 19[50 4[28 1[50 42[{}22 99.6264 -/CMSL10 rf /Fi 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fj -134[52 52 52 52 52 52 52 52 1[52 52 52 52 52 52 52 52 -52 52 52 52 52 52 52 52 1[52 25[52 18[52 52 6[52 42[{}29 -99.6264 /CMTT10 rf /Fk 134[65 65 89 65 68 48 48 50 1[68 -61 68 102 34 65 37 34 68 61 37 56 68 55 68 60 27[81 18[61 -61 36[68 12[{}28 109.091 /CMBX12 rf /Fl 130[48 1[48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 1[48 1[48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 1[48 -48 48 48 48 48 48 48 48 2[48 1[48 34[{}83 90.9091 /CMTT10 -rf /Fm 197[25 58[{}1 90.9091 /CMMI10 rf /Fn 197[33 58[{}1 -119.552 /CMMI12 rf /Fo 134[85 85 2[90 63 64 66 1[90 81 -90 134 45 2[45 90 81 49 74 90 72 90 78 11[124 112 90 -4[126 4[60 2[101 1[124 117 1[122 12[81 81 81 81 2[45 -46[{}34 143.462 /CMBX12 rf /Fp 240[45 1[91 13[{}2 90.9091 -/CMSY10 rf /Fq 138[62 62 62 62 1[62 62 62 1[62 2[62 62 -62 1[62 2[62 62 32[62 14[62 2[62 62 45[{}18 119.552 /CMTT12 -rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 -71 1[37 75 67 41 61 75 60 75 65 11[103 94 75 100 1[92 -1[105 128 81 1[69 50 105 106 85 88 103 97 1[102 6[37 -1[67 2[67 67 67 67 67 2[37 4[52 52 27[75 12[{}51 119.552 -/CMBX12 rf /Fs 131[91 1[40 48 48 66 48 51 35 36 36 48 -51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 -45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 -47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 -45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 2[45 -1[45 25 19[51 51 53 11[{}85 90.9091 /CMR10 rf /Ft 139[75 -76 4[108 4[54 6[108 94 20[116 26[97 49[{}8 172.154 /CMBX12 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -/setpagedevice where -{ pop << /PageSize [612 792] >> setpagedevice } -{ /letter where { pop letter } if } -ifelse -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Ft(Libtasn1)p 150 1385 -3600 34 v 1035 1486 a Fs(Abstract)31 b(Syn)m(tax)f(Notation)j(One)d -(\(ASN.1\))h(library)f(for)g(the)h(GNU)g(system)2499 -1594 y(for)f(v)m(ersion)h(4.14,)h(29)f(Marc)m(h)g(2019)150 -4779 y Fr(F)-11 b(abio)45 b(Fiorina)150 4920 y(Simon)g(Josefsson)150 -5061 y(Nik)l(os)h(Ma)l(vrogiannop)t(oulos)g(\()p Fq(help-libtasn1@)o -(gn)o(u.o)o(rg)o Fr(\))p 150 5141 3600 17 v eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 150 4413 a Fs(This)40 b(man)m(ual)h(is)f(for)g -(GNU)i(Libtasn1)e(\(v)m(ersion)i(4.14,)i(29)e(Marc)m(h)f(2019\),)k -(whic)m(h)c(is)f(a)h(library)f(for)150 4523 y(Abstract)32 -b(Syn)m(tax)f(Notation)j(One)d(\(ASN.1\))h(and)f(Distinguished)g(Enco)s -(ding)g(Rules)g(\(DER\))h(manip-)150 4633 y(ulation.)150 -4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fp(\015)e -Fs(2001-2019)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 -b(oundation,)32 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h -(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s -(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 -b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 -b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 -b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 -b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 -b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 -b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 -b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 -5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 -b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fs(i)150 299 y Fo(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fr(1)135 b(In)l(tro)t -(duction)31 b Fn(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)h(:)f(:)g(:)44 b Fr(1)150 927 y(2)135 b(ASN.1)45 -b(structure)g(handling)34 b Fn(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)47 -b Fr(2)275 1064 y Fs(2.1)92 b(ASN.1)30 b(syn)m(tax)8 -b Fm(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 -b Fs(2)275 1174 y(2.2)92 b(Naming)26 b Fm(:)16 b(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40 -b Fs(3)275 1284 y(2.3)92 b(Simple)30 b(parsing)9 b Fm(:)15 -b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 -b Fs(4)275 1393 y(2.4)92 b(Library)29 b(Notes)f Fm(:)15 -b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40 -b Fs(4)275 1503 y(2.5)92 b(F)-8 b(uture)30 b(dev)m(elopmen)m(ts)10 -b Fm(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23 b Fs(4)150 -1753 y Fr(3)135 b(Utilities)36 b Fn(:)20 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)47 -b Fr(5)275 1890 y Fs(3.1)92 b(In)m(v)m(oking)31 b(asn1P)m(arser)24 -b Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)37 b Fs(5)275 -2000 y(3.2)92 b(In)m(v)m(oking)31 b(asn1Co)s(ding)26 -b Fm(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fs(5)275 2110 -y(3.3)92 b(In)m(v)m(oking)31 b(asn1Deco)s(ding)26 b Fm(:)16 -b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)39 b Fs(6)150 2360 y Fr(4)135 b(F)-11 -b(unction)44 b(reference)13 b Fn(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)26 b Fr(8)275 2497 y Fs(4.1)92 b(ASN.1)30 -b(sc)m(hema)i(functions)22 b Fm(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 -b Fs(8)275 2607 y(4.2)92 b(ASN.1)30 b(\014eld)g(functions)21 -b Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)34 b Fs(8)275 2716 -y(4.3)92 b(DER)30 b(functions)25 b Fm(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)38 b Fs(15)275 2826 y(4.4)92 b(Error)29 -b(handling)h(functions)12 b Fm(:)j(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)25 b Fs(22)275 -2936 y(4.5)92 b(Auxilliary)31 b(functions)26 b Fm(:)16 -b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 b Fs(23)150 3186 y Fr(App)t(endix)k(A) -119 b(Cop)l(ying)46 b(Information)11 b Fn(:)20 b(:)g(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)24 b Fr(24)275 3323 y -Fs(A.1)91 b(GNU)31 b(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)10 -b Fm(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23 -b Fs(24)150 3574 y Fr(Concept)45 b(Index)36 b Fn(:)19 -b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)49 b Fr(32)150 3852 y(F)-11 b(unction)44 b(and)h(Data)h(Index)16 -b Fn(:)j(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fr(33)p eop -end -%%Page: 1 4 -TeXDict begin 1 3 bop 3705 -116 a Fs(1)150 299 y Fo(1)80 -b(In)l(tro)t(duction)150 533 y Fs(This)27 b(do)s(cumen)m(t)h(describ)s -(es)g(the)g(Libtasn1)g(library)g(that)h(pro)m(vides)f(Abstract)h(Syn)m -(tax)f(Notation)i(One)150 643 y(\(ASN.1,)42 b(as)c(sp)s(eci\014ed)g(b)m -(y)h(the)f(X.680)i(ITU-T)f(recommendation\))g(parsing)f(and)g -(structures)g(man-)150 752 y(agemen)m(t,)g(and)c(Distinguished)h(Enco)s -(ding)f(Rules)h(\(DER,)g(as)g(p)s(er)f(X.690\))j(enco)s(ding)e(and)f -(deco)s(ding)150 862 y(functions.)275 996 y(The)29 b(main)i(features)f -(of)h(this)f(library)g(are:)225 1131 y Fp(\017)60 b Fs(On-line)30 -b(ASN.1)h(structure)f(managemen)m(t)i(that)f(do)s(esn't)f(require)g(an) -m(y)h(C)f(co)s(de)g(\014le)h(generation.)225 1265 y Fp(\017)60 -b Fs(O\013-line)30 b(ASN.1)f(structure)g(managemen)m(t)h(with)f(C)g(co) -s(de)g(\014le)h(generation)g(con)m(taining)h(an)e(arra)m(y)-8 -b(.)225 1400 y Fp(\017)60 b Fs(Distinguished)30 b(Enco)s(ding)g(Rules)g -(\(DER\))i(enco)s(ding)e(supp)s(ort.)225 1534 y Fp(\017)60 -b Fs(No)31 b(limits)g(for)f(INTEGER)g(and)g(ENUMERA)-8 -b(TED)31 b(v)-5 b(alues.)225 1669 y Fp(\017)60 b Fs(It's)36 -b(F)-8 b(ree)38 b(Soft)m(w)m(are.)59 b(An)m(yb)s(o)s(dy)35 -b(can)h(use,)i(mo)s(dify)-8 b(,)38 b(and)d(redistribute)h(the)g -(library)g(under)f(the)330 1778 y(terms)g(of)f(the)h(GNU)h(Lesser)e -(General)i(Public)e(License)i(v)m(ersion)f(2.1)h(or)e(later.)55 -b(The)34 b(command)330 1888 y(line)23 b(to)s(ols,)j(self-tests)e(and)e -(build)g(infrastructure)f(are)j(licensed)f(under)e(the)i(GNU)h(General) -f(Public)330 1998 y(License)31 b(v)m(ersion)g(3.0)g(or)g(later.)225 -2132 y Fp(\017)60 b Fs(Thread-safet)m(y)-8 b(.)56 b(No)36 -b(global)g(v)-5 b(ariables)36 b(are)f(used)g(and)f(m)m(ultiple)i -(library)f(handles)f(and)h(session)330 2242 y(handles)30 -b(ma)m(y)h(b)s(e)e(used)h(in)g(parallel.)225 2376 y Fp(\017)60 -b Fs(P)m(ortabilit)m(y)-8 b(.)54 b(The)33 b(co)s(de)h(should)f(w)m(ork) -h(on)g(all)g(Unix)g(lik)m(e)h(op)s(erating)f(systems,)h(and)f(Windo)m -(ws.)330 2486 y(The)c(library)g(itself)h(should)e(b)s(e)h(p)s(ortable)h -(to)g(an)m(y)f(C89)h(system,)g(not)g(ev)m(en)g(POSIX)e(is)h(required.)p -eop end -%%Page: 2 5 -TeXDict begin 2 4 bop 3705 -116 a Fs(2)150 299 y Fo(2)80 -b(ASN.1)53 b(structure)f(handling)150 639 y Fr(2.1)68 -b(ASN.1)45 b(syn)l(tax)150 798 y Fs(The)30 b(parser)f(is)h(case)h -(sensitiv)m(e.)42 b(The)30 b(commen)m(ts)h(b)s(egin)e(with)h -Fl(--)g Fs(and)f(end)h(either)g(with)g(another)g Fl(--)p -Fs(,)150 908 y(or)35 b(at)h(the)g(end)f(of)g(the)h(resp)s(ectiv)m(e)g -(line,)h(whic)m(hev)m(er)f(comes)h(\014rst.)55 b(The)34 -b(C-st)m(yle)j Fl(/*)p Fs(,)f Fl(*/)f Fs(commen)m(ts)150 -1018 y(are)c(not)f(supp)s(orted.)275 1152 y(F)-8 b(or)31 -b(an)f(example)h(of)g(the)f(syn)m(tax,)h(c)m(hec)m(k)h(the)f -Fl(pkix.asn)d Fs(\014le)i(distributed)g(with)g(the)g(library)-8 -b(.)275 1286 y(ASN.1)30 b(de\014nitions)g(m)m(ust)h(follo)m(w)g(the)g -(syn)m(tax)g(b)s(elo)m(w:)436 1421 y Fl(definitions_name)44 -b({<object)h(definition>})436 1640 y(DEFINITIONS)g(<EXPLICIT)g(or)j -(IMPLICIT>)d(TAGS)h(::=)436 1859 y(BEGIN)436 2078 y(<type)h(and)g -(constants)e(definitions>)436 2298 y(END)275 2432 y Fs(The)39 -b Fl(::=)g Fs(tok)m(en)i(m)m(ust)f(b)s(e)f(separate)i(from)f(other)g -(elemen)m(ts,)k(so)c(the)g(follo)m(wing)h(declaration)h(is)150 -2542 y(in)m(v)-5 b(alid:)533 2676 y Fl(--)47 b(INCORRECT)533 -2786 y(Version)f(::=INTEGER)275 2920 y Fs(The)29 b(correct)j(form)e -(is:)533 3054 y Fl(Version)46 b(::=)h(INTEGER)275 3189 -y Fs(Here)30 b(is)h(the)f(list)h(of)g(t)m(yp)s(es)f(that)h(the)g -(parser)f(can)g(manage:)225 3323 y Fp(\017)60 b Fl(INTEGER)p -Fs(;)225 3458 y Fp(\017)g Fl(ENUMERATED)p Fs(;)225 3592 -y Fp(\017)g Fl(BOOLEAN)p Fs(;)225 3727 y Fp(\017)g Fl(OBJECT)29 -b(IDENTIFIER)p Fs(;)225 3861 y Fp(\017)60 b Fl(NULL)p -Fs(;)225 3996 y Fp(\017)g Fl(BIT)29 b(STRING)p Fs(;)225 -4130 y Fp(\017)60 b Fl(OCTET)29 b(STRING)p Fs(;)225 4264 -y Fp(\017)60 b Fl(UTCTime)p Fs(;)225 4399 y Fp(\017)g -Fl(GeneralizedTime)p Fs(;)225 4533 y Fp(\017)g Fl(GeneralString)p -Fs(;)225 4668 y Fp(\017)g Fl(NumericString)p Fs(;)225 -4802 y Fp(\017)g Fl(IA5String)p Fs(;)225 4937 y Fp(\017)g -Fl(TeletexString)p Fs(;)225 5071 y Fp(\017)g Fl(PrintableString)p -Fs(;)225 5206 y Fp(\017)g Fl(UniversalString)p Fs(;)225 -5340 y Fp(\017)g Fl(BMPString)p Fs(;)p eop end -%%Page: 3 6 -TeXDict begin 3 5 bop 150 -116 a Fs(Chapter)30 b(2:)41 -b(ASN.1)31 b(structure)f(handling)2068 b(3)225 299 y -Fp(\017)60 b Fl(UTF8String)p Fs(;)225 437 y Fp(\017)g -Fl(VisibleString)p Fs(;)225 575 y Fp(\017)g Fl(SEQUENCE)p -Fs(;)225 714 y Fp(\017)g Fl(SEQUENCE)28 b(OF)p Fs(;)225 -852 y Fp(\017)60 b Fl(SET)p Fs(;)225 990 y Fp(\017)g -Fl(SET)29 b(OF)p Fs(;)225 1128 y Fp(\017)60 b Fl(CHOICE)p -Fs(;)225 1267 y Fp(\017)g Fl(ANY)p Fs(;)225 1405 y Fp(\017)g -Fl(ANY)29 b(DEFINED)g(BY)p Fs(.)275 1576 y(This)42 b(v)m(ersion)j(do)s -(esn't)e(handle)g(the)h Fl(REAL)f Fs(t)m(yp)s(e.)81 b(It)44 -b(do)s(esn't)f(supp)s(ort)f(the)i Fl(AUTOMATIC)28 b(TAGS)150 -1685 y Fs(option,)j(and)f(the)g Fl(EXPORT)f Fs(and)h -Fl(IMPORT)f Fs(sections,)i(either.)275 1827 y(The)e Fl(SIZE)h -Fs(constrain)m(ts)h(are)g(allo)m(w)m(ed,)h(but)e(no)g(c)m(hec)m(k)i(is) -f(done)f(on)g(them.)150 2079 y Fr(2.2)68 b(Naming)150 -2239 y Fs(Consider)30 b(this)g(de\014nition:)436 2381 -y Fl(Example)46 b({)i(1)f(2)h(3)f(4)g(})436 2600 y(DEFINITIONS)e -(EXPLICIT)h(TAGS)g(::=)436 2819 y(BEGIN)436 3038 y(Group)h(::=)g -(SEQUENCE)e({)580 3148 y(id)142 b(OBJECT)46 b(IDENTIFIER,)580 -3257 y(value)94 b(Value)436 3367 y(})436 3586 y(Value)47 -b(::=)g(SEQUENCE)e({)580 3696 y(value1)93 b(INTEGER,)580 -3805 y(value2)g(BOOLEAN)436 3915 y(})436 4134 y(END)275 -4276 y Fs(The)68 b(notation)j(to)f(access)g(the)g(`)p -Fl(Group)p Fs(')e(t)m(yp)s(e)i(of)f(the)h(`)p Fl(Example)p -Fs(')d(de\014nition)i(ab)s(o)m(v)m(e)i(is)150 4386 y(`)p -Fl(Example.Group)p Fs(')40 b(\(as)j(a)g(NUL-terminated)h(string.\))78 -b(Suc)m(h)42 b(strings)h(are)g(used)f(in)g(the)h(functions)150 -4495 y(describ)s(ed)29 b(b)s(elo)m(w.)275 4637 y(Others)g(examples:)225 -4779 y Fp(\017)60 b Fs(\014eld)30 b(`)p Fl(id)p Fs(')g(of)h(the)f(`)p -Fl(Group)p Fs(')g(t)m(yp)s(e:)41 b(`)p Fl(Example.Group.id)p -Fs(';)225 4918 y Fp(\017)60 b Fs(\014eld)24 b(`)p Fl(value1)p -Fs(')f(of)i(the)f(`)p Fl(value)p Fs(')g(\014eld)g(of)g(the)h(`)p -Fl(Group)p Fs(')e(t)m(yp)s(e:)38 b(`)p Fl(Example.Group.value.value1)o -Fs('.)275 5088 y(Elemen)m(ts)26 b(of)f(structured)g(t)m(yp)s(es)g -(unnamed)f(b)m(y)i(the)f(resp)s(ectiv)m(e)i(de\014nition)e(receiv)m(e)i -(the)f(names)f Fl(?1)p Fs(,)150 5198 y Fl(?2)p Fs(,)30 -b(and)g(so)g(on.)275 5340 y(The)f Fl(?LAST)g Fs(name)i(indicates)g(the) -g(last)g(elemen)m(t)h(of)e(a)h Fl(SET)e(OF)h Fs(or)h -Fl(SEQUENCE)d(OF)p Fs(.)p eop end -%%Page: 4 7 -TeXDict begin 4 6 bop 150 -116 a Fs(Chapter)30 b(2:)41 -b(ASN.1)31 b(structure)f(handling)2068 b(4)150 299 y -Fr(2.3)68 b(Simple)46 b(parsing)150 458 y Fs(F)-8 b(or)32 -b(simple)f(t)m(yp)s(es)h(lik)m(e)g Fl(OCTET)d(STRING)h -Fs(the)h(simple)g(parsing)g(functions)g(listed)h(b)s(elo)m(w)f(ma)m(y)h -(b)s(e)f(used)150 568 y(instead.)225 702 y Fp(\017)60 -b Fs([asn1)p 538 702 28 4 v 41 w(deco)s(de)p 849 702 -V 40 w(simple)p 1142 702 V 40 w(der],)30 b(page)h(21,)225 -837 y Fp(\017)60 b Fs([asn1)p 538 837 V 41 w(enco)s(de)p -849 837 V 40 w(simple)p 1142 837 V 40 w(der],)30 b(page)h(16,)150 -1078 y Fr(2.4)68 b(Library)45 b(Notes)150 1237 y Fs(The)30 -b(header)g(\014le)h(of)f(this)g(library)g(is)h Fl(libtasn1.h)p -Fs(.)275 1372 y(The)d(main)g(t)m(yp)s(e)h(used)f(in)h(it)g(is)g -Fl(asn1_node)p Fs(,)e(and)h(it's)h(used)f(to)i(store)f(the)g(ASN.1)g -(de\014nitions)g(and)150 1481 y(structures)h(\(instances\).)275 -1616 y(The)f Fl(NULL)h Fs(constan)m(t)h(can)g(b)s(e)f(used)f(for)h(the) -h(v)-5 b(ariable)31 b(initialization.)44 b(F)-8 b(or)31 -b(example:)438 1750 y Fl(asn1_node)45 b(definitions)g(=)i(NULL;)275 -1885 y Fs(Some)35 b(functions)h(require)f(an)h Fl(errorDescription)31 -b Fs(argumen)m(t)36 b(of)g(t)m(yp)s(e)g Fl(char)29 b(*)p -Fs(,)37 b(p)s(oin)m(ting)f(to)h(a)150 1994 y(pre-allo)s(cated)f -(bu\013er)c(of)i(at)h(least)g Fl(ASN1_MAX_ERROR_DESCRIPT)o(ION_)o(SIZ)o -(E)28 b Fs(b)m(ytes)34 b(size)h(\(e.g.,)h(as)e(in)150 -2104 y(`)p Fl(char)29 b(description[ASN1_MAX_ERROR)o(_DES)o(CRI)o(PTIO) -o(N_SI)o(ZE])o(;)p Fs('\).)275 2238 y Fl(ASN1_MAX_NAME_SIZE)22 -b Fs(is)28 b(the)h(maxim)m(um)e(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h -(allo)m(w)m(ed)h(for)e(an)g(ASN.1)g(iden-)150 2348 y(ti\014er.)150 -2589 y Fr(2.5)68 b(F)-11 b(uture)44 b(dev)l(elopmen)l(ts)225 -2748 y Fp(\017)60 b Fs(Add)27 b(functions)g(for)h(a)g(C)g(co)s(de)g -(\014le)g(generation)h(con)m(taining)h(equiv)-5 b(alen)m(t)29 -b(data)g(structures)e(\(not)i(a)330 2858 y(single)i(arra)m(y)g(lik)m(e) -h(no)m(w\).)225 2992 y Fp(\017)60 b Fs(The)30 b Fl(REAL)f -Fs(t)m(yp)s(e.)p eop end -%%Page: 5 8 -TeXDict begin 5 7 bop 3705 -116 a Fs(5)150 299 y Fo(3)80 -b(Utilities)150 638 y Fr(3.1)68 b(In)l(v)l(oking)46 b(asn1P)l(arser)150 -797 y Fl(asn1Parser)27 b Fs(reads)j(a)g(single)h(\014le)f(with)f(ASN.1) -i(de\014nitions)e(and)h(generates)h(a)f(\014le)g(with)g(an)g(arra)m(y)g -(to)150 907 y(use)g(with)g(libtasn1)h(functions.)150 -1041 y Fl(Usage:)94 b(asn1Parser)45 b([options])g(file)150 -1260 y(Options:)198 1370 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 -1480 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 -1589 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 1699 -y(-o)h(file)g(:)g(output)f(file.)198 1808 y(-n)h(name)g(:)g(array)f -(name.)150 2049 y Fr(3.2)68 b(In)l(v)l(oking)46 b(asn1Co)t(ding)150 -2208 y Fl(asn1Coding)27 b Fs(generates)k(a)e(DER)h(enco)s(ding)f(from)g -(a)h(\014le)g(with)f(ASN.1)h(de\014nitions)f(and)g(another)h(one)150 -2318 y(with)g(assignmen)m(ts.)275 2452 y(The)f(\014le)i(with)f -(assignmen)m(ts)h(m)m(ust)f(ha)m(v)m(e)i(this)e(syn)m(tax:)150 -2586 y Fl(InstanceName)92 b(Asn1Definition)150 2806 y(nameString)h -(value)150 3025 y(nameString)g(value)150 3134 y(...)275 -3269 y Fs(T)-8 b(o)35 b(sp)s(ecify)f(the)h(\014eld)f(of)h(a)g -Fl(CHOICE)d Fs(to)k(b)s(e)e(used,)h(sp)s(ecify)f(its)h(name)g(as)f(a)h -(v)-5 b(alue)36 b(to)f(the)g Fl(CHOICE)150 3378 y Fs(elemen)m(t)d -(itself.)41 b(Use)31 b Fl('')f Fs(to)h(denote)g(the)g(ro)s(ot)f(elemen) -m(t)i(itself.)42 b(\(as)31 b(in)f(the)g(example)h(b)s(elo)m(w.\))275 -3512 y(The)e(output)h(\014le)h(is)f(a)h(binary)f(\014le)g(with)g(the)h -(DER)f(enco)s(ding.)150 3647 y Fl(Usage:)94 b(asn1Coding)45 -b([options])g(file1)h(file2)198 3756 y(file1)g(:)i(file)e(with)h(ASN1)f -(definitions.)198 3866 y(file2)g(:)i(file)e(with)h(assignments.)150 -3976 y(Options:)198 4085 y(-h)g(:)g(shows)g(the)g(help)f(message.)198 -4195 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 -4304 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 4414 -y(-o)h(file)g(:)g(output)f(file.)275 4548 y Fs(F)-8 b(or)31 -b(example,)g(consider)f(an)h(ASN.1)f(de\014nitions)g(\014le)h(as)f -(follo)m(ws:)150 4682 y Fl(MYPKIX1)46 b({)h(})150 4902 -y(DEFINITIONS)e(IMPLICIT)g(TAGS)i(::=)150 5121 y(BEGIN)150 -5340 y(OtherStruct)e(:=)i(SEQUENCE)e({)p eop end -%%Page: 6 9 -TeXDict begin 6 8 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(Utilities)2776 b(6)389 299 y Fl(x)333 b(INTEGER,)389 -408 y(y)g(CHOICE)47 b({)580 518 y(y1)g(INTEGER,)580 628 -y(y2)g(OCTET)f(STRING)g(},)150 737 y(})150 956 y(Dss-Sig-Value)e(::=)j -(SEQUENCE)f({)389 1066 y(r)333 b(INTEGER,)389 1176 y(s)g(INTEGER,)389 -1285 y(other)141 b(OtherStruct)389 1395 y(z)333 b(INTEGER)46 -b(OPTIONAL,)150 1504 y(})150 1724 y(END)275 1868 y Fs(And)29 -b(a)i(assignmen)m(ts)g(\014le)f(as)h(follo)m(ws:)150 -2012 y Fl(dp)47 b(MYPKIX1.Dss-Sig-Value)150 2231 y(r)g(42)150 -2341 y(s)g(47)150 2450 y(other.x)f(66)150 2560 y(other.y)g(y1)150 -2670 y(other.y.y1)f(15)150 2779 y(z)i(\(NULL\))275 2923 -y Fs(Running)32 b(the)h(command)h(b)s(elo)m(w)f(will)h(generate)h(a)f -Fl(assign.out)d Fs(\014le,)j(con)m(taining)h(the)f(DER)g(en-)150 -3033 y(co)s(ding)c(of)h Fl(PKIX1.Dss-Sig-Value)p Fs(.)150 -3177 y Fl($)47 b(asn1Coding)e(pkix.asn)h(assign.asn1)275 -3322 y Fs(If)38 b(the)h(ro)s(ot)h(elemen)m(t)g(is)f(of)h(the)f -Fl(CHOICE)e Fs(t)m(yp)s(e,)42 b(the)d(assignmen)m(t)h(\014le)f(ma)m(y)h -(b)s(e)e(lik)m(e)j(\(using)e(the)150 3431 y(t)m(yp)s(es)30 -b(de\014ned)g(in)g Fl(pkix.asn)p Fs(\):)150 3575 y Fl(elt)47 -b(PKIX1Implicit88.GeneralN)o(ame)150 3795 y('')286 b(dNSName)150 -3904 y(dNSName)46 b(example.org)150 4160 y Fr(3.3)68 -b(In)l(v)l(oking)46 b(asn1Deco)t(ding)150 4319 y Fl(asn1Decoding)20 -b Fs(generates)25 b(an)f(ASN.1)g(structure)g(from)f(a)h(\014le)g(with)f -(ASN.1)h(de\014nitions)f(and)h(a)g(binary)150 4429 y(\014le)30 -b(with)h(a)f(DER)h(enco)s(ding.)150 4573 y Fl(Usage:)94 -b(asn1Decoding)44 b([options])i(file1)g(file2)g(type)198 -4682 y(file1)g(:)i(file)e(with)h(ASN1)f(definitions.)198 -4792 y(file2)g(:)i(binary)e(file)g(with)h(a)g(DER)g(encoding.)198 -4902 y(type)f(:)i(ASN1)e(definition)f(name.)150 5011 -y(Options:)198 5121 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 -5230 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 -5340 y(-o)g(file)g(:)g(output)f(file.)p eop end -%%Page: 7 10 -TeXDict begin 7 9 bop 3705 -116 a Fs(7)275 299 y(F)-8 -b(or)47 b(example,)52 b(after)47 b(generating)h(the)f -Fl(assign.out)d Fs(\014le)j(from)f(the)h(example)g(section)h(of)f(the) -150 408 y Fl(asn1Coding)28 b Fs(command)i(ab)s(o)m(v)m(e,)i(the)e -(follo)m(wing)i(in)m(v)m(o)s(cation)g(will)f(deco)s(de)g(the)f(DER)h -(data.)150 543 y Fl($)47 b(asn1Decoding)e(pkix.asn)g(assign.out)g -(PKIX1.Dss-Sig-Value)p eop end -%%Page: 8 11 -TeXDict begin 8 10 bop 3705 -116 a Fs(8)150 299 y Fo(4)80 -b(F)-13 b(unction)52 b(reference)150 686 y Fr(4.1)68 -b(ASN.1)45 b(sc)l(hema)g(functions)150 911 y Fk(asn1)p -396 911 37 5 v 55 w(parser2tree)3350 1121 y Fs([F)-8 -b(unction])-3599 b Fj(int)53 b(asn1_parser2tree)e Fi(\()p -Fh(const)34 b(c)m(har)f(*)g Fg(file)p Fh(,)i(asn1)p 2311 -1121 30 5 v 44 w(no)s(de)e(*)565 1230 y Fg(definitions)p -Fh(,)j(c)m(har)e(*)f Fg(error_desc)p Fi(\))390 1340 y -Ff(\014le)5 b Fs(:)41 b(sp)s(ecify)30 b(the)g(path)h(and)e(the)i(name)f -(of)h(\014le)f(that)h(con)m(tains)h(ASN.1)f(declarations.)390 -1488 y Ff(de\014nitions)t Fs(:)36 b(return)21 b(the)h(p)s(oin)m(ter)g -(to)g(the)g(structure)g(created)h(from)e Fl(")p Fs(\014le)p -Fl(")h Fs(ASN.1)g(declarations.)390 1636 y Ff(error)p -589 1636 28 4 v 40 w(desc)6 b Fs(:)40 b(return)29 b(the)i(error)f -(description)g(or)h(an)f(empt)m(y)h(string)f(if)g(success.)390 -1784 y(F)-8 b(unction)28 b(used)f(to)i(start)f(the)g(parse)g -(algorithm.)41 b(Creates)28 b(the)g(structures)f(needed)g(to)i(manage) -390 1894 y(the)i(de\014nitions)e(included)h(in)g Fl(file)f -Fs(\014le.)390 2042 y Fe(Returns:)39 b Fl(ASN1_SUCCESS)26 -b Fs(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m(tax)h(and)e(ev)m -(ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 2151 y Fl -(ASN1_ELEMENT_NOT_EMPTY)35 b Fs(if)41 b Fl(definitions)c -Fs(not)k Fl(NULL)f Fs(,)k Fl(ASN1_FILE_NOT_FOUND)35 b -Fs(if)41 b(an)390 2261 y(error)29 b(o)s(ccurred)f(while)i(op)s(ening)e -Fl(file)g Fs(,)i Fl(ASN1_SYNTAX_ERROR)24 b Fs(if)30 b(the)f(syn)m(tax)h -(is)f(not)h(correct,)390 2370 y Fl(ASN1_IDENTIFIER_NOT_FOUN)o(D)f -Fs(if)35 b(in)f(the)h(\014le)g(there)h(is)f(an)f(iden)m(ti\014er)h -(that)h(is)f(not)g(de\014ned,)390 2480 y Fl(ASN1_NAME_TOO_LONG)27 -b Fs(if)32 b(in)g(the)g(\014le)g(there)g(is)g(an)g(iden)m(ti\014er)g -(whith)g(more)g(than)f Fl(ASN1_MAX_)390 2590 y(NAME_SIZE)d -Fs(c)m(haracters.)150 2802 y Fk(asn1)p 396 2802 37 5 -v 55 w(parser2arra)m(y)3350 3013 y Fs([F)-8 b(unction])-3599 -b Fj(int)53 b(asn1_parser2array)e Fi(\()p Fh(const)34 -b(c)m(har)g(*)f Fg(inputFileName)p Fh(,)k(const)c(c)m(har)h(*)565 -3122 y Fg(outputFileName)p Fh(,)j(const)d(c)m(har)g(*)f -Fg(vectorName)p Fh(,)j(c)m(har)e(*)f Fg(error_desc)p -Fi(\))390 3232 y Ff(inputFileName)5 b Fs(:)49 b(sp)s(ecify)34 -b(the)g(path)g(and)f(the)h(name)g(of)g(\014le)g(that)h(con)m(tains)g -(ASN.1)g(declara-)390 3341 y(tions.)390 3489 y Ff(outputFileName)5 -b Fs(:)41 b(sp)s(ecify)27 b(the)h(path)f(and)g(the)h(name)f(of)h -(\014le)g(that)g(will)g(con)m(tain)h(the)e(C)g(v)m(ector)390 -3599 y(de\014nition.)390 3747 y Ff(v)m(ectorName)5 b -Fs(:)43 b(sp)s(ecify)30 b(the)h(name)f(of)h(the)f(C)g(v)m(ector.)390 -3895 y Ff(error)p 589 3895 28 4 v 40 w(desc)6 b Fs(:)40 -b(return)29 b(the)i(error)f(description)g(or)h(an)f(empt)m(y)h(string)f -(if)g(success.)390 4043 y(F)-8 b(unction)42 b(that)g(generates)h(a)e(C) -g(structure)g(from)g(an)g(ASN1)h(\014le.)73 b(Creates)42 -b(a)g(\014le)f(con)m(tain-)390 4152 y(ing)k(a)h(C)f(v)m(ector)i(to)e -(use)g(to)h(manage)g(the)g(de\014nitions)f(included)f(in)h -Fl(inputFileName)d Fs(\014le.)390 4262 y(If)i Fl(inputFileName)e -Fs(is)i Fl(")p Fs(/aa/bb/xx.yy)p Fl(")i Fs(and)e Fl(outputFileName)d -Fs(is)k Fl(NULL)f Fs(,)k(the)d(\014le)g(cre-)390 4372 -y(ated)g(is)f Fl(")p Fs(/aa/bb/xx)p 1188 4372 V 41 w(asn1)p -1406 4372 V 40 w(tab.c)p Fl(")p Fs(.)83 b(If)43 b Fl(vectorName)f -Fs(is)i Fl(NULL)f Fs(the)h(v)m(ector)i(name)e(will)h(b)s(e)390 -4481 y Fl(")p Fs(xx)p 540 4481 V 40 w(asn1)p 757 4481 -V 40 w(tab)p Fl(")p Fs(.)390 4629 y Fe(Returns:)39 b -Fl(ASN1_SUCCESS)26 b Fs(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m -(tax)h(and)e(ev)m(ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 -4739 y Fl(ASN1_FILE_NOT_FOUND)35 b Fs(if)41 b(an)g(error)f(o)s(ccurred) -g(while)h(op)s(ening)f Fl(inputFileName)d Fs(,)43 b Fl(ASN1_)390 -4848 y(SYNTAX_ERROR)23 b Fs(if)k(the)f(syn)m(tax)i(is)e(not)h(correct,) -i Fl(ASN1_IDENTIFIER_NOT_FOU)o(ND)20 b Fs(if)27 b(in)f(the)h(\014le)390 -4958 y(there)35 b(is)g(an)g(iden)m(ti\014er)g(that)g(is)g(not)g -(de\014ned,)g Fl(ASN1_NAME_TOO_LONG)30 b Fs(if)35 b(in)g(the)g(\014le)g -(there)g(is)390 5068 y(an)30 b(iden)m(ti\014er)h(whith)e(more)i(than)f -Fl(ASN1_MAX_NAME_SIZE)25 b Fs(c)m(haracters.)150 5329 -y Fr(4.2)68 b(ASN.1)45 b(\014eld)g(functions)p eop end -%%Page: 9 12 -TeXDict begin 9 11 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2359 b(9)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(arra)m(y2tree)3350 517 y Fs([F)-8 -b(unction])-3599 b Fj(int)53 b(asn1_array2tree)d Fi(\()p -Fh(const)34 b(asn1)p 1686 517 30 5 v 44 w(static)p 1969 -517 V 44 w(no)s(de)g(*)f Fg(array)p Fh(,)h(asn1)p 2853 -517 V 44 w(no)s(de)g(*)565 626 y Fg(definitions)p Fh(,)i(c)m(har)e(*)f -Fg(errorDescription)p Fi(\))390 736 y Ff(arra)m(y)8 b -Fs(:)41 b(sp)s(ecify)30 b(the)h(arra)m(y)f(that)h(con)m(tains)h(ASN.1)f -(declarations)390 891 y Ff(de\014nitions)t Fs(:)44 b(return)31 -b(the)h(p)s(oin)m(ter)h(to)g(the)f(structure)g(created)h(b)m(y)f(*ARRA) --8 b(Y)34 b(ASN.1)f(declara-)390 1001 y(tions)390 1156 -y Ff(errorDescription)p Fs(:)41 b(return)30 b(the)g(error)g -(description.)390 1312 y(Creates)38 b(the)g(structures)f(needed)h(to)g -(manage)h(the)f(ASN.1)g(de\014nitions.)62 b Fl(array)36 -b Fs(is)i(a)g(v)m(ector)390 1421 y(created)31 b(b)m(y)g -Fl(asn1_parser2array\(\))25 b Fs(.)390 1577 y Fe(Returns:)37 -b Fl(ASN1_SUCCESS)20 b Fs(if)k(structure)f(w)m(as)h(created)h -(correctly)-8 b(,)27 b Fl(ASN1_ELEMENT_NOT_EMPTY)390 -1686 y Fs(if)34 b(*)g Fl(definitions)d Fs(not)j(NULL,)g -Fl(ASN1_IDENTIFIER_NOT_FOUND)27 b Fs(if)34 b(in)g(the)g(\014le)g(there) -g(is)g(an)390 1796 y(iden)m(ti\014er)k(that)h(is)f(not)h(de\014ned)e -(\(see)i Fl(errorDescription)34 b Fs(for)k(more)g(information\),)j -Fl(ASN1_)390 1906 y(ARRAY_ERROR)27 b Fs(if)k(the)f(arra)m(y)h(p)s(oin)m -(ted)f(b)m(y)h Fl(array)e Fs(is)h(wrong.)150 2126 y Fk(asn1)p -396 2126 37 5 v 55 w(delete)p 769 2126 V 54 w(structure)3350 -2344 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_delete_structure)f -Fi(\()p Fh(asn1)p 1739 2344 30 5 v 45 w(no)s(de)33 b(*)g -Fg(structure)p Fi(\))390 2453 y Ff(structure)5 b Fs(:)40 -b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(y)m(ou)g(w)m(an)m(t) -g(to)g(delete.)390 2609 y(Deletes)h(the)f(structure)f(*)h -Fl(structure)c Fs(.)41 b(A)m(t)31 b(the)g(end,)f(*)h -Fl(structure)d Fs(is)i(set)h(to)g(NULL.)390 2764 y Fe(Returns:)41 -b Fl(ASN1_SUCCESS)27 b Fs(if)k(successful,)g Fl(ASN1_ELEMENT_NOT_FOUND) -25 b Fs(if)30 b(*)h Fl(structure)e Fs(w)m(as)390 2874 -y(NULL.)150 3094 y Fk(asn1)p 396 3094 37 5 v 55 w(delete)p -769 3094 V 54 w(structure2)3350 3312 y Fs([F)-8 b(unction])-3599 -b Fj(int)53 b(asn1_delete_structure)q(2)e Fi(\()p Fh(asn1)p -1791 3312 30 5 v 45 w(no)s(de)34 b(*)f Fg(structure)p -Fh(,)i(unsigned)565 3421 y(in)m(t)e Fg(flags)p Fi(\))390 -3531 y Ff(structure)5 b Fs(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f -(structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(delete.)390 -3686 y Ff(\015ags)t Fs(:)41 b(additional)31 b(\015ags)g(\(see)g -Fl(ASN1_DELETE_FLAG)26 b Fs(\))390 3842 y(Deletes)32 -b(the)f(structure)f(*)h Fl(structure)c Fs(.)41 b(A)m(t)31 -b(the)g(end,)f(*)h Fl(structure)d Fs(is)i(set)h(to)g(NULL.)390 -3997 y Fe(Returns:)41 b Fl(ASN1_SUCCESS)27 b Fs(if)k(successful,)g -Fl(ASN1_ELEMENT_NOT_FOUND)25 b Fs(if)30 b(*)h Fl(structure)e -Fs(w)m(as)390 4107 y(NULL.)150 4327 y Fk(asn1)p 396 4327 -37 5 v 55 w(delete)p 769 4327 V 54 w(elemen)m(t)3350 -4545 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_delete_element)e -Fi(\()p Fh(asn1)p 1634 4545 30 5 v 45 w(no)s(de)34 b -Fg(structure)p Fh(,)h(const)f(c)m(har)g(*)565 4654 y -Fg(element_name)p Fi(\))390 4764 y Ff(structure)5 b Fs(:)40 -b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(con)m(tains)h(the)e -(elemen)m(t)i(y)m(ou)f(w)m(an)m(t)g(to)g(delete.)390 -4919 y Ff(elemen)m(t)p 700 4919 28 4 v 42 w(name)5 b -Fs(:)40 b(elemen)m(t's)32 b(name)f(y)m(ou)g(w)m(an)m(t)g(to)g(delete.) -390 5075 y(Deletes)h(the)f(elemen)m(t)h(named)e(*)h Fl(element_name)c -Fs(inside)j(*)g Fl(structure)e Fs(.)390 5230 y Fe(Returns:)37 -b Fl(ASN1_SUCCESS)19 b Fs(if)k(successful,)i Fl(ASN1_ELEMENT_NOT_FOUND) -17 b Fs(if)23 b(the)g Fl(element_name)390 5340 y Fs(w)m(as)31 -b(not)f(found.)p eop end -%%Page: 10 13 -TeXDict begin 10 12 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(10)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(create)p 776 299 V 53 w(elemen)m(t)3350 -492 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_create_element)e -Fi(\()p Fh(asn1)p 1634 492 30 5 v 45 w(no)s(de)34 b Fg(definitions)p -Fh(,)i(const)e(c)m(har)f(*)565 602 y Fg(source_name)p -Fh(,)j(asn1)p 1402 602 V 44 w(no)s(de)e(*)f Fg(element)p -Fi(\))390 712 y Ff(de\014nitions)t Fs(:)40 b(p)s(oin)m(ter)30 -b(to)h(the)g(structure)f(returned)f(b)m(y)h Fl(")p Fs(parser)p -2633 712 28 4 v 40 w(asn1)p Fl(")g Fs(function)390 845 -y Ff(source)p 644 845 V 40 w(name)5 b Fs(:)39 b(the)25 -b(name)g(of)g(the)h(t)m(yp)s(e)f(of)h(the)f(new)g(structure)f(\(m)m -(ust)i(b)s(e)e(inside)h(p)p 3296 845 V 40 w(structure\).)390 -977 y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f -(structure)g(created.)390 1110 y(Creates)h(a)g(structure)f(of)g(t)m(yp) -s(e)h Fl(source_name)c Fs(.)41 b(Example)30 b(using)g -Fl(")p Fs(pkix.asn)p Fl(")p Fs(:)390 1243 y(rc)g(=)g(asn1)p -780 1243 V 41 w(create)p 1057 1243 V 41 w(elemen)m(t\(cert)p -1588 1243 V 43 w(def,)g Fl(")p Fs(PKIX1.Certi\014cate)p -Fl(")p Fs(,)i(certptr\);)390 1376 y Fe(Returns:)53 b -Fl(ASN1_SUCCESS)34 b Fs(if)i(creation)i(OK,)f Fl -(ASN1_ELEMENT_NOT_FOUND)30 b Fs(if)37 b Fl(source_name)390 -1486 y Fs(is)30 b(not)h(kno)m(wn.)150 1682 y Fk(asn1)p -396 1682 37 5 v 55 w(prin)m(t)p 716 1682 V 54 w(structure)3350 -1875 y Fs([F)-8 b(unction])-3599 b Fj(void)54 b(asn1_print_structure)d -Fi(\()p Fh(FILE)34 b(*)f Fg(out)p Fh(,)g(asn1)p 2304 -1875 30 5 v 45 w(no)s(de)g Fg(structure)p Fh(,)565 1985 -y(const)h(c)m(har)g(*)f Fg(name)p Fh(,)h(in)m(t)f Fg(mode)p -Fi(\))390 2095 y Ff(out)r Fs(:)41 b(p)s(oin)m(ter)30 -b(to)h(the)g(output)f(\014le)g(\(e.g.)43 b(stdout\).)390 -2228 y Ff(structure)5 b Fs(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f -(structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(visit.)390 -2360 y Ff(name)5 b Fs(:)41 b(an)30 b(elemen)m(t)i(of)f(the)f(structure) -390 2493 y Ff(mo)s(de)5 b Fs(:)40 b(sp)s(ecify)30 b(ho)m(w)h(m)m(uc)m -(h)f(of)h(the)f(structure)g(to)h(prin)m(t,)f(can)h(b)s(e)f -Fl(ASN1_PRINT_NAME)c Fs(,)k Fl(ASN1_)390 2603 y(PRINT_NAME_TYPE)c -Fs(,)31 b Fl(ASN1_PRINT_NAME_TYPE_VA)o(LUE)24 b Fs(,)31 -b(or)f Fl(ASN1_PRINT_ALL)c Fs(.)390 2736 y(Prin)m(ts)33 -b(on)g(the)g Fl(out)f Fs(\014le)h(descriptor)f(the)h(structure's)g -(tree)h(starting)f(from)g(the)g Fl(name)e Fs(elemen)m(t)390 -2845 y(inside)f(the)h(structure)f Fl(structure)d Fs(.)150 -3042 y Fk(asn1)p 396 3042 37 5 v 55 w(n)m(um)m(b)s(er)p -860 3042 V 54 w(of)p 1012 3042 V 55 w(elemen)m(ts)3350 -3235 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_number_of_elemen)q -(ts)f Fi(\()p Fh(asn1)p 1844 3235 30 5 v 44 w(no)s(de)34 -b Fg(element)p Fh(,)h(const)f(c)m(har)f(*)565 3345 y -Fg(name)p Fh(,)h(in)m(t)f(*)g Fg(num)p Fi(\))390 3454 -y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f(ro)s(ot)h(of) -f(an)h(ASN1)f(structure.)390 3587 y Ff(name)5 b Fs(:)41 -b(the)30 b(name)h(of)f(a)h(sub-structure)e(of)i(R)m(OOT.)390 -3720 y Ff(n)m(um)p Fs(:)40 b(p)s(oin)m(ter)30 b(to)h(an)g(in)m(teger)g -(where)f(the)h(result)f(will)h(b)s(e)f(stored)390 3853 -y(Coun)m(ts)e(the)h(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i(of)f(a)f -(sub-structure)f(called)j(NAME)f(with)f(names)g(equal)h(to)390 -3963 y Fl(")p Fs(?1)p Fl(")p Fs(,)p Fl(")p Fs(?2)p Fl(")p -Fs(,)h(...)390 4096 y Fe(Returns:)36 b Fl(ASN1_SUCCESS)18 -b Fs(if)k(successful,)h Fl(ASN1_ELEMENT_NOT_FOUND)15 -b Fs(if)22 b Fl(name)e Fs(is)h(not)h(kno)m(wn,)390 4205 -y Fl(ASN1_GENERIC_ERROR)j Fs(if)31 b(p)s(oin)m(ter)f -Fl(num)g Fs(is)g Fl(NULL)f Fs(.)150 4401 y Fk(asn1)p -396 4401 37 5 v 55 w(\014nd)p 655 4401 V 54 w(structure)p -1200 4401 V 54 w(from)p 1504 4401 V 55 w(oid)3350 4595 -y Fs([F)-8 b(unction])-3599 b Fj(const)54 b(char)f(*)g -(asn1_find_structure_fr)q(om_)q(oid)f Fi(\()p Fh(asn1)p -2576 4595 30 5 v 44 w(no)s(de)565 4704 y Fg(definitions)p -Fh(,)36 b(const)e(c)m(har)g(*)f Fg(oidValue)p Fi(\))390 -4814 y Ff(de\014nitions)t Fs(:)40 b(ASN1)31 b(de\014nitions)390 -4947 y Ff(oidV)-8 b(alue)5 b Fs(:)42 b(v)-5 b(alue)31 -b(of)g(the)f(OID)g(to)i(searc)m(h)f(\(e.g.)42 b Fl(")p -Fs(1.2.3.4)p Fl(")p Fs(\).)390 5080 y(Searc)m(h)31 b(the)f(structure)g -(that)h(is)g(de\014ned)e(just)g(after)i(an)g(OID)f(de\014nition.)390 -5213 y Fe(Returns:)41 b Fl(NULL)29 b Fs(when)h Fl(oidValue)e -Fs(not)j(found,)e(otherwise)i(the)g(p)s(oin)m(ter)g(to)g(a)g(constan)m -(t)h(string)390 5322 y(that)f(con)m(tains)h(the)e(elemen)m(t)i(name)e -(de\014ned)g(just)f(after)i(the)g(OID.)p eop end -%%Page: 11 14 -TeXDict begin 11 13 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(11)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(cop)m(y)p 697 299 V 53 w(no)s(de)3350 -493 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_copy_node)d -Fi(\()p Fh(asn1)p 1373 493 30 5 v 44 w(no)s(de)34 b Fg(dst)p -Fh(,)g(const)g(c)m(har)g(*)f Fg(dst_name)p Fh(,)565 603 -y(asn1)p 766 603 V 44 w(no)s(de)h Fg(src)p Fh(,)g(const)f(c)m(har)h(*)f -Fg(src_name)p Fi(\))390 712 y Ff(dst)r Fs(:)40 b(Destination)32 -b(asn1)f(no)s(de.)390 845 y Ff(dst)p 518 845 28 4 v 40 -w(name)5 b Fs(:)41 b(Field)31 b(name)f(in)g(destination)h(no)s(de.)390 -979 y Ff(src)6 b Fs(:)40 b(Source)30 b(asn1)h(no)s(de.)390 -1112 y Ff(src)p 508 1112 V 40 w(name)5 b Fs(:)41 b(Field)31 -b(name)f(in)g(source)h(no)s(de.)390 1245 y(Create)39 -b(a)f(deep)g(cop)m(y)h(of)f(a)g(asn1)p 1591 1245 V 40 -w(no)s(de)g(v)-5 b(ariable.)64 b(That)38 b(function)g(requires)f -Fl(dst)g Fs(to)i(b)s(e)e(ex-)390 1355 y(panded)29 b(using)h -Fl(asn1_create_element\(\))25 b Fs(.)390 1488 y Fe(Returns:)40 -b Fs(Return)30 b Fl(ASN1_SUCCESS)d Fs(on)j(success.)150 -1685 y Fk(asn1)p 396 1685 37 5 v 55 w(dup)p 655 1685 -V 54 w(no)s(de)3350 1879 y Fs([F)-8 b(unction])-3599 -b Fj(asn1_node)55 b(asn1_dup_node)49 b Fi(\()p Fh(asn1)p -1634 1879 30 5 v 45 w(no)s(de)34 b Fg(src)p Fh(,)f(const)h(c)m(har)g(*) -f Fg(src_name)p Fi(\))390 1988 y Ff(src)6 b Fs(:)40 b(Source)30 -b(asn1)h(no)s(de.)390 2122 y Ff(src)p 508 2122 28 4 v -40 w(name)5 b Fs(:)41 b(Field)31 b(name)f(in)g(source)h(no)s(de.)390 -2255 y(Create)h(a)f(deep)g(cop)m(y)h(of)g(a)f(asn1)p -1550 2255 V 40 w(no)s(de)g(v)-5 b(ariable.)44 b(This)30 -b(function)h(will)g(return)f(an)i(exact)g(cop)m(y)390 -2364 y(of)f(the)f(pro)m(vided)g(structure.)390 2498 y -Fe(Returns:)40 b Fs(Return)30 b Fl(NULL)f Fs(on)h(failure.)150 -2694 y Fk(asn1)p 396 2694 37 5 v 55 w(write)p 728 2694 -V 53 w(v)-7 b(alue)3350 2888 y Fs([F)f(unction])-3599 -b Fj(int)53 b(asn1_write_value)e Fi(\()p Fh(asn1)p 1478 -2888 30 5 v 44 w(no)s(de)34 b Fg(node_root)p Fh(,)h(const)f(c)m(har)g -(*)f Fg(name)p Fh(,)565 2998 y(const)h(v)m(oid)f(*)g -Fg(ivalue)p Fh(,)h(in)m(t)g Fg(len)p Fi(\))390 3108 y -Ff(no)s(de)p 586 3108 28 4 v 39 w(ro)s(ot)r Fs(:)41 b(p)s(oin)m(ter)31 -b(to)g(a)g(structure)390 3241 y Ff(name)5 b Fs(:)41 b(the)30 -b(name)h(of)f(the)h(elemen)m(t)h(inside)e(the)g(structure)g(that)h(y)m -(ou)g(w)m(an)m(t)g(to)g(set.)390 3374 y Ff(iv)-5 b(alue)5 -b Fs(:)45 b(v)m(ector)34 b(used)e(to)h(sp)s(ecify)f(the)g(v)-5 -b(alue)33 b(to)g(set.)47 b(If)32 b(len)g(is)h Fl(>)p -Fs(0,)g(V)-10 b(ALUE)32 b(m)m(ust)g(b)s(e)g(a)g(t)m(w)m(o's)390 -3484 y(complemen)m(t)k(form)e(in)m(teger.)56 b(if)35 -b(len=0)g(*V)-10 b(ALUE)35 b(m)m(ust)g(b)s(e)f(a)h(n)m(ull)g -(terminated)g(string)g(with)390 3593 y(an)30 b(in)m(teger)i(v)-5 -b(alue.)390 3726 y Ff(len)p Fs(:)53 b(n)m(um)m(b)s(er)35 -b(of)i(b)m(ytes)g(of)g(*v)-5 b(alue)38 b(to)f(use)f(to)h(set)h(the)e(v) --5 b(alue:)54 b(v)-5 b(alue[0]..v)g(alue[len-1])40 b(or)d(0)g(if)390 -3836 y(v)-5 b(alue)31 b(is)f(a)h(n)m(ull)f(terminated)h(string)390 -3969 y(Set)g(the)f(v)-5 b(alue)31 b(of)g(one)f(elemen)m(t)i(inside)e(a) -h(structure.)390 4102 y(If)23 b(an)g(elemen)m(t)i(is)e(OPTIONAL)f(and)g -(y)m(ou)i(w)m(an)m(t)g(to)g(delete)g(it,)i(y)m(ou)d(m)m(ust)g(use)g -(the)h(v)-5 b(alue=NULL)390 4212 y(and)30 b(len=0.)41 -b(Using)30 b Fl(")p Fs(pkix.asn)p Fl(")p Fs(:)390 4345 -y(result=asn1)p 867 4345 V 40 w(write)p 1109 4345 V 40 -w(v)-5 b(alue\(cert,)32 b Fl(")p Fs(tbsCerti\014cate.issuerUniqueID)p -Fl(")p Fs(,)f(NULL,)g(0\);)390 4478 y(Description)g(for)f(eac)m(h)i(t)m -(yp)s(e:)390 4612 y Fe(INTEGER:)f Fs(V)-10 b(ALUE)30 -b(m)m(ust)g(con)m(tain)i(a)f(t)m(w)m(o's)h(complemen)m(t)f(form)f(in)m -(teger.)390 4745 y(v)-5 b(alue[0]=0xFF)52 b(,)e(len=1)g(-)p -Fl(>)g Fs(in)m(teger=-1.)101 b(v)-5 b(alue[0]=0xFF)52 -b(v)-5 b(alue[1]=0xFF)52 b(,)e(len=2)g(-)p Fl(>)390 4854 -y Fs(in)m(teger=-1.)85 b(v)-5 b(alue[0]=0x01)46 b(,)i(len=1)d(-)p -Fl(>)f Fs(in)m(teger=)i(1.)83 b(v)-5 b(alue[0]=0x00)47 -b(v)-5 b(alue[1]=0x01)47 b(,)390 4964 y(len=2)31 b(-)p -Fl(>)f Fs(in)m(teger=)h(1.)42 b(v)-5 b(alue=)p Fl(")p -Fs(123)p Fl(")31 b Fs(,)f(len=0)h(-)p Fl(>)f Fs(in)m(teger=)i(123.)390 -5097 y Fe(ENUMERA)-8 b(TED:)30 b Fs(As)g(INTEGER)g(\(but)g(only)h(with) -f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 5230 y -Fe(BOOLEAN:)g Fs(V)-10 b(ALUE)35 b(m)m(ust)f(b)s(e)f(the)i(n)m(ull)f -(terminated)g(string)h Fl(")p Fs(TR)m(UE)p Fl(")e Fs(or)h -Fl(")p Fs(F)-10 b(ALSE)p Fl(")34 b Fs(and)390 5340 y(LEN)c(!=)g(0.)p -eop end -%%Page: 12 15 -TeXDict begin 12 14 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(12)390 299 y(v)-5 -b(alue=)p Fl(")p Fs(TR)m(UE)p Fl(")88 b Fs(,)103 b(len=1)89 -b(-)p Fl(>)g Fs(b)s(o)s(olean=TR)m(UE.)f(v)-5 b(alue=)p -Fl(")p Fs(F)-10 b(ALSE)p Fl(")88 b Fs(,)103 b(len=1)89 -b(-)p Fl(>)390 408 y Fs(b)s(o)s(olean=F)-10 b(ALSE.)390 -538 y(OBJECT)26 b(IDENTIFIER:)h(V)-10 b(ALUE)27 b(m)m(ust)g(b)s(e)g(a)g -(n)m(ull)g(terminated)h(string)f(with)g(eac)m(h)h(n)m(um)m(b)s(er)390 -648 y(separated)j(b)m(y)f(a)h(dot)f(\(e.g.)43 b Fl(")p -Fs(1.2.3.543.1)p Fl(")p Fs(\).)h(LEN)30 b(!=)h(0.)390 -777 y(v)-5 b(alue=)p Fl(")p Fs(1)31 b(2)f(840)i(10040)h(4)d(3)p -Fl(")h Fs(,)g(len=1)f(-)p Fl(>)g Fs(OID=dsa-with-sha.)390 -907 y Fe(UTCTime:)84 b Fs(V)-10 b(ALUE)53 b(m)m(ust)f(b)s(e)f(a)i(n)m -(ull)f(terminated)g(string)g(in)g(one)h(of)f(these)g(formats:)390 -1017 y Fl(")p Fs(YYMMDDhhmmssZ)p Fl(")p Fs(,)118 b Fl(")p -Fs(YYMMDDhhmmssZ)p Fl(")p Fs(,)g Fl(")p Fs(YYMMDDhhmmss)p -Fl(+)p Fs(hh'mm')p Fl(")p Fs(,)390 1126 y Fl(")p Fs -(YYMMDDhhmmss-hh'mm')p Fl(")p Fs(,)40 b Fl(")p Fs(YYMMDDhhmm)p -Fl(+)p Fs(hh'mm')p Fl(")p Fs(,)g(or)f Fl(")p Fs(YYMMDDhhmm-)390 -1236 y(hh'mm')p Fl(")p Fs(.)g(LEN)31 b(!=)f(0.)390 1365 -y(v)-5 b(alue=)p Fl(")p Fs(9801011200Z)p Fl(")43 b Fs(,)f(len=1)e(-)p -Fl(>)f Fs(time=Jann)m(uary)g(1st,)k(1998)e(at)f(12h)g(00m)g(Green)m -(wic)m(h)390 1475 y(Mean)31 b(Time)390 1605 y Fe(GeneralizedTime:)94 -b Fs(V)-10 b(ALUE)56 b(m)m(ust)f(b)s(e)h(in)f(one)h(of)g(this)g -(format:)92 b Fl(")p Fs(YYYYMMDDhh-)390 1714 y(mmss.sZ)p -Fl(")p Fs(,)185 b Fl(")p Fs(YYYYMMDDhhmmss.sZ)p Fl(")p -Fs(,)h Fl(")p Fs(YYYYMMDDhhmmss.s)p Fl(+)p Fs(hh'mm')p -Fl(")p Fs(,)390 1824 y Fl(")p Fs(YYYYMMDDhhmmss.s-hh'mm')p -Fl(")p Fs(,)279 b Fl(")p Fs(YYYYMMDDhhmm)p Fl(+)p Fs(hh'mm')p -Fl(")p Fs(,)g(or)390 1933 y Fl(")p Fs(YYYYMMDDhhmm-hh'mm')p -Fl(")36 b Fs(where)h(ss.s)f(indicates)i(the)f(seconds)f(with)h(an)m(y)g -(precision)390 2043 y(lik)m(e)32 b Fl(")p Fs(10.1)p Fl(")f -Fs(or)f Fl(")p Fs(01.02)p Fl(")p Fs(.)43 b(LEN)30 b(!=)g(0)390 -2172 y(v)-5 b(alue=)p Fl(")p Fs(2001010112001.1)q(2-0)q(70)q(0)p -Fl(")50 b Fs(,)e(len=1)c(-)p Fl(>)h Fs(time=Jann)m(uary)e(1st,)49 -b(2001)d(at)f(12h)f(00m)390 2282 y(01.12s)32 b(P)m(aci\014c)g(Da)m -(yligh)m(t)h(Time)390 2412 y(OCTET)22 b(STRING:)h(V)-10 -b(ALUE)23 b(con)m(tains)h(the)g(o)s(ctet)g(string)g(and)e(LEN)h(is)h -(the)f(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 2541 y(v)-5 -b(alue=)p Fl(")p Fs($)p Fl(\\)p Fs(bac)m(kslash$x01$)p -Fl(\\)p Fs(bac)m(kslash$x02$)p Fl(\\)p Fs(bac)m(kslash$x03)q -Fl(")62 b Fs(,)g(len=3)57 b(-)p Fl(>)f Fs(three)g(b)m(ytes)390 -2651 y(o)s(ctet)32 b(string)390 2781 y Fe(GeneralString:)42 -b Fs(V)-10 b(ALUE)30 b(con)m(tains)h(the)g(generalstring)g(and)f(LEN)g -(is)g(the)g(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 2910 -y(v)-5 b(alue=)p Fl(")p Fs($)p Fl(\\)p Fs(bac)m(kslash$x01$)p -Fl(\\)p Fs(bac)m(kslash$x02$)p Fl(\\)p Fs(bac)m(kslash$x03)q -Fl(")62 b Fs(,)g(len=3)57 b(-)p Fl(>)f Fs(three)g(b)m(ytes)390 -3020 y(generalstring)390 3149 y(BIT)39 b(STRING:)g(V)-10 -b(ALUE)39 b(con)m(tains)h(the)g(bit)f(string)g(organized)h(b)m(y)f(b)m -(ytes)h(and)f(LEN)g(is)g(the)390 3259 y(n)m(um)m(b)s(er)29 -b(of)i(bits.)390 3389 y(v)-5 b(alue=)p Fl(")p Fs($)p -Fl(\\)p Fs(bac)m(kslash$xCF)p Fl(")31 b Fs(,)g(len=6)g(-)p -Fl(>)f Fs(bit)g(string=)p Fl(")p Fs(110011)p Fl(")j Fs(\(six)d(bits\)) -390 3518 y Fe(CHOICE:)f Fs(if)g(NAME)g(indicates)h(a)g(c)m(hoice)g(t)m -(yp)s(e,)g(V)-10 b(ALUE)29 b(m)m(ust)g(sp)s(ecify)g(one)g(of)g(the)h -(alterna-)390 3628 y(tiv)m(es)i(with)e(a)g(n)m(ull)h(terminated)g -(string.)40 b(LEN)31 b(!=)f(0.)41 b(Using)30 b Fl(")p -Fs(pkix.asn)p Fl("\\)p Fs(:)390 3757 y(result=asn1)p -867 3757 28 4 v 40 w(write)p 1109 3757 V 40 w(v)-5 b(alue\(cert,)74 -b Fl(")p Fs(certi\014cate1.tbsCerti\014cate.sub)5 b(ject)p -Fl(")p Fs(,)76 b Fl(")p Fs(rdnSequence)p Fl(")p Fs(,)390 -3867 y(1\);)390 3997 y Fe(ANY:)30 b Fs(V)-10 b(ALUE)31 -b(indicates)g(the)f(der)g(enco)s(ding)h(of)f(a)h(structure.)40 -b(LEN)30 b(!=)h(0.)390 4126 y(SEQUENCE)i(OF:)h(V)-10 -b(ALUE)34 b(m)m(ust)g(b)s(e)g(the)g(n)m(ull)g(terminated)h(string)f -Fl(")p Fs(NEW)p Fl(")g Fs(and)f(LEN)h(!=)390 4236 y(0.)46 -b(With)32 b(this)g(instruction)g(another)g(elemen)m(t)i(is)e(app)s -(ended)e(in)h(the)i(sequence.)45 b(The)32 b(name)g(of)390 -4345 y(this)e(elemen)m(t)i(will)f(b)s(e)f Fl(")p Fs(?1)p -Fl(")g Fs(if)g(it's)h(the)g(\014rst)e(one,)i Fl(")p Fs(?2)p -Fl(")f Fs(for)g(the)h(second)f(and)g(so)h(on.)390 4475 -y(Using)g Fl(")p Fs(pkix.asn)p Fl("\\)p Fs(:)390 4605 -y(result=asn1)p 867 4605 V 40 w(write)p 1109 4605 V 40 -w(v)-5 b(alue\(cert,)241 b Fl(")p Fs -(certi\014cate1.tbsCerti\014cate.sub)5 b(ject.rdnSequence)p -Fl(")p Fs(,)390 4714 y Fl(")p Fs(NEW)p Fl(")p Fs(,)30 -b(1\);)390 4844 y(SET)f(OF:)i(the)g(same)f(as)h(SEQUENCE)e(OF.)i(Using) -f Fl(")p Fs(pkix.asn)p Fl(")p Fs(:)390 4973 y(result=asn1)p -867 4973 V 40 w(write)p 1109 4973 V 40 w(v)-5 b(alue\(cert,)25 -b Fl(")p Fs(tbsCerti\014cate.sub)5 b(ject.rdnSequence.?LAST)p -Fl(")p Fs(,)22 b Fl(")p Fs(NEW)p Fl(")p Fs(,)390 5083 -y(1\);)390 5213 y Fe(Returns:)38 b Fl(ASN1_SUCCESS)21 -b Fs(if)k(the)g(v)-5 b(alue)26 b(w)m(as)f(set,)i Fl -(ASN1_ELEMENT_NOT_FOUND)19 b Fs(if)25 b Fl(name)f Fs(is)h(not)390 -5322 y(a)31 b(v)-5 b(alid)30 b(elemen)m(t,)j(and)c Fl -(ASN1_VALUE_NOT_VALID)c Fs(if)31 b Fl(ivalue)d Fs(has)i(a)h(wrong)f -(format.)p eop end -%%Page: 13 16 -TeXDict begin 13 15 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(13)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(read)p 685 299 V 54 w(v)-7 b(alue)3350 -494 y Fs([F)f(unction])-3599 b Fj(int)53 b(asn1_read_value)d -Fi(\()p Fh(asn1)p 1425 494 30 5 v 45 w(no)s(de)33 b Fg(root)p -Fh(,)i(const)e(c)m(har)h(*)f Fg(name)p Fh(,)h(v)m(oid)f(*)565 -604 y Fg(ivalue)p Fh(,)i(in)m(t)e(*)g Fg(len)p Fi(\))390 -714 y Ff(ro)s(ot)r Fs(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure.)390 -848 y Ff(name)5 b Fs(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h -(inside)e(a)h(structure)f(that)h(y)m(ou)f(w)m(an)m(t)h(to)h(read.)390 -981 y Ff(iv)-5 b(alue)5 b Fs(:)45 b(v)m(ector)34 b(that)e(will)h(con)m -(tain)g(the)g(elemen)m(t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s -(oin)m(ter)g(to)h(memory)390 1091 y(cells)e(already)g(allo)s(cated)i -(\(ma)m(y)e(b)s(e)f Fl(NULL)f Fs(\).)390 1225 y Ff(len)p -Fs(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*v)-5 -b(alue:)41 b(v)-5 b(alue[0]..v)g(alue[len-1].)45 b(Initialy)31 -b(holds)f(the)h(sizeof)g(v)-5 b(alue.)390 1359 y(Returns)25 -b(the)h(v)-5 b(alue)27 b(of)f(one)g(elemen)m(t)i(inside)d(a)i -(structure.)39 b(If)25 b(an)h(elemen)m(t)i(is)e(OPTIONAL)f(and)390 -1468 y(this)j(returns)f Fl(ASN1_ELEMENT_NOT_FOUND)22 -b Fs(,)29 b(it)f(means)g(that)h(this)f(elemen)m(t)i(w)m(asn't)e(presen) -m(t)g(in)390 1578 y(the)j(der)e(enco)s(ding)i(that)g(created)g(the)f -(structure.)41 b(The)29 b(\014rst)h(elemen)m(t)i(of)e(a)h(SEQUENCE)p -3587 1578 28 4 v 39 w(OF)390 1688 y(or)c(SET)p 683 1688 -V 39 w(OF)g(is)g(named)f Fl(")p Fs(?1)p Fl(")p Fs(.)40 -b(The)26 b(second)h(one)g Fl(")p Fs(?2)p Fl(")g Fs(and)f(so)h(on.)40 -b(If)26 b(the)h Fl(root)f Fs(pro)m(vided)h(is)g(a)390 -1797 y(no)s(de)c(to)i(sp)s(eci\014c)f(sequence)h(elemen)m(t,)i(then)d -(the)g(k)m(eyw)m(ord)h Fl(")p Fs(?CURRENT)p Fl(")e Fs(is)h(also)h -(acceptable)390 1907 y(and)30 b(indicates)h(the)g(curren)m(t)f -(sequence)h(elemen)m(t)g(of)g(this)f(no)s(de.)390 2041 -y(Note)i(that)f(there)g(can)g(b)s(e)f(v)-5 b(alid)31 -b(v)-5 b(alues)31 b(with)f(length)h(zero.)42 b(In)30 -b(these)h(case)h(this)e(function)h(will)390 2150 y(succeed)g(and)f -Fl(len)f Fs(will)i(b)s(e)e(zero.)390 2284 y Fe(INTEGER:)i -Fs(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e(t)m(w)m(o's)i(complemen)m -(t)g(form)e(in)m(teger.)390 2418 y(in)m(teger=-1)i(-)p -Fl(>)f Fs(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 -b(-)p Fl(>)e Fs(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 -2552 y Fe(ENUMERA)-8 b(TED:)30 b Fs(As)g(INTEGER)g(\(but)g(only)h(with) -f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 2686 y -Fe(BOOLEAN:)38 b Fs(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g -(terminated)h(string)f Fl(")p Fs(TR)m(UE)p Fl(")f Fs(or)h -Fl(")p Fs(F)-10 b(ALSE)p Fl(")39 b Fs(and)390 2795 y(LEN=5)30 -b(or)h(LEN=6.)390 2929 y(OBJECT)g(IDENTIFIER:)h(V)-10 -b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g(string)g(with)g -(eac)m(h)h(n)m(um)m(b)s(er)390 3039 y(separated)e(b)m(y)f(a)h(dot)f -(\(i.e.)42 b Fl(")p Fs(1.2.3.543.1)p Fl(")p Fs(\).)390 -3173 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fl(+)p Fs(1)390 -3307 y Fe(UTCTime:)41 b Fs(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m -(ull)f(terminated)h(string)f(in)g(one)g(of)h(these)f(formats:)41 -b Fl(")p Fs(YYM-)390 3416 y(MDDhhmmss)p Fl(+)p Fs(hh'mm')p -Fl(")28 b Fs(or)j Fl(")p Fs(YYMMDDhhmmss-hh'mm')p Fl(")p -Fs(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fl(+)p Fs(1.)390 -3550 y Fe(GeneralizedTime:)48 b Fs(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g -(n)m(ull)g(terminated)g(string)g(in)g(the)g(same)g(format)h(used)390 -3660 y(to)d(set)g(the)g(v)-5 b(alue.)390 3794 y(OCTET)26 -b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h -(string)e(and)g(LEN)g(will)h(b)s(e)f(the)g(n)m(um)m(b)s(er)390 -3903 y(of)k(o)s(ctets.)390 4037 y Fe(GeneralString:)51 -b Fs(V)-10 b(ALUE)34 b(will)i(con)m(tain)g(the)f(generalstring)g(and)g -(LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s(er)390 4147 -y(of)c(o)s(ctets.)390 4281 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 -b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y)e(b)m -(ytes)h(and)f(LEN)h(will)390 4390 y(b)s(e)30 b(the)g(n)m(um)m(b)s(er)f -(of)i(bits.)390 4524 y Fe(CHOICE:)j Fs(If)f(NAME)i(indicates)g(a)g(c)m -(hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g -(alternativ)m(e)i(se-)390 4634 y(lected.)390 4768 y Fe(ANY:)h -Fs(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 -b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 -4877 y(the)31 b(structure)e(actually)j(used.)390 5011 -y Fe(Returns:)64 b Fl(ASN1_SUCCESS)38 b Fs(if)k(v)-5 -b(alue)42 b(is)g(returned,)i Fl(ASN1_ELEMENT_NOT_FOUND)36 -b Fs(if)42 b Fl(name)f Fs(is)390 5121 y(not)33 b(a)g(v)-5 -b(alid)34 b(elemen)m(t,)h Fl(ASN1_VALUE_NOT_FOUND)27 -b Fs(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 b(alue)34 -b(for)e(the)h(elemen)m(t)390 5230 y(selected,)28 b(and)d -Fl(ASN1_MEM_ERROR)c Fs(if)26 b(The)f(v)-5 b(alue)26 b(v)m(ector)h -(isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 -5340 y(and)32 b(in)g(this)h(case)g Fl(len)f Fs(will)h(con)m(tain)h(the) -f(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(needed.)47 b(On)32 -b(the)g(o)s(ccasion)i(that)p eop end -%%Page: 14 17 -TeXDict begin 14 16 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(14)390 299 y(the)28 -b(stored)g(data)h(are)f(of)h(zero-length)g(this)f(function)g(ma)m(y)g -(return)f Fl(ASN1_SUCCESS)e Fs(ev)m(en)k(if)f(the)390 -408 y(pro)m(vided)i Fl(len)f Fs(is)i(zero.)150 608 y -Fk(asn1)p 396 608 37 5 v 55 w(read)p 685 608 V 54 w(v)-7 -b(alue)p 1015 608 V 53 w(t)m(yp)s(e)3350 805 y Fs([F)f(unction])-3599 -b Fj(int)53 b(asn1_read_value_type)f Fi(\()p Fh(asn1)p -1687 805 30 5 v 44 w(no)s(de)34 b Fg(root)p Fh(,)g(const)g(c)m(har)g(*) -f Fg(name)p Fh(,)565 915 y(v)m(oid)g(*)g Fg(ivalue)p -Fh(,)i(in)m(t)e(*)g Fg(len)p Fh(,)h(unsigned)g(in)m(t)g(*)f -Fg(etype)p Fi(\))390 1024 y Ff(ro)s(ot)r Fs(:)41 b(p)s(oin)m(ter)30 -b(to)i(a)e(structure.)390 1159 y Ff(name)5 b Fs(:)41 -b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure)f -(that)h(y)m(ou)f(w)m(an)m(t)h(to)h(read.)390 1294 y Ff(iv)-5 -b(alue)5 b Fs(:)45 b(v)m(ector)34 b(that)e(will)h(con)m(tain)g(the)g -(elemen)m(t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s(oin)m(ter)g -(to)h(memory)390 1404 y(cells)e(already)g(allo)s(cated)i(\(ma)m(y)e(b)s -(e)f Fl(NULL)f Fs(\).)390 1539 y Ff(len)p Fs(:)41 b(n)m(um)m(b)s(er)29 -b(of)h(b)m(ytes)h(of)g(*v)-5 b(alue:)41 b(v)-5 b(alue[0]..v)g -(alue[len-1].)45 b(Initialy)31 b(holds)f(the)h(sizeof)g(v)-5 -b(alue.)390 1673 y Ff(et)m(yp)s(e)5 b Fs(:)41 b(The)30 -b(t)m(yp)s(e)h(of)f(the)h(v)-5 b(alue)31 b(read)f(\(ASN1)p -2037 1673 28 4 v 41 w(ETYPE\))390 1808 y(Returns)k(the)g(t)m(yp)s(e)h -(and)f(v)-5 b(alue)35 b(of)f(one)h(elemen)m(t)h(inside)e(a)h -(structure.)52 b(If)34 b(an)h(elemen)m(t)h(is)e(OP-)390 -1918 y(TIONAL)41 b(and)g(this)g(returns)f Fl(ASN1_ELEMENT_NOT_FOUND)c -Fs(,)44 b(it)e(means)g(that)g(this)f(elemen)m(t)390 2027 -y(w)m(asn't)36 b(presen)m(t)f(in)h(the)f(der)g(enco)s(ding)g(that)i -(created)f(the)g(structure.)55 b(The)35 b(\014rst)g(elemen)m(t)i(of)390 -2137 y(a)e(SEQUENCE)p 986 2137 V 39 w(OF)g(or)g(SET)p -1485 2137 V 39 w(OF)f(is)h(named)g Fl(")p Fs(?1)p Fl(")p -Fs(.)53 b(The)35 b(second)g(one)g Fl(")p Fs(?2)p Fl(")f -Fs(and)g(so)h(on.)54 b(If)390 2247 y(the)31 b Fl(root)g -Fs(pro)m(vided)f(is)i(a)f(no)s(de)g(to)h(sp)s(eci\014c)f(sequence)h -(elemen)m(t,)h(then)e(the)h(k)m(eyw)m(ord)f Fl(")p Fs(?CUR-)390 -2356 y(RENT)p Fl(")f Fs(is)g(also)h(acceptable)i(and)d(indicates)h(the) -f(curren)m(t)h(sequence)f(elemen)m(t)i(of)f(this)f(no)s(de.)390 -2491 y(Note)i(that)f(there)g(can)g(b)s(e)f(v)-5 b(alid)31 -b(v)-5 b(alues)31 b(with)f(length)h(zero.)42 b(In)30 -b(these)h(case)h(this)e(function)h(will)390 2601 y(succeed)g(and)f -Fl(len)f Fs(will)i(b)s(e)e(zero.)390 2735 y Fe(INTEGER:)i -Fs(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e(t)m(w)m(o's)i(complemen)m -(t)g(form)e(in)m(teger.)390 2870 y(in)m(teger=-1)i(-)p -Fl(>)f Fs(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 -b(-)p Fl(>)e Fs(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 -3005 y Fe(ENUMERA)-8 b(TED:)30 b Fs(As)g(INTEGER)g(\(but)g(only)h(with) -f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 3140 y -Fe(BOOLEAN:)38 b Fs(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g -(terminated)h(string)f Fl(")p Fs(TR)m(UE)p Fl(")f Fs(or)h -Fl(")p Fs(F)-10 b(ALSE)p Fl(")39 b Fs(and)390 3250 y(LEN=5)30 -b(or)h(LEN=6.)390 3384 y(OBJECT)g(IDENTIFIER:)h(V)-10 -b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g(string)g(with)g -(eac)m(h)h(n)m(um)m(b)s(er)390 3494 y(separated)e(b)m(y)f(a)h(dot)f -(\(i.e.)42 b Fl(")p Fs(1.2.3.543.1)p Fl(")p Fs(\).)390 -3629 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fl(+)p Fs(1)390 -3764 y Fe(UTCTime:)41 b Fs(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m -(ull)f(terminated)h(string)f(in)g(one)g(of)h(these)f(formats:)41 -b Fl(")p Fs(YYM-)390 3873 y(MDDhhmmss)p Fl(+)p Fs(hh'mm')p -Fl(")28 b Fs(or)j Fl(")p Fs(YYMMDDhhmmss-hh'mm')p Fl(")p -Fs(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fl(+)p Fs(1.)390 -4008 y Fe(GeneralizedTime:)48 b Fs(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g -(n)m(ull)g(terminated)g(string)g(in)g(the)g(same)g(format)h(used)390 -4118 y(to)d(set)g(the)g(v)-5 b(alue.)390 4253 y(OCTET)26 -b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h -(string)e(and)g(LEN)g(will)h(b)s(e)f(the)g(n)m(um)m(b)s(er)390 -4362 y(of)k(o)s(ctets.)390 4497 y Fe(GeneralString:)51 -b Fs(V)-10 b(ALUE)34 b(will)i(con)m(tain)g(the)f(generalstring)g(and)g -(LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s(er)390 4607 -y(of)c(o)s(ctets.)390 4742 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 -b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y)e(b)m -(ytes)h(and)f(LEN)h(will)390 4851 y(b)s(e)30 b(the)g(n)m(um)m(b)s(er)f -(of)i(bits.)390 4986 y Fe(CHOICE:)j Fs(If)f(NAME)i(indicates)g(a)g(c)m -(hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g -(alternativ)m(e)i(se-)390 5096 y(lected.)390 5230 y Fe(ANY:)h -Fs(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 -b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 -5340 y(the)31 b(structure)e(actually)j(used.)p eop end -%%Page: 15 18 -TeXDict begin 15 17 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(15)390 299 y Fe(Returns:)64 -b Fl(ASN1_SUCCESS)38 b Fs(if)k(v)-5 b(alue)42 b(is)g(returned,)i -Fl(ASN1_ELEMENT_NOT_FOUND)36 b Fs(if)42 b Fl(name)f Fs(is)390 -408 y(not)33 b(a)g(v)-5 b(alid)34 b(elemen)m(t,)h Fl -(ASN1_VALUE_NOT_FOUND)27 b Fs(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 -b(alue)34 b(for)e(the)h(elemen)m(t)390 518 y(selected,)28 -b(and)d Fl(ASN1_MEM_ERROR)c Fs(if)26 b(The)f(v)-5 b(alue)26 -b(v)m(ector)h(isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 -628 y(and)32 b(in)g(this)h(case)g Fl(len)f Fs(will)h(con)m(tain)h(the)f -(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(needed.)47 b(On)32 -b(the)g(o)s(ccasion)i(that)390 737 y(the)28 b(stored)g(data)h(are)f(of) -h(zero-length)g(this)f(function)g(ma)m(y)g(return)f Fl(ASN1_SUCCESS)e -Fs(ev)m(en)k(if)f(the)390 847 y(pro)m(vided)i Fl(len)f -Fs(is)i(zero.)150 1051 y Fk(asn1)p 396 1051 37 5 v 55 -w(read)p 685 1051 V 54 w(tag)3350 1253 y Fs([F)-8 b(unction])-3599 -b Fj(int)53 b(asn1_read_tag)d Fi(\()p Fh(asn1)p 1321 -1253 30 5 v 44 w(no)s(de)34 b Fg(root)p Fh(,)g(const)g(c)m(har)g(*)f -Fg(name)p Fh(,)h(in)m(t)f(*)565 1362 y Fg(tagValue)p -Fh(,)i(in)m(t)f(*)f Fg(classValue)p Fi(\))390 1472 y -Ff(ro)s(ot)r Fs(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure)390 -1612 y Ff(name)5 b Fs(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h -(inside)e(a)h(structure.)390 1751 y Ff(tagV)-8 b(alue)5 -b Fs(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(con)m(tain)h(the)e(T)-8 -b(A)m(G)32 b(v)-5 b(alue.)390 1891 y Ff(classV)d(alue)5 -b Fs(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(sp)s(ecify)f(the)g(T)-8 -b(A)m(G)32 b(t)m(yp)s(e.)390 2030 y(Returns)40 b(the)h(T)-8 -b(A)m(G)41 b(and)f(the)h(CLASS)e(of)i(one)g(elemen)m(t)h(inside)e(a)h -(structure.)71 b(CLASS)40 b(can)390 2140 y(ha)m(v)m(e)e(one)g(of)f -(these)h(constan)m(ts:)56 b Fl(ASN1_CLASS_APPLICATION)31 -b Fs(,)39 b Fl(ASN1_CLASS_UNIVERSAL)32 b Fs(,)390 2249 -y Fl(ASN1_CLASS_PRIVATE)25 b Fs(or)31 b Fl(ASN1_CLASS_CONTEXT_SPEC)o -(IFIC)24 b Fs(.)390 2389 y Fe(Returns:)37 b Fl(ASN1_SUCCESS)21 -b Fs(if)k(successful,)g Fl(ASN1_ELEMENT_NOT_FOUND)18 -b Fs(if)25 b Fl(name)e Fs(is)h(not)h(a)g(v)-5 b(alid)390 -2498 y(elemen)m(t.)150 2703 y Fk(asn1)p 396 2703 37 5 -v 55 w(read)p 685 2703 V 54 w(no)s(de)p 995 2703 V 55 -w(v)e(alue)3350 2904 y Fs([F)f(unction])-3599 b Fj(int)53 -b(asn1_read_node_value)f Fi(\()p Fh(asn1)p 1687 2904 -30 5 v 44 w(no)s(de)34 b Fg(node)p Fh(,)g(asn1)p 2436 -2904 V 44 w(data)p 2674 2904 V 44 w(no)s(de)p 2925 2904 -V 44 w(st)f(*)565 3014 y Fg(data)p Fi(\))390 3124 y Ff(no)s(de)5 -b Fs(:)40 b(p)s(oin)m(ter)31 b(to)g(a)f(no)s(de.)390 -3263 y Ff(data)p Fs(:)41 b(a)31 b(p)s(oin)m(t)g(to)g(a)f(asn1)p -1315 3263 28 4 v 41 w(data)p 1532 3263 V 40 w(no)s(de)p -1762 3263 V 40 w(st)390 3403 y(Returns)22 b(the)g(v)-5 -b(alue)23 b(a)g(data)h(no)s(de)d(inside)i(a)g(asn1)p -2084 3403 V 40 w(no)s(de)f(structure.)37 b(The)22 b(data)i(returned)d -(should)390 3512 y(b)s(e)30 b(handled)f(as)i(constan)m(t)g(v)-5 -b(alues.)390 3652 y Fe(Returns:)40 b Fl(ASN1_SUCCESS)27 -b Fs(if)k(the)f(no)s(de)g(exists.)150 3900 y Fr(4.3)68 -b(DER)46 b(functions)150 4124 y Fk(asn1)p 396 4124 37 -5 v 55 w(length)p 786 4124 V 54 w(der)3350 4326 y Fs([F)-8 -b(unction])-3599 b Fj(void)54 b(asn1_length_der)c Fi(\()p -Fh(unsigned)35 b(long)d(in)m(t)i Fg(len)p Fh(,)f(unsigned)i(c)m(har)f -(*)f Fg(der)p Fh(,)565 4435 y(in)m(t)g(*)g Fg(der_len)p -Fi(\))390 4545 y Ff(len)p Fs(:)41 b(v)-5 b(alue)31 b(to)g(con)m(v)m -(ert.)390 4685 y Ff(der)7 b Fs(:)40 b(bu\013er)29 b(to)i(hold)f(the)h -(returned)e(enco)s(ding)h(\(ma)m(y)i(b)s(e)d Fl(NULL)h -Fs(\).)390 4824 y Ff(der)p 523 4824 28 4 v 40 w(len)p -Fs(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(b)m(ytes)h(of)g(ANS)f -(\(der[0]..der[der)p 2791 4824 V 40 w(len-1]\).)390 4964 -y(Creates)35 b(the)f(DER)h(enco)s(ding)f(of)g(the)g(pro)m(vided)g -(length)h(v)-5 b(alue.)52 b(The)34 b Fl(der)f Fs(bu\013er)h(m)m(ust)g -(ha)m(v)m(e)390 5073 y(enough)27 b(ro)s(om)f(for)h(the)g(output.)40 -b(The)26 b(maxim)m(um)h(length)g(this)g(function)g(will)g(enco)s(de)g -(is)g Fl(ASN1_)390 5183 y(MAX_LENGTH_SIZE)f Fs(.)390 -5322 y(T)-8 b(o)31 b(kno)m(w)f(the)h(size)g(of)g(the)f(DER)h(enco)s -(ding)f(use)g(a)h Fl(NULL)e Fs(v)-5 b(alue)31 b(for)f -Fl(der)f Fs(.)p eop end -%%Page: 16 19 -TeXDict begin 16 18 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(16)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(o)s(ctet)p 722 299 V 53 w(der)3350 -500 y Fs([F)-8 b(unction])-3599 b Fj(void)54 b(asn1_octet_der)49 -b Fi(\()p Fh(const)34 b(unsigned)h(c)m(har)f(*)f Fg(str)p -Fh(,)h(in)m(t)f Fg(str_len)p Fh(,)565 609 y(unsigned)i(c)m(har)f(*)f -Fg(der)p Fh(,)g(in)m(t)h(*)f Fg(der_len)p Fi(\))390 719 -y Ff(str)7 b Fs(:)40 b(the)31 b(input)e(data.)390 858 -y Ff(str)p 503 858 28 4 v 40 w(len)p Fs(:)41 b(STR)29 -b(length)i(\(str[0]..str[*str)p 1787 858 V 42 w(len-1]\).)390 -996 y Ff(der)7 b Fs(:)40 b(enco)s(ded)30 b(string)g(returned.)390 -1135 y Ff(der)p 523 1135 V 40 w(len)p Fs(:)40 b(n)m(um)m(b)s(er)29 -b(of)i(meaningful)f(b)m(ytes)h(of)g(DER)f(\(der[0]..der[der)p -2802 1135 V 41 w(len-1]\).)390 1274 y(Creates)j(a)f(length-v)-5 -b(alue)34 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data.)47 -b(The)31 b(DER)h(enco)s(ding)g(of)h(the)390 1384 y(input)c(data)i(will) -g(b)s(e)f(placed)h(in)f(the)g Fl(der)g Fs(v)-5 b(ariable.)390 -1522 y(Note)32 b(that)f(the)f(OCTET)f(STRING)h(tag)h(is)g(not)f -(included)g(in)g(the)h(output.)390 1661 y(This)41 b(function)g(do)s(es) -g(not)h(return)e(an)m(y)i(v)-5 b(alue)42 b(b)s(ecause)f(it)i(is)e(exp)s -(ected)h(that)g Fl(der_len)e Fs(will)390 1771 y(con)m(tain)30 -b(enough)e(b)m(ytes)i(to)f(store)g(the)g(string)g(plus)e(the)i(DER)g -(enco)s(ding.)40 b(The)28 b(DER)h(enco)s(ding)390 1880 -y(size)i(can)g(b)s(e)f(obtained)g(using)g Fl(asn1_length_der\(\))c -Fs(.)150 2084 y Fk(asn1)p 396 2084 37 5 v 55 w(enco)s(de)p -818 2084 V 54 w(simple)p 1214 2084 V 55 w(der)3350 2285 -y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_encode_simple_de)q(r)e -Fi(\()p Fh(unsigned)35 b(in)m(t)f Fg(etype)p Fh(,)g(const)g(unsigned) -565 2394 y(c)m(har)g(*)f Fg(str)p Fh(,)h(unsigned)g(in)m(t)g -Fg(str_len)p Fh(,)h(unsigned)f(c)m(har)g(*)f Fg(tl)p -Fh(,)h(unsigned)g(in)m(t)g(*)565 2504 y Fg(tl_len)p Fi(\))390 -2613 y Ff(et)m(yp)s(e)5 b Fs(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h -(string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p 2444 2613 -28 4 v 41 w(ETYPE)p 2805 2613 V 39 w(\))390 2752 y Ff(str)7 -b Fs(:)40 b(the)31 b(string)f(data.)390 2891 y Ff(str)p -503 2891 V 40 w(len)p Fs(:)41 b(the)30 b(string)h(length)390 -3030 y Ff(tl)t Fs(:)41 b(the)30 b(enco)s(ded)g(tag)i(and)e(length)390 -3168 y Ff(tl)p 456 3168 V 41 w(len)p Fs(:)40 b(the)31 -b(b)m(ytes)g(of)f(the)h Fl(tl)f Fs(\014eld)390 3307 y(Creates)j(the)g -(DER)g(enco)s(ding)f(for)h(v)-5 b(arious)32 b(simple)h(ASN.1)g(t)m(yp)s -(es)f(lik)m(e)i(strings)e(etc.)49 b(It)32 b(stores)390 -3417 y(the)k(tag)h(and)e(length)h(in)g Fl(tl)f Fs(,)i(whic)m(h)f -(should)f(ha)m(v)m(e)i(space)f(for)g(at)g(least)h Fl(ASN1_MAX_TL_SIZE) -390 3526 y Fs(b)m(ytes.)k(Initially)32 b Fl(tl_len)c -Fs(should)i(con)m(tain)h(the)g(size)g(of)g Fl(tl)e Fs(.)390 -3665 y(The)39 b(complete)i(DER)f(enco)s(ding)g(should)e(consist)i(of)g -(the)g(v)-5 b(alue)40 b(in)g Fl(tl)f Fs(app)s(ended)e(with)j(the)390 -3774 y(pro)m(vided)30 b Fl(str)f Fs(.)390 3913 y Fe(Returns:)40 -b Fl(ASN1_SUCCESS)27 b Fs(if)k(successful)f(or)g(an)g(error)g(v)-5 -b(alue.)150 4117 y Fk(asn1)p 396 4117 37 5 v 55 w(bit)p -601 4117 V 54 w(der)3350 4318 y Fs([F)d(unction])-3599 -b Fj(void)54 b(asn1_bit_der)49 b Fi(\()p Fh(const)34 -b(unsigned)g(c)m(har)g(*)f Fg(str)p Fh(,)h(in)m(t)f Fg(bit_len)p -Fh(,)565 4427 y(unsigned)i(c)m(har)f(*)f Fg(der)p Fh(,)g(in)m(t)h(*)f -Fg(der_len)p Fi(\))390 4537 y Ff(str)7 b Fs(:)40 b(BIT)30 -b(string.)390 4676 y Ff(bit)p 507 4676 28 4 v 40 w(len)p -Fs(:)41 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(bits)g(in)g(STR.)390 -4814 y Ff(der)7 b Fs(:)40 b(string)30 b(returned.)390 -4953 y Ff(der)p 523 4953 V 40 w(len)p Fs(:)40 b(n)m(um)m(b)s(er)29 -b(of)i(meaningful)f(b)m(ytes)h(of)g(DER)f(\(der[0]..der[ans)p -2807 4953 V 41 w(len-1]\).)390 5092 y(Creates)i(a)f(length-v)-5 -b(alue)33 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data)i(as)f(it)h(w) -m(ould)f(ha)m(v)m(e)h(b)s(een)f(for)g(a)390 5201 y(BIT)f(STRING.)g(The) -g(DER)h(enco)s(ded)f(data)h(will)f(b)s(e)g(copied)h(in)f -Fl(der)f Fs(.)390 5340 y(Note)j(that)f(the)f(BIT)g(STRING)g(tag)i(is)e -(not)h(included)e(in)h(the)h(output.)p eop end -%%Page: 17 20 -TeXDict begin 17 19 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(17)390 299 y(This)41 -b(function)g(do)s(es)g(not)h(return)e(an)m(y)i(v)-5 b(alue)42 -b(b)s(ecause)f(it)i(is)e(exp)s(ected)h(that)g Fl(der_len)e -Fs(will)390 408 y(con)m(tain)30 b(enough)e(b)m(ytes)i(to)f(store)g(the) -g(string)g(plus)e(the)i(DER)g(enco)s(ding.)40 b(The)28 -b(DER)h(enco)s(ding)390 518 y(size)i(can)g(b)s(e)f(obtained)g(using)g -Fl(asn1_length_der\(\))c Fs(.)150 719 y Fk(asn1)p 396 -719 37 5 v 55 w(der)p 625 719 V 54 w(co)s(ding)3350 918 -y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_der_coding)d -Fi(\()p Fh(asn1)p 1425 918 30 5 v 45 w(no)s(de)33 b Fg(element)p -Fh(,)i(const)f(c)m(har)g(*)f Fg(name)p Fh(,)h(v)m(oid)565 -1027 y(*)f Fg(ider)p Fh(,)h(in)m(t)f(*)g Fg(len)p Fh(,)h(c)m(har)g(*)f -Fg(ErrorDescription)p Fi(\))390 1137 y Ff(elemen)m(t)r -Fs(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(elemen)m(t)390 -1273 y Ff(name)5 b Fs(:)39 b(the)27 b(name)h(of)f(the)g(structure)g(y)m -(ou)g(w)m(an)m(t)h(to)g(enco)s(de)f(\(it)h(m)m(ust)f(b)s(e)f(inside)h -(*POINTER\).)390 1409 y Ff(ider)7 b Fs(:)39 b(v)m(ector)30 -b(that)f(will)f(con)m(tain)i(the)e(DER)h(enco)s(ding.)40 -b(DER)28 b(m)m(ust)g(b)s(e)g(a)h(p)s(oin)m(ter)f(to)h(memory)390 -1519 y(cells)i(already)g(allo)s(cated.)390 1655 y Ff(len)p -Fs(:)49 b(n)m(um)m(b)s(er)33 b(of)h(b)m(ytes)h(of)g(*)g -Fl(ider)e Fs(:)48 b Fl(ider)34 b Fs([0]..)54 b Fl(ider)33 -b Fs([len-1],)k(Initialy)e(holds)f(the)g(sizeof)i(of)390 -1765 y(der)30 b(v)m(ector.)390 1901 y Ff(ErrorDescription)p -Fs(:)41 b(return)29 b(the)i(error)f(description)g(or)g(an)h(empt)m(y)f -(string)h(if)f(success.)390 2038 y(Creates)h(the)g(DER)f(enco)s(ding)g -(for)h(the)f(NAME)h(structure)f(\(inside)g(*POINTER)g(structure\).)390 -2174 y Fe(Returns:)47 b Fl(ASN1_SUCCESS)30 b Fs(if)k(DER)g(enco)s(ding) -f(OK,)g Fl(ASN1_ELEMENT_NOT_FOUND)28 b Fs(if)33 b Fl(name)g -Fs(is)390 2283 y(not)h(a)g(v)-5 b(alid)35 b(elemen)m(t,)h -Fl(ASN1_VALUE_NOT_FOUND)29 b Fs(if)34 b(there)g(is)g(an)g(elemen)m(t)h -(without)f(a)g(v)-5 b(alue,)390 2393 y Fl(ASN1_MEM_ERROR)24 -b Fs(if)29 b(the)f Fl(ider)g Fs(v)m(ector)i(isn't)e(big)h(enough)f(and) -g(in)g(this)g(case)h Fl(len)f Fs(will)h(con)m(tain)390 -2503 y(the)i(length)f(needed.)150 2704 y Fk(asn1)p 396 -2704 37 5 v 55 w(get)p 616 2704 V 54 w(length)p 1005 -2704 V 54 w(der)3350 2902 y Fs([F)-8 b(unction])-3599 -b Fj(long)54 b(asn1_get_length_der)d Fi(\()p Fh(const)34 -b(unsigned)g(c)m(har)g(*)f Fg(der)p Fh(,)h(in)m(t)565 -3012 y Fg(der_len)p Fh(,)h(in)m(t)e(*)g Fg(len)p Fi(\))390 -3121 y Ff(der)7 b Fs(:)40 b(DER)30 b(data)h(to)g(deco)s(de.)390 -3258 y Ff(der)p 523 3258 28 4 v 40 w(len)p Fs(:)40 b(Length)31 -b(of)f(DER)h(data)g(to)g(deco)s(de.)390 3394 y Ff(len)p -Fs(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) -f(of)h(the)g(DER)f(length)h(\014eld.)390 3530 y(Extract)g(a)g(length)g -(\014eld)f(from)g(DER)g(data.)390 3667 y Fe(Returns:)40 -b Fs(Return)29 b(the)h(deco)s(ded)f(length)h(v)-5 b(alue,)30 -b(or)g(-1)g(on)g(inde\014nite)f(length,)h(or)g(-2)g(when)f(the)390 -3776 y(v)-5 b(alue)30 b(w)m(as)h(to)s(o)f(big)g(to)h(\014t)e(in)h(a)g -(in)m(t,)h(or)f(-4)g(when)f(the)h(deco)s(ded)g(length)g(v)-5 -b(alue)30 b(plus)f Fl(len)g Fs(w)m(ould)390 3886 y(exceed)i -Fl(der_len)e Fs(.)150 4087 y Fk(asn1)p 396 4087 37 5 -v 55 w(get)p 616 4087 V 54 w(tag)p 839 4087 V 53 w(der)3350 -4285 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_get_tag_der)e -Fi(\()p Fh(const)34 b(unsigned)g(c)m(har)g(*)f Fg(der)p -Fh(,)h(in)m(t)f Fg(der_len)p Fh(,)565 4395 y(unsigned)i(c)m(har)f(*)f -Fg(cls)p Fh(,)g(in)m(t)h(*)f Fg(len)p Fh(,)h(unsigned)g(long)f(*)g -Fg(tag)p Fi(\))390 4505 y Ff(der)7 b Fs(:)40 b(DER)30 -b(data)h(to)g(deco)s(de.)390 4641 y Ff(der)p 523 4641 -28 4 v 40 w(len)p Fs(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s -(de.)390 4777 y Ff(cls)t Fs(:)41 b(Output)29 b(v)-5 b(ariable)31 -b(con)m(taining)h(deco)s(ded)e(class.)390 4913 y Ff(len)p -Fs(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) -f(of)h(the)g(DER)f(T)-8 b(A)m(G)31 b(data.)390 5050 y -Ff(tag)8 b Fs(:)42 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h -(the)f(deco)s(ded)f(tag)h(\(ma)m(y)g(b)s(e)f Fl(NULL)f -Fs(\).)390 5186 y(Deco)s(de)i(the)g(class)g(and)f(T)-8 -b(A)m(G)31 b(from)f(DER)h(co)s(de.)390 5322 y Fe(Returns:)40 -b Fs(Returns)30 b Fl(ASN1_SUCCESS)d Fs(on)j(success,)h(or)f(an)h -(error.)p eop end -%%Page: 18 21 -TeXDict begin 18 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(18)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(get)p 616 299 V 54 w(length)p 1005 -299 V 54 w(b)s(er)3350 513 y Fs([F)-8 b(unction])-3599 -b Fj(long)54 b(asn1_get_length_ber)d Fi(\()p Fh(const)34 -b(unsigned)g(c)m(har)g(*)f Fg(ber)p Fh(,)h(in)m(t)565 -623 y Fg(ber_len)p Fh(,)h(in)m(t)e(*)g Fg(len)p Fi(\))390 -733 y Ff(b)s(er)7 b Fs(:)39 b(BER)31 b(data)g(to)g(deco)s(de.)390 -885 y Ff(b)s(er)p 526 885 28 4 v 39 w(len)p Fs(:)41 b(Length)30 -b(of)h(BER)f(data)h(to)g(deco)s(de.)390 1037 y Ff(len)p -Fs(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) -f(of)h(the)g(BER)f(length)h(\014eld.)390 1189 y(Extract)g(a)g(length)f -(\014eld)g(from)g(BER)g(data.)41 b(The)30 b(di\013erence)h(to)g -Fl(asn1_get_length_der\(\))24 b Fs(is)390 1299 y(that)31 -b(this)f(function)g(will)h(return)e(a)i(length)g(ev)m(en)g(if)f(the)h -(v)-5 b(alue)31 b(has)f(inde\014nite)g(enco)s(ding.)390 -1451 y Fe(Returns:)40 b Fs(Return)27 b(the)i(deco)s(ded)g(length)g(v)-5 -b(alue,)30 b(or)e(negativ)m(e)j(v)-5 b(alue)29 b(when)f(the)h(v)-5 -b(alue)29 b(w)m(as)g(to)s(o)390 1561 y(big.)390 1713 -y Fe(Since:)41 b Fs(2.0)150 1930 y Fk(asn1)p 396 1930 -37 5 v 55 w(get)p 616 1930 V 54 w(o)s(ctet)p 941 1930 -V 53 w(der)3350 2144 y Fs([F)-8 b(unction])-3599 b Fj(int)53 -b(asn1_get_octet_der)e Fi(\()p Fh(const)34 b(unsigned)h(c)m(har)f(*)f -Fg(der)p Fh(,)h(in)m(t)f Fg(der_len)p Fh(,)565 2254 y(in)m(t)g(*)g -Fg(ret_len)p Fh(,)i(unsigned)g(c)m(har)f(*)f Fg(str)p -Fh(,)h(in)m(t)f Fg(str_size)p Fh(,)i(in)m(t)e(*)g Fg(str_len)p -Fi(\))390 2364 y Ff(der)7 b Fs(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g -(con)m(taining)h(the)e(OCTET)f(SEQUENCE.)390 2516 y Ff(der)p -523 2516 28 4 v 40 w(len)p Fs(:)40 b(The)30 b(length)h(of)g(the)f -Fl(der)g Fs(data)h(to)g(deco)s(de.)390 2668 y Ff(ret)p -507 2668 V 40 w(len)p Fs(:)41 b(Output)29 b(v)-5 b(ariable)32 -b(con)m(taining)f(the)g(enco)s(ded)f(length)h(of)f(the)h(DER)f(data.) -390 2820 y Ff(str)7 b Fs(:)40 b(Pre-allo)s(cated)33 b(output)d -(bu\013er)f(to)i(put)f(deco)s(ded)g(OCTET)f(SEQUENCE)g(in.)390 -2973 y Ff(str)p 503 2973 V 40 w(size)5 b Fs(:)41 b(Length)31 -b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 3125 -y Ff(str)p 503 3125 V 40 w(len)p Fs(:)57 b(Output)38 -b(v)-5 b(ariable)40 b(con)m(taining)g(the)f(length)g(of)g(the)g(con)m -(ten)m(ts)h(of)f(the)g(OCTET)e(SE-)390 3234 y(QUENCE.)390 -3387 y(Extract)g(an)f(OCTET)e(SEQUENCE)h(from)h(DER)g(data.)58 -b(Note)37 b(that)g(this)f(function)g(exp)s(ects)390 3496 -y(the)31 b(DER)f(data)h(past)g(the)f(tag)i(\014eld,)e(i.e.,)i(the)e -(length)h(and)f(con)m(ten)m(t)i(o)s(ctets.)390 3649 y -Fe(Returns:)40 b Fs(Returns)30 b Fl(ASN1_SUCCESS)d Fs(on)j(success,)h -(or)f(an)h(error.)150 3866 y Fk(asn1)p 396 3866 37 5 -v 55 w(get)p 616 3866 V 54 w(ob)7 b(ject)p 1002 3866 -V 54 w(id)p 1158 3866 V 54 w(der)3350 4080 y Fs([F)-8 -b(unction])-3599 b Fj(int)53 b(asn1_get_object_id_de)q(r)e -Fi(\()p Fh(const)34 b(unsigned)h(c)m(har)f(*)f Fg(der)p -Fh(,)h(in)m(t)565 4190 y Fg(der_len)p Fh(,)h(in)m(t)e(*)g -Fg(ret_len)p Fh(,)i(c)m(har)f(*)f Fg(str)p Fh(,)h(in)m(t)f -Fg(str_size)p Fi(\))390 4299 y Ff(der)7 b Fs(:)40 b(DER)30 -b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(OBJECT)g(IDENTIFIER)390 -4451 y Ff(der)p 523 4451 28 4 v 40 w(len)p Fs(:)40 b(Length)31 -b(of)f(DER)h(data)g(to)g(deco)s(de.)390 4604 y Ff(ret)p -507 4604 V 40 w(len)p Fs(:)41 b(Output)29 b(v)-5 b(ariable)32 -b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 -4756 y Ff(str)7 b Fs(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f -(to)i(put)f(the)g(textual)i(ob)5 b(ject)31 b(id)f(in.)390 -4908 y Ff(str)p 503 4908 V 40 w(size)5 b Fs(:)41 b(Length)31 -b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 5060 -y(Con)m(v)m(erts)i(a)f(DER)h(enco)s(ded)e(ob)5 b(ject)32 -b(iden)m(ti\014er)f(to)h(its)g(textual)g(form.)42 b(This)31 -b(function)g(exp)s(ects)390 5170 y(the)g(DER)f(ob)5 b(ject)31 -b(iden)m(ti\014er)g(without)f(the)h(tag.)390 5322 y Fe(Returns:)40 -b Fl(ASN1_SUCCESS)27 b Fs(on)k(success,)g(or)f(an)g(error.)p -eop end -%%Page: 19 22 -TeXDict begin 19 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(19)150 299 y Fk(asn1)p -396 299 37 5 v 55 w(get)p 616 299 V 54 w(bit)p 820 299 -V 54 w(der)3350 500 y Fs([F)-8 b(unction])-3599 b Fj(int)53 -b(asn1_get_bit_der)e Fi(\()p Fh(const)34 b(unsigned)g(c)m(har)g(*)f -Fg(der)p Fh(,)h(in)m(t)f Fg(der_len)p Fh(,)i(in)m(t)565 -609 y(*)e Fg(ret_len)p Fh(,)i(unsigned)g(c)m(har)f(*)f -Fg(str)p Fh(,)h(in)m(t)f Fg(str_size)p Fh(,)i(in)m(t)e(*)g -Fg(bit_len)p Fi(\))390 719 y Ff(der)7 b Fs(:)40 b(DER)30 -b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(BIT)h(SEQUENCE.)390 -858 y Ff(der)p 523 858 28 4 v 40 w(len)p Fs(:)40 b(Length)31 -b(of)f(DER)h(data)g(to)g(deco)s(de.)390 996 y Ff(ret)p -507 996 V 40 w(len)p Fs(:)41 b(Output)29 b(v)-5 b(ariable)32 -b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 -1135 y Ff(str)7 b Fs(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f -(to)i(put)f(deco)s(ded)g(BIT)g(SEQUENCE)f(in.)390 1274 -y Ff(str)p 503 1274 V 40 w(size)5 b Fs(:)41 b(Length)31 -b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 1413 -y Ff(bit)p 507 1413 V 40 w(len)p Fs(:)41 b(Output)29 -b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(size)g(of)g(the)f(BIT)g -(SEQUENCE.)390 1551 y(Extract)h(a)g(BIT)f(SEQUENCE)f(from)h(DER)h -(data.)390 1690 y Fe(Returns:)40 b Fl(ASN1_SUCCESS)27 -b Fs(on)k(success,)g(or)f(an)g(error.)150 1894 y Fk(asn1)p -396 1894 37 5 v 55 w(der)p 625 1894 V 54 w(deco)s(ding2)3350 -2095 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_der_decoding2)e -Fi(\()p Fh(asn1)p 1582 2095 30 5 v 45 w(no)s(de)33 b(*)g -Fg(element)p Fh(,)i(const)f(v)m(oid)f(*)g Fg(ider)p Fh(,)565 -2204 y(in)m(t)g(*)g Fg(max_ider_len)p Fh(,)k(unsigned)e(in)m(t)e -Fg(flags)p Fh(,)h(c)m(har)g(*)f Fg(errorDescription)p -Fi(\))390 2314 y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 -b(to)g(an)f(ASN1)h(structure.)390 2452 y Ff(ider)7 b -Fs(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) -390 2591 y Ff(max)p 565 2591 28 4 v 40 w(ider)p 757 2591 -V 40 w(len)p Fs(:)37 b(p)s(oin)m(ter)22 b(to)i(an)e(in)m(teger)i -(giving)f(the)g(information)g(ab)s(out)f(the)h(maximal)g(n)m(um)m(b)s -(er)390 2701 y(of)29 b(b)m(ytes)g(o)s(ccupied)f(b)m(y)h(*)g -Fl(ider)e Fs(.)41 b(The)28 b(real)h(size)g(of)g(the)g(DER)g(enco)s -(ding)f(is)h(returned)f(through)390 2810 y(this)i(p)s(oin)m(ter.)390 -2949 y Ff(\015ags)t Fs(:)41 b(\015ags)30 b(con)m(trolling)j(the)d(b)s -(eha)m(viour)g(of)h(the)f(function.)390 3088 y Ff(errorDescription)p -Fs(:)41 b(n)m(ull-terminated)32 b(string)e(con)m(tains)h(details)h -(when)d(an)h(error)g(o)s(ccurred.)390 3226 y(Fill)38 -b(the)f(structure)g(*)h Fl(element)d Fs(with)h(v)-5 b(alues)38 -b(of)f(a)h(DER)f(enco)s(ding)g(string.)61 b(The)36 b(structure)390 -3336 y(m)m(ust)30 b(just)g(b)s(e)g(created)h(with)f(function)g -Fl(asn1_create_element\(\))25 b Fs(.)390 3475 y(If)d -Fl(ASN1_DECODE_FLAG_ALLOW_P)o(ADD)o(ING)16 b Fs(\015ag)23 -b(is)f(set)h(then)f(the)g(function)g(will)h(ignore)g(padding)390 -3584 y(after)31 b(the)h(deco)s(ded)e(DER)h(data.)43 b(Up)s(on)30 -b(a)i(successful)e(return)g(the)h(v)-5 b(alue)32 b(of)f(*)g -Fl(max_ider_len)390 3694 y Fs(will)g(b)s(e)e(set)i(to)g(the)g(n)m(um)m -(b)s(er)e(of)i(b)m(ytes)g(deco)s(ded.)390 3833 y(If)j -Fl(ASN1_DECODE_FLAG_STRICT_DE)o(R)29 b Fs(\015ag)35 b(is)g(set)h(then)e -(the)h(function)g(will)g(not)h(deco)s(de)f(an)m(y)390 -3942 y(BER-enco)s(ded)30 b(elemen)m(ts.)390 4081 y Fe(Returns:)39 -b Fl(ASN1_SUCCESS)25 b Fs(if)i(DER)h(enco)s(ding)g(OK,)f -Fl(ASN1_ELEMENT_NOT_FOUND)22 b Fs(if)28 b Fl(ELEMENT)390 -4191 y Fs(is)g Fl(NULL)e Fs(,)i(and)g Fl(ASN1_TAG_ERROR)23 -b Fs(or)28 b Fl(ASN1_DER_ERROR)c Fs(if)j(the)h(der)f(enco)s(ding)h(do)s -(esn't)f(matc)m(h)390 4300 y(the)k(structure)e(name)i(\(*)g -Fl(ELEMENT)d Fs(deleted\).)150 4504 y Fk(asn1)p 396 4504 -37 5 v 55 w(der)p 625 4504 V 54 w(deco)s(ding)3350 4705 -y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_der_decoding)e -Fi(\()p Fh(asn1)p 1530 4705 30 5 v 44 w(no)s(de)34 b(*)f -Fg(element)p Fh(,)i(const)f(v)m(oid)f(*)g Fg(ider)p Fh(,)565 -4814 y(in)m(t)g Fg(ider_len)p Fh(,)j(c)m(har)e(*)f Fg(errorDescription) -p Fi(\))390 4924 y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 -b(to)g(an)f(ASN1)h(structure.)390 5063 y Ff(ider)7 b -Fs(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) -390 5201 y Ff(ider)p 548 5201 28 4 v 40 w(len)p Fs(:)41 -b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*)f Fl(ider)g -Fs(:)40 b Fl(ider)29 b Fs([0]..)42 b Fl(ider)30 b Fs([len-1].)390 -5340 y Ff(errorDescription)p Fs(:)41 b(n)m(ull-terminated)32 -b(string)e(con)m(tains)h(details)h(when)d(an)h(error)g(o)s(ccurred.)p -eop end -%%Page: 20 23 -TeXDict begin 20 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(20)390 299 y(Fill)38 -b(the)f(structure)g(*)h Fl(element)d Fs(with)h(v)-5 b(alues)38 -b(of)f(a)h(DER)f(enco)s(ding)g(string.)61 b(The)36 b(structure)390 -408 y(m)m(ust)30 b(just)g(b)s(e)g(created)h(with)f(function)g -Fl(asn1_create_element\(\))25 b Fs(.)390 543 y(Note)32 -b(that)f(the)f(*)h Fl(element)d Fs(v)-5 b(ariable)32 -b(is)e(pro)m(vided)g(as)h(a)f(p)s(oin)m(ter)h(for)f(historical)i -(reasons.)390 677 y Fe(Returns:)39 b Fl(ASN1_SUCCESS)25 -b Fs(if)i(DER)h(enco)s(ding)g(OK,)f Fl(ASN1_ELEMENT_NOT_FOUND)22 -b Fs(if)28 b Fl(ELEMENT)390 786 y Fs(is)g Fl(NULL)e Fs(,)i(and)g -Fl(ASN1_TAG_ERROR)23 b Fs(or)28 b Fl(ASN1_DER_ERROR)c -Fs(if)j(the)h(der)f(enco)s(ding)h(do)s(esn't)f(matc)m(h)390 -896 y(the)k(structure)e(name)i(\(*)g Fl(ELEMENT)d Fs(deleted\).)150 -1094 y Fk(asn1)p 396 1094 37 5 v 55 w(der)p 625 1094 -V 54 w(deco)s(ding)p 1153 1094 V 55 w(elemen)m(t)3350 -1290 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_der_decoding_ele)q -(ment)f Fi(\()p Fh(asn1)p 1948 1290 30 5 v 45 w(no)s(de)33 -b(*)h Fg(structure)p Fh(,)h(const)565 1400 y(c)m(har)f(*)f -Fg(elementName)p Fh(,)j(const)e(v)m(oid)f(*)g Fg(ider)p -Fh(,)h(in)m(t)f Fg(len)p Fh(,)h(c)m(har)g(*)565 1509 -y Fg(errorDescription)p Fi(\))390 1619 y Ff(structure)5 -b Fs(:)40 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 -1753 y Ff(elemen)m(tName)5 b Fs(:)43 b(name)31 b(of)f(the)h(elemen)m(t) -g(to)h(\014ll)390 1887 y Ff(ider)7 b Fs(:)40 b(v)m(ector)32 -b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding)f(of)g(the)h(whole)g -(structure.)390 2021 y Ff(len)p Fs(:)41 b(n)m(um)m(b)s(er)29 -b(of)h(b)m(ytes)h(of)g(*der:)40 b(der[0]..der[len-1])390 -2155 y Ff(errorDescription)p Fs(:)h(n)m(ull-terminated)32 -b(string)e(con)m(tains)h(details)h(when)d(an)h(error)g(o)s(ccurred.)390 -2290 y(Fill)41 b(the)g(elemen)m(t)g(named)f Fl(ELEMENTNAME)d -Fs(with)j(v)-5 b(alues)40 b(of)h(a)f(DER)g(enco)s(ding)g(string.)70 -b(The)390 2399 y(structure)36 b(m)m(ust)h(just)f(b)s(e)g(created)i -(with)e(function)h Fl(asn1_create_element\(\))31 b Fs(.)60 -b(The)36 b(DER)390 2509 y(v)m(ector)d(m)m(ust)e(con)m(tain)h(the)f -(enco)s(ding)g(string)g(of)g(the)h(whole)f Fl(STRUCTURE)d -Fs(.)43 b(If)31 b(an)g(error)f(o)s(ccurs)390 2618 y(during)f(the)i -(deco)s(ding)f(pro)s(cedure,)f(the)i(*)g Fl(STRUCTURE)d -Fs(is)i(deleted)h(and)f(set)h(equal)g(to)g Fl(NULL)e -Fs(.)390 2752 y(This)h(function)h(is)h(deprecated)f(and)g(ma)m(y)h -(just)f(b)s(e)f(an)h(alias)i(to)f(asn1)p 2820 2752 28 -4 v 40 w(der)p 2987 2752 V 40 w(deco)s(ding)f(in)g(future)390 -2862 y(v)m(ersions.)41 b(Use)31 b Fl(asn1_der_decoding\(\))25 -b Fs(instead.)390 2996 y Fe(Returns:)63 b Fl(ASN1_SUCCESS)39 -b Fs(if)j(DER)g(enco)s(ding)g(OK,)f Fl(ASN1_ELEMENT_NOT_FOUND)36 -b Fs(if)42 b(ELE-)390 3106 y(MENT)24 b(is)h Fl(NULL)e -Fs(or)h Fl(elementName)d Fs(==)j(NULL,)g(and)g Fl(ASN1_TAG_ERROR)d -Fs(or)j Fl(ASN1_DER_ERROR)390 3215 y Fs(if)30 b(the)h(der)f(enco)s -(ding)g(do)s(esn't)g(matc)m(h)h(the)g(structure)f Fl(structure)e -Fs(\(*ELEMENT)i(deleted\).)150 3414 y Fk(asn1)p 396 3414 -37 5 v 55 w(der)p 625 3414 V 54 w(deco)s(ding)p 1153 -3414 V 55 w(startEnd)3350 3610 y Fs([F)-8 b(unction])-3599 -b Fj(int)53 b(asn1_der_decoding_sta)q(rtEn)q(d)f Fi(\()p -Fh(asn1)p 2001 3610 30 5 v 44 w(no)s(de)34 b Fg(element)p -Fh(,)h(const)e(v)m(oid)565 3719 y(*)d Fg(ider)p Fh(,)i(in)m(t)e -Fg(ider_len)p Fh(,)j(const)e(c)m(har)g(*)f Fg(name_element)p -Fh(,)k(in)m(t)c(*)g Fg(start)p Fh(,)i(in)m(t)f(*)f Fg(end)p -Fi(\))390 3829 y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 -b(to)g(an)f(ASN1)h(elemen)m(t)390 3963 y Ff(ider)7 b -Fs(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) -390 4097 y Ff(ider)p 548 4097 28 4 v 40 w(len)p Fs(:)41 -b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*)f Fl(ider)g -Fs(:)40 b Fl(ider)29 b Fs([0]..)42 b Fl(ider)30 b Fs([len-1])390 -4231 y Ff(name)p 608 4231 V 40 w(elemen)m(t)r Fs(:)42 -b(an)31 b(elemen)m(t)g(of)g(NAME)g(structure.)390 4365 -y Ff(start)r Fs(:)41 b(the)31 b(p)s(osition)f(of)h(the)f(\014rst)g(b)m -(yte)h(of)g(NAME)p 2189 4365 V 40 w(ELEMENT)f(deco)s(ding)g(\()h -Fl(ider)e Fs([*start]\))390 4499 y Ff(end)t Fs(:)40 b(the)30 -b(p)s(osition)h(of)f(the)h(last)g(b)m(yte)g(of)g(NAME)p -2129 4499 V 40 w(ELEMENT)f(deco)s(ding)g(\()h Fl(ider)e -Fs([*end]\))390 4633 y(Find)45 b(the)h(start)g(and)f(end)g(p)s(oin)m(t) -g(of)h(an)f(elemen)m(t)i(in)e(a)h(DER)g(enco)s(ding)f(string.)87 -b(I)45 b(mean)390 4743 y(that)35 b(if)f(y)m(ou)h(ha)m(v)m(e)h(a)e(der)g -(enco)s(ding)g(and)g(y)m(ou)h(ha)m(v)m(e)g(already)g(used)f(the)g -(function)g Fl(asn1_der_)390 4853 y(decoding\(\))22 b -Fs(to)j(\014ll)g(a)g(structure,)h(it)f(ma)m(y)h(happ)s(en)d(that)i(y)m -(ou)g(w)m(an)m(t)h(to)f(\014nd)e(the)i(piece)h(of)f(string)390 -4962 y(concerning)31 b(an)f(elemen)m(t)i(of)e(the)h(structure.)390 -5096 y(One)f(example)h(is)f(the)h(sequence)g Fl(")p Fs -(tbsCerti\014cate)p Fl(")g Fs(inside)f(an)g(X509)i(certi\014cate.)390 -5230 y(Note)38 b(that)g(since)f(libtasn1)g(3.7)h(the)f -Fl(ider)f Fs(and)g Fl(ider_len)f Fs(parameters)i(can)g(b)s(e)f -(omitted,)k(if)390 5340 y(the)31 b(elemen)m(t)g(is)g(already)g(deco)s -(ded)f(using)g Fl(asn1_der_decoding\(\))25 b Fs(.)p eop -end -%%Page: 21 24 -TeXDict begin 21 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(21)390 299 y Fe(Returns:)63 -b Fl(ASN1_SUCCESS)39 b Fs(if)j(DER)g(enco)s(ding)g(OK,)f -Fl(ASN1_ELEMENT_NOT_FOUND)36 b Fs(if)42 b(ELE-)390 408 -y(MENT)37 b(is)g Fl(asn1_node)e Fs(EMPTY)h(or)h Fl(name_element)d -Fs(is)j(not)g(a)h(v)-5 b(alid)37 b(elemen)m(t,)j Fl(ASN1_TAG_)390 -518 y(ERROR)j Fs(or)h Fl(ASN1_DER_ERROR)d Fs(if)j(the)h(der)f(enco)s -(ding)g(do)s(esn't)g(matc)m(h)i(the)e(structure)g(ELE-)390 -628 y(MENT.)150 831 y Fk(asn1)p 396 831 37 5 v 55 w(expand)p -836 831 V 54 w(an)m(y)p 1080 831 V 53 w(de\014ned)p 1517 -831 V 55 w(b)m(y)3350 1032 y Fs([F)-8 b(unction])-3599 -b Fj(int)53 b(asn1_expand_any_defin)q(ed_b)q(y)f Fi(\()p -Fh(asn1)p 2001 1032 30 5 v 44 w(no)s(de)34 b Fg(definitions)p -Fh(,)565 1142 y(asn1)p 766 1142 V 44 w(no)s(de)g(*)f -Fg(element)p Fi(\))390 1251 y Ff(de\014nitions)t Fs(:)40 -b(ASN1)31 b(de\014nitions)390 1390 y Ff(elemen)m(t)r -Fs(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 -1529 y(Expands)36 b(ev)m(ery)j Fl(")p Fs(ANY)f(DEFINED)g(BY)p -Fl(")g Fs(elemen)m(t)h(of)f(a)g(structure)g(created)g(from)g(a)g(DER) -390 1638 y(deco)s(ding)c(pro)s(cess)g(\(asn1)p 1314 1638 -28 4 v 41 w(der)p 1482 1638 V 40 w(deco)s(ding)g(function\).)53 -b(The)34 b(elemen)m(t)i(ANY)f(m)m(ust)f(b)s(e)g(de\014ned)390 -1748 y(b)m(y)26 b(an)f(OBJECT)g(IDENTIFIER.)h(The)f(t)m(yp)s(e)h(used)f -(to)i(expand)e(the)h(elemen)m(t)h(ANY)g(is)f(the)g(\014rst)390 -1858 y(one)31 b(follo)m(wing)h(the)e(de\014nition)g(of)h(the)f(actual)i -(v)-5 b(alue)31 b(of)f(the)h(OBJECT)e(IDENTIFIER.)390 -1996 y Fe(Returns:)55 b Fl(ASN1_SUCCESS)35 b Fs(if)j(Substitution)f -(OK,)g Fl(ASN1_ERROR_TYPE_ANY)c Fs(if)k(some)i Fl(")p -Fs(ANY)390 2106 y(DEFINED)34 b(BY)p Fl(")f Fs(elemen)m(t)i(couldn't)e -(b)s(e)g(expanded)f(due)g(to)i(a)f(problem)g(in)g(OBJECT)p -3504 2106 V 39 w(ID)g(-)p Fl(>)390 2216 y Fs(TYPE)d(asso)s(ciation,)i -(or)f(other)f(error)g(co)s(des)h(dep)s(ending)e(on)h(DER)g(deco)s -(ding.)150 2419 y Fk(asn1)p 396 2419 37 5 v 55 w(expand)p -836 2419 V 54 w(o)s(ctet)p 1161 2419 V 53 w(string)3350 -2620 y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_expand_octet_str)q -(ing)f Fi(\()p Fh(asn1)p 1896 2620 30 5 v 44 w(no)s(de)34 -b Fg(definitions)p Fh(,)565 2730 y(asn1)p 766 2730 V -44 w(no)s(de)e(*)f Fg(element)p Fh(,)i(const)f(c)m(har)g(*)f -Fg(octetName)p Fh(,)j(const)e(c)m(har)g(*)f Fg(objectName)p -Fi(\))390 2839 y Ff(de\014nitions)t Fs(:)40 b(ASN1)31 -b(de\014nitions)390 2978 y Ff(elemen)m(t)r Fs(:)42 b(p)s(oin)m(ter)31 -b(to)g(an)f(ASN1)h(structure)390 3117 y Ff(o)s(ctetName)5 -b Fs(:)43 b(name)30 b(of)h(the)g(OCTECT)d(STRING)i(\014eld)g(to)h -(expand.)390 3255 y Ff(ob)5 b(jectName)g Fs(:)45 b(name)31 -b(of)h(the)g(OBJECT)e(IDENTIFIER)h(\014eld)g(to)i(use)e(to)h(de\014ne)f -(the)g(t)m(yp)s(e)h(for)390 3365 y(expansion.)390 3504 -y(Expands)23 b(an)h Fl(")p Fs(OCTET)e(STRING)p Fl(")i -Fs(elemen)m(t)h(of)g(a)f(structure)g(created)h(from)f(a)h(DER)f(deco)s -(ding)390 3613 y(pro)s(cess)39 b(\(the)h Fl(asn1_der_decoding\(\))34 -b Fs(function\).)68 b(The)39 b(t)m(yp)s(e)h(used)f(for)g(expansion)g -(is)h(the)390 3723 y(\014rst)c(one)h(follo)m(wing)h(the)f(de\014nition) -g(of)f(the)h(actual)i(v)-5 b(alue)37 b(of)g(the)g(OBJECT)e(IDENTIFIER) -390 3833 y(indicated)c(b)m(y)f(OBJECTNAME.)390 3971 y -Fe(Returns:)36 b Fl(ASN1_SUCCESS)18 b Fs(if)j(substitution)g(OK,)g -Fl(ASN1_ELEMENT_NOT_FOUND)15 b Fs(if)22 b Fl(objectName)390 -4081 y Fs(or)j Fl(octetName)e Fs(are)j(not)f(correct,)j -Fl(ASN1_VALUE_NOT_VALID)20 b Fs(if)25 b(it)h(w)m(asn't)g(p)s(ossible)f -(to)h(\014nd)e(the)390 4190 y(t)m(yp)s(e)31 b(to)g(use)f(for)g -(expansion,)g(or)h(other)f(errors)g(dep)s(ending)f(on)h(DER)h(deco)s -(ding.)150 4394 y Fk(asn1)p 396 4394 37 5 v 55 w(deco)s(de)p -818 4394 V 54 w(simple)p 1214 4394 V 55 w(der)3350 4595 -y Fs([F)-8 b(unction])-3599 b Fj(int)53 b(asn1_decode_simple_de)q(r)e -Fi(\()p Fh(unsigned)35 b(in)m(t)f Fg(etype)p Fh(,)g(const)g(unsigned) -565 4705 y(c)m(har)f(*)f Fg(der)p Fh(,)h(unsigned)h(in)m(t)e -Fg(_der_len)p Fh(,)i(const)f(unsigned)h(c)m(har)f(**)f -Fg(str)p Fh(,)h(unsigned)565 4814 y(in)m(t)g(*)g Fg(str_len)p -Fi(\))390 4924 y Ff(et)m(yp)s(e)5 b Fs(:)41 b(The)30 -b(t)m(yp)s(e)h(of)f(the)h(string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p -2444 4924 28 4 v 41 w(ETYPE)p 2805 4924 V 39 w(\))390 -5062 y Ff(der)7 b Fs(:)40 b(the)30 b(enco)s(ded)g(string)p -396 5201 V 430 5201 a Ff(der)p 563 5201 V 40 w(len)p -Fs(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h(enco)s(ded)f(string)390 -5340 y Ff(str)7 b Fs(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(the)g(data)p -eop end -%%Page: 22 25 -TeXDict begin 22 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(22)390 299 y Ff(str)p -503 299 28 4 v 40 w(len)p Fs(:)41 b(the)30 b(length)h(of)g(the)f(data) -390 463 y(Deco)s(des)35 b(a)f(simple)g(DER)g(enco)s(ded)f(t)m(yp)s(e)h -(\(e.g.)52 b(a)35 b(string,)f(whic)m(h)g(is)g(not)g(constructed\).)51 -b(The)390 573 y(output)30 b(is)g(a)h(p)s(oin)m(ter)g(inside)f(the)g -Fl(der)g Fs(.)390 737 y Fe(Returns:)40 b Fl(ASN1_SUCCESS)27 -b Fs(if)k(successful)f(or)g(an)g(error)g(v)-5 b(alue.)150 -966 y Fk(asn1)p 396 966 37 5 v 55 w(deco)s(de)p 818 966 -V 54 w(simple)p 1214 966 V 55 w(b)s(er)3350 1192 y Fs([F)d(unction]) --3599 b Fj(int)53 b(asn1_decode_simple_be)q(r)e Fi(\()p -Fh(unsigned)35 b(in)m(t)f Fg(etype)p Fh(,)g(const)g(unsigned)565 -1302 y(c)m(har)g(*)f Fg(der)p Fh(,)h(unsigned)g(in)m(t)g -Fg(_der_len)p Fh(,)h(unsigned)g(c)m(har)f(**)e Fg(str)p -Fh(,)i(unsigned)h(in)m(t)e(*)565 1411 y Fg(str_len)p -Fh(,)i(unsigned)g(in)m(t)e(*)g Fg(ber_len)p Fi(\))390 -1521 y Ff(et)m(yp)s(e)5 b Fs(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h -(string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p 2444 1521 -28 4 v 41 w(ETYPE)p 2805 1521 V 39 w(\))390 1685 y Ff(der)7 -b Fs(:)40 b(the)30 b(enco)s(ded)g(string)p 396 1849 V -430 1849 a Ff(der)p 563 1849 V 40 w(len)p Fs(:)40 b(the)31 -b(b)m(ytes)g(of)f(the)h(enco)s(ded)f(string)390 2014 -y Ff(str)7 b Fs(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(the)g(data)390 -2178 y Ff(str)p 503 2178 V 40 w(len)p Fs(:)41 b(the)30 -b(length)h(of)g(the)f(data)390 2342 y Ff(b)s(er)p 526 -2342 V 39 w(len)p Fs(:)41 b(the)30 b(total)j(length)d(o)s(ccupied)h(b)m -(y)f(BER)g(\(ma)m(y)i(b)s(e)d Fl(NULL)h Fs(\))390 2506 -y(Deco)s(des)37 b(a)g(BER)g(enco)s(ded)f(t)m(yp)s(e.)60 -b(The)36 b(output)g(is)g(an)h(allo)s(cated)h(v)-5 b(alue)37 -b(of)g(the)g(data.)60 b(This)390 2616 y(deco)s(des)30 -b(BER)h(STRINGS)e(only)-8 b(.)41 b(Other)30 b(t)m(yp)s(es)h(are)f(deco) -s(ded)g(as)h(DER.)390 2780 y Fe(Returns:)40 b Fl(ASN1_SUCCESS)27 -b Fs(if)k(successful)f(or)g(an)g(error)g(v)-5 b(alue.)150 -3065 y Fr(4.4)68 b(Error)45 b(handling)g(functions)150 -3289 y Fk(asn1)p 396 3289 37 5 v 55 w(p)s(error)3350 -3516 y Fs([F)-8 b(unction])-3599 b Fj(void)54 b(asn1_perror)48 -b Fi(\()p Fh(in)m(t)34 b Fg(error)p Fi(\))390 3625 y -Ff(error)7 b Fs(:)40 b(is)30 b(an)h(error)f(returned)f(b)m(y)h(a)h -(libtasn1)g(function.)390 3790 y(Prin)m(ts)26 b(a)g(string)h(to)f -(stderr)g(with)g(a)g(description)g(of)h(an)f(error.)38 -b(This)26 b(function)g(is)g(lik)m(e)h Fl(perror\(\))390 -3899 y Fs(.)41 b(The)30 b(only)g(di\013erence)h(is)f(that)h(it)g -(accepts)h(an)e(error)g(returned)f(b)m(y)i(a)f(libtasn1)h(function.)390 -4063 y Fe(Since:)41 b Fs(1.6)150 4292 y Fk(asn1)p 396 -4292 V 55 w(strerror)3350 4519 y Fs([F)-8 b(unction])-3599 -b Fj(const)54 b(char)f(*)g(asn1_strerror)c Fi(\()p Fh(in)m(t)34 -b Fg(error)p Fi(\))390 4628 y Ff(error)7 b Fs(:)40 b(is)30 -b(an)h(error)f(returned)f(b)m(y)h(a)h(libtasn1)g(function.)390 -4792 y(Returns)i(a)h(string)g(with)f(a)h(description)g(of)g(an)g -(error.)50 b(This)33 b(function)h(is)g(similar)g(to)g(strerror.)390 -4902 y(The)c(only)h(di\013erence)g(is)g(that)g(it)g(accepts)h(an)e -(error)g(\(n)m(um)m(b)s(er\))g(returned)g(b)m(y)g(a)h(libtasn1)h(func-) -390 5012 y(tion.)390 5176 y Fe(Returns:)40 b Fs(P)m(oin)m(ter)32 -b(to)f(static)h(zero-terminated)g(string)f(describing)f(error)g(co)s -(de.)390 5340 y Fe(Since:)41 b Fs(1.6)p eop end -%%Page: 23 26 -TeXDict begin 23 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(F)-8 b(unction)31 b(reference)2313 b(23)150 299 y Fr(4.5)68 -b(Auxilliary)46 b(functions)150 523 y Fk(asn1)p 396 523 -37 5 v 55 w(\014nd)p 655 523 V 54 w(no)s(de)3350 720 -y Fs([F)-8 b(unction])-3599 b Fj(asn1_node)55 b(asn1_find_node)50 -b Fi(\()p Fh(asn1)p 1687 720 30 5 v 44 w(no)s(de)34 b -Fg(pointer)p Fh(,)h(const)f(c)m(har)g(*)f Fg(name)p Fi(\))390 -829 y Ff(p)s(oin)m(ter)7 b Fs(:)40 b(NODE)p 1021 829 -28 4 v 40 w(ASN)31 b(elemen)m(t)g(p)s(oin)m(ter.)390 -964 y Ff(name)5 b Fs(:)41 b(n)m(ull)30 b(terminated)h(string)f(with)g -(the)h(elemen)m(t's)h(name)e(to)i(\014nd.)390 1098 y(Searc)m(hes)g(for) -g(an)g(elemen)m(t)h(called)g Fl(name)e Fs(starting)h(from)f -Fl(pointer)f Fs(.)45 b(The)31 b(name)h(is)g(comp)s(osed)390 -1208 y(b)m(y)41 b(di\013eren)m(t)h(iden)m(ti\014ers)f(separated)g(b)m -(y)g(dots.)73 b(When)41 b(*)h Fl(pointer)d Fs(has)i(a)g(name,)j(the)e -(\014rst)390 1318 y(iden)m(ti\014er)26 b(m)m(ust)g(b)s(e)g(the)g(name)g -(of)g(*)h Fl(pointer)d Fs(,)j(otherwise)g(it)f(m)m(ust)g(b)s(e)g(the)g -(name)g(of)g(one)h(c)m(hild)390 1427 y(of)k(*)f Fl(pointer)f -Fs(.)390 1562 y Fe(Returns:)40 b Fs(the)31 b(searc)m(h)g(result,)f(or)h -Fl(NULL)e Fs(if)h(not)h(found.)150 1761 y Fk(asn1)p 396 -1761 37 5 v 55 w(c)m(hec)m(k)p 744 1761 V 52 w(v)m(ersion)3350 -1958 y Fs([F)-8 b(unction])-3599 b Fj(const)54 b(char)f(*)g -(asn1_check_version)e Fi(\()p Fh(const)34 b(c)m(har)g(*)f -Fg(req_version)p Fi(\))390 2067 y Ff(req)p 520 2067 28 -4 v 40 w(v)m(ersion)p Fs(:)41 b(Required)30 b(v)m(ersion)h(n)m(um)m(b)s -(er,)e(or)i Fl(NULL)e Fs(.)390 2202 y(Chec)m(k)e(that)h(the)f(v)m -(ersion)g(of)g(the)g(library)g(is)g(at)g(minim)m(um)g(the)g(requested)f -(one)i(and)e(return)g(the)390 2311 y(v)m(ersion)j(string;)g(return)d -Fl(NULL)h Fs(if)h(the)h(condition)f(is)g(not)h(satis\014ed.)40 -b(If)27 b(a)i Fl(NULL)e Fs(is)h(passed)f(to)i(this)390 -2421 y(function,)h(no)h(c)m(hec)m(k)h(is)e(done,)g(but)g(the)h(v)m -(ersion)f(string)h(is)f(simply)g(returned.)390 2555 y(See)h -Fl(ASN1_VERSION)c Fs(for)j(a)h(suitable)f Fl(req_version)e -Fs(string.)390 2690 y Fe(Returns:)43 b Fs(V)-8 b(ersion)32 -b(string)g(of)g(run-time)f(library)-8 b(,)33 b(or)e Fl(NULL)g -Fs(if)h(the)g(run-time)f(library)g(do)s(es)h(not)390 -2800 y(meet)f(the)g(required)e(v)m(ersion)i(n)m(um)m(b)s(er.)p -eop end -%%Page: 24 27 -TeXDict begin 24 26 bop 3659 -116 a Fs(24)150 299 y Fo(App)t(endix)52 -b(A)81 b(Cop)l(ying)52 b(Information)150 613 y Fr(A.1)67 -b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)1359 -772 y Fs(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 -902 y(Cop)m(yrigh)m(t)842 899 y(c)817 902 y Fp(\015)e -Fs(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 -b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 1012 -y Fl(http://fsf.org/)390 1231 y Fs(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f -(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 -1341 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f -(is)f(not)h(allo)m(w)m(ed.)199 1471 y(0.)61 b(PREAMBLE)330 -1601 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g -(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1710 y(useful)29 b(do)s(cumen)m(t)h Ff(free)36 b Fs(in)29 -b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j -(the)e(e\013ectiv)m(e)j(freedom)330 1820 y(to)f(cop)m(y)g(and)f -(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i -(either)f(commercially)h(or)e(non-)330 1929 y(commercially)-8 -b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f -(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2039 -y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g -(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 -2149 y(made)30 b(b)m(y)h(others.)330 2279 y(This)22 b(License)i(is)f(a) -h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 -b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 -2388 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g -(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 -2498 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) -e(for)g(free)h(soft)m(w)m(are.)330 2628 y(W)-8 b(e)31 -b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h -(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 -2738 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) -65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 -2847 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) -m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g -(to)330 2957 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g -(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 -b(ject)30 b(matter)i(or)330 3066 y(whether)f(it)h(is)f(published)f(as)i -(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h -(License)g(principally)f(for)330 3176 y(w)m(orks)f(whose)h(purp)s(ose)d -(is)j(instruction)f(or)g(reference.)199 3306 y(1.)61 -b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3436 y(This)39 -b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i -(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3546 -y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) -h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 -3655 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f -(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d -(in)330 3765 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j -(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 -3874 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h -(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g -(a)h(licensee,)i(and)330 3984 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 -b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 -b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 -4094 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) -m(yrigh)m(t)j(la)m(w.)330 4224 y(A)i(\\Mo)s(di\014ed)f(V)-8 -b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f -(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4333 y(a)k(p)s(ortion)f -(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s -(di\014cations)f(and/or)h(translated)g(in)m(to)330 4443 -y(another)31 b(language.)330 4573 y(A)26 b(\\Secondary)g(Section")h(is) -f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f -(the)g(Do)s(cumen)m(t)330 4682 y(that)c(deals)g(exclusiv)m(ely)h(with)e -(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f -(Do)s(cumen)m(t)330 4792 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m -(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) -m(tains)h(nothing)f(that)330 4902 y(could)j(fall)h(directly)g(within)f -(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 -b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 -5011 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) -h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 -b(The)330 5121 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e -(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 -b(or)g(with)g(related)330 5230 y(matters,)38 b(or)d(of)h(legal,)i -(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s -(osition)f(regarding)330 5340 y(them.)p eop end -%%Page: 25 28 -TeXDict begin 25 27 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(25)330 299 y(The)25 -b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g -(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 -408 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 -b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s -(cumen)m(t)g(is)g(released)330 518 y(under)f(this)i(License.)40 -b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h -(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 628 -y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 -b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) -e(In)m(v)-5 b(arian)m(t)330 737 y(Sections.)39 b(If)25 -b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) --5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 -878 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) -g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 -b(ron)m(t-Co)m(v)m(er)330 988 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) -j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f -(Do)s(cumen)m(t)h(is)f(released)g(under)330 1097 y(this)h(License.)40 -b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 -b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m -(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1207 y(b)s(e)k(at)h(most)g(25)g(w) -m(ords.)330 1348 y(A)36 b(\\T)-8 b(ransparen)m(t")36 -b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m -(hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 -1457 y(in)d(a)h(format)g(whose)g(sp)s(eci\014cation)g(is)g(a)m(v)-5 -b(ailable)38 b(to)f(the)f(general)g(public,)h(that)f(is)g(suitable)g -(for)330 1567 y(revising)c(the)g(do)s(cumen)m(t)f(straigh)m(tforw)m -(ardly)i(with)e(generic)i(text)g(editors)f(or)f(\(for)h(images)h(com-) -330 1677 y(p)s(osed)23 b(of)h(pixels\))g(generic)h(pain)m(t)f(programs) -g(or)f(\(for)h(dra)m(wings\))g(some)g(widely)g(a)m(v)-5 -b(ailable)26 b(dra)m(wing)330 1786 y(editor,)k(and)f(that)g(is)g -(suitable)h(for)f(input)f(to)i(text)g(formatters)f(or)g(for)g -(automatic)i(translation)f(to)330 1896 y(a)d(v)-5 b(ariet)m(y)28 -b(of)f(formats)g(suitable)h(for)e(input)g(to)i(text)g(formatters.)40 -b(A)27 b(cop)m(y)g(made)g(in)g(an)g(otherwise)330 2005 -y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g(whose)f(markup,)i(or)e -(absence)h(of)g(markup,)g(has)g(b)s(een)f(arranged)g(to)330 -2115 y(th)m(w)m(art)27 b(or)g(discourage)g(subsequen)m(t)f(mo)s -(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 -b(An)27 b(image)330 2225 y(format)35 b(is)f(not)h(T)-8 -b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g(substan)m(tial)h(amoun) -m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g(is)330 -2334 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i(\\Opaque".)330 -2475 y(Examples)49 b(of)f(suitable)i(formats)f(for)f(T)-8 -b(ransparen)m(t)48 b(copies)i(include)e(plain)h(ASCI)s(I)e(without)330 -2585 y(markup,)33 b(T)-8 b(exinfo)33 b(input)f(format,)i(LaT)1745 -2604 y(E)1795 2585 y(X)f(input)f(format,)j(SGML)d(or)h(XML)h(using)e(a) -h(publicly)330 2694 y(a)m(v)-5 b(ailable)36 b(DTD,)e(and)f -(standard-conforming)h(simple)f(HTML,)h(P)m(ostScript)g(or)g(PDF)g -(designed)330 2804 y(for)h(h)m(uman)g(mo)s(di\014cation.)57 -b(Examples)35 b(of)h(transparen)m(t)f(image)i(formats)f(include)f(PNG,) -h(X)m(CF)330 2913 y(and)h(JPG.)62 b(Opaque)36 b(formats)i(include)f -(proprietary)g(formats)h(that)g(can)g(b)s(e)e(read)i(and)f(edited)330 -3023 y(only)c(b)m(y)g(proprietary)f(w)m(ord)h(pro)s(cessors,)g(SGML)g -(or)g(XML)g(for)g(whic)m(h)g(the)g(DTD)g(and/or)g(pro-)330 -3133 y(cessing)26 b(to)s(ols)g(are)g(not)f(generally)i(a)m(v)-5 -b(ailable,)29 b(and)24 b(the)i(mac)m(hine-generated)h(HTML,)e(P)m -(ostScript)330 3242 y(or)30 b(PDF)h(pro)s(duced)e(b)m(y)h(some)h(w)m -(ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 -b(.)330 3383 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m -(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f -(follo)m(wing)330 3493 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g -(legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h -(app)s(ear)f(in)h(the)330 3602 y(title)g(page.)40 b(F)-8 -b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h -(an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 -3712 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s -(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 -3821 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 -3962 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) -m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 -4072 y(to)c(the)g(public.)330 4213 y(A)f(section)h(\\En)m(titled)g -(XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h -(whose)e(title)i(either)330 4322 y(is)d(precisely)g(XYZ)g(or)f(con)m -(tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f -(translates)h(XYZ)e(in)330 4432 y(another)e(language.)40 -b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f -(men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4542 y(as)i(\\Ac)m(kno)m -(wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f -(\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4651 -y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s -(dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 -4761 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g -(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) --8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m -(h)e(states)i(that)330 5011 y(this)34 b(License)g(applies)g(to)h(the)f -(Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 -b(Disclaimers)f(are)g(considered)e(to)330 5121 y(b)s(e)k(included)g(b)m -(y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f -(disclaiming)i(w)m(arran)m(ties:)330 5230 y(an)m(y)e(other)g -(implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 -b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 -5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)p -eop end -%%Page: 26 29 -TeXDict begin 26 28 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(26)199 299 y(2.)61 -b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8 b(ou)39 -b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h(in)f(an) -m(y)g(medium,)h(either)g(commercially)h(or)330 555 y(noncommercially)-8 -b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 -b(cop)m(yrigh)m(t)i(notices,)j(and)42 b(the)h(license)330 -664 y(notice)37 b(sa)m(ying)g(this)e(License)i(applies)e(to)i(the)f(Do) -s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g(copies,)j(and)330 -774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f(conditions)h(whatso)s(ev)m -(er)h(to)f(those)g(of)g(this)f(License.)40 b(Y)-8 b(ou)27 -b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 b(measures)d(to)i -(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g(further)e(cop)m -(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 b(mak)m(e)g(or)g -(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h -(comp)s(ensation)f(in)f(exc)m(hange)j(for)d(copies.)330 -1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f(n)m(um)m(b)s -(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g(the)f -(conditions)330 1212 y(in)e(section)i(3.)330 1358 y(Y)-8 -b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g -(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g -(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 -y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 -b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g -(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 -1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f -(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 -1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i -(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 -b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m -(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 -b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 -b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 -2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) -m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f -(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 -b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i -(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e -(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g -(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 -2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) -m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) -330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d -(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 -2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e -(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g -(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f -(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) -g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 -3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 -y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f -(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 -3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g -(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) -330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h -(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d -(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e -(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m -(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 -b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g -(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h -(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e -(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g -(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 -b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 -4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s -(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h -(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i -(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h -(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 -4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g -(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 -4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s -(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m -(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g -(the)f(Do)s(cumen)m(t.)199 4756 y(4.)61 b(MODIFICA)-8 -b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) -h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) -e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) -m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f -(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 -b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 -b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f -(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h -(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s -(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 -b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s -(di\014ed)e(V)-8 b(ersion:)p eop end -%%Page: 27 30 -TeXDict begin 27 29 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(27)357 299 y(A.)60 -b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m -(ers,)i(if)e(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the) -510 408 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m -(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 -b(,)510 518 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g -(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) -h(title)h(as)510 628 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) -i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 -758 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h -(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c -(for)510 867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g -(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h -(\014v)m(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s -(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g -(few)m(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g -(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 -b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g -(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 -b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 -b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) -363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g -(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 -y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g -(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 -1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g -(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 -2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f -(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e -(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f -(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 -y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) -392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g -(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g -(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d -(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 -b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 -b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e -(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f -(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s -(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i -(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m -(tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s -(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m -(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 -b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) -m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m -(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 -b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 -y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) -m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h -(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e -(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) -d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s -(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m -(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k -(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d -(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) -h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m -(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 -4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f -(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 -b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 -b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 -4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 -b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 -b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 -4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 -4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f -(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g -(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 -b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g -(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f -(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g -(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h -(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end -%%Page: 28 31 -TeXDict begin 28 30 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(28)330 299 y(y)m(our)32 -b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e -(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)330 -408 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 -b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 -b(license)g(notice.)57 b(These)330 518 y(titles)32 b(m)m(ust)e(b)s(e)g -(distinct)h(from)e(an)m(y)i(other)g(section)g(titles.)330 -650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)i(En)m(titled)f -(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g(nothing)g(but) -330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s(di\014ed)g(V)-8 -b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g -(statemen)m(ts)i(of)330 869 y(p)s(eer)27 b(review)g(or)g(that)h(the)f -(text)i(has)d(b)s(een)h(appro)m(v)m(ed)g(b)m(y)g(an)h(organization)h -(as)e(the)h(authoritativ)m(e)330 978 y(de\014nition)i(of)h(a)f -(standard.)330 1110 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g -(up)e(to)i(\014v)m(e)g(w)m(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er) -30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 -1219 y(to)g(25)g(w)m(ords)e(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 -b(ext,)29 b(to)f(the)f(end)f(of)i(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 -b(exts)27 b(in)g(the)h(Mo)s(di\014ed)330 1329 y(V)-8 -b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f(F)-8 b(ron)m(t-Co)m(v)m -(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m(k-Co)m(v)m(er)j(T)-8 -b(ext)36 b(ma)m(y)h(b)s(e)330 1439 y(added)27 b(b)m(y)g(\(or)h(through) -f(arrangemen)m(ts)h(made)g(b)m(y\))g(an)m(y)g(one)f(en)m(tit)m(y)-8 -b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)g(already)330 1548 -y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g(same)h(co)m(v)m -(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m(y)g(arrangemen)m -(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m(y)i(y)m(ou)f(are)f -(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g(not)f(add)g -(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the)f(old)g -(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e -(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 -2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s -(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s -(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g -(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g -(Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 -b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m -(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h -(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g -(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f -(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 -y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s -(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g -(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) -g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 -b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m -(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) -i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 -b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h -(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m -(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g -(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f -(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f -(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g -(the)g(original)h(author)f(or)330 3499 y(publisher)23 -b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m -(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 -3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h -(com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m -(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g -(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 -3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h -(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 -4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 -b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 -b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m -(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 -b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f -(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g -(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k -(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f -(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) -g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 -b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 -b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g -(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 -4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 -b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h -(collection,)i(and)d(distribute)g(it)h(individu-)330 -5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g -(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 -5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g -(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 -5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 29 32 -TeXDict begin 29 31 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(29)199 299 y(7.)61 -b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 -441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5 -b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)s(enden)m(t)330 -551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m -(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) -330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e -(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 -770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m -(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 -b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g -(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g -(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h -(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h -(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 -b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f -(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 -y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f -(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m -(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m -(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h -(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 -b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f -(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 -1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f -(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 -b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) -i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e -(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h -(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 -b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f -(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i -(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 -b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 -b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 -2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 -b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f -(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) -h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 -b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 -y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g -(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 -2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 -b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f -(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f -(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m -(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 -b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m -(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 -3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m -(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 -3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 -b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h -(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 -b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g -(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 -3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) -i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 -3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i -(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h -(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h -(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g -(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h -(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 -b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 -b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h -(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 -y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d -(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h -(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h -(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g -(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m -(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f -(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 -4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g -(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h -(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 -b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h -(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 -b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g -(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) -330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g -(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f -(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f -(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 30 33 -TeXDict begin 30 32 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(30)154 299 y(10.)61 -b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 -y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 -b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g(the)g(GNU)g(F) --8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to) -g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h -(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m -(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i -(concerns.)330 762 y(See)c Fl(http://www.gnu.org/copy)o(left)o(/)p -Fs(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m -(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 -b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 -b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g -(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 -y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f -(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 -1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m -(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g -(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 -b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s -(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 -y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m -(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) -h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 -b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f -(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f -(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) -m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m -(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g -(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 -2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) -e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 -2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m -(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h -(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g -(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i -(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 -b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s -(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 -2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m -(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 -2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m -(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 -2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) -g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 -2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 -b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) -f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g -(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e -(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h -(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 -3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h -(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 -3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h -(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 -3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f -(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) -330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j -(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s -(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h -(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) -g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g -(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) -330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 31 34 -TeXDict begin 31 33 bop 150 -116 a Fs(App)s(endix)29 -b(A:)h(Cop)m(ying)h(Information)2140 b(31)150 299 y Fr(ADDENDUM:)45 -b(Ho)l(w)h(to)f(use)g(this)h(License)f(for)g(y)l(our)g(do)t(cumen)l(ts) -150 458 y Fs(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m -(t)g(y)m(ou)f(ha)m(v)m(e)i(written,)g(include)f(a)f(cop)m(y)i(of)f(the) -f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g -(follo)m(wing)i(cop)m(yrigh)m(t)g(and)e(license)h(notices)g(just)f -(after)h(the)g(title)h(page:)468 680 y Fd(Copyright)42 -b(\(C\))79 b Fc(year)g(your)40 b(name)p Fd(.)468 767 -y(Permission)i(is)e(granted)g(to)g(copy,)h(distribute)g(and/or)g -(modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g -(GNU)g(Free)g(Documentation)i(License,)f(Version)g(1.3)468 -941 y(or)f(any)g(later)g(version)h(published)h(by)d(the)h(Free)g -(Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f -(no)f(Front-Cover)h(Texts,)g(and)f(no)f(Back-Cover)468 -1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f(license)i(is)f(included)h -(in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation) -h(License''.)275 1337 y Fs(If)d(y)m(ou)h(ha)m(v)m(e)h(In)m(v)-5 -b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 -b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts,)43 -b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 -b(T)-8 b(exts.")31 b(line)g(with)f(this:)547 1559 y Fd(with)40 -b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p -Fd(,)h(with)547 1646 y(the)f(Front-Cover)i(Texts)e(being)g -Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 -1733 y(being)f Fc(list)p Fd(.)275 1868 y Fs(If)34 b(y)m(ou)i(ha)m(v)m -(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 -b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 -1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e -(suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f -(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m -(e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g -(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h -(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 -b(Public)f(License,)i(to)f(p)s(ermit)e(their)i(use)f(in)g(free)g(soft)m -(w)m(are.)p eop end -%%Page: 32 35 -TeXDict begin 32 34 bop 3659 -116 a Fs(32)150 299 y Fo(Concept)52 -b(Index)146 638 y Fr(A)150 759 y Fb(asn1Co)r(ding)27 -b(program)16 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 -b Fb(5)150 848 y(asn1Deco)r(ding)c(program)14 b Fa(:)g(:)f(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)29 b Fb(6)150 936 y(asn1P)n(arser)e(program)13 -b Fa(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b -Fb(5)150 1025 y(ASN.1)e(sc)n(hema)c Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(2)146 1293 -y Fr(F)150 1414 y Fb(FDL,)26 b(GNU)f(F)-6 b(ree)25 b(Do)r(cumen)n -(tation)h(License)8 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(24)150 1503 y(F)-6 b(uture)25 b(dev)n(elopmen)n(ts)15 -b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(4)146 -1785 y Fr(H)150 1906 y Fb(Header)c(\014le)f(libtasn1.h)7 -b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fb(4)2021 -638 y Fr(M)2025 756 y Fb(Main)k(t)n(yp)r(e)f(asn1)p 2550 -756 24 4 v 34 w(no)r(de)7 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)23 b Fb(4)2021 1021 y Fr(P)2025 1140 y Fb(P)n(orting)18 -b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(1)2021 1405 y Fr(S)2025 -1523 y Fb(Supp)r(orted)24 b(ASN.1)h(t)n(yp)r(es,)h(list)g(of)21 -b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)35 b Fb(2)2021 1788 y Fr(T)2025 1906 y Fb(threads)19 -b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(1)p eop end -%%Page: 33 36 -TeXDict begin 33 35 bop 3659 -116 a Fs(33)150 299 y Fo(F)-13 -b(unction)52 b(and)h(Data)i(Index)150 610 y Fd(asn1_array2tree)23 -b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(9)150 697 y Fd(asn1_bit_der)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(16)150 785 -y Fd(asn1_check_version)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -24 b Fb(23)150 872 y Fd(asn1_copy_node)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(11)150 959 y Fd -(asn1_create_element)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(10)150 1046 y Fd(asn1_decode_simple_ber)16 b Fa(:)j(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)31 b Fb(22)150 1133 y Fd(asn1_decode_simple_der)16 -b Fa(:)j(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 1220 y Fd(asn1_delete_element)9 -b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(9)150 -1308 y Fd(asn1_delete_structure)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 -b Fb(9)150 1395 y Fd(asn1_delete_structure2)24 b Fa(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(9)150 1482 y Fd(asn1_der_coding)17 -b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(17)150 1569 y Fd(asn1_der_decoding)12 b Fa(:)17 -b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(19)150 -1656 y Fd(asn1_der_decoding_element)9 b Fa(:)19 b(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(20)150 1743 y Fd(asn1_der_decoding_startEnd)7 b -Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)21 b Fb(20)150 1831 y Fd(asn1_der_decoding2)10 -b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(19)150 -1918 y Fd(asn1_dup_node)h Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)37 b Fb(11)150 2005 y Fd(asn1_encode_simple_der)16 -b Fa(:)j(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(16)150 2092 y Fd -(asn1_expand_any_defined_by)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(21)150 -2179 y Fd(asn1_expand_octet_string)11 b Fa(:)19 b(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)26 b Fb(21)150 2267 y Fd(asn1_find_node)d Fa(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(23)2025 610 y Fd(asn1_find_structure_from_oid)19 -b Fa(:)f(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 -b Fb(10)2025 697 y Fd(asn1_get_bit_der)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)29 b Fb(19)2025 785 y Fd(asn1_get_length_ber)7 -b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(18)2025 -872 y Fd(asn1_get_length_der)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -22 b Fb(17)2025 959 y Fd(asn1_get_object_id_der)16 b -Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(18)2025 1046 y Fd(asn1_get_octet_der)10 -b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(18)2025 -1133 y Fd(asn1_get_tag_der)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)29 b Fb(17)2025 1220 y Fd(asn1_length_der)17 -b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 -b Fb(15)2025 1308 y Fd(asn1_number_of_elements)14 b Fa(:)k(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)28 b Fb(10)2025 1395 y Fd(asn1_octet_der)23 b -Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(16)2025 1482 y Fd(asn1_parser2array)14 b Fa(:)j(:)c(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)29 b Fb(8)2025 1569 y Fd(asn1_parser2tree)17 -b Fa(:)f(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)32 -b Fb(8)2025 1656 y Fd(asn1_perror)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(22)2025 -1743 y Fd(asn1_print_structure)h Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 -b Fb(10)2025 1831 y Fd(asn1_read_node_value)26 b Fa(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(15)2025 1918 y Fd(asn1_read_tag)25 -b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(15)2025 2005 y Fd(asn1_read_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(13)2025 2092 y Fd(asn1_read_value_type) -26 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(14)2025 2179 -y Fd(asn1_strerror)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)37 b Fb(22)2025 2267 y Fd(asn1_write_value)15 -b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b -Fb(11)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/doc/libtasn1.texi b/doc/libtasn1.texi index 6f86f0a..9cf82c9 100644 --- a/doc/libtasn1.texi +++ b/doc/libtasn1.texi @@ -15,7 +15,7 @@ This manual is for GNU Libtasn1 which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. -Copyright @copyright{} 2001-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2001--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -313,16 +313,7 @@ data structures (not a single array like now). generates a file with an array to use with libtasn1 functions. -@verbatim -Usage: asn1Parser [options] file - -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. - -n name : array name. -@end verbatim +@verbatiminclude asn1Parser-help.texi @node Invoking asn1Coding @section Invoking asn1Coding @@ -349,16 +340,7 @@ denote the root element itself. The output file is a binary file with the DER encoding. -@verbatim -Usage: asn1Coding [options] file1 file2 - file1 : file with ASN1 definitions. - file2 : file with assignments. -Options: - -h : shows the help message. - -v : shows version information and exit. - -c : checks the syntax only. - -o file : output file. -@end verbatim +@verbatiminclude asn1Coding-help.texi For example, consider an ASN.1 definitions file as follows: @@ -423,16 +405,7 @@ dNSName example.org ASN.1 definitions and a binary file with a DER encoding. -@verbatim -Usage: asn1Decoding [options] file1 file2 type - file1 : file with ASN1 definitions. - file2 : binary file with a DER encoding. - type : ASN1 definition name. -Options: - -h : shows the help message. - -v : shows version information and exit. - -o file : output file. -@end verbatim +@verbatiminclude asn1Decoding-help.texi For example, after generating the @file{assign.out} file from the example section of the @command{asn1Coding} command above, the diff --git a/doc/man/asn1_array2tree.3 b/doc/man/asn1_array2tree.3 index e85cfca..cfcfebd 100644 --- a/doc/man/asn1_array2tree.3 +++ b/doc/man/asn1_array2tree.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_array2tree" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_array2tree" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_array2tree \- API function .SH SYNOPSIS @@ -24,7 +24,7 @@ Creates the structures needed to manage the ASN.1 definitions. that is not defined (see \fIerrorDescription\fP for more information), \fBASN1_ARRAY_ERROR\fP if the array pointed by \fIarray\fP is wrong. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -43,5 +43,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_bit_der.3 b/doc/man/asn1_bit_der.3 index 9309c75..6a26cbf 100644 --- a/doc/man/asn1_bit_der.3 +++ b/doc/man/asn1_bit_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_bit_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_bit_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_bit_der \- API function .SH SYNOPSIS @@ -28,7 +28,7 @@ that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -47,5 +47,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_check_version.3 b/doc/man/asn1_check_version.3 index 5d348ec..ea7d26d 100644 --- a/doc/man/asn1_check_version.3 +++ b/doc/man/asn1_check_version.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_check_version" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_check_version" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_check_version \- API function .SH SYNOPSIS @@ -20,7 +20,7 @@ See \fBASN1_VERSION\fP for a suitable \fIreq_version\fP string. Version string of run\-time library, or \fBNULL\fP if the run\-time library does not meet the required version number. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -39,5 +39,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_copy_node.3 b/doc/man/asn1_copy_node.3 index 0f3e560..fdb5cf6 100644 --- a/doc/man/asn1_copy_node.3 +++ b/doc/man/asn1_copy_node.3 @@ -1,17 +1,17 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_copy_node" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_copy_node" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_copy_node \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_copy_node(asn1_node " dst ", const char * " dst_name ", asn1_node " src ", const char * " src_name ");" +.BI "int asn1_copy_node(asn1_node " dst ", const char * " dst_name ", asn1_node_const " src ", const char * " src_name ");" .SH ARGUMENTS .IP "asn1_node dst" 12 Destination asn1 node. .IP "const char * dst_name" 12 Field name in destination node. -.IP "asn1_node src" 12 +.IP "asn1_node_const src" 12 Source asn1 node. .IP "const char * src_name" 12 Field name in source node. @@ -21,7 +21,7 @@ function requires \fIdst\fP to be expanded using \fBasn1_create_element()\fP. .SH "RETURNS" Return \fBASN1_SUCCESS\fP on success. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -40,5 +40,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_create_element.3 b/doc/man/asn1_create_element.3 index 75f090e..9195d83 100644 --- a/doc/man/asn1_create_element.3 +++ b/doc/man/asn1_create_element.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_create_element" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_create_element" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_create_element \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_create_element(asn1_node " definitions ", const char * " source_name ", asn1_node * " element ");" +.BI "int asn1_create_element(asn1_node_const " definitions ", const char * " source_name ", asn1_node * " element ");" .SH ARGUMENTS -.IP "asn1_node definitions" 12 +.IP "asn1_node_const definitions" 12 pointer to the structure returned by "parser_asn1" function .IP "const char * source_name" 12 the name of the type of the new structure (must be @@ -23,7 +23,7 @@ rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); \fBASN1_SUCCESS\fP if creation OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIsource_name\fP is not known. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -42,5 +42,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_decode_simple_ber.3 b/doc/man/asn1_decode_simple_ber.3 index f4e9545..51c3385 100644 --- a/doc/man/asn1_decode_simple_ber.3 +++ b/doc/man/asn1_decode_simple_ber.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_decode_simple_ber" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_decode_simple_ber" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_decode_simple_ber \- API function .SH SYNOPSIS @@ -26,7 +26,7 @@ decoded as DER. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -45,5 +45,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_decode_simple_der.3 b/doc/man/asn1_decode_simple_der.3 index 63afecb..871e69c 100644 --- a/doc/man/asn1_decode_simple_der.3 +++ b/doc/man/asn1_decode_simple_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_decode_simple_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_decode_simple_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_decode_simple_der \- API function .SH SYNOPSIS @@ -23,7 +23,7 @@ The output is a pointer inside the \fIder\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -42,5 +42,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_delete_element.3 b/doc/man/asn1_delete_element.3 index 9f20521..e3e31b2 100644 --- a/doc/man/asn1_delete_element.3 +++ b/doc/man/asn1_delete_element.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_delete_element" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_delete_element" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_delete_element \- API function .SH SYNOPSIS @@ -18,7 +18,7 @@ Deletes the element named * \fIelement_name\fP inside * \fIstructure\fP . \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if the \fIelement_name\fP was not found. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -37,5 +37,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_delete_structure.3 b/doc/man/asn1_delete_structure.3 index da4d69e..6b69ecc 100644 --- a/doc/man/asn1_delete_structure.3 +++ b/doc/man/asn1_delete_structure.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_delete_structure" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_delete_structure" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure \- API function .SH SYNOPSIS @@ -16,7 +16,7 @@ to NULL. \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -35,5 +35,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_delete_structure2.3 b/doc/man/asn1_delete_structure2.3 index c92f32f..106a644 100644 --- a/doc/man/asn1_delete_structure2.3 +++ b/doc/man/asn1_delete_structure2.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_delete_structure2" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_delete_structure2" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure2 \- API function .SH SYNOPSIS @@ -10,7 +10,7 @@ asn1_delete_structure2 \- API function .IP "asn1_node * structure" 12 pointer to the structure that you want to delete. .IP "unsigned int flags" 12 -additional flags (see \fBASN1_DELETE_FLAG\fP) +additional flags (see \fBASN1_DELETE_FLAG_ZEROIZE\fP) .SH "DESCRIPTION" Deletes the structure * \fIstructure\fP . At the end, * \fIstructure\fP is set to NULL. @@ -18,7 +18,7 @@ to NULL. \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -37,5 +37,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_der_coding.3 b/doc/man/asn1_der_coding.3 index 2e7d196..862dd2b 100644 --- a/doc/man/asn1_der_coding.3 +++ b/doc/man/asn1_der_coding.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_der_coding" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_der_coding" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_der_coding \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_der_coding(asn1_node " element ", const char * " name ", void * " ider ", int * " len ", char * " ErrorDescription ");" +.BI "int asn1_der_coding(asn1_node_const " element ", const char * " name ", void * " ider ", int * " len ", char * " ErrorDescription ");" .SH ARGUMENTS -.IP "asn1_node element" 12 +.IP "asn1_node_const element" 12 pointer to an ASN1 element .IP "const char * name" 12 the name of the structure you want to encode (it must be @@ -30,7 +30,7 @@ if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there is an element without a value, \fBASN1_MEM_ERROR\fP if the \fIider\fP vector isn't big enough and in this case \fIlen\fP will contain the length needed. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -49,5 +49,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_der_decoding.3 b/doc/man/asn1_der_decoding.3 index ca5db75..ae0a1b6 100644 --- a/doc/man/asn1_der_decoding.3 +++ b/doc/man/asn1_der_decoding.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_der_decoding" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_der_decoding" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding \- API function .SH SYNOPSIS @@ -29,7 +29,7 @@ if \fIELEMENT\fP is \fBNULL\fP, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure name (* \fIELEMENT\fP deleted). .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -48,5 +48,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_der_decoding2.3 b/doc/man/asn1_der_decoding2.3 index 6468b15..2939d59 100644 --- a/doc/man/asn1_der_decoding2.3 +++ b/doc/man/asn1_der_decoding2.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_der_decoding2" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_der_decoding2" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding2 \- API function .SH SYNOPSIS @@ -36,7 +36,7 @@ if \fIELEMENT\fP is \fBNULL\fP, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure name (* \fIELEMENT\fP deleted). .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -55,5 +55,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_der_decoding_element.3 b/doc/man/asn1_der_decoding_element.3 index 08f007d..a96d925 100644 --- a/doc/man/asn1_der_decoding_element.3 +++ b/doc/man/asn1_der_decoding_element.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_der_decoding_element" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_der_decoding_element" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_element \- API function .SH SYNOPSIS @@ -34,7 +34,7 @@ if ELEMENT is \fBNULL\fP or \fIelementName\fP == NULL, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure \fIstructure\fP (*ELEMENT deleted). .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -53,5 +53,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_der_decoding_startEnd.3 b/doc/man/asn1_der_decoding_startEnd.3 index 7cbf616..69635fb 100644 --- a/doc/man/asn1_der_decoding_startEnd.3 +++ b/doc/man/asn1_der_decoding_startEnd.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_der_decoding_startEnd" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_der_decoding_startEnd" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_startEnd \- API function .SH SYNOPSIS @@ -39,7 +39,7 @@ if ELEMENT is \fBasn1_node\fP EMPTY or \fIname_element\fP is not a valid element, \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure ELEMENT. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -58,5 +58,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_dup_node.3 b/doc/man/asn1_dup_node.3 index d0d67b2..dfb61b0 100644 --- a/doc/man/asn1_dup_node.3 +++ b/doc/man/asn1_dup_node.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_dup_node" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_dup_node" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_dup_node \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "asn1_node asn1_dup_node(asn1_node " src ", const char * " src_name ");" +.BI "asn1_node asn1_dup_node(asn1_node_const " src ", const char * " src_name ");" .SH ARGUMENTS -.IP "asn1_node src" 12 +.IP "asn1_node_const src" 12 Source asn1 node. .IP "const char * src_name" 12 Field name in source node. @@ -17,7 +17,7 @@ will return an exact copy of the provided structure. .SH "RETURNS" Return \fBNULL\fP on failure. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -36,5 +36,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_encode_simple_der.3 b/doc/man/asn1_encode_simple_der.3 index 0af0904..8574273 100644 --- a/doc/man/asn1_encode_simple_der.3 +++ b/doc/man/asn1_encode_simple_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_encode_simple_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_encode_simple_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_encode_simple_der \- API function .SH SYNOPSIS @@ -27,7 +27,7 @@ with the provided \fIstr\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -46,5 +46,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_expand_any_defined_by.3 b/doc/man/asn1_expand_any_defined_by.3 index df13a21..5094056 100644 --- a/doc/man/asn1_expand_any_defined_by.3 +++ b/doc/man/asn1_expand_any_defined_by.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_expand_any_defined_by" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_expand_any_defined_by" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_expand_any_defined_by \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_expand_any_defined_by(asn1_node " definitions ", asn1_node * " element ");" +.BI "int asn1_expand_any_defined_by(asn1_node_const " definitions ", asn1_node * " element ");" .SH ARGUMENTS -.IP "asn1_node definitions" 12 +.IP "asn1_node_const definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure @@ -23,7 +23,7 @@ some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID \-> TYPE association, or other error codes depending on DER decoding. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -42,5 +42,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_expand_octet_string.3 b/doc/man/asn1_expand_octet_string.3 index 173645c..50fb449 100644 --- a/doc/man/asn1_expand_octet_string.3 +++ b/doc/man/asn1_expand_octet_string.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_expand_octet_string" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_expand_octet_string" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_expand_octet_string \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_expand_octet_string(asn1_node " definitions ", asn1_node * " element ", const char * " octetName ", const char * " objectName ");" +.BI "int asn1_expand_octet_string(asn1_node_const " definitions ", asn1_node * " element ", const char * " octetName ", const char * " objectName ");" .SH ARGUMENTS -.IP "asn1_node definitions" 12 +.IP "asn1_node_const definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure @@ -27,7 +27,7 @@ if \fIobjectName\fP or \fIoctetName\fP are not correct, \fBASN1_VALUE_NOT_VALID\fP if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -46,5 +46,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_find_node.3 b/doc/man/asn1_find_node.3 index 8ef20e0..f3eca34 100644 --- a/doc/man/asn1_find_node.3 +++ b/doc/man/asn1_find_node.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_find_node" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_find_node" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_find_node \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "asn1_node asn1_find_node(asn1_node " pointer ", const char * " name ");" +.BI "asn1_node asn1_find_node(asn1_node_const " pointer ", const char * " name ");" .SH ARGUMENTS -.IP "asn1_node pointer" 12 +.IP "asn1_node_const pointer" 12 NODE_ASN element pointer. .IP "const char * name" 12 null terminated string with the element's name to find. @@ -19,7 +19,7 @@ name is composed by different identifiers separated by dots. When .SH "RETURNS" the search result, or \fBNULL\fP if not found. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -38,5 +38,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_find_structure_from_oid.3 b/doc/man/asn1_find_structure_from_oid.3 index d850500..63158b3 100644 --- a/doc/man/asn1_find_structure_from_oid.3 +++ b/doc/man/asn1_find_structure_from_oid.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_find_structure_from_oid" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_find_structure_from_oid" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_find_structure_from_oid \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "const char * asn1_find_structure_from_oid(asn1_node " definitions ", const char * " oidValue ");" +.BI "const char * asn1_find_structure_from_oid(asn1_node_const " definitions ", const char * " oidValue ");" .SH ARGUMENTS -.IP "asn1_node definitions" 12 +.IP "asn1_node_const definitions" 12 ASN1 definitions .IP "const char * oidValue" 12 value of the OID to search (e.g. "1.2.3.4"). @@ -18,7 +18,7 @@ Search the structure that is defined just after an OID definition. constant string that contains the element name defined just after the OID. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -37,5 +37,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_bit_der.3 b/doc/man/asn1_get_bit_der.3 index 8b40416..a7090a9 100644 --- a/doc/man/asn1_get_bit_der.3 +++ b/doc/man/asn1_get_bit_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_bit_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_bit_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_bit_der \- API function .SH SYNOPSIS @@ -24,7 +24,7 @@ Extract a BIT SEQUENCE from DER data. .SH "RETURNS" \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -43,5 +43,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_length_ber.3 b/doc/man/asn1_get_length_ber.3 index ba2d0ba..4a9dce2 100644 --- a/doc/man/asn1_get_length_ber.3 +++ b/doc/man/asn1_get_length_ber.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_length_ber" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_length_ber" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_length_ber \- API function .SH SYNOPSIS @@ -23,7 +23,7 @@ the value was too big. .SH "SINCE" 2.0 .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -42,5 +42,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_length_der.3 b/doc/man/asn1_get_length_der.3 index 7a396ab..0e20dc9 100644 --- a/doc/man/asn1_get_length_der.3 +++ b/doc/man/asn1_get_length_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_length_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_length_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_length_der \- API function .SH SYNOPSIS @@ -20,7 +20,7 @@ Return the decoded length value, or \-1 on indefinite length, or \-2 when the value was too big to fit in a int, or \-4 when the decoded length value plus \fIlen\fP would exceed \fIder_len\fP . .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -39,5 +39,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_object_id_der.3 b/doc/man/asn1_get_object_id_der.3 index 35dd4b6..1f37377 100644 --- a/doc/man/asn1_get_object_id_der.3 +++ b/doc/man/asn1_get_object_id_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_object_id_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_object_id_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_object_id_der \- API function .SH SYNOPSIS @@ -23,7 +23,7 @@ function expects the DER object identifier without the tag. .SH "RETURNS" \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -42,5 +42,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_octet_der.3 b/doc/man/asn1_get_octet_der.3 index 8180a42..534e449 100644 --- a/doc/man/asn1_get_octet_der.3 +++ b/doc/man/asn1_get_octet_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_octet_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_octet_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_octet_der \- API function .SH SYNOPSIS @@ -26,7 +26,7 @@ content octets. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -45,5 +45,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_get_tag_der.3 b/doc/man/asn1_get_tag_der.3 index 88c882c..d91c1d5 100644 --- a/doc/man/asn1_get_tag_der.3 +++ b/doc/man/asn1_get_tag_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_get_tag_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_get_tag_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_get_tag_der \- API function .SH SYNOPSIS @@ -22,7 +22,7 @@ Decode the class and TAG from DER code. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -41,5 +41,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_length_der.3 b/doc/man/asn1_length_der.3 index b8646b1..a5a9926 100644 --- a/doc/man/asn1_length_der.3 +++ b/doc/man/asn1_length_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_length_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_length_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_length_der \- API function .SH SYNOPSIS @@ -20,7 +20,7 @@ length this function will encode is \fBASN1_MAX_LENGTH_SIZE\fP. To know the size of the DER encoding use a \fBNULL\fP value for \fIder\fP . .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -39,5 +39,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_number_of_elements.3 b/doc/man/asn1_number_of_elements.3 index 86fe2d1..f247a0e 100644 --- a/doc/man/asn1_number_of_elements.3 +++ b/doc/man/asn1_number_of_elements.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_number_of_elements" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_number_of_elements" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_number_of_elements \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_number_of_elements(asn1_node " element ", const char * " name ", int * " num ");" +.BI "int asn1_number_of_elements(asn1_node_const " element ", const char * " name ", int * " num ");" .SH ARGUMENTS -.IP "asn1_node element" 12 +.IP "asn1_node_const element" 12 pointer to the root of an ASN1 structure. .IP "const char * name" 12 the name of a sub\-structure of ROOT. @@ -20,7 +20,7 @@ names equal to "?1","?2", ... \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not known, \fBASN1_GENERIC_ERROR\fP if pointer \fInum\fP is \fBNULL\fP. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -39,5 +39,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_object_id_der.3 b/doc/man/asn1_object_id_der.3 new file mode 100644 index 0000000..da2188c --- /dev/null +++ b/doc/man/asn1_object_id_der.3 @@ -0,0 +1,45 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. +.TH "asn1_object_id_der" 3 "4.19.0" "libtasn1" "libtasn1" +.SH NAME +asn1_object_id_der \- API function +.SH SYNOPSIS +.B #include <libtasn1.h> +.sp +.BI "int asn1_object_id_der(const char * " str ", unsigned char * " der ", int * " der_len ", unsigned " flags ");" +.SH ARGUMENTS +.IP "const char * str" 12 +An object identifier in numeric, dot format. +.IP "unsigned char * der" 12 +buffer to hold the returned encoding (may be \fBNULL\fP). +.IP "int * der_len" 12 +initially the size of \fIder\fP ; will hold the final size. +.IP "unsigned flags" 12 +must be zero +.SH "DESCRIPTION" +Creates the DER encoding of the provided object identifier. +.SH "RETURNS" +\fBASN1_SUCCESS\fP if DER encoding was OK, \fBASN1_VALUE_NOT_VALID\fP +if \fIstr\fP is not a valid OID, \fBASN1_MEM_ERROR\fP if the \fIder\fP vector isn't big enough and in this case \fIder_len\fP will contain the +length needed. +.SH COPYRIGHT +Copyright \(co 2006-2022 Free Software Foundation, Inc.. +.br +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. +.SH "SEE ALSO" +The full documentation for +.B libtasn1 +is maintained as a Texinfo manual. If the +.B info +and +.B libtasn1 +programs are properly installed at your site, the command +.IP +.B info libtasn1 +.PP +should give you access to the complete manual. +As an alternative you may obtain the manual from: +.IP +.B https://www.gnu.org/software/libtasn1/manual/ +.PP diff --git a/doc/man/asn1_octet_der.3 b/doc/man/asn1_octet_der.3 index 6f0233d..8c7cc63 100644 --- a/doc/man/asn1_octet_der.3 +++ b/doc/man/asn1_octet_der.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_octet_der" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_octet_der" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_octet_der \- API function .SH SYNOPSIS @@ -26,7 +26,7 @@ that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -45,5 +45,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_parser2array.3 b/doc/man/asn1_parser2array.3 index 0b718b6..a1c493e 100644 --- a/doc/man/asn1_parser2array.3 +++ b/doc/man/asn1_parser2array.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_parser2array" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_parser2array" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_parser2array \- API function .SH SYNOPSIS @@ -31,10 +31,10 @@ identifier is known, \fBASN1_FILE_NOT_FOUND\fP if an error occurred while opening \fIinputFileName\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the -file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP +file there is an identifier with more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -53,5 +53,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_parser2tree.3 b/doc/man/asn1_parser2tree.3 index 361db5c..c593348 100644 --- a/doc/man/asn1_parser2tree.3 +++ b/doc/man/asn1_parser2tree.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_parser2tree" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_parser2tree" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_parser2tree \- API function .SH SYNOPSIS @@ -26,10 +26,10 @@ identifier is known, \fBASN1_ELEMENT_NOT_EMPTY\fP if \fIdefinitions\fP not opening \fIfile\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the -file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP +file there is an identifier with more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -48,5 +48,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_perror.3 b/doc/man/asn1_perror.3 index 12b47f6..6d82ed8 100644 --- a/doc/man/asn1_perror.3 +++ b/doc/man/asn1_perror.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_perror" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_perror" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_perror \- API function .SH SYNOPSIS @@ -16,7 +16,7 @@ an error returned by a libtasn1 function. .SH "SINCE" 1.6 .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -35,5 +35,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_print_structure.3 b/doc/man/asn1_print_structure.3 index 32cb706..3bcf1c3 100644 --- a/doc/man/asn1_print_structure.3 +++ b/doc/man/asn1_print_structure.3 @@ -1,15 +1,15 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_print_structure" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_print_structure" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_print_structure \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "void asn1_print_structure(FILE * " out ", asn1_node " structure ", const char * " name ", int " mode ");" +.BI "void asn1_print_structure(FILE * " out ", asn1_node_const " structure ", const char * " name ", int " mode ");" .SH ARGUMENTS .IP "FILE * out" 12 pointer to the output file (e.g. stdout). -.IP "asn1_node structure" 12 +.IP "asn1_node_const structure" 12 pointer to the structure that you want to visit. .IP "const char * name" 12 an element of the structure @@ -21,7 +21,7 @@ specify how much of the structure to print, can be Prints on the \fIout\fP file descriptor the structure's tree starting from the \fIname\fP element inside the structure \fIstructure\fP . .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -40,5 +40,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_read_node_value.3 b/doc/man/asn1_read_node_value.3 index 5ba1925..b7a7bc3 100644 --- a/doc/man/asn1_read_node_value.3 +++ b/doc/man/asn1_read_node_value.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_read_node_value" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_read_node_value" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_read_node_value \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_read_node_value(asn1_node " node ", asn1_data_node_st * " data ");" +.BI "int asn1_read_node_value(asn1_node_const " node ", asn1_data_node_st * " data ");" .SH ARGUMENTS -.IP "asn1_node node" 12 +.IP "asn1_node_const node" 12 pointer to a node. .IP "asn1_data_node_st * data" 12 a point to a asn1_data_node_st @@ -17,7 +17,7 @@ The data returned should be handled as constant values. .SH "RETURNS" \fBASN1_SUCCESS\fP if the node exists. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -36,5 +36,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_read_tag.3 b/doc/man/asn1_read_tag.3 index 2ab97cd..1b21248 100644 --- a/doc/man/asn1_read_tag.3 +++ b/doc/man/asn1_read_tag.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_read_tag" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_read_tag" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_read_tag \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_read_tag(asn1_node " root ", const char * " name ", int * " tagValue ", int * " classValue ");" +.BI "int asn1_read_tag(asn1_node_const " root ", const char * " name ", int * " tagValue ", int * " classValue ");" .SH ARGUMENTS -.IP "asn1_node root" 12 +.IP "asn1_node_const root" 12 pointer to a structure .IP "const char * name" 12 the name of the element inside a structure. @@ -24,7 +24,7 @@ CLASS can have one of these constants: \fBASN1_CLASS_APPLICATION\fP, \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -43,5 +43,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_read_value.3 b/doc/man/asn1_read_value.3 index 62ebe39..7ccb411 100644 --- a/doc/man/asn1_read_value.3 +++ b/doc/man/asn1_read_value.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_read_value" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_read_value" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_read_value \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_read_value(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ");" +.BI "int asn1_read_value(asn1_node_const " root ", const char * " name ", void * " ivalue ", int * " len ");" .SH ARGUMENTS -.IP "asn1_node root" 12 +.IP "asn1_node_const root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. @@ -75,7 +75,7 @@ to store the result, and in this case \fIlen\fP will contain the number of bytes needed. On the occasion that the stored data are of zero\-length this function may return \fBASN1_SUCCESS\fP even if the provided \fIlen\fP is zero. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -94,5 +94,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_read_value_type.3 b/doc/man/asn1_read_value_type.3 index e147c85..ec9856c 100644 --- a/doc/man/asn1_read_value_type.3 +++ b/doc/man/asn1_read_value_type.3 @@ -1,13 +1,13 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_read_value_type" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_read_value_type" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_read_value_type \- API function .SH SYNOPSIS .B #include <libtasn1.h> .sp -.BI "int asn1_read_value_type(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ", unsigned int * " etype ");" +.BI "int asn1_read_value_type(asn1_node_const " root ", const char * " name ", void * " ivalue ", int * " len ", unsigned int * " etype ");" .SH ARGUMENTS -.IP "asn1_node root" 12 +.IP "asn1_node_const root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. @@ -77,7 +77,7 @@ to store the result, and in this case \fIlen\fP will contain the number of bytes needed. On the occasion that the stored data are of zero\-length this function may return \fBASN1_SUCCESS\fP even if the provided \fIlen\fP is zero. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -96,5 +96,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_strerror.3 b/doc/man/asn1_strerror.3 index 4d1840e..c7f305e 100644 --- a/doc/man/asn1_strerror.3 +++ b/doc/man/asn1_strerror.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_strerror" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_strerror" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_strerror \- API function .SH SYNOPSIS @@ -19,7 +19,7 @@ code. .SH "SINCE" 1.6 .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -38,5 +38,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/man/asn1_write_value.3 b/doc/man/asn1_write_value.3 index f560ef1..00f004a 100644 --- a/doc/man/asn1_write_value.3 +++ b/doc/man/asn1_write_value.3 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by gdoc. -.TH "asn1_write_value" 3 "4.13" "libtasn1" "libtasn1" +.TH "asn1_write_value" 3 "4.19.0" "libtasn1" "libtasn1" .SH NAME asn1_write_value \- API function .SH SYNOPSIS @@ -115,7 +115,7 @@ result=asn1_write_value(cert, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, and \fBASN1_VALUE_NOT_VALID\fP if \fIivalue\fP has a wrong format. .SH COPYRIGHT -Copyright \(co 2006-2015 Free Software Foundation, Inc.. +Copyright \(co 2006-2022 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -134,5 +134,5 @@ programs are properly installed at your site, the command should give you access to the complete manual. As an alternative you may obtain the manual from: .IP -.B http://www.gnu.org/software/libtasn1/manual/ +.B https://www.gnu.org/software/libtasn1/manual/ .PP diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am index ef6bf98..7c2dfb8 100644 --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -42,14 +42,14 @@ DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk -DOC_SOURCE_DIR=$(top_srcdir)/lib +DOC_SOURCE_DIR=$(top_srcdir)/lib $(top_builddir)/lib # Extra options to pass to gtkdoc-scangobj. Normally not needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -SCAN_OPTIONS=--ignore-decorators=ASN1_API +SCAN_OPTIONS=--ignore-decorators=ASN1_API --deprecated-guards="ASN1_DISABLE_DEPRECATED" # Extra options to supply to gtkdoc-mkdb # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml @@ -65,7 +65,7 @@ FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -HFILE_GLOB=$(top_srcdir)/lib/*.h +HFILE_GLOB=$(top_srcdir)/lib/*.h $(top_builddir)/lib/includes/libtasn1.h CFILE_GLOB=$(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR @@ -74,7 +74,7 @@ EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -IGNORE_HFILES=element.h gstr.h int.h parser_aux.h structure.h gllib +IGNORE_HFILES=element.h gstr.h int.h parser_aux.h structure.h gl # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png @@ -84,7 +84,7 @@ HTML_IMAGES= # e.g. content_files=running.xml building.xml changes-2.0.xml content_files= -# Files where gtk-doc abbrevations (#GtkWidget) are expanded +# Files where gtk-doc abbreviations (#GtkWidget) are expanded # e.g. expand_content_files=running.xml expand_content_files= @@ -109,3 +109,18 @@ TESTS_ENVIRONMENT = \ endif -include $(top_srcdir)/git.mk + +html-build.stamp: $(top_builddir)/.version +pdf-build.stamp: $(top_builddir)/.version + +CLEANFILES ?= +CLEANFILES += $(PACKAGE)-overrides.txt +CLEANFILES += $(PACKAGE)-decl.txt $(PACKAGE)-decl-list.txt +CLEANFILES += $(PACKAGE)-sections.txt $(PACKAGE).pdf + +clean-local: clean-local-junk +.PHONY: clean-local-junk +clean-local-junk: + -rm -rf xml html tmpl + +dist-hook-local: all-local diff --git a/doc/reference/Makefile.in b/doc/reference/Makefile.in index 4bdd9b2..4adb258 100644 --- a/doc/reference/Makefile.in +++ b/doc/reference/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -144,36 +144,85 @@ build_triplet = @build@ host_triplet = @host@ subdir = doc/reference ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/src/gl/m4/alloca.m4 \ + $(top_srcdir)/src/gl/m4/clock_time.m4 \ + $(top_srcdir)/src/gl/m4/close.m4 \ + $(top_srcdir)/src/gl/m4/dup2.m4 \ + $(top_srcdir)/src/gl/m4/eealloc.m4 \ + $(top_srcdir)/src/gl/m4/errno_h.m4 \ + $(top_srcdir)/src/gl/m4/explicit_bzero.m4 \ + $(top_srcdir)/src/gl/m4/fcntl-o.m4 \ + $(top_srcdir)/src/gl/m4/fcntl.m4 \ + $(top_srcdir)/src/gl/m4/fcntl_h.m4 \ + $(top_srcdir)/src/gl/m4/fopen.m4 \ + $(top_srcdir)/src/gl/m4/free.m4 \ + $(top_srcdir)/src/gl/m4/fseeko.m4 \ + $(top_srcdir)/src/gl/m4/fstat.m4 \ + $(top_srcdir)/src/gl/m4/ftell.m4 \ + $(top_srcdir)/src/gl/m4/ftello.m4 \ + $(top_srcdir)/src/gl/m4/getdtablesize.m4 \ + $(top_srcdir)/src/gl/m4/getopt.m4 \ + $(top_srcdir)/src/gl/m4/gettime.m4 \ + $(top_srcdir)/src/gl/m4/gettimeofday.m4 \ + $(top_srcdir)/src/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/src/gl/m4/inttypes.m4 \ + $(top_srcdir)/src/gl/m4/largefile.m4 \ + $(top_srcdir)/src/gl/m4/lseek.m4 \ + $(top_srcdir)/src/gl/m4/malloc.m4 \ + $(top_srcdir)/src/gl/m4/malloca.m4 \ + $(top_srcdir)/src/gl/m4/mode_t.m4 \ + $(top_srcdir)/src/gl/m4/msvc-inval.m4 \ + $(top_srcdir)/src/gl/m4/msvc-nothrow.m4 \ + $(top_srcdir)/src/gl/m4/nocrash.m4 \ + $(top_srcdir)/src/gl/m4/open-cloexec.m4 \ + $(top_srcdir)/src/gl/m4/open-slash.m4 \ + $(top_srcdir)/src/gl/m4/open.m4 \ + $(top_srcdir)/src/gl/m4/pathmax.m4 \ + $(top_srcdir)/src/gl/m4/read-file.m4 \ + $(top_srcdir)/src/gl/m4/realloc.m4 \ + $(top_srcdir)/src/gl/m4/stat-time.m4 \ + $(top_srcdir)/src/gl/m4/stat.m4 \ + $(top_srcdir)/src/gl/m4/stdarg.m4 \ + $(top_srcdir)/src/gl/m4/stdio_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_socket_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_stat_h.m4 \ + $(top_srcdir)/src/gl/m4/sys_time_h.m4 \ + $(top_srcdir)/src/gl/m4/time_h.m4 \ + $(top_srcdir)/src/gl/m4/timespec.m4 \ + $(top_srcdir)/src/gl/m4/ungetc.m4 \ + $(top_srcdir)/src/gl/m4/version-etc.m4 \ + $(top_srcdir)/src/gl/m4/wchar_h.m4 \ + $(top_srcdir)/src/gl/m4/year2038.m4 \ + $(top_srcdir)/m4/00gnulib.m4 $(top_srcdir)/m4/__inline.m4 \ + $(top_srcdir)/m4/absolute-header.m4 \ + $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_file_escapes.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/extensions.m4 \ + $(top_srcdir)/m4/extern-inline.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/include_next.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 \ + $(top_srcdir)/m4/ld-version-script.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/limits-h.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4-gl/00gnulib.m4 \ - $(top_srcdir)/m4-gl/__inline.m4 \ - $(top_srcdir)/m4-gl/absolute-header.m4 \ - $(top_srcdir)/m4-gl/extensions.m4 \ - $(top_srcdir)/m4-gl/extern-inline.m4 \ - $(top_srcdir)/m4-gl/gnulib-common.m4 \ - $(top_srcdir)/m4-gl/gnulib-comp.m4 \ - $(top_srcdir)/m4-gl/include_next.m4 \ - $(top_srcdir)/m4-gl/ld-version-script.m4 \ - $(top_srcdir)/m4-gl/limits-h.m4 \ - $(top_srcdir)/m4-gl/longlong.m4 $(top_srcdir)/m4-gl/minmax.m4 \ - $(top_srcdir)/m4-gl/multiarch.m4 $(top_srcdir)/m4-gl/off_t.m4 \ - $(top_srcdir)/m4-gl/ssize_t.m4 $(top_srcdir)/m4-gl/stddef_h.m4 \ - $(top_srcdir)/m4-gl/stdint.m4 $(top_srcdir)/m4-gl/string_h.m4 \ - $(top_srcdir)/m4-gl/strverscmp.m4 \ - $(top_srcdir)/m4-gl/sys_types_h.m4 \ - $(top_srcdir)/m4-gl/valgrind-tests.m4 \ - $(top_srcdir)/m4-gl/visibility.m4 \ - $(top_srcdir)/m4-gl/warn-on-use.m4 \ - $(top_srcdir)/m4-gl/wchar_t.m4 $(top_srcdir)/m4-gl/wint_t.m4 \ + $(top_srcdir)/m4/manywarnings.m4 $(top_srcdir)/m4/minmax.m4 \ + $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/off_t.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/ssize_t.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \ + $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdlib_h.m4 \ + $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strverscmp.m4 \ + $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \ + $(top_srcdir)/m4/valgrind-tests.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -205,16 +254,15 @@ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/gtk-doc.make DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_VALGRINDFLAGS = @AM_VALGRINDFLAGS@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ -ASN1_VERSION_MAJOR = @ASN1_VERSION_MAJOR@ -ASN1_VERSION_MINOR = @ASN1_VERSION_MINOR@ -ASN1_VERSION_NUMBER = @ASN1_VERSION_NUMBER@ -ASN1_VERSION_PATCH = @ASN1_VERSION_PATCH@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -236,7 +284,10 @@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ +DEFAULT_VALGRINDFLAGS = @DEFAULT_VALGRINDFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ @@ -246,49 +297,523 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FUZZ_LIBS = @FUZZ_LIBS@ GCOV = @GCOV@ GENHTML = @GENHTML@ -GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ +GETOPT_H = @GETOPT_H@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_CXXFLAG_ALLOW_WARNINGS = @GL_CXXFLAG_ALLOW_WARNINGS@ +GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ +GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ +GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ +GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ +GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ +GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ +GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ +GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ +GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ +GL_GNULIB_DUP = @GL_GNULIB_DUP@ +GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ +GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ +GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ +GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ +GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ +GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ +GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ +GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ +GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ +GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ +GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ +GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ +GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ +GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ +GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ +GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ +GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ +GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ +GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ +GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ +GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ +GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ +GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ +GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ +GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ +GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ +GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ +GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ +GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ +GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ +GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ +GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ +GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ +GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ +GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ +GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ +GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ +GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ +GL_GNULIB_LINK = @GL_GNULIB_LINK@ +GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ +GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ +GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ +GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ +GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ +GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ +GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ +GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ +GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ +GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ +GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ +GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ +GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ +GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ +GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ +GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ +GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ +GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ +GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ +GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ +GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ +GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ +GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ +GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ +GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ +GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ +GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ +GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ +GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ +GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ +GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ +GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ +GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ +GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ +GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ +GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ +GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ +GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ +GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ +GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ +GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ +GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ +GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ +GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ +GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ +GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ +GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ +GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ +GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ +GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ +GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ +GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ +GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ +GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ +GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ +GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ +GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ +GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ +GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ +GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ +GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ +GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ +GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ +GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ +GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ +GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ +GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ +GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ +GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ +GL_GNULIB_READ = @GL_GNULIB_READ@ +GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ +GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ +GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ +GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ +GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ +GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ +GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ +GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ +GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ +GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ +GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ +GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ +GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ +GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ +GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ +GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ +GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ +GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ +GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ +GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ +GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ +GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ +GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ +GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ +GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ +GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ +GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ +GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ +GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ +GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ +GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ +GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ +GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ +GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ +GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ +GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ +GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ +GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ +GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ +GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ +GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ +GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ +GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ +GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ +GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ +GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ +GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ +GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ +GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ +GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ +GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ +GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ +GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ +GL_SGL_GNULIB_ACCESS = @GL_SGL_GNULIB_ACCESS@ +GL_SGL_GNULIB_ALIGNED_ALLOC = @GL_SGL_GNULIB_ALIGNED_ALLOC@ +GL_SGL_GNULIB_ATOLL = @GL_SGL_GNULIB_ATOLL@ +GL_SGL_GNULIB_BTOWC = @GL_SGL_GNULIB_BTOWC@ +GL_SGL_GNULIB_CALLOC_GNU = @GL_SGL_GNULIB_CALLOC_GNU@ +GL_SGL_GNULIB_CALLOC_POSIX = @GL_SGL_GNULIB_CALLOC_POSIX@ +GL_SGL_GNULIB_CANONICALIZE_FILE_NAME = @GL_SGL_GNULIB_CANONICALIZE_FILE_NAME@ +GL_SGL_GNULIB_CHDIR = @GL_SGL_GNULIB_CHDIR@ +GL_SGL_GNULIB_CHMOD = @GL_SGL_GNULIB_CHMOD@ +GL_SGL_GNULIB_CHOWN = @GL_SGL_GNULIB_CHOWN@ +GL_SGL_GNULIB_CLOSE = @GL_SGL_GNULIB_CLOSE@ +GL_SGL_GNULIB_COPY_FILE_RANGE = @GL_SGL_GNULIB_COPY_FILE_RANGE@ +GL_SGL_GNULIB_CREAT = @GL_SGL_GNULIB_CREAT@ +GL_SGL_GNULIB_CTIME = @GL_SGL_GNULIB_CTIME@ +GL_SGL_GNULIB_DPRINTF = @GL_SGL_GNULIB_DPRINTF@ +GL_SGL_GNULIB_DUP = @GL_SGL_GNULIB_DUP@ +GL_SGL_GNULIB_DUP2 = @GL_SGL_GNULIB_DUP2@ +GL_SGL_GNULIB_DUP3 = @GL_SGL_GNULIB_DUP3@ +GL_SGL_GNULIB_ENVIRON = @GL_SGL_GNULIB_ENVIRON@ +GL_SGL_GNULIB_EUIDACCESS = @GL_SGL_GNULIB_EUIDACCESS@ +GL_SGL_GNULIB_EXECL = @GL_SGL_GNULIB_EXECL@ +GL_SGL_GNULIB_EXECLE = @GL_SGL_GNULIB_EXECLE@ +GL_SGL_GNULIB_EXECLP = @GL_SGL_GNULIB_EXECLP@ +GL_SGL_GNULIB_EXECV = @GL_SGL_GNULIB_EXECV@ +GL_SGL_GNULIB_EXECVE = @GL_SGL_GNULIB_EXECVE@ +GL_SGL_GNULIB_EXECVP = @GL_SGL_GNULIB_EXECVP@ +GL_SGL_GNULIB_EXECVPE = @GL_SGL_GNULIB_EXECVPE@ +GL_SGL_GNULIB_EXPLICIT_BZERO = @GL_SGL_GNULIB_EXPLICIT_BZERO@ +GL_SGL_GNULIB_FACCESSAT = @GL_SGL_GNULIB_FACCESSAT@ +GL_SGL_GNULIB_FCHDIR = @GL_SGL_GNULIB_FCHDIR@ +GL_SGL_GNULIB_FCHMODAT = @GL_SGL_GNULIB_FCHMODAT@ +GL_SGL_GNULIB_FCHOWNAT = @GL_SGL_GNULIB_FCHOWNAT@ +GL_SGL_GNULIB_FCLOSE = @GL_SGL_GNULIB_FCLOSE@ +GL_SGL_GNULIB_FCNTL = @GL_SGL_GNULIB_FCNTL@ +GL_SGL_GNULIB_FDATASYNC = @GL_SGL_GNULIB_FDATASYNC@ +GL_SGL_GNULIB_FDOPEN = @GL_SGL_GNULIB_FDOPEN@ +GL_SGL_GNULIB_FFLUSH = @GL_SGL_GNULIB_FFLUSH@ +GL_SGL_GNULIB_FFSL = @GL_SGL_GNULIB_FFSL@ +GL_SGL_GNULIB_FFSLL = @GL_SGL_GNULIB_FFSLL@ +GL_SGL_GNULIB_FGETC = @GL_SGL_GNULIB_FGETC@ +GL_SGL_GNULIB_FGETS = @GL_SGL_GNULIB_FGETS@ +GL_SGL_GNULIB_FOPEN = @GL_SGL_GNULIB_FOPEN@ +GL_SGL_GNULIB_FOPEN_GNU = @GL_SGL_GNULIB_FOPEN_GNU@ +GL_SGL_GNULIB_FPRINTF = @GL_SGL_GNULIB_FPRINTF@ +GL_SGL_GNULIB_FPRINTF_POSIX = @GL_SGL_GNULIB_FPRINTF_POSIX@ +GL_SGL_GNULIB_FPURGE = @GL_SGL_GNULIB_FPURGE@ +GL_SGL_GNULIB_FPUTC = @GL_SGL_GNULIB_FPUTC@ +GL_SGL_GNULIB_FPUTS = @GL_SGL_GNULIB_FPUTS@ +GL_SGL_GNULIB_FREAD = @GL_SGL_GNULIB_FREAD@ +GL_SGL_GNULIB_FREE_POSIX = @GL_SGL_GNULIB_FREE_POSIX@ +GL_SGL_GNULIB_FREOPEN = @GL_SGL_GNULIB_FREOPEN@ +GL_SGL_GNULIB_FSCANF = @GL_SGL_GNULIB_FSCANF@ +GL_SGL_GNULIB_FSEEK = @GL_SGL_GNULIB_FSEEK@ +GL_SGL_GNULIB_FSEEKO = @GL_SGL_GNULIB_FSEEKO@ +GL_SGL_GNULIB_FSTAT = @GL_SGL_GNULIB_FSTAT@ +GL_SGL_GNULIB_FSTATAT = @GL_SGL_GNULIB_FSTATAT@ +GL_SGL_GNULIB_FSYNC = @GL_SGL_GNULIB_FSYNC@ +GL_SGL_GNULIB_FTELL = @GL_SGL_GNULIB_FTELL@ +GL_SGL_GNULIB_FTELLO = @GL_SGL_GNULIB_FTELLO@ +GL_SGL_GNULIB_FTRUNCATE = @GL_SGL_GNULIB_FTRUNCATE@ +GL_SGL_GNULIB_FUTIMENS = @GL_SGL_GNULIB_FUTIMENS@ +GL_SGL_GNULIB_FWRITE = @GL_SGL_GNULIB_FWRITE@ +GL_SGL_GNULIB_GETC = @GL_SGL_GNULIB_GETC@ +GL_SGL_GNULIB_GETCHAR = @GL_SGL_GNULIB_GETCHAR@ +GL_SGL_GNULIB_GETCWD = @GL_SGL_GNULIB_GETCWD@ +GL_SGL_GNULIB_GETDELIM = @GL_SGL_GNULIB_GETDELIM@ +GL_SGL_GNULIB_GETDOMAINNAME = @GL_SGL_GNULIB_GETDOMAINNAME@ +GL_SGL_GNULIB_GETDTABLESIZE = @GL_SGL_GNULIB_GETDTABLESIZE@ +GL_SGL_GNULIB_GETENTROPY = @GL_SGL_GNULIB_GETENTROPY@ +GL_SGL_GNULIB_GETGROUPS = @GL_SGL_GNULIB_GETGROUPS@ +GL_SGL_GNULIB_GETHOSTNAME = @GL_SGL_GNULIB_GETHOSTNAME@ +GL_SGL_GNULIB_GETLINE = @GL_SGL_GNULIB_GETLINE@ +GL_SGL_GNULIB_GETLOADAVG = @GL_SGL_GNULIB_GETLOADAVG@ +GL_SGL_GNULIB_GETLOGIN = @GL_SGL_GNULIB_GETLOGIN@ +GL_SGL_GNULIB_GETLOGIN_R = @GL_SGL_GNULIB_GETLOGIN_R@ +GL_SGL_GNULIB_GETOPT_POSIX = @GL_SGL_GNULIB_GETOPT_POSIX@ +GL_SGL_GNULIB_GETPAGESIZE = @GL_SGL_GNULIB_GETPAGESIZE@ +GL_SGL_GNULIB_GETPASS = @GL_SGL_GNULIB_GETPASS@ +GL_SGL_GNULIB_GETPASS_GNU = @GL_SGL_GNULIB_GETPASS_GNU@ +GL_SGL_GNULIB_GETSUBOPT = @GL_SGL_GNULIB_GETSUBOPT@ +GL_SGL_GNULIB_GETTIMEOFDAY = @GL_SGL_GNULIB_GETTIMEOFDAY@ +GL_SGL_GNULIB_GETUMASK = @GL_SGL_GNULIB_GETUMASK@ +GL_SGL_GNULIB_GETUSERSHELL = @GL_SGL_GNULIB_GETUSERSHELL@ +GL_SGL_GNULIB_GRANTPT = @GL_SGL_GNULIB_GRANTPT@ +GL_SGL_GNULIB_GROUP_MEMBER = @GL_SGL_GNULIB_GROUP_MEMBER@ +GL_SGL_GNULIB_IMAXABS = @GL_SGL_GNULIB_IMAXABS@ +GL_SGL_GNULIB_IMAXDIV = @GL_SGL_GNULIB_IMAXDIV@ +GL_SGL_GNULIB_ISATTY = @GL_SGL_GNULIB_ISATTY@ +GL_SGL_GNULIB_LCHMOD = @GL_SGL_GNULIB_LCHMOD@ +GL_SGL_GNULIB_LCHOWN = @GL_SGL_GNULIB_LCHOWN@ +GL_SGL_GNULIB_LINK = @GL_SGL_GNULIB_LINK@ +GL_SGL_GNULIB_LINKAT = @GL_SGL_GNULIB_LINKAT@ +GL_SGL_GNULIB_LOCALTIME = @GL_SGL_GNULIB_LOCALTIME@ +GL_SGL_GNULIB_LSEEK = @GL_SGL_GNULIB_LSEEK@ +GL_SGL_GNULIB_LSTAT = @GL_SGL_GNULIB_LSTAT@ +GL_SGL_GNULIB_MALLOC_GNU = @GL_SGL_GNULIB_MALLOC_GNU@ +GL_SGL_GNULIB_MALLOC_POSIX = @GL_SGL_GNULIB_MALLOC_POSIX@ +GL_SGL_GNULIB_MBRLEN = @GL_SGL_GNULIB_MBRLEN@ +GL_SGL_GNULIB_MBRTOWC = @GL_SGL_GNULIB_MBRTOWC@ +GL_SGL_GNULIB_MBSCASECMP = @GL_SGL_GNULIB_MBSCASECMP@ +GL_SGL_GNULIB_MBSCASESTR = @GL_SGL_GNULIB_MBSCASESTR@ +GL_SGL_GNULIB_MBSCHR = @GL_SGL_GNULIB_MBSCHR@ +GL_SGL_GNULIB_MBSCSPN = @GL_SGL_GNULIB_MBSCSPN@ +GL_SGL_GNULIB_MBSINIT = @GL_SGL_GNULIB_MBSINIT@ +GL_SGL_GNULIB_MBSLEN = @GL_SGL_GNULIB_MBSLEN@ +GL_SGL_GNULIB_MBSNCASECMP = @GL_SGL_GNULIB_MBSNCASECMP@ +GL_SGL_GNULIB_MBSNLEN = @GL_SGL_GNULIB_MBSNLEN@ +GL_SGL_GNULIB_MBSNRTOWCS = @GL_SGL_GNULIB_MBSNRTOWCS@ +GL_SGL_GNULIB_MBSPBRK = @GL_SGL_GNULIB_MBSPBRK@ +GL_SGL_GNULIB_MBSPCASECMP = @GL_SGL_GNULIB_MBSPCASECMP@ +GL_SGL_GNULIB_MBSRCHR = @GL_SGL_GNULIB_MBSRCHR@ +GL_SGL_GNULIB_MBSRTOWCS = @GL_SGL_GNULIB_MBSRTOWCS@ +GL_SGL_GNULIB_MBSSEP = @GL_SGL_GNULIB_MBSSEP@ +GL_SGL_GNULIB_MBSSPN = @GL_SGL_GNULIB_MBSSPN@ +GL_SGL_GNULIB_MBSSTR = @GL_SGL_GNULIB_MBSSTR@ +GL_SGL_GNULIB_MBSTOK_R = @GL_SGL_GNULIB_MBSTOK_R@ +GL_SGL_GNULIB_MBTOWC = @GL_SGL_GNULIB_MBTOWC@ +GL_SGL_GNULIB_MDA_ACCESS = @GL_SGL_GNULIB_MDA_ACCESS@ +GL_SGL_GNULIB_MDA_CHDIR = @GL_SGL_GNULIB_MDA_CHDIR@ +GL_SGL_GNULIB_MDA_CHMOD = @GL_SGL_GNULIB_MDA_CHMOD@ +GL_SGL_GNULIB_MDA_CLOSE = @GL_SGL_GNULIB_MDA_CLOSE@ +GL_SGL_GNULIB_MDA_CREAT = @GL_SGL_GNULIB_MDA_CREAT@ +GL_SGL_GNULIB_MDA_DUP = @GL_SGL_GNULIB_MDA_DUP@ +GL_SGL_GNULIB_MDA_DUP2 = @GL_SGL_GNULIB_MDA_DUP2@ +GL_SGL_GNULIB_MDA_ECVT = @GL_SGL_GNULIB_MDA_ECVT@ +GL_SGL_GNULIB_MDA_EXECL = @GL_SGL_GNULIB_MDA_EXECL@ +GL_SGL_GNULIB_MDA_EXECLE = @GL_SGL_GNULIB_MDA_EXECLE@ +GL_SGL_GNULIB_MDA_EXECLP = @GL_SGL_GNULIB_MDA_EXECLP@ +GL_SGL_GNULIB_MDA_EXECV = @GL_SGL_GNULIB_MDA_EXECV@ +GL_SGL_GNULIB_MDA_EXECVE = @GL_SGL_GNULIB_MDA_EXECVE@ +GL_SGL_GNULIB_MDA_EXECVP = @GL_SGL_GNULIB_MDA_EXECVP@ +GL_SGL_GNULIB_MDA_EXECVPE = @GL_SGL_GNULIB_MDA_EXECVPE@ +GL_SGL_GNULIB_MDA_FCLOSEALL = @GL_SGL_GNULIB_MDA_FCLOSEALL@ +GL_SGL_GNULIB_MDA_FCVT = @GL_SGL_GNULIB_MDA_FCVT@ +GL_SGL_GNULIB_MDA_FDOPEN = @GL_SGL_GNULIB_MDA_FDOPEN@ +GL_SGL_GNULIB_MDA_FILENO = @GL_SGL_GNULIB_MDA_FILENO@ +GL_SGL_GNULIB_MDA_GCVT = @GL_SGL_GNULIB_MDA_GCVT@ +GL_SGL_GNULIB_MDA_GETCWD = @GL_SGL_GNULIB_MDA_GETCWD@ +GL_SGL_GNULIB_MDA_GETPID = @GL_SGL_GNULIB_MDA_GETPID@ +GL_SGL_GNULIB_MDA_GETW = @GL_SGL_GNULIB_MDA_GETW@ +GL_SGL_GNULIB_MDA_ISATTY = @GL_SGL_GNULIB_MDA_ISATTY@ +GL_SGL_GNULIB_MDA_LSEEK = @GL_SGL_GNULIB_MDA_LSEEK@ +GL_SGL_GNULIB_MDA_MEMCCPY = @GL_SGL_GNULIB_MDA_MEMCCPY@ +GL_SGL_GNULIB_MDA_MKDIR = @GL_SGL_GNULIB_MDA_MKDIR@ +GL_SGL_GNULIB_MDA_MKTEMP = @GL_SGL_GNULIB_MDA_MKTEMP@ +GL_SGL_GNULIB_MDA_OPEN = @GL_SGL_GNULIB_MDA_OPEN@ +GL_SGL_GNULIB_MDA_PUTENV = @GL_SGL_GNULIB_MDA_PUTENV@ +GL_SGL_GNULIB_MDA_PUTW = @GL_SGL_GNULIB_MDA_PUTW@ +GL_SGL_GNULIB_MDA_READ = @GL_SGL_GNULIB_MDA_READ@ +GL_SGL_GNULIB_MDA_RMDIR = @GL_SGL_GNULIB_MDA_RMDIR@ +GL_SGL_GNULIB_MDA_STRDUP = @GL_SGL_GNULIB_MDA_STRDUP@ +GL_SGL_GNULIB_MDA_SWAB = @GL_SGL_GNULIB_MDA_SWAB@ +GL_SGL_GNULIB_MDA_TEMPNAM = @GL_SGL_GNULIB_MDA_TEMPNAM@ +GL_SGL_GNULIB_MDA_TZSET = @GL_SGL_GNULIB_MDA_TZSET@ +GL_SGL_GNULIB_MDA_UMASK = @GL_SGL_GNULIB_MDA_UMASK@ +GL_SGL_GNULIB_MDA_UNLINK = @GL_SGL_GNULIB_MDA_UNLINK@ +GL_SGL_GNULIB_MDA_WCSDUP = @GL_SGL_GNULIB_MDA_WCSDUP@ +GL_SGL_GNULIB_MDA_WRITE = @GL_SGL_GNULIB_MDA_WRITE@ +GL_SGL_GNULIB_MEMCHR = @GL_SGL_GNULIB_MEMCHR@ +GL_SGL_GNULIB_MEMMEM = @GL_SGL_GNULIB_MEMMEM@ +GL_SGL_GNULIB_MEMPCPY = @GL_SGL_GNULIB_MEMPCPY@ +GL_SGL_GNULIB_MEMRCHR = @GL_SGL_GNULIB_MEMRCHR@ +GL_SGL_GNULIB_MKDIR = @GL_SGL_GNULIB_MKDIR@ +GL_SGL_GNULIB_MKDIRAT = @GL_SGL_GNULIB_MKDIRAT@ +GL_SGL_GNULIB_MKDTEMP = @GL_SGL_GNULIB_MKDTEMP@ +GL_SGL_GNULIB_MKFIFO = @GL_SGL_GNULIB_MKFIFO@ +GL_SGL_GNULIB_MKFIFOAT = @GL_SGL_GNULIB_MKFIFOAT@ +GL_SGL_GNULIB_MKNOD = @GL_SGL_GNULIB_MKNOD@ +GL_SGL_GNULIB_MKNODAT = @GL_SGL_GNULIB_MKNODAT@ +GL_SGL_GNULIB_MKOSTEMP = @GL_SGL_GNULIB_MKOSTEMP@ +GL_SGL_GNULIB_MKOSTEMPS = @GL_SGL_GNULIB_MKOSTEMPS@ +GL_SGL_GNULIB_MKSTEMP = @GL_SGL_GNULIB_MKSTEMP@ +GL_SGL_GNULIB_MKSTEMPS = @GL_SGL_GNULIB_MKSTEMPS@ +GL_SGL_GNULIB_MKTIME = @GL_SGL_GNULIB_MKTIME@ +GL_SGL_GNULIB_NANOSLEEP = @GL_SGL_GNULIB_NANOSLEEP@ +GL_SGL_GNULIB_NONBLOCKING = @GL_SGL_GNULIB_NONBLOCKING@ +GL_SGL_GNULIB_OBSTACK_PRINTF = @GL_SGL_GNULIB_OBSTACK_PRINTF@ +GL_SGL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_SGL_GNULIB_OBSTACK_PRINTF_POSIX@ +GL_SGL_GNULIB_OPEN = @GL_SGL_GNULIB_OPEN@ +GL_SGL_GNULIB_OPENAT = @GL_SGL_GNULIB_OPENAT@ +GL_SGL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_SGL_GNULIB_OVERRIDES_STRUCT_STAT@ +GL_SGL_GNULIB_PCLOSE = @GL_SGL_GNULIB_PCLOSE@ +GL_SGL_GNULIB_PERROR = @GL_SGL_GNULIB_PERROR@ +GL_SGL_GNULIB_PIPE = @GL_SGL_GNULIB_PIPE@ +GL_SGL_GNULIB_PIPE2 = @GL_SGL_GNULIB_PIPE2@ +GL_SGL_GNULIB_POPEN = @GL_SGL_GNULIB_POPEN@ +GL_SGL_GNULIB_POSIX_MEMALIGN = @GL_SGL_GNULIB_POSIX_MEMALIGN@ +GL_SGL_GNULIB_POSIX_OPENPT = @GL_SGL_GNULIB_POSIX_OPENPT@ +GL_SGL_GNULIB_PREAD = @GL_SGL_GNULIB_PREAD@ +GL_SGL_GNULIB_PRINTF = @GL_SGL_GNULIB_PRINTF@ +GL_SGL_GNULIB_PRINTF_POSIX = @GL_SGL_GNULIB_PRINTF_POSIX@ +GL_SGL_GNULIB_PTSNAME = @GL_SGL_GNULIB_PTSNAME@ +GL_SGL_GNULIB_PTSNAME_R = @GL_SGL_GNULIB_PTSNAME_R@ +GL_SGL_GNULIB_PUTC = @GL_SGL_GNULIB_PUTC@ +GL_SGL_GNULIB_PUTCHAR = @GL_SGL_GNULIB_PUTCHAR@ +GL_SGL_GNULIB_PUTENV = @GL_SGL_GNULIB_PUTENV@ +GL_SGL_GNULIB_PUTS = @GL_SGL_GNULIB_PUTS@ +GL_SGL_GNULIB_PWRITE = @GL_SGL_GNULIB_PWRITE@ +GL_SGL_GNULIB_QSORT_R = @GL_SGL_GNULIB_QSORT_R@ +GL_SGL_GNULIB_RANDOM = @GL_SGL_GNULIB_RANDOM@ +GL_SGL_GNULIB_RANDOM_R = @GL_SGL_GNULIB_RANDOM_R@ +GL_SGL_GNULIB_RAWMEMCHR = @GL_SGL_GNULIB_RAWMEMCHR@ +GL_SGL_GNULIB_READ = @GL_SGL_GNULIB_READ@ +GL_SGL_GNULIB_READLINK = @GL_SGL_GNULIB_READLINK@ +GL_SGL_GNULIB_READLINKAT = @GL_SGL_GNULIB_READLINKAT@ +GL_SGL_GNULIB_REALLOCARRAY = @GL_SGL_GNULIB_REALLOCARRAY@ +GL_SGL_GNULIB_REALLOC_GNU = @GL_SGL_GNULIB_REALLOC_GNU@ +GL_SGL_GNULIB_REALLOC_POSIX = @GL_SGL_GNULIB_REALLOC_POSIX@ +GL_SGL_GNULIB_REALPATH = @GL_SGL_GNULIB_REALPATH@ +GL_SGL_GNULIB_REMOVE = @GL_SGL_GNULIB_REMOVE@ +GL_SGL_GNULIB_RENAME = @GL_SGL_GNULIB_RENAME@ +GL_SGL_GNULIB_RENAMEAT = @GL_SGL_GNULIB_RENAMEAT@ +GL_SGL_GNULIB_RMDIR = @GL_SGL_GNULIB_RMDIR@ +GL_SGL_GNULIB_RPMATCH = @GL_SGL_GNULIB_RPMATCH@ +GL_SGL_GNULIB_SCANF = @GL_SGL_GNULIB_SCANF@ +GL_SGL_GNULIB_SECURE_GETENV = @GL_SGL_GNULIB_SECURE_GETENV@ +GL_SGL_GNULIB_SETENV = @GL_SGL_GNULIB_SETENV@ +GL_SGL_GNULIB_SETHOSTNAME = @GL_SGL_GNULIB_SETHOSTNAME@ +GL_SGL_GNULIB_SIGABBREV_NP = @GL_SGL_GNULIB_SIGABBREV_NP@ +GL_SGL_GNULIB_SIGDESCR_NP = @GL_SGL_GNULIB_SIGDESCR_NP@ +GL_SGL_GNULIB_SLEEP = @GL_SGL_GNULIB_SLEEP@ +GL_SGL_GNULIB_SNPRINTF = @GL_SGL_GNULIB_SNPRINTF@ +GL_SGL_GNULIB_SPRINTF_POSIX = @GL_SGL_GNULIB_SPRINTF_POSIX@ +GL_SGL_GNULIB_STAT = @GL_SGL_GNULIB_STAT@ +GL_SGL_GNULIB_STDIO_H_NONBLOCKING = @GL_SGL_GNULIB_STDIO_H_NONBLOCKING@ +GL_SGL_GNULIB_STDIO_H_SIGPIPE = @GL_SGL_GNULIB_STDIO_H_SIGPIPE@ +GL_SGL_GNULIB_STPCPY = @GL_SGL_GNULIB_STPCPY@ +GL_SGL_GNULIB_STPNCPY = @GL_SGL_GNULIB_STPNCPY@ +GL_SGL_GNULIB_STRCASESTR = @GL_SGL_GNULIB_STRCASESTR@ +GL_SGL_GNULIB_STRCHRNUL = @GL_SGL_GNULIB_STRCHRNUL@ +GL_SGL_GNULIB_STRDUP = @GL_SGL_GNULIB_STRDUP@ +GL_SGL_GNULIB_STRERROR = @GL_SGL_GNULIB_STRERROR@ +GL_SGL_GNULIB_STRERRORNAME_NP = @GL_SGL_GNULIB_STRERRORNAME_NP@ +GL_SGL_GNULIB_STRERROR_R = @GL_SGL_GNULIB_STRERROR_R@ +GL_SGL_GNULIB_STRFTIME = @GL_SGL_GNULIB_STRFTIME@ +GL_SGL_GNULIB_STRNCAT = @GL_SGL_GNULIB_STRNCAT@ +GL_SGL_GNULIB_STRNDUP = @GL_SGL_GNULIB_STRNDUP@ +GL_SGL_GNULIB_STRNLEN = @GL_SGL_GNULIB_STRNLEN@ +GL_SGL_GNULIB_STRPBRK = @GL_SGL_GNULIB_STRPBRK@ +GL_SGL_GNULIB_STRPTIME = @GL_SGL_GNULIB_STRPTIME@ +GL_SGL_GNULIB_STRSEP = @GL_SGL_GNULIB_STRSEP@ +GL_SGL_GNULIB_STRSIGNAL = @GL_SGL_GNULIB_STRSIGNAL@ +GL_SGL_GNULIB_STRSTR = @GL_SGL_GNULIB_STRSTR@ +GL_SGL_GNULIB_STRTOD = @GL_SGL_GNULIB_STRTOD@ +GL_SGL_GNULIB_STRTOIMAX = @GL_SGL_GNULIB_STRTOIMAX@ +GL_SGL_GNULIB_STRTOK_R = @GL_SGL_GNULIB_STRTOK_R@ +GL_SGL_GNULIB_STRTOL = @GL_SGL_GNULIB_STRTOL@ +GL_SGL_GNULIB_STRTOLD = @GL_SGL_GNULIB_STRTOLD@ +GL_SGL_GNULIB_STRTOLL = @GL_SGL_GNULIB_STRTOLL@ +GL_SGL_GNULIB_STRTOUL = @GL_SGL_GNULIB_STRTOUL@ +GL_SGL_GNULIB_STRTOULL = @GL_SGL_GNULIB_STRTOULL@ +GL_SGL_GNULIB_STRTOUMAX = @GL_SGL_GNULIB_STRTOUMAX@ +GL_SGL_GNULIB_STRVERSCMP = @GL_SGL_GNULIB_STRVERSCMP@ +GL_SGL_GNULIB_SYMLINK = @GL_SGL_GNULIB_SYMLINK@ +GL_SGL_GNULIB_SYMLINKAT = @GL_SGL_GNULIB_SYMLINKAT@ +GL_SGL_GNULIB_SYSTEM_POSIX = @GL_SGL_GNULIB_SYSTEM_POSIX@ +GL_SGL_GNULIB_TIMEGM = @GL_SGL_GNULIB_TIMEGM@ +GL_SGL_GNULIB_TIMESPEC_GET = @GL_SGL_GNULIB_TIMESPEC_GET@ +GL_SGL_GNULIB_TIMESPEC_GETRES = @GL_SGL_GNULIB_TIMESPEC_GETRES@ +GL_SGL_GNULIB_TIME_R = @GL_SGL_GNULIB_TIME_R@ +GL_SGL_GNULIB_TIME_RZ = @GL_SGL_GNULIB_TIME_RZ@ +GL_SGL_GNULIB_TMPFILE = @GL_SGL_GNULIB_TMPFILE@ +GL_SGL_GNULIB_TRUNCATE = @GL_SGL_GNULIB_TRUNCATE@ +GL_SGL_GNULIB_TTYNAME_R = @GL_SGL_GNULIB_TTYNAME_R@ +GL_SGL_GNULIB_TZSET = @GL_SGL_GNULIB_TZSET@ +GL_SGL_GNULIB_UNISTD_H_GETOPT = @GL_SGL_GNULIB_UNISTD_H_GETOPT@ +GL_SGL_GNULIB_UNISTD_H_NONBLOCKING = @GL_SGL_GNULIB_UNISTD_H_NONBLOCKING@ +GL_SGL_GNULIB_UNISTD_H_SIGPIPE = @GL_SGL_GNULIB_UNISTD_H_SIGPIPE@ +GL_SGL_GNULIB_UNLINK = @GL_SGL_GNULIB_UNLINK@ +GL_SGL_GNULIB_UNLINKAT = @GL_SGL_GNULIB_UNLINKAT@ +GL_SGL_GNULIB_UNLOCKPT = @GL_SGL_GNULIB_UNLOCKPT@ +GL_SGL_GNULIB_UNSETENV = @GL_SGL_GNULIB_UNSETENV@ +GL_SGL_GNULIB_USLEEP = @GL_SGL_GNULIB_USLEEP@ +GL_SGL_GNULIB_UTIMENSAT = @GL_SGL_GNULIB_UTIMENSAT@ +GL_SGL_GNULIB_VASPRINTF = @GL_SGL_GNULIB_VASPRINTF@ +GL_SGL_GNULIB_VDPRINTF = @GL_SGL_GNULIB_VDPRINTF@ +GL_SGL_GNULIB_VFPRINTF = @GL_SGL_GNULIB_VFPRINTF@ +GL_SGL_GNULIB_VFPRINTF_POSIX = @GL_SGL_GNULIB_VFPRINTF_POSIX@ +GL_SGL_GNULIB_VFSCANF = @GL_SGL_GNULIB_VFSCANF@ +GL_SGL_GNULIB_VPRINTF = @GL_SGL_GNULIB_VPRINTF@ +GL_SGL_GNULIB_VPRINTF_POSIX = @GL_SGL_GNULIB_VPRINTF_POSIX@ +GL_SGL_GNULIB_VSCANF = @GL_SGL_GNULIB_VSCANF@ +GL_SGL_GNULIB_VSNPRINTF = @GL_SGL_GNULIB_VSNPRINTF@ +GL_SGL_GNULIB_VSPRINTF_POSIX = @GL_SGL_GNULIB_VSPRINTF_POSIX@ +GL_SGL_GNULIB_WCPCPY = @GL_SGL_GNULIB_WCPCPY@ +GL_SGL_GNULIB_WCPNCPY = @GL_SGL_GNULIB_WCPNCPY@ +GL_SGL_GNULIB_WCRTOMB = @GL_SGL_GNULIB_WCRTOMB@ +GL_SGL_GNULIB_WCSCASECMP = @GL_SGL_GNULIB_WCSCASECMP@ +GL_SGL_GNULIB_WCSCAT = @GL_SGL_GNULIB_WCSCAT@ +GL_SGL_GNULIB_WCSCHR = @GL_SGL_GNULIB_WCSCHR@ +GL_SGL_GNULIB_WCSCMP = @GL_SGL_GNULIB_WCSCMP@ +GL_SGL_GNULIB_WCSCOLL = @GL_SGL_GNULIB_WCSCOLL@ +GL_SGL_GNULIB_WCSCPY = @GL_SGL_GNULIB_WCSCPY@ +GL_SGL_GNULIB_WCSCSPN = @GL_SGL_GNULIB_WCSCSPN@ +GL_SGL_GNULIB_WCSDUP = @GL_SGL_GNULIB_WCSDUP@ +GL_SGL_GNULIB_WCSFTIME = @GL_SGL_GNULIB_WCSFTIME@ +GL_SGL_GNULIB_WCSLEN = @GL_SGL_GNULIB_WCSLEN@ +GL_SGL_GNULIB_WCSNCASECMP = @GL_SGL_GNULIB_WCSNCASECMP@ +GL_SGL_GNULIB_WCSNCAT = @GL_SGL_GNULIB_WCSNCAT@ +GL_SGL_GNULIB_WCSNCMP = @GL_SGL_GNULIB_WCSNCMP@ +GL_SGL_GNULIB_WCSNCPY = @GL_SGL_GNULIB_WCSNCPY@ +GL_SGL_GNULIB_WCSNLEN = @GL_SGL_GNULIB_WCSNLEN@ +GL_SGL_GNULIB_WCSNRTOMBS = @GL_SGL_GNULIB_WCSNRTOMBS@ +GL_SGL_GNULIB_WCSPBRK = @GL_SGL_GNULIB_WCSPBRK@ +GL_SGL_GNULIB_WCSRCHR = @GL_SGL_GNULIB_WCSRCHR@ +GL_SGL_GNULIB_WCSRTOMBS = @GL_SGL_GNULIB_WCSRTOMBS@ +GL_SGL_GNULIB_WCSSPN = @GL_SGL_GNULIB_WCSSPN@ +GL_SGL_GNULIB_WCSSTR = @GL_SGL_GNULIB_WCSSTR@ +GL_SGL_GNULIB_WCSTOK = @GL_SGL_GNULIB_WCSTOK@ +GL_SGL_GNULIB_WCSWIDTH = @GL_SGL_GNULIB_WCSWIDTH@ +GL_SGL_GNULIB_WCSXFRM = @GL_SGL_GNULIB_WCSXFRM@ +GL_SGL_GNULIB_WCTOB = @GL_SGL_GNULIB_WCTOB@ +GL_SGL_GNULIB_WCTOMB = @GL_SGL_GNULIB_WCTOMB@ +GL_SGL_GNULIB_WCWIDTH = @GL_SGL_GNULIB_WCWIDTH@ +GL_SGL_GNULIB_WMEMCHR = @GL_SGL_GNULIB_WMEMCHR@ +GL_SGL_GNULIB_WMEMCMP = @GL_SGL_GNULIB_WMEMCMP@ +GL_SGL_GNULIB_WMEMCPY = @GL_SGL_GNULIB_WMEMCPY@ +GL_SGL_GNULIB_WMEMMOVE = @GL_SGL_GNULIB_WMEMMOVE@ +GL_SGL_GNULIB_WMEMPCPY = @GL_SGL_GNULIB_WMEMPCPY@ +GL_SGL_GNULIB_WMEMSET = @GL_SGL_GNULIB_WMEMSET@ +GL_SGL_GNULIB_WRITE = @GL_SGL_GNULIB_WRITE@ +GL_SGL_GNULIB__EXIT = @GL_SGL_GNULIB__EXIT@ +GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ @@ -296,43 +821,233 @@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ +HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ +HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ +HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETENTROPY = @HAVE_GETENTROPY@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETPASS = @HAVE_GETPASS@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GETUMASK = @HAVE_GETUMASK@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ +HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_QSORT_R = @HAVE_QSORT_R@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SETSTATE = @HAVE_SETSTATE@ +HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ +HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOL = @HAVE_STRTOL@ +HAVE_STRTOLD = @HAVE_STRTOLD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOUL = @HAVE_STRTOUL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ +HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSFTIME = @HAVE_WCSFTIME@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ @@ -342,36 +1057,70 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ LIBTOOL = @LIBTOOL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_FUZZING_ENGINE = @LIB_FUZZING_ENGINE@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ +LOG_VALGRIND = @LOG_VALGRIND@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAJOR_VERSION = @MAJOR_VERSION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ +MINOR_VERSION = @MINOR_VERSION@ MKDIR_P = @MKDIR_P@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ NM = @NM@ NMEDIT = @NMEDIT@ +NUMBER_VERSION = @NUMBER_VERSION@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ @@ -383,42 +1132,216 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ +PATCH_VERSION = @PATCH_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ +REPLACE_ACCESS = @REPLACE_ACCESS@ +REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ +REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ +REPLACE_CREAT = @REPLACE_CREAT@ +REPLACE_CTIME = @REPLACE_CTIME@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_EXECL = @REPLACE_EXECL@ +REPLACE_EXECLE = @REPLACE_EXECLE@ +REPLACE_EXECLP = @REPLACE_EXECLP@ +REPLACE_EXECV = @REPLACE_EXECV@ +REPLACE_EXECVE = @REPLACE_EXECVE@ +REPLACE_EXECVP = @REPLACE_EXECVP@ +REPLACE_EXECVPE = @REPLACE_EXECVPE@ +REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ +REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FFSLL = @REPLACE_FFSLL@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREE = @REPLACE_FREE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETPASS = @REPLACE_GETPASS@ +REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_INITSTATE = @REPLACE_INITSTATE@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ +REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKNODAT = @REPLACE_MKNODAT@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RANDOM = @REPLACE_RANDOM@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ +REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ +REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETSTATE = @REPLACE_SETSTATE@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOL = @REPLACE_STRTOL@ +REPLACE_STRTOLD = @REPLACE_STRTOLD@ +REPLACE_STRTOLL = @REPLACE_STRTOLL@ +REPLACE_STRTOUL = @REPLACE_STRTOUL@ +REPLACE_STRTOULL = @REPLACE_STRTOULL@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_TZSET = @REPLACE_TZSET@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSTOK = @REPLACE_WCSTOK@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ +VALGRINDFLAGS = @VALGRINDFLAGS@ +VALGRIND_PROGRAM = @VALGRIND_PROGRAM@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ +WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ @@ -446,8 +1369,10 @@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ @@ -475,6 +1400,13 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ +sgl_LIBOBJDEPS = @sgl_LIBOBJDEPS@ +sgl_LIBOBJS = @sgl_LIBOBJS@ +sgl_LTLIBOBJS = @sgl_LTLIBOBJS@ +sgltests_LIBOBJDEPS = @sgltests_LIBOBJDEPS@ +sgltests_LIBOBJS = @sgltests_LIBOBJS@ +sgltests_LTLIBOBJS = @sgltests_LTLIBOBJS@ +sgltests_WITNESS = @sgltests_WITNESS@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ @@ -496,14 +1428,14 @@ DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk -DOC_SOURCE_DIR = $(top_srcdir)/lib +DOC_SOURCE_DIR = $(top_srcdir)/lib $(top_builddir)/lib # Extra options to pass to gtkdoc-scangobj. Normally not needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -SCAN_OPTIONS = --ignore-decorators=ASN1_API +SCAN_OPTIONS = --ignore-decorators=ASN1_API --deprecated-guards="ASN1_DISABLE_DEPRECATED" # Extra options to supply to gtkdoc-mkdb # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml @@ -519,7 +1451,7 @@ FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -HFILE_GLOB = $(top_srcdir)/lib/*.h +HFILE_GLOB = $(top_srcdir)/lib/*.h $(top_builddir)/lib/includes/libtasn1.h CFILE_GLOB = $(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR @@ -528,7 +1460,7 @@ EXTRA_HFILES = # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -IGNORE_HFILES = element.h gstr.h int.h parser_aux.h structure.h gllib +IGNORE_HFILES = element.h gstr.h int.h parser_aux.h structure.h gl # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png @@ -538,7 +1470,7 @@ HTML_IMAGES = # e.g. content_files=running.xml building.xml changes-2.0.xml content_files = -# Files where gtk-doc abbrevations (#GtkWidget) are expanded +# Files where gtk-doc abbreviations (#GtkWidget) are expanded # e.g. expand_content_files=running.xml expand_content_files = @@ -579,6 +1511,7 @@ DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ + $(DOC_MODULE).actions \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ @@ -590,7 +1523,10 @@ REPORT_FILES = \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt -CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \ + gtkdoc-check.test $(PACKAGE)-overrides.txt $(PACKAGE)-decl.txt \ + $(PACKAGE)-decl-list.txt $(PACKAGE)-sections.txt \ + $(PACKAGE).pdf @GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @@ -647,9 +1583,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__c exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/reference/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/reference/Makefile + $(AUTOMAKE) --gnu doc/reference/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -680,7 +1616,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1038,6 +1973,18 @@ dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local -include $(top_srcdir)/git.mk +html-build.stamp: $(top_builddir)/.version +pdf-build.stamp: $(top_builddir)/.version + +CLEANFILES ?= + +clean-local: clean-local-junk +.PHONY: clean-local-junk +clean-local-junk: + -rm -rf xml html tmpl + +dist-hook-local: all-local + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/doc/reference/html/api-index-1-6.html b/doc/reference/html/api-index-1-6.html index f91ff0d..d5f310a 100644 --- a/doc/reference/html/api-index-1-6.html +++ b/doc/reference/html/api-index-1-6.html @@ -3,17 +3,17 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Index of new API in 1.6: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="prev" href="deprecated-api-index.html" title="Index of deprecated API"> <link rel="next" href="api-index-2-0.html" title="Index of new API in 2.0"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> -<td width="100%" align="left" class="shortcuts"></td> +<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a></span></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> <td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> @@ -22,9 +22,13 @@ <div class="index"> <div class="titlepage"><div><div><h1 class="title"> <a name="api-index-1-6"></a>Index of new API in 1.6</h1></div></div></div> -<a name="idx"></a> +<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-perror" title="asn1_perror ()">asn1_perror</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/api-index-2-0.html b/doc/reference/html/api-index-2-0.html index 961c1bb..ac646fd 100644 --- a/doc/reference/html/api-index-2-0.html +++ b/doc/reference/html/api-index-2-0.html @@ -3,16 +3,16 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Index of new API in 2.0: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="prev" href="api-index-1-6.html" title="Index of new API in 1.6"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> -<td width="100%" align="left" class="shortcuts"></td> +<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a></span></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> <td><a accesskey="p" href="api-index-1-6.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> @@ -21,9 +21,13 @@ <div class="index"> <div class="titlepage"><div><div><h1 class="title"> <a name="api-index-2-0"></a>Index of new API in 2.0</h1></div></div></div> -<a name="idx"></a> +<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-ber" title="asn1_get_length_ber ()">asn1_get_length_ber</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/api-index-full.html b/doc/reference/html/api-index-full.html index 8f25b51..3ad3b79 100644 --- a/doc/reference/html/api-index-full.html +++ b/doc/reference/html/api-index-full.html @@ -3,44 +3,24 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>API Index: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> -<link rel="prev" href="object-tree.html" title="Object Hierarchy"> +<link rel="prev" href="libtasn1-libtasn1.html" title="libtasn1"> <link rel="next" href="deprecated-api-index.html" title="Index of deprecated API"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> <td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a>  <span class="dim">|</span> - <a class="shortcut" href="#idxC">C</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxD">D</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxE">E</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxF">F</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxG">G</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxI">I</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxM">M</a> -  <span class="dim">|</span> <a class="shortcut" href="#idxN">N</a>  <span class="dim">|</span> - <a class="shortcut" href="#idxP">P</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxS">S</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxT">T</a> -  <span class="dim">|</span> - <a class="shortcut" href="#idxV">V</a></span></td> + <a class="shortcut" href="#idxS">S</a></span></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> -<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="libtasn1-libtasn1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="index"> @@ -52,10 +32,25 @@ </dt> <dd></dd> <dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-array2tree" title="asn1_array2tree ()">asn1_array2tree</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-ARRAY-ERROR:CAPS" title="ASN1_ARRAY_ERROR">ASN1_ARRAY_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxC"></a><h3 class="title">C</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ARRAY-TYPE:CAPS" title="ASN1_ARRAY_TYPE">ASN1_ARRAY_TYPE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-bit-der" title="asn1_bit_der ()">asn1_bit_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-check-version" title="asn1_check_version ()">asn1_check_version</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-APPLICATION:CAPS" title="ASN1_CLASS_APPLICATION">ASN1_CLASS_APPLICATION</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -76,7 +71,78 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-UNIVERSAL:CAPS" title="ASN1_CLASS_UNIVERSAL">ASN1_CLASS_UNIVERSAL</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxD"></a><h3 class="title">D</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-copy-node" title="asn1_copy_node ()">asn1_copy_node</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()">asn1_create_element</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DATA-NODE:CAPS" title="ASN1_DATA_NODE">ASN1_DATA_NODE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-data-node-st" title="struct asn1_data_node_st">asn1_data_node_st</a>, struct in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-INCORRECT-TIME:CAPS" title="ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME">ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-PADDING:CAPS" title="ASN1_DECODE_FLAG_ALLOW_PADDING">ASN1_DECODE_FLAG_ALLOW_PADDING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-STRICT-DER:CAPS" title="ASN1_DECODE_FLAG_STRICT_DER">ASN1_DECODE_FLAG_STRICT_DER</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-decode-simple-ber" title="asn1_decode_simple_ber ()">asn1_decode_simple_ber</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-decode-simple-der" title="asn1_decode_simple_der ()">asn1_decode_simple_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-element" title="asn1_delete_element ()">asn1_delete_element</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DELETE-FLAG-ZEROIZE:CAPS" title="ASN1_DELETE_FLAG_ZEROIZE">ASN1_DELETE_FLAG_ZEROIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-structure" title="asn1_delete_structure ()">asn1_delete_structure</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-structure2" title="asn1_delete_structure2 ()">asn1_delete_structure2</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-coding" title="asn1_der_coding ()">asn1_der_coding</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()">asn1_der_decoding</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding2" title="asn1_der_decoding2 ()">asn1_der_decoding2</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding-element" title="asn1_der_decoding_element ()">asn1_der_decoding_element</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding-startEnd" title="asn1_der_decoding_startEnd ()">asn1_der_decoding_startEnd</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-DER-ERROR:CAPS" title="ASN1_DER_ERROR">ASN1_DER_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -85,7 +151,10 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-DER-OVERFLOW:CAPS" title="ASN1_DER_OVERFLOW">ASN1_DER_OVERFLOW</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxE"></a><h3 class="title">E</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-dup-node" title="asn1_dup_node ()">asn1_dup_node</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-EMPTY:CAPS" title="ASN1_ELEMENT_NOT_EMPTY">ASN1_ELEMENT_NOT_EMPTY</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -95,30 +164,222 @@ </dt> <dd></dd> <dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-encode-simple-der" title="asn1_encode_simple_der ()">asn1_encode_simple_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-ERROR-TYPE-ANY:CAPS" title="ASN1_ERROR_TYPE_ANY">ASN1_ERROR_TYPE_ANY</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxF"></a><h3 class="title">F</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-ANY:CAPS" title="ASN1_ETYPE_ANY">ASN1_ETYPE_ANY</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BIT-STRING:CAPS" title="ASN1_ETYPE_BIT_STRING">ASN1_ETYPE_BIT_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BMP-STRING:CAPS" title="ASN1_ETYPE_BMP_STRING">ASN1_ETYPE_BMP_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BOOLEAN:CAPS" title="ASN1_ETYPE_BOOLEAN">ASN1_ETYPE_BOOLEAN</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-CHOICE:CAPS" title="ASN1_ETYPE_CHOICE">ASN1_ETYPE_CHOICE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-CONSTANT:CAPS" title="ASN1_ETYPE_CONSTANT">ASN1_ETYPE_CONSTANT</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-DEFAULT:CAPS" title="ASN1_ETYPE_DEFAULT">ASN1_ETYPE_DEFAULT</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-DEFINITIONS:CAPS" title="ASN1_ETYPE_DEFINITIONS">ASN1_ETYPE_DEFINITIONS</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-ENUMERATED:CAPS" title="ASN1_ETYPE_ENUMERATED">ASN1_ETYPE_ENUMERATED</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALIZED-TIME:CAPS" title="ASN1_ETYPE_GENERALIZED_TIME">ASN1_ETYPE_GENERALIZED_TIME</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALSTRING:CAPS" title="ASN1_ETYPE_GENERALSTRING">ASN1_ETYPE_GENERALSTRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IA5-STRING:CAPS" title="ASN1_ETYPE_IA5_STRING">ASN1_ETYPE_IA5_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IDENTIFIER:CAPS" title="ASN1_ETYPE_IDENTIFIER">ASN1_ETYPE_IDENTIFIER</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IMPORTS:CAPS" title="ASN1_ETYPE_IMPORTS">ASN1_ETYPE_IMPORTS</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-INTEGER:CAPS" title="ASN1_ETYPE_INTEGER">ASN1_ETYPE_INTEGER</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-INVALID:CAPS" title="ASN1_ETYPE_INVALID">ASN1_ETYPE_INVALID</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-NULL:CAPS" title="ASN1_ETYPE_NULL">ASN1_ETYPE_NULL</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-NUMERIC-STRING:CAPS" title="ASN1_ETYPE_NUMERIC_STRING">ASN1_ETYPE_NUMERIC_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-OBJECT-ID:CAPS" title="ASN1_ETYPE_OBJECT_ID">ASN1_ETYPE_OBJECT_ID</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-OCTET-STRING:CAPS" title="ASN1_ETYPE_OCTET_STRING">ASN1_ETYPE_OCTET_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-PRINTABLE-STRING:CAPS" title="ASN1_ETYPE_PRINTABLE_STRING">ASN1_ETYPE_PRINTABLE_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE:CAPS" title="ASN1_ETYPE_SEQUENCE">ASN1_ETYPE_SEQUENCE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE-OF:CAPS" title="ASN1_ETYPE_SEQUENCE_OF">ASN1_ETYPE_SEQUENCE_OF</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SET:CAPS" title="ASN1_ETYPE_SET">ASN1_ETYPE_SET</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SET-OF:CAPS" title="ASN1_ETYPE_SET_OF">ASN1_ETYPE_SET_OF</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SIZE:CAPS" title="ASN1_ETYPE_SIZE">ASN1_ETYPE_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-TAG:CAPS" title="ASN1_ETYPE_TAG">ASN1_ETYPE_TAG</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-TELETEX-STRING:CAPS" title="ASN1_ETYPE_TELETEX_STRING">ASN1_ETYPE_TELETEX_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UNIVERSAL-STRING:CAPS" title="ASN1_ETYPE_UNIVERSAL_STRING">ASN1_ETYPE_UNIVERSAL_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UTC-TIME:CAPS" title="ASN1_ETYPE_UTC_TIME">ASN1_ETYPE_UTC_TIME</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UTF8-STRING:CAPS" title="ASN1_ETYPE_UTF8_STRING">ASN1_ETYPE_UTF8_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-VISIBLE-STRING:CAPS" title="ASN1_ETYPE_VISIBLE_STRING">ASN1_ETYPE_VISIBLE_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-expand-any-defined-by" title="asn1_expand_any_defined_by ()">asn1_expand_any_defined_by</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-expand-octet-string" title="asn1_expand_octet_string ()">asn1_expand_octet_string</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-FILE-NOT-FOUND:CAPS" title="ASN1_FILE_NOT_FOUND">ASN1_FILE_NOT_FOUND</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxG"></a><h3 class="title">G</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-find-node" title="asn1_find_node ()">asn1_find_node</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-find-structure-from-oid" title="asn1_find_structure_from_oid ()">asn1_find_structure_from_oid</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-GCC-ATTR-DEPRECATED:CAPS" title="_ASN1_GCC_ATTR_DEPRECATED">_ASN1_GCC_ATTR_DEPRECATED</a>, typedef in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-GENERIC-ERROR:CAPS" title="ASN1_GENERIC_ERROR">ASN1_GENERIC_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxI"></a><h3 class="title">I</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-bit-der" title="asn1_get_bit_der ()">asn1_get_bit_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-ber" title="asn1_get_length_ber ()">asn1_get_length_ber</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-der" title="asn1_get_length_der ()">asn1_get_length_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-object-id-der" title="asn1_get_object_id_der ()">asn1_get_object_id_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-octet-der" title="asn1_get_octet_der ()">asn1_get_octet_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-tag-der" title="asn1_get_tag_der ()">asn1_get_tag_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-IDENTIFIER-NOT-FOUND:CAPS" title="ASN1_IDENTIFIER_NOT_FOUND">ASN1_IDENTIFIER_NOT_FOUND</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxM"></a><h3 class="title">M</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-length-der" title="asn1_length_der ()">asn1_length_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-ERROR-DESCRIPTION-SIZE:CAPS" title="ASN1_MAX_ERROR_DESCRIPTION_SIZE">ASN1_MAX_ERROR_DESCRIPTION_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-LENGTH-SIZE:CAPS" title="ASN1_MAX_LENGTH_SIZE">ASN1_MAX_LENGTH_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-NAME-SIZE:CAPS" title="ASN1_MAX_NAME_SIZE">ASN1_MAX_NAME_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> <dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-TAG-SIZE:CAPS" title="ASN1_MAX_TAG_SIZE">ASN1_MAX_TAG_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-TL-SIZE:CAPS" title="ASN1_MAX_TL_SIZE">ASN1_MAX_TL_SIZE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ALLOC-ERROR:CAPS" title="ASN1_MEM_ALLOC_ERROR">ASN1_MEM_ALLOC_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> @@ -126,7 +387,6 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ERROR:CAPS" title="ASN1_MEM_ERROR">ASN1_MEM_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxN"></a><h3 class="title">N</h3> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-NAME-TOO-LONG:CAPS" title="ASN1_NAME_TOO_LONG">ASN1_NAME_TOO_LONG</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -136,10 +396,37 @@ </dt> <dd></dd> <dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const">asn1_node_const</a>, typedef in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> <a class="link" href="libtasn1-libtasn1.html#asn1-node-st" title="asn1_node_st">asn1_node_st</a>, typedef in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxP"></a><h3 class="title">P</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-number-of-elements" title="asn1_number_of_elements ()">asn1_number_of_elements</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-object-id-der" title="asn1_object_id_der ()">asn1_object_id_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-octet-der" title="asn1_octet_der ()">asn1_octet_der</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-parser2array" title="asn1_parser2array ()">asn1_parser2array</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-parser2tree" title="asn1_parser2tree ()">asn1_parser2tree</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-perror" title="asn1_perror ()">asn1_perror</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-ALL:CAPS" title="ASN1_PRINT_ALL">ASN1_PRINT_ALL</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -156,7 +443,34 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-NAME-TYPE-VALUE:CAPS" title="ASN1_PRINT_NAME_TYPE_VALUE">ASN1_PRINT_NAME_TYPE_VALUE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxS"></a><h3 class="title">S</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-print-structure" title="asn1_print_structure ()">asn1_print_structure</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-node-value" title="asn1_read_node_value ()">asn1_read_node_value</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-tag" title="asn1_read_tag ()">asn1_read_tag</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-value" title="asn1_read_value ()">asn1_read_value</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-value-type" title="asn1_read_value_type ()">asn1_read_value_type</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-RECURSION:CAPS" title="ASN1_RECURSION">ASN1_RECURSION</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-static-node-t" title="asn1_static_node_t">asn1_static_node_t</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS">ASN1_SUCCESS</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -165,7 +479,6 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-SYNTAX-ERROR:CAPS" title="ASN1_SYNTAX_ERROR">ASN1_SYNTAX_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxT"></a><h3 class="title">T</h3> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-TAG-BIT-STRING:CAPS" title="ASN1_TAG_BIT_STRING">ASN1_TAG_BIT_STRING</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -258,7 +571,14 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-TIME-ENCODING-ERROR:CAPS" title="ASN1_TIME_ENCODING_ERROR">ASN1_TIME_ENCODING_ERROR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> -<a name="idxV"></a><h3 class="title">V</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE:CAPS" title="ASN1_TYPE">ASN1_TYPE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE-EMPTY:CAPS" title="ASN1_TYPE_EMPTY">ASN1_TYPE_EMPTY</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> <dt> <a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-FOUND:CAPS" title="ASN1_VALUE_NOT_FOUND">ASN1_VALUE_NOT_FOUND</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> @@ -271,8 +591,46 @@ <a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION:CAPS" title="ASN1_VERSION">ASN1_VERSION</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> </dt> <dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-MAJOR:CAPS" title="ASN1_VERSION_MAJOR">ASN1_VERSION_MAJOR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-MINOR:CAPS" title="ASN1_VERSION_MINOR">ASN1_VERSION_MINOR</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-NUMBER:CAPS" title="ASN1_VERSION_NUMBER">ASN1_VERSION_NUMBER</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-PATCH:CAPS" title="ASN1_VERSION_PATCH">ASN1_VERSION_PATCH</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-write-value" title="asn1_write_value ()">asn1_write_value</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<a name="idxN"></a><h3 class="title">N</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-asn" title="node_asn">node_asn</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-asn-struct" title="node_asn_struct">node_asn_struct</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-data-struct" title="node_data_struct">node_data_struct</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<a name="idxS"></a><h3 class="title">S</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#static-struct-asn" title="static_struct_asn">static_struct_asn</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/ch01.html b/doc/reference/html/ch01.html index 130512e..cdb74b3 100644 --- a/doc/reference/html/ch01.html +++ b/doc/reference/html/ch01.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GNU Libtasn1 API Reference Manual: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="prev" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="next" href="libtasn1-libtasn1.html" title="libtasn1"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -37,6 +37,6 @@ </p> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/deprecated-api-index.html b/doc/reference/html/deprecated-api-index.html index de6e230..1324edc 100644 --- a/doc/reference/html/deprecated-api-index.html +++ b/doc/reference/html/deprecated-api-index.html @@ -3,17 +3,21 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Index of deprecated API: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="prev" href="api-index-full.html" title="API Index"> <link rel="next" href="api-index-1-6.html" title="Index of new API in 1.6"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> -<td width="100%" align="left" class="shortcuts"></td> +<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a> +  <span class="dim">|</span> + <a class="shortcut" href="#idxN">N</a> +  <span class="dim">|</span> + <a class="shortcut" href="#idxS">S</a></span></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> <td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> @@ -22,9 +26,55 @@ <div class="index"> <div class="titlepage"><div><div><h1 class="title"> <a name="deprecated-api-index"></a>Index of deprecated API</h1></div></div></div> -<a name="idx"></a> +<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-ARRAY-TYPE:CAPS" title="ASN1_ARRAY_TYPE">ASN1_ARRAY_TYPE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-DATA-NODE:CAPS" title="ASN1_DATA_NODE">ASN1_DATA_NODE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding-element" title="asn1_der_decoding_element ()">asn1_der_decoding_element</a>, function in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-GCC-ATTR-DEPRECATED:CAPS" title="_ASN1_GCC_ATTR_DEPRECATED">_ASN1_GCC_ATTR_DEPRECATED</a>, typedef in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#asn1-static-node-t" title="asn1_static_node_t">asn1_static_node_t</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE:CAPS" title="ASN1_TYPE">ASN1_TYPE</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE-EMPTY:CAPS" title="ASN1_TYPE_EMPTY">ASN1_TYPE_EMPTY</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<a name="idxN"></a><h3 class="title">N</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-asn" title="node_asn">node_asn</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-asn-struct" title="node_asn_struct">node_asn_struct</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libtasn1-libtasn1.html#node-data-struct" title="node_data_struct">node_data_struct</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> +<a name="idxS"></a><h3 class="title">S</h3> +<dt> +<a class="link" href="libtasn1-libtasn1.html#static-struct-asn" title="static_struct_asn">static_struct_asn</a>, macro in <a class="link" href="libtasn1-libtasn1.html" title="libtasn1">libtasn1</a> +</dt> +<dd></dd> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/home.png b/doc/reference/html/home.png Binary files differindex e80e202..3966a91 100644 --- a/doc/reference/html/home.png +++ b/doc/reference/html/home.png diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html index e91eeb4..4079572 100644 --- a/doc/reference/html/index.html +++ b/doc/reference/html/index.html @@ -3,10 +3,10 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GNU Libtasn1 Reference Manual: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="next" href="ch01.html" title="GNU Libtasn1 API Reference Manual"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GNU Libtasn1 Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for GNU Libtasn1 4.14. + for GNU Libtasn1 4.19.0. The latest version of this documentation can be found on-line at <a class="ulink" href="https://www.gnu.org/software/libtasn1/reference/" target="_top">https://www.gnu.org/software/libtasn1/reference/</a>. </p></div> @@ -27,7 +27,6 @@ <dd><dl><dt> <span class="refentrytitle"><a href="libtasn1-libtasn1.html">libtasn1</a></span><span class="refpurpose"> — GNU ASN.1 library</span> </dt></dl></dd> -<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt> <dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt> <dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt> <dt><span class="index"><a href="api-index-1-6.html">Index of new API in 1.6</a></span></dt> @@ -35,6 +34,6 @@ </dl></div> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/left-insensitive.png b/doc/reference/html/left-insensitive.png Binary files differindex fea007e..2cd8c16 100644 --- a/doc/reference/html/left-insensitive.png +++ b/doc/reference/html/left-insensitive.png diff --git a/doc/reference/html/left.png b/doc/reference/html/left.png Binary files differindex 193905f..1ca1664 100644 --- a/doc/reference/html/left.png +++ b/doc/reference/html/left.png diff --git a/doc/reference/html/libtasn1-libtasn1.html b/doc/reference/html/libtasn1-libtasn1.html index f0ae073..afefc53 100644 --- a/doc/reference/html/libtasn1-libtasn1.html +++ b/doc/reference/html/libtasn1-libtasn1.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>libtasn1: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> <link rel="up" href="ch01.html" title="GNU Libtasn1 API Reference Manual"> <link rel="prev" href="ch01.html" title="GNU Libtasn1 API Reference Manual"> -<link rel="next" href="object-tree.html" title="Object Hierarchy"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> +<link rel="next" href="api-index-full.html" title="API Index"> +<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -20,7 +20,7 @@ <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="ch01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="libtasn1-libtasn1"></a><div class="titlepage"></div> @@ -32,11 +32,340 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> +<a name="libtasn1-libtasn1.functions"></a><h2>Functions</h2> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="functions_proto_type"> +<col class="functions_proto_name"> +</colgroup> +<tbody> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-parser2tree" title="asn1_parser2tree ()">asn1_parser2tree</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-parser2array" title="asn1_parser2array ()">asn1_parser2array</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-array2tree" title="asn1_array2tree ()">asn1_array2tree</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-print-structure" title="asn1_print_structure ()">asn1_print_structure</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()">asn1_create_element</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-structure" title="asn1_delete_structure ()">asn1_delete_structure</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-structure2" title="asn1_delete_structure2 ()">asn1_delete_structure2</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-delete-element" title="asn1_delete_element ()">asn1_delete_element</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-write-value" title="asn1_write_value ()">asn1_write_value</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-value" title="asn1_read_value ()">asn1_read_value</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-value-type" title="asn1_read_value_type ()">asn1_read_value_type</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-node-value" title="asn1_read_node_value ()">asn1_read_node_value</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-number-of-elements" title="asn1_number_of_elements ()">asn1_number_of_elements</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-coding" title="asn1_der_coding ()">asn1_der_coding</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding2" title="asn1_der_decoding2 ()">asn1_der_decoding2</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()">asn1_der_decoding</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding-element" title="asn1_der_decoding_element ()">asn1_der_decoding_element</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding-startEnd" title="asn1_der_decoding_startEnd ()">asn1_der_decoding_startEnd</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-expand-any-defined-by" title="asn1_expand_any_defined_by ()">asn1_expand_any_defined_by</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-expand-octet-string" title="asn1_expand_octet_string ()">asn1_expand_octet_string</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-read-tag" title="asn1_read_tag ()">asn1_read_tag</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type">const <span class="returnvalue">char</span> * +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-find-structure-from-oid" title="asn1_find_structure_from_oid ()">asn1_find_structure_from_oid</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type">const <span class="returnvalue">char</span> * +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-check-version" title="asn1_check_version ()">asn1_check_version</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-perror" title="asn1_perror ()">asn1_perror</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">long</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-der" title="asn1_get_length_der ()">asn1_get_length_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">long</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-ber" title="asn1_get_length_ber ()">asn1_get_length_ber</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-length-der" title="asn1_length_der ()">asn1_length_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-decode-simple-der" title="asn1_decode_simple_der ()">asn1_decode_simple_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-decode-simple-ber" title="asn1_decode_simple_ber ()">asn1_decode_simple_ber</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-encode-simple-der" title="asn1_encode_simple_der ()">asn1_encode_simple_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="returnvalue">asn1_node</span></a> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-find-node" title="asn1_find_node ()">asn1_find_node</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-copy-node" title="asn1_copy_node ()">asn1_copy_node</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="returnvalue">asn1_node</span></a> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-dup-node" title="asn1_dup_node ()">asn1_dup_node</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-tag-der" title="asn1_get_tag_der ()">asn1_get_tag_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-octet-der" title="asn1_octet_der ()">asn1_octet_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-octet-der" title="asn1_get_octet_der ()">asn1_get_octet_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-bit-der" title="asn1_bit_der ()">asn1_bit_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-bit-der" title="asn1_get_bit_der ()">asn1_get_bit_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-get-object-id-der" title="asn1_get_object_id_der ()">asn1_get_object_id_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">int</span> +</td> +<td class="function_name"> +<a class="link" href="libtasn1-libtasn1.html#asn1-object-id-der" title="asn1_object_id_der ()">asn1_object_id_der</a> <span class="c_punctuation">()</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect1"> <a name="libtasn1-libtasn1.other"></a><h2>Types and Values</h2> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> -<col width="150px" class="name"> -<col class="description"> +<col width="150px" class="other_proto_type"> +<col class="other_proto_name"> </colgroup> <tbody> <tr> @@ -49,6 +378,22 @@ </tr> <tr> <td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-MAJOR:CAPS" title="ASN1_VERSION_MAJOR">ASN1_VERSION_MAJOR</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-MINOR:CAPS" title="ASN1_VERSION_MINOR">ASN1_VERSION_MINOR</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-PATCH:CAPS" title="ASN1_VERSION_PATCH">ASN1_VERSION_PATCH</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION-NUMBER:CAPS" title="ASN1_VERSION_NUMBER">ASN1_VERSION_NUMBER</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> <td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS">ASN1_SUCCESS</a></td> </tr> <tr> @@ -125,6 +470,10 @@ </tr> <tr> <td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-RECURSION:CAPS" title="ASN1_RECURSION">ASN1_RECURSION</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> <td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-NAME:CAPS" title="ASN1_PRINT_NAME">ASN1_PRINT_NAME</a></td> </tr> <tr> @@ -248,9 +597,217 @@ <td class="function_name"><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node">asn1_node</a></td> </tr> <tr> +<td class="typedef_keyword">typedef</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const">asn1_node_const</a></td> +</tr> +<tr> <td class="define_keyword">#define</td> <td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-NAME-SIZE:CAPS" title="ASN1_MAX_NAME_SIZE">ASN1_MAX_NAME_SIZE</a></td> </tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-INVALID:CAPS" title="ASN1_ETYPE_INVALID">ASN1_ETYPE_INVALID</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-CONSTANT:CAPS" title="ASN1_ETYPE_CONSTANT">ASN1_ETYPE_CONSTANT</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IDENTIFIER:CAPS" title="ASN1_ETYPE_IDENTIFIER">ASN1_ETYPE_IDENTIFIER</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-INTEGER:CAPS" title="ASN1_ETYPE_INTEGER">ASN1_ETYPE_INTEGER</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BOOLEAN:CAPS" title="ASN1_ETYPE_BOOLEAN">ASN1_ETYPE_BOOLEAN</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE:CAPS" title="ASN1_ETYPE_SEQUENCE">ASN1_ETYPE_SEQUENCE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BIT-STRING:CAPS" title="ASN1_ETYPE_BIT_STRING">ASN1_ETYPE_BIT_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-OCTET-STRING:CAPS" title="ASN1_ETYPE_OCTET_STRING">ASN1_ETYPE_OCTET_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-TAG:CAPS" title="ASN1_ETYPE_TAG">ASN1_ETYPE_TAG</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-DEFAULT:CAPS" title="ASN1_ETYPE_DEFAULT">ASN1_ETYPE_DEFAULT</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SIZE:CAPS" title="ASN1_ETYPE_SIZE">ASN1_ETYPE_SIZE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE-OF:CAPS" title="ASN1_ETYPE_SEQUENCE_OF">ASN1_ETYPE_SEQUENCE_OF</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-OBJECT-ID:CAPS" title="ASN1_ETYPE_OBJECT_ID">ASN1_ETYPE_OBJECT_ID</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-ANY:CAPS" title="ASN1_ETYPE_ANY">ASN1_ETYPE_ANY</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SET:CAPS" title="ASN1_ETYPE_SET">ASN1_ETYPE_SET</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-SET-OF:CAPS" title="ASN1_ETYPE_SET_OF">ASN1_ETYPE_SET_OF</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-DEFINITIONS:CAPS" title="ASN1_ETYPE_DEFINITIONS">ASN1_ETYPE_DEFINITIONS</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-CHOICE:CAPS" title="ASN1_ETYPE_CHOICE">ASN1_ETYPE_CHOICE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IMPORTS:CAPS" title="ASN1_ETYPE_IMPORTS">ASN1_ETYPE_IMPORTS</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-NULL:CAPS" title="ASN1_ETYPE_NULL">ASN1_ETYPE_NULL</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-ENUMERATED:CAPS" title="ASN1_ETYPE_ENUMERATED">ASN1_ETYPE_ENUMERATED</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALSTRING:CAPS" title="ASN1_ETYPE_GENERALSTRING">ASN1_ETYPE_GENERALSTRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-NUMERIC-STRING:CAPS" title="ASN1_ETYPE_NUMERIC_STRING">ASN1_ETYPE_NUMERIC_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-IA5-STRING:CAPS" title="ASN1_ETYPE_IA5_STRING">ASN1_ETYPE_IA5_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-TELETEX-STRING:CAPS" title="ASN1_ETYPE_TELETEX_STRING">ASN1_ETYPE_TELETEX_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-PRINTABLE-STRING:CAPS" title="ASN1_ETYPE_PRINTABLE_STRING">ASN1_ETYPE_PRINTABLE_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UNIVERSAL-STRING:CAPS" title="ASN1_ETYPE_UNIVERSAL_STRING">ASN1_ETYPE_UNIVERSAL_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-BMP-STRING:CAPS" title="ASN1_ETYPE_BMP_STRING">ASN1_ETYPE_BMP_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UTF8-STRING:CAPS" title="ASN1_ETYPE_UTF8_STRING">ASN1_ETYPE_UTF8_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-VISIBLE-STRING:CAPS" title="ASN1_ETYPE_VISIBLE_STRING">ASN1_ETYPE_VISIBLE_STRING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-UTC-TIME:CAPS" title="ASN1_ETYPE_UTC_TIME">ASN1_ETYPE_UTC_TIME</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALIZED-TIME:CAPS" title="ASN1_ETYPE_GENERALIZED_TIME">ASN1_ETYPE_GENERALIZED_TIME</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-DELETE-FLAG-ZEROIZE:CAPS" title="ASN1_DELETE_FLAG_ZEROIZE">ASN1_DELETE_FLAG_ZEROIZE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-PADDING:CAPS" title="ASN1_DECODE_FLAG_ALLOW_PADDING">ASN1_DECODE_FLAG_ALLOW_PADDING</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-STRICT-DER:CAPS" title="ASN1_DECODE_FLAG_STRICT_DER">ASN1_DECODE_FLAG_STRICT_DER</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-INCORRECT-TIME:CAPS" title="ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME">ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME</a></td> +</tr> +<tr> +<td class="datatype_keyword">struct</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#asn1-data-node-st" title="struct asn1_data_node_st">asn1_data_node_st</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-ERROR-DESCRIPTION-SIZE:CAPS" title="ASN1_MAX_ERROR_DESCRIPTION_SIZE">ASN1_MAX_ERROR_DESCRIPTION_SIZE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-TAG-SIZE:CAPS" title="ASN1_MAX_TAG_SIZE">ASN1_MAX_TAG_SIZE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-LENGTH-SIZE:CAPS" title="ASN1_MAX_LENGTH_SIZE">ASN1_MAX_LENGTH_SIZE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-TL-SIZE:CAPS" title="ASN1_MAX_TL_SIZE">ASN1_MAX_TL_SIZE</a></td> +</tr> +<tr> +<td class="typedef_keyword">typedef</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-GCC-ATTR-DEPRECATED:CAPS" title="_ASN1_GCC_ATTR_DEPRECATED">_ASN1_GCC_ATTR_DEPRECATED</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#node-asn-struct" title="node_asn_struct">node_asn_struct</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#node-asn" title="node_asn">node_asn</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE:CAPS" title="ASN1_TYPE">ASN1_TYPE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-TYPE-EMPTY:CAPS" title="ASN1_TYPE_EMPTY">ASN1_TYPE_EMPTY</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#static-struct-asn" title="static_struct_asn">static_struct_asn</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-ARRAY-TYPE:CAPS" title="ASN1_ARRAY_TYPE">ASN1_ARRAY_TYPE</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#asn1-static-node-t" title="asn1_static_node_t">asn1_static_node_t</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#node-data-struct" title="node_data_struct">node_data_struct</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="libtasn1-libtasn1.html#ASN1-DATA-NODE:CAPS" title="ASN1_DATA_NODE">ASN1_DATA_NODE</a></td> +</tr> </tbody> </table></div> </div> @@ -263,335 +820,2923 @@ encoding and decoding functions.</p> </div> <div class="refsect1"> <a name="libtasn1-libtasn1.functions_details"></a><h2>Functions</h2> -<p></p> +<div class="refsect2"> +<a name="asn1-parser2tree"></a><h3>asn1_parser2tree ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_parser2tree (<em class="parameter"><code>const <span class="type">char</span> *file</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *definitions</code></em>, + <em class="parameter"><code><span class="type">char</span> *error_desc</code></em>);</pre> +<p>Function used to start the parse algorithm. Creates the structures +needed to manage the definitions included in <em class="parameter"><code>file</code></em> + file.</p> +<div class="refsect3"> +<a name="asn1-parser2tree.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>file</p></td> +<td class="parameter_description"><p>specify the path and the name of file that contains +ASN.1 declarations.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>return the pointer to the structure created from +"file" ASN.1 declarations.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>error_desc</p></td> +<td class="parameter_description"><p>return the error description or an empty +string if success.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-parser2tree.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if the file has a correct syntax and every +identifier is known, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-EMPTY:CAPS" title="ASN1_ELEMENT_NOT_EMPTY"><code class="literal">ASN1_ELEMENT_NOT_EMPTY</code></a> if <em class="parameter"><code>definitions</code></em> +not +<code class="literal">NULL</code>, <a class="link" href="libtasn1-libtasn1.html#ASN1-FILE-NOT-FOUND:CAPS" title="ASN1_FILE_NOT_FOUND"><code class="literal">ASN1_FILE_NOT_FOUND</code></a> if an error occurred while +opening <em class="parameter"><code>file</code></em> +, <a class="link" href="libtasn1-libtasn1.html#ASN1-SYNTAX-ERROR:CAPS" title="ASN1_SYNTAX_ERROR"><code class="literal">ASN1_SYNTAX_ERROR</code></a> if the syntax is not +correct, <a class="link" href="libtasn1-libtasn1.html#ASN1-IDENTIFIER-NOT-FOUND:CAPS" title="ASN1_IDENTIFIER_NOT_FOUND"><code class="literal">ASN1_IDENTIFIER_NOT_FOUND</code></a> if in the file there is an +identifier that is not defined, <a class="link" href="libtasn1-libtasn1.html#ASN1-NAME-TOO-LONG:CAPS" title="ASN1_NAME_TOO_LONG"><code class="literal">ASN1_NAME_TOO_LONG</code></a> if in the +file there is an identifier with more than <a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-NAME-SIZE:CAPS" title="ASN1_MAX_NAME_SIZE"><code class="literal">ASN1_MAX_NAME_SIZE</code></a> +characters.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-parser2array"></a><h3>asn1_parser2array ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_parser2array (<em class="parameter"><code>const <span class="type">char</span> *inputFileName</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *outputFileName</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *vectorName</code></em>, + <em class="parameter"><code><span class="type">char</span> *error_desc</code></em>);</pre> +<p>Function that generates a C structure from an ASN1 file. Creates a +file containing a C vector to use to manage the definitions +included in <em class="parameter"><code>inputFileName</code></em> + file. If <em class="parameter"><code>inputFileName</code></em> + is +"/aa/bb/xx.yy" and <em class="parameter"><code>outputFileName</code></em> + is <code class="literal">NULL</code>, the file created is +"/aa/bb/xx_asn1_tab.c". If <em class="parameter"><code>vectorName</code></em> + is <code class="literal">NULL</code> the vector name +will be "xx_asn1_tab".</p> +<div class="refsect3"> +<a name="asn1-parser2array.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>inputFileName</p></td> +<td class="parameter_description"><p>specify the path and the name of file that +contains ASN.1 declarations.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>outputFileName</p></td> +<td class="parameter_description"><p>specify the path and the name of file that will +contain the C vector definition.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>vectorName</p></td> +<td class="parameter_description"><p>specify the name of the C vector.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>error_desc</p></td> +<td class="parameter_description"><p>return the error description or an empty +string if success.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-parser2array.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if the file has a correct syntax and every +identifier is known, <a class="link" href="libtasn1-libtasn1.html#ASN1-FILE-NOT-FOUND:CAPS" title="ASN1_FILE_NOT_FOUND"><code class="literal">ASN1_FILE_NOT_FOUND</code></a> if an error occurred +while opening <em class="parameter"><code>inputFileName</code></em> +, <a class="link" href="libtasn1-libtasn1.html#ASN1-SYNTAX-ERROR:CAPS" title="ASN1_SYNTAX_ERROR"><code class="literal">ASN1_SYNTAX_ERROR</code></a> if the syntax is +not correct, <a class="link" href="libtasn1-libtasn1.html#ASN1-IDENTIFIER-NOT-FOUND:CAPS" title="ASN1_IDENTIFIER_NOT_FOUND"><code class="literal">ASN1_IDENTIFIER_NOT_FOUND</code></a> if in the file there is +an identifier that is not defined, <a class="link" href="libtasn1-libtasn1.html#ASN1-NAME-TOO-LONG:CAPS" title="ASN1_NAME_TOO_LONG"><code class="literal">ASN1_NAME_TOO_LONG</code></a> if in the +file there is an identifier with more than <a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-NAME-SIZE:CAPS" title="ASN1_MAX_NAME_SIZE"><code class="literal">ASN1_MAX_NAME_SIZE</code></a> +characters.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-array2tree"></a><h3>asn1_array2tree ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_array2tree (<em class="parameter"><code>const <span class="type">asn1_static_node</span> *array</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *definitions</code></em>, + <em class="parameter"><code><span class="type">char</span> *errorDescription</code></em>);</pre> +<p>Creates the structures needed to manage the ASN.1 definitions. +<em class="parameter"><code>array</code></em> + is a vector created by <a class="link" href="libtasn1-libtasn1.html#asn1-parser2array" title="asn1_parser2array ()"><code class="function">asn1_parser2array()</code></a>.</p> +<div class="refsect3"> +<a name="asn1-array2tree.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>array</p></td> +<td class="parameter_description"><p>specify the array that contains ASN.1 declarations</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>return the pointer to the structure created by +*ARRAY ASN.1 declarations</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>errorDescription</p></td> +<td class="parameter_description"><p>return the error description.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-array2tree.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if structure was created correctly, +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-EMPTY:CAPS" title="ASN1_ELEMENT_NOT_EMPTY"><code class="literal">ASN1_ELEMENT_NOT_EMPTY</code></a> if *<em class="parameter"><code>definitions</code></em> +not NULL, +<a class="link" href="libtasn1-libtasn1.html#ASN1-IDENTIFIER-NOT-FOUND:CAPS" title="ASN1_IDENTIFIER_NOT_FOUND"><code class="literal">ASN1_IDENTIFIER_NOT_FOUND</code></a> if in the file there is an identifier +that is not defined (see <em class="parameter"><code>errorDescription</code></em> +for more information), +<a class="link" href="libtasn1-libtasn1.html#ASN1-ARRAY-ERROR:CAPS" title="ASN1_ARRAY_ERROR"><code class="literal">ASN1_ARRAY_ERROR</code></a> if the array pointed by <em class="parameter"><code>array</code></em> +is wrong.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-print-structure"></a><h3>asn1_print_structure ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +asn1_print_structure (<em class="parameter"><code><span class="type">FILE</span> *out</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> structure</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">int</span> mode</code></em>);</pre> +<p>Prints on the <em class="parameter"><code>out</code></em> + file descriptor the structure's tree starting +from the <em class="parameter"><code>name</code></em> + element inside the structure <em class="parameter"><code>structure</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-print-structure.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>out</p></td> +<td class="parameter_description"><p>pointer to the output file (e.g. stdout).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>structure</p></td> +<td class="parameter_description"><p>pointer to the structure that you want to visit.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>an element of the structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>mode</p></td> +<td class="parameter_description"><p>specify how much of the structure to print, can be +<a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-NAME:CAPS" title="ASN1_PRINT_NAME"><code class="literal">ASN1_PRINT_NAME</code></a>, <a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-NAME-TYPE:CAPS" title="ASN1_PRINT_NAME_TYPE"><code class="literal">ASN1_PRINT_NAME_TYPE</code></a>, +<a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-NAME-TYPE-VALUE:CAPS" title="ASN1_PRINT_NAME_TYPE_VALUE"><code class="literal">ASN1_PRINT_NAME_TYPE_VALUE</code></a>, or <a class="link" href="libtasn1-libtasn1.html#ASN1-PRINT-ALL:CAPS" title="ASN1_PRINT_ALL"><code class="literal">ASN1_PRINT_ALL</code></a>.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-create-element"></a><h3>asn1_create_element ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_create_element (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> definitions</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *source_name</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *element</code></em>);</pre> +<p>Creates a structure of type <em class="parameter"><code>source_name</code></em> +. Example using + "pkix.asn":</p> +<p>rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr);</p> +<div class="refsect3"> +<a name="asn1-create-element.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>pointer to the structure returned by "parser_asn1" function</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>source_name</p></td> +<td class="parameter_description"><p>the name of the type of the new structure (must be +inside p_structure).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to the structure created.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-create-element.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if creation OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +<em class="parameter"><code>source_name</code></em> +is not known.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-delete-structure"></a><h3>asn1_delete_structure ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_delete_structure (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *structure</code></em>);</pre> +<p>Deletes the structure *<em class="parameter"><code>structure</code></em> +. At the end, *<em class="parameter"><code>structure</code></em> + is set +to NULL.</p> +<div class="refsect3"> +<a name="asn1-delete-structure.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody><tr> +<td class="parameter_name"><p>structure</p></td> +<td class="parameter_description"><p>pointer to the structure that you want to delete.</p></td> +<td class="parameter_annotations"> </td> +</tr></tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-delete-structure.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +*<em class="parameter"><code>structure</code></em> +was NULL.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-delete-structure2"></a><h3>asn1_delete_structure2 ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_delete_structure2 (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *structure</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>);</pre> +<p>Deletes the structure *<em class="parameter"><code>structure</code></em> +. At the end, *<em class="parameter"><code>structure</code></em> + is set +to NULL.</p> +<div class="refsect3"> +<a name="asn1-delete-structure2.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>structure</p></td> +<td class="parameter_description"><p>pointer to the structure that you want to delete.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>flags</p></td> +<td class="parameter_description"><p>additional flags (see <a class="link" href="libtasn1-libtasn1.html#ASN1-DELETE-FLAG-ZEROIZE:CAPS" title="ASN1_DELETE_FLAG_ZEROIZE"><code class="literal">ASN1_DELETE_FLAG_ZEROIZE</code></a>)</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-delete-structure2.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +*<em class="parameter"><code>structure</code></em> +was NULL.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-delete-element"></a><h3>asn1_delete_element ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_delete_element (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> structure</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *element_name</code></em>);</pre> +<p>Deletes the element named *<em class="parameter"><code>element_name</code></em> + inside *<em class="parameter"><code>structure</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-delete-element.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>structure</p></td> +<td class="parameter_description"><p>pointer to the structure that contains the element you +want to delete.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>element_name</p></td> +<td class="parameter_description"><p>element's name you want to delete.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-delete-element.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +the <em class="parameter"><code>element_name</code></em> +was not found.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-write-value"></a><h3>asn1_write_value ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_write_value (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> node_root</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *ivalue</code></em>, + <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre> +<p>Set the value of one element inside a structure.</p> +<p>If an element is OPTIONAL and you want to delete it, you must use +the value=NULL and len=0. Using "pkix.asn":</p> +<p>result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", +NULL, 0);</p> +<p>Description for each type:</p> +<p>INTEGER: VALUE must contain a two's complement form integer.</p> +<p> value[0]=0xFF , len=1 -> integer=-1. + value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. + value[0]=0x01 , len=1 -> integer= 1. + value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. + value="123" , len=0 -> integer= 123.</p> +<p>ENUMERATED: As INTEGER (but only with not negative numbers).</p> +<p>BOOLEAN: VALUE must be the null terminated string "TRUE" or + "FALSE" and LEN != 0.</p> +<p> value="TRUE" , len=1 -> boolean=TRUE. + value="FALSE" , len=1 -> boolean=FALSE.</p> +<p>OBJECT IDENTIFIER: VALUE must be a null terminated string with + each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.</p> +<p> value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.</p> +<p>UTCTime: VALUE must be a null terminated string in one of these + formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", + "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", + "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0.</p> +<p> value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 + at 12h 00m Greenwich Mean Time</p> +<p>GeneralizedTime: VALUE must be in one of this format: + "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", + "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", + "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s + indicates the seconds with any precision like "10.1" or "01.02". + LEN != 0</p> +<p> value="2001010112001.12-0700" , len=1 -> time=Jannuary + 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time</p> +<p>OCTET STRING: VALUE contains the octet string and LEN is the + number of octets.</p> +<p> value="$\backslash$x01$\backslash$x02$\backslash$x03" , + len=3 -> three bytes octet string</p> +<p>GeneralString: VALUE contains the generalstring and LEN is the + number of octets.</p> +<p> value="$\backslash$x01$\backslash$x02$\backslash$x03" , + len=3 -> three bytes generalstring</p> +<p>BIT STRING: VALUE contains the bit string organized by bytes and + LEN is the number of bits.</p> +<p> value="$\backslash$xCF" , len=6 -> bit string="110011" (six + bits)</p> +<p>CHOICE: if NAME indicates a choice type, VALUE must specify one of + the alternatives with a null terminated string. LEN != 0. Using + "pkix.asn"\:</p> +<p> result=asn1_write_value(cert, + "certificate1.tbsCertificate.subject", "rdnSequence", + 1);</p> +<p>ANY: VALUE indicates the der encoding of a structure. LEN != 0.</p> +<p>SEQUENCE OF: VALUE must be the null terminated string "NEW" and + LEN != 0. With this instruction another element is appended in + the sequence. The name of this element will be "?1" if it's the + first one, "?2" for the second and so on.</p> +<p> Using "pkix.asn"\:</p> +<p> result=asn1_write_value(cert, + "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);</p> +<p>SET OF: the same as SEQUENCE OF. Using "pkix.asn":</p> +<p> result=asn1_write_value(cert, + "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);</p> +<div class="refsect3"> +<a name="asn1-write-value.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>node_root</p></td> +<td class="parameter_description"><p>pointer to a structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of the element inside the structure that you want to set.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ivalue</p></td> +<td class="parameter_description"><p>vector used to specify the value to set. If len is >0, +VALUE must be a two's complement form integer. if len=0 *VALUE +must be a null terminated string with an integer value.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>number of bytes of *value to use to set the value: +value[0]..value[len-1] or 0 if value is a null terminated string</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-write-value.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if the value was set, +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if <em class="parameter"><code>name</code></em> +is not a valid element, and +<a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-VALID:CAPS" title="ASN1_VALUE_NOT_VALID"><code class="literal">ASN1_VALUE_NOT_VALID</code></a> if <em class="parameter"><code>ivalue</code></em> +has a wrong format.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-read-value"></a><h3>asn1_read_value ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_read_value (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> root</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">void</span> *ivalue</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>);</pre> +<p>Returns the value of one element inside a structure. +If an element is OPTIONAL and this returns +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a>, it means that this element wasn't present +in the der encoding that created the structure. The first element +of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and +so on. If the <em class="parameter"><code>root</code></em> + provided is a node to specific sequence element, +then the keyword "?CURRENT" is also acceptable and indicates the +current sequence element of this node.</p> +<p>Note that there can be valid values with length zero. In these case +this function will succeed and <em class="parameter"><code>len</code></em> + will be zero.</p> +<p>INTEGER: VALUE will contain a two's complement form integer.</p> +<p> integer=-1 -> value[0]=0xFF , len=1. + integer=1 -> value[0]=0x01 , len=1.</p> +<p>ENUMERATED: As INTEGER (but only with not negative numbers).</p> +<p>BOOLEAN: VALUE will be the null terminated string "TRUE" or + "FALSE" and LEN=5 or LEN=6.</p> +<p>OBJECT IDENTIFIER: VALUE will be a null terminated string with + each number separated by a dot (i.e. "1.2.3.543.1").</p> +<p> LEN = strlen(VALUE)+1</p> +<p>UTCTime: VALUE will be a null terminated string in one of these + formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". + LEN=strlen(VALUE)+1.</p> +<p>GeneralizedTime: VALUE will be a null terminated string in the + same format used to set the value.</p> +<p>OCTET STRING: VALUE will contain the octet string and LEN will be + the number of octets.</p> +<p>GeneralString: VALUE will contain the generalstring and LEN will + be the number of octets.</p> +<p>BIT STRING: VALUE will contain the bit string organized by bytes + and LEN will be the number of bits.</p> +<p>CHOICE: If NAME indicates a choice type, VALUE will specify the + alternative selected.</p> +<p>ANY: If NAME indicates an any type, VALUE will indicate the DER + encoding of the structure actually used.</p> +<div class="refsect3"> +<a name="asn1-read-value.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>root</p></td> +<td class="parameter_description"><p>pointer to a structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of the element inside a structure that you want to read.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ivalue</p></td> +<td class="parameter_description"><p>vector that will contain the element's content, must be a +pointer to memory cells already allocated (may be <code class="literal">NULL</code>).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>number of bytes of *value: value[0]..value[len-1]. Initialy +holds the sizeof value.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-read-value.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if value is returned, +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if <em class="parameter"><code>name</code></em> +is not a valid element, +<a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-FOUND:CAPS" title="ASN1_VALUE_NOT_FOUND"><code class="literal">ASN1_VALUE_NOT_FOUND</code></a> if there isn't any value for the element +selected, and <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ERROR:CAPS" title="ASN1_MEM_ERROR"><code class="literal">ASN1_MEM_ERROR</code></a> if The value vector isn't big enough +to store the result, and in this case <em class="parameter"><code>len</code></em> +will contain the number of +bytes needed. On the occasion that the stored data are of zero-length +this function may return <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> even if the provided <em class="parameter"><code>len</code></em> +is zero.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-read-value-type"></a><h3>asn1_read_value_type ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_read_value_type (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> root</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">void</span> *ivalue</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *etype</code></em>);</pre> +<p>Returns the type and value of one element inside a structure. +If an element is OPTIONAL and this returns +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a>, it means that this element wasn't present +in the der encoding that created the structure. The first element +of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and +so on. If the <em class="parameter"><code>root</code></em> + provided is a node to specific sequence element, +then the keyword "?CURRENT" is also acceptable and indicates the +current sequence element of this node.</p> +<p>Note that there can be valid values with length zero. In these case +this function will succeed and <em class="parameter"><code>len</code></em> + will be zero.</p> +<p>INTEGER: VALUE will contain a two's complement form integer.</p> +<p> integer=-1 -> value[0]=0xFF , len=1. + integer=1 -> value[0]=0x01 , len=1.</p> +<p>ENUMERATED: As INTEGER (but only with not negative numbers).</p> +<p>BOOLEAN: VALUE will be the null terminated string "TRUE" or + "FALSE" and LEN=5 or LEN=6.</p> +<p>OBJECT IDENTIFIER: VALUE will be a null terminated string with + each number separated by a dot (i.e. "1.2.3.543.1").</p> +<p> LEN = strlen(VALUE)+1</p> +<p>UTCTime: VALUE will be a null terminated string in one of these + formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". + LEN=strlen(VALUE)+1.</p> +<p>GeneralizedTime: VALUE will be a null terminated string in the + same format used to set the value.</p> +<p>OCTET STRING: VALUE will contain the octet string and LEN will be + the number of octets.</p> +<p>GeneralString: VALUE will contain the generalstring and LEN will + be the number of octets.</p> +<p>BIT STRING: VALUE will contain the bit string organized by bytes + and LEN will be the number of bits.</p> +<p>CHOICE: If NAME indicates a choice type, VALUE will specify the + alternative selected.</p> +<p>ANY: If NAME indicates an any type, VALUE will indicate the DER + encoding of the structure actually used.</p> +<div class="refsect3"> +<a name="asn1-read-value-type.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>root</p></td> +<td class="parameter_description"><p>pointer to a structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of the element inside a structure that you want to read.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ivalue</p></td> +<td class="parameter_description"><p>vector that will contain the element's content, must be a +pointer to memory cells already allocated (may be <code class="literal">NULL</code>).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>number of bytes of *value: value[0]..value[len-1]. Initialy +holds the sizeof value.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>etype</p></td> +<td class="parameter_description"><p>The type of the value read (ASN1_ETYPE)</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-read-value-type.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if value is returned, +<a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if <em class="parameter"><code>name</code></em> +is not a valid element, +<a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-FOUND:CAPS" title="ASN1_VALUE_NOT_FOUND"><code class="literal">ASN1_VALUE_NOT_FOUND</code></a> if there isn't any value for the element +selected, and <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ERROR:CAPS" title="ASN1_MEM_ERROR"><code class="literal">ASN1_MEM_ERROR</code></a> if The value vector isn't big enough +to store the result, and in this case <em class="parameter"><code>len</code></em> +will contain the number of +bytes needed. On the occasion that the stored data are of zero-length +this function may return <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> even if the provided <em class="parameter"><code>len</code></em> +is zero.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-read-node-value"></a><h3>asn1_read_node_value ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_read_node_value (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> node</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-data-node-st" title="struct asn1_data_node_st"><span class="type">asn1_data_node_st</span></a> *data</code></em>);</pre> +<p>Returns the value a data node inside a asn1_node structure. +The data returned should be handled as constant values.</p> +<div class="refsect3"> +<a name="asn1-read-node-value.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>node</p></td> +<td class="parameter_description"><p>pointer to a node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>data</p></td> +<td class="parameter_description"><p>a point to a asn1_data_node_st</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-read-node-value.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if the node exists.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-number-of-elements"></a><h3>asn1_number_of_elements ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_number_of_elements (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> element</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">int</span> *num</code></em>);</pre> +<p>Counts the number of elements of a sub-structure called NAME with +names equal to "?1","?2", ...</p> +<div class="refsect3"> +<a name="asn1-number-of-elements.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to the root of an ASN1 structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of a sub-structure of ROOT.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>num</p></td> +<td class="parameter_description"><p>pointer to an integer where the result will be stored</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-number-of-elements.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +<em class="parameter"><code>name</code></em> +is not known, <a class="link" href="libtasn1-libtasn1.html#ASN1-GENERIC-ERROR:CAPS" title="ASN1_GENERIC_ERROR"><code class="literal">ASN1_GENERIC_ERROR</code></a> if pointer <em class="parameter"><code>num</code></em> +is <code class="literal">NULL</code>.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-der-coding"></a><h3>asn1_der_coding ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_der_coding (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> element</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">void</span> *ider</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>, + <em class="parameter"><code><span class="type">char</span> *ErrorDescription</code></em>);</pre> +<p>Creates the DER encoding for the NAME structure (inside *POINTER +structure).</p> +<div class="refsect3"> +<a name="asn1-der-coding.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 element</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of the structure you want to encode (it must be +inside *POINTER).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider</p></td> +<td class="parameter_description"><p>vector that will contain the DER encoding. DER must be a +pointer to memory cells already allocated.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>number of bytes of *<em class="parameter"><code>ider</code></em> +: <em class="parameter"><code>ider</code></em> +[0]..<em class="parameter"><code>ider</code></em> +[len-1], Initialy +holds the sizeof of der vector.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ErrorDescription</p></td> +<td class="parameter_description"><p>return the error description or an empty +string if success.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-der-coding.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if <em class="parameter"><code>name</code></em> +is not a valid element, <a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-FOUND:CAPS" title="ASN1_VALUE_NOT_FOUND"><code class="literal">ASN1_VALUE_NOT_FOUND</code></a> if there +is an element without a value, <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ERROR:CAPS" title="ASN1_MEM_ERROR"><code class="literal">ASN1_MEM_ERROR</code></a> if the <em class="parameter"><code>ider</code></em> +vector isn't big enough and in this case <em class="parameter"><code>len</code></em> +will contain the +length needed.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-der-decoding2"></a><h3>asn1_der_decoding2 ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_der_decoding2 (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *element</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *ider</code></em>, + <em class="parameter"><code><span class="type">int</span> *max_ider_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>, + <em class="parameter"><code><span class="type">char</span> *errorDescription</code></em>);</pre> +<p>Fill the structure *<em class="parameter"><code>element</code></em> + with values of a DER encoding string. The +structure must just be created with function <a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()"><code class="function">asn1_create_element()</code></a>.</p> +<p>If <a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-PADDING:CAPS" title="ASN1_DECODE_FLAG_ALLOW_PADDING"><code class="literal">ASN1_DECODE_FLAG_ALLOW_PADDING</code></a> flag is set then the function will ignore +padding after the decoded DER data. Upon a successful return the value of +*<em class="parameter"><code>max_ider_len</code></em> + will be set to the number of bytes decoded.</p> +<p>If <a class="link" href="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-STRICT-DER:CAPS" title="ASN1_DECODE_FLAG_STRICT_DER"><code class="literal">ASN1_DECODE_FLAG_STRICT_DER</code></a> flag is set then the function will +not decode any BER-encoded elements.</p> +<div class="refsect3"> +<a name="asn1-der-decoding2.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider</p></td> +<td class="parameter_description"><p>vector that contains the DER encoding.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>max_ider_len</p></td> +<td class="parameter_description"><p>pointer to an integer giving the information about the +maximal number of bytes occupied by *<em class="parameter"><code>ider</code></em> +. The real size of the DER +encoding is returned through this pointer.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>flags</p></td> +<td class="parameter_description"><p>flags controlling the behaviour of the function.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>errorDescription</p></td> +<td class="parameter_description"><p>null-terminated string contains details when an +error occurred.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-der-decoding2.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if <em class="parameter"><code>ELEMENT</code></em> +is <code class="literal">NULL</code>, and <a class="link" href="libtasn1-libtasn1.html#ASN1-TAG-ERROR:CAPS" title="ASN1_TAG_ERROR"><code class="literal">ASN1_TAG_ERROR</code></a> or +<a class="link" href="libtasn1-libtasn1.html#ASN1-DER-ERROR:CAPS" title="ASN1_DER_ERROR"><code class="literal">ASN1_DER_ERROR</code></a> if the der encoding doesn't match the structure +name (*<em class="parameter"><code>ELEMENT</code></em> +deleted).</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-der-decoding"></a><h3>asn1_der_decoding ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_der_decoding (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *element</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *ider</code></em>, + <em class="parameter"><code><span class="type">int</span> ider_len</code></em>, + <em class="parameter"><code><span class="type">char</span> *errorDescription</code></em>);</pre> +<p>Fill the structure *<em class="parameter"><code>element</code></em> + with values of a DER encoding +string. The structure must just be created with function +<a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()"><code class="function">asn1_create_element()</code></a>.</p> +<p>Note that the *<em class="parameter"><code>element</code></em> + variable is provided as a pointer for +historical reasons.</p> +<div class="refsect3"> +<a name="asn1-der-decoding.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider</p></td> +<td class="parameter_description"><p>vector that contains the DER encoding.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider_len</p></td> +<td class="parameter_description"><p>number of bytes of *<em class="parameter"><code>ider</code></em> +: <em class="parameter"><code>ider</code></em> +[0]..<em class="parameter"><code>ider</code></em> +[len-1].</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>errorDescription</p></td> +<td class="parameter_description"><p>null-terminated string contains details when an +error occurred.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-der-decoding.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if <em class="parameter"><code>ELEMENT</code></em> +is <code class="literal">NULL</code>, and <a class="link" href="libtasn1-libtasn1.html#ASN1-TAG-ERROR:CAPS" title="ASN1_TAG_ERROR"><code class="literal">ASN1_TAG_ERROR</code></a> or +<a class="link" href="libtasn1-libtasn1.html#ASN1-DER-ERROR:CAPS" title="ASN1_DER_ERROR"><code class="literal">ASN1_DER_ERROR</code></a> if the der encoding doesn't match the structure +name (*<em class="parameter"><code>ELEMENT</code></em> +deleted).</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-der-decoding-element"></a><h3>asn1_der_decoding_element ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_der_decoding_element (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *structure</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *elementName</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *ider</code></em>, + <em class="parameter"><code><span class="type">int</span> len</code></em>, + <em class="parameter"><code><span class="type">char</span> *errorDescription</code></em>);</pre> +<div class="warning"><p><code class="literal">asn1_der_decoding_element</code> is deprecated and should not be used in newly-written code.</p></div> +<p>Fill the element named <em class="parameter"><code>ELEMENTNAME</code></em> + with values of a DER encoding +string. The structure must just be created with function +<a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()"><code class="function">asn1_create_element()</code></a>. The DER vector must contain the encoding +string of the whole <em class="parameter"><code>STRUCTURE</code></em> +. If an error occurs during the +decoding procedure, the *<em class="parameter"><code>STRUCTURE</code></em> + is deleted and set equal to +<code class="literal">NULL</code>.</p> +<p>This function is deprecated and may just be an alias to asn1_der_decoding +in future versions. Use <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()"><code class="function">asn1_der_decoding()</code></a> instead.</p> +<div class="refsect3"> +<a name="asn1-der-decoding-element.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>structure</p></td> +<td class="parameter_description"><p>pointer to an ASN1 structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>elementName</p></td> +<td class="parameter_description"><p>name of the element to fill</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider</p></td> +<td class="parameter_description"><p>vector that contains the DER encoding of the whole structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>number of bytes of *der: der[0]..der[len-1]</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>errorDescription</p></td> +<td class="parameter_description"><p>null-terminated string contains details when an +error occurred.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-der-decoding-element.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if ELEMENT is <code class="literal">NULL</code> or <em class="parameter"><code>elementName</code></em> +== NULL, and +<a class="link" href="libtasn1-libtasn1.html#ASN1-TAG-ERROR:CAPS" title="ASN1_TAG_ERROR"><code class="literal">ASN1_TAG_ERROR</code></a> or <a class="link" href="libtasn1-libtasn1.html#ASN1-DER-ERROR:CAPS" title="ASN1_DER_ERROR"><code class="literal">ASN1_DER_ERROR</code></a> if the der encoding doesn't +match the structure <em class="parameter"><code>structure</code></em> +(*ELEMENT deleted).</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-der-decoding-startEnd"></a><h3>asn1_der_decoding_startEnd ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_der_decoding_startEnd (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> element</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *ider</code></em>, + <em class="parameter"><code><span class="type">int</span> ider_len</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name_element</code></em>, + <em class="parameter"><code><span class="type">int</span> *start</code></em>, + <em class="parameter"><code><span class="type">int</span> *end</code></em>);</pre> +<p>Find the start and end point of an element in a DER encoding +string. I mean that if you have a der encoding and you have already +used the function <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()"><code class="function">asn1_der_decoding()</code></a> to fill a structure, it may +happen that you want to find the piece of string concerning an +element of the structure.</p> +<p>One example is the sequence "tbsCertificate" inside an X509 +certificate.</p> +<p>Note that since libtasn1 3.7 the <em class="parameter"><code>ider</code></em> + and <em class="parameter"><code>ider_len</code></em> + parameters +can be omitted, if the element is already decoded using <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()"><code class="function">asn1_der_decoding()</code></a>.</p> +<div class="refsect3"> +<a name="asn1-der-decoding-startEnd.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 element</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider</p></td> +<td class="parameter_description"><p>vector that contains the DER encoding.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ider_len</p></td> +<td class="parameter_description"><p>number of bytes of *<em class="parameter"><code>ider</code></em> +: <em class="parameter"><code>ider</code></em> +[0]..<em class="parameter"><code>ider</code></em> +[len-1]</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name_element</p></td> +<td class="parameter_description"><p>an element of NAME structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>start</p></td> +<td class="parameter_description"><p>the position of the first byte of NAME_ELEMENT decoding +(<em class="parameter"><code>ider</code></em> +[*start])</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>end</p></td> +<td class="parameter_description"><p>the position of the last byte of NAME_ELEMENT decoding +(<em class="parameter"><code>ider</code></em> +[*end])</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-der-decoding-startEnd.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if ELEMENT is <a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><code class="literal">asn1_node</code></a> EMPTY or <em class="parameter"><code>name_element</code></em> +is not a valid +element, <a class="link" href="libtasn1-libtasn1.html#ASN1-TAG-ERROR:CAPS" title="ASN1_TAG_ERROR"><code class="literal">ASN1_TAG_ERROR</code></a> or <a class="link" href="libtasn1-libtasn1.html#ASN1-DER-ERROR:CAPS" title="ASN1_DER_ERROR"><code class="literal">ASN1_DER_ERROR</code></a> if the der encoding +doesn't match the structure ELEMENT.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-expand-any-defined-by"></a><h3>asn1_expand_any_defined_by ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_expand_any_defined_by (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> definitions</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *element</code></em>);</pre> +<p>Expands every "ANY DEFINED BY" element of a structure created from +a DER decoding process (asn1_der_decoding function). The element +ANY must be defined by an OBJECT IDENTIFIER. The type used to +expand the element ANY is the first one following the definition of +the actual value of the OBJECT IDENTIFIER.</p> +<div class="refsect3"> +<a name="asn1-expand-any-defined-by.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>ASN1 definitions</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-expand-any-defined-by.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if Substitution OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ERROR-TYPE-ANY:CAPS" title="ASN1_ERROR_TYPE_ANY"><code class="literal">ASN1_ERROR_TYPE_ANY</code></a> if +some "ANY DEFINED BY" element couldn't be expanded due to a +problem in OBJECT_ID -> TYPE association, or other error codes +depending on DER decoding.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-expand-octet-string"></a><h3>asn1_expand_octet_string ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_expand_octet_string (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> definitions</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> *element</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *octetName</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *objectName</code></em>);</pre> +<p>Expands an "OCTET STRING" element of a structure created from a DER +decoding process (the <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding" title="asn1_der_decoding ()"><code class="function">asn1_der_decoding()</code></a> function). The type used +for expansion is the first one following the definition of the +actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME.</p> +<div class="refsect3"> +<a name="asn1-expand-octet-string.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>ASN1 definitions</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>element</p></td> +<td class="parameter_description"><p>pointer to an ASN1 structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>octetName</p></td> +<td class="parameter_description"><p>name of the OCTECT STRING field to expand.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>objectName</p></td> +<td class="parameter_description"><p>name of the OBJECT IDENTIFIER field to use to define +the type for expansion.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-expand-octet-string.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if substitution OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> +if <em class="parameter"><code>objectName</code></em> +or <em class="parameter"><code>octetName</code></em> +are not correct, +<a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-VALID:CAPS" title="ASN1_VALUE_NOT_VALID"><code class="literal">ASN1_VALUE_NOT_VALID</code></a> if it wasn't possible to find the type to +use for expansion, or other errors depending on DER decoding.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-read-tag"></a><h3>asn1_read_tag ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_read_tag (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> root</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">int</span> *tagValue</code></em>, + <em class="parameter"><code><span class="type">int</span> *classValue</code></em>);</pre> +<p>Returns the TAG and the CLASS of one element inside a structure. +CLASS can have one of these constants: <a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-APPLICATION:CAPS" title="ASN1_CLASS_APPLICATION"><code class="literal">ASN1_CLASS_APPLICATION</code></a>, +<a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-UNIVERSAL:CAPS" title="ASN1_CLASS_UNIVERSAL"><code class="literal">ASN1_CLASS_UNIVERSAL</code></a>, <a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-PRIVATE:CAPS" title="ASN1_CLASS_PRIVATE"><code class="literal">ASN1_CLASS_PRIVATE</code></a> or +<a class="link" href="libtasn1-libtasn1.html#ASN1-CLASS-CONTEXT-SPECIFIC:CAPS" title="ASN1_CLASS_CONTEXT_SPECIFIC"><code class="literal">ASN1_CLASS_CONTEXT_SPECIFIC</code></a>.</p> +<div class="refsect3"> +<a name="asn1-read-tag.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>root</p></td> +<td class="parameter_description"><p>pointer to a structure</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>the name of the element inside a structure.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>tagValue</p></td> +<td class="parameter_description"><p>variable that will contain the TAG value.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>classValue</p></td> +<td class="parameter_description"><p>variable that will specify the TAG type.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-read-tag.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful, <a class="link" href="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS" title="ASN1_ELEMENT_NOT_FOUND"><code class="literal">ASN1_ELEMENT_NOT_FOUND</code></a> if +<em class="parameter"><code>name</code></em> +is not a valid element.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-find-structure-from-oid"></a><h3>asn1_find_structure_from_oid ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * +asn1_find_structure_from_oid (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> definitions</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *oidValue</code></em>);</pre> +<p>Search the structure that is defined just after an OID definition.</p> +<div class="refsect3"> +<a name="asn1-find-structure-from-oid.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>definitions</p></td> +<td class="parameter_description"><p>ASN1 definitions</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>oidValue</p></td> +<td class="parameter_description"><p>value of the OID to search (e.g. "1.2.3.4").</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-find-structure-from-oid.returns"></a><h4>Returns</h4> +<p> <code class="literal">NULL</code> when <em class="parameter"><code>oidValue</code></em> +not found, otherwise the pointer to a +constant string that contains the element name defined just after +the OID.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-check-version"></a><h3>asn1_check_version ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * +asn1_check_version (<em class="parameter"><code>const <span class="type">char</span> *req_version</code></em>);</pre> +<p>Check that the version of the library is at minimum the +requested one and return the version string; return <code class="literal">NULL</code> if the +condition is not satisfied. If a <code class="literal">NULL</code> is passed to this function, +no check is done, but the version string is simply returned.</p> +<p>See <a class="link" href="libtasn1-libtasn1.html#ASN1-VERSION:CAPS" title="ASN1_VERSION"><code class="literal">ASN1_VERSION</code></a> for a suitable <em class="parameter"><code>req_version</code></em> + string.</p> +<div class="refsect3"> +<a name="asn1-check-version.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody><tr> +<td class="parameter_name"><p>req_version</p></td> +<td class="parameter_description"><p>Required version number, or <code class="literal">NULL</code>.</p></td> +<td class="parameter_annotations"> </td> +</tr></tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-check-version.returns"></a><h4>Returns</h4> +<p> Version string of run-time library, or <code class="literal">NULL</code> if the +run-time library does not meet the required version number.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-perror"></a><h3>asn1_perror ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +asn1_perror (<em class="parameter"><code><span class="type">int</span> error</code></em>);</pre> +<p>Prints a string to stderr with a description of an error. This +function is like <code class="function">perror()</code>. The only difference is that it accepts +an error returned by a libtasn1 function.</p> +<div class="refsect3"> +<a name="asn1-perror.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody><tr> +<td class="parameter_name"><p>error</p></td> +<td class="parameter_description"><p>is an error returned by a libtasn1 function.</p></td> +<td class="parameter_annotations"> </td> +</tr></tbody> +</table></div> +</div> +<p class="since">Since: <a class="link" href="api-index-1-6.html#api-index-1.6">1.6</a></p> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-length-der"></a><h3>asn1_get_length_der ()</h3> +<pre class="programlisting"><span class="returnvalue">long</span> +asn1_get_length_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> der_len</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>);</pre> +<p>Extract a length field from DER data.</p> +<div class="refsect3"> +<a name="asn1-get-length-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>Length of DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the DER length field.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-length-der.returns"></a><h4>Returns</h4> +<p> Return the decoded length value, or -1 on indefinite +length, or -2 when the value was too big to fit in a int, or -4 +when the decoded length value plus <em class="parameter"><code>len</code></em> +would exceed <em class="parameter"><code>der_len</code></em> +.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-length-ber"></a><h3>asn1_get_length_ber ()</h3> +<pre class="programlisting"><span class="returnvalue">long</span> +asn1_get_length_ber (<em class="parameter"><code>const unsigned <span class="type">char</span> *ber</code></em>, + <em class="parameter"><code><span class="type">int</span> ber_len</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>);</pre> +<p>Extract a length field from BER data. The difference to +<a class="link" href="libtasn1-libtasn1.html#asn1-get-length-der" title="asn1_get_length_der ()"><code class="function">asn1_get_length_der()</code></a> is that this function will return a length +even if the value has indefinite encoding.</p> +<div class="refsect3"> +<a name="asn1-get-length-ber.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>ber</p></td> +<td class="parameter_description"><p>BER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ber_len</p></td> +<td class="parameter_description"><p>Length of BER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the BER length field.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-length-ber.returns"></a><h4>Returns</h4> +<p> Return the decoded length value, or negative value when +the value was too big.</p> +</div> +<p class="since">Since: <a class="link" href="api-index-2-0.html#api-index-2.0">2.0</a></p> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-length-der"></a><h3>asn1_length_der ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +asn1_length_der (<em class="parameter"><code>unsigned long <span class="type">int</span> len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> *der_len</code></em>);</pre> +<p>Creates the DER encoding of the provided length value. +The <em class="parameter"><code>der</code></em> + buffer must have enough room for the output. The maximum +length this function will encode is <a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-LENGTH-SIZE:CAPS" title="ASN1_MAX_LENGTH_SIZE"><code class="literal">ASN1_MAX_LENGTH_SIZE</code></a>.</p> +<p>To know the size of the DER encoding use a <code class="literal">NULL</code> value for <em class="parameter"><code>der</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-length-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>value to convert.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>buffer to hold the returned encoding (may be <code class="literal">NULL</code>).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>number of meaningful bytes of ANS (der[0]..der[der_len-1]).</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-decode-simple-der"></a><h3>asn1_decode_simple_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_decode_simple_der (<em class="parameter"><code>unsigned <span class="type">int</span> etype</code></em>, + <em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> _der_len</code></em>, + <em class="parameter"><code>const unsigned <span class="type">char</span> **str</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *str_len</code></em>);</pre> +<p>Decodes a simple DER encoded type (e.g. a string, which is not constructed). +The output is a pointer inside the <em class="parameter"><code>der</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-decode-simple-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>etype</p></td> +<td class="parameter_description"><p>The type of the string to be encoded (ASN1_ETYPE_)</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>the encoded string</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>_der_len</p></td> +<td class="parameter_description"><p>the bytes of the encoded string</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>a pointer to the data</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_len</p></td> +<td class="parameter_description"><p>the length of the data</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-decode-simple-der.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful or an error value.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-decode-simple-ber"></a><h3>asn1_decode_simple_ber ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_decode_simple_ber (<em class="parameter"><code>unsigned <span class="type">int</span> etype</code></em>, + <em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> _der_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> **str</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *str_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *ber_len</code></em>);</pre> +<p>Decodes a BER encoded type. The output is an allocated value +of the data. This decodes BER STRINGS only. Other types are +decoded as DER.</p> +<div class="refsect3"> +<a name="asn1-decode-simple-ber.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>etype</p></td> +<td class="parameter_description"><p>The type of the string to be encoded (ASN1_ETYPE_)</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>the encoded string</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>_der_len</p></td> +<td class="parameter_description"><p>the bytes of the encoded string</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>a pointer to the data</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_len</p></td> +<td class="parameter_description"><p>the length of the data</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ber_len</p></td> +<td class="parameter_description"><p>the total length occupied by BER (may be <code class="literal">NULL</code>)</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-decode-simple-ber.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful or an error value.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-encode-simple-der"></a><h3>asn1_encode_simple_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_encode_simple_der (<em class="parameter"><code>unsigned <span class="type">int</span> etype</code></em>, + <em class="parameter"><code>const unsigned <span class="type">char</span> *str</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> str_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *tl</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *tl_len</code></em>);</pre> +<p>Creates the DER encoding for various simple ASN.1 types like strings etc. +It stores the tag and length in <em class="parameter"><code>tl</code></em> +, which should have space for at least +<a class="link" href="libtasn1-libtasn1.html#ASN1-MAX-TL-SIZE:CAPS" title="ASN1_MAX_TL_SIZE"><code class="literal">ASN1_MAX_TL_SIZE</code></a> bytes. Initially <em class="parameter"><code>tl_len</code></em> + should contain the size of <em class="parameter"><code>tl</code></em> +.</p> +<p>The complete DER encoding should consist of the value in <em class="parameter"><code>tl</code></em> + appended +with the provided <em class="parameter"><code>str</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-encode-simple-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>etype</p></td> +<td class="parameter_description"><p>The type of the string to be encoded (ASN1_ETYPE_)</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>the string data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_len</p></td> +<td class="parameter_description"><p>the string length</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>tl</p></td> +<td class="parameter_description"><p>the encoded tag and length</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>tl_len</p></td> +<td class="parameter_description"><p>the bytes of the <em class="parameter"><code>tl</code></em> +field</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-encode-simple-der.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if successful or an error value.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-find-node"></a><h3>asn1_find_node ()</h3> +<pre class="programlisting"><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="returnvalue">asn1_node</span></a> +asn1_find_node (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> pointer</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre> +<p>Searches for an element called <em class="parameter"><code>name</code></em> + starting from <em class="parameter"><code>pointer</code></em> +. The +name is composed by different identifiers separated by dots. When +*<em class="parameter"><code>pointer</code></em> + has a name, the first identifier must be the name of +*<em class="parameter"><code>pointer</code></em> +, otherwise it must be the name of one child of *<em class="parameter"><code>pointer</code></em> +.</p> +<div class="refsect3"> +<a name="asn1-find-node.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>pointer</p></td> +<td class="parameter_description"><p>NODE_ASN element pointer.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>name</p></td> +<td class="parameter_description"><p>null terminated string with the element's name to find.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-find-node.returns"></a><h4>Returns</h4> +<p> the search result, or <code class="literal">NULL</code> if not found.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-copy-node"></a><h3>asn1_copy_node ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_copy_node (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> dst</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *dst_name</code></em>, + <em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> src</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *src_name</code></em>);</pre> +<p>Create a deep copy of a asn1_node variable. That +function requires <em class="parameter"><code>dst</code></em> + to be expanded using <a class="link" href="libtasn1-libtasn1.html#asn1-create-element" title="asn1_create_element ()"><code class="function">asn1_create_element()</code></a>.</p> +<div class="refsect3"> +<a name="asn1-copy-node.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>dst</p></td> +<td class="parameter_description"><p>Destination asn1 node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>dst_name</p></td> +<td class="parameter_description"><p>Field name in destination node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>src</p></td> +<td class="parameter_description"><p>Source asn1 node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>src_name</p></td> +<td class="parameter_description"><p>Field name in source node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-copy-node.returns"></a><h4>Returns</h4> +<p> Return <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> on success.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-dup-node"></a><h3>asn1_dup_node ()</h3> +<pre class="programlisting"><a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="returnvalue">asn1_node</span></a> +asn1_dup_node (<em class="parameter"><code><a class="link" href="libtasn1-libtasn1.html#asn1-node-const" title="asn1_node_const"><span class="type">asn1_node_const</span></a> src</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *src_name</code></em>);</pre> +<p>Create a deep copy of a asn1_node variable. This function +will return an exact copy of the provided structure.</p> +<div class="refsect3"> +<a name="asn1-dup-node.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>src</p></td> +<td class="parameter_description"><p>Source asn1 node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>src_name</p></td> +<td class="parameter_description"><p>Field name in source node.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-dup-node.returns"></a><h4>Returns</h4> +<p> Return <code class="literal">NULL</code> on failure.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-tag-der"></a><h3>asn1_get_tag_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_get_tag_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> der_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *cls</code></em>, + <em class="parameter"><code><span class="type">int</span> *len</code></em>, + <em class="parameter"><code>unsigned <span class="type">long</span> *tag</code></em>);</pre> +<p>Decode the class and TAG from DER code.</p> +<div class="refsect3"> +<a name="asn1-get-tag-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>Length of DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>cls</p></td> +<td class="parameter_description"><p>Output variable containing decoded class.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the DER TAG data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>tag</p></td> +<td class="parameter_description"><p>Output variable containing the decoded tag (may be <code class="literal">NULL</code>).</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-tag-der.returns"></a><h4>Returns</h4> +<p> Returns <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> on success, or an error.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-octet-der"></a><h3>asn1_octet_der ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +asn1_octet_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *str</code></em>, + <em class="parameter"><code><span class="type">int</span> str_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> *der_len</code></em>);</pre> +<p>Creates a length-value DER encoding for the input data. +The DER encoding of the input data will be placed in the <em class="parameter"><code>der</code></em> + variable.</p> +<p>Note that the OCTET STRING tag is not included in the output.</p> +<p>This function does not return any value because it is expected +that <em class="parameter"><code>der_len</code></em> + will contain enough bytes to store the string +plus the DER encoding. The DER encoding size can be obtained using +<a class="link" href="libtasn1-libtasn1.html#asn1-length-der" title="asn1_length_der ()"><code class="function">asn1_length_der()</code></a>.</p> +<div class="refsect3"> +<a name="asn1-octet-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>the input data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_len</p></td> +<td class="parameter_description"><p>STR length (str[0]..str[*str_len-1]).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>encoded string returned.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>number of meaningful bytes of DER (der[0]..der[der_len-1]).</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-octet-der"></a><h3>asn1_get_octet_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_get_octet_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> der_len</code></em>, + <em class="parameter"><code><span class="type">int</span> *ret_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *str</code></em>, + <em class="parameter"><code><span class="type">int</span> str_size</code></em>, + <em class="parameter"><code><span class="type">int</span> *str_len</code></em>);</pre> +<p>Extract an OCTET SEQUENCE from DER data. Note that this function +expects the DER data past the tag field, i.e., the length and +content octets.</p> +<div class="refsect3"> +<a name="asn1-get-octet-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>DER data to decode containing the OCTET SEQUENCE.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>The length of the <em class="parameter"><code>der</code></em> +data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ret_len</p></td> +<td class="parameter_description"><p>Output variable containing the encoded length of the DER data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>Pre-allocated output buffer to put decoded OCTET SEQUENCE in.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_size</p></td> +<td class="parameter_description"><p>Length of pre-allocated output buffer.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the contents of the OCTET SEQUENCE.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-octet-der.returns"></a><h4>Returns</h4> +<p> Returns <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> on success, or an error.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-bit-der"></a><h3>asn1_bit_der ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +asn1_bit_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *str</code></em>, + <em class="parameter"><code><span class="type">int</span> bit_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> *der_len</code></em>);</pre> +<p>Creates a length-value DER encoding for the input data +as it would have been for a BIT STRING. +The DER encoded data will be copied in <em class="parameter"><code>der</code></em> +.</p> +<p>Note that the BIT STRING tag is not included in the output.</p> +<p>This function does not return any value because it is expected +that <em class="parameter"><code>der_len</code></em> + will contain enough bytes to store the string +plus the DER encoding. The DER encoding size can be obtained using +<a class="link" href="libtasn1-libtasn1.html#asn1-length-der" title="asn1_length_der ()"><code class="function">asn1_length_der()</code></a>.</p> +<div class="refsect3"> +<a name="asn1-bit-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>BIT string.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>bit_len</p></td> +<td class="parameter_description"><p>number of meaningful bits in STR.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>string returned.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>number of meaningful bytes of DER +(der[0]..der[ans_len-1]).</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-bit-der"></a><h3>asn1_get_bit_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_get_bit_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> der_len</code></em>, + <em class="parameter"><code><span class="type">int</span> *ret_len</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *str</code></em>, + <em class="parameter"><code><span class="type">int</span> str_size</code></em>, + <em class="parameter"><code><span class="type">int</span> *bit_len</code></em>);</pre> +<p>Extract a BIT SEQUENCE from DER data.</p> +<div class="refsect3"> +<a name="asn1-get-bit-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>DER data to decode containing the BIT SEQUENCE.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>Length of DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ret_len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the DER data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>Pre-allocated output buffer to put decoded BIT SEQUENCE in.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_size</p></td> +<td class="parameter_description"><p>Length of pre-allocated output buffer.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>bit_len</p></td> +<td class="parameter_description"><p>Output variable containing the size of the BIT SEQUENCE.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-bit-der.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> on success, or an error.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-get-object-id-der"></a><h3>asn1_get_object_id_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_get_object_id_der (<em class="parameter"><code>const unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> der_len</code></em>, + <em class="parameter"><code><span class="type">int</span> *ret_len</code></em>, + <em class="parameter"><code><span class="type">char</span> *str</code></em>, + <em class="parameter"><code><span class="type">int</span> str_size</code></em>);</pre> +<p>Converts a DER encoded object identifier to its textual form. This +function expects the DER object identifier without the tag.</p> +<div class="refsect3"> +<a name="asn1-get-object-id-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>DER data to decode containing the OBJECT IDENTIFIER</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>Length of DER data to decode.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>ret_len</p></td> +<td class="parameter_description"><p>Output variable containing the length of the DER data.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>Pre-allocated output buffer to put the textual object id in.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>str_size</p></td> +<td class="parameter_description"><p>Length of pre-allocated output buffer.</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-get-object-id-der.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> on success, or an error.</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-object-id-der"></a><h3>asn1_object_id_der ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> +asn1_object_id_der (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>, + <em class="parameter"><code>unsigned <span class="type">char</span> *der</code></em>, + <em class="parameter"><code><span class="type">int</span> *der_len</code></em>, + <em class="parameter"><code><span class="type">unsigned </span> flags</code></em>);</pre> +<p>Creates the DER encoding of the provided object identifier.</p> +<div class="refsect3"> +<a name="asn1-object-id-der.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>str</p></td> +<td class="parameter_description"><p>An object identifier in numeric, dot format.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der</p></td> +<td class="parameter_description"><p>buffer to hold the returned encoding (may be <code class="literal">NULL</code>).</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>der_len</p></td> +<td class="parameter_description"><p>initially the size of <em class="parameter"><code>der</code></em> +; will hold the final size.</p></td> +<td class="parameter_annotations"> </td> +</tr> +<tr> +<td class="parameter_name"><p>flags</p></td> +<td class="parameter_description"><p>must be zero</p></td> +<td class="parameter_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="asn1-object-id-der.returns"></a><h4>Returns</h4> +<p> <a class="link" href="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS" title="ASN1_SUCCESS"><code class="literal">ASN1_SUCCESS</code></a> if DER encoding was OK, <a class="link" href="libtasn1-libtasn1.html#ASN1-VALUE-NOT-VALID:CAPS" title="ASN1_VALUE_NOT_VALID"><code class="literal">ASN1_VALUE_NOT_VALID</code></a> +if <em class="parameter"><code>str</code></em> +is not a valid OID, <a class="link" href="libtasn1-libtasn1.html#ASN1-MEM-ERROR:CAPS" title="ASN1_MEM_ERROR"><code class="literal">ASN1_MEM_ERROR</code></a> if the <em class="parameter"><code>der</code></em> +vector isn't big enough and in this case <em class="parameter"><code>der_len</code></em> +will contain the +length needed.</p> +</div> +</div> </div> <div class="refsect1"> <a name="libtasn1-libtasn1.other_details"></a><h2>Types and Values</h2> <div class="refsect2"> <a name="ASN1-API:CAPS"></a><h3>ASN1_API</h3> -<pre class="programlisting">#define ASN1_API __attribute__((__visibility__("default"))) +<pre class="programlisting"># define ASN1_API __attribute__((__visibility__("default"))) </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-VERSION:CAPS"></a><h3>ASN1_VERSION</h3> -<pre class="programlisting">#define ASN1_VERSION "4.14" +<pre class="programlisting"># define ASN1_VERSION "4.19.0" </pre> <p>Version of the library as a string.</p> </div> <hr> <div class="refsect2"> +<a name="ASN1-VERSION-MAJOR:CAPS"></a><h3>ASN1_VERSION_MAJOR</h3> +<pre class="programlisting"># define ASN1_VERSION_MAJOR 4 +</pre> +<p>Major version number of the library.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-VERSION-MINOR:CAPS"></a><h3>ASN1_VERSION_MINOR</h3> +<pre class="programlisting"># define ASN1_VERSION_MINOR 19 +</pre> +<p>Minor version number of the library.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-VERSION-PATCH:CAPS"></a><h3>ASN1_VERSION_PATCH</h3> +<pre class="programlisting"># define ASN1_VERSION_PATCH 0 +</pre> +<p>Patch version number of the library.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-VERSION-NUMBER:CAPS"></a><h3>ASN1_VERSION_NUMBER</h3> +<pre class="programlisting"># define ASN1_VERSION_NUMBER 0x041300 +</pre> +<p>Version number of the library as a number.</p> +</div> +<hr> +<div class="refsect2"> <a name="ASN1-SUCCESS:CAPS"></a><h3>ASN1_SUCCESS</h3> -<pre class="programlisting">#define ASN1_SUCCESS 0 +<pre class="programlisting"># define ASN1_SUCCESS 0 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-FILE-NOT-FOUND:CAPS"></a><h3>ASN1_FILE_NOT_FOUND</h3> -<pre class="programlisting">#define ASN1_FILE_NOT_FOUND 1 +<pre class="programlisting"># define ASN1_FILE_NOT_FOUND 1 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-ELEMENT-NOT-FOUND:CAPS"></a><h3>ASN1_ELEMENT_NOT_FOUND</h3> -<pre class="programlisting">#define ASN1_ELEMENT_NOT_FOUND 2 +<pre class="programlisting"># define ASN1_ELEMENT_NOT_FOUND 2 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-IDENTIFIER-NOT-FOUND:CAPS"></a><h3>ASN1_IDENTIFIER_NOT_FOUND</h3> -<pre class="programlisting">#define ASN1_IDENTIFIER_NOT_FOUND 3 +<pre class="programlisting"># define ASN1_IDENTIFIER_NOT_FOUND 3 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-DER-ERROR:CAPS"></a><h3>ASN1_DER_ERROR</h3> -<pre class="programlisting">#define ASN1_DER_ERROR 4 +<pre class="programlisting"># define ASN1_DER_ERROR 4 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-VALUE-NOT-FOUND:CAPS"></a><h3>ASN1_VALUE_NOT_FOUND</h3> -<pre class="programlisting">#define ASN1_VALUE_NOT_FOUND 5 +<pre class="programlisting"># define ASN1_VALUE_NOT_FOUND 5 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-GENERIC-ERROR:CAPS"></a><h3>ASN1_GENERIC_ERROR</h3> -<pre class="programlisting">#define ASN1_GENERIC_ERROR 6 +<pre class="programlisting"># define ASN1_GENERIC_ERROR 6 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-VALUE-NOT-VALID:CAPS"></a><h3>ASN1_VALUE_NOT_VALID</h3> -<pre class="programlisting">#define ASN1_VALUE_NOT_VALID 7 +<pre class="programlisting"># define ASN1_VALUE_NOT_VALID 7 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-ERROR:CAPS"></a><h3>ASN1_TAG_ERROR</h3> -<pre class="programlisting">#define ASN1_TAG_ERROR 8 +<pre class="programlisting"># define ASN1_TAG_ERROR 8 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-IMPLICIT:CAPS"></a><h3>ASN1_TAG_IMPLICIT</h3> -<pre class="programlisting">#define ASN1_TAG_IMPLICIT 9 +<pre class="programlisting"># define ASN1_TAG_IMPLICIT 9 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-ERROR-TYPE-ANY:CAPS"></a><h3>ASN1_ERROR_TYPE_ANY</h3> -<pre class="programlisting">#define ASN1_ERROR_TYPE_ANY 10 +<pre class="programlisting"># define ASN1_ERROR_TYPE_ANY 10 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-SYNTAX-ERROR:CAPS"></a><h3>ASN1_SYNTAX_ERROR</h3> -<pre class="programlisting">#define ASN1_SYNTAX_ERROR 11 +<pre class="programlisting"># define ASN1_SYNTAX_ERROR 11 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-MEM-ERROR:CAPS"></a><h3>ASN1_MEM_ERROR</h3> -<pre class="programlisting">#define ASN1_MEM_ERROR 12 +<pre class="programlisting"># define ASN1_MEM_ERROR 12 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-MEM-ALLOC-ERROR:CAPS"></a><h3>ASN1_MEM_ALLOC_ERROR</h3> -<pre class="programlisting">#define ASN1_MEM_ALLOC_ERROR 13 +<pre class="programlisting"># define ASN1_MEM_ALLOC_ERROR 13 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-DER-OVERFLOW:CAPS"></a><h3>ASN1_DER_OVERFLOW</h3> -<pre class="programlisting">#define ASN1_DER_OVERFLOW 14 +<pre class="programlisting"># define ASN1_DER_OVERFLOW 14 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-NAME-TOO-LONG:CAPS"></a><h3>ASN1_NAME_TOO_LONG</h3> -<pre class="programlisting">#define ASN1_NAME_TOO_LONG 15 +<pre class="programlisting"># define ASN1_NAME_TOO_LONG 15 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-ARRAY-ERROR:CAPS"></a><h3>ASN1_ARRAY_ERROR</h3> -<pre class="programlisting">#define ASN1_ARRAY_ERROR 16 +<pre class="programlisting"># define ASN1_ARRAY_ERROR 16 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-ELEMENT-NOT-EMPTY:CAPS"></a><h3>ASN1_ELEMENT_NOT_EMPTY</h3> -<pre class="programlisting">#define ASN1_ELEMENT_NOT_EMPTY 17 +<pre class="programlisting"># define ASN1_ELEMENT_NOT_EMPTY 17 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TIME-ENCODING-ERROR:CAPS"></a><h3>ASN1_TIME_ENCODING_ERROR</h3> -<pre class="programlisting">#define ASN1_TIME_ENCODING_ERROR 18 +<pre class="programlisting"># define ASN1_TIME_ENCODING_ERROR 18 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-RECURSION:CAPS"></a><h3>ASN1_RECURSION</h3> +<pre class="programlisting"># define ASN1_RECURSION 19 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-PRINT-NAME:CAPS"></a><h3>ASN1_PRINT_NAME</h3> -<pre class="programlisting">#define ASN1_PRINT_NAME 1 +<pre class="programlisting"># define ASN1_PRINT_NAME 1 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-PRINT-NAME-TYPE:CAPS"></a><h3>ASN1_PRINT_NAME_TYPE</h3> -<pre class="programlisting">#define ASN1_PRINT_NAME_TYPE 2 +<pre class="programlisting"># define ASN1_PRINT_NAME_TYPE 2 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-PRINT-NAME-TYPE-VALUE:CAPS"></a><h3>ASN1_PRINT_NAME_TYPE_VALUE</h3> -<pre class="programlisting">#define ASN1_PRINT_NAME_TYPE_VALUE 3 +<pre class="programlisting"># define ASN1_PRINT_NAME_TYPE_VALUE 3 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-PRINT-ALL:CAPS"></a><h3>ASN1_PRINT_ALL</h3> -<pre class="programlisting">#define ASN1_PRINT_ALL 4 +<pre class="programlisting"># define ASN1_PRINT_ALL 4 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-CLASS-UNIVERSAL:CAPS"></a><h3>ASN1_CLASS_UNIVERSAL</h3> -<pre class="programlisting">#define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */ +<pre class="programlisting"># define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */ </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-CLASS-APPLICATION:CAPS"></a><h3>ASN1_CLASS_APPLICATION</h3> -<pre class="programlisting">#define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */ +<pre class="programlisting"># define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */ </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-CLASS-CONTEXT-SPECIFIC:CAPS"></a><h3>ASN1_CLASS_CONTEXT_SPECIFIC</h3> -<pre class="programlisting">#define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */ +<pre class="programlisting"># define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */ </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-CLASS-PRIVATE:CAPS"></a><h3>ASN1_CLASS_PRIVATE</h3> -<pre class="programlisting">#define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */ +<pre class="programlisting"># define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */ </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-CLASS-STRUCTURED:CAPS"></a><h3>ASN1_CLASS_STRUCTURED</h3> -<pre class="programlisting">#define ASN1_CLASS_STRUCTURED 0x20 +<pre class="programlisting"># define ASN1_CLASS_STRUCTURED 0x20 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-BOOLEAN:CAPS"></a><h3>ASN1_TAG_BOOLEAN</h3> -<pre class="programlisting">#define ASN1_TAG_BOOLEAN 0x01 +<pre class="programlisting"># define ASN1_TAG_BOOLEAN 0x01 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-INTEGER:CAPS"></a><h3>ASN1_TAG_INTEGER</h3> -<pre class="programlisting">#define ASN1_TAG_INTEGER 0x02 +<pre class="programlisting"># define ASN1_TAG_INTEGER 0x02 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-SEQUENCE:CAPS"></a><h3>ASN1_TAG_SEQUENCE</h3> -<pre class="programlisting">#define ASN1_TAG_SEQUENCE 0x10 +<pre class="programlisting"># define ASN1_TAG_SEQUENCE 0x10 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-SET:CAPS"></a><h3>ASN1_TAG_SET</h3> -<pre class="programlisting">#define ASN1_TAG_SET 0x11 +<pre class="programlisting"># define ASN1_TAG_SET 0x11 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-OCTET-STRING:CAPS"></a><h3>ASN1_TAG_OCTET_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_OCTET_STRING 0x04 +<pre class="programlisting"># define ASN1_TAG_OCTET_STRING 0x04 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-BIT-STRING:CAPS"></a><h3>ASN1_TAG_BIT_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_BIT_STRING 0x03 +<pre class="programlisting"># define ASN1_TAG_BIT_STRING 0x03 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-UTCTime"></a><h3>ASN1_TAG_UTCTime</h3> -<pre class="programlisting">#define ASN1_TAG_UTCTime 0x17 +<pre class="programlisting"># define ASN1_TAG_UTCTime 0x17 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-GENERALIZEDTime"></a><h3>ASN1_TAG_GENERALIZEDTime</h3> -<pre class="programlisting">#define ASN1_TAG_GENERALIZEDTime 0x18 +<pre class="programlisting"># define ASN1_TAG_GENERALIZEDTime 0x18 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-OBJECT-ID:CAPS"></a><h3>ASN1_TAG_OBJECT_ID</h3> -<pre class="programlisting">#define ASN1_TAG_OBJECT_ID 0x06 +<pre class="programlisting"># define ASN1_TAG_OBJECT_ID 0x06 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-ENUMERATED:CAPS"></a><h3>ASN1_TAG_ENUMERATED</h3> -<pre class="programlisting">#define ASN1_TAG_ENUMERATED 0x0A +<pre class="programlisting"># define ASN1_TAG_ENUMERATED 0x0A </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-NULL:CAPS"></a><h3>ASN1_TAG_NULL</h3> -<pre class="programlisting">#define ASN1_TAG_NULL 0x05 +<pre class="programlisting"># define ASN1_TAG_NULL 0x05 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-GENERALSTRING:CAPS"></a><h3>ASN1_TAG_GENERALSTRING</h3> -<pre class="programlisting">#define ASN1_TAG_GENERALSTRING 0x1B +<pre class="programlisting"># define ASN1_TAG_GENERALSTRING 0x1B </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-NUMERIC-STRING:CAPS"></a><h3>ASN1_TAG_NUMERIC_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_NUMERIC_STRING 0x12 +<pre class="programlisting"># define ASN1_TAG_NUMERIC_STRING 0x12 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-IA5-STRING:CAPS"></a><h3>ASN1_TAG_IA5_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_IA5_STRING 0x16 +<pre class="programlisting"># define ASN1_TAG_IA5_STRING 0x16 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-TELETEX-STRING:CAPS"></a><h3>ASN1_TAG_TELETEX_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_TELETEX_STRING 0x14 +<pre class="programlisting"># define ASN1_TAG_TELETEX_STRING 0x14 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-PRINTABLE-STRING:CAPS"></a><h3>ASN1_TAG_PRINTABLE_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_PRINTABLE_STRING 0x13 +<pre class="programlisting"># define ASN1_TAG_PRINTABLE_STRING 0x13 </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-UNIVERSAL-STRING:CAPS"></a><h3>ASN1_TAG_UNIVERSAL_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_UNIVERSAL_STRING 0x1C +<pre class="programlisting"># define ASN1_TAG_UNIVERSAL_STRING 0x1C </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-BMP-STRING:CAPS"></a><h3>ASN1_TAG_BMP_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_BMP_STRING 0x1E +<pre class="programlisting"># define ASN1_TAG_BMP_STRING 0x1E </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-UTF8-STRING:CAPS"></a><h3>ASN1_TAG_UTF8_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_UTF8_STRING 0x0C +<pre class="programlisting"># define ASN1_TAG_UTF8_STRING 0x0C </pre> </div> <hr> <div class="refsect2"> <a name="ASN1-TAG-VISIBLE-STRING:CAPS"></a><h3>ASN1_TAG_VISIBLE_STRING</h3> -<pre class="programlisting">#define ASN1_TAG_VISIBLE_STRING 0x1A +<pre class="programlisting"># define ASN1_TAG_VISIBLE_STRING 0x1A </pre> </div> <hr> <div class="refsect2"> <a name="asn1-node-st"></a><h3>asn1_node_st</h3> -<pre class="programlisting">typedef struct asn1_node_st asn1_node_st; +<pre class="programlisting"> typedef struct asn1_node_st asn1_node_st; </pre> </div> <hr> <div class="refsect2"> <a name="asn1-node"></a><h3>asn1_node</h3> -<pre class="programlisting">typedef asn1_node_st *asn1_node; +<pre class="programlisting"> typedef asn1_node_st *asn1_node; </pre> <p>Structure definition used for the node of the tree that represents an ASN.1 DEFINITION.</p> </div> <hr> <div class="refsect2"> +<a name="asn1-node-const"></a><h3>asn1_node_const</h3> +<pre class="programlisting"> typedef const asn1_node_st *asn1_node_const; +</pre> +</div> +<hr> +<div class="refsect2"> <a name="ASN1-MAX-NAME-SIZE:CAPS"></a><h3>ASN1_MAX_NAME_SIZE</h3> -<pre class="programlisting">#define ASN1_MAX_NAME_SIZE 64 +<pre class="programlisting"># define ASN1_MAX_NAME_SIZE 64 </pre> <p>Maximum number of characters of a name inside a file with ASN1 definitions.</p> </div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-INVALID:CAPS"></a><h3>ASN1_ETYPE_INVALID</h3> +<pre class="programlisting"># define ASN1_ETYPE_INVALID 0 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-CONSTANT:CAPS"></a><h3>ASN1_ETYPE_CONSTANT</h3> +<pre class="programlisting"># define ASN1_ETYPE_CONSTANT 1 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-IDENTIFIER:CAPS"></a><h3>ASN1_ETYPE_IDENTIFIER</h3> +<pre class="programlisting"># define ASN1_ETYPE_IDENTIFIER 2 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-INTEGER:CAPS"></a><h3>ASN1_ETYPE_INTEGER</h3> +<pre class="programlisting"># define ASN1_ETYPE_INTEGER 3 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-BOOLEAN:CAPS"></a><h3>ASN1_ETYPE_BOOLEAN</h3> +<pre class="programlisting"># define ASN1_ETYPE_BOOLEAN 4 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-SEQUENCE:CAPS"></a><h3>ASN1_ETYPE_SEQUENCE</h3> +<pre class="programlisting"># define ASN1_ETYPE_SEQUENCE 5 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-BIT-STRING:CAPS"></a><h3>ASN1_ETYPE_BIT_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_BIT_STRING 6 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-OCTET-STRING:CAPS"></a><h3>ASN1_ETYPE_OCTET_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_OCTET_STRING 7 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-TAG:CAPS"></a><h3>ASN1_ETYPE_TAG</h3> +<pre class="programlisting"># define ASN1_ETYPE_TAG 8 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-DEFAULT:CAPS"></a><h3>ASN1_ETYPE_DEFAULT</h3> +<pre class="programlisting"># define ASN1_ETYPE_DEFAULT 9 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-SIZE:CAPS"></a><h3>ASN1_ETYPE_SIZE</h3> +<pre class="programlisting"># define ASN1_ETYPE_SIZE 10 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-SEQUENCE-OF:CAPS"></a><h3>ASN1_ETYPE_SEQUENCE_OF</h3> +<pre class="programlisting"># define ASN1_ETYPE_SEQUENCE_OF 11 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-OBJECT-ID:CAPS"></a><h3>ASN1_ETYPE_OBJECT_ID</h3> +<pre class="programlisting"># define ASN1_ETYPE_OBJECT_ID 12 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-ANY:CAPS"></a><h3>ASN1_ETYPE_ANY</h3> +<pre class="programlisting"># define ASN1_ETYPE_ANY 13 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-SET:CAPS"></a><h3>ASN1_ETYPE_SET</h3> +<pre class="programlisting"># define ASN1_ETYPE_SET 14 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-SET-OF:CAPS"></a><h3>ASN1_ETYPE_SET_OF</h3> +<pre class="programlisting"># define ASN1_ETYPE_SET_OF 15 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-DEFINITIONS:CAPS"></a><h3>ASN1_ETYPE_DEFINITIONS</h3> +<pre class="programlisting"># define ASN1_ETYPE_DEFINITIONS 16 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-CHOICE:CAPS"></a><h3>ASN1_ETYPE_CHOICE</h3> +<pre class="programlisting"># define ASN1_ETYPE_CHOICE 18 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-IMPORTS:CAPS"></a><h3>ASN1_ETYPE_IMPORTS</h3> +<pre class="programlisting"># define ASN1_ETYPE_IMPORTS 19 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-NULL:CAPS"></a><h3>ASN1_ETYPE_NULL</h3> +<pre class="programlisting"># define ASN1_ETYPE_NULL 20 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-ENUMERATED:CAPS"></a><h3>ASN1_ETYPE_ENUMERATED</h3> +<pre class="programlisting"># define ASN1_ETYPE_ENUMERATED 21 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-GENERALSTRING:CAPS"></a><h3>ASN1_ETYPE_GENERALSTRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_GENERALSTRING 27 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-NUMERIC-STRING:CAPS"></a><h3>ASN1_ETYPE_NUMERIC_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_NUMERIC_STRING 28 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-IA5-STRING:CAPS"></a><h3>ASN1_ETYPE_IA5_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_IA5_STRING 29 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-TELETEX-STRING:CAPS"></a><h3>ASN1_ETYPE_TELETEX_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_TELETEX_STRING 30 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-PRINTABLE-STRING:CAPS"></a><h3>ASN1_ETYPE_PRINTABLE_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_PRINTABLE_STRING 31 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-UNIVERSAL-STRING:CAPS"></a><h3>ASN1_ETYPE_UNIVERSAL_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_UNIVERSAL_STRING 32 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-BMP-STRING:CAPS"></a><h3>ASN1_ETYPE_BMP_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_BMP_STRING 33 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-UTF8-STRING:CAPS"></a><h3>ASN1_ETYPE_UTF8_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_UTF8_STRING 34 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-VISIBLE-STRING:CAPS"></a><h3>ASN1_ETYPE_VISIBLE_STRING</h3> +<pre class="programlisting"># define ASN1_ETYPE_VISIBLE_STRING 35 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-UTC-TIME:CAPS"></a><h3>ASN1_ETYPE_UTC_TIME</h3> +<pre class="programlisting"># define ASN1_ETYPE_UTC_TIME 36 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ETYPE-GENERALIZED-TIME:CAPS"></a><h3>ASN1_ETYPE_GENERALIZED_TIME</h3> +<pre class="programlisting"># define ASN1_ETYPE_GENERALIZED_TIME 37 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-DELETE-FLAG-ZEROIZE:CAPS"></a><h3>ASN1_DELETE_FLAG_ZEROIZE</h3> +<pre class="programlisting"># define ASN1_DELETE_FLAG_ZEROIZE 1 +</pre> +<p>Used by: <a class="link" href="libtasn1-libtasn1.html#asn1-delete-structure2" title="asn1_delete_structure2 ()"><code class="function">asn1_delete_structure2()</code></a></p> +<p>Zeroize values prior to deinitialization.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-DECODE-FLAG-ALLOW-PADDING:CAPS"></a><h3>ASN1_DECODE_FLAG_ALLOW_PADDING</h3> +<pre class="programlisting"># define ASN1_DECODE_FLAG_ALLOW_PADDING 1 +</pre> +<p>Used by: <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding2" title="asn1_der_decoding2 ()"><code class="function">asn1_der_decoding2()</code></a></p> +<p>This flag would allow arbitrary data past the DER data.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-DECODE-FLAG-STRICT-DER:CAPS"></a><h3>ASN1_DECODE_FLAG_STRICT_DER</h3> +<pre class="programlisting"># define ASN1_DECODE_FLAG_STRICT_DER (1<<1) +</pre> +<p>Used by: <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding2" title="asn1_der_decoding2 ()"><code class="function">asn1_der_decoding2()</code></a></p> +<p>This flag would ensure that no BER decoding takes place.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-DECODE-FLAG-ALLOW-INCORRECT-TIME:CAPS"></a><h3>ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME</h3> +<pre class="programlisting"># define ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME (1<<2) +</pre> +<p>Used by: <a class="link" href="libtasn1-libtasn1.html#asn1-der-decoding2" title="asn1_der_decoding2 ()"><code class="function">asn1_der_decoding2()</code></a></p> +<p>This flag will tolerate Time encoding errors when in strict DER.</p> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-data-node-st"></a><h3>struct asn1_data_node_st</h3> +<pre class="programlisting">struct asn1_data_node_st { + const char *name; /* Node name */ + const void *value; /* Node value */ + unsigned int value_len; /* Node value size */ + unsigned int type; /* Node value type (ASN1_ETYPE_*) */ +}; +</pre> +<p>Data node inside a <a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> structure.</p> +<div class="refsect3"> +<a name="asn1-data-node-st.members"></a><h4>Members</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="300px" class="struct_members_name"> +<col class="struct_members_description"> +<col width="200px" class="struct_members_annotations"> +</colgroup> +<tbody> +<tr> +<td class="struct_member_name"><p>const <span class="type">char</span> *<em class="structfield"><code><a name="asn1-data-node-st.name"></a>name</code></em>;</p></td> +<td class="struct_member_description"><p>Node name</p></td> +<td class="struct_member_annotations"> </td> +</tr> +<tr> +<td class="struct_member_name"><p>const <span class="type">void</span> *<em class="structfield"><code><a name="asn1-data-node-st.value"></a>value</code></em>;</p></td> +<td class="struct_member_description"><p>Node value</p></td> +<td class="struct_member_annotations"> </td> +</tr> +<tr> +<td class="struct_member_name"><p>unsigned <span class="type">int</span> <em class="structfield"><code><a name="asn1-data-node-st.value-len"></a>value_len</code></em>;</p></td> +<td class="struct_member_description"><p>Node value size</p></td> +<td class="struct_member_annotations"> </td> +</tr> +<tr> +<td class="struct_member_name"><p>unsigned <span class="type">int</span> <em class="structfield"><code><a name="asn1-data-node-st.type"></a>type</code></em>;</p></td> +<td class="struct_member_description"><p>Node value type (ASN1_ETYPE_*)</p></td> +<td class="struct_member_annotations"> </td> +</tr> +</tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-MAX-ERROR-DESCRIPTION-SIZE:CAPS"></a><h3>ASN1_MAX_ERROR_DESCRIPTION_SIZE</h3> +<pre class="programlisting"># define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128 +</pre> +<p>Maximum number of characters +of a description message +(null character included).</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-MAX-TAG-SIZE:CAPS"></a><h3>ASN1_MAX_TAG_SIZE</h3> +<pre class="programlisting"># define ASN1_MAX_TAG_SIZE 4 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-MAX-LENGTH-SIZE:CAPS"></a><h3>ASN1_MAX_LENGTH_SIZE</h3> +<pre class="programlisting"># define ASN1_MAX_LENGTH_SIZE 9 +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-MAX-TL-SIZE:CAPS"></a><h3>ASN1_MAX_TL_SIZE</h3> +<pre class="programlisting"># define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE) +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-GCC-ATTR-DEPRECATED:CAPS"></a><h3>_ASN1_GCC_ATTR_DEPRECATED</h3> +<pre class="programlisting"> typedef int asn1_retCode _ASN1_GCC_ATTR_DEPRECATED; +</pre> +<div class="warning"><p><code class="literal">_ASN1_GCC_ATTR_DEPRECATED</code> is deprecated and should not be used in newly-written code.</p></div> +</div> +<hr> +<div class="refsect2"> +<a name="node-asn-struct"></a><h3>node_asn_struct</h3> +<pre class="programlisting"># define node_asn_struct _Pragma ("GCC warning \"'node_asn_struct' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st +</pre> +<div class="warning"> +<p><code class="literal">node_asn_struct</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="node-asn"></a><h3>node_asn</h3> +<pre class="programlisting"># define node_asn _Pragma ("GCC warning \"'node_asn' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st +</pre> +<div class="warning"> +<p><code class="literal">node_asn</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-TYPE:CAPS"></a><h3>ASN1_TYPE</h3> +<pre class="programlisting"># define ASN1_TYPE _Pragma ("GCC warning \"'ASN1_TYPE' macro is deprecated, use 'asn1_node' instead.\"") asn1_node +</pre> +<div class="warning"> +<p><code class="literal">ASN1_TYPE</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <a class="link" href="libtasn1-libtasn1.html#asn1-node" title="asn1_node"><span class="type">asn1_node</span></a> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-TYPE-EMPTY:CAPS"></a><h3>ASN1_TYPE_EMPTY</h3> +<pre class="programlisting"># define ASN1_TYPE_EMPTY _Pragma ("GCC warning \"'ASN1_TYPE_EMPTY' macro is deprecated, use 'NULL' instead.\"") NULL +</pre> +<div class="warning"> +<p><code class="literal">ASN1_TYPE_EMPTY</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use NULL instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="static-struct-asn"></a><h3>static_struct_asn</h3> +<pre class="programlisting"># define static_struct_asn _Pragma ("GCC warning \"'static_struct_asn' macro is deprecated, use 'asn1_static_node_st' instead.\"") asn1_static_node_st +</pre> +<div class="warning"> +<p><code class="literal">static_struct_asn</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <span class="type">asn1_static_node</span> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-ARRAY-TYPE:CAPS"></a><h3>ASN1_ARRAY_TYPE</h3> +<pre class="programlisting"># define ASN1_ARRAY_TYPE _Pragma ("GCC warning \"'ASN1_ARRAY_TYPE' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node +</pre> +<div class="warning"> +<p><code class="literal">ASN1_ARRAY_TYPE</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <span class="type">asn1_static_node</span> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="asn1-static-node-t"></a><h3>asn1_static_node_t</h3> +<pre class="programlisting"># define asn1_static_node_t _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node +</pre> +<div class="warning"> +<p><code class="literal">asn1_static_node_t</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <span class="type">asn1_static_node</span> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="node-data-struct"></a><h3>node_data_struct</h3> +<pre class="programlisting"># define node_data_struct _Pragma ("GCC warning \"'node_data_struct' macro is deprecated, use 'asn1_data_node_st' instead.\"") asn1_data_node_st +</pre> +<div class="warning"> +<p><code class="literal">node_data_struct</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <a class="link" href="libtasn1-libtasn1.html#asn1-data-node-st" title="struct asn1_data_node_st"><span class="type">asn1_data_node_st</span></a> instead.</p> +</div> +<p>Compat #define.</p> +</div> +<hr> +<div class="refsect2"> +<a name="ASN1-DATA-NODE:CAPS"></a><h3>ASN1_DATA_NODE</h3> +<pre class="programlisting"># define ASN1_DATA_NODE _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_data_node_st +</pre> +<div class="warning"> +<p><code class="literal">ASN1_DATA_NODE</code> has been deprecated since version 3.0 and should not be used in newly-written code.</p> +<p>Use <a class="link" href="libtasn1-libtasn1.html#asn1-data-node-st" title="struct asn1_data_node_st"><span class="type">asn1_data_node_st</span></a> instead.</p> +</div> +<p>Compat #define.</p> +</div> </div> </div> <div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> +<hr>Generated by GTK-Doc V1.33.1</div> </body> </html>
\ No newline at end of file diff --git a/doc/reference/html/libtasn1.devhelp2 b/doc/reference/html/libtasn1.devhelp2 index 53e56c1..292e33c 100644 --- a/doc/reference/html/libtasn1.devhelp2 +++ b/doc/reference/html/libtasn1.devhelp2 @@ -4,15 +4,58 @@ <sub name="GNU Libtasn1 API Reference Manual" link="ch01.html"> <sub name="libtasn1" link="libtasn1-libtasn1.html"/> </sub> - <sub name="Object Hierarchy" link="object-tree.html"/> <sub name="API Index" link="api-index-full.html"/> <sub name="Index of deprecated API" link="deprecated-api-index.html"/> <sub name="Index of new API in 1.6" link="api-index-1-6.html"/> <sub name="Index of new API in 2.0" link="api-index-2-0.html"/> </chapters> <functions> + <keyword type="function" name="asn1_parser2tree ()" link="libtasn1-libtasn1.html#asn1-parser2tree"/> + <keyword type="function" name="asn1_parser2array ()" link="libtasn1-libtasn1.html#asn1-parser2array"/> + <keyword type="function" name="asn1_array2tree ()" link="libtasn1-libtasn1.html#asn1-array2tree"/> + <keyword type="function" name="asn1_print_structure ()" link="libtasn1-libtasn1.html#asn1-print-structure"/> + <keyword type="function" name="asn1_create_element ()" link="libtasn1-libtasn1.html#asn1-create-element"/> + <keyword type="function" name="asn1_delete_structure ()" link="libtasn1-libtasn1.html#asn1-delete-structure"/> + <keyword type="function" name="asn1_delete_structure2 ()" link="libtasn1-libtasn1.html#asn1-delete-structure2"/> + <keyword type="function" name="asn1_delete_element ()" link="libtasn1-libtasn1.html#asn1-delete-element"/> + <keyword type="function" name="asn1_write_value ()" link="libtasn1-libtasn1.html#asn1-write-value"/> + <keyword type="function" name="asn1_read_value ()" link="libtasn1-libtasn1.html#asn1-read-value"/> + <keyword type="function" name="asn1_read_value_type ()" link="libtasn1-libtasn1.html#asn1-read-value-type"/> + <keyword type="function" name="asn1_read_node_value ()" link="libtasn1-libtasn1.html#asn1-read-node-value"/> + <keyword type="function" name="asn1_number_of_elements ()" link="libtasn1-libtasn1.html#asn1-number-of-elements"/> + <keyword type="function" name="asn1_der_coding ()" link="libtasn1-libtasn1.html#asn1-der-coding"/> + <keyword type="function" name="asn1_der_decoding2 ()" link="libtasn1-libtasn1.html#asn1-der-decoding2"/> + <keyword type="function" name="asn1_der_decoding ()" link="libtasn1-libtasn1.html#asn1-der-decoding"/> + <keyword type="function" name="asn1_der_decoding_element ()" link="libtasn1-libtasn1.html#asn1-der-decoding-element" deprecated=""/> + <keyword type="function" name="asn1_der_decoding_startEnd ()" link="libtasn1-libtasn1.html#asn1-der-decoding-startEnd"/> + <keyword type="function" name="asn1_expand_any_defined_by ()" link="libtasn1-libtasn1.html#asn1-expand-any-defined-by"/> + <keyword type="function" name="asn1_expand_octet_string ()" link="libtasn1-libtasn1.html#asn1-expand-octet-string"/> + <keyword type="function" name="asn1_read_tag ()" link="libtasn1-libtasn1.html#asn1-read-tag"/> + <keyword type="function" name="asn1_find_structure_from_oid ()" link="libtasn1-libtasn1.html#asn1-find-structure-from-oid"/> + <keyword type="function" name="asn1_check_version ()" link="libtasn1-libtasn1.html#asn1-check-version"/> + <keyword type="function" name="asn1_perror ()" link="libtasn1-libtasn1.html#asn1-perror" since="1.6"/> + <keyword type="function" name="asn1_get_length_der ()" link="libtasn1-libtasn1.html#asn1-get-length-der"/> + <keyword type="function" name="asn1_get_length_ber ()" link="libtasn1-libtasn1.html#asn1-get-length-ber" since="2.0"/> + <keyword type="function" name="asn1_length_der ()" link="libtasn1-libtasn1.html#asn1-length-der"/> + <keyword type="function" name="asn1_decode_simple_der ()" link="libtasn1-libtasn1.html#asn1-decode-simple-der"/> + <keyword type="function" name="asn1_decode_simple_ber ()" link="libtasn1-libtasn1.html#asn1-decode-simple-ber"/> + <keyword type="function" name="asn1_encode_simple_der ()" link="libtasn1-libtasn1.html#asn1-encode-simple-der"/> + <keyword type="function" name="asn1_find_node ()" link="libtasn1-libtasn1.html#asn1-find-node"/> + <keyword type="function" name="asn1_copy_node ()" link="libtasn1-libtasn1.html#asn1-copy-node"/> + <keyword type="function" name="asn1_dup_node ()" link="libtasn1-libtasn1.html#asn1-dup-node"/> + <keyword type="function" name="asn1_get_tag_der ()" link="libtasn1-libtasn1.html#asn1-get-tag-der"/> + <keyword type="function" name="asn1_octet_der ()" link="libtasn1-libtasn1.html#asn1-octet-der"/> + <keyword type="function" name="asn1_get_octet_der ()" link="libtasn1-libtasn1.html#asn1-get-octet-der"/> + <keyword type="function" name="asn1_bit_der ()" link="libtasn1-libtasn1.html#asn1-bit-der"/> + <keyword type="function" name="asn1_get_bit_der ()" link="libtasn1-libtasn1.html#asn1-get-bit-der"/> + <keyword type="function" name="asn1_get_object_id_der ()" link="libtasn1-libtasn1.html#asn1-get-object-id-der"/> + <keyword type="function" name="asn1_object_id_der ()" link="libtasn1-libtasn1.html#asn1-object-id-der"/> <keyword type="macro" name="ASN1_API" link="libtasn1-libtasn1.html#ASN1-API:CAPS"/> <keyword type="macro" name="ASN1_VERSION" link="libtasn1-libtasn1.html#ASN1-VERSION:CAPS"/> + <keyword type="macro" name="ASN1_VERSION_MAJOR" link="libtasn1-libtasn1.html#ASN1-VERSION-MAJOR:CAPS"/> + <keyword type="macro" name="ASN1_VERSION_MINOR" link="libtasn1-libtasn1.html#ASN1-VERSION-MINOR:CAPS"/> + <keyword type="macro" name="ASN1_VERSION_PATCH" link="libtasn1-libtasn1.html#ASN1-VERSION-PATCH:CAPS"/> + <keyword type="macro" name="ASN1_VERSION_NUMBER" link="libtasn1-libtasn1.html#ASN1-VERSION-NUMBER:CAPS"/> <keyword type="macro" name="ASN1_SUCCESS" link="libtasn1-libtasn1.html#ASN1-SUCCESS:CAPS"/> <keyword type="macro" name="ASN1_FILE_NOT_FOUND" link="libtasn1-libtasn1.html#ASN1-FILE-NOT-FOUND:CAPS"/> <keyword type="macro" name="ASN1_ELEMENT_NOT_FOUND" link="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-FOUND:CAPS"/> @@ -32,6 +75,7 @@ <keyword type="macro" name="ASN1_ARRAY_ERROR" link="libtasn1-libtasn1.html#ASN1-ARRAY-ERROR:CAPS"/> <keyword type="macro" name="ASN1_ELEMENT_NOT_EMPTY" link="libtasn1-libtasn1.html#ASN1-ELEMENT-NOT-EMPTY:CAPS"/> <keyword type="macro" name="ASN1_TIME_ENCODING_ERROR" link="libtasn1-libtasn1.html#ASN1-TIME-ENCODING-ERROR:CAPS"/> + <keyword type="macro" name="ASN1_RECURSION" link="libtasn1-libtasn1.html#ASN1-RECURSION:CAPS"/> <keyword type="macro" name="ASN1_PRINT_NAME" link="libtasn1-libtasn1.html#ASN1-PRINT-NAME:CAPS"/> <keyword type="macro" name="ASN1_PRINT_NAME_TYPE" link="libtasn1-libtasn1.html#ASN1-PRINT-NAME-TYPE:CAPS"/> <keyword type="macro" name="ASN1_PRINT_NAME_TYPE_VALUE" link="libtasn1-libtasn1.html#ASN1-PRINT-NAME-TYPE-VALUE:CAPS"/> @@ -63,6 +107,62 @@ <keyword type="macro" name="ASN1_TAG_VISIBLE_STRING" link="libtasn1-libtasn1.html#ASN1-TAG-VISIBLE-STRING:CAPS"/> <keyword type="typedef" name="asn1_node_st" link="libtasn1-libtasn1.html#asn1-node-st"/> <keyword type="typedef" name="asn1_node" link="libtasn1-libtasn1.html#asn1-node"/> + <keyword type="typedef" name="asn1_node_const" link="libtasn1-libtasn1.html#asn1-node-const"/> <keyword type="macro" name="ASN1_MAX_NAME_SIZE" link="libtasn1-libtasn1.html#ASN1-MAX-NAME-SIZE:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_INVALID" link="libtasn1-libtasn1.html#ASN1-ETYPE-INVALID:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_CONSTANT" link="libtasn1-libtasn1.html#ASN1-ETYPE-CONSTANT:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_IDENTIFIER" link="libtasn1-libtasn1.html#ASN1-ETYPE-IDENTIFIER:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_INTEGER" link="libtasn1-libtasn1.html#ASN1-ETYPE-INTEGER:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_BOOLEAN" link="libtasn1-libtasn1.html#ASN1-ETYPE-BOOLEAN:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_SEQUENCE" link="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_BIT_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-BIT-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_OCTET_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-OCTET-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_TAG" link="libtasn1-libtasn1.html#ASN1-ETYPE-TAG:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_DEFAULT" link="libtasn1-libtasn1.html#ASN1-ETYPE-DEFAULT:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_SIZE" link="libtasn1-libtasn1.html#ASN1-ETYPE-SIZE:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_SEQUENCE_OF" link="libtasn1-libtasn1.html#ASN1-ETYPE-SEQUENCE-OF:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_OBJECT_ID" link="libtasn1-libtasn1.html#ASN1-ETYPE-OBJECT-ID:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_ANY" link="libtasn1-libtasn1.html#ASN1-ETYPE-ANY:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_SET" link="libtasn1-libtasn1.html#ASN1-ETYPE-SET:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_SET_OF" link="libtasn1-libtasn1.html#ASN1-ETYPE-SET-OF:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_DEFINITIONS" link="libtasn1-libtasn1.html#ASN1-ETYPE-DEFINITIONS:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_CHOICE" link="libtasn1-libtasn1.html#ASN1-ETYPE-CHOICE:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_IMPORTS" link="libtasn1-libtasn1.html#ASN1-ETYPE-IMPORTS:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_NULL" link="libtasn1-libtasn1.html#ASN1-ETYPE-NULL:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_ENUMERATED" link="libtasn1-libtasn1.html#ASN1-ETYPE-ENUMERATED:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_GENERALSTRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALSTRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_NUMERIC_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-NUMERIC-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_IA5_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-IA5-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_TELETEX_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-TELETEX-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_PRINTABLE_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-PRINTABLE-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_UNIVERSAL_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-UNIVERSAL-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_BMP_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-BMP-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_UTF8_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-UTF8-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_VISIBLE_STRING" link="libtasn1-libtasn1.html#ASN1-ETYPE-VISIBLE-STRING:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_UTC_TIME" link="libtasn1-libtasn1.html#ASN1-ETYPE-UTC-TIME:CAPS"/> + <keyword type="macro" name="ASN1_ETYPE_GENERALIZED_TIME" link="libtasn1-libtasn1.html#ASN1-ETYPE-GENERALIZED-TIME:CAPS"/> + <keyword type="macro" name="ASN1_DELETE_FLAG_ZEROIZE" link="libtasn1-libtasn1.html#ASN1-DELETE-FLAG-ZEROIZE:CAPS"/> + <keyword type="macro" name="ASN1_DECODE_FLAG_ALLOW_PADDING" link="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-PADDING:CAPS"/> + <keyword type="macro" name="ASN1_DECODE_FLAG_STRICT_DER" link="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-STRICT-DER:CAPS"/> + <keyword type="macro" name="ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME" link="libtasn1-libtasn1.html#ASN1-DECODE-FLAG-ALLOW-INCORRECT-TIME:CAPS"/> + <keyword type="struct" name="struct asn1_data_node_st" link="libtasn1-libtasn1.html#asn1-data-node-st"/> + <keyword type="macro" name="ASN1_MAX_ERROR_DESCRIPTION_SIZE" link="libtasn1-libtasn1.html#ASN1-MAX-ERROR-DESCRIPTION-SIZE:CAPS"/> + <keyword type="macro" name="ASN1_MAX_TAG_SIZE" link="libtasn1-libtasn1.html#ASN1-MAX-TAG-SIZE:CAPS"/> + <keyword type="macro" name="ASN1_MAX_LENGTH_SIZE" link="libtasn1-libtasn1.html#ASN1-MAX-LENGTH-SIZE:CAPS"/> + <keyword type="macro" name="ASN1_MAX_TL_SIZE" link="libtasn1-libtasn1.html#ASN1-MAX-TL-SIZE:CAPS"/> + <keyword type="typedef" name="_ASN1_GCC_ATTR_DEPRECATED" link="libtasn1-libtasn1.html#ASN1-GCC-ATTR-DEPRECATED:CAPS" deprecated=""/> + <keyword type="macro" name="node_asn_struct" link="libtasn1-libtasn1.html#node-asn-struct" deprecated="3.0: Use #asn1_node instead."/> + <keyword type="macro" name="node_asn" link="libtasn1-libtasn1.html#node-asn" deprecated="3.0: Use #asn1_node instead."/> + <keyword type="macro" name="ASN1_TYPE" link="libtasn1-libtasn1.html#ASN1-TYPE:CAPS" deprecated="3.0: Use #asn1_node instead."/> + <keyword type="macro" name="ASN1_TYPE_EMPTY" link="libtasn1-libtasn1.html#ASN1-TYPE-EMPTY:CAPS" deprecated="3.0: Use NULL instead."/> + <keyword type="macro" name="static_struct_asn" link="libtasn1-libtasn1.html#static-struct-asn" deprecated="3.0: Use #asn1_static_node instead."/> + <keyword type="macro" name="ASN1_ARRAY_TYPE" link="libtasn1-libtasn1.html#ASN1-ARRAY-TYPE:CAPS" deprecated="3.0: Use #asn1_static_node instead."/> + <keyword type="macro" name="asn1_static_node_t" link="libtasn1-libtasn1.html#asn1-static-node-t" deprecated="3.0: Use #asn1_static_node instead."/> + <keyword type="macro" name="node_data_struct" link="libtasn1-libtasn1.html#node-data-struct" deprecated="3.0: Use #asn1_data_node_st instead."/> + <keyword type="macro" name="ASN1_DATA_NODE" link="libtasn1-libtasn1.html#ASN1-DATA-NODE:CAPS" deprecated="3.0: Use #asn1_data_node_st instead."/> + <keyword type="member" name="asn1-data-node-st.name" link="libtasn1-libtasn1.html#asn1-data-node-st.name"/> + <keyword type="member" name="asn1-data-node-st.value" link="libtasn1-libtasn1.html#asn1-data-node-st.value"/> + <keyword type="member" name="asn1-data-node-st.value-len" link="libtasn1-libtasn1.html#asn1-data-node-st.value-len"/> + <keyword type="member" name="asn1-data-node-st.type" link="libtasn1-libtasn1.html#asn1-data-node-st.type"/> </functions> </book> diff --git a/doc/reference/html/object-tree.html b/doc/reference/html/object-tree.html deleted file mode 100644 index cc68dfa..0000000 --- a/doc/reference/html/object-tree.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Object Hierarchy: GNU Libtasn1 Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> -<link rel="home" href="index.html" title="GNU Libtasn1 Reference Manual"> -<link rel="up" href="index.html" title="GNU Libtasn1 Reference Manual"> -<link rel="prev" href="libtasn1-libtasn1.html" title="libtasn1"> -<link rel="next" href="api-index-full.html" title="API Index"> -<meta name="generator" content="GTK-Doc V1.28 (XML mode)"> -<link rel="stylesheet" href="style.css" type="text/css"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> -<td width="100%" align="left" class="shortcuts"></td> -<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> -<td><img src="up-insensitive.png" width="16" height="16" border="0"></td> -<td><a accesskey="p" href="libtasn1-libtasn1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> -</tr></table> -<div class="chapter"> -<div class="titlepage"><div><div><h1 class="title"> -<a name="object-tree"></a>Object Hierarchy</h1></div></div></div> -<pre class="screen"> - -</pre> -</div> -<div class="footer"> -<hr>Generated by GTK-Doc V1.28</div> -</body> -</html>
\ No newline at end of file diff --git a/doc/reference/html/right-insensitive.png b/doc/reference/html/right-insensitive.png Binary files differindex ef7d866..763208d 100644 --- a/doc/reference/html/right-insensitive.png +++ b/doc/reference/html/right-insensitive.png diff --git a/doc/reference/html/right.png b/doc/reference/html/right.png Binary files differindex 07fefed..eb90dd4 100644 --- a/doc/reference/html/right.png +++ b/doc/reference/html/right.png diff --git a/doc/reference/html/style.css b/doc/reference/html/style.css index 4be4ede..41781ba 100644 --- a/doc/reference/html/style.css +++ b/doc/reference/html/style.css @@ -61,18 +61,6 @@ a:hover color: #729fcf; } -div.informaltable table -{ - border-collapse: separate; - border-spacing: 1em 0.3em; - border: none; -} - -div.informaltable table td, div.informaltable table th -{ - vertical-align: top; -} - .function_type, .variable_type, .property_type, @@ -127,6 +115,7 @@ td p margin: 0.25em; } +div.informaltable table[border="1"], div.table table { border-collapse: collapse; @@ -135,6 +124,8 @@ div.table table border: solid 1px #babdb6; } +div.informaltable table[border="1"] td, +div.informaltable table th, div.table table td, div.table table th { /* tango:aluminium 3 */ @@ -143,6 +134,7 @@ div.table table td, div.table table th vertical-align: top; } +div.informaltable table[border="1"] th, div.table table th { /* tango:aluminium 2 */ @@ -293,29 +285,11 @@ h2 .extralinks, h3 .extralinks font-weight: normal; } -acronym,abbr +acronym,abbr { border-bottom: 1px dotted gray; } -/* code listings */ - -.listing_code .programlisting .normal, -.listing_code .programlisting .normal a, -.listing_code .programlisting .number, -.listing_code .programlisting .cbracket, -.listing_code .programlisting .symbol { color: #555753; } -.listing_code .programlisting .comment, -.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ -.listing_code .programlisting .function, -.listing_code .programlisting .function a, -.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ -.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ -.listing_code .programlisting .keyword, -.listing_code .programlisting .usertype, -.listing_code .programlisting .type, -.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ - .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; @@ -481,3 +455,76 @@ acronym,abbr } } +pre { line-height: 125%; margin: 0; } +td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; } +span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; } +td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; } +.hll { background-color: #ffffcc } +.c { color: #408080; font-style: italic } /* Comment */ +.err { border: 1px solid #FF0000 } /* Error */ +.k { color: #008000; font-weight: bold } /* Keyword */ +.o { color: #666666 } /* Operator */ +.ch { color: #408080; font-style: italic } /* Comment.Hashbang */ +.cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.cp { color: #BC7A00 } /* Comment.Preproc */ +.cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */ +.c1 { color: #408080; font-style: italic } /* Comment.Single */ +.cs { color: #408080; font-style: italic } /* Comment.Special */ +.gd { color: #A00000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.gr { color: #FF0000 } /* Generic.Error */ +.gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.gi { color: #00A000 } /* Generic.Inserted */ +.go { color: #888888 } /* Generic.Output */ +.gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.gs { font-weight: bold } /* Generic.Strong */ +.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.gt { color: #0044DD } /* Generic.Traceback */ +.kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.kp { color: #008000 } /* Keyword.Pseudo */ +.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.kt { color: #B00040 } /* Keyword.Type */ +.m { color: #666666 } /* Literal.Number */ +.s { color: #BA2121 } /* Literal.String */ +.na { color: #7D9029 } /* Name.Attribute */ +.nb { color: #008000 } /* Name.Builtin */ +.nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.no { color: #880000 } /* Name.Constant */ +.nd { color: #AA22FF } /* Name.Decorator */ +.ni { color: #999999; font-weight: bold } /* Name.Entity */ +.ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.nf { color: #0000FF } /* Name.Function */ +.nl { color: #A0A000 } /* Name.Label */ +.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.nt { color: #008000; font-weight: bold } /* Name.Tag */ +.nv { color: #19177C } /* Name.Variable */ +.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mb { color: #666666 } /* Literal.Number.Bin */ +.mf { color: #666666 } /* Literal.Number.Float */ +.mh { color: #666666 } /* Literal.Number.Hex */ +.mi { color: #666666 } /* Literal.Number.Integer */ +.mo { color: #666666 } /* Literal.Number.Oct */ +.sa { color: #BA2121 } /* Literal.String.Affix */ +.sb { color: #BA2121 } /* Literal.String.Backtick */ +.sc { color: #BA2121 } /* Literal.String.Char */ +.dl { color: #BA2121 } /* Literal.String.Delimiter */ +.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.s2 { color: #BA2121 } /* Literal.String.Double */ +.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.sh { color: #BA2121 } /* Literal.String.Heredoc */ +.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.sx { color: #008000 } /* Literal.String.Other */ +.sr { color: #BB6688 } /* Literal.String.Regex */ +.s1 { color: #BA2121 } /* Literal.String.Single */ +.ss { color: #19177C } /* Literal.String.Symbol */ +.bp { color: #008000 } /* Name.Builtin.Pseudo */ +.fm { color: #0000FF } /* Name.Function.Magic */ +.vc { color: #19177C } /* Name.Variable.Class */ +.vg { color: #19177C } /* Name.Variable.Global */ +.vi { color: #19177C } /* Name.Variable.Instance */ +.vm { color: #19177C } /* Name.Variable.Magic */ +.il { color: #666666 } /* Literal.Number.Integer.Long */
\ No newline at end of file diff --git a/doc/reference/html/up-insensitive.png b/doc/reference/html/up-insensitive.png Binary files differindex 99528f8..478700c 100644 --- a/doc/reference/html/up-insensitive.png +++ b/doc/reference/html/up-insensitive.png diff --git a/doc/reference/html/up.png b/doc/reference/html/up.png Binary files differindex aa6a2ae..636d50d 100644 --- a/doc/reference/html/up.png +++ b/doc/reference/html/up.png diff --git a/doc/reference/libtasn1-docs.xml b/doc/reference/libtasn1-docs.xml index accdb85..02d8865 100644 --- a/doc/reference/libtasn1-docs.xml +++ b/doc/reference/libtasn1-docs.xml @@ -34,27 +34,20 @@ <xi:include href="xml/libtasn1.xml"/> </chapter> - <chapter id="object-tree"> - <title>Object Hierarchy</title> - <xi:include href="xml/tree_index.sgml"/> - </chapter> <index id="api-index-full"> <title>API Index</title> <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> </index> - <index id="deprecated-api-index" role="deprecated"> + <index id="deprecated-api-index"> <title>Index of deprecated API</title> <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include> </index> - <index id="api-index-1-6" role="1.6"> + <index id="api-index-1-6"> <title>Index of new API in 1.6</title> <xi:include href="xml/api-index-1.6.xml"><xi:fallback /></xi:include> </index> - <index id="api-index-2-0" role="2.0"> + <index id="api-index-2-0"> <title>Index of new API in 2.0</title> <xi:include href="xml/api-index-2.0.xml"><xi:fallback /></xi:include> </index> - <!-- enable this when you use gobject introspection annotations - <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> - --> </book> diff --git a/doc/reference/libtasn1-sections.txt b/doc/reference/libtasn1-sections.txt index c9acb7b..ffb6b02 100644 --- a/doc/reference/libtasn1-sections.txt +++ b/doc/reference/libtasn1-sections.txt @@ -2,6 +2,10 @@ <FILE>libtasn1</FILE> ASN1_API ASN1_VERSION +ASN1_VERSION_MAJOR +ASN1_VERSION_MINOR +ASN1_VERSION_PATCH +ASN1_VERSION_NUMBER ASN1_SUCCESS ASN1_FILE_NOT_FOUND ASN1_ELEMENT_NOT_FOUND @@ -21,6 +25,7 @@ ASN1_NAME_TOO_LONG ASN1_ARRAY_ERROR ASN1_ELEMENT_NOT_EMPTY ASN1_TIME_ENCODING_ERROR +ASN1_RECURSION ASN1_PRINT_NAME ASN1_PRINT_NAME_TYPE ASN1_PRINT_NAME_TYPE_VALUE @@ -52,6 +57,98 @@ ASN1_TAG_UTF8_STRING ASN1_TAG_VISIBLE_STRING asn1_node_st asn1_node +asn1_node_const ASN1_MAX_NAME_SIZE +ASN1_ETYPE_INVALID +ASN1_ETYPE_CONSTANT +ASN1_ETYPE_IDENTIFIER +ASN1_ETYPE_INTEGER +ASN1_ETYPE_BOOLEAN +ASN1_ETYPE_SEQUENCE +ASN1_ETYPE_BIT_STRING +ASN1_ETYPE_OCTET_STRING +ASN1_ETYPE_TAG +ASN1_ETYPE_DEFAULT +ASN1_ETYPE_SIZE +ASN1_ETYPE_SEQUENCE_OF +ASN1_ETYPE_OBJECT_ID +ASN1_ETYPE_ANY +ASN1_ETYPE_SET +ASN1_ETYPE_SET_OF +ASN1_ETYPE_DEFINITIONS +ASN1_ETYPE_CHOICE +ASN1_ETYPE_IMPORTS +ASN1_ETYPE_NULL +ASN1_ETYPE_ENUMERATED +ASN1_ETYPE_GENERALSTRING +ASN1_ETYPE_NUMERIC_STRING +ASN1_ETYPE_IA5_STRING +ASN1_ETYPE_TELETEX_STRING +ASN1_ETYPE_PRINTABLE_STRING +ASN1_ETYPE_UNIVERSAL_STRING +ASN1_ETYPE_BMP_STRING +ASN1_ETYPE_UTF8_STRING +ASN1_ETYPE_VISIBLE_STRING +ASN1_ETYPE_UTC_TIME +ASN1_ETYPE_GENERALIZED_TIME +ASN1_DELETE_FLAG_ZEROIZE +ASN1_DECODE_FLAG_ALLOW_PADDING +ASN1_DECODE_FLAG_STRICT_DER +ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME +asn1_data_node_st +ASN1_MAX_ERROR_DESCRIPTION_SIZE +asn1_parser2tree +asn1_parser2array +asn1_array2tree +asn1_print_structure +asn1_create_element +asn1_delete_structure +asn1_delete_structure2 +asn1_delete_element +asn1_write_value +asn1_read_value +asn1_read_value_type +asn1_read_node_value +asn1_number_of_elements +asn1_der_coding +asn1_der_decoding2 +asn1_der_decoding +asn1_der_decoding_element +asn1_der_decoding_startEnd +asn1_expand_any_defined_by +asn1_expand_octet_string +asn1_read_tag +asn1_find_structure_from_oid +asn1_check_version +asn1_perror +ASN1_MAX_TAG_SIZE +ASN1_MAX_LENGTH_SIZE +ASN1_MAX_TL_SIZE +asn1_get_length_der +asn1_get_length_ber +asn1_length_der +asn1_decode_simple_der +asn1_decode_simple_ber +asn1_encode_simple_der +asn1_find_node +asn1_copy_node +asn1_dup_node +asn1_get_tag_der +asn1_octet_der +asn1_get_octet_der +asn1_bit_der +asn1_get_bit_der +asn1_get_object_id_der +asn1_object_id_der +_ASN1_GCC_ATTR_DEPRECATED +node_asn_struct +node_asn +ASN1_TYPE +ASN1_TYPE_EMPTY +static_struct_asn +ASN1_ARRAY_TYPE +asn1_static_node_t +node_data_struct +ASN1_DATA_NODE </SECTION> diff --git a/doc/reference/libtasn1.types b/doc/reference/libtasn1.types deleted file mode 100644 index e69de29..0000000 --- a/doc/reference/libtasn1.types +++ /dev/null diff --git a/doc/stamp-vti b/doc/stamp-vti index 68715d6..df096db 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 29 March 2019 -@set UPDATED-MONTH March 2019 -@set EDITION 4.14 -@set VERSION 4.14 +@set UPDATED 18 August 2022 +@set UPDATED-MONTH August 2022 +@set EDITION 4.19.0 +@set VERSION 4.19.0 diff --git a/doc/texi/ASN1.c.texi b/doc/texi/ASN1.c.texi index 6c2dc1d..6c9e165 100644 --- a/doc/texi/ASN1.c.texi +++ b/doc/texi/ASN1.c.texi @@ -19,7 +19,7 @@ identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the -file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} +file there is an identifier with more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun @@ -49,7 +49,7 @@ identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occurred while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the -file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} +file there is an identifier with more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun diff --git a/doc/texi/asn1_copy_node.texi b/doc/texi/asn1_copy_node.texi index 267d3fe..4a0dba8 100644 --- a/doc/texi/asn1_copy_node.texi +++ b/doc/texi/asn1_copy_node.texi @@ -1,6 +1,6 @@ @subheading asn1_copy_node @anchor{asn1_copy_node} -@deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) +@deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node_const @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1 node. @var{dst_name}: Field name in destination node. diff --git a/doc/texi/asn1_create_element.texi b/doc/texi/asn1_create_element.texi index f6e6c09..23c348c 100644 --- a/doc/texi/asn1_create_element.texi +++ b/doc/texi/asn1_create_element.texi @@ -1,6 +1,6 @@ @subheading asn1_create_element @anchor{asn1_create_element} -@deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) +@deftypefun {int} {asn1_create_element} (asn1_node_const @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be diff --git a/doc/texi/asn1_delete_structure2.texi b/doc/texi/asn1_delete_structure2.texi index 6bc85aa..7390b9c 100644 --- a/doc/texi/asn1_delete_structure2.texi +++ b/doc/texi/asn1_delete_structure2.texi @@ -3,7 +3,7 @@ @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. -@var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) +@var{flags}: additional flags (see @code{ASN1_DELETE_FLAG_ZEROIZE} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. diff --git a/doc/texi/asn1_der_coding.texi b/doc/texi/asn1_der_coding.texi index 2c8f9ff..49f82ec 100644 --- a/doc/texi/asn1_der_coding.texi +++ b/doc/texi/asn1_der_coding.texi @@ -1,6 +1,6 @@ @subheading asn1_der_coding @anchor{asn1_der_coding} -@deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) +@deftypefun {int} {asn1_der_coding} (asn1_node_const @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be diff --git a/doc/texi/asn1_dup_node.texi b/doc/texi/asn1_dup_node.texi index b2f52b2..97c1b95 100644 --- a/doc/texi/asn1_dup_node.texi +++ b/doc/texi/asn1_dup_node.texi @@ -1,6 +1,6 @@ @subheading asn1_dup_node @anchor{asn1_dup_node} -@deftypefun {asn1_node} {asn1_dup_node} (asn1_node @var{src}, const char * @var{src_name}) +@deftypefun {asn1_node} {asn1_dup_node} (asn1_node_const @var{src}, const char * @var{src_name}) @var{src}: Source asn1 node. @var{src_name}: Field name in source node. diff --git a/doc/texi/asn1_expand_any_defined_by.texi b/doc/texi/asn1_expand_any_defined_by.texi index c17da6b..81a95d4 100644 --- a/doc/texi/asn1_expand_any_defined_by.texi +++ b/doc/texi/asn1_expand_any_defined_by.texi @@ -1,6 +1,6 @@ @subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} -@deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) +@deftypefun {int} {asn1_expand_any_defined_by} (asn1_node_const @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure diff --git a/doc/texi/asn1_expand_octet_string.texi b/doc/texi/asn1_expand_octet_string.texi index a459e32..509842a 100644 --- a/doc/texi/asn1_expand_octet_string.texi +++ b/doc/texi/asn1_expand_octet_string.texi @@ -1,6 +1,6 @@ @subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} -@deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) +@deftypefun {int} {asn1_expand_octet_string} (asn1_node_const @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure diff --git a/doc/texi/asn1_find_node.texi b/doc/texi/asn1_find_node.texi index 9ff06f1..289d1b1 100644 --- a/doc/texi/asn1_find_node.texi +++ b/doc/texi/asn1_find_node.texi @@ -1,6 +1,6 @@ @subheading asn1_find_node @anchor{asn1_find_node} -@deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) +@deftypefun {asn1_node} {asn1_find_node} (asn1_node_const @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. diff --git a/doc/texi/asn1_find_structure_from_oid.texi b/doc/texi/asn1_find_structure_from_oid.texi index 18e7e9b..be5c37a 100644 --- a/doc/texi/asn1_find_structure_from_oid.texi +++ b/doc/texi/asn1_find_structure_from_oid.texi @@ -1,6 +1,6 @@ @subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} -@deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) +@deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node_const @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). diff --git a/doc/texi/asn1_number_of_elements.texi b/doc/texi/asn1_number_of_elements.texi index f4a1ae8..806290c 100644 --- a/doc/texi/asn1_number_of_elements.texi +++ b/doc/texi/asn1_number_of_elements.texi @@ -1,6 +1,6 @@ @subheading asn1_number_of_elements @anchor{asn1_number_of_elements} -@deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) +@deftypefun {int} {asn1_number_of_elements} (asn1_node_const @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. diff --git a/doc/texi/asn1_object_id_der.texi b/doc/texi/asn1_object_id_der.texi new file mode 100644 index 0000000..9b39d9a --- /dev/null +++ b/doc/texi/asn1_object_id_der.texi @@ -0,0 +1,18 @@ +@subheading asn1_object_id_der +@anchor{asn1_object_id_der} +@deftypefun {int} {asn1_object_id_der} (const char * @var{str}, unsigned char * @var{der}, int * @var{der_len}, unsigned @var{flags}) +@var{str}: An object identifier in numeric, dot format. + +@var{der}: buffer to hold the returned encoding (may be @code{NULL} ). + +@var{der_len}: initially the size of @code{der} ; will hold the final size. + +@var{flags}: must be zero + +Creates the DER encoding of the provided object identifier. + +@strong{Returns:} @code{ASN1_SUCCESS} if DER encoding was OK, @code{ASN1_VALUE_NOT_VALID} +if @code{str} is not a valid OID, @code{ASN1_MEM_ERROR} if the @code{der} vector isn't big enough and in this case @code{der_len} will contain the +length needed. +@end deftypefun + diff --git a/doc/texi/asn1_parser2array.texi b/doc/texi/asn1_parser2array.texi index 84c9012..5933e40 100644 --- a/doc/texi/asn1_parser2array.texi +++ b/doc/texi/asn1_parser2array.texi @@ -24,7 +24,7 @@ identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occurred while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the -file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} +file there is an identifier with more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun diff --git a/doc/texi/asn1_parser2tree.texi b/doc/texi/asn1_parser2tree.texi index 5087cd2..508a3a7 100644 --- a/doc/texi/asn1_parser2tree.texi +++ b/doc/texi/asn1_parser2tree.texi @@ -19,7 +19,7 @@ identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the -file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} +file there is an identifier with more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun diff --git a/doc/texi/asn1_print_structure.texi b/doc/texi/asn1_print_structure.texi index 9072bfb..637331e 100644 --- a/doc/texi/asn1_print_structure.texi +++ b/doc/texi/asn1_print_structure.texi @@ -1,6 +1,6 @@ @subheading asn1_print_structure @anchor{asn1_print_structure} -@deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) +@deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node_const @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. diff --git a/doc/texi/asn1_read_node_value.texi b/doc/texi/asn1_read_node_value.texi index fd74bbc..9745569 100644 --- a/doc/texi/asn1_read_node_value.texi +++ b/doc/texi/asn1_read_node_value.texi @@ -1,6 +1,6 @@ @subheading asn1_read_node_value @anchor{asn1_read_node_value} -@deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) +@deftypefun {int} {asn1_read_node_value} (asn1_node_const @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st diff --git a/doc/texi/asn1_read_tag.texi b/doc/texi/asn1_read_tag.texi index 1226e40..6879fb6 100644 --- a/doc/texi/asn1_read_tag.texi +++ b/doc/texi/asn1_read_tag.texi @@ -1,6 +1,6 @@ @subheading asn1_read_tag @anchor{asn1_read_tag} -@deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) +@deftypefun {int} {asn1_read_tag} (asn1_node_const @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. diff --git a/doc/texi/asn1_read_value.texi b/doc/texi/asn1_read_value.texi index f1ea8b6..894cb20 100644 --- a/doc/texi/asn1_read_value.texi +++ b/doc/texi/asn1_read_value.texi @@ -1,6 +1,6 @@ @subheading asn1_read_value @anchor{asn1_read_value} -@deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) +@deftypefun {int} {asn1_read_value} (asn1_node_const @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. diff --git a/doc/texi/asn1_read_value_type.texi b/doc/texi/asn1_read_value_type.texi index 9393761..5a6cce6 100644 --- a/doc/texi/asn1_read_value_type.texi +++ b/doc/texi/asn1_read_value_type.texi @@ -1,6 +1,6 @@ @subheading asn1_read_value_type @anchor{asn1_read_value_type} -@deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) +@deftypefun {int} {asn1_read_value_type} (asn1_node_const @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. diff --git a/doc/texi/coding.c.texi b/doc/texi/coding.c.texi index 7ffdb35..c92c142 100644 --- a/doc/texi/coding.c.texi +++ b/doc/texi/coding.c.texi @@ -59,6 +59,24 @@ with the provided @code{str} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun +@subheading asn1_object_id_der +@anchor{asn1_object_id_der} +@deftypefun {int} {asn1_object_id_der} (const char * @var{str}, unsigned char * @var{der}, int * @var{der_len}, unsigned @var{flags}) +@var{str}: An object identifier in numeric, dot format. + +@var{der}: buffer to hold the returned encoding (may be @code{NULL} ). + +@var{der_len}: initially the size of @code{der} ; will hold the final size. + +@var{flags}: must be zero + +Creates the DER encoding of the provided object identifier. + +@strong{Returns:} @code{ASN1_SUCCESS} if DER encoding was OK, @code{ASN1_VALUE_NOT_VALID} +if @code{str} is not a valid OID, @code{ASN1_MEM_ERROR} if the @code{der} vector isn't big enough and in this case @code{der_len} will contain the +length needed. +@end deftypefun + @subheading asn1_bit_der @anchor{asn1_bit_der} @deftypefun {void} {asn1_bit_der} (const unsigned char * @var{str}, int @var{bit_len}, unsigned char * @var{der}, int * @var{der_len}) @@ -85,7 +103,7 @@ plus the DER encoding. The DER encoding size can be obtained using @subheading asn1_der_coding @anchor{asn1_der_coding} -@deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) +@deftypefun {int} {asn1_der_coding} (asn1_node_const @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be diff --git a/doc/texi/decoding.c.texi b/doc/texi/decoding.c.texi index 2eacc3d..3462c00 100644 --- a/doc/texi/decoding.c.texi +++ b/doc/texi/decoding.c.texi @@ -236,7 +236,7 @@ doesn't match the structure ELEMENT. @subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} -@deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) +@deftypefun {int} {asn1_expand_any_defined_by} (asn1_node_const @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure @@ -255,7 +255,7 @@ depending on DER decoding. @subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} -@deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) +@deftypefun {int} {asn1_expand_octet_string} (asn1_node_const @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure diff --git a/doc/texi/element.c.texi b/doc/texi/element.c.texi index 9f793e5..5d8d328 100644 --- a/doc/texi/element.c.texi +++ b/doc/texi/element.c.texi @@ -111,7 +111,7 @@ result=asn1_write_value(cert, @subheading asn1_read_value @anchor{asn1_read_value} -@deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) +@deftypefun {int} {asn1_read_value} (asn1_node_const @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @@ -182,7 +182,7 @@ this function may return @code{ASN1_SUCCESS} even if the provided @code{len} i @subheading asn1_read_value_type @anchor{asn1_read_value_type} -@deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) +@deftypefun {int} {asn1_read_value_type} (asn1_node_const @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @@ -255,7 +255,7 @@ this function may return @code{ASN1_SUCCESS} even if the provided @code{len} i @subheading asn1_read_tag @anchor{asn1_read_tag} -@deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) +@deftypefun {int} {asn1_read_tag} (asn1_node_const @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. @@ -275,7 +275,7 @@ CLASS can have one of these constants: @code{ASN1_CLASS_APPLICATION} , @subheading asn1_read_node_value @anchor{asn1_read_node_value} -@deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) +@deftypefun {int} {asn1_read_node_value} (asn1_node_const @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st diff --git a/doc/texi/parser_aux.c.texi b/doc/texi/parser_aux.c.texi index 9ff06f1..289d1b1 100644 --- a/doc/texi/parser_aux.c.texi +++ b/doc/texi/parser_aux.c.texi @@ -1,6 +1,6 @@ @subheading asn1_find_node @anchor{asn1_find_node} -@deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) +@deftypefun {asn1_node} {asn1_find_node} (asn1_node_const @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. diff --git a/doc/texi/structure.c.texi b/doc/texi/structure.c.texi index fd3f6c8..77c743b 100644 --- a/doc/texi/structure.c.texi +++ b/doc/texi/structure.c.texi @@ -35,7 +35,7 @@ to NULL. @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. -@var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) +@var{flags}: additional flags (see @code{ASN1_DELETE_FLAG_ZEROIZE} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @@ -60,7 +60,7 @@ the @code{element_name} was not found. @subheading asn1_create_element @anchor{asn1_create_element} -@deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) +@deftypefun {int} {asn1_create_element} (asn1_node_const @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be @@ -79,7 +79,7 @@ rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @subheading asn1_print_structure @anchor{asn1_print_structure} -@deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) +@deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node_const @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @@ -96,7 +96,7 @@ from the @code{name} element inside the structure @code{structure} . @subheading asn1_number_of_elements @anchor{asn1_number_of_elements} -@deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) +@deftypefun {int} {asn1_number_of_elements} (asn1_node_const @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @@ -112,7 +112,7 @@ names equal to "?1","?2", ... @subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} -@deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) +@deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node_const @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). @@ -126,7 +126,7 @@ the OID. @subheading asn1_copy_node @anchor{asn1_copy_node} -@deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) +@deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node_const @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1 node. @var{dst_name}: Field name in destination node. @@ -143,7 +143,7 @@ function requires @code{dst} to be expanded using @code{asn1_create_element()} @subheading asn1_dup_node @anchor{asn1_dup_node} -@deftypefun {asn1_node} {asn1_dup_node} (asn1_node @var{src}, const char * @var{src_name}) +@deftypefun {asn1_node} {asn1_dup_node} (asn1_node_const @var{src}, const char * @var{src_name}) @var{src}: Source asn1 node. @var{src_name}: Field name in source node. diff --git a/doc/texinfo.css b/doc/texinfo.css deleted file mode 100644 index 69614b5..0000000 --- a/doc/texinfo.css +++ /dev/null @@ -1,44 +0,0 @@ -body { - margin: 2%; - padding: 0 5%; - background: #ffffff; -} -h1,h2,h3,h4,h5 { - font-weight: bold; - padding: 5px 5px 5px 5px; - background-color: #c2e0ff; - color: #336699; -} -h1 { - padding: 2em 2em 2em 5%; - color: white; - background: #336699; - text-align: center; - letter-spacing: 3px; -} -h2 { text-decoration: underline; } -pre { - margin: 0 5%; - padding: 0.5em; -} -pre.example { - border: solid 1px; - background: #eeeeff; - padding-bottom: 1em; -} -pre.verbatim { - border: solid 1px gray; - background: white; - padding-bottom: 1em; -} -div.node { - margin: 0 -5% 0 -2%; - padding: 0.5em 0.5em; - margin-top: 0.5em; - margin-bottom: 0.5em; - font-weight: bold; -} -dd, li { - padding-top: 0.1em; - padding-bottom: 0.1em; -} diff --git a/doc/version.texi b/doc/version.texi index 68715d6..df096db 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 29 March 2019 -@set UPDATED-MONTH March 2019 -@set EDITION 4.14 -@set VERSION 4.14 +@set UPDATED 18 August 2022 +@set UPDATED-MONTH August 2022 +@set EDITION 4.19.0 +@set VERSION 4.19.0 |