libcdio-devel
[Top][All Lists]
Advanced

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

Re: [Libcdio-devel] [PATCH 2/5] Add extract ISO/UDF example


From: Rocky Bernstein
Subject: Re: [Libcdio-devel] [PATCH 2/5] Add extract ISO/UDF example
Date: Sun, 12 Feb 2012 09:53:46 -0500

I get a failure running the check_udf.sh created by this patch:

Creating directory: /tmp/udf-6601
> Volume id: CDROM
> Volume set id: CDROM
> Partition number: 0
> Extracting: /tmp/udf-6601/
> Extracting: /tmp/udf-6601/COPYING
> Extracting: /tmp/udf-6601/README
> File offset out of bounds
>   Error reading UDF file /README
> ./check_udf.sh: /tmp/libcdio/test/../example/extract ./data/test-udf1.iso
> /tmp/udf-6601 failed in comparing output.
> FAIL: check_udf.sh
>

 Debugging it,  a wrong value of a field is getting read. From around line
143 of libcdio/lib/udf/udf_file.c :

        ad_offset = sizeof(udf_short_ad_t) * ad_num;
        if (ad_offset > uint32_from_le(p_udf_fe->i_alloc_descs)) {

ad_offset is 16 while uint32_from_le(p_udf_fe->i_alloc_descs) is 8.

The test works  in the pbatard branch; one difference between the two are
the unions added to inlcude/cdio/ecma_167.h and corresponding code
adjustments.

Not strictly related. I have made some changes to extract.c to report
filenames more often on error.

There was an error message already in extract.c that seems to strip of the
prefix of the full path. Although in that instance I didn't modify the
code, in new places where adding a filename I used the full path. It's is
possible to have files in an ISO or UDF that have the same trailing name.

And that reminds me, looking at extract.c I see that creates and writes are
preformed using the full path. That's fine, but in those cases where there
are lots of files to extract and the path is very long, it used to be the
case that you can speed things up (at least on Unix) by doing a CD into the
directory and then doing relative (not absolute) opens and writes. I have
no idea if it will make a difference here, but if speed is a concern, this
is one thing to consider.

Another change to pbatard-integration was to correct the failing
check-cue.sh test. This change I think was already in pbatard, although it
wasn't in master which it should have been. So master has been changed too.

And finally in pbatard and pbatard-integration cdio_config.h how has the
CDIO_ prefixes in #defines.


On Fri, Feb 10, 2012 at 2:34 PM, Pete Batard <address@hidden> wrote:

> * also add UDF extraction test and remove testunconfig
> * also remove some polluting output from test/Makefile
>
> NB: this patch should properly create the 755 permission for the .sh.
> In pbatard-integration I have an additional patch to fix the perms, but it
> shouldn't be needed if you use the attached one.
>
> Regards,
>
> /Pete
>
> From a2313a7f90469e885fd86095deaa85508f6097d6 Mon Sep 17 00:00:00 2001
> From: Pete Batard <address@hidden>
> Date: Fri, 10 Feb 2012 18:25:33 +0000
> Subject: [PATCH 2/5] Add extract ISO/UDF example
>
> * also add UDF test and remove testunconfig
> * also remove some polluting output from test/Makefile
> ---
>  example/.gitignore      |    1 +
>  example/Makefile.am     |    5 +-
>  example/README          |    2 +
>  example/extract.c       |  311
> +++++++++++++++++++++++++++++++++++++++++++++++
>  test/.gitignore         |    1 -
>  test/Makefile.am        |   17 ++--
>  test/check_udf.sh       |   54 ++++++++
>  test/data/test-udf1.iso |  Bin 0 -> 911360 bytes
>  8 files changed, 381 insertions(+), 10 deletions(-)
>  create mode 100644 example/extract.c
>  create mode 100755 test/check_udf.sh
>  create mode 100644 test/data/test-udf1.iso
>
> diff --git a/example/.gitignore b/example/.gitignore
> index 258fcf9..b020928 100644
> --- a/example/.gitignore
> +++ b/example/.gitignore
> @@ -14,6 +14,7 @@
>  /discid
>  /drives
>  /eject
> +/extract
>  /isofile
>  /isofile2
>  /isofuzzy
> diff --git a/example/Makefile.am b/example/Makefile.am
> index de65b5b..995f619 100644
> --- a/example/Makefile.am
> +++ b/example/Makefile.am
> @@ -26,7 +26,7 @@ paranoia_progs = paranoia paranoia2
>  endif
>  if BUILD_EXAMPLES
>  noinst_PROGRAMS = audio cdchange cdtext device discid drives eject \
> -                 isofile isofile2 isofuzzy isolist isolsn \
> +                 extract isofile isofile2 isofuzzy isolist isolsn \
>                  mmc1 mmc2 mmc2a mmc3 $(paranoia_progs) tracks \
>                  sample3 sample4 udf1 udffile cdio-eject
>  endif
> @@ -54,6 +54,9 @@ drives_LDADD          = $(LIBCDIO_LIBS) $(LTLIBICONV)
>  eject_DEPENDENCIES    = $(LIBCDIO_DEPS)
>  eject_LDADD           = $(LIBCDIO_LIBS) $(LTLIBICONV)
>
> +extract_DEPENDENCIES  = $(LIBISO9660_LIBS) $(LIBUDF_LIBS) $(LIBCDIO_DEPS)
> +extract_LDADD         = $(LIBISO9660_LIBS) $(LIBUDF_LIBS) $(LIBCDIO_LIBS)
> $(LTLIBICONV)
> +
>  cdio_eject_DEPENDENCIES = $(LIBCDIO_DEPS)
>  cdio_eject_LDADD        = $(LIBCDIO_LIBS) $(LTLIBICONV)
>
> diff --git a/example/README b/example/README
> index 86b85bf..4a675ba 100644
> --- a/example/README
> +++ b/example/README
> @@ -41,6 +41,8 @@ drives.c:    A program to show drivers installed and
> what the default
>  eject.c:     A program eject a CD from a CD-ROM drive and then close the
> door
>             again.
>
> +extract.c:   Extract the full contents of either an UDF or ISO9660 image
> file.
> +
>  isofile.c:   A program to show using libiso9660 to extract a file from an
>             ISO-9660 image.
>
> diff --git a/example/extract.c b/example/extract.c
> new file mode 100644
> index 0000000..2d9a90c
> --- /dev/null
> +++ b/example/extract.c
> @@ -0,0 +1,311 @@
> +/*
> +  Copyright (C) 2012 Pete Batard <address@hidden>
> +  Based on samples copyright (c) 2003-2011 Rocky Bernstein <address@hidden
> >
> +
> +  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/>.
> +*/
> +
> +/* Extract the full contents of either an UDF or ISO9660 image file.
> +   TODO: timestamp preservation, file permissions, Unicode
> + */
> +
> +/* To handle files > 2 GB, we may need the Large File Support settings
> +   defined in config.h. Comes first, as stdio.h depends on it. */
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#define __CDIO_CONFIG_H__ 1
> +#endif
> +
> +#ifdef HAVE_STDIO_H
> +#include <stdio.h>
> +#endif
> +#ifdef HAVE_STRING_H
> +#include <string.h>
> +#endif
> +#ifdef HAVE_ERRNO_H
> +#include <errno.h>
> +#endif
> +#ifdef HAVE_STDLIB_H
> +#include <stdlib.h>
> +#endif
> +
> +#if defined(_WIN32)
> +#include <direct.h>
> +#else
> +#ifdef HAVE_SYS_STAT_H
> +#include <sys/stat.h>
> +#endif
> +#ifdef HAVE_SYS_TYPES_H
> +#include <sys/types.h>
> +#endif
> +#define _mkdir(a) mkdir(a, S_IRWXU)
> +#endif
> +
> +#if !defined(HAVE_SNPRINTF)
> +/* Fallback to unsafe 'sprintf' */
> +#define snprintf(str, size, format, ...) sprintf(str, format, __VA_ARGS__)
> +#endif
> +
> +#include <cdio/cdio.h>
> +#include <cdio/logging.h>
> +#include <cdio/iso9660.h>
> +#include <cdio/udf.h>
> +
> +#ifndef MIN
> +#define MIN(a,b) (((a) < (b)) ? (a) : (b))
> +#endif
> +
> +#define print_vd_info(title, fn)     \
> +  if (fn(p_iso, &psz_str)) {         \
> +    printf(title ": %s\n", psz_str); \
> +  }                                  \
> +  free(psz_str);                     \
> +  psz_str = NULL;
> +
> +const char *psz_extract_dir;
> +
> +static void log_handler (cdio_log_level_t level, const char *message)
> +{
> +  switch(level) {
> +  case CDIO_LOG_DEBUG:
> +  case CDIO_LOG_INFO:
> +    return;
> +  default:
> +    printf("cdio %d message: %s\n", level, message);
> +  }
> +}
> +
> +static int udf_extract_files(udf_t *p_udf, udf_dirent_t *p_udf_dirent,
> const char *psz_path)
> +{
> +  FILE *fd = NULL;
> +  int i_length;
> +  char* psz_fullpath;
> +  const char* psz_basename;
> +  udf_dirent_t *p_udf_dirent2;
> +  uint8_t buf[UDF_BLOCKSIZE];
> +  int64_t i_read, i_file_length;
> +
> +  if ((p_udf_dirent == NULL) || (psz_path == NULL))
> +    return 1;
> +
> +  while (udf_readdir(p_udf_dirent)) {
> +    psz_basename = udf_get_filename(p_udf_dirent);
> +    i_length = 3 + strlen(psz_path) + strlen(psz_basename) +
> strlen(psz_extract_dir);
> +    psz_fullpath = (char*)calloc(sizeof(char), i_length);
> +    if (psz_fullpath == NULL) {
> +      fprintf(stderr, "Error allocating file name\n");
> +      goto out;
> +    }
> +    i_length = snprintf(psz_fullpath, i_length, "%s%s/%s",
> psz_extract_dir, psz_path, psz_basename);
> +    if (i_length < 0) {
> +      goto out;
> +    }
> +    printf("Extracting: %s\n", psz_fullpath);
> +    if (udf_is_dir(p_udf_dirent)) {
> +      _mkdir(psz_fullpath);
> +      p_udf_dirent2 = udf_opendir(p_udf_dirent);
> +      if (p_udf_dirent2 != NULL) {
> +        if (udf_extract_files(p_udf, p_udf_dirent2,
> &psz_fullpath[strlen(psz_extract_dir)]))
> +          goto out;
> +      }
> +    } else {
> +      fd = fopen(psz_fullpath, "wb");
> +      if (fd == NULL) {
> +        fprintf(stderr, "  Unable to create file\n");
> +        goto out;
> +      }
> +      i_file_length = udf_get_file_length(p_udf_dirent);
> +      while (i_file_length > 0) {
> +        memset(buf, 0, UDF_BLOCKSIZE);
> +        i_read = udf_read_block(p_udf_dirent, buf, 1);
> +        if (i_read < 0) {
> +          fprintf(stderr, "  Error reading UDF file %s\n",
> &psz_fullpath[strlen(psz_extract_dir)]);
> +          goto out;
> +        }
> +        fwrite(buf, (size_t)MIN(i_file_length, i_read), 1, fd);
> +        if (ferror(fd)) {
> +          fprintf(stderr, "  Error writing file: %s\n", strerror(errno));
> +          goto out;
> +        }
> +        i_file_length -= i_read;
> +      }
> +      fclose(fd);
> +      fd = NULL;
> +    }
> +    free(psz_fullpath);
> +  }
> +  return 0;
> +
> +out:
> +  if (fd != NULL)
> +    fclose(fd);
> +  free(psz_fullpath);
> +  return 1;
> +}
> +
> +static int iso_extract_files(iso9660_t* p_iso, const char *psz_path)
> +{
> +  FILE *fd = NULL;
> +  int i_length, r = 1;
> +  char psz_fullpath[4096], *psz_basename;
> +  const char *psz_iso_name = &psz_fullpath[strlen(psz_extract_dir)];
> +  unsigned char buf[ISO_BLOCKSIZE];
> +  CdioListNode_t* p_entnode;
> +  iso9660_stat_t *p_statbuf;
> +  CdioList_t* p_entlist;
> +  size_t i;
> +  lsn_t lsn;
> +  int64_t i_file_length;
> +
> +  if ((p_iso == NULL) || (psz_path == NULL))
> +    return 1;
> +
> +  i_length = snprintf(psz_fullpath, sizeof(psz_fullpath), "%s%s/",
> psz_extract_dir, psz_path);
> +  if (i_length < 0)
> +    return 1;
> +  psz_basename = &psz_fullpath[i_length];
> +
> +  p_entlist = iso9660_ifs_readdir(p_iso, psz_path);
> +  if (!p_entlist)
> +    return 1;
> +
> +  _CDIO_LIST_FOREACH (p_entnode, p_entlist) {
> +    p_statbuf = (iso9660_stat_t*) _cdio_list_node_data(p_entnode);
> +    /* Eliminate . and .. entries */
> +    if ( (strcmp(p_statbuf->filename, ".") == 0)
> +      || (strcmp(p_statbuf->filename, "..") == 0) )
> +      continue;
> +    iso9660_name_translate(p_statbuf->filename, psz_basename);
> +    if (p_statbuf->type == _STAT_DIR) {
> +      _mkdir(psz_fullpath);
> +      if (iso_extract_files(p_iso, psz_iso_name))
> +        goto out;
> +    } else {
> +      printf("Extracting: %s\n", psz_fullpath);
> +      fd = fopen(psz_fullpath, "wb");
> +      if (fd == NULL) {
> +        fprintf(stderr, "  Unable to create file\n");
> +        goto out;
> +      }
> +      i_file_length = p_statbuf->size;
> +      for (i = 0; i_file_length > 0; i++) {
> +        memset(buf, 0, ISO_BLOCKSIZE);
> +        lsn = p_statbuf->lsn + i;
> +        if (iso9660_iso_seek_read(p_iso, buf, lsn, 1) != ISO_BLOCKSIZE) {
> +          fprintf(stderr, "  Error reading ISO9660 file %s at LSN %lu\n",
> +            psz_iso_name, (long unsigned int)lsn);
> +          goto out;
> +        }
> +        fwrite(buf, (size_t)MIN(i_file_length, ISO_BLOCKSIZE), 1, fd);
> +        if (ferror(fd)) {
> +          fprintf(stderr, "  Error writing file: %s\n", strerror(errno));
> +          goto out;
> +        }
> +        i_file_length -= ISO_BLOCKSIZE;
> +      }
> +      fclose(fd);
> +      fd = NULL;
> +    }
> +  }
> +  r = 0;
> +
> +out:
> +  if (fd != NULL)
> +    fclose(fd);
> +  _cdio_list_free(p_entlist, true);
> +  return r;
> +}
> +
> +int main(int argc, char** argv)
> +{
> +  iso9660_t* p_iso = NULL;
> +  udf_t* p_udf = NULL;
> +  udf_dirent_t* p_udf_root;
> +  char *psz_str = NULL;
> +  char vol_id[UDF_VOLID_SIZE] = "";
> +  char volset_id[UDF_VOLSET_ID_SIZE+1] = "";
> +  int r = 0;
> +
> +  cdio_log_set_handler (log_handler);
> +
> +  if (argc < 3) {
> +    fprintf(stderr, "Usage: extract <iso_image> <extraction_dir>\n");
> +    return 1;
> +  }
> +
> +  /* Warn if LFS doesn't appear to be enabled */
> +  if (sizeof(off_t) < 8) {
> +    fprintf(stderr, "INFO: Large File Support not detected (required for
> files >2GB)\n");
> +  }
> +
> +  psz_extract_dir = argv[2];
> +  if (_mkdir(psz_extract_dir) == 0) {
> +    printf("Creating directory: %s\n", psz_extract_dir);
> +  } else if (errno != EEXIST) {
> +    fprintf(stderr, "Unable to create extraction directory %s\n",
> psz_extract_dir);
> +    return 1;
> +  }
> +
> +  /* First try to open as UDF - fallback to ISO if it failed */
> +  p_udf = udf_open(argv[1]);
> +  if (p_udf == NULL)
> +    goto try_iso;
> +
> +  p_udf_root = udf_get_root(p_udf, true, 0);
> +  if (p_udf_root == NULL) {
> +    fprintf(stderr, "Couldn't locate UDF root directory\n");
> +    goto out;
> +  }
> +  vol_id[0] = 0; volset_id[0] = 0;
> +
> +  /* Show basic UDF Volume info */
> +  if (udf_get_volume_id(p_udf, vol_id, sizeof(vol_id)) > 0)
> +    fprintf(stderr, "Volume id: %s\n", vol_id);
> +  if (udf_get_volume_id(p_udf, volset_id, sizeof(volset_id)) >0 ) {
> +    volset_id[UDF_VOLSET_ID_SIZE]='\0';
> +    fprintf(stderr, "Volume set id: %s\n", volset_id);
> +  }
> +  fprintf(stderr, "Partition number: %d\n", udf_get_part_number(p_udf));
> +
> +  /* Recursively extract files */
> +  r = udf_extract_files(p_udf, p_udf_root, "");
> +
> +  goto out;
> +
> +try_iso:
> +  p_iso = iso9660_open(argv[1]);
> +  if (p_iso == NULL) {
> +    fprintf(stderr, "Unable to open image '%s'.\n", argv[1]);
> +    r = 1;
> +    goto out;
> +  }
> +
> +  /* Show basic ISO9660 info from the Primary Volume Descriptor. */
> +  print_vd_info("Application", iso9660_ifs_get_application_id);
> +  print_vd_info("Preparer   ", iso9660_ifs_get_preparer_id);
> +  print_vd_info("Publisher  ", iso9660_ifs_get_publisher_id);
> +  print_vd_info("System     ", iso9660_ifs_get_system_id);
> +  print_vd_info("Volume     ", iso9660_ifs_get_volume_id);
> +  print_vd_info("Volume Set ", iso9660_ifs_get_volumeset_id);
> +
> +  r = iso_extract_files(p_iso, "");
> +
> +out:
> +  if (p_iso != NULL)
> +    iso9660_close(p_iso);
> +  if (p_udf != NULL)
> +    udf_close(p_udf);
> +
> +  return r;
> +}
> diff --git a/test/.gitignore b/test/.gitignore
> index 0f1af53..4d9a925 100644
> --- a/test/.gitignore
> +++ b/test/.gitignore
> @@ -40,4 +40,3 @@
>  /testpregap.c
>  /testsolaris
>  /testtoc
> -/testunconfig
> diff --git a/test/Makefile.am b/test/Makefile.am
> index 903c4d2..2d498f3 100644
> --- a/test/Makefile.am
> +++ b/test/Makefile.am
> @@ -1,4 +1,5 @@
> -#   Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010 Rocky Bernstein <
> address@hidden>
> +#   Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010
> +#   2012 Rocky Bernstein <address@hidden>
>  #
>  #   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
> @@ -30,7 +31,7 @@ endif
>
>  hack = check_sizeof testassert testgetdevices testischar \
>        testisocd testisocd2 testiso9660 test_lib_driver_util \
> -       $(testparanoia) testpregap testunconfig
> +       $(testparanoia) testpregap
>
>  EXTRA_PROGRAMS = testdefault
>  DATA_DIR       = @abs_top_srcdir@/test/data
> @@ -48,20 +49,20 @@ testiso9660_LDADD     = $(LIBISO9660_LIBS)
> $(LIBCDIO_LIBS) $(LTLIBICONV)
>  testisocd_LDADD       = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LTLIBICONV)
>  testisocd2_LDADD      = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LTLIBICONV)
>
> -testunconfig_LDADD    = $(LIBCDIO_LIBS) $(LTLIBICONV)
> -
>  test_lib_driver_util_LDADD    = $(LIBCDIO_LIBS) $(LTLIBICONV)
>  test_lib_driver_util_CFLAGS   = -DDATA_DIR=\"$(DATA_DIR)\"
>
>  testpregap_LDADD    = $(LIBCDIO_LIBS) $(LTLIBICONV)
>  testpregap_CFLAGS   = -DDATA_DIR=\"$(DATA_DIR)\"
>
> -check_SCRIPTS = check_nrg.sh  check_cue.sh  check_cd_read.sh \
> +check_SCRIPTS = check_nrg.sh  check_cue.sh  check_cd_read.sh check_udf.sh
> \
>                 check_iso.sh  check_fuzzyiso.sh check_paranoia.sh
> check_opts.sh
>  # If we beefed this up so it checked to see if a CD-DA was loaded
>  # it could be an automatic test. But for now, not so.
>  #               check_paranoia.sh
>
> +check_udf.sh: @abs_top_builddir@/example/extract
> +
>  check_PROGRAMS = $(hack)
>
>  check_DATA = vcd_demo.right vcd_demo_vcdinfo.right \
> @@ -99,12 +100,12 @@ test: check-am
>  # learning any more of this awful system than I need to.
>  check-am:      make-executable
>  make-executable: check_nrg.sh check_cue.sh check_paranoia.sh
> -       chmod +x *.sh
> -       if test ! -f cdda.bin ; then \
> +       @chmod +x *.sh
> +       @if test ! -f cdda.bin ; then \
>                test -L cdda.bin && $(RM) cdda.bin ; \
>                $(LN_S) $(abs_top_srcdir)/test/data/cdda.bin cdda.bin ; \
>        fi
> -       if test ! -f isofs-m1.bin ; then \
> +       @if test ! -f isofs-m1.bin ; then \
>                test -L cdda.bin && $(RM) isofs-m1.bin ; \
>                $(LN_S) $(abs_top_srcdir)/test/data/isofs-m1.bin
> isofs-m1.bin ;  \
>        fi
> diff --git a/test/check_udf.sh b/test/check_udf.sh
> new file mode 100755
> index 0000000..ae31537
> --- /dev/null
> +++ b/test/check_udf.sh
> @@ -0,0 +1,54 @@
> +#!/bin/sh
> +#   Copyright (C) 2012 Rocky Bernstein <address@hidden>
> +#
> +#   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/>.
> +#
> +# Tests to see that CD reading is correct (via cd-read).
> +
> +if test -z $srcdir ; then
> +  srcdir=`pwd`
> +fi
> +
> +if test "X$top_builddir" = "X" ; then
> +  top_builddir=`pwd`/..
> +fi
> +
> +if test ! -x $top_builddir/example/extract ; then
> +  exit 77
> +fi
> +
> +. ${top_builddir}/test/check_common_fn
> +
> +extract_dir=/tmp/udf-$$
> +if test -d $extract_dir ; then
> +    rm -fr $extract_dir
> +fi
> +
> +udf_iso=$srcdir/data/test-udf1.iso
> +extract_program=$top_builddir/example/extract
> +cmd="$extract_program $udf_iso $extract_dir"
> +$cmd
> +RC=$?
> +check_result $RC "$cmd"
> +
> +if test $RC -eq 0 ; then
> +    rm -fr $extract_dir
> +fi
> +
> +exit $RC
> +
> +#;;; Local Variables: ***
> +#;;; mode:shell-script ***
> +#;;; eval: (sh-set-shell "bash") ***
> +#;;; End: ***
> diff --git a/test/data/test-udf1.iso b/test/data/test-udf1.iso
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..181b9df2621104f9b2e39e368840762a41374b55
> GIT binary patch
> literal 911360
> zcmeIbYj9;(dY*UCbED44B1f?z$5Ev1)=2E0=_|?Mh~#)address@hidden|k4^&z
> z=pzE>KsZ1*TfRxQY)N)5&i#Iu6XhmFNu0Y=l~kq5zfzTos{BV)N&ck#L#psc;@q4l
> address@hidden(%dO61W4X^6(&`|Q2ev%dAc-}=_t>-2j3KmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<
> z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb
> z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##
> zAh58seC^uxh2Glg`kk*;PySh2-rTtL<kM9l`8O8)uZ6!+{(jPLUAEx=^`3dA*H0Jq
> zKNX+#9}C~%|DNwXo9^~(?-~F7Oz&vnd%x$|&;Hgqf6$+=`1w60aC2pSb!%hw*5b{T
> zO8=-{dHLmQSKqj?Roz%!TiLq1wY_qyTH0J$+}_x%E-YQFuD|lii`B}NyBl}bZ!Ryc
> zt(1dby!^toYcE$ndgb=Y;^x-I`qdx3vbFTa>YA+bW?bXbzUGUS4DqY0+tv2U;?vCW
> zgQ4=mwd?->7hkx3{pIV|uU-4C#|~UO^V56miiO?>Q#S7UQ6XSg#t#HO6a>y?{qL>y
> zR(tEcJH4;<s?Psg>Mi#+dmFu5ooB03nWFzcbaka1>inJbdshEHt%K=j;Sc!t`QCGJ
> zWZ}6d>HibT(p>|Ne)|dB?5)UZR(o5rj8)mjV$Vmae5C5V(tBC|cdhsJ-W$Cex~kHD
> zS7mD}`uAP^Z(IMeMJ>s;address@hidden(address@hidden@c%}EE{<YG(qEBqdLf7?-WnJsL
> zd?Pjb_FeRtm_K&ljQn3i|350K{JU4q?Bn<af!})qzf<)8_r55U00Izz00bZaf!{3x
> zudggR|IZHuAOHafKmY>2j|i-9ZC-l;{r`Q`;#3s^5P$##Akgb+Ar<3)3;_ZVfB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<
> z0uX=z1R(J3C9u#t*Zc2v%fs96E>x{sKcnwi-?-H}F#FF>F7*7#bNX*D{`bsFH?FT-
> zf9d7d{SBxueDV6V+3P>(zdqC3*xFvKmL`Ws$HVD#xLe&Bk9H=z!*BS(-|FYT;RmG)
> zf8+aq^HU4o`#sNn+JAm-e>address@hidden@FWZ}Nd$4gm;200Izb5%{<?{D0BkKk#es
> zF8mSwj&address@hidden)!LiY>UeL`y7pZ8nxJn{E8iowXg%=*`R6A;kh?zVrfB<<$Z#A2
> z5P$##eh&address@hidden|<address@hidden|Ky%Mxs;@
> address@hidden@O1Jx&UtRb?{r;Fs`cWU>KchN)E-K+fh9?CMMuYK*t9EW7YS`;N
> address@hidden|1teS!02Lcd)address@hidden;&Tvy
> z00bZa0SJ6#2s|VGucEZ?F8t6(rqmP^0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|address@hidden
> address@hidden&-jz);yZKvO*GHEbmRKU^_O0L{hEGW_~P~Uy;`^Zp#J%pZ}mHizU9w<
> zlQsK|@BhtDEqw3yJojmT?!*3_L*HcGxEulyfB*zO`~*HO4gWhT<`4YZy9?L#JHA!!
> zbN<@address@hidden>!LI2R`cG57?^H2mVjA{R2nL10Vna2teSQC-4dB|9`8G{rFej
> zU3fvi&*^`b`E#FN-`c$9BOlHmmvKS=`C%6ijs0*o5~YFw1Rwx`4=sUDO7Xw0((Qic
> zR~KH??~l2pANBG5GpfVqq7qJIEKLrN4n~9ViK}*QA!^v`J?FogpHJ$ak>2>Q#}X>{
> zS6o)j!0-bB2tWV=5O}`?J|+GCul3=>address@hidden@5P$##AOHafd}IhbBmGZn
> z_1<0h!bhgm6chpwfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf
> zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1R(I?Ch#5F|MzEA#Q*VsdJx|$)Baxi_BYIYs{Kbt
> zm3;b2KK_k-Ctv+NgA3>Me;qgE5Ck9q0SG_<address@hidden>address@hidden<
> z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa
> z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z
> z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=
> z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf
> zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<
> z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb
> z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##
> zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|
> zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<
> z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa
> z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z
> z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=
> z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf
> zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<
> z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb
> z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##
> zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|
> zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<
> z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa
> z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z
> z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=
> z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf
> zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<
> z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb
> z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##
> zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|
> zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<
> z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa
> z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z
> z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=
> z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf
> zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_
> z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz
> z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZ~4+PHj
> z&h`E~Rb=6By}Qs`&address@hidden)zpwc>KM;Tb1Rwwb2+SXWg>$_ds?~q<address@hidden
> address@hidden|SY5n_S`ad6x6F%vmjjip)address@hidden@hdDEpKkz
> zdhhE#pesK40hj-i-*UO1=_w*>{d_Kf-&wv9&<address@hidden(BK`>h2tWV=5cuW@
> zJR`OFyYZ2C7iM(address@hidden>L361}sRe3-E!mrfh&X4PF#RC4NpKIrS
> zC;$AlKiK2~eleY_a|address@hidden)G{7L`rj4wX7KOB#ylhNT||Gkn38XEWfTt>bbKEEIU
> z0SG_<0`HT+g7p7y>a#cR{h`p+g<ikclhDrOpmpBYc~0Q)address@hidden|(*3B6B*xIeSB
> zar^G-`ptCx|DfxC;&y%gr+ob<bj&}WOxJI&EH2+#Nr(address@hidden>{{MA7
> z>u-MHS86TK<Nqwx&G`T4pKHedU;U+2!0*oGeA1Y|ef<55|5IF%9-{D}=jVPVKa*b&
> address@hidden)`|IV+}WAkrB|3BtQ1O1ddL0jja^zZkh|address@hidden>address@hidden
> z$$udL0SG_<0uXqg1QvSFN|rm7`F-Azk3j$e5P$##AOHafKmY;|address@hidden
> zBmh2a?Lv7V009U<00Izz00bZa0SG_<0^d#o3%%!<|NnLZ<z5hg00bZa0SG_<0uX=z
> z1Rwx`4<Uh=|9_78{|{l)P$URI00Izz00bZa0SG_<0uX?}w~fFr#{2*A4uH4U(H6Z&
> z`ue|address@hidden@address@hidden@address@hidden|6_l<
> address@hidden&P7lfA)I6z1LX|eYTWip)SB-D!}1;
> z79c;l`PKW=z3)!X|L(MZ;V*qP7fnUbiG_aNzxc{)address@hidden(s=hFV%
> zFUMW<fl}%6`)uU}vOM9P-e=RZKb!VWdiG=GOnUZrq`i>!XxCIv{`5jG9r_j@>=N?>
> z0SG_<0uY!Xa6Z=mNr9g8?)+W)-+e_}nXkQvs(x2*skhO)-Miac?XCB2_O85#5`JfI
> zv$xV)>@D|h={G+RfB*y_009Vmy9ump{`NwD`xi92UcLSG>#w|WeR2DZm1=Wi>8sV|
> z>hjH%YIS{kWpn9`#dZDr_U6X+#?r=`|MBMP^2%1Vb?5f&jm_=q#>QrKdt+<address@hidden
> zwUuh??$-9ot!iuK*5dm1>eANjwUx!Km1=2YeS2|fyINk|TB>f}d3|kl>y4Go`0&>4
> zm8I1it4oX9s~hXp*2bO9rIjm{?x3gE7wVC^-Hla!W_4YKSiQBldAE9VW9`nZl}g1~
> zQYE%k5|address@hidden<LBo3o$BVw`pV{_l-}aIROx>!
> z>address@hidden;np>&address@hidden;qC`_<Cq=+W_L|NcpJVd-KVtZp0+
> zht<|(@8sd&cv#(-oQ`(~C;IfIYIVGGrTWtSlar%YuU_4o?p>address@hidden
> address@hidden|ZCV<K1d^G(9;U-8(%QR=W0{?sw>uqv5n)P4=pj`}*X;
> zXlFQ{4y)bC&gtQBd~&JM_0`V(!FYc(-mgX{zWsP|QVk9cCJ%?ZS5*9`{M<es4i4`f
> z41Lx1{b3c<hU4M!;GnvFdQVTQ*76f|-$AvfYF~;H9}M?S>address@hidden&RA_+#eoS
> zZ;!^iQy2Z=<oNAr6vYq8b(mKASamp=o>U#5JvtujoQ!r<j`(n8%)7(sXn#E1?TgyU
> z;O${GcsO`eJ(`>zN5OU{hvqrG?`vI(z%mrLVJ<;cz5Yn0AD<i#rYD#BKJoM#kH#m%
> address@hidden|R<address@hidden@X$q{o~n>)uH)h1V5F-|
> zwqa;8zRBohTAfaHCxwx3iM&hvWYg1?zM}t>address@hidden&|(mzvi+Gj*bpwZF=%lfG7RI
> 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
> zv>#?`vpT1oq|address@hidden|>EF;address@hidden
> z`dqo~^V9y>?i%pV4l<RPm%NE~KA|address@hidden(|ZX3H5d5>sXC)cCdT0y6%$|elcwK!X3
> zk6!!DhiAKGf}mR6uz{9LYgaqU3+A}3c8AHQ#yG9olR>EyO{WvNT~D$_Y?E6vom2s%
> zi4*o{4mCo%!QGrOud^#b%wA4*DChlXJkSu!IfMSeXza9_5*;;address@hidden
> zFHQ(V+U`=n4Bb4NqE4x-k>aAkNkm_Vr(address@hidden&iW;J>address@hidden<h|4nliYU
> zDay3dQ=2vdS$B{wt|`UewxQy;^$>YYHTJPGi0X~U!_o~Zr2>address@hidden>Y1U*)xyp
> zr|address@hidden|>Xl%J87IWr!;address@hidden>j6m`MlLF|n5QIU!tx*Ok!=Z}
> zV!EiD_VeA2ax#$!Y~sR*y6XW{>i+HvBYB($lQd|NJwz-Qw~(&uf$qp9cj3zqhmJ?u
> z=>address@hidden&=k!F0qcld=
> z#bb9$kCd7*q(PRyWq?lQ)Hp%~<<b3!bf-&|vg)!q%}a(~3aM4SrYEBlC8(_9<!0_$
> zXX_`y)&!IW$NRd}HS3pYB2E7dl!gwWRivpW$_J=_JQy6rGZZ4!NL9?HF*GKOmcQ%y
> address@hidden;address@hidden>iTlD-4SM=C+IMUKi-8I^Q%
> z1|ZUs&address@hidden)b!!*dQNrLYWls?bLwAIUzaGBy2`+^1sc7{blQvKmnwoK90x
> z&St7|g-6eX{C7Wmo}$z;XXfjQ1thoZ29gZdSfh*UqbjYU7v+@|#D<e}56DiWWgMz)
> zs$JNWx|jWyhHnv{WrgtFb|-y%6kQuCR<~T(address@hidden
> zp_XZrP`A`s&6*7F4-WP&<pEM0N;wD(JT#>pIYbvl$kcnHZc%lCs1x3YsmtV2d3>O9
> z$KX9?6I0?bY*&t?uDJS0nUe6F*zh16w{lKLNrF_Cu+^ooHgn6#4&6VQ{LbiD>pDCR
> address@hidden)Ieca~ENP9y)Ibs~O*ZesrO&R!4lnsYEAC)ck<
> zl2=cWV;_$_k34l|*LlwuuQ)yASzzDcj@|zAc~HLTbud#cLeQ-5qSWg0QWV)U!cIr5
> z<?gud>|E1$mQtCB5`Mcw#l`BFIYH+!LrF2KF?Q~cCkK;#i;address@hidden)a^9~
> address@hidden&xEb?Oo)ahc<!5&_tW|+j_7|=x
> z+q*M7yeHqIRm3m5PxYsAydF~Nf#HI}MB<Td;gr(%pQ+^v2K8a9dZ|Owpjh!>15W+s
> zjIT^{!4C)O)()address@hidden;UWQMkdz0J%~eonrpY2=)address@hidden
> zszUT*%_q4g*(E28GkOp{#Zk2f(27j$y4tOrq|h}~a%D$TpNCNs2WiPVBv~P3W#Ay_
> zLfm$4rLpXs>~b|=iGho1Ivm@(s)TyXzGslq)ReDOh#Rp<Fmx8#I;Mek42g%b-2^k&
> zOr=OPA8RzFcv==%(~Lgx(iIIatrBMRW?7%LloD$0G<WTqnnaC^|DG(address@hidden@?Ty
> z{k#Ihl>CU*AW2;MB~9lgAo8y^19g_ssU|qP-1K;Qqyc}Ll$B%atACU<mOMoa8Z{>*
> z$V2DrZTh;UClbn4t?nQnp=8%<{kMn1BZr~Ra=Xi><0`FU7}q?<w=E&COI1nb<;Ryx
> zc;Y2B;aN2?AOmw<c6KIekraw&address@hidden&dCn*Q32
> z;KZdi$g+GQB_|X9cBw<uqd2~8ZkCx)LbJPG-Q&l^S|i()GN0++*3$-SOFJWw2%T|9
> zutB8t3DeV~qlsrFluj<Q|7wVEvT7pVFV=)a5x&qiwp$)1I?t2B=CV*RIh8Y3mm}sf
> zj}XXm-6BMAUEBRFMwlu_jJc%*5x=*9<V-?L{6<o&ZMDTk4ApOPh)~q!r7nw&b!E;6
> zhGnG&Rs7Tl*{kkHRi*6Dw#pekAjE!0z+(O}CmB19GH_>9aU1udY!$X#r`isN4;1`+
> zbd?g0Ri&address@hidden&svqKpL$VTfzh_H)H7NYl-#&Kq-!&)xXl+!sGLWIkvmEar9i+9
> z(mtX7RD-r7c0tZRq350tgQ}{Xi_IFL62tnwcFh`%7`AZP<K|3UQ=z#3n%sj|p2~Zw
> zM>v<L>r}Nv2P$J7)lBtNF@&Q4ch2xFxmGhbh!rM!a$1y-T!5b3^hbBNmeiM;elhMM
> zfHBHfoEb)^jA4?xD0S-Qb#2UFKFq5qV<address@hidden)RL{OWTIO&n1kWz|THhX4Z
> z=24I1sQ7$wa;m7F-DVjUn;mxw=(I{Q&)address@hidden;qTQ|*%%VJ^Tbf|*s
> zBKh+y4)Ufc%~e&q7rpetjTjHUuhz5H#+1%uQ!NVh!(XN7IZeAnNfujrFf;M;S|v6)
> zzmy)6J&DFAGf&DD(vzJQ&!Z~^=#D${G)wiwrzFjeTSP5lnV~-!10PjRs|y|LhZ!&0
> z;FK_oP_LL-E6fakp2!z+;R2M=93FYu;aK^nH13&AL&eb7E7`_rnkWLNdi|~u&jdQ*
> z-)HZjg58U(address@hidden<o^<_qb>cQkd>$y{nrkc4|!rtdZ
> zFD=1xuPUK{JWQEl9{0}=_V;bjp0~|I^)@2=KbyazwmeJSM8Gz9fp+K=>BtnCxvqIt
> address@hidden);>Q}4I-L<_$(|iWv0HxHZ$!YEk
> z^cdZ^<y?i;P9oCueqywG%zf4gulhz|address@hidden(*oF`~$yUiWMv~#%8ro~6*
> zaK~f!?5?KOOJR9mc%l&IQGm*>f!K~F*N2zA5GvB-GwHIT`)3}Od|g8%*^~ToEv#}r
> zT1**TOOl$R*Jzz~Jx1dQ3^eSKc1ElwXIvfKf21^;oNS5>address@hidden
> zEvnO`Y>Y2lORH38#r8(;=&address@hidden
> address@hidden(iPr*$4gsUK?6Q{x}CismdYRpIqhw5N$R4cFXXyz>2#R(nW&)rne{q!^=>address@hidden
> zQaPzrWOtQ~2r_alCCD_HlGN~0peTvL2~Y2+<5<r0s9MFdbmvH;address@hidden
> zb_CsxsYhFM-6va(<G<qu*`QMK?8<VQ;7sx{vNMC~tUaWP#F!}8`Wvu^OF6nuk$YD0
> zLoGIUA#&D8U2i&xWfUq=ngB00=&@9LP9sNtssB2%bgz%WT=XO_NzM*bsAJSs>fQ~^
> zsgyxkVUcDah492<jWh&address@hidden&P<!-~_|address@hidden
> zPRndHNhtM|{iyBK&Q2<+>xz+9v?}#3hF()^JJx_uKH$)a1s{`7&=}QDpyZVuvDZ<J
> z?d7rJCk?GTkM$wOk#U=-pck3u;pEHrGAPAGPw4nEvgn5~9!N`%W5gpvi+778qp65m
> zl%hfA1r60_*6gSDuzOSe(zve4Qny<DsSU1LxUy;address@hidden&7D72P{M)(6zh
> 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
> address@hidden&address@hidden&
> z%2A}v^OXFYY4I35Xe^?Q`SbAFuY{+$_O^}62b?hu89=rV_3f1A%}rULT<UvE(Hsz#
> zndvaRJUQ1<q?mYepyZ7c+JRE(`yqvqNKn&e&(address@hidden
> zj9I2vc71Vc*X}WVheoV1vX#VU>address@hidden|~O;#0j!qh>BMv1d{RG1btZYyydPsarvq
> address@hidden)PIiQ-viY(?h!1RHd45wGdHx9iq!%iPf;tWLc=
> address@hidden@>zDV`FNq^G-&yK$ai7{OpQ`R%lUYH}ieS)address@hidden;WO5SnE;&8Y
> address@hidden;address@hidden&ckvd*-LSc5(~Ne^)IBw;IcaJvJ{Dz
> address@hidden)2D8TfQxEpm#NSxcub{mccrXjh}HFr%H%r!-%EtI~oh+8|c`
> address@hidden>?$W&a65eUHY#cj#a~JZ#?oXFI9t?9
> address@hidden&9*2zyc{DQatCujs3l*`P}mQRMyaxb%{}#9^nCK(}CC0DBeyj
> zwvsfm=$eig>)p-D$_-Cw<address@hidden;XDg$2`%SmFbYM_p9>_{`lksNI;eJwADJ)y3u
> zgM8}LyCdhlIzt;address@hidden<+QoOzp;5}M&RTo)!-(hI
> zczJ<l3i!qF!i$pk^n}Rb7LOE;^F2J0;58m8h8eMhAgNs{M2SkH^v#H<address@hidden
> address@hidden;NZ_X21lokTm5NtxTmCk7>Imeu|*Cnb_W1`9XrcF;%{AH-kkSo17
> zSOB*_87~3K;=Em|KAF^~^imHn+^J)!hn%fsdoS%Ho5~knKcc97gQ!WJg0f|4$+Kx`
> zuauGE`eqSE?sd{vHU6m`hOW}1BqOS(_D6|%w6p-Ha^&UZBCTbAQuW->$+sD9;uEG;
> zhBaEn9w`YWtL#qG6?r5qUpfOZ1)brI9_!pLU4#YMM#K0tPmu;L$y3|Sx0<8`X!&G(
> address@hidden|y!u^N*-
> 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
> zWvgWwE=)address@hidden>-Ngh>f&0Qmp#e=))Fdx=k|address@hidden
> zF{|svaP({+Yd7JA+A2GYvRc~^ST*4C;address@hidden;*42ZARJUJRy0fYN<}3UO
> z;n}*Q9=N)mTEq3#sqHsbH<$aRlj*=>bz^aL?T+ko*6?hm8$#$?h5@>Xa!Vu^v32oM
> z-;H0b-q53#-pI}7r?gw_4K>B<E4plP`AvBRb;oSrD&%VJOsZYnA#+UDr`PXR9sMcB
> address@hidden&*ZSQkXcc>X%fKDJJo9hQpJ~$?26>N*$u5adv&1X8FBjEta_U(@NVsG?YH2
> zz~?|a-)mWn-u*hrI}2Npv}`MTVM(T5mx{RhlCqTkej=ZVp|8Tv*dIED)A>$%Ga^(e
> zzSDB&address@hidden&address@hidden)Gz%XaC#Ud3*~A^?lDtNzykel}PGQVU61NqD
> z)%g#-L7Uybg{FC7!91Irxmsy!vor(RWJR-JI+#>boa#$IV;;p{^&9a0F2b1~*=4lz
> z6TX44xmvPmF<Xonemj<PZO5F84&Jrott+n11(@bA#iE?Q*GB<?17^`vrcC<@yQO_P
> zf914qt)^5x9olG^EV<W?0A70%^DoXG=n|hyu}2!!-tz(%k7{+!d)PUn?vZOO1I_bd
> zqm%TN)Fp42!yyM=u>qL_B`uvPI~_VaQ_!guaGI1!*%&?5k9TbY<91#nrdph6qvG_X
> zuTA)>address@hidden;wgAtj5af>0r-QbBXIuM=snKE22v8^v7PAt!4JEVOV0lUAb0$
> address@hidden@vHM#Le>BIPW191_vlt<3xTMt?v53fz
> z&address@hidden;$cmxW42}b9`Q(address@hidden@oo0JpZO<y}3n-k>(
> z`IRrnD>F-_MAe0*i`AFBJKdM7>PvA8SxK5p__FQH17;address@hidden
> zr14-{HWxS2!MerUL-40Y$qN6%B&YXdd=WQty`L1rYk`;&8_oErda;;&J!`4C9M|iD
> z8Y!a5G)U4+-r2EL27eYnW6b3Z2TgTrdLjIoDjB2k6xpje)2_5$g;address@hidden@FA
> z->X%RNx9pS{492+@<(~kMqct^PYS%MCh*#FN=zd`*Z67UaNRAY-O?~Q^~5wE(YEWH
> zU$^<%s0-RB-#DH-vlm%oOzyLK7jL3L>r|!u(address@hidden<mHqMQ6|Ek;nnxtl
> address@hidden|x9sZTSsAS}a3^x+Mj4VYNDV}_8}yDAI_e8{qEj3VG*VLHVwAp#
> zF^}?!S;yRwU69`%aEhrUTl_|gzNl5Ln!X}M6&H`=6E92iT7>u-*YJtz!=ANDJ|?YC
> z$;$*|@+0<u8Rl13zm%V=KKBjwL^t1z9ZIC+1S9RY`1;address@hidden
> zS2V1CQbm7QJ$(L3v`XC0KBnED8|m;UO<address@hidden)6jyw-l)j=odd
> z<Hbn7*siwKd+$Fwa-v=cg<FqE-$Gc*7Y&yF(5JKgMcMV46eMU8LK+q`K+RaYJKtGV
> z8=iFXq<@~+&h+Io%cJ{;egVK5S&wTIzd?2L&T29U?|z(;4Jl!3(UiEISHPt1dvEei
> zT7V|CE=7*Dru$lI8E!`J2OUfv$q4;|bcnMPqA|S91ya1G?^e^AE{|{JICPzSlC)S!
> zc<q2B+iRr6iKraorJaq8Cf_ICXK8)s$Bojt&vYEyZEEn`g;IoOh0ddD-!wY+ZAJd-
> zr2Y5oq$$DrWQWkCd?Jf1&2BaeQ@|Lcay8P<VfsUjE$eB%zB{iaZeMF*QrA4ar_`t?
> z8PqZTwO)d!tF*?-De3fHr~7DlI<=qo5)<595+|}9w6>pUB6+1->TRLu`R2)iMeo<+
> address@hidden@}C***(9+qm?nqrRsKBuJjCVsS|J9XztBXg_GKY
> z-Oi>sx<67VJ<;B#S0CPgbXiX7^1=Sm!Ik?bhX-<@address@hidden<0v{Cu5vQiDAGF%b
> zI-WL3i1l%r5tJsDr2us(=-4c0JEYY+yQ7KLQbs_a0CYp)L5lYxK+9PWO||PaHc!Vm
> address@hidden@|nj-mt*7OXo>|cqKnvvc)9bVZ{<address@hidden
> ziSp-YI(g;address@hidden@zM%q}|M}?DYF<>H8!ct7y+muZYpB`x*r2
> zWe<vX6rsClJG+;6y|Psk#=Dmt;>AB4BV6k5?CuUOYnuVZor(&llQ<vowg2!nC1}ix
> zD>bw~-cfL=k)address@hidden(|!>QHW_2zT7qZLX?3<y_vG
> address@hidden)&~bW)zb3iWi14Z6FI-+y2p%s
> zw6drD>QT9x$is|address@hidden>gU;IV#Y!`9j<)
> zv#U+gMaGd{9Np5cbjPEqaM)<_7an_HrWq-HBS^{(m9K|#5dZQ^m+yI?7~is;woE9m
> zk49O1>!s?x+D22ns>$*&eP6IER;)address@hidden(address@hidden
> zst0e?)*!l0zEcb`JPe3yqL=9{K|address@hidden@Y2D_2SEcT1aH`R-Wl<Er3xk
> zNCv9Sa8LT*5f4o#<CAgg(d6>buTA>address@hidden&(YCP_N>*;db!bO&Ks)7hc2PgEPh#7
> zuTI5Gub!(t8)GaQclUp^fa;address@hidden|L1p(?N`nG*cy}Ka%m+rh
> z`Qte+k<x`4%W6+yt!=+55H8>JYP$GpHiztQUd<I&rNYWu*fi$#HpEJ6+wlGA%d5*V
> zNDlUel(W!EXZXAZJlm~Hoo-9{rGTP0ndKK<^8C>YVzA?H|J1voeorj&8J<2+jw=SM
> zHdEg_wRJop78=!MURqv${qj~U+&2w-m+2E>#%XOl6x$HQ3tMij7!E}RlmE;27I`&U
> z6`zSgTe;address@hidden(8~lb?>kk=VX$tL`fz}{Utk$*D`$X
> zcg!jq%1Zhpnk5pk)*3A<iC&k}ib8*9`G#$9b!)?pTvORvOB}nc=zj95?(m6KQ&yR7
> address@hidden&`31)g)X+s>?W+QxCb^Jf(TS3-N^a^MHKg8ky#(address@hidden
> zA9VUNKlA9yPW5Vwx~q|-K<CUL6;J6M^#ysTtJV}<knV7xy#F`D!q*3elt9a6t<}ih
> zPYqB%HKBJ)M?PFDkd^H#X!D0#IgebX>G+AJ+|@o#;address@hidden)MZOe1T
> address@hidden)@address@hidden@6=j
> zq&p{Mn$hu=)oHn4F61CCy}7deb<GUlSiR|aQO#)=f1018$Rq24y}#y^SH8ZrqDfuJ
> ztIYZZnV2G!*d0ROHk3Ng((={iH<address@hidden
> zbP?mkbDm_gS>*Gj%FdS*PH_Gyf6Y$mytT2#Q^Sd+P-b|1Y;o{T$6<_m<tw7c;(Qg{
> zO$(fyoOM>uMAV`&6?VbXKnIV?4rjZi?3#qtoX%vTcN8Q6<tD}DL>^X_nH;KnQRIRR
> zMT(|ZW{=#{lNEXElozjEt7c`(>;7UNI?d79dso-}iLkl&``Y#Cm4|}|YP3?K7mRaJ
> zDV|tc+o*EO(VStLtlPVZ>!pO$lv%AVYv%(address@hidden;sd{3LFdP4|>T(VzZ
> zq(yY;<H~)F_w(AeX63b`?|address@hidden|xOCw8|g95FxYE!|G&SRwtgzuiLq*
> z<address@hidden(aZMxlb&X?o*nz^slE2QGR9)$4ko<Arjd1kQa-;%6;_gL)?gYc;Ruy
> z*Y{5~Ecp7)address@hidden@C!&m&QGVIT5QgwggFa1l;address@hidden
> zzV!IMzbsz9LX-2to(ot)uvhhIg<WHP*`Xr;k-y1&-!GcamcTZ6;yDbNXPW6!_Y_{w
> address@hidden)!Zz9rwp?Hzt!a%EVJthcs=ca9sfwQN
> z?mf*-)|cx#cY-sb&<b%iGnVB%sdCXSeX#96&o<%N2XrWK_kC}9iZG8W(>jTKYrm=<
> zF_}Gy^xyrcTKfFwuV|r$!#qtj)*=?KdgxpU*_}BaX_~vdw$y&_D<1OuJa2ohcdqxp
> zDOs`bx87a&;address@hidden|9SL(?%J0MK>z{}
> zfB*!#2w4CBj!szrFQETjh&ToT2tWV=5STjx*8l%QwX*(SME~cmeW?%xAOHafK%k3&
> z_5c6W3G4so(Elz(address@hidden|No_0S^qze{?A?eQXvRH00IzzKo<e)|NpHM
> z*8fZBe-|Q-K>z{}fB*#Mj)3+5|52^1|CiDKxocl41OW&@00I!`B4GXhyE<Y0zk>dE
> zA>tSWAOHafKw$0&SpWZD)yn#R75$&P_N77)fB*y_0D&$7*8l%cC#?V1(Elz(address@hidden
> zAOHaf%pC#i|L>?)*8l71|address@hidden
> z{kQB}|6fG^=dOLJ5Ck9q0SG{#i-7gt83615OXz<WB91`-0uX=z1m=!_)&FCvmG%D%
> z=>OccFBO6S1Rwwb2y_v!{(oF2tp6{g|6PbU1_1~_00I!0I|A1KPpDSb|1YBdbJxC9
> z2m%m*00bb=MZo(1Nu99%{|Nfug@|JifB*y_0D-w9VEzA;address@hidden)fB*y_
> z0D&$7*8gX8!utOz`rn0!V-SD<1Rwx`xg%ix{|?p4`u`gGKX>g*g&+U{2tWV=T?DNE
> zeVwrWe+m8XLc}o$KmY;|fWX`lu>OBqwX**IQS^WA+LsDJ00Izz00g=SSpUCMC#?Tp
> zM*q7IaSQ?wfB*y_Fn0v3|9?QWvi|=u^ndQ!mkL1u0uX=z1iA=V|G!Hotp8s@|GN-z
> z3<3~<00bZ~cLc2e&#G3||3&nF?%J0MK>z{}fB*!#2w4B0(+TVU>*#+MB91`-0uX=z
> z1m=!__5U-fmGyrK{hzz`r9u#Z00bZafi42p|address@hidden>;E$P--U={5P$##AOL~6BVhgi
> zdsHjy{|fp)ckN4sAOHafKmY<=1g!smP$#VaH_-nsL>z+v1Rwwb2+SP;>;address@hidden
> z=>OccFBO6S1Rwwb2y_v!{{Ou?Vf}vt{qI7=F$h2a0uX?}+!3(;f3Ip~{a;address@hidden
> z5Ck9q0SG{#i-7h259x&U|3}gPE<_xI00bZa0SL?;0qg(Yr&?M6zl#3PUHeiY2tWV=
> z5P(1z0qg%C)(PwX8v5Ubh+`0d00bZafw?1K{r~$_E9?I)^ndQ!mkL1u0uX=z1iA=V
> z|G!TstpDrie-|Q-K>z{}fB*#Mj)3+5A5g8V{~PH4+_f(if&c^{009Ve5wQM$zfM^H
> zZ=?TRh&ToT2tWV=5STjx*8d++t*rk)hW^i8`%)nYKmY;|address@hidden>wl#a*8ffPzY7t^
> zAOHafKmY=BN5K03M^r28{}%c`ckN4sAOHafKmY<=1g!t(b;A0;jsABb;ur)V009U<
> zVD1Q5|9?=mvi{#e|L3lKsSpGp009U<address@hidden@|Fb$_{eKhv??S{e2tWV=5P-nk5wQOM
> zkZNW9e+&JeyY{6*5P$##AOL|address@hidden@)(PwX*U<kiL>z+v1Rwwb2+SP;>;LnrmG%EF
> z`agH=ONAf+0SG_<0$l{G{}*(^`v1q#|1Lxvg8&2|009Wh9RchAMb*ms|KsTY+_f(i
> zf&c^{009Ve5wQM$PA9DYKY{*tA>tSWAOHafKw$0&address@hidden<
> z00LbEtpAsE!utOw(f=+)address@hidden|address@hidden(HbR
> zujqvJ|0mJ^E<_xI00bZa0SL?;0qg%&)yn!mK>z2ieW?%xAOHafK%k3&_5YeqSpV;#
> z|6PbU1_1~_00I!0I|A1K>#CLYe+T`ayY{6*5P$##AOL|address@hidden(?-i~e^Z;ur)V
> z009U<VD1Q5|address@hidden(HbRU(yNd{~r3^g@|JifB*y_0D-w9
> zVEzAsYGwW3NB`%peW?%xAOHafK%k3&_5Wp^u>Rji|GN-z3<3~<00bZ~cLc2eUsSEE
> z|0DE&?%J0MK>z{}fB*!#2w4ArL?^8OKZX8xA>tSWAOHafKw$0&SpQ#9t*rlVqyKZ)
> zzElVT5P$##Akam?`v0m<SpN^u|1Lxvg8&2|009Wh9RchAYpRv?{}BD3yY{6*5P$##
> zAOL|address@hidden>4f!vjQ)2a;ur)V009U<VD1Q5|Np3JW&NL^|8v*AR0skPfB*y_&_%%d
> z|7D%9{vV<LU5Gda0SG_<address@hidden;WOtyY{6*5P$##AOL|address@hidden
> z82#@;#4!j!00Izzz}ykA{x7Ol*8eH`KX>g*g&+U{2tWV=T?DNEuj_>M{{;Q-Lc}o$
> zKmY;|fWX`lu>address@hidden|Ce>b`u_m^??S{e2tWV=5P-nk
> z5wQNRs8-hhhv@&@wJ#Nd00bZa0SI&vu>RlB3G4qm=zkX?jzItd5P$##=8k~%|E6kX
> z{eOi1&t3acAqYSK0uX>e7Xj=48#-bA{~7eZ3lYa4009U<address@hidden
> z?MsCq009U<00LbEtp7i%6W0GfjsABb;ur)V009U<VD1Q5|G%nQS^xhG`agH=ONAf+
> z0SG_<0$l{G|7$v7{r|J*e-|Q-K>z{}fB*#Mj)3+5mTG1F|8wa7+_f(if&c^{009Ve
> z5wQNR>xA|HXVL#IL>z+v1Rwwb2+SP;>;HyoW&Qs-^ndQ!mkL1u0uX=z1iA=V|8MJr
> z_5aVK|6PbU1_1~_00I!0I|A1KA5*QY|address@hidden)ue1Rwx`E&|s7O`Wj*|2+EN
> zg@|JifB*y_0D-w9VEx}xt*rll5&fUL_N77)fB*y_0D&$7*8gptu>Sug^uG%c#~=U!
> address@hidden>g*g&+U{2tWV=T?DNEZ|a2g{}<8!E<_xI00bZa0SL?;
> z0qg%;s+INsm(c&YYhNk^0SG_<0ubmTVEzA^PFVl{GWy?zh+`0d00bZafw?1K{lBYP
> zS^xhE`agH=ONAf+0SG_<0$l{G|address@hidden<1Rwx`xg%ix|8dpI`u`81
> z|8v*AR0skPfB*y_&_%%d{}Vc4{r`v2|1Lxvg8&2|009Wh9RchApHQu=|NjX3KX>g*
> zg&+U{2tWV=T?DNEe^Mu`|9=(z??S{e2tWV=5P-nk5wQM$UA40Q|D)*t+_f(if&c^{
> z009Ve5wQOMq)u4>|1tEx3lYa4009U<00MJI!1_N>t*rn5IQl<#?MsCq009U<00LbE
> ztpE3P!utPDp#NQnI0gX-KmY;|m^%X2{~guJ`u|U&|8v*AR0skPfB*y_&_%%dzpE40
> z|9=Yo??S{e2tWV=5P-nk5wQLbRV(ZNKaKv+UHeiY2tWV=5P(1z0qg&sPFVl{8T7vk
> z5yv0^0SG_<0&_>e`oFJQS^xi8^ndQ!mkL1u0uX=z1iA=V|L^OB_5Ytk|GN-z3<3~<
> z00bZ~cLc2eBh||K|IefUbJxC92m%m*00bb=MZo(1Q#xV&{}<5zE<_xI00bZa0SL?;
> z0qg(Us+INsUqt`su6?Nx1Rwwb2tc5Vfc5`CC#?Vf68hhTh+`0d00bZafw?1K{XbN#
> ztpEQq`agH=ONAf+0SG_<0$l{G|6`r7{{JiJe-|Q-K>z{}fB*#Mj)3)lqFP!1|5fyV
> z?%J0MK>z{}fB*!#2w4A*bi(@ouc7~4h&ToT2tWV=5STjx*8iVYt*rn5I{H6%?MsCq
> z009U<00LbEtpCS4Vg3JQ^uG%c#~=U!2tWV=b4S4XKUJ-)|address@hidden)ue1Rwx`
> zE&|s76P>XB{~PFk7b1>address@hidden&vu>L>L
> z3G4r_p#NQnI0gX-KmY;|m^%X2|A(rT_5a^O|L3lKsSpGp009U<address@hidden@{~evM{{P$P
> ze-|Q-K>z{}fB*#Mj)3+5k!ofA|98;;xocl41OW&@00I!`B4GXh8J)2H|GVga7b1>9
> z00Izz00icafc5`RsaDqie-HhiyY{6*5P$##AOL|address@hidden&Uq%1B5OE9w5P$##
> zATW0Xtp9&TwX**I8u~wX?MsCq009U<00LbEtp9&jC#?VfKKkE<h+`0d00bZafw?1K
> z{r_{SmG%GE(f_$?Un&Fv2tWV=5a=Rc{r_2=u>SuC=zkX?jzItd5P$##=8k~%|L0UI
> z>;Hd<{?A?eQXvRH00IzzKo<e)|DV?h>;Hd*{&ykb7z7{y0SG`~?g&`_|AJ~|{r~Ie
> z|address@hidden|GZ9E|Nmq3zY7t^AOHafKmY=BN5K037ga0k|9^u1&t3ac
> zAqYSK0uX>e7Xj=4U(yNd|9^`9cOl{!1Rwwb2tZ)&2w4ArLAA2}|7Ym`+_f(if&c^{
> z009Ve5wQOMqE1-<|8w-e3lYa4009U<00MJI!2177s+INszd--zu6?Nx1Rwwb2tc5V
> dfc5_`>xA|HzeNAL5OE9w5P$##ATW0X{(qd($<zP<
>
> literal 0
> HcmV?d00001
>
> --
> 1.7.8.msysgit.0
>
>
>


reply via email to

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