[Numpy-svn] r4034 - in trunk/numpy/doc/swig: . doc test

numpy-svn@scip... numpy-svn@scip...
Thu Sep 13 16:43:40 CDT 2007


Author: wfspotz@sandia.gov
Date: 2007-09-13 16:43:16 -0500 (Thu, 13 Sep 2007)
New Revision: 4034

Added:
   trunk/numpy/doc/swig/doc/
   trunk/numpy/doc/swig/doc/Makefile
   trunk/numpy/doc/swig/doc/numpy_swig.html
   trunk/numpy/doc/swig/doc/numpy_swig.pdf
   trunk/numpy/doc/swig/doc/numpy_swig.txt
   trunk/numpy/doc/swig/doc/testing.html
   trunk/numpy/doc/swig/doc/testing.pdf
   trunk/numpy/doc/swig/doc/testing.txt
   trunk/numpy/doc/swig/test/
   trunk/numpy/doc/swig/test/Makefile
   trunk/numpy/doc/swig/test/Matrix.cxx
   trunk/numpy/doc/swig/test/Matrix.h
   trunk/numpy/doc/swig/test/Matrix.i
   trunk/numpy/doc/swig/test/Tensor.cxx
   trunk/numpy/doc/swig/test/Tensor.h
   trunk/numpy/doc/swig/test/Tensor.i
   trunk/numpy/doc/swig/test/Vector.cxx
   trunk/numpy/doc/swig/test/Vector.h
   trunk/numpy/doc/swig/test/Vector.i
   trunk/numpy/doc/swig/test/setup.py
   trunk/numpy/doc/swig/test/testMatrix.py
   trunk/numpy/doc/swig/test/testTensor.py
   trunk/numpy/doc/swig/test/testVector.py
Removed:
   trunk/numpy/doc/swig/Matrix.cxx
   trunk/numpy/doc/swig/Matrix.h
   trunk/numpy/doc/swig/Matrix.i
   trunk/numpy/doc/swig/Tensor.cxx
   trunk/numpy/doc/swig/Tensor.h
   trunk/numpy/doc/swig/Tensor.i
   trunk/numpy/doc/swig/Vector.cxx
   trunk/numpy/doc/swig/Vector.h
   trunk/numpy/doc/swig/Vector.i
   trunk/numpy/doc/swig/numpy_swig.html
   trunk/numpy/doc/swig/numpy_swig.pdf
   trunk/numpy/doc/swig/numpy_swig.txt
   trunk/numpy/doc/swig/setup.py
   trunk/numpy/doc/swig/testMatrix.py
   trunk/numpy/doc/swig/testTensor.py
   trunk/numpy/doc/swig/testVector.py
   trunk/numpy/doc/swig/testing.html
   trunk/numpy/doc/swig/testing.pdf
   trunk/numpy/doc/swig/testing.txt
Modified:
   trunk/numpy/doc/swig/Makefile
   trunk/numpy/doc/swig/README
Log:
Reorganized swig directory with subdirectories for documentation and testing

Modified: trunk/numpy/doc/swig/Makefile
===================================================================
--- trunk/numpy/doc/swig/Makefile	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Makefile	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,62 +1,36 @@
-# SWIG
-INTERFACES = Vector.i Matrix.i Tensor.i
-WRAPPERS   = $(INTERFACES:.i=_wrap.cxx)
-PROXIES    = $(INTERFACES:.i=.py      )
-
-# ReStructured Text
-RST2HTML = rst2html.py
-RST2LATEX = rst2latex.py
-RFLAGS = --generator --time
-HTML_FLAGS = --no-xml-declaration
-LATEX_FLAGS =
-LATEX = pdflatex
-
-# Web pages that need to be made
-WEB_PAGES = numpy_swig.html testing.html
-
-# LaTeX files that need to be made
-LATEX_FILES = numpy_swig.tex testing.tex
-
-# PDF files that need to be made
-PDF_FILES = numpy_swig.pdf testing.pdf
-
 # List all of the subdirectories here for recursive make
-SUBDIRS = 
+SUBDIRS = test doc
 
-all: $(WRAPPERS) Vector.cxx Vector.h Matrix.cxx Matrix.h Tensor.cxx Tensor.h
-	./setup.py build
+# Default target
+.PHONY : default
+default:
+	@echo "There is no default make target for this Makefile"
+	@echo "Valid make targets are:"
+	@echo "    test           - Compile and run tests of numpy.i"
+	@echo "    doc            - Generate numpy.i documentation"
+	@echo "    all            - make test + doc"
+	@echo "    clean          - Remove generated files recursively"
 
-test: all
-	testVector.py
-	testMatrix.py
-	testTensor.py
+# Target all
+.PHONY : all
+all: $(SUBDIRS)
 
-doc: html pdf
+# Target test
+.PHONY : test
+test:
+	cd $@ && make $@
 
-%_wrap.cxx: %.i %.h numpy.i
-	swig -c++ -python $<
+# Target doc
+.PHONY : doc
+doc:
+	cd $@ && make
 
-html: $(WEB_PAGES)
-
-%.html: %.txt
-	$(RST2HTML) $(RFLAGS) $(HTML_FLAGS) $< $@
-
-tex: $(LATEX_FILES)
-
-%.tex: %.txt
-	$(RST2LATEX) $(RFLAGS) $(LATEX_FLAGS) $< $@
-
-pdf: $(PDF_FILES)
-
-%.pdf: %.tex
-	$(LATEX) $<
-	$(LATEX) $<
-
+# Target clean
+.PHONY : clean
 clean:
-	$(RM) -r build
-	$(RM) $(WRAPPERS)
-	$(RM) $(PROXIES)
-	$(RM) $(LATEX_FILES)
-	$(RM) *.pyc *.aux *.dvi *.log *.out *~
-
-.PHONY : all test doc html tex pdf clean
+	@for dir in $(SUBDIRS); do                \
+	    echo ;                                \
+	    echo Running \'make clean\' in $$dir; \
+	    cd $$dir && make clean && cd ..;      \
+	done;                                     \
+	echo

Deleted: trunk/numpy/doc/swig/Matrix.cxx
===================================================================
--- trunk/numpy/doc/swig/Matrix.cxx	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Matrix.cxx	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,112 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <iostream>
-#include "Matrix.h"
-
-// The following macro defines a family of functions that work with 2D
-// arrays with the forms
-//
-//     TYPE SNAMEDet(    TYPE matrix[2][2]);
-//     TYPE SNAMEMax(    TYPE * matrix, int rows, int cols);
-//     TYPE SNAMEMin(    int rows, int cols, TYPE * matrix);
-//     void SNAMEScale(  TYPE matrix[3][3]);
-//     void SNAMEFloor(  TYPE * array,  int rows, int cols, TYPE floor);
-//     void SNAMECeil(   int rows, int cols, TYPE * array, TYPE ceil);
-//     void SNAMELUSplit(TYPE in[3][3], TYPE lower[3][3], TYPE upper[3][3]);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 2D input arrays, hard-coded length
-//  * 2D input arrays
-//  * 2D input arrays, data last
-//  * 2D in-place arrays, hard-coded lengths
-//  * 2D in-place arrays
-//  * 2D in-place arrays, data last
-//  * 2D argout arrays, hard-coded length
-//
-#define TEST_FUNCS(TYPE, SNAME) \
-\
-TYPE SNAME ## Det(TYPE matrix[2][2]) {                          \
-  return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0]; \
-}                                                               \
-\
-TYPE SNAME ## Max(TYPE * matrix, int rows, int cols) {	  \
-  int i, j, index;                                        \
-  TYPE result = matrix[0];                                \
-  for (j=0; j<cols; ++j) {                                \
-    for (i=0; i<rows; ++i) {                              \
-      index = j*rows + i;                                 \
-      if (matrix[index] > result) result = matrix[index]; \
-    }                                                     \
-  }                                                       \
-  return result;                                          \
-}                                                         \
-\
-TYPE SNAME ## Min(int rows, int cols, TYPE * matrix) {    \
-  int i, j, index;                                        \
-  TYPE result = matrix[0];                                \
-  for (j=0; j<cols; ++j) {                                \
-    for (i=0; i<rows; ++i) {                              \
-      index = j*rows + i;                                 \
-      if (matrix[index] < result) result = matrix[index]; \
-    }                                                     \
-  }                                                       \
-  return result;                                          \
-}                                                         \
-\
-void SNAME ## Scale(TYPE array[3][3], TYPE val) { \
-  for (int i=0; i<3; ++i)                         \
-    for (int j=0; j<3; ++j)                       \
-      array[i][j] *= val;                         \
-}                                                 \
-\
-void SNAME ## Floor(TYPE * array, int rows, int cols, TYPE floor) { \
-  int i, j, index;                                                  \
-  for (j=0; j<cols; ++j) {                                          \
-    for (i=0; i<rows; ++i) {                                        \
-      index = j*rows + i;                                           \
-      if (array[index] < floor) array[index] = floor;               \
-    }                                                               \
-  }                                                                 \
-}                                                                   \
-\
-void SNAME ## Ceil(int rows, int cols, TYPE * array, TYPE ceil) { \
-  int i, j, index;                                                \
-  for (j=0; j<cols; ++j) {                                        \
-    for (i=0; i<rows; ++i) {                                      \
-      index = j*rows + i;                                         \
-      if (array[index] > ceil) array[index] = ceil;               \
-    }                                                             \
-  }                                                               \
-}								  \
-\
-void SNAME ## LUSplit(TYPE matrix[3][3], TYPE lower[3][3], TYPE upper[3][3]) { \
-  for (int i=0; i<3; ++i) {						       \
-    for (int j=0; j<3; ++j) {						       \
-      if (i >= j) {						 	       \
-	lower[i][j] = matrix[i][j];					       \
-	upper[i][j] = 0;					 	       \
-      } else {							 	       \
-	lower[i][j] = 0;					 	       \
-	upper[i][j] = matrix[i][j];					       \
-      }								 	       \
-    }								 	       \
-  }								 	       \
-}
-
-TEST_FUNCS(signed char       , schar    )
-TEST_FUNCS(unsigned char     , uchar    )
-TEST_FUNCS(short             , short    )
-TEST_FUNCS(unsigned short    , ushort   )
-TEST_FUNCS(int               , int      )
-TEST_FUNCS(unsigned int      , uint     )
-TEST_FUNCS(long              , long     )
-TEST_FUNCS(unsigned long     , ulong    )
-TEST_FUNCS(long long         , longLong )
-TEST_FUNCS(unsigned long long, ulongLong)
-TEST_FUNCS(float             , float    )
-TEST_FUNCS(double            , double   )

Deleted: trunk/numpy/doc/swig/Matrix.h
===================================================================
--- trunk/numpy/doc/swig/Matrix.h	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Matrix.h	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,52 +0,0 @@
-#ifndef MATRIX_H
-#define MATRIX_H
-
-// The following macro defines the prototypes for a family of
-// functions that work with 2D arrays with the forms
-//
-//     TYPE SNAMEDet(    TYPE matrix[2][2]);
-//     TYPE SNAMEMax(    TYPE * matrix, int rows, int cols);
-//     TYPE SNAMEMin(    int rows, int cols, TYPE * matrix);
-//     void SNAMEScale(  TYPE array[3][3]);
-//     void SNAMEFloor(  TYPE * array,  int rows, int cols, TYPE floor);
-//     void SNAMECeil(   int rows, int cols, TYPE * array,  TYPE ceil );
-//     void SNAMELUSplit(TYPE in[3][3], TYPE lower[3][3], TYPE upper[3][3]);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 2D input arrays, hard-coded lengths
-//  * 2D input arrays
-//  * 2D input arrays, data last
-//  * 2D in-place arrays, hard-coded lengths
-//  * 2D in-place arrays
-//  * 2D in-place arrays, data last
-//  * 2D argout arrays, hard-coded length
-//
-#define TEST_FUNC_PROTOS(TYPE, SNAME) \
-\
-TYPE SNAME ## Det(    TYPE matrix[2][2]); \
-TYPE SNAME ## Max(    TYPE * matrix, int rows, int cols); \
-TYPE SNAME ## Min(    int rows, int cols, TYPE * matrix); \
-void SNAME ## Scale(  TYPE array[3][3], TYPE val); \
-void SNAME ## Floor(  TYPE * array, int rows, int cols, TYPE floor); \
-void SNAME ## Ceil(   int rows, int cols, TYPE * array, TYPE ceil ); \
-void SNAME ## LUSplit(TYPE matrix[3][3], TYPE lower[3][3], TYPE upper[3][3]);
-
-TEST_FUNC_PROTOS(signed char       , schar    )
-TEST_FUNC_PROTOS(unsigned char     , uchar    )
-TEST_FUNC_PROTOS(short             , short    )
-TEST_FUNC_PROTOS(unsigned short    , ushort   )
-TEST_FUNC_PROTOS(int               , int      )
-TEST_FUNC_PROTOS(unsigned int      , uint     )
-TEST_FUNC_PROTOS(long              , long     )
-TEST_FUNC_PROTOS(unsigned long     , ulong    )
-TEST_FUNC_PROTOS(long long         , longLong )
-TEST_FUNC_PROTOS(unsigned long long, ulongLong)
-TEST_FUNC_PROTOS(float             , float    )
-TEST_FUNC_PROTOS(double            , double   )
-
-#endif

Deleted: trunk/numpy/doc/swig/Matrix.i
===================================================================
--- trunk/numpy/doc/swig/Matrix.i	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Matrix.i	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,45 +0,0 @@
-// -*- c++ -*-
-%module Matrix
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "Matrix.h"
-%}
-
-// Get the NumPy typemaps
-%include "numpy.i"
-
-%init %{
-  import_array();
-%}
-
-%define %apply_numpy_typemaps(TYPE)
-
-%apply (TYPE IN_ARRAY2[ANY][ANY]) {(TYPE matrix[ANY][ANY])};
-%apply (TYPE* IN_ARRAY2, int DIM1, int DIM2) {(TYPE* matrix, int rows, int cols)};
-%apply (int DIM1, int DIM2, TYPE* IN_ARRAY2) {(int rows, int cols, TYPE* matrix)};
-
-%apply (TYPE INPLACE_ARRAY2[ANY][ANY]) {(TYPE array[3][3])};
-%apply (TYPE* INPLACE_ARRAY2, int DIM1, int DIM2) {(TYPE* array, int rows, int cols)};
-%apply (int DIM1, int DIM2, TYPE* INPLACE_ARRAY2) {(int rows, int cols, TYPE* array)};
-
-%apply (TYPE ARGOUT_ARRAY2[ANY][ANY]) {(TYPE lower[3][3])};
-%apply (TYPE ARGOUT_ARRAY2[ANY][ANY]) {(TYPE upper[3][3])};
-
-%enddef    /* %apply_numpy_typemaps() macro */
-
-%apply_numpy_typemaps(signed char       )
-%apply_numpy_typemaps(unsigned char     )
-%apply_numpy_typemaps(short             )
-%apply_numpy_typemaps(unsigned short    )
-%apply_numpy_typemaps(int               )
-%apply_numpy_typemaps(unsigned int      )
-%apply_numpy_typemaps(long              )
-%apply_numpy_typemaps(unsigned long     )
-%apply_numpy_typemaps(long long         )
-%apply_numpy_typemaps(unsigned long long)
-%apply_numpy_typemaps(float             )
-%apply_numpy_typemaps(double            )
-
-// Include the header file to be wrapped
-%include "Matrix.h"

Modified: trunk/numpy/doc/swig/README
===================================================================
--- trunk/numpy/doc/swig/README	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/README	2007-09-13 21:43:16 UTC (rev 4034)
@@ -7,10 +7,31 @@
 ultimately hoped that numpy.i will be included as part of the SWIG
 distribution.
 
-In the spirit of "writing your tests first", I will begin by
-describing the tests, as they are a good example of what we are trying
-to do with numpy.i.  The files related to testing are::
+Documentation
+-------------
+Documentation for how to use numpy.i is in the doc directory.  The
+primary source file here is numpy_swig.txt, a restructured text file
+that documents how to use numpy.i.  The Makefile in doc allows for the
+conversion of numpy_swig.txt to HTML (if you have docutils installed)
+and to PDF (if you have docutils and latex/pdftex installed).  This
+should not be necessary, however, as numpy_swig.html and
+numpy_swig.pdf are stored in the repository.
 
+The same is true for a file called doc/testing.txt, which describes
+the testing system used here.
+
+If you have the prerequisites installed and wish to build the HTML and
+PDF documentation, this can be achieved by calling::
+
+    $ make doc
+
+from the shell.
+
+Testing
+-------
+The tests are a good example of what we are trying to do with numpy.i.
+The files related to testing are are in the test subdirectory::
+
     Vector.h
     Vector.cxx
     Vector.i
@@ -106,16 +127,4 @@
 
 To build and run the test code, simply execute from the shell::
 
-    $ make
     $ make test
-
-================================================================================
-
-ToDo
-----
-
-  * Add ARGOUT typemaps that assume the function allocates the buffers
-    internally.
-
-  * Add "naked" typemaps for argument lists that do not specify
-    dimensions.

Deleted: trunk/numpy/doc/swig/Tensor.cxx
===================================================================
--- trunk/numpy/doc/swig/Tensor.cxx	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Tensor.cxx	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,131 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <iostream>
-#include "Tensor.h"
-
-// The following macro defines a family of functions that work with 3D
-// arrays with the forms
-//
-//     TYPE SNAMENorm(   TYPE tensor[2][2][2]);
-//     TYPE SNAMEMax(    TYPE * tensor, int rows, int cols, int num);
-//     TYPE SNAMEMin(    int rows, int cols, int num, TYPE * tensor);
-//     void SNAMEScale(  TYPE tensor[3][3][3]);
-//     void SNAMEFloor(  TYPE * array,  int rows, int cols, int num, TYPE floor);
-//     void SNAMECeil(   int rows, int cols, int num, TYPE * array, TYPE ceil);
-//     void SNAMELUSplit(TYPE in[2][2][2], TYPE lower[2][2][2], TYPE upper[2][2][2]);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 3D input arrays, hard-coded length
-//  * 3D input arrays
-//  * 3D input arrays, data last
-//  * 3D in-place arrays, hard-coded lengths
-//  * 3D in-place arrays
-//  * 3D in-place arrays, data last
-//  * 3D argout arrays, hard-coded length
-//
-#define TEST_FUNCS(TYPE, SNAME) \
-\
-TYPE SNAME ## Norm(TYPE tensor[2][2][2]) {	     \
-  double result = 0;				     \
-  for (int k=0; k<2; ++k)			     \
-    for (int j=0; j<2; ++j)			     \
-      for (int i=0; i<2; ++i)			     \
-	result += tensor[i][j][k] * tensor[i][j][k]; \
-  return (TYPE)sqrt(result/8);			     \
-}						     \
-\
-TYPE SNAME ## Max(TYPE * tensor, int rows, int cols, int num) { \
-  int i, j, k, index;						\
-  TYPE result = tensor[0];					\
-  for (k=0; k<num; ++k) {					\
-    for (j=0; j<cols; ++j) {					\
-      for (i=0; i<rows; ++i) {					\
-	index = k*rows*cols + j*rows + i;			\
-	if (tensor[index] > result) result = tensor[index];	\
-      }								\
-    }								\
-  }								\
-  return result;						\
-}								\
-\
-TYPE SNAME ## Min(int rows, int cols, int num, TYPE * tensor) {	\
-  int i, j, k, index;						\
-  TYPE result = tensor[0];					\
-  for (k=0; k<num; ++k) {					\
-    for (j=0; j<cols; ++j) {					\
-      for (i=0; i<rows; ++i) {					\
-	index = k*rows*cols + j*rows + i;			\
-	if (tensor[index] < result) result = tensor[index];	\
-      }								\
-    }								\
-  }								\
-  return result;						\
-}								\
-\
-void SNAME ## Scale(TYPE array[3][3][3], TYPE val) { \
-  for (int i=0; i<3; ++i)			     \
-    for (int j=0; j<3; ++j)			     \
-      for (int k=0; k<3; ++k)			     \
-	array[i][j][k] *= val;			     \
-}						     \
-\
-void SNAME ## Floor(TYPE * array, int rows, int cols, int num, TYPE floor) { \
-  int i, j, k, index;							     \
-  for (k=0; k<num; ++k) {						     \
-    for (j=0; j<cols; ++j) {						     \
-      for (i=0; i<rows; ++i) {						     \
-	index = k*cols*rows + j*rows + i;				     \
-	if (array[index] < floor) array[index] = floor;			     \
-      }									     \
-    }									     \
-  }									     \
-}									     \
-\
-void SNAME ## Ceil(int rows, int cols, int num, TYPE * array, TYPE ceil) { \
-  int i, j, k, index;							   \
-  for (k=0; k<num; ++k) {						   \
-    for (j=0; j<cols; ++j) {						   \
-      for (i=0; i<rows; ++i) {						   \
-	index = j*rows + i;						   \
-	if (array[index] > ceil) array[index] = ceil;			   \
-      }									   \
-    }									   \
-  }									   \
-}									   \
-\
-void SNAME ## LUSplit(TYPE tensor[2][2][2], TYPE lower[2][2][2], \
-		      TYPE upper[2][2][2]) {			 \
-  int sum;							 \
-  for (int k=0; k<2; ++k) {					 \
-    for (int j=0; j<2; ++j) {					 \
-      for (int i=0; i<2; ++i) {					 \
-	sum = i + j + k;					 \
-	if (sum < 2) {						 \
-	  lower[i][j][k] = tensor[i][j][k];			 \
-	  upper[i][j][k] = 0;					 \
-	} else {						 \
-	  upper[i][j][k] = tensor[i][j][k];			 \
-	  lower[i][j][k] = 0;					 \
-	}							 \
-      }								 \
-    }								 \
-  }								 \
-}
-
-TEST_FUNCS(signed char       , schar    )
-TEST_FUNCS(unsigned char     , uchar    )
-TEST_FUNCS(short             , short    )
-TEST_FUNCS(unsigned short    , ushort   )
-TEST_FUNCS(int               , int      )
-TEST_FUNCS(unsigned int      , uint     )
-TEST_FUNCS(long              , long     )
-TEST_FUNCS(unsigned long     , ulong    )
-TEST_FUNCS(long long         , longLong )
-TEST_FUNCS(unsigned long long, ulongLong)
-TEST_FUNCS(float             , float    )
-TEST_FUNCS(double            , double   )

Deleted: trunk/numpy/doc/swig/Tensor.h
===================================================================
--- trunk/numpy/doc/swig/Tensor.h	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Tensor.h	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,52 +0,0 @@
-#ifndef TENSOR_H
-#define TENSOR_H
-
-// The following macro defines the prototypes for a family of
-// functions that work with 3D arrays with the forms
-//
-//     TYPE SNAMENorm(   TYPE tensor[2][2][2]);
-//     TYPE SNAMEMax(    TYPE * tensor, int rows, int cols, int num);
-//     TYPE SNAMEMin(    int rows, int cols, int num, TYPE * tensor);
-//     void SNAMEScale(  TYPE array[3][3][3]);
-//     void SNAMEFloor(  TYPE * array,  int rows, int cols, int num, TYPE floor);
-//     void SNAMECeil(   int rows, int cols, int num, TYPE * array,  TYPE ceil );
-//     void SNAMELUSplit(TYPE in[3][3][3], TYPE lower[3][3][3], TYPE upper[3][3][3]);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 3D input arrays, hard-coded lengths
-//  * 3D input arrays
-//  * 3D input arrays, data last
-//  * 3D in-place arrays, hard-coded lengths
-//  * 3D in-place arrays
-//  * 3D in-place arrays, data last
-//  * 3D argout arrays, hard-coded length
-//
-#define TEST_FUNC_PROTOS(TYPE, SNAME) \
-\
-TYPE SNAME ## Norm(   TYPE tensor[2][2][2]); \
-TYPE SNAME ## Max(    TYPE * tensor, int rows, int cols, int num); \
-TYPE SNAME ## Min(    int rows, int cols, int num, TYPE * tensor); \
-void SNAME ## Scale(  TYPE array[3][3][3], TYPE val); \
-void SNAME ## Floor(  TYPE * array, int rows, int cols, int num, TYPE floor); \
-void SNAME ## Ceil(   int rows, int cols, int num, TYPE * array, TYPE ceil ); \
-void SNAME ## LUSplit(TYPE tensor[2][2][2], TYPE lower[2][2][2], TYPE upper[2][2][2]);
-
-TEST_FUNC_PROTOS(signed char       , schar    )
-TEST_FUNC_PROTOS(unsigned char     , uchar    )
-TEST_FUNC_PROTOS(short             , short    )
-TEST_FUNC_PROTOS(unsigned short    , ushort   )
-TEST_FUNC_PROTOS(int               , int      )
-TEST_FUNC_PROTOS(unsigned int      , uint     )
-TEST_FUNC_PROTOS(long              , long     )
-TEST_FUNC_PROTOS(unsigned long     , ulong    )
-TEST_FUNC_PROTOS(long long         , longLong )
-TEST_FUNC_PROTOS(unsigned long long, ulongLong)
-TEST_FUNC_PROTOS(float             , float    )
-TEST_FUNC_PROTOS(double            , double   )
-
-#endif

Deleted: trunk/numpy/doc/swig/Tensor.i
===================================================================
--- trunk/numpy/doc/swig/Tensor.i	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Tensor.i	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,49 +0,0 @@
-// -*- c++ -*-
-%module Tensor
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "Tensor.h"
-%}
-
-// Get the NumPy typemaps
-%include "numpy.i"
-
-%init %{
-  import_array();
-%}
-
-%define %apply_numpy_typemaps(TYPE)
-
-%apply (TYPE IN_ARRAY3[ANY][ANY][ANY]) {(TYPE tensor[ANY][ANY][ANY])};
-%apply (TYPE* IN_ARRAY3, int DIM1, int DIM2, int DIM3)
-      {(TYPE* tensor, int rows, int cols, int num)};
-%apply (int DIM1, int DIM2, int DIM3, TYPE* IN_ARRAY3)
-      {(int rows, int cols, int num, TYPE* tensor)};
-
-%apply (TYPE INPLACE_ARRAY3[ANY][ANY][ANY]) {(TYPE array[3][3][3])};
-%apply (TYPE* INPLACE_ARRAY3, int DIM1, int DIM2, int DIM3)
-      {(TYPE* array, int rows, int cols, int num)};
-%apply (int DIM1, int DIM2, int DIM3, TYPE* INPLACE_ARRAY3)
-      {(int rows, int cols, int num, TYPE* array)};
-
-%apply (TYPE ARGOUT_ARRAY3[ANY][ANY][ANY]) {(TYPE lower[2][2][2])};
-%apply (TYPE ARGOUT_ARRAY3[ANY][ANY][ANY]) {(TYPE upper[2][2][2])};
-
-%enddef    /* %apply_numpy_typemaps() macro */
-
-%apply_numpy_typemaps(signed char       )
-%apply_numpy_typemaps(unsigned char     )
-%apply_numpy_typemaps(short             )
-%apply_numpy_typemaps(unsigned short    )
-%apply_numpy_typemaps(int               )
-%apply_numpy_typemaps(unsigned int      )
-%apply_numpy_typemaps(long              )
-%apply_numpy_typemaps(unsigned long     )
-%apply_numpy_typemaps(long long         )
-%apply_numpy_typemaps(unsigned long long)
-%apply_numpy_typemaps(float             )
-%apply_numpy_typemaps(double            )
-
-// Include the header file to be wrapped
-%include "Tensor.h"

Deleted: trunk/numpy/doc/swig/Vector.cxx
===================================================================
--- trunk/numpy/doc/swig/Vector.cxx	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Vector.cxx	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,100 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <iostream>
-#include "Vector.h"
-
-// The following macro defines a family of functions that work with 1D
-// arrays with the forms
-//
-//     TYPE SNAMELength( TYPE vector[3]);
-//     TYPE SNAMEProd(   TYPE * series, int size);
-//     TYPE SNAMESum(    int size, TYPE * series);
-//     void SNAMEReverse(TYPE array[3]);
-//     void SNAMEOnes(   TYPE * array,  int size);
-//     void SNAMEZeros(  int size, TYPE * array);
-//     void SNAMEEOSplit(TYPE vector[3], TYPE even[3], odd[3]);
-//     void SNAMETwos(   TYPE * twoVec, int size);
-//     void SNAMEThrees( int size, TYPE * threeVec);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 1D input arrays, hard-coded length
-//  * 1D input arrays
-//  * 1D input arrays, data last
-//  * 1D in-place arrays, hard-coded length
-//  * 1D in-place arrays
-//  * 1D in-place arrays, data last
-//  * 1D argout arrays, hard-coded length
-//  * 1D argout arrays
-//  * 1D argout arrays, data last
-//
-#define TEST_FUNCS(TYPE, SNAME) \
-\
-TYPE SNAME ## Length(TYPE vector[3]) {                   \
-  double result = 0;                                     \
-  for (int i=0; i<3; ++i) result += vector[i]*vector[i]; \
-  return (TYPE)sqrt(result);   			         \
-}                                                        \
-\
-TYPE SNAME ## Prod(TYPE * series, int size) {     \
-  TYPE result = 1;                                \
-  for (int i=0; i<size; ++i) result *= series[i]; \
-  return result;                                  \
-}                                                 \
-\
-TYPE SNAME ## Sum(int size, TYPE * series) {      \
-  TYPE result = 0;                                \
-  for (int i=0; i<size; ++i) result += series[i]; \
-  return result;                                  \
-}                                                 \
-\
-void SNAME ## Reverse(TYPE array[3]) { \
-  TYPE temp = array[0];		       \
-  array[0] = array[2];                 \
-  array[2] = temp;                     \
-}                                      \
-\
-void SNAME ## Ones(TYPE * array, int size) { \
-  for (int i=0; i<size; ++i) array[i] = 1;   \
-}                                            \
-\
-void SNAME ## Zeros(int size, TYPE * array) { \
-  for (int i=0; i<size; ++i) array[i] = 0;    \
-}                                             \
-\
-void SNAME ## EOSplit(TYPE vector[3], TYPE even[3], TYPE odd[3]) { \
-  for (int i=0; i<3; ++i) {					   \
-    if (i % 2 == 0) {						   \
-      even[i] = vector[i];					   \
-      odd[ i] = 0;						   \
-    } else {							   \
-      even[i] = 0;						   \
-      odd[ i] = vector[i];					   \
-    }								   \
-  }								   \
-}								   \
-\
-void SNAME ## Twos(TYPE* twoVec, int size) { \
-  for (int i=0; i<size; ++i) twoVec[i] = 2;  \
-}					     \
-\
-void SNAME ## Threes(int size, TYPE* threeVec) { \
-  for (int i=0; i<size; ++i) threeVec[i] = 3;	 \
-}
-
-TEST_FUNCS(signed char       , schar    )
-TEST_FUNCS(unsigned char     , uchar    )
-TEST_FUNCS(short             , short    )
-TEST_FUNCS(unsigned short    , ushort   )
-TEST_FUNCS(int               , int      )
-TEST_FUNCS(unsigned int      , uint     )
-TEST_FUNCS(long              , long     )
-TEST_FUNCS(unsigned long     , ulong    )
-TEST_FUNCS(long long         , longLong )
-TEST_FUNCS(unsigned long long, ulongLong)
-TEST_FUNCS(float             , float    )
-TEST_FUNCS(double            , double   )

Deleted: trunk/numpy/doc/swig/Vector.h
===================================================================
--- trunk/numpy/doc/swig/Vector.h	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Vector.h	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,58 +0,0 @@
-#ifndef VECTOR_H
-#define VECTOR_H
-
-// The following macro defines the prototypes for a family of
-// functions that work with 1D arrays with the forms
-//
-//     TYPE SNAMELength( TYPE vector[3]);
-//     TYPE SNAMEProd(   TYPE * series, int size);
-//     TYPE SNAMESum(    int size, TYPE * series);
-//     void SNAMEReverse(TYPE array[3]);
-//     void SNAMEOnes(   TYPE * array,  int size);
-//     void SNAMEZeros(  int size, TYPE * array);
-//     void SNAMEEOSplit(TYPE vector[3], TYPE even[3], TYPE odd[3]);
-//     void SNAMETwos(   TYPE * twoVec, int size);
-//     void SNAMEThrees( int size, TYPE * threeVec);
-//
-// for any specified type TYPE (for example: short, unsigned int, long
-// long, etc.) with given short name SNAME (for example: short, uint,
-// longLong, etc.).  The macro is then expanded for the given
-// TYPE/SNAME pairs.  The resulting functions are for testing numpy
-// interfaces, respectively, for:
-//
-//  * 1D input arrays, hard-coded length
-//  * 1D input arrays
-//  * 1D input arrays, data last
-//  * 1D in-place arrays, hard-coded length
-//  * 1D in-place arrays
-//  * 1D in-place arrays, data last
-//  * 1D argout arrays, hard-coded length
-//  * 1D argout arrays
-//  * 1D argout arrays, data last
-//
-#define TEST_FUNC_PROTOS(TYPE, SNAME) \
-\
-TYPE SNAME ## Length( TYPE vector[3]); \
-TYPE SNAME ## Prod(   TYPE * series, int size); \
-TYPE SNAME ## Sum(    int size, TYPE * series); \
-void SNAME ## Reverse(TYPE array[3]); \
-void SNAME ## Ones(   TYPE * array,  int size); \
-void SNAME ## Zeros(  int size, TYPE * array); \
-void SNAME ## EOSplit(TYPE vector[3], TYPE even[3], TYPE odd[3]); \
-void SNAME ## Twos(   TYPE * twoVec, int size); \
-void SNAME ## Threes( int size, TYPE * threeVec); \
-
-TEST_FUNC_PROTOS(signed char       , schar    )
-TEST_FUNC_PROTOS(unsigned char     , uchar    )
-TEST_FUNC_PROTOS(short             , short    )
-TEST_FUNC_PROTOS(unsigned short    , ushort   )
-TEST_FUNC_PROTOS(int               , int      )
-TEST_FUNC_PROTOS(unsigned int      , uint     )
-TEST_FUNC_PROTOS(long              , long     )
-TEST_FUNC_PROTOS(unsigned long     , ulong    )
-TEST_FUNC_PROTOS(long long         , longLong )
-TEST_FUNC_PROTOS(unsigned long long, ulongLong)
-TEST_FUNC_PROTOS(float             , float    )
-TEST_FUNC_PROTOS(double            , double   )
-
-#endif

Deleted: trunk/numpy/doc/swig/Vector.i
===================================================================
--- trunk/numpy/doc/swig/Vector.i	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/Vector.i	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,47 +0,0 @@
-// -*- c++ -*-
-%module Vector
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "Vector.h"
-%}
-
-// Get the NumPy typemaps
-%include "numpy.i"
-
-%init %{
-  import_array();
-%}
-
-%define %apply_numpy_typemaps(TYPE)
-
-%apply (TYPE IN_ARRAY1[ANY]) {(TYPE vector[3])};
-%apply (TYPE* IN_ARRAY1, int DIM1) {(TYPE* series, int size)};
-%apply (int DIM1, TYPE* IN_ARRAY1) {(int size, TYPE* series)};
-
-%apply (TYPE INPLACE_ARRAY1[ANY]) {(TYPE array[3])};
-%apply (TYPE* INPLACE_ARRAY1, int DIM1) {(TYPE* array, int size)};
-%apply (int DIM1, TYPE* INPLACE_ARRAY1) {(int size, TYPE* array)};
-
-%apply (TYPE ARGOUT_ARRAY1[ANY]) {(TYPE even[3])};
-%apply (TYPE ARGOUT_ARRAY1[ANY]) {(TYPE odd[ 3])};
-%apply (TYPE* ARGOUT_ARRAY1, int DIM1) {(TYPE* twoVec, int size)};
-%apply (int DIM1, TYPE* ARGOUT_ARRAY1) {(int size, TYPE* threeVec)};
-
-%enddef    /* %apply_numpy_typemaps() macro */
-
-%apply_numpy_typemaps(signed char       )
-%apply_numpy_typemaps(unsigned char     )
-%apply_numpy_typemaps(short             )
-%apply_numpy_typemaps(unsigned short    )
-%apply_numpy_typemaps(int               )
-%apply_numpy_typemaps(unsigned int      )
-%apply_numpy_typemaps(long              )
-%apply_numpy_typemaps(unsigned long     )
-%apply_numpy_typemaps(long long         )
-%apply_numpy_typemaps(unsigned long long)
-%apply_numpy_typemaps(float             )
-%apply_numpy_typemaps(double            )
-
-// Include the header file to be wrapped
-%include "Vector.h"

Added: trunk/numpy/doc/swig/doc/Makefile
===================================================================
--- trunk/numpy/doc/swig/doc/Makefile	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/Makefile	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,51 @@
+# ReStructured Text
+RST2HTML = rst2html.py
+RST2LATEX = rst2latex.py
+RFLAGS = --generator --time
+HTML_FLAGS = --no-xml-declaration
+LATEX_FLAGS =
+LATEX = pdflatex
+
+# Web pages that need to be made
+WEB_PAGES = numpy_swig.html testing.html
+
+# LaTeX files that need to be made
+LATEX_FILES = numpy_swig.tex testing.tex
+
+# PDF files that need to be made
+PDF_FILES = numpy_swig.pdf testing.pdf
+
+# Default target: documentation
+.PHONY : doc
+doc: html pdf
+
+# HTML target
+.PHONY : html
+html: $(WEB_PAGES)
+
+# Rule: %.txt -> %.html
+%.html: %.txt
+	$(RST2HTML) $(RFLAGS) $(HTML_FLAGS) $< $@
+
+# LaTeX target
+.PHONY : tex
+tex: $(LATEX_FILES)
+
+# Rule: %.txt -> %.tex
+%.tex: %.txt
+	$(RST2LATEX) $(RFLAGS) $(LATEX_FLAGS) $< $@
+
+# PDF target
+.PHONY : pdf
+pdf: $(PDF_FILES)
+
+# Rule: %.tex -> %.pdf
+%.pdf: %.tex
+	$(LATEX) $<
+	$(LATEX) $<
+
+# Clean target
+.PHONY : clean
+clean:
+	$(RM) $(LATEX_FILES)
+	$(RM) *.pyc *.aux *.dvi *.log *.out *~

Added: trunk/numpy/doc/swig/doc/numpy_swig.html
===================================================================
--- trunk/numpy/doc/swig/doc/numpy_swig.html	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/numpy_swig.html	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,1071 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>numpy.i: a SWIG Interface File for NumPy</title>
+<meta name="author" content="Bill Spotz" />
+<meta name="date" content="13 September, 2007" />
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
+:Revision: $Revision: 4224 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="numpy-i-a-swig-interface-file-for-numpy">
+<h1 class="title">numpy.i: a SWIG Interface File for NumPy</h1>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr><th class="docinfo-name">Author:</th>
+<td>Bill Spotz</td></tr>
+<tr class="field"><th class="docinfo-name">Institution:</th><td class="field-body">Sandia National Laboratories</td>
+</tr>
+<tr><th class="docinfo-name">Date:</th>
+<td>13 September, 2007</td></tr>
+</tbody>
+</table>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
+<ul class="simple">
+<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
+<li><a class="reference" href="#using-numpy-i" id="id2" name="id2">Using numpy.i</a></li>
+<li><a class="reference" href="#available-typemaps" id="id3" name="id3">Available Typemaps</a><ul>
+<li><a class="reference" href="#input-arrays" id="id4" name="id4">Input Arrays</a></li>
+<li><a class="reference" href="#in-place-arrays" id="id5" name="id5">In-Place Arrays</a></li>
+<li><a class="reference" href="#argout-arrays" id="id6" name="id6">Argout Arrays</a></li>
+<li><a class="reference" href="#output-arrays" id="id7" name="id7">Output Arrays</a></li>
+<li><a class="reference" href="#other-common-types-bool" id="id8" name="id8">Other Common Types: bool</a></li>
+<li><a class="reference" href="#other-common-types-complex" id="id9" name="id9">Other Common Types: complex</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#helper-functions" id="id10" name="id10">Helper Functions</a><ul>
+<li><a class="reference" href="#macros" id="id11" name="id11">Macros</a></li>
+<li><a class="reference" href="#routines" id="id12" name="id12">Routines</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#beyond-the-provided-typemaps" id="id13" name="id13">Beyond the Provided Typemaps</a><ul>
+<li><a class="reference" href="#a-common-example" id="id14" name="id14">A Common Example</a></li>
+<li><a class="reference" href="#other-situations" id="id15" name="id15">Other Situations</a></li>
+<li><a class="reference" href="#a-final-note" id="id16" name="id16">A Final Note</a></li>
+</ul>
+</li>
+<li><a class="reference" href="#summary" id="id17" name="id17">Summary</a></li>
+<li><a class="reference" href="#acknowledgements" id="id18" name="id18">Acknowledgements</a></li>
+</ul>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id1" id="introduction" name="introduction">Introduction</a></h1>
+<p>The Simple Wrapper and Interface Generator (or <a class="reference" href="http://www.swig.org">SWIG</a>) is a powerful tool for generating wrapper
+code for interfacing to a wide variety of scripting languages.
+<a class="reference" href="http://www.swig.org">SWIG</a> can parse header files, and using only the code prototypes,
+create an interface to the target language.  But <a class="reference" href="http://www.swig.org">SWIG</a> is not
+omnipotent.  For example, it cannot know from the prototype:</p>
+<pre class="literal-block">
+double rms(double* seq, int n);
+</pre>
+<p>what exactly <tt class="docutils literal"><span class="pre">seq</span></tt> is.  Is it a single value to be altered in-place?
+Is it an array, and if so what is its length?  Is it input-only?
+Output-only?  Input-output?  <a class="reference" href="http://www.swig.org">SWIG</a> cannot determine these details,
+and does not attempt to do so.</p>
+<p>Making an educated guess, humans can conclude that this is probably a
+routine that takes an input-only array of length <tt class="docutils literal"><span class="pre">n</span></tt> of <tt class="docutils literal"><span class="pre">double</span></tt>
+values called <tt class="docutils literal"><span class="pre">seq</span></tt> and returns the root mean square.  The default
+behavior of <a class="reference" href="http://www.swig.org">SWIG</a>, however, will be to create a wrapper function
+that compiles, but is nearly impossible to use from the scripting
+language in the way the C routine was intended.</p>
+<p>For <a class="reference" href="http://www.python.org">python</a>, the preferred way of handling
+contiguous (or technically, <em>strided</em>) blocks of homogeneous data is
+with the module <a class="reference" href="http://numpy.scipy.org">NumPy</a>, which provides full
+object-oriented access to arrays of data.  Therefore, the most logical
+<a class="reference" href="http://www.python.org">python</a> interface for the <tt class="docutils literal"><span class="pre">rms</span></tt> function would be (including doc
+string):</p>
+<pre class="literal-block">
+def rms(seq):
+    &quot;&quot;&quot;
+    rms: return the root mean square of a sequence
+    rms(numpy.ndarray) -&gt; double
+    rms(list) -&gt; double
+    rms(tuple) -&gt; double
+    &quot;&quot;&quot;
+</pre>
+<p>where <tt class="docutils literal"><span class="pre">seq</span></tt> would be a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array of <tt class="docutils literal"><span class="pre">double</span></tt> values, and its
+length <tt class="docutils literal"><span class="pre">n</span></tt> would be extracted from <tt class="docutils literal"><span class="pre">seq</span></tt> internally before being
+passed to the C routine.  Even better, since <a class="reference" href="http://numpy.scipy.org">NumPy</a> supports
+construction of arrays from arbitrary <a class="reference" href="http://www.python.org">python</a> sequences, <tt class="docutils literal"><span class="pre">seq</span></tt>
+itself could be a nearly arbitrary sequence (so long as each element
+can be converted to a <tt class="docutils literal"><span class="pre">double</span></tt>) and the wrapper code would
+internally convert it to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array before extracting its data
+and length.</p>
+<p><a class="reference" href="http://www.swig.org">SWIG</a> allows these types of conversions to be defined via a
+mechanism called typemaps.  This document provides information on how
+to use <tt class="docutils literal"><span class="pre">numpy.i</span></tt>, a <a class="reference" href="http://www.swig.org">SWIG</a> interface file that defines a series of
+typemaps intended to make the type of array-related conversions
+described above relatively simple to implement.  For example, suppose
+that the <tt class="docutils literal"><span class="pre">rms</span></tt> function prototype defined above was in a header file
+named <tt class="docutils literal"><span class="pre">rms.h</span></tt>.  To obtain the <a class="reference" href="http://www.python.org">python</a> interface discussed above,
+your <a class="reference" href="http://www.swig.org">SWIG</a> interface file would need the following:</p>
+<pre class="literal-block">
+%{
+#define SWIG_FILE_WITH_INIT
+#include &quot;rms.h&quot;
+%}
+
+%include &quot;numpy.i&quot;
+
+%init %{
+import_array();
+%}
+
+%apply (double* IN_ARRAY1, int DIM1) {(double* seq, int n)};
+%include &quot;rms.h&quot;
+</pre>
+<p>Typemaps are keyed off a list of one or more function arguments,
+either by type or by type and name.  We will refer to such lists as
+<em>signatures</em>.  One of the many typemaps defined by <tt class="docutils literal"><span class="pre">numpy.i</span></tt> is used
+above and has the signature <tt class="docutils literal"><span class="pre">(double*</span> <span class="pre">IN_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1)</span></tt>.  The
+argument names are intended to suggest that the <tt class="docutils literal"><span class="pre">double*</span></tt> argument
+is an input array of one dimension and that the <tt class="docutils literal"><span class="pre">int</span></tt> represents
+that dimension.  This is precisely the pattern in the <tt class="docutils literal"><span class="pre">rms</span></tt>
+prototype.</p>
+<p>Most likely, no actual prototypes to be wrapped will have the argument
+names <tt class="docutils literal"><span class="pre">IN_ARRAY1</span></tt> and <tt class="docutils literal"><span class="pre">DIM1</span></tt>.  We use the <tt class="docutils literal"><span class="pre">%apply</span></tt> directive to
+apply the typemap for one-dimensional input arrays of type <tt class="docutils literal"><span class="pre">double</span></tt>
+to the actual prototype used by <tt class="docutils literal"><span class="pre">rms</span></tt>.  Using <tt class="docutils literal"><span class="pre">numpy.i</span></tt>
+effectively, therefore, requires knowing what typemaps are available
+and what they do.</p>
+<p>A <a class="reference" href="http://www.swig.org">SWIG</a> interface file that includes the <a class="reference" href="http://www.swig.org">SWIG</a> directives given
+above will produce wrapper code that looks something like:</p>
+<pre class="literal-block">
+ 1 PyObject *_wrap_rms(PyObject *args) {
+ 2   PyObject *resultobj = 0;
+ 3   double *arg1 = (double *) 0 ;
+ 4   int arg2 ;
+ 5   double result;
+ 6   PyArrayObject *array1 = NULL ;
+ 7   int is_new_object1 = 0 ;
+ 8   PyObject * obj0 = 0 ;
+ 9
+10   if (!PyArg_ParseTuple(args,(char *)&quot;O:rms&quot;,&amp;obj0)) SWIG_fail;
+11   {
+12     array1 = obj_to_array_contiguous_allow_conversion(
+13                  obj0, NPY_DOUBLE, &amp;is_new_object1);
+14     npy_intp size[1] = {
+15       -1
+16     };
+17     if (!array1 || !require_dimensions(array1, 1) ||
+18         !require_size(array1, size, 1)) SWIG_fail;
+19     arg1 = (double*) array1-&gt;data;
+20     arg2 = (int) array1-&gt;dimensions[0];
+21   }
+22   result = (double)rms(arg1,arg2);
+23   resultobj = SWIG_From_double((double)(result));
+24   {
+25     if (is_new_object1 &amp;&amp; array1) Py_DECREF(array1);
+26   }
+27   return resultobj;
+28 fail:
+29   {
+30     if (is_new_object1 &amp;&amp; array1) Py_DECREF(array1);
+31   }
+32   return NULL;
+33 }
+</pre>
+<p>The typemaps from <tt class="docutils literal"><span class="pre">numpy.i</span></tt> are responsible for the following lines
+of code: 12--20, 25 and 30.  Line 10 parses the input to the <tt class="docutils literal"><span class="pre">rms</span></tt>
+function.  From the format string <tt class="docutils literal"><span class="pre">&quot;O:rms&quot;</span></tt>, we can see that the
+argument list is expected to be a single <a class="reference" href="http://www.python.org">python</a> object (specified
+by the <tt class="docutils literal"><span class="pre">O</span></tt> before the colon) and whose pointer is stored in
+<tt class="docutils literal"><span class="pre">obj0</span></tt>.  A number of functions, supplied by <tt class="docutils literal"><span class="pre">numpy.i</span></tt>, are called
+to make and check the (possible) conversion from a generic <a class="reference" href="http://www.python.org">python</a>
+object to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.  These functions are explained in the
+section <a class="reference" href="#helper-functions">Helper Functions</a>, but hopefully their names are
+self-explanatory.  At line 12 we use <tt class="docutils literal"><span class="pre">obj0</span></tt> to construct a <a class="reference" href="http://numpy.scipy.org">NumPy</a>
+array.  At line 17, we check the validity of the result: that it is
+non-null and that it has a single dimension of arbitrary length.  Once
+these states are verified, we extract the data buffer and length in
+lines 19 and 20 so that we can call the underlying C function at line
+22.  Line 25 performs memory management for the case where we have
+created a new array that is no longer needed.</p>
+<p>This code has a significant amount of error handling.  Note the
+<tt class="docutils literal"><span class="pre">SWIG_fail</span></tt> is a macro for <tt class="docutils literal"><span class="pre">goto</span> <span class="pre">fail</span></tt>, refering to the label at
+line 28.  If the user provides the wrong number of arguments, this
+will be caught at line 10.  If construction of the <a class="reference" href="http://numpy.scipy.org">NumPy</a> array
+fails or produces an array with the wrong number of dimensions, these
+errors are caught at line 17.  And finally, if an error is detected,
+memory is still managed correctly at line 30.</p>
+<p>Note that if the C function signature was in a different order:</p>
+<pre class="literal-block">
+double rms(int n, double* seq);
+</pre>
+<p>that <a class="reference" href="http://www.swig.org">SWIG</a> would not match the typemap signature given above with
+the argument list for <tt class="docutils literal"><span class="pre">rms</span></tt>.  Fortunately, <tt class="docutils literal"><span class="pre">numpy.i</span></tt> has a set of
+typemaps with the data pointer given last:</p>
+<pre class="literal-block">
+%apply (int DIM1, double* IN_ARRAY1) {(int n, double* seq)};
+</pre>
+<p>This simply has the effect of switching the definitions of <tt class="docutils literal"><span class="pre">arg1</span></tt>
+and <tt class="docutils literal"><span class="pre">arg2</span></tt> in lines 3 and 4 of the generated code above, and their
+assignments in lines 19 and 20.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id2" id="using-numpy-i" name="using-numpy-i">Using numpy.i</a></h1>
+<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> file is currently located in the <tt class="docutils literal"><span class="pre">numpy/docs/swig</span></tt>
+sub-directory under the <tt class="docutils literal"><span class="pre">numpy</span></tt> installation directory.  Typically,
+you will want to copy it to the directory where you are developing
+your wrappers.  If it is ever adopted by <a class="reference" href="http://www.swig.org">SWIG</a> developers, then it
+will be installed in a standard place where <a class="reference" href="http://www.swig.org">SWIG</a> can find it.</p>
+<p>A simple module that only uses a single <a class="reference" href="http://www.swig.org">SWIG</a> interface file should
+include the following:</p>
+<pre class="literal-block">
+%{
+#define SWIG_FILE_WITH_INIT
+%}
+%include &quot;numpy.i&quot;
+%init %{
+import_array();
+%}
+</pre>
+<p>Within a compiled <a class="reference" href="http://www.python.org">python</a> module, <tt class="docutils literal"><span class="pre">import_array()</span></tt> should only get
+called once.  This could be in a C/C++ file that you have written and
+is linked to the module.  If this is the case, then none of your
+interface files should <tt class="docutils literal"><span class="pre">#define</span> <span class="pre">SWIG_FILE_WITH_INIT</span></tt> or call
+<tt class="docutils literal"><span class="pre">import_array()</span></tt>.  Or, this initialization call could be in a
+wrapper file generated by <a class="reference" href="http://www.swig.org">SWIG</a> from an interface file that has the
+<tt class="docutils literal"><span class="pre">%init</span></tt> block as above.  If this is the case, and you have more than
+one <a class="reference" href="http://www.swig.org">SWIG</a> interface file, then only one interface file should
+<tt class="docutils literal"><span class="pre">#define</span> <span class="pre">SWIG_FILE_WITH_INIT</span></tt> and call <tt class="docutils literal"><span class="pre">import_array()</span></tt>.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id3" id="available-typemaps" name="available-typemaps">Available Typemaps</a></h1>
+<p>The typemap directives provided by <tt class="docutils literal"><span class="pre">numpy.i</span></tt> for arrays of different
+data types, say <tt class="docutils literal"><span class="pre">double</span></tt> and <tt class="docutils literal"><span class="pre">int</span></tt>, and dimensions of different
+types, say <tt class="docutils literal"><span class="pre">int</span></tt> or <tt class="docutils literal"><span class="pre">long</span></tt>, are identical to one another except
+for the C and <a class="reference" href="http://numpy.scipy.org">NumPy</a> type specifications.  The typemaps are
+therefore implemented (typically behind the scenes) via a macro:</p>
+<pre class="literal-block">
+%numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
+</pre>
+<p>that can be invoked for appropriate <tt class="docutils literal"><span class="pre">(DATA_TYPE,</span> <span class="pre">DATA_TYPECODE,</span>
+<span class="pre">DIM_TYPE)</span></tt> triplets.  For example:</p>
+<pre class="literal-block">
+%numpy_typemaps(double, NPY_DOUBLE, int)
+%numpy_typemaps(int,    NPY_INT   , int)
+</pre>
+<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file uses the <tt class="docutils literal"><span class="pre">%numpy_typemaps</span></tt> macro to
+implement typemaps for the following C data types and <tt class="docutils literal"><span class="pre">int</span></tt>
+dimension types:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">short</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">int</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">float</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">double</span></tt></li>
+</ul>
+</blockquote>
+<p>In the following descriptions, we reference a generic <tt class="docutils literal"><span class="pre">DATA_TYPE</span></tt>, which
+could be any of the C data types listed above.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id4" id="input-arrays" name="input-arrays">Input Arrays</a></h2>
+<p>Input arrays are defined as arrays of data that are passed into a
+routine but are not altered in-place or returned to the user.  The
+<a class="reference" href="http://www.python.org">python</a> input array is therefore allowed to be almost any <a class="reference" href="http://www.python.org">python</a>
+sequence (such as a list) that can be converted to the requested type
+of array.  The input array signatures are</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>The first signature listed, <tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY[ANY]</span> <span class="pre">)</span></tt> is for
+one-dimensional arrays with hard-coded dimensions.  Likewise,
+<tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt> is for two-dimensional arrays
+with hard-coded dimensions, and similarly for three-dimensional.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id5" id="in-place-arrays" name="in-place-arrays">In-Place Arrays</a></h2>
+<p>In-place arrays are defined as arrays that are modified in-place.  The
+input values may or may not be used, but the values at the time the
+function returns are significant.  The provided <a class="reference" href="http://www.python.org">python</a> argument
+must therefore be a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array of the required type.  The in-place
+signatures are</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>These typemaps now check to make sure that the <tt class="docutils literal"><span class="pre">INPLACE_ARRAY</span></tt>
+arguments use native byte ordering.  If not, an exception is raised.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id6" id="argout-arrays" name="argout-arrays">Argout Arrays</a></h2>
+<p>Argout arrays are arrays that appear in the input arguments in C, but
+are in fact output arrays.  This pattern occurs often when there is
+more than one output variable and the single return argument is
+therefore not sufficient.  In <a class="reference" href="http://www.python.org">python</a>, the convential way to return
+multiple arguments is to pack them into a sequence (tuple, list, etc.)
+and return the sequence.  This is what the argout typemaps do.  If a
+wrapped function that uses these argout typemaps has more than one
+return argument, they are packed into a tuple or list, depending on
+the version of <a class="reference" href="http://www.python.org">python</a>.  The <a class="reference" href="http://www.python.org">python</a> user does not pass these
+arrays in, they simply get returned.  The argout signatures are</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>These are typically used in situations where in C/C++, you would
+allocate a(n) array(s) on the heap, and call the function to fill the
+array(s) values.  In <a class="reference" href="http://www.python.org">python</a>, the arrays are allocated for you and
+returned as new array objects.</p>
+<p>Note that we support <tt class="docutils literal"><span class="pre">DATA_TYPE*</span></tt> argout typemaps in 1D, but not 2D
+or 3D.  This because of a quirk with the <a class="reference" href="http://www.swig.org">SWIG</a> typemap syntax and
+cannot be avoided.  Note that for these types of 1D typemaps, the
+<a class="reference" href="http://www.python.org">python</a> function will take a single argument representing <tt class="docutils literal"><span class="pre">DIM1</span></tt>.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id7" id="output-arrays" name="output-arrays">Output Arrays</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file does not support typemaps for output
+arrays, for several reasons.  First, C/C++ return arguments are
+limited to a single value.  This prevents obtaining dimension
+information in a general way.  Second, arrays with hard-coded lengths
+are not permitted as return arguments.  In other words:</p>
+<pre class="literal-block">
+double[3] newVector(double x, double y, double z);
+</pre>
+<p>is not legal C/C++ syntax.  Therefore, we cannot provide typemaps of
+the form:</p>
+<pre class="literal-block">
+%typemap(out) (TYPE[ANY]);
+</pre>
+<p>If you run into a situation where a function or method is returning a
+pointer to an array, your best bet is to write your own version of the
+function to be wrapped, either with <tt class="docutils literal"><span class="pre">%extend</span></tt> for the case of class
+methods or <tt class="docutils literal"><span class="pre">%ignore</span></tt> and <tt class="docutils literal"><span class="pre">%rename</span></tt> for the case of functions.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id8" id="other-common-types-bool" name="other-common-types-bool">Other Common Types: bool</a></h2>
+<p>Note that C++ type <tt class="docutils literal"><span class="pre">bool</span></tt> is not supported in the list in the
+<a class="reference" href="#available-typemaps">Available Typemaps</a> section.  NumPy bools are a single byte, while
+the C++ <tt class="docutils literal"><span class="pre">bool</span></tt> is four bytes (at least on my system).  Therefore:</p>
+<pre class="literal-block">
+%numpy_typemaps(bool, NPY_BOOL, int)
+</pre>
+<p>will result in typemaps that will produce code that reference
+improper data lengths.  You can implement the following macro
+expansion:</p>
+<pre class="literal-block">
+%numpy_typemaps(bool, NPY_UINT, int)
+</pre>
+<p>to fix the data length problem, and <a class="reference" href="#input-arrays">Input Arrays</a> will work fine,
+but <a class="reference" href="#in-place-arrays">In-Place Arrays</a> might fail type-checking.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id9" id="other-common-types-complex" name="other-common-types-complex">Other Common Types: complex</a></h2>
+<p>Typemap conversions for complex floating-point types is also not
+supported automatically.  This is because <a class="reference" href="http://www.python.org">python</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> are
+written in C, which does not have native complex types.  Both
+<a class="reference" href="http://www.python.org">python</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> implement their own (essentially equivalent)
+<tt class="docutils literal"><span class="pre">struct</span></tt> definitions for complex variables:</p>
+<pre class="literal-block">
+/* Python */
+typedef struct {double real; double imag;} Py_complex;
+
+/* NumPy */
+typedef struct {float  real, imag;} npy_cfloat;
+typedef struct {double real, imag;} npy_cdouble;
+</pre>
+<p>We could have implemented:</p>
+<pre class="literal-block">
+%numpy_typemaps(Py_complex , NPY_CDOUBLE, int)
+%numpy_typemaps(npy_cfloat , NPY_CFLOAT , int)
+%numpy_typemaps(npy_cdouble, NPY_CDOUBLE, int)
+</pre>
+<p>which would have provided automatic type conversions for arrays of
+type <tt class="docutils literal"><span class="pre">Py_complex</span></tt>, <tt class="docutils literal"><span class="pre">npy_cfloat</span></tt> and <tt class="docutils literal"><span class="pre">npy_cdouble</span></tt>.  However, it
+seemed unlikely that there would be any independent (non-<a class="reference" href="http://www.python.org">python</a>,
+non-<a class="reference" href="http://numpy.scipy.org">NumPy</a>) application code that people would be using <a class="reference" href="http://www.swig.org">SWIG</a> to
+generate a <a class="reference" href="http://www.python.org">python</a> interface to, that also used these definitions
+for complex types.  More likely, these application codes will define
+their own complex types, or in the case of C++, use <tt class="docutils literal"><span class="pre">std::complex</span></tt>.
+Assuming these data structures are compatible with <a class="reference" href="http://www.python.org">python</a> and
+<a class="reference" href="http://numpy.scipy.org">NumPy</a> complex types, <tt class="docutils literal"><span class="pre">%numpy_typemap</span></tt> expansions as above (with
+the user's complex type substituted for the first argument) should
+work.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id10" id="helper-functions" name="helper-functions">Helper Functions</a></h1>
+<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> file containes several macros and routines that it
+uses internally to build its typemaps.  However, these functions may
+be useful elsewhere in your interface file.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id11" id="macros" name="macros">Macros</a></h2>
+<blockquote>
+<dl class="docutils">
+<dt><strong>is_array(a)</strong></dt>
+<dd>Evaluates as true if <tt class="docutils literal"><span class="pre">a</span></tt> is non-<tt class="docutils literal"><span class="pre">NULL</span></tt> and can be cast to a
+<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_type(a)</strong></dt>
+<dd>Evaluates to the integer data type code of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can
+be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_numdims(a)</strong></dt>
+<dd>Evaluates to the integer number of dimensions of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming
+<tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_dimensions(a)</strong></dt>
+<dd>Evaluates to an array of type <tt class="docutils literal"><span class="pre">npy_intp</span></tt> and length
+<tt class="docutils literal"><span class="pre">array_numdims(a)</span></tt>, giving the lengths of all of the dimensions
+of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_size(a,i)</strong></dt>
+<dd>Evaluates to the <tt class="docutils literal"><span class="pre">i</span></tt>-th dimension size of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt>
+can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_data(a)</strong></dt>
+<dd>Evaluates to a pointer of type <tt class="docutils literal"><span class="pre">void*</span></tt> that points to the data
+buffer of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
+<dt><strong>array_is_contiguous(a)</strong></dt>
+<dd>Evaluates as true if <tt class="docutils literal"><span class="pre">a</span></tt> is a contiguous array.  Equivalent to
+<tt class="docutils literal"><span class="pre">(PyArray_ISCONTIGUOUS(a))</span></tt>.</dd>
+<dt><strong>array_is_native(a)</strong></dt>
+<dd>Evaluates as true if the data buffer of <tt class="docutils literal"><span class="pre">a</span></tt> uses native byte
+order.  Equivalent to <tt class="docutils literal"><span class="pre">(PyArray_ISNOTSWAPPED(a))</span></tt>.</dd>
+</dl>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id12" id="routines" name="routines">Routines</a></h2>
+<blockquote>
+<p><strong>pytype_string()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">char*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">py_obj</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
+</ul>
+<p>Return a string describing the type of <tt class="docutils literal"><span class="pre">py_obj</span></tt>.</p>
+</blockquote>
+<p><strong>typecode_string()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">char*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> integer typecode.</li>
+</ul>
+<p>Return a string describing the type corresponding to the <a class="reference" href="http://numpy.scipy.org">NumPy</a>
+<tt class="docutils literal"><span class="pre">typecode</span></tt>.</p>
+</blockquote>
+<p><strong>type_match()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">actual_type</span></tt>, the <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">desired_type</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode.</li>
+</ul>
+<p>Make sure that <tt class="docutils literal"><span class="pre">actual_type</span></tt> is compatible with
+<tt class="docutils literal"><span class="pre">desired_type</span></tt>.  For example, this allows character and
+byte types, or int and long types, to match.  This is now
+equivalent to <tt class="docutils literal"><span class="pre">PyArray_EquivTypenums()</span></tt>.</p>
+</blockquote>
+<p><strong>obj_to_array_no_conversion()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode.</li>
+</ul>
+<p>Cast <tt class="docutils literal"><span class="pre">input</span></tt> to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> if legal, and ensure that
+it is of type <tt class="docutils literal"><span class="pre">typecode</span></tt>.  If <tt class="docutils literal"><span class="pre">input</span></tt> cannot be cast, or the
+<tt class="docutils literal"><span class="pre">typecode</span></tt> is wrong, set a <a class="reference" href="http://www.python.org">python</a> error and return <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
+</blockquote>
+<p><strong>obj_to_array_allow_conversion()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of the resulting
+array.</li>
+<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
+performed, else 1.</li>
+</ul>
+<p>Convert <tt class="docutils literal"><span class="pre">input</span></tt> to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array with the given <tt class="docutils literal"><span class="pre">typecode</span></tt>.
+On success, return a valid <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> with the correct
+type.  On failure, the <a class="reference" href="http://www.python.org">python</a> error string will be set and the
+routine returns <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
+</blockquote>
+<p><strong>make_contiguous()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
+performed, else 1.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">min_dims</span></tt>, minimum allowable dimensions.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">max_dims</span></tt>, maximum allowable dimensions.</li>
+</ul>
+<p>Check to see if <tt class="docutils literal"><span class="pre">ary</span></tt> is contiguous.  If so, return the input
+pointer and flag it as not a new object.  If it is not contiguous,
+create a new <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> using the original data, flag it
+as a new object and return the pointer.</p>
+</blockquote>
+<p><strong>obj_to_array_contiguous_allow_conversion()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of the resulting
+array.</li>
+<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
+performed, else 1.</li>
+</ul>
+<p>Convert <tt class="docutils literal"><span class="pre">input</span></tt> to a contiguous <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> of the
+specified type.  If the input object is not a contiguous
+<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>, a new one will be created and the new object
+flag will be set.</p>
+</blockquote>
+<p><strong>require_contiguous()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+</ul>
+<p>Test whether <tt class="docutils literal"><span class="pre">ary</span></tt> is contiguous.  If so, return 1.  Otherwise,
+set a <a class="reference" href="http://www.python.org">python</a> error and return 0.</p>
+</blockquote>
+<p><strong>require_native()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArray_Object*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+</ul>
+<p>Require that <tt class="docutils literal"><span class="pre">ary</span></tt> is not byte-swapped.  If the array is not
+byte-swapped, return 1.  Otherwise, set a <a class="reference" href="http://www.python.org">python</a> error and
+return 0.</p>
+</blockquote>
+<p><strong>require_dimensions()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">exact_dimensions</span></tt>, the desired number of dimensions.</li>
+</ul>
+<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have a specified number of dimensions.  If the
+array has the specified number of dimensions, return 1.
+Otherwise, set a <a class="reference" href="http://www.python.org">python</a> error and return 0.</p>
+</blockquote>
+<p><strong>require_dimensions_n()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">exact_dimensions</span></tt>, an array of integers representing
+acceptable numbers of dimensions.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">n</span></tt>, the length of <tt class="docutils literal"><span class="pre">exact_dimensions</span></tt>.</li>
+</ul>
+<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have one of a list of specified number of
+dimensions.  If the array has one of the specified number of
+dimensions, return 1.  Otherwise, set the <a class="reference" href="http://www.python.org">python</a> error string
+and return 0.</p>
+</blockquote>
+<p><strong>require_size()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+<li><tt class="docutils literal"><span class="pre">npy_int*</span> <span class="pre">size</span></tt>, an array representing the desired lengths of
+each dimension.</li>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">n</span></tt>, the length of <tt class="docutils literal"><span class="pre">size</span></tt>.</li>
+</ul>
+<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have a specified shape.  If the array has the
+specified shape, return 1.  Otherwise, set the <a class="reference" href="http://www.python.org">python</a> error
+string and return 0.</p>
+</blockquote>
+</blockquote>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id13" id="beyond-the-provided-typemaps" name="beyond-the-provided-typemaps">Beyond the Provided Typemaps</a></h1>
+<p>There are many C or C++ array/<a class="reference" href="http://numpy.scipy.org">NumPy</a> array situations not covered by
+a simple <tt class="docutils literal"><span class="pre">%include</span> <span class="pre">&quot;numpy.i&quot;</span></tt> and subsequent <tt class="docutils literal"><span class="pre">%apply</span></tt> directives.</p>
+<div class="section">
+<h2><a class="toc-backref" href="#id14" id="a-common-example" name="a-common-example">A Common Example</a></h2>
+<p>Consider a reasonable prototype for a dot product function:</p>
+<pre class="literal-block">
+double dot(int len, double* vec1, double* vec2);
+</pre>
+<p>The <a class="reference" href="http://www.python.org">python</a> interface that we want is:</p>
+<pre class="literal-block">
+def dot(vec1, vec2):
+    &quot;&quot;&quot;
+    dot(PyObject,PyObject) -&gt; double
+    &quot;&quot;&quot;
+</pre>
+<p>The problem here is that there is one dimension argument and two array
+arguments, and our typemaps are set up for dimensions that apply to a
+single array (in fact, <a class="reference" href="http://www.swig.org">SWIG</a> does not provide a mechanism for
+associating <tt class="docutils literal"><span class="pre">len</span></tt> with <tt class="docutils literal"><span class="pre">vec2</span></tt> that takes two <a class="reference" href="http://www.python.org">python</a> input
+arguments).  The recommended solution is the following:</p>
+<pre class="literal-block">
+%apply (int DIM1, double* IN_ARRAY1) {(int len1, double* vec1),
+                                      (int len2, double* vec2)}
+%rename (dot) my_dot;
+%exception my_dot {
+    $action
+    if (PyErr_Occurred()) SWIG_fail;
+}
+%inline %{
+double my_dot(int len1, double* vec1, int len2, double* vec2) {
+    if (len1 != len2) {
+        PyErr_Format(PyExc_ValueError,
+                     &quot;Arrays of lengths (%d,%d) given&quot;,
+                     len1, len2);
+        return 0.0;
+    }
+    return dot(len1, vec1, vec2);
+}
+%}
+</pre>
+<p>If the header file that contains the prototype for <tt class="docutils literal"><span class="pre">double</span> <span class="pre">dot()</span></tt>
+also contains other prototypes that you want to wrap, so that you need
+to <tt class="docutils literal"><span class="pre">%include</span></tt> this header file, then you will also need a <tt class="docutils literal"><span class="pre">%ignore</span>
+<span class="pre">dot;</span></tt> directive, placed after the <tt class="docutils literal"><span class="pre">%rename</span></tt> and before the
+<tt class="docutils literal"><span class="pre">%include</span></tt> directives.  Or, if the function in question is a class
+method, you will want to use <tt class="docutils literal"><span class="pre">%extend</span></tt> rather than <tt class="docutils literal"><span class="pre">%inline</span></tt> in
+addition to <tt class="docutils literal"><span class="pre">%ignore</span></tt>.</p>
+<p><strong>A note on error handling:</strong> Note that <tt class="docutils literal"><span class="pre">my_dot</span></tt> returns a
+<tt class="docutils literal"><span class="pre">double</span></tt> but that it can also raise a <a class="reference" href="http://www.python.org">python</a> error.  The
+resulting wrapper function will return a <a class="reference" href="http://www.python.org">python</a> float
+representation of 0.0 when the vector lengths do not match.  Since
+this is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, the <a class="reference" href="http://www.python.org">python</a> interpreter will not know to check
+for an error.  For this reason, we add the <tt class="docutils literal"><span class="pre">%exception</span></tt> directive
+above for <tt class="docutils literal"><span class="pre">my_dot</span></tt> to get the behavior we want (note that
+<tt class="docutils literal"><span class="pre">$action</span></tt> is a macro that gets expanded to a valid call to
+<tt class="docutils literal"><span class="pre">my_dot</span></tt>).  In general, you will probably want to write a <a class="reference" href="http://www.swig.org">SWIG</a>
+macro to perform this task.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id15" id="other-situations" name="other-situations">Other Situations</a></h2>
+<p>There are other wrapping situations in which <tt class="docutils literal"><span class="pre">numpy.i</span></tt> may be
+helpful when you encounter them.</p>
+<blockquote>
+<ul>
+<li><p class="first">In some situations, it is possible that you could use the
+<tt class="docutils literal"><span class="pre">%numpy_templates</span></tt> macro to implement typemaps for your own
+types.  See the <a class="reference" href="#other-common-types-bool">Other Common Types: bool</a> or <a class="reference" href="#other-common-types-complex">Other Common
+Types: complex</a> sections for examples.  Another situation is if
+your dimensions are of a type other than <tt class="docutils literal"><span class="pre">int</span></tt> (say <tt class="docutils literal"><span class="pre">long</span></tt> for
+example):</p>
+<pre class="literal-block">
+%numpy_typemaps(double, NPY_DOUBLE, long)
+</pre>
+</li>
+<li><p class="first">You can use the code in <tt class="docutils literal"><span class="pre">numpy.i</span></tt> to write your own typemaps.
+For example, if you had a four-dimensional array as a function
+argument, you could cut-and-paste the appropriate
+three-dimensional typemaps into your interface file.  The
+modifications for the fourth dimension would be trivial.</p>
+</li>
+<li><p class="first">Sometimes, the best approach is to use the <tt class="docutils literal"><span class="pre">%extend</span></tt> directive
+to define new methods for your classes (or overload existing ones)
+that take a <tt class="docutils literal"><span class="pre">PyObject*</span></tt> (that either is or can be converted to a
+<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>) instead of a pointer to a buffer.  In this
+case, the helper routines in <tt class="docutils literal"><span class="pre">numpy.i</span></tt> can be very useful.</p>
+</li>
+<li><p class="first">Writing typemaps can be a bit nonintuitive.  If you have specific
+questions about writing <a class="reference" href="http://www.swig.org">SWIG</a> typemaps for <a class="reference" href="http://numpy.scipy.org">NumPy</a>, the
+developers of <tt class="docutils literal"><span class="pre">numpy.i</span></tt> do monitor the
+<a class="reference" href="mailto:Numpy-discussion&#64;scipy.org">Numpy-discussion</a> and
+<a class="reference" href="mailto:Swig-user&#64;lists.sourceforge.net">Swig-user</a> mail lists.</p>
+</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id16" id="a-final-note" name="a-final-note">A Final Note</a></h2>
+<p>When you use the <tt class="docutils literal"><span class="pre">%apply</span></tt> directive, as is usually necessary to use
+<tt class="docutils literal"><span class="pre">numpy.i</span></tt>, it will remain in effect until you tell <a class="reference" href="http://www.swig.org">SWIG</a> that it
+shouldn't be.  If the arguments to the functions or methods that you
+are wrapping have common names, such as <tt class="docutils literal"><span class="pre">length</span></tt> or <tt class="docutils literal"><span class="pre">vector</span></tt>,
+these typemaps may get applied in situations you do not expect or
+want.  Therefore, it is always a good idea to add a <tt class="docutils literal"><span class="pre">%clear</span></tt>
+directive after you are done with a specific typemap:</p>
+<pre class="literal-block">
+%apply (double* IN_ARRAY1, int DIM1) {(double* vector, int length)}
+%include &quot;my_header.h&quot;
+%clear (double* vector, int length);
+</pre>
+<p>In general, you should target these typemap signatures specifically
+where you want them, and then clear them after you are done.</p>
+</div>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id17" id="summary" name="summary">Summary</a></h1>
+<p>Out of the box, <tt class="docutils literal"><span class="pre">numpy.i</span></tt> provides typemaps that support conversion
+between <a class="reference" href="http://numpy.scipy.org">NumPy</a> arrays and C arrays:</p>
+<blockquote>
+<ul class="simple">
+<li>That can be one of 12 different scalar types: <tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt>,
+<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt>, <tt class="docutils literal"><span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">int</span></tt>,
+<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt>, <tt class="docutils literal"><span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt>,
+<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">float</span></tt> and <tt class="docutils literal"><span class="pre">double</span></tt>.</li>
+<li>That support 23 different argument signatures for each data type,
+including:<ul>
+<li>One-dimensional, two-dimensional and three-dimensional arrays.</li>
+<li>Input-only, in-place, and argout behavior.</li>
+<li>Hard-coded dimensions, data-buffer-then-dimensions
+specification, and dimensions-then-data-buffer specification.</li>
+</ul>
+</li>
+</ul>
+</blockquote>
+<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file also provides additional tools for
+wrapper developers, including:</p>
+<blockquote>
+<ul class="simple">
+<li>A <a class="reference" href="http://www.swig.org">SWIG</a> macro (<tt class="docutils literal"><span class="pre">%numpy_typemaps</span></tt>) with three arguments for
+implementing the 23 argument signatures for the user's choice of
+(1) C data type, (2) <a class="reference" href="http://numpy.scipy.org">NumPy</a> data type (assuming they match), and
+(3) dimension type.</li>
+<li>Seven C macros and eleven C functions that can be used to write
+specialized typemaps, extensions, or inlined functions that handle
+cases not covered by the provided typemaps.</li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id18" id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
+<p>Many people have worked to glue <a class="reference" href="http://www.swig.org">SWIG</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> together (as well
+as <a class="reference" href="http://www.swig.org">SWIG</a> and the predecessors of <a class="reference" href="http://numpy.scipy.org">NumPy</a>, Numeric and numarray).
+The effort to standardize this work into <tt class="docutils literal"><span class="pre">numpy.i</span></tt> began at the 2005
+<a class="reference" href="http://scipy.org">SciPy</a> Conference with a conversation between
+Fernando Perez and myself.  Fernando collected helper functions and
+typemaps from Michael Hunter, Anna Omelchenko and Michael Sanner.
+Sebastian Hasse has also provided additional error checking and use
+cases.  The work of these contributors has made this end result
+possible.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2007-09-13 17:08 UTC.
+Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
+
+</div>
+</body>
+</html>

Added: trunk/numpy/doc/swig/doc/numpy_swig.pdf
===================================================================
--- trunk/numpy/doc/swig/doc/numpy_swig.pdf	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/numpy_swig.pdf	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,2583 @@
+%PDF-1.4
+5 0 obj
+<< /S /GoTo /D (contents.0) >>
+endobj
+8 0 obj
+(Contents)
+endobj
+9 0 obj
+<< /S /GoTo /D (introduction.0) >>
+endobj
+12 0 obj
+(Introduction)
+endobj
+13 0 obj
+<< /S /GoTo /D (using-numpy-i.0) >>
+endobj
+16 0 obj
+(Using numpy.i)
+endobj
+17 0 obj
+<< /S /GoTo /D (available-typemaps.0) >>
+endobj
+20 0 obj
+(Available Typemaps)
+endobj
+21 0 obj
+<< /S /GoTo /D (input-arrays.1) >>
+endobj
+24 0 obj
+(Input Arrays)
+endobj
+25 0 obj
+<< /S /GoTo /D (in-place-arrays.1) >>
+endobj
+28 0 obj
+(In-Place Arrays)
+endobj
+29 0 obj
+<< /S /GoTo /D (argout-arrays.1) >>
+endobj
+32 0 obj
+(Argout Arrays)
+endobj
+33 0 obj
+<< /S /GoTo /D (output-arrays.1) >>
+endobj
+36 0 obj
+(Output Arrays)
+endobj
+37 0 obj
+<< /S /GoTo /D (other-common-types-bool.1) >>
+endobj
+40 0 obj
+(Other Common Types: bool)
+endobj
+41 0 obj
+<< /S /GoTo /D (other-common-types-complex.1) >>
+endobj
+44 0 obj
+(Other Common Types: complex)
+endobj
+45 0 obj
+<< /S /GoTo /D (helper-functions.0) >>
+endobj
+48 0 obj
+(Helper Functions)
+endobj
+49 0 obj
+<< /S /GoTo /D (macros.1) >>
+endobj
+52 0 obj
+(Macros)
+endobj
+53 0 obj
+<< /S /GoTo /D (routines.1) >>
+endobj
+56 0 obj
+(Routines)
+endobj
+57 0 obj
+<< /S /GoTo /D (beyond-the-provided-typemaps.0) >>
+endobj
+60 0 obj
+(Beyond the Provided Typemaps)
+endobj
+61 0 obj
+<< /S /GoTo /D (a-common-example.1) >>
+endobj
+64 0 obj
+(A Common Example)
+endobj
+65 0 obj
+<< /S /GoTo /D (other-situations.1) >>
+endobj
+68 0 obj
+(Other Situations)
+endobj
+69 0 obj
+<< /S /GoTo /D (a-final-note.1) >>
+endobj
+72 0 obj
+(A Final Note)
+endobj
+73 0 obj
+<< /S /GoTo /D (summary.0) >>
+endobj
+76 0 obj
+(Summary)
+endobj
+77 0 obj
+<< /S /GoTo /D (acknowledgements.0) >>
+endobj
+80 0 obj
+(Acknowledgements)
+endobj
+81 0 obj
+<< /S /GoTo /D [82 0 R  /Fit ] >>
+endobj
+84 0 obj <<
+/Length 1941      
+/Filter /FlateDecode
+>>
+stream
+xÚ½YYsE~÷¯ØG™ÊN¦çžð‡Ø@AH%¦ò@xòÚ¸°,cÉ9øõtÏ¥ÑîJ‚*—¼Wït÷×çôBÃñ«˜â^7ÖyfŒ†f6?âÍ>;;‚D£”aJ‹#O[i“Ü«¦5žYétM5 %˜ÖÆ5­ϼ0†ÈOΏŸJ߀e´jÎ/P–iéPÄLw~ñÛäöXØÉÃ1LæwtöñØú	ÃËkü=9nW“éq+9Ÿ¼Æ;oð÷þÎèV<
¬ºûK<ŸâoÖÅg§´Â
þÒ5=_àï>^¾<_~<þýüÇ£ççEÌj¡£ð¼ß©{&nkê ºR
*i„	šsOA6F+f-ÅŸ’ «?‹T(ÇãSW½%
ZäD䈅ð`&'Y­ÔCŠ€Ê>3“Å
+Oÿ‰ël°oóJ-H敵aÁn‘|I2\¯‚(׋€æ@-™ÔÖr *øNi‰‹d,²’”“ÓUº± §Ó$æOÓ?¢÷t“HÂÑuË1™3×
™¿/wC…b\ù
++
+& £L$kwG:ÒÉœ&JÓ‘¢„‚s;"hN… j&•Á³dµÛc|qÕÅòïJ9µ•ÈMF‚-„‚–㑨˜wPžÑû«ôèUí…žI0xR3
+^XC”©
+Qrá,÷A¥¡!ƒ’CÌ*Cö4´ŽãˆÊ.ÕZ‹=`td%¿ºþ(–v량Hÿ_—×ÁŒ0¹Š®ðÈéÈa:r*¥£>ú§oj¦œeàÄ!!7Ün2QÈC™LsZÁ8]§Mä<fåœdºùô.ä>Î1¢Z{ǘŒ†EÃ0/þ,4@ «O«1{H[•¤ŽBV¨J^¼K1°Š¹áé}ŠiFc€µXP¸šå0$SoAcVãòë# ¼E–FîF PÚ—Ù!fÉþØthnESsVMÎÀdàÊÃò {@ÈT!,HÓ«Åÿt‡)_ÕÔ‡Q  Úþ€ú=šö{ôÏT¤ÿ/%>)PGkÐÆ5ç!؆*}H6Å í2UƁ0 F­» <[ÌçXÃy??.©ùP25±¢.núø¥˜óÎ4µD#­5‚çÄAÂôm¬Ö{ÊTŸƒÐl1¿Ëµæà  ,¯{ë¦hÖWÔÝ®¾*ÌîVGKl­¯…ˆàù¾»Yëžà9¥¶â!u³†y¤°  €©´f=,,
+«.»ø¢ž"=ö€BíÉ)…Š ø9”“ÐiÕÔ¸4^½î@M굫ºsjOÂ(T¤ä«EN›¹µìF”Å:iq¿R¯?Z',‡Ã9·Ô–yíwï
+){Ò}¤6y7‚Á·K*ˆ]Ã˲·À,ð.¡B[Œîb<=li0…DÈœÓM-äHÆäLØ}
÷—ué—jOoQ¨Bo¡©“äsÔù…Ç:' ÁŒâª©9 öS¨CvRƽܗ	2Õ¶šñ:9Ç*uÓ=yó„•Ü55ûa¯‰
({H4¸Á-±Ü—22Uå§UÎÈs“aªÓ
‹‚c†;hjnC_à
+;mg—A¶tB¸Ý¤‘µçó)¥‰Á< u}S¯<PÔfœ×Ô9J.wO
+Q°ñŒòÜ_ɼ!¾¿‰i÷ݼ+“˜‘f˜ÜUÕ\Gz¡D5NŒL*#H¼<–BRlÄ.%NR%Fß=ö¬x¼x˜­®#ã@Ž€9r>zñ<åzád‰à*‡…ûo¨Ý	†»Vˆž¥"ž‹js—y÷Itgt÷6?ÊÄðÚ[®y¼ìgLÜŽráe#8`¸äíØVóú¶~a`ßá²Ù‘Ãxú¬/:†!ÙoCŒþÔ=Síf>\Œ˜#Á¸¡¥ƒÊÓáàqô¯`û§ÈôÖªLÿéÎeðUøjfFޏšV`ƒ_æ‰!¡f4&w–Ò1`×Ñ÷Ö¬|Zzè5KÏ‹¼x:‡÷¥¯ˆ×qªUfÌ«8Í<—ñ¸œåÇw½Ž-p!pDôÏ«P®º%ÚV2-¤£ò¹e«‡ò¶¢±qoÑ=þ…Mñ`7eè»W&ÚÍY!gÊ„5çb #˜¤ËrˆýéE*âDò–ƒÊÁ¿|DT®
+q|nÙ3f¨ï7!ùšuÆxìƒÁm:͆sá™
Ò…Nsÿƒ¯w$Œ³“`ónºZ¿´³f«ë%²"¶nqóe€å
+Ý,,u“?ŽdÇa¸åjr·}ûi̧ÆÛ0C4^»}N”éÛú…¡-Ëîq#‹iMZÓcðq0QíaŽÕ78f“yNNÚm4R€k1¿-X¾d­b/lšCžÀWº^³ü(úŠä–IgaÓW®×³«Y0KfNw6KrìÄ.³+ÍãuoO³ÛÓžlûDãŸÐP+¥rq"”—ˆ¥ÝŒ4…Š”¿HߪÈõªÙ>æ— Ã<}LEtœ&ßÄ7–éòïøÝŒnå`^ÅËÛ¸àáÛm@x‡»xë·
2M[
+°Ç­±Â"˜‰HQè³Ó‚c 1Æï_‰–}endstream
+endobj
+82 0 obj <<
+/Type /Page
+/Contents 84 0 R
+/Resources 83 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 121 0 R 122 0 R 123 0 R ]
+>> endobj
+98 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 572.1561 154.7972 581.0627]
+/Subtype /Link
+/A << /S /GoTo /D (introduction) >>
+>> endobj
+99 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 550.2982 162.5882 560.9481]
+/Subtype /Link
+/A << /S /GoTo /D (using-numpy-i) >>
+>> endobj
+100 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 530.3729 189.1283 541.2121]
+/Subtype /Link
+/A << /S /GoTo /D (available-typemaps) >>
+>> endobj
+101 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 510.4476 178.7476 521.0976]
+/Subtype /Link
+/A << /S /GoTo /D (input-arrays) >>
+>> endobj
+102 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 494.5074 190.5034 505.3466]
+/Subtype /Link
+/A << /S /GoTo /D (in-place-arrays) >>
+>> endobj
+103 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 478.5672 185.4226 489.2171]
+/Subtype /Link
+/A << /S /GoTo /D (argout-arrays) >>
+>> endobj
+104 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 462.6269 186.7573 473.2769]
+/Subtype /Link
+/A << /S /GoTo /D (output-arrays) >>
+>> endobj
+105 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 446.6867 245.8948 457.5259]
+/Subtype /Link
+/A << /S /GoTo /D (other-common-types-bool) >>
+>> endobj
+106 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 430.7465 262.7715 441.5857]
+/Subtype /Link
+/A << /S /GoTo /D (other-common-types-complex) >>
+>> endobj
+107 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 410.8212 174.6126 421.6604]
+/Subtype /Link
+/A << /S /GoTo /D (helper-functions) >>
+>> endobj
+108 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 392.8286 153.5624 401.5459]
+/Subtype /Link
+/A << /S /GoTo /D (macros) >>
+>> endobj
+109 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 376.8884 160.5759 385.6056]
+/Subtype /Link
+/A << /S /GoTo /D (routines) >>
+>> endobj
+110 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 355.0304 240.5847 365.8697]
+/Subtype /Link
+/A << /S /GoTo /D (beyond-the-provided-typemaps) >>
+>> endobj
+111 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 335.1051 213.6367 345.9444]
+/Subtype /Link
+/A << /S /GoTo /D (a-common-example) >>
+>> endobj
+112 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 321.0976 194.7271 330.0042]
+/Subtype /Link
+/A << /S /GoTo /D (other-situations) >>
+>> endobj
+113 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 305.1574 179.6044 314.0639]
+/Subtype /Link
+/A << /S /GoTo /D (a-final-note) >>
+>> endobj
+114 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 283.2994 142.0953 293.9494]
+/Subtype /Link
+/A << /S /GoTo /D (summary) >>
+>> endobj
+115 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 263.3741 182.5135 274.2134]
+/Subtype /Link
+/A << /S /GoTo /D (acknowledgements) >>
+>> endobj
+121 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [288.033 198.1192 317.1934 209.9797]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+122 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [312.5275 186.722 341.6879 197.5612]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+123 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [350.8735 174.7668 380.0339 185.6061]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+85 0 obj <<
+/D [82 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+86 0 obj <<
+/D [82 0 R /XYZ 74.4095 771.7323 null]
+>> endobj
+96 0 obj <<
+/D [82 0 R /XYZ 74.4095 613.3264 null]
+>> endobj
+6 0 obj <<
+/D [82 0 R /XYZ 74.4095 613.3264 null]
+>> endobj
+97 0 obj <<
+/D [82 0 R /XYZ 74.4095 585.1076 null]
+>> endobj
+116 0 obj <<
+/D [82 0 R /XYZ 74.4095 254.4078 null]
+>> endobj
+10 0 obj <<
+/D [82 0 R /XYZ 74.4095 254.4078 null]
+>> endobj
+120 0 obj <<
+/D [82 0 R /XYZ 74.4095 213.5613 null]
+>> endobj
+83 0 obj <<
+/Font << /F39 89 0 R /F44 92 0 R /F8 95 0 R /F51 119 0 R /F56 126 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+147 0 obj <<
+/Length 4012      
+/Filter /FlateDecode
+>>
+stream
+xÚ½kÜ¶ñ»Å¢E½ÂRÄ7™
Ú4NS4I‘^QMQÈ»ºóÖ··ÎéÇòß;Cr(RÔ®Î
Pòê1‡óâÌÛtðmŒleçÔÆX×j­Øfw|ÖmnáÛçÏX„‘R·Ri_Å»ÖjÍ7MŽä÷×Ï>za7®ušëÍõ;	%äÆhÖíÌæzÿÏí»WWlÛ?^5B™íðÃßö»Gxu×û«]ÿé£JgH”kQ&ÆÑ#@
p} óÙ˜k9, hl¯ÅÌö‹1̆ïâÄ}øñÕ=\·w1¼´ÛﯔÞöøâ-½4[$ñ¾¿¼j¸¦÷?øß~š	Ñ6oâÊúÝðINŒˆ¹î#.DWÅ
0ÃÊísø¢9B°m†û&#EOuXy>>·6­“\lÆZ§÷Œò÷,@HD„Já¡lâ›–õ&òG4§û´{iì×À*ð5Ê¥±Ÿà"ž}vÄP0ÑZ«H´k-“*È*~z¸0ßdR›à›|@%µ5ZdÓ_‚¿ÃõÅç’µvFÆLeÔÊäR¶œY^N¾óû×)îÄw-‰Ý‘6f_i'‡Ñ¿°xˆüQ²˜›$+"‰Ù¢Äp
Tt֐È0ON"Dp”º(ÿÇ7QPà-i‹„oÇSëÑ2	r(\)‡_"u¯á¿¤’@‰^9¸å¨ZAv~JÔ4nÊëèˆËáŽÃª¹õPG¿°1àØ’—¿éö>°Aˆe¨EIϧ[áåz‰C^&™öp}€ñßIx³
:7,hâdDñ¢Ê…ÍYdc¦`^¹æ6Å¿<Ý௭t¿¶¾uÁéhTïk«æ¿ã<~¼5
+P'¦-¡âÖB|j´Bµ¦“dõgX$e»zGöËŽÃéή;pfÓT¤ȦÒš·‘‡Q¤pò¤bhPT|spñnü.¢ð{1€S2Zl¯i4 órxƒo㊣þ	Þ
+mU©Ñ½¢]ý>
+Øé)pqrŸ<lTxÍeS™à›|@e­j´—M%S¼U‚›3S™ V&¯áäÏ^ùý Þ¼Ãÿ†ï½j!û½è¶ïÈÞ¡šu“OLJh½ðvç·,Xœ`púðá×©7^3ýÐÈû›¸×ÞΐæŸî	1ÏÔ°Ÿ¼Ñ$Z†1R÷2)»Ç™Olˆ—£dp:ÿýÈ8>¤)4£´–(•–"³Ñ8—wpC¦íž3A÷6Üsä-Òci¯ÀG;þÙ‹üm ’sÈ0ú"ë´ðýÓðsÎœN(Æ|&ØïG²nû`"Øö‚ûyÑ(Ð\b;Ý*eÝF;+ÖbŒßäjÙ­Ð"
oê÷q‰¯‚ÜÌéºu‚’ž¹Ô
+²Lƒ²]àÚ$çÍÔ@NÅ{a­Ë=Äèað÷IÃ>JdîÝ-:ä¸U’¿Ëcøþm§:²l€Îoéçyñ|Dp—ÂÇÌÁ6Â)AÝä
I÷ÕâÛý‚c€àÇò\@
+TvƒïÉy=‘œ/ýt<Ýz⢼:
+É[&&«Î“gô†-Œ‘IëÖ*lˆÎ÷ 
+’â‚cz9¹ÑZƒ1°rM	¾ÉÔ"T¡Å¥|å#°¿Ð‰.§ƒ3ïÑØŒŽ™ '¨Ë³×ÈH€­
+‡"/A^€E|
+Ür¿¹Aòò&câ]à6y’ÛÿxÙça24û0A¿ÛA4p‘Ûy·Vi1<Û}ˆ$—1>H*秞ÇÈOˆ©*ƒžÙÍãiŒÑ¸—Õ[Ò”¹`ÀQ"<½ÑJ¶Ì€—X‚oòµ`ThŸjáŒiƒ²¤gnáj…
+Ûµš;SRQzˆžöGôÉ¢Á)}Q`Þ¥)áàÏa¤ãs*ÀÌZÏF8Ÿ7¤'À}x9%€ºhÉŽg™™+Þg6*8ïÇ(…	Ð5¶ýx¾”$ÒΣÒ,jVÈ}ffi‡œl…À2Gá7¨<`8ØG`b‚"S8„4‡â"c-£åOá<ÛækÀ`ÞZfJÍø|‚te4cÿxšpˆR:ÅþþS¦dyŠ×cxuŒƒûiÐ)}_?LNÓ2û	xÈ´Ó)žëÊÕ-°ç>Ž=Æ8í½~Âû}FÄC¼Olô4ðôÛp{ö¸ö"îÒñ9pò€›€¶çM÷sWQJ©Ä É’³gQîS63XéÁm+Ü“r—¶UŽ`e¸Ù	Ł;©¬¦Õm§;µQ[(Çôš'ø&°`?çhWÝ;è³n–tTî=B]žsŽÆA”³W
äÎb漤°âC3`‡T4Ï<`Ö¬K!­ŸzJ²ú­yBNE¶êBFÎjŠ©'‹ÂðCœß³d—b'ó£ÜBZ¦™“ë¢ÙH|RjJíCqÍY ÞÈŽ¥S ƒ¯“CËܾE5îǩDZxX>…/y²?
?Ë'BŸ´ê¶ŸÁ}8õߤ<æézØMÉìTØUa³0ºŠ›.h¡WsÌßäê4o…vE¯À·Ú5£c¦W	êòì’	8:³dJc&áa’kävH¦âí<zA-.×BPËJ‘YŽ+S] _FÜI´–øÂ4ÌdÜ(0¡°&±f÷¾ÉÔv¯BûÔèâÓ‰9óà5]¦w>j[Ò0).;>_PniZ­¹z’ãÑRe53¿ãÃ]ˆJ¸³°ï…õq¹õq¾ŽÖ-¥¥`ä¥môƒ«µ„×âî»Àè2À)Çð~èãÁ.‰ÐªZŒ7s‘óŽtLƒ“·
Å !MVKG‰ˆ)QH†!)U&]ð¼U†[µJÉ…§:Ö
+žö(Ä-H_ªÈHSé`ò¥¤#‚í¦ AVçiž`³=jN¤Ñ‘…‰¶ŽD¤5àWÀ©N·†k¶¢‘	¾ÉÔ6«B»b1Sº¤ãl%ûâìt’ eÆ°å8$;ªå^NzvVË¢:ºQ2Ÿ“PÄã|Y±m狧ʻ´¼µLÙ•= ð&‡?[ÎO@+É~¦[ÅÁl•DÌm!A]ž›qЖN”s'É
™~tT¶+‹ŸáE4ÛQi"œ/‚™Ídq2Œ‰ØE(‡Ø˜7ú¶c’b}ÀHy¥>?Ç)qÙSær<†oE)Ëã˜}ôj
ÖÆäÐaÊ(úd‹XH(Æã¿W“É
+æÌ¥D˜°2Égåc_$+0]~peÅÿžÌÜÆÊÂÂÑÔM['S¼|`=,ØMÉÉØb@îtm†@iZ¦áì 
jx·v JðM> Ü*´+ͺÃ4Ÿ‘1o ¨•Éµ„É™)'¿”Í‚ˆòIý-q{RÃ<Wb% ?㐲ñ…y,‚Q¼ª+-J.6²ØóÅø:ùY¸=Ærx–ûAÿXNÞ¢BãÐ:Îl¼)¾#›¦Ó+š(ƒB¤’W´î‘Ú><F
šˆ-';¤ƒùX˜yŒ%»i_4yÕ…ÔG	|œ’ÎØßdyª]ÁéÃWÓOà^Aº*º÷徬Ìã…ÁØ‹	Oæà<.BÆÓµR2¾šñ„	“!zÿU;k»EC‹cw ‹³©«§q®>|öëë÷A]ü‡BI‚lëe)Û>^:.¶@8§1ÁÜUÙªvÊñ½nYGð>éï¶×WVx›íDè-I=;XAv¬Üž"ñÒÁ)Ý0LB¶Î©µ°+Á7ù€…CÈíBøòâfôÌAµB|dd%¶QB|ôÞ/䐅µÐ<Š÷øp
+ùÞÊŒ1æ?•»	þòºj´+ÞÄ™¶³L^fj‚Z™N¡“ŽÂÔÒ›à›…JJ/dÈã
+Nj|vRóaFÏ¥ùluBvà™4?£:‘£8_HPHꯀ¦—²Ç¿L-ekY—f¡Ó¾Âõ9\ÿ†ëE|þ3\ŸÅws
×ã;|þ*½?3÷!«ÌZÜpþ_DK[Ú¥3U\äOôÓN¦O˜è|@—MðŠ
+ïaª¦œeö!C~Š+{ŒÜ:SÞè¦bÑo>xÍ}òŸé´ŒôE´Ëg~¶ýu€¢íCâ~×7ñÂûÀÅB2A‰qýˆ›þe„šê?N‹Z™=¯(-Ïr?qæ§KÜù96K+û[SVS®)`›‡Ž’ŬàîClè
vH»í	L“·} Jõ§Çqï'D5á»ã”ž¾ÐÃå‘?PŸJˆa]@"1‡Ì)÷Ëà-ý}ßäTLödÌœïÿŒ
+ÆR€)Èš¤²–7!ÊnžyÓ®©o‚rÊÿÆE?.4Ú0…i”#ŽÔ؃ììƒsUÜ‹ãBÜ(˜&Š`_—Í^>̬jwèï#÷ÂZÎBbr¥
+'}òÆZ|óŸ*ørXu­UV攐·Üŝ”<¶t³6ÏÅèVd	B³	c¸/«·÷ty›êÎë—ì:u:ýÿmZ}†P¬.—eR׬çC­‰žQÆ*Ž¸pú:;56œ»yƒ×ŠÛÛ
+F9E·[m‘¸˜"FÖ.I¤YZ1NL­b.¶Ë;¶Ð7î!Š§<ô áïýÖQô|ôlS«ãYñóÃXÀaCÁ2ØLî©Õ¹.‡+²³ÔúÇÌê†%g4„ ÓÂÑMpYgÃê122YF-åcãmšzwHÅ‘åVÕ7¤lY‚ÝÃ-v¿.%ÅT«EªÊ®¶+/Ÿ¡Û(Ó¾8ØñÒÈ úF1ìt#+ÿ:ËW„?BâðsŸµ³íȤô±Iî2	uCÜTE‚‡ª®›éŠ.m}n	iÖ¹¨#FLVaáè:&°½ psÝ°Õ~˵&¥;&=7³¶5ÚPæ²´‚K•à™ÈüGR;3˸M^^­Ü—D
tQÂ}D¿à.õFh©ó†ŠCҍ2׈É"Š~;W­årÑg{•™òD´QÍ9mîïr…+ÌŸ§b©s‡ ¢Ž=ºµ¼û𶒌u™«‘´šíääXs,µM®'ÍpE~ÀùÐ\?<Áä€mÒ,÷ÇLmÿ6ýå«dËl*q~XØÔñT—ÆXMÌ%¬°NZåQ÷¬eÖö÷TnNR;V½¦¿®+óácúãJ.íÙ¸2æeÛuLϸ¬ö‘ië_fYàY¥oú»ÎÜqDßã¯=—q|írßfC0MTçÜÆâ„kág«¬óý«*¸Rendstream
+endobj
+146 0 obj <<
+/Type /Page
+/Contents 147 0 R
+/Resources 145 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 149 0 R 150 0 R 151 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R ]
+>> endobj
+149 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [312.8897 746.8856 342.0501 757.7248]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+150 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [124.3686 699.0649 153.529 709.9041]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+151 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [105.5626 674.5966 137.9707 686.4571]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+155 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [178.0471 663.1994 213.3644 674.0386]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+156 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [145.9004 650.6863 178.3085 662.5467]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+157 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [185.0642 539.3837 220.3815 550.5019]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+158 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [375.3565 527.7075 410.6737 538.5467]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+159 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [168.2912 515.1944 200.6993 527.0548]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+160 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [486.5452 503.2392 521.8625 515.0997]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+161 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [88.3572 479.8868 117.5176 490.7261]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+162 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [332.17 467.6527 361.3304 478.7709]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+163 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [199.781 432.0662 232.1891 442.9054]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+164 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [368.9173 432.0662 398.0777 442.9054]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+148 0 obj <<
+/D [146 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+145 0 obj <<
+/Font << /F8 95 0 R /F56 126 0 R /F58 154 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+167 0 obj <<
+/Length 3126      
+/Filter /FlateDecode
+>>
+stream
+xÚÝkoãÆñûý
+%rqb¹oò‚¸<›"H©‹¢Hƒ‘ez²äX¾\¯Iþ{gfg—»Ë‡|M?MŠœ™÷ήXÔð'NWºnÍÂ5me­‹õí“z±…o_<£µ­´±~Œ|]YWµr±J‘||ùä÷Ÿ7‹¶j­´‹Ë›|SFé…³¢r¶u‹Ëëï–/.¾¿üó“Ï.#¶¶­ŒÖ¦‡"Šøå~Ë ß&´ø*… Eҹ˿Áõå%BÚÊ	©&ŠiG¨yÚB¶•V¢ ¾‡Ù,àasÿnàêÖ›‹•tjùZhø½Çþ
½Bü-X®æ
\×{ʁ7å̤i+gjõXñFøù9ÑÎX6¶jE#ç¡ÎG£S® Žâ@¡h7ëþõŠ<HiÛ¿9x¡v?ÀÝ.ÒñùvÇÊØ{¸;F|ÄŸD
+5”÷?usGè@½4j݃•
+‚SIé0.QµÆHšÊ>R:¾†Gà^)µ<o7a|0†­ÿ´çW¯i
+ÏKéG—WªjœVc _iÔ„Ç·ºRJ›)
+RŒ±©é׺2Ê&”p:â"†Z¾ßÁõ
\?ÀõOH®ò;x¼‚ë-‹»#‘úwøû–¤!À[L
·Gbìxô¶Í,ýLZ¨séË‹•0îÑØïùõ‰bOŸQaþÁߐírª‚¨*¦zÍCßðpŽcsf–É™ñýÜkûhLš™	fÆÓM‰Ë™áæü\¦¤6*äóLä=l ’ËïkxóW¸¾¢kzrn\6;žÌ¿Þ°_e¦òV20§æ}l’n)Íút¼¤[–0(Õ:gAxDqî7™Ù}p1TÏ–§ÿ2‘ÿ‰¾d½ßE³ˆ^]ºë³þÓ:„OɍZ,?dÁ</¢Å‡Œäi¡ŠºÚ»EÌap}Á¸a’!)ŒªHx…’|~“­ð^#­haŽ)£WIH¹š0æ+Ï1š¥çwË‚~xJpìù:&¶šâø‰·K¾‘F&Ä ±¬…
+h ìg½§¡MüI~ÊzCïû˜=ð³ü)S~ïŠêT˜f}؃$w‰ï<A ÿf2ß1‰ï3µMjb¢²Ö-W4l‚Ëìü:dzc q'œ±¬_àñÿøA’¸~dËØ%ï®8“ì؍6,Ò
+NC·Í	G-æ^æY™;í„y“¥VÇL9ªäñÚÂßß3m‹"gOMêŒ¥c³í¦ø’>ø’c|¥Žð~|<Æt¾ãÀðýTæ—IPýuj2¡`¯)ÞCجû‘J3ןO'¹ìæcôQq†Í©‚qÌü>«ÏèÕüœêþvfæ5Åaê3
+ÓãY°—„™Œ`¿¡ŠzJ~Ö<{~™ÄúO9Ý|×·üüùùPrNÝvÜl{1¹ÂXÚ÷4÷Ù*9Å$ÇQƪçSðí\ñ¢’ ñ«6u.Ú¨‘h3¢¶|)1¹à£€ðD+ïq¬èÑÁSµºöéKßâY)PÂ.õßõ-‡[ê?`«@Ö¤s
+·s¶HošÊ	aÄy`öo“
+¨"•xRmåd×Ý÷¼ÐãÉ3r¤Ø¾ËW|§ã=h’vUÿ©/F¥óý—Ðà 
+û$mx’Ǐ,í²<‡ÒA¹¥«•¬Ÿ!(Ìx݁ =«ºBÈfùUÄêW>B«J5 ¼*AÓo½€hâ'j)µu:ØîXªØ»kZöY‚È:ueûD¨ÊՍf÷yh 
+ÑTÆØ xÃÔ¨=
+RÎR¶à1Æ6ëÈQ· NlB½"FøÕ¦ªLbzý54%[`Œ>Cš
DP#s´î^t§Í&\—È4™©eK–¼á>+)TLX;l´ ™Ò–<6ËÍ¿z§"an®=+a|×­W;ˆ.ôî%µmÄÖ¦m+
+øД|¦àWé€a/t€§w‚CCɏ2•Úü”Ù u†
µ³*çâb2Úþ5š£ó)xG!™zß^΄KÌG™OzLÝÚ:Xß7C+k*Ûˆ†¿³Î¢©³öÒP¤1˜ìƒïø´ƒ\ÄÈðoIœ'Í1¯lîÓ·]p]£ùԭ̍|ÌórM©•m8U]WB¹0Ó|Y=˜5nÎ4Â10F x/€òLúp/]ɽ'ŽñTZ9MNè¨Î,O¡sº7»8Ô7¢/³°Í“xÑÂÙ˜€æºÙ#H2D\˜óm÷:tö4è’†¡Hùôôº‹åGMŸòÔF6âUl\åT]tò×G’¸ßZ¸™ñÈ»Iš¦ÝŽ·)6‡°G´£‚©Ü­j,†]½Á4g"I_%ðÃ]«éc㈠åÔ2祌"3Ë€m%!Þd”!¥TK+¹±MUK#)š>ÏY‰9ûšlפª•Òm3+“4KZÕ«P鮯kÁjßan§<¯¸@<ñfÓŒ#³øîû)N{Þ®»X]û¯þwÿ«~Üi“¢žØx‚ Q™<x^|•Âd2@Š2ùÓfŸo¿A=AUÏ” JŸÒM¥$‹œÕr8@Ís8DÆqKÕ†bG(
Iòª»>7½Iú²ï<H”¸o~Ñ;œDwë«Ð¶Wd‹Óž;T«\§_<qʉf£$$é?Y¥í1
+éï}}ÖúVòXV–°¼Ðu#™« 8³B1p,“[
+œ¢¯Bßx
‡Ý¤•Y…ûÂîÑV–ÀO[Y :ãô¢Æø¯eÁEi@jž¸Ã…“9õ	¿W&*PÕm©@|%ÚžPQƒJÔ#ɲWVÁÈŸ.dÚ€2´õB…´
++v¿$L{´4ËËxçñªP„×¾O°ŠïÆã×X%t»	£¦×Œ°óléŠ-¨Ú¹<sÇæ搦m¬iÊp'}üeºñÎE Dƒ¨.Q_­_%ø $^x'~A†OÎJ«]Ý»8>÷åD^>S#[Ùë€)Dî|ž«€®¹ÎÿA
+p+_Ï6I<œ½ŒÕkÙê(WïZˆ¥hñÞ×c´#kÿîtô0©nñ{˜ÂÐ_†Ú/±ñ?Cð¿õÔžͤ½€pŸxœS	“è&
+ÿÂqR‚^­Ëº	„[óRºÔfAÜnn9 4œn}ÔÞnâ¢v¥”ì{)*ËÇxdݝø‰V*›ûþS´
+x~ÂH8õBc	¸‹‹^ÀÞù/4§·þ¹Cs¸ëÏ­xÝÌçTÈ­·æž“éÒ¿Š„ t+ö6Åå«Øh\i­‹Ã5ø&ø;>wþF~»=äž‚¦ãe©5Ìðöø¦_¾Á+EŽ÷M˜)Ê_¼
+yô:YøÐ|À ,J¾>>ôüÌ-^eåŸS!óßd¤N+íÚ‰`xê·ÝšO,á/¶˜!#ÖU‰ÝÀ-7l}&¦è¨%Ô0käÔ¥Ï0—¯AŸ¡¥ŸnÒ¥Mèðµ±Eƒ×ÞáøœÖ – þ^ú"@Ë}ôú升Iý#.÷þG¬‹<¡ÏrusVð'ô:†ÀÔ†ëi³ȏÌÀHgÊ/¥Q&é.¦™œ=ó+K–eæ
±…\¬;ľ}"D”аÀr®&	©(¡ñZ«~éd¦:Q	íìB€e·µ={Ð0À¯ÒÃµ× íÙÅnNª‚Áê‹¡æ©CQi#]N} A@7aÙ´ï5y˜Y~zÁ:–ñÞÆ[CH²óé­EÁŠŠúÜ\¦ú>Ê°j
Ö r¤âñ¦ª¬-Š[gáÑÏÙ$uŠÚ%~æ{i—«Ô
+·CôòE(4LB6eÁ~Y•/3Å{Q„úà‡dQ?ߎȷâ	ÑX3Y3•‡E^éæC²™¶÷Y,¦iΚëã}v•s”P9A– ̸)1™þbfAȱl{3Z|âo“•
é“d—nf¥UCÇ“ç>@R\÷¹Uùb#-TH±úš<˜*°ÁY‹ßp.5Á0<–Ú¶•VD2¡¾Ÿ9›Xìÿ‡ýý™‘éƒñ¤I8¿’n=ŽI¡m*iÜxç!.Z a°l
K1ù}Æ‚\<½?Bï?ñμûendstream
+endobj
+166 0 obj <<
+/Type /Page
+/Contents 167 0 R
+/Resources 165 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R ]
+>> endobj
+169 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [98.5482 758.8407 127.7087 769.68]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+170 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [258.754 758.8407 287.9144 769.68]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+171 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [204.2029 307.9714 236.611 319.8319]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+172 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [185.0902 284.6191 217.4983 295.4583]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+173 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [267.0288 284.6191 302.3461 295.4583]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+174 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [73.4132 272.3849 149.368 283.5031]
+/Subtype /Link
+/A << /S /GoTo /D (helper-functions) >>
+>> endobj
+175 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 260.7087 108.7305 271.548]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+176 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [270.1513 188.9777 305.4686 199.817]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+168 0 obj <<
+/D [166 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+165 0 obj <<
+/Font << /F8 95 0 R /F56 126 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+179 0 obj <<
+/Length 3162      
+/Filter /FlateDecode
+>>
+stream
+xÚÍkÜ¶ñ»Å¢E€½æD‹/‘j>9vì¦H ½"šÂXï­Ï‡Üî^n7uÜÀÿ½3ä"EJ{¶Û´0ä•ÄÑg8oòø¢…|aSm¯Æö¬ë4_¬·ÚÅŒ={À	F©Ž)Ýx¨Œ6Z´ÌvX4)’Ï/<|j=ë;Ñ-.^-`Lj©¦ãÌt½Y\\þ}y<ãË×p­Žgÿ¸øóƒ/."ZÎLtr€w´qèîŠ`¾Mfá›ôƒb%ZœÆ_a
+ßÁõå³bÒ2Û+1šÆHêq%Y+tNûÍ™0ËýÏ@ý®Ë³FqµÜÁíþˆ÷r¹]¡”Ööڏ©mðQã°Ë·ð|{Öˆn¹Ù®ný—‡kxyµóòåK¤q7|v…£ÿÄo7;wõÒ!Ø#)?à!ß\Ÿ	"Z£¿B¤Wˆ}˜à³£C~Æy…LÝ¡„>Õ]"©{¦D«@˜(D·Åï<h&A
+Æ%2X4
+Ä
+Ò¨¬×Z¸Á§gV!9¾¼GAlpfoqü¼2­Yß÷DbGßnx¹3s|s“=˜AdÂiõᬑR.Wþç°9âXî_ùßÚÂ!ÛúÍ5Mýu ŽBÇáËÀ!÷(ö׎O· zç?ÍWßܸÙ!ÌÇ=‚lá†Wž×BË	‡Ð+&¥²`	
+g™œ{p¼ã!Û'Ž#/ë[²‰·gàcäò‡V·¤Q;'÷ö	š-\‹Ãuî_£xö´v/	Ï®?øaüâ9\/àz×·táý÷„	èqý«ªPßÝ›â
+˜ùò\Ÿ•zÔ¸[ÚVÁ…ur¹xŒ	lIZoÚÛDBJš¨sÚ(<n~h¹Ü¬QÉȽ^UÑ “ˆJTø÷»az@ 4,¡-ë¹Ôd!+rGWNÞ…„fBE؝󍜨;’WPŠ)”Øsêäp“0¾!¤ÿ!ÊLEæÜã 熤RÌè¶ËÝÐÕfç-1øžKoë=¬ñ%/Qxßs¦ykǪ?Ž>zàèGˆÍ`õ)›8Ì{¢ž¡’¨ÁÔÁ˜w_<
+fÑf‘³¿9€qº"´Ô”R¢FöjÉ*^Îlkù ×›Ê‚òk£ºpàd†ÿMºê±J#ÂÛuˆˆ.*FÁ‘E	å%æjWO¨(T¼Í´`Ì„èXÇÅÔ½çX“@ÒïZ®«’IÛ2#uˆƒ‡àsšKúÄ1´>ú€KÜÈ/)6œœ~+Á“G2åüK³LKž[˜K @ûoH´«ÄaxÃé
¤CmŒß^3&Y°Í¼!^ ©¼¥Ù ì:¡è
+ÛÂ=,,dXäƇUåŸÇ*¤-øæè×\rFzëC´ðÎn“Æen§§í©½Î`ã_ds[Ýåx6Þ
8%¼Í}3‚„o½#@ìÎËÜ	>|–ÔænéKLAx;ð£Þá;êŒð“ˆNŒ£Î9éŒsfÓ±VµzÑ¡wî{q*uðMúA™=hçSwÚ+Z«FÓ%+jž¸h;ÈVZ•/i;*ŸKÎI=v#·#UDiº¯‡Õ(mǾNûü¸`ÝN“h‘B’°ZêT	G2Sl¡î»t~^z%Úù¥Ó-ÄÙÊù¥‹PóÄu	½2'¾^‘÷Q’3- ÍÊì#Éq((†TÇ›„Å^É>wY(ÏÏr3ŠîÛ!Þÿœ$5°¯vCÂg?lF¥Dt7µe]ÇŒ_®ûŽikûËá›ôƒÒ
+´',°—(%=šÆØÔ	â%¤íq¹Ã]‘é5]ÊQôw‚CI§ÕvXZæú†Vç²\zt5l°F—ª½‰K1YJicx¯¨¤Ó…T 
+uÔ¯5ÇÿûÈž—UÌ}™®gT =¥ç¯àú‚Þ˜¸þDïBQåßg´yœÔ»Ú¤>I&²&á&ë€û
׳@ã'ð^U[E8<ªS@¾§ ~$îVI®¸"âTR=÷ÙÔÞݳÈû.©¨†Z¬ÌÙ½†Œu¿
‰ …ƒ"ö*&Ð:”…h)ÅéØKðMúA%öŽÑâ|oCÿ"LØgty†¢¨Uj4Ÿ"Ôü, N3!À ²YÔ<k­¯…&IM?t¥‹Å4˜å·¡ä(]¬_æÔáùÊõ‚´HRÖM
+ºÞ@ŽÅdVø{
È0‹$kЊ4ÆÅ5¡ צÏÕÑŏ~ùøáãOôS|²…›ìG1)MSÜ
¤=BüÂåžAy!áI
+h¼| |Z‹þèðLH­óæ~R[h¬:îÓÙä‹„P¼-ð­WWb«6ÏÒ rúÿ¼'üiÊ]1ö™p¤Z‘Éùà_•¥T[ŒŽ¦·¤\¿¥û7¯!åÑ]¨È¡ª†’«boPæCü_18ÉZ«ml7n—_†sì6÷cU@a_WºV« ˆÿ*ëR%!¿T6áF;²Fx1X£±ÑÃ-ڝékšY @VûFÆL”\ÂpÖ¶*Ý2Þu§vK"|“~P:Üí©„|¬áv4"á#¨yⲩ+­râ¯h•÷[/§Õ.•u=¬
+8sqÆ
ûd¬ÚÑ2ݬ(SŒ²)Ò3kºÐz“G×VB?ú#éȁ*Þ‚Þ	=òÜE{}Ÿ6äûLéûì¤ï3Ñ÷e:óó¦æç-8á»K”áÎ?“Ëi”Á E
+´B°à\ŸPÎߤ”úQ WN©¨¤Zù4FÊ¡NWšiP•œøl9’+áùhYœ»Qñg² ôØ) ó…ÜRåŠt:ä`ElbÛòrDgM¾	àÛçÓaÇ0Ý[ý[„J¼šj[Ái¯ü‘ۀ뤣s}ƒÿ¿¼Ùø¶ù…ï—» w›­Ûÿ:Ì´ÎÓÎy#­­ï ã@ٍ¶ä68Toéâ2D›Fœ±'ì$ëDËß¿G¯Z(zxX#ÚvÄVÂPo×M³÷˜5‘#·Ÿ•öíãhÜ­»r.í"ô5¦,ëÑ«´±ÃWîê•›šñ>ö½'w«°ÚÇ^cÞ?Nís<ŸÛçŽVaxÎÖ%‡tWNÚwNÀ*24¼*3iÛY™õÌXmîÁWÏd×õCYÛ3aÚŠÀú
ÉWßÁ£'–›('˜(ÚèFÊgØ' ^}±a’tßÐŽÛ>úæ;±ùÅf·ÔÁ5|Ð\ó ('˜.§CRfdBó1€7)|’
+¤(’çÎ"¿	»5Y« 8w£YŒ¶¨yâr–^™S«îÇ€6ÒÓštP¹É·‘1·º,:9ÁgNK1¬¹HV½{¶`h4oÎ&û¥Î߉råæ’ÛW¢\?Ý5¿Í€^ûdþàà«àhWTj`Ð0£Jƒz½ÛÕÚùçÉö¢ä­²Ñ_LQL7#TH|k.ÿEØ º
‡S‡!Ê>¡ôû‚îñÆ7”:œÇ<N>†ëkB;ú4œ©}VõÕ]V3í6ÜÍPöÁOÌÓ\œÝÝ
 ŒîWáË]Øà=_ñU‹)ˆ´qwûÿ^Ž·"ļcÂe4Âc´xm9	9»Ú6ÁH ä-Ïã_Ä2i¢ƒ\\Ó‡›G‚aÚ:ÐÈ8¦ÎÑj<'ÉOXŸÐ¢á©ŒÏ“Ô›À‡˜<,T­Uý‘“NÉ eâ/f’þ‹³†C™17ÃûŒš:@ê‡ á²Ë’™jÑ%ŠÖ)¾‰Ûu"«º+=Ì]â?\øµÃ!‰IVÄèv"˜™Žµøaða";5Ml…¶´ÂD!×¼Çõ3E&šU*%j,³ZÊ{¤¡xF(Ö•õ¬¹zBó0ídÜfôûŸ–iX>é€Èµ4	v瀸i†R_Æ9ж)ÏTwLhøhf²M*ˆŽÒt *eŸ=ÄK¡EàR"4ïu¡wžN,ðÉ­a\ËyY$@3²P'e1GsÅ˜h])ÑpØê£eb8S]B&ÐœLê´Lfh&2IBôö	c'fŠi­±¢<Áô 4Ç4Afz†fÂôˆèÓ	Ñ{(Âýå¢Z†м\ 9¹Ôi¹ÌÐLä2":!—„hæŸk.µ·€ÛÔµ0–Ä	PåȈf\1!YU6
+¿R¡÷oŸasendstream
+endobj
+178 0 obj <<
+/Type /Page
+/Contents 179 0 R
+/Resources 177 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 181 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 190 0 R ]
+>> endobj
+181 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [110.73 758.8407 139.8904 769.68]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+183 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [175.0442 617.5703 204.2046 628.4095]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+184 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [474.6661 617.5703 503.8266 628.4095]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+185 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [265.7793 593.6599 294.9398 604.4991]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+186 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [173.2926 482.8242 205.7007 493.9425]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+187 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [270.0076 447.2377 299.1681 458.077]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+188 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [314.0087 435.2825 343.1691 446.1218]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+190 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 344.2349 108.7305 356.0954]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+180 0 obj <<
+/D [178 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+128 0 obj <<
+/D [178 0 R /XYZ 74.4095 697.101 null]
+>> endobj
+14 0 obj <<
+/D [178 0 R /XYZ 74.4095 697.101 null]
+>> endobj
+182 0 obj <<
+/D [178 0 R /XYZ 74.4095 653.5817 null]
+>> endobj
+129 0 obj <<
+/D [178 0 R /XYZ 74.4095 424.0447 null]
+>> endobj
+18 0 obj <<
+/D [178 0 R /XYZ 74.4095 424.0447 null]
+>> endobj
+189 0 obj <<
+/D [178 0 R /XYZ 74.4095 380.8043 null]
+>> endobj
+177 0 obj <<
+/Font << /F8 95 0 R /F56 126 0 R /F51 119 0 R /F14 193 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+196 0 obj <<
+/Length 2490      
+/Filter /FlateDecode
+>>
+stream
+xÚÕZ]oã6}Ÿ_áG{1fÅO‘Ýn»è¢;(Š¼,ºÅBãx2AÇqÖJf¶ÿ¾—_Ò%%‘Nê]Fd鐇<—ºº:4]5ðGW­ ¢1rÕjC”’tµ;¼iV7píïohÀ¡ˆª…/3W·‚Q"eG¬%ÚH1‹2†pªà U”´Ê´õ׫7_}GÅÊ£˜Z]}XQJ	k)_
°«ëŸ×ÿnh»ùåêo¾½z¤T&¡îpB; ¦¼Ra^˜ãܤ¼º¾ƒOŸ[øÜ„ï{ø\o¶’qwÚžzÈÇ'Ü‚z\4¼¢
+B•T‰°º*%Z¤Jλ 
+æýÓ=†iß,N›7ÄPZ™õ*M: ês.p¢)g¤3F¤g,ƒó4¡’MUE„*©auYJ´H—œwAÌ›Nû	J4
i$c%ª¤D„Õ•(Ñ"%rÞ%0ï“×Èùb)-ˆbL—Ũ‚X¬*V‘vkÂ;/VÂû¦§Þ•’§R†PÃ+Œ*M=ÂêS/Ñ¢©ç¼SǼ×aÚv½¼2ìí@¾úN£Æ[N‰Ö:MLÃýíöýÝf˽èú£k_…“óøiДµë/·ã:³˺ïw§°8ïæþøx·aëþ-àZºþb‡^-xo»Þ»#ÛÛ.\êü¿wr{Ýùi$"0H£L7V<;¿ìkø\…ÿÿ	Çÿ‚Ϗðùvª<yŒæmèà­àËǁüџ܃×þÄûÍ–)?¾î`žzý›ÿrü0+ä7£Z݃[›0¨k#¬iµ=1Rú§ÂƒïϪéhzhÌý-mGÖÛöv$œ­;?›Ï¶Ýž±ìª³}2;×ÆÕPJ6!Ü6ˆ÷66Òéu:uèî7—h&R5nµpMãbñ‘~tÑÞrÖ¬;«“›ŒÄw¨¿°÷Çn±Àý!b
+»1v®§* ‘~ð
*wxÌ°ëûÈá×-ôà–²çóÿl£ã#Z¹wc/ïg¦.YÔ1žÿšû%pÒõö>,ŸnÚOn4ià]Û‡ÀxÂ"i9Œ[«dqÁW‹î1ÙlUÃÖW㽟$!Ã!m½’º!ö¿ËAöÊé&@~ÂÙ(·ï’^“Ní<î㎅T
†1n—#O“%ÄTƒ•-ŒâÉ¢ôx™‚ˆù
+s'oÃBÃÊ9êx…îÒTèRÚ4:crˆMÇ>ò‡\‘©!„&ªm噡àE]&žÑÒN‹¡@å!hF<¨ðúýCLbæw©P4šHfd¼#bÑ%Gœ‘mÚ9±›IÐ†zT’àû®»ócˆ¸Íî.(>{žâ}|=vqô8|×ÁW·.†©ôi£4û.‰Ù±gkP{ß
+Áã}ëÐsx¦±;Ù»ºð.&ǘ=âƒ#$­,Ìñ]
+e·™-])„’I>ÿ~.àñI®%î¾PB
°j	U/*¡&¼ó%TÆ«Í•ÏõrÂÁìsô]¸la?…Ï×Jáósøþ.œûÅ7u«t¡8•\@ýo*u9F•”°º²%Z¤lλ lÊ{¾²tý—óÕ}››%‰mýO‡ªë
ōâMåe £JzGX]ï-Ò;ç]Ð;åz•ô»hTêz7P445£JzGX]ï-Ò;ç]Ð;å½pæ`³™ãYÙDè–´-mËjcTAíVU»H;ª=áW;ã}lÂÎÌ&ç ØQi”D¬âÞbT)*VJ‰E%ç]ˆJÊû´œSÔï%2Ó9Q‘ŠÊL%*UŠJ„Õ£R¢EQÉy¢’ò^83ñ³3Ó󲕠PqY‰ B•"aõ”hQrÞ…¤¼/­øE³Õ9(~F옂’OTÌwŒ*Å.Âê±+Ñ¢Øå¼±Ky_"§U~‰Ì—ÅîGxx…WÙ`ٝü6œj_9}ƒÜª´sšZ¸”rÂ¥	ìÅU%ùd>–„1¨ž›Á>êý\‚	äf}t†Üö:LïàŒ>˜ÝÔš=¶àcjïž{Á}wæÄiãÑmð„á™
+㩲;nàŠwP¯áP{3yn½u ûƒ=ó«s5o¿Ÿ
“¤iéKá™ulœVJA‰$8LË!8ÌYpVa«ø1DˆÍFˆÍø€C‡(B.¼iÕŠ¥ÑHã–ÅÆ:2‹±ylœ»°™Ý›Ãm´ˆOá x;ÃòC~–»ÓŠËÐZÁ¥m 9nlm4?uqæ¹û™Çm÷rfï‚xaöò-»©ÒW:I¼=ÅQ§r}8:ß-êº÷]‹YWnÉÕ˜ôpÀóy#ƒ«û-6 ;Îîüÿää°[€¶’-€q··s+š&ـȭÿvn4p¶›ëa{㐞BÝ}9cíã¹Þfw'"ãiìd|4 ñwÝ°ùâ6)ÖÐä>ô¶±|Ëp?M¬r	
ÍW“±b+xå¿Å
fÌò¼Û³Ýr	/¦P7¤ã™ØåUEkˆâ”¥£pâÞ<†;Ý©,s 1x'NVÐÁjøÕ(kÌìipžZáݤÆRŒ´öñÀáYÍŒµM£ˆßâÓ]£I·väïÜt¹o²wE§:G^ëET…Ý–¢Âð”}ÖYž}Éû¿yÁý/˜ûYÒ„+ÈÊgFnæwl.`åãî…û «î¥ñ¢Â}Â;_¸g¼Ï,dì©ô›Pe_ØÞg-ÔÙªösFŒ*©auµK´HíœwAí”÷¼â>Uñ‹XþLqOüJFP)U@韑.ÈŸ¾¸Ùÿ´ÕÕšÐFÕäG¨’þV@‰E ç]AÊû
+ùæ‚›Œ3û《UƒQ¥DX=%Zœw!)ï+å WÞ(€0(+‘B¨R¤"¬©-ŠTλ©”÷O²Qð´¨×#ÕP¢©®X×UŠT„Õ#U¢E‘Êy"•ò¾BV{á
ªáÚT6›1ª•VJ‘vŒÊ„w>*ï+eº?å&mxÙ5•ílŒ*Å3Âêñ,Ñ¢xæ¼ñLyÿ¯6ž¶‚ž¹ñÐÛ÷aÊ'/Ó‡î>¸N”yOÍÿӁÃ/¡¹;úÕ£âOø¨uä¼î/ôxׂòÔR¤ø¥æççð@SÂDKúéÚLÔ°+BG~Æò	³æÁ"è¢Q÷y˜›µusΣc휠m4¸áE¢,ý%òð+ÿ`^||àbºå|l÷ÿ?çg?ÿw—âVJ°MºÛÁá$K>†Ñp7-”³E éO‚$T@aAvN2§“¬!Z)6Ç÷;¬ŽÕendstream
+endobj
+195 0 obj <<
+/Type /Page
+/Contents 196 0 R
+/Resources 194 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 199 0 R 200 0 R 202 0 R 203 0 R ]
+>> endobj
+199 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [192.2385 577.419 224.6466 588.2582]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+200 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [447.6812 577.419 480.0893 588.2582]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+202 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [444.362 322.3246 476.7701 333.1638]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+203 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [161.7108 310.3694 197.0281 321.2086]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+197 0 obj <<
+/D [195 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+130 0 obj <<
+/D [195 0 R /XYZ 74.4095 636.402 null]
+>> endobj
+22 0 obj <<
+/D [195 0 R /XYZ 74.4095 636.402 null]
+>> endobj
+198 0 obj <<
+/D [195 0 R /XYZ 74.4095 601.9391 null]
+>> endobj
+131 0 obj <<
+/D [195 0 R /XYZ 74.4095 381.3075 null]
+>> endobj
+26 0 obj <<
+/D [195 0 R /XYZ 74.4095 381.3075 null]
+>> endobj
+201 0 obj <<
+/D [195 0 R /XYZ 74.4095 346.8447 null]
+>> endobj
+132 0 obj <<
+/D [195 0 R /XYZ 74.4095 138.1683 null]
+>> endobj
+30 0 obj <<
+/D [195 0 R /XYZ 74.4095 138.1683 null]
+>> endobj
+194 0 obj <<
+/Font << /F14 193 0 R /F56 126 0 R /F8 95 0 R /F51 119 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+206 0 obj <<
+/Length 3459      
+/Filter /FlateDecode
+>>
+stream
+xÚ½[_sܶ÷§¸—ÌPŽ!þLŸ;ɤӺWi'“d2Ôé,«Ñé\QŠì~úî.  òx7ñ¸ã¡‹Åb±øí«þ‰U«kÝtfÕº®¶ÖˆÕf÷¬Y]CÝwÏÓhmkml3µk#›ÚY+Wë”É×Ͼø^…¨;cäêâÍØ—uk»vuqõSõÕ™¨î¯÷gkÕÿyߟ)Y}€×áì—‹¿|ñ­[uug¥E.Íj-\­œðÍï
+šÃÿÈAÙªÇ|ú3Ù2¨h}Å6yŸY`"ª·X¸½ƒwgki«-4¢²(ºËÉ™­¯Á¢*EºÆ‚ÝöîL:j6¤MàÕTÏÏ=ùåLëmAm«7(å†iXó=çã¬ÏÖÚèêž	*&­ÒLyµ¾ó*ð<·÷¾WÝèjªh«Íæ‘ùXlªý¢•Õ–éžH+üµÄ#Á7cãÝ>–´}èðnl37J¤ùýÌðP‘kú»9öÈ᪐Ä3„]ߎ…$Ì÷=E*¥‰¤ª=JÒc>rTR«ê4õ¼Ç™êd5 ãŸa77^sl&0]Všêû;dÿ웋¸îDgj«”[µ¢«uë´_œXuÍ4¯“eé×iZ¦éòš²õö â|`íã€öy¤´u£;UÈS8‹Hµ,Å”JqŽÚvÙ¢ëTµÙ“²~ÇÿF½‘%ÜzŠ'4~^T€{ÿ:7ÛX¾CòG¶¤ÀðÝhY8×5´¿	¯zìMûuµAÖ¿ùicÙ‘ù¬… þÎåft3Ú›geŒ‡~†íXø-šÓEƒÕðscü1]Œéè$D,³×¦&34âlmD׎1«)“­©YjÏ*q8D—¼>E»>wðÔÛ"»åùhfu…
+â¿ãôsbâݯгir«ì6aÞÁ¨2Ýð	‡í€‰àÃl!ºo@tlOŒù=ºÄ”qÏR—ˆus“‚4³¦	-]²i}Hh™_j ¸ž®æ¼ÚÄÑRüÏÄà|ñ·NXº»š¦lË
+ñæ&âFzÍÍÑÔš.³
øôKž¶¡0KX›Q雜¨M«ìÊ:U[!»#¾2Ò¯ÓS/5a{¢¯T¨M×ÉBžÂWFªe)¦ÌP
+ÜæS\xu•ý«®VҝªŽ@~DŽ’é©Ê°]ÝêÉä”ÊTG„heíTÓæRøuzïÍãÊ-˜8®\4¯¸C--€a(ìm`;žÇPöÜ»qÙ¹ZK! ܆ á’ÕîÂRáÂë탙YÚ$a­U˜[ V¥›̯ïLhÌ¡ÁÄ0D_·Jš¹©€¹“FÍGLQ¨[w` ÂÂKÊž¦Pè‚€Îd\"*°Q;Á@ÂÖÒ@«%yבjÚ¯±i¿ú+.û…‚U½ a|rÁ¿¿òûð¼‚çO†U¯áùž¿Ãó“ýÊÍ^óó7ðüÄß/¹ìÏŠ6âbÌA‰V™ºí¤<¢é„jIӁ츦—ºM4]ö{@Óy¿§kZTúãÚ>÷MÚ};ýž¿ÕqýÃ:pæ˜úG¢%í3Õqå/ô™è¾èô€ê³Nƒæu5÷Içç¸æUwB¸#ªO¨–tÈŽ+©ÛDûe¿ÔŸ÷û‰}Œœõ1Èï×Ö]+ì²öSªíG²£Ú_ìvÔþ¤ßyíý~bí«“µtFr´Уv®1ÝûMÇs!‹.¢{-Ú4þð{Óߎè)<RÂl‰ˆ‰.,'4pDŸÄE>‹OY†:Ž­mõü‹çŸÃ×çÞƒh…B€$ W|SSûlsçQ2N9Q§aLÞÞÅ`•ZLÀ“
¦¥iÇH‡݀[4ØEרž"4ŒTÚ$¶*jŽ>Ò¸Ä.Ёvï_Áà5ržÑ±aŸüº
17æ÷ŒšK)Ê©@øk¼€ï9†úý:m0Eܶ§â~ × z.O‰ûÕ)&Ì8a¤ZŸ˜\ÔêT¢YóãÉçD¼ËÑ’±‚-ÄÇ NÖ0KEpÕfïœSÙSÔi‰p	³¬«#YL;vZر×ÂË=/™X¥0¬ðkë†¹ûhœrÞëdn´Óà坃	Bö§‰ï2ºv²Q̤ȕX¹+Jö-ø*^pf“dα*ÄuX%_ø2œ6üU/| …uij
+õpé{ÜôÞrÃ7þ·÷?!Éuóó;«ëÆ©|ΟnâB€°²ÍO¾Û©ºm4¬%ÙÔR{,§è×iƒiNwÂ¥úHð/ÄwßMÄÐMíZYHQî¹Lt¤k
0GY›w=7·¤™áCšZêßc©ýnƒñŽØm˜-Ÿ`¢EBy¡ý
ç’bÈ^1.…t(óßqU7¶ˆü)霋<øb´
+¤+dž³VK©.qxâCÜmÀ¨9–Ëäë”~¢û	Ó³hpi–”ÓÏDË"¨á[*Ãáý\-–°%*Ÿ!ï}2’¢ÿ™œÝŒi,í9æRÞÅH~LàS7'U*›¸¹1š¸3<u"×Ì.;ÿ„}ˆîe²…µÓxï€òñáÝ=3|ñkí`ûñݱÎwìâ?Т@LøÓÂv†fÉ^ÂwþäqëWT‚a¸$ϯaIX­ø>¿Ç@ÕBvۅʼn„³ç€jvcG¸i›¬õ°óÆxB„edýàñ,øŠÖ4Õ·‰wç|5¹x+keº6wñá’W˜=*iÜᣦÁG’&ß…ƒ B3&Ü‘ÞÿL—%Æ3L˜æ‚oÆãz(ŽÎ¸zɝ÷¡‹4+„DýŽÒöI
+ÞEÊxâ¹Kc†™ã˜p°íüI‚ƒNˆkœ%ÕvÙ9žÓèÓ!Ž£}l»Ù‡£ƒs°6ò€}¶Ã7í ÷Üx½ñ–{t·á(ë:¸ÌÁKgÌ%RÛó½O'ð!aØsûY+qÍ+¡ÑZÆõå‰Ì>9hö^”Bª0¬áËCŽnÀÇÉùÃÚÅDïA ÒnµNYLCT(®w~àãi½~ÕôÞqñ<ÿä÷
+sÏ:ã€hž#qy?æ­¨>œDõßpŠêÏ3á8½¶!ËX¿ç‰˜^÷¼É%îS÷%
+*RþÅe‚ódÊy,PԆž÷ ɯūqç<|ª
+•„r”̯»¨du´/€~µjÛî#ì+eqؾ"êü36’êØòÆ×ó7Í>nñÌÛ§Zš™f.Ys²)øÄH“7
+!#hú>‚!ª›œ­JGQ.ä`¨6Ë¿$­ƒ-ï!HˆÝ6ÂAöQ˜Ás›[Ó
\3‘òÎ^"‰£jé8›~O
žýÜ3
+zÂj“¡þ𰐵aû:£:¾j£Ã!á®PŒ;•w†ô´Rž0ÊìÄÜQ3Ѽy¿
¼äÂ%‚\ŽºD¡ò	’4Ñ4Õö&Aì[0ÙɦèOIU;áßg¼
+ÞÇA{鮦¦«ºZ›.æ9ÍŒrÓ,zPÃæ–OOiz”UˆùM¾ÓOMmt3÷31 ·”J†AçšÁ»3;g!ààüB2Ø<%þô©šîõôì8Žò±ãÔKz5¥nôy„4Î$pÀ[AZˆ7¨7<¼¥…aÃóýnG«Þ/ÎTð}v"Õ—àÜÀ.©dïÿ¿=[4]‘:j]qû¥­Â–…ïåö1—5h+ì’goOì4œRµ5J$1Èà…ˆ9èt>–|—'Þ–Leç¡$÷PrÊ…äìFµh`«‘-@™ò§~6˜¹6Q²¥{­‡X8½Óˆò_P[ìÖ…ÈZÂâim!q±Ñ¢e1µ4É·:sØæö‹0Ešê%×WþX•ê_ðûÛx[r­LS·€™s>Þx]Žö/Ó\F„A!ʹMÁM¶"Ùpgœ¶µéœ8ÑFaâºNæ6qQض@¤\N&b˜Ñ§x°ø+$CvIΗP!¢Û%Tx’I
/`qÉR‡!Y¤
+žu.ñë¨6Œp-ŸŽ×_2Hû‘¹}ͧrøüuî´_:M›Ãli:J;Ë	¤ñb(†£.º\w(‰áòŒ#—ÌGvÆG¾Ó©£Ð'	O}aÉ2Z·‡»ØÞ;¹]ì"F©Ôì*@ÊÞÓν`l]c@ÍNù“;h†qÆa(–]oÚæ¹¹Pb<rAä•‚K ØõV
~mß³}ôiî·¹V/:YÃvý1HÊâ°ÕGªÿ¯ÕÿÀéÉ—º|œÕ3FÕZ„ß{üj²ôZäf£åÄl¨M4¹¸‰í(-×&¨,»­i`Î:eW¢U¶Ý±SH¿NLokNØRLVü½
+üÕLîhrƒS֍s¦qrƒ“©–%»©µ+%ËœH5¦t~ó<3w¼ù¡BÇ°	4ºn$ ºué—%Ÿ²:]¿
+ØeÃÆr‚Zu« ‹ˆvY­‘êˆpm[·Öº\8JÉ]¿
½¡}r˜‘ù2Ý(Œ	Tyy3wìkº%MkïK'ñp}È
u®–f>2žê$DS+î‡ÉÈ	e³ewño²fúûŸ
+sendstream
+endobj
+205 0 obj <<
+/Type /Page
+/Contents 206 0 R
+/Resources 204 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 127 0 R
+/Annots [ 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 217 0 R 218 0 R 219 0 R ]
+>> endobj
+209 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [194.6375 716.5495 227.0456 727.3887]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+210 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [280.5773 680.6839 312.9854 691.5232]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+211 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [338.3317 680.6839 370.7398 691.5232]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+212 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [325.0489 552.6042 357.457 564.4647]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+213 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [112.7078 517.2966 141.8683 528.1359]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+214 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 505.3415 105.8213 516.1807]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+217 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [333.1098 273.3621 423.3722 284.2013]
+/Subtype /Link
+/A << /S /GoTo /D (available-typemaps) >>
+>> endobj
+218 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [253.4973 169.7506 313.0848 180.5899]
+/Subtype /Link
+/A << /S /GoTo /D (input-arrays) >>
+>> endobj
+219 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [403.0247 169.7506 474.368 180.5899]
+/Subtype /Link
+/A << /S /GoTo /D (in-place-arrays) >>
+>> endobj
+207 0 obj <<
+/D [205 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+208 0 obj <<
+/D [205 0 R /XYZ 74.4095 753.0247 null]
+>> endobj
+133 0 obj <<
+/D [205 0 R /XYZ 74.4095 506.3377 null]
+>> endobj
+34 0 obj <<
+/D [205 0 R /XYZ 74.4095 506.3377 null]
+>> endobj
+215 0 obj <<
+/D [205 0 R /XYZ 74.4095 471.6552 null]
+>> endobj
+134 0 obj <<
+/D [205 0 R /XYZ 74.4095 320.3306 null]
+>> endobj
+38 0 obj <<
+/D [205 0 R /XYZ 74.4095 320.3306 null]
+>> endobj
+216 0 obj <<
+/D [205 0 R /XYZ 74.4095 285.9271 null]
+>> endobj
+135 0 obj <<
+/D [205 0 R /XYZ 74.4095 158.7917 null]
+>> endobj
+42 0 obj <<
+/D [205 0 R /XYZ 74.4095 158.7917 null]
+>> endobj
+204 0 obj <<
+/Font << /F51 119 0 R /F8 95 0 R /F14 193 0 R /F56 126 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+222 0 obj <<
+/Length 3687      
+/Filter /FlateDecode
+>>
+stream
+xÚÅ[ës·ÿ®¿B_:¥Æû‘~r\;IÜ´V'ÓI2Z¢eµ¦¨’§Óÿ½»xp8‚”£$ã9ëî°X,€ýíGvLá;6’HêÔ±±Žh­ØñÙêˆ_@ÛgG,ÒH©‰TÚÀÃDë\qJ¬Öüx^2ùôôèñs¸eŒ8¥øñéëa,͈ÑΟž7ûÛ	›Ý¼YnNæ¨ÙÓõjµ¾
+÷§'‚ÍÞCó5<³Ùr·ŸœÌ¥³³õêúíòç“N¿|üÜ;â4×8=ž3K„ež÷é	7‰׳åj7RèuÂíìþC³Ùöþƒ—p‡vöŸ7‰zu
oá‚1ý«ï)SH±¸ÿ/Oø»^ÌÃ8kdæ¸	Ô7x_ÈǸ†[ óí:< ¯u캽õÝR×5
+‹c.ÏCûâ6¾X¯¢,lvæ¹áõþÄÊ9™[ff§obs5:¬ _4¿KaÕ^!Ï<ëíIŽžæýf@K­ÕŒH!tP
+lÚ\Dšê‘éçe¯åεlQ–ë´r8·7aÆòHF&µ<#%ÍT{¤’h£e-Åwä¼Xb­³/D¢ß#BÃEx›±úÆïéXggRíY€D՝S
+ð±|´ ¨vK„¡›Ým¢Ý$UD¼‚‚­‡[;{ú(¼ºK:w†H|ÏqAÇŒ¾I
+÷ØcÔœAVï¡Á¡‰c6`ý—ÂÍ>]­žtŒÕ‡îb¦ï¯cËö@uÎÖ´»›…ÍíI‘-.sD+;ÚìØd°ñ™´¿‰|^Ò7ã7L÷©27„:&GRŒU9Qõg¶€ZWŽ4èÌj™ì´<ïʉ6áÝuñî*<|OÅöí6õ*Y\O·ü	îo³¾*(†NÀˆï¥t)²Ó„	¦až(ë6jÊ&r;óύÓ`³dì‚àZ‚w’ŒPKÿ&„Èþ
¥ƒ^™Ò¯Róö“ñ–%ÓÎ¥Äd ëï¸;â'‰ÌbÉ"„åÚ@#¬Âé>¡>‚˜€‹YP¨ZÁaÓGpû¸vuÜw¿9Iš7V®×¡ßôúû¦ÿFêulÊ+š7‘Ñ"¾þKxÝéáõ2ö¸ð=ØìõÌ~Œ"¬#iÞ4¸~ö]â¹ ŽQ1^¡qdìxþ–«ó:J·Ž“‚&F¥i–æÑÞù_EÊ5h¹ó/£™ßm‹?lÓĹÔ0Ÿû[ƒ®<À	§÷-FxË€é³õmäpPÜúR!v@Rb€½ßÊá¨`Ë?ß%‹ÝøÎT8½?E3v[¨|Z¾ñΦU¿öVŽ%c}zü=p‚½þ{=…ë¯paªòO¸>…ë+¸žÕ»~eJ¶}§˜ËaHØ7—çQ~œÏ¸N«ý©°ßr*»Àð°ûr ªÚ¸•óÙÞWƒZˆÁËëhPÖ¡!°:Y²šÌÚ°I6ákàØOX‘";t¸÷Ž{“${?­_‡¿Í m("8#`¯YŒ+CQ³ºŠN%LMŒ£	¥4E/‡éw»‡lW˜Ý•€Ýј<+¡{ƒNkb;=C$‡œ*0‚DÃ8;û<„ŒøßrØ0PHiiŒÇ §Zƒõõi|ç*Žƒ$ÿñýbD‰Ä)ªYÜÔÏ˘™I5¡ Hø*©³¸
+ï6¼bFEÈÏCù‚–ˆõ7or(kˆvl7¤ÏL(·/‡Jôó²C›C5lÍ¡˜ÝRË3ΡU_Š–YVe˜‰ ¢áµyܽR)!R‚f©=4Ë*éwfY™èÐ,«–bg–Õ¼e†£{[i·š-®+ªSE>$Œ›¯œGMºÖv ˆÚ¹¬'kh…ŠÛd*}}n¼BXÂ9*ØaÛ‘éûKÒ²Å%y	|ן5bhEä©ÝíHD{†ÖŽúX
}*.¸ âÞjø}XÆ]j -l«R‡.M¦ïËײ=ÒR¢X³U£EÊT{¤Ð†X	R%EQµ+„®gqVèä:Â^ 䤄~M¾”´ÜçPÔE—Š©ç¡%[ïmôïÓi;Ÿíöò¬IÛ=ßéÚ×ס[¨á0SnòˆG)©¤ãû0„0¼ñÒeìñ6Œç™Š.s.ÁHÖã™ng¾VØP¿‡öX˜”¾8‹Ì[g}d„´O?†Ö£¿C
|C0MœdrTª	9T¸î'iN´”n$À©Ìžl}õ5دzIöóæE ØV	íM¼ÙÄ­Á±žëu™G”Õ¢vaq™ó>ɯ Ñî.3Z›r¼#œÁRI§!¡ƒ€zOU<ÑÏË…ù1ÛC`zZ0>’gììÕ),Ø«X-ÅtA•S 5Öº™¾/BËv·ç•
+Ý_€LµgtIÁrU>¶Dn“±¿#Ò*µþÃ’ÊJâáÓåϱ—ߤ:k=^¤¿!jXW™œ3)ô-Ô^«ÂŒwÀ8qFŒÒ`:iꮵ։Œ·)õØÞeÜÛâøû–eܶ!ƒhi7…§ð°¿ðë;*Eûæ­GШ†b¬w,SØEÄ9Róxè
+~Ôq´ás”ám<´çºÏOœ˜Ý^Ý\®¯¶“Ƕn&G|úfȶF6—Pmu‘·u…øµjøƒÖJ­’y+“Í™Léµ·¡ÉÚz7mÛe>sÚ„R?ºÿÙjqæSüHm€oÚ¤eL;W²»ÄCàDJñ6(L¤k£‘«ñAƒã)²Ã¯Š#‡·ƒ0Isòðµ²­¼oß’ ÈšAbŒg„¥ïÌg+¥Û.‡ƒ…”ÍžM<¬bQÂwUª|˜bð6¥ø jyW&»©ŒOeÞ£PëÛá̦ÉÈðû_(ôð¡ª#Dˆ††ø-ÍÙf½ÝU†Éœ<¸6º»FZ²òÖWʉi¦òqk#£`©a•`?}÷=>‡±¿<¢,¤<¾CD˜süxu$ˆ³*=¾=zyô÷Â=&†{äcŒè>°(GÅ/:Ь.R=®’\1b ¨½'¢V˜ÊW+MŒ„ ¿’åYu w›Ó ¨œ‹ø·Œ 
+…{=a”¬…Å4©N¶hL™d{. ÔU‚±©ƒV.U–^Ä
+çWþjFà2ì-Ñp´·¸š „½Å‰ç:N}B
+érT|gðûXƒEôïè Ï¢ÙùhÂAC
+8x}Ò”H"„RD˜U÷L¡¤êà%QM©cSQDS#+~xÃ=Â2Øs帬¥½)¿‚¢˜@í‚ŽÖ„é}—©Za*ð f˜¯\<ZdeŠ·)Ñbd/|T y•¸„^M$¤Å¨<„oÖS8dÖá&ˆÝ@T„ó\jFÿ¥ ~œcµœì+ת‡p+tRè 9]BNgÈi^®Òä`“%àƒñÚ	ÿÎØ÷§¬°{°WPu°—¨î…½‚õa¯+쀽RÚ«
+7+T¾ËÕ¶ëºðãGªuñ2U+P…?XdeÁkTòôðglÖ¬x›ðgÜ$þŒ	¯B
 ‹úÛüQ‘	°»ŒÃ82vŠœãžüH´öP$JÝ÷µÎZQ 1ägÊãب\÷a.QÁÆ0iÿ—ÈSÚîø**ò¤Ú
ËLuX–¬–}a3,+iƒ>âí:jLžÀ
+Ö_ÃDÔŠU—`ÀBC\TKÕ'çY­ðÇúðè˜Ö¿DÜñ‰Rî”ǃ¸Oä°o|ŒY}O”I$ìQ£Žª s}o4®“¤¶šÿ㨒“mHý	Àbç¡<–Ù¸Öå±1 Ør0¢ñEøÂn˜îV•kÈ]3©XP·ñDܤĺz7âѳ„|‡%įn…ä÷1…ü0S(džñž)”Y7BL2Øø0¡hóâL×q쉱Çór}€Í›Ç­ÂzÜV5å{D¡‰’Üí5ˆ`Ø-¸¡=± êÄDu/ƒX°~ ƒØv0ˆ¥´Þ
+þRƒG—ÓɁşp°þŠeªVŠ:9D
+0•û'¥ÎgR×ÕÓ±ªâ„9[îãek²RªðôMþá—e}§’ty8H¥‡Å+ ýÖtRü½Œ,AŠâ'Ø n )¾.VpGâ@‰1£sœß9@0´äû”‚ªƒÇDu/<¬]a<–Ò†¼vÑMÕ)S²¿^™ª•¡F#ÖÜ´­Eè¡‘æToáOûÓ¥P½—”‡ÃQÊŠIX$•@ÓpS¦v€™‚êËrJ¬vå±.õ(<§Òø÷”‰bNÒKH g[‚àí,¼Ö¬FÞAN\€Ï•ƒ}µÃ_YÌ/nPÊ?$sÁYš=va ꘅHt/«00~ £Ð“t°	…¨Ez@
+·âá¤KüöH'áÚÖҝ…
+uèò"‚%}þØͪ8µÄ:ɺœ‰ɪ¬Š	bªÛ“T-Šäª(×㫝åzÌ{Drb›lb¹ÞþG…—é4u}[’ºðLIµŸKÿwA1ñõŸ°MŠC°%‡CÌêëö';Ò°/àz¿•FX¿ðß{‡÷ŸÅS…ôýôˉÔlW††?®R,[ÀgÖ=¹'B/©vC?SÝû%ë‡_ØŒþJÚüLÀŒÿ=&P	~ayùm@çŒÁjcýmÍT­$u¡#Az5N/h{@Gâá–U™;3LÄØe:иé\ô4¹}8À§|ÇoVýèÅGKQBÿÅy:­ö_í‰	ƒ‘l‘ƒÕŒ>x¯ŒÉL|ݯ!UÈ¿3¼§-ymÆi|þ6öù&^Ïâï2Ê–¤cvHÒ¸2Ós'šyAÔº§“†gN8œÙù܉ñþÆ_{*endstream
+endobj
+221 0 obj <<
+/Type /Page
+/Contents 222 0 R
+/Resources 220 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R ]
+>> endobj
+225 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [110.0908 728.5046 142.4989 739.3439]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+226 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [162.8935 728.5046 198.2108 739.3439]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+227 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [489.4544 728.5046 521.8625 739.3439]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+228 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [92.7704 715.9915 128.0877 727.852]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+229 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [486.6948 540.649 519.1029 552.5095]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+230 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [92.7704 528.6939 128.0877 540.5543]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+231 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [337.2248 528.6939 366.3852 540.5543]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+232 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [432.0992 528.6939 464.5073 540.5543]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+233 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [148.2193 492.8283 180.6274 504.6888]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+234 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [202.5826 492.8283 237.8998 504.6888]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+223 0 obj <<
+/D [221 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+224 0 obj <<
+/D [221 0 R /XYZ 74.4095 753.0247 null]
+>> endobj
+136 0 obj <<
+/D [221 0 R /XYZ 74.4095 481.8694 null]
+>> endobj
+46 0 obj <<
+/D [221 0 R /XYZ 74.4095 481.8694 null]
+>> endobj
+235 0 obj <<
+/D [221 0 R /XYZ 74.4095 438.7979 null]
+>> endobj
+137 0 obj <<
+/D [221 0 R /XYZ 74.4095 415.7379 null]
+>> endobj
+50 0 obj <<
+/D [221 0 R /XYZ 74.4095 415.7379 null]
+>> endobj
+236 0 obj <<
+/D [221 0 R /XYZ 74.4095 383.3746 null]
+>> endobj
+138 0 obj <<
+/D [221 0 R /XYZ 74.4095 163.9773 null]
+>> endobj
+54 0 obj <<
+/D [221 0 R /XYZ 74.4095 163.9773 null]
+>> endobj
+220 0 obj <<
+/Font << /F51 119 0 R /F8 95 0 R /F56 126 0 R /F44 92 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+240 0 obj <<
+/Length 2912      
+/Filter /FlateDecode
+>>
+stream
+xÚÝ[[sbÇ~ׯàQ¤–ÉÜ/~s\v*®ÄNåÉv¥X„µŠ%X´Šÿ}z®Ì3hÁU×+àôéþ¦§ïs 3ÿÈLqı3¥
’RÙêñ
+ÏîàÚŸ¯H á\".¤‚«A1ÒRÒÙ"gò§›«?~o	AF:»ùé K¤¤Q³›ÛﯿÛ>ïï7ëÝüÇ›¯¯¾¼Il1gˆi­z¢‰A†
+v—áˆ1®VÆÂÁâ|wJ*-*c#’YTïçŒ^ÿ:'×û9#îÍûù‚áëu
“0†¸Q¼ÀùËÕ÷?âÙ-@úú
+#f4Ÿ½ÀŒˆ1töxŐÑ"~|¸úçÕ?¨ÃlÂ⚊÷ÎB~‚ÿî7ðß¼~ÀËÔÀÓ²)CB0ÓÕ¯D†IqD¿.Sh9‡Tç@)A”ÁÅDå¶}½pÏð²h7 \Pø~NuT6•×ëÏ,h°"™±“ 6Î8@°lV@ü^ËÀèþŽ\þ"ÞªEƒÆ썟[ê;+ÿq½±b-œÝgÍöFðÒ0¤1}MDªENæ4AŠ=£ðÃW‰ÌBùÕšGZS5©Z¹…Î3ࡕؿϽa¯·ðú¼ÖðZ9«·ªÏf°žìßðÚ&ÒFËö–J¶åßÏ¥ýîïÖÖ×Vãˇz¥TQ„•âÕJí¥§»@ó]¶æDß®9ÇÓ²õnlìf»©ñ0LÁÿØ´â#Ñ4†Ò‹Ãö-(–{u¯,d!ÀfjŽ„.Üƍ>î'A¯»}øúÞ]²þµ¬w«xåmK—¿ŽK¿óßn긑IMØè­ƒÄ(á&ä	Šp¶ TŠdˆêšq&êð»Úº¿n…ÏpŽ *ÂÖ	 8é³Cqd¸È9vB1‡«”òƒàÅ’iD59+ç<Ž‡âDõŠ±†Xcä(gdS¡8’Cñ¤ÜC(®åöCq.6zçÞ‡Üý<Úü!"[çJV_jUR$¹¨#ofÁB4D•jÇÃl¤o×S„Ù†­ñÛLŸ`j#ŠnR›‰j ]ج£HO›ÁŽÖwwºmC	U^©13Š¨q1èÓÁ«íSà¿ÞùÛM0„»m͹NmŠ !	›	&£ŒØ@¢_ä7´i®a;°Ž­¯@À+qT6¨Zé…GqØ{Š™,Å¿Ò‡¸íH›JPlR
+¬§T/jq63‰æÜœ”"ÃEα“”¨ Î*lá>.÷+‹øÝ	éju„É9ÉèÀáx*
+4LD‡hú% ˆÑ°@¥	('›H@‰l˜€¦å¦ÔÈí& Bl•€–YðRúC¨òJÇj4¬4bXÒ2HüŽµK;ž•"}»È"/4lGYIq¤°Ó*NTé kZ…ð©ì“Êí~êc‚¸FÍ©JJôÓ0[¶%1$ƨ&ªt%!ÊZJ_Æt·œƒr~kîcqß
1*;Z¸aF6冑l솓rnXËí»a.¶rÃې»v!Ý?…Ï·§¹b·%¯Ê_§$淍ch]™ÐÕ¢;h¤o—_¸HÃvd{¯–iå'ªiéŒ(„¹&¥ôSêCcz^Õ‡³öú³½”Êì×sÚ,÷9ê|¹ïä.éËX¾Ÿy%A†è,î¼ôÕöñ½~¨Eà^îÓ8¤§AQ2%Ö3í±èSÐ|¡Œºþʺ8¹ Š§ÿZœ­øÆkjŽ$³ñ,Í’C÷. ÙÙÚ‹Ûá’¿sk£Ç‹ûV€:áƒS¿,näâz‰ÎWÓîýÛ|6´ö÷Ö6±³^„ClïÉZŠ÷@b…ŸñŠ•;<ºMJ€AGP«\ßTËÌÞnÒbªp©¢õ/ÁŠìæBz
­â¶q–òxœ~vý)˜fý|	¯R¹¾©*ðM¸þ,È–Ÿþim…P–gääÄC%L™Œ¹÷F?…ZHêçPE¯DÌ †jÓ³KñÀo‘3ìTâ /êŒwÛf5›Á/.2¡cÚiJ€Y"fpLÀ<Œ CŽÐJàv[¢ÝD#.0B…1ÃŽ0*xo¨.1®¶ÎÀå>ØÿÜ4ÜÒmðQ;Æi8í:£!ËyoÉÕ›²©rüâ7jà8.Š
+ÇŒj¢nŒTòqRhªk¡Ý¢1—yâ1N,-߇Íܟغt„#%Ò¢Záñ1P7K-
+Ċ則7Ô(D°˜Rv"šDÀàš€. ôÏnº6Æ48Â£ÃœlÂÊÙÐ̦å&;käv
­{ù)õk›H‚Bù]®ñ¸¥Eúvµå¹f;š;QÓƒ=NTéF""k]ŸÒŒ(A"`hFü€ï‹å®×e@“M˜4Õ„l"€áQÅI¸!Ö¨DûñDÍÝz½l¤W6g©¼Ÿ±ó¢|kpç*YkF”ªn¸êâTÞ€YÌYæ>û–ÇÑÇbš?€¯šQ|çÔ–ÇœÓL=ç
›ýxšRKx?ýK÷Ûy»|ÝfnX9}¹šÉ)AÚz9œ9ÀòWKw¨át‹}§$ůÂc´à~œ*À†)­ºV‹âå)µOoüöìÖaËÚ™„h¥Œ˜1¡—bý"¿¡Í 
Û³ÍÔÀ–xšó@5‚c†¸à²D±Žž÷çàÒ[~Yµµ›m5E”bUöŒß ù¿àõW÷j-	Cþ jª-ã)c•›“œÐ•1*¡aüb]YÎðXW–h]ÙÅÀ¥®l€.veÀS»²‹¡M]Ù mìÊJ´[Ûê¼485¨ž©ËÁüF(ˆV ÏnË d†ìÛ¯NmËrÇÛ²Dõ{m˨RCy:(™s²‰’9‘
Kæi¹©dnävKæBì'Ôœ•‹wgÍj{íY±Ø×ôg“*?4h“ R‡V xE‹F!l»Œ½edSöÉÆö6)÷`oµÜ¾½åb?­\ã	-Z³Ún‹V¬ö”mRׇmZzlÑ
+駟èV:ôó<‡³Š}û,Ï«NA)‡â^³aÐÌȦŒ8’xRîÁˆk¹}#ÎÅŒ¸»pÖ°	ÆüÒ<všÇÖƸ!ù©xfÝDô*åЁ\	ÍÎMžcCIB«H®±ÿ“ºÓÐVù·«­KzÜÉ «+î}PtWƒÕ<¹[]oÓämè¼ ÛÚÊ܁$6ý„BÌS¢<ü¢–Ô0…4•êU]#£ZW# Ê;bm«Úµ¿]`Œœ>/rúÖëj¦#—‡¶úU¡¨]>R
„sÍÔ1…ôÚ1A,?@uŸsoeÝùó0»3½6Ì6»Ì aÁ9vµÆÆCqAfµZïÜY#€éØ»#\†“V¡l¸ eKxð€{¥3ÿáˆJÌ/> ’PS¦…–E©eH÷Ùƒ’«}¤(ã3¨G`•ÔÖï–÷!§‘‘U•ÐOQlÛ°3û$žVT‰~‘ßÐV3
ÛS§
Г¦Y…§ž6Dªi¶’K©Kå´At{õC,ÌÀ€ê£ú—¨ãŸß揸ú±Ž-f㣟1·ÏU²Ì³iÂ{3;†0c±¾9Ðáža¬<~~\þìúÈ6_ıöͯ%íy“„Àp‘sì=
+aÜ°LpÙöîïï‚ò¶áïî„®×þDvÖadÎãx×›¨~¯]/áÀ¥ÿœmV¿eTå[¤Vo“BSñVíÖn¹ÌSlzæô)æõQéÖý…·Ï+^®mâQÒ@Þ¬²¬*¦£"D$%“
+NDÓ¢5·ž,DŸÒÄ_ÎmOPº¿&ZDšEFÔé{Ø·¢‰“E kqéç¿yÿÅWýendstream
+endobj
+239 0 obj <<
+/Type /Page
+/Contents 240 0 R
+/Resources 238 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R ]
+>> endobj
+243 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [271.0812 690.5936 303.4893 701.7118]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+244 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [215.8886 605.3217 251.2059 616.4399]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+245 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [370.565 589.4719 405.8823 600.5901]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+246 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [240.3865 520.0498 275.7037 531.168]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+247 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [338.6766 520.0498 373.9939 531.168]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+248 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [279.4096 506.1473 314.7268 517.2655]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+249 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [265.8608 396.965 298.2689 408.0832]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+250 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [258.5279 383.0625 293.8452 394.1807]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+251 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [368.8832 355.2575 401.2913 366.3757]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+252 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [265.8608 273.8803 298.2689 284.9985]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+253 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [258.5279 259.9778 293.8452 271.096]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+254 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [207.6747 230.2254 242.992 241.3437]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+255 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [389.5264 218.2703 421.9345 229.3885]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+256 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 136.893 282.5284 147.8219]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+241 0 obj <<
+/D [239 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+242 0 obj <<
+/D [239 0 R /XYZ 74.4095 755.3439 null]
+>> endobj
+238 0 obj <<
+/Font << /F51 119 0 R /F44 92 0 R /F8 95 0 R /F56 126 0 R /F14 193 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+259 0 obj <<
+/Length 2796      
+/Filter /FlateDecode
+>>
+stream
+xÚí[Ks#·¾ëWðH¦v`¼¾9©8⍣›írQWR"‰²(YÞïÆs0 –Ü*oUj‹âpÐÓÝèntÁ’†d¡8â؈…ÒI)Èâòþ/®aìg$Ðp.RÁÊèÀ<Ê([T!m¯RJeÌ,%	RÒ(Kö×󳯾%|a‘T.Î?,…k·ÙùՏ˟0Q«ŸÏ¿;ûûybIGZSµÈÎåFª¹\!s¹Ì -±·+²|€Ï3|þ²eîÖ>¿„¡
|^Ãï-|.àóßpÿÒ=
+jõ­ÎD—Šƒ~VÆ»ÕÀˆX>Ùg¬œø<æ;;F–kûE—¿­„\®ïÍƏm?øo쿬zá΃ÓÈ]^nVTø³±Ìw–nºÑÇÕ@¥¿ÿÁÞ¶÷›+øtÛX™»  ™#¢k‡  ´çÿ‘ªåþ@Õ÷~KèèüBhÝ÷™ÌÑõÎí÷+’nYW_…ß÷ÎK3KŠ$™‡]ÞÇçýsT97ÞÛAæÝzç<¯öÏú"ÜÚx’$róy®aiÅYÏ#YË%‘¬ï“¦ÜÑ)¥ÜºWr±·¬áóûnYÿþ¹|²4˜X	;iÇ>´þvc\Z~ÿ6F»üb—ª1°Ì6þ¯d7…‰Y†9`&±Ùâã|²Ä¦åHw²	0Éà9¨~mg¼}ñJ’Óå??x­v[0'¼–›'{ë&#hl'ÿ(Ÿ=Ÿ^¶~4†dãÆÖÎiî"JXw^Ü‡õÎ[Ó`°¦Ö`M‚ŒÞš.ÍYB"}¢Ô>/¿ÚkµÜ^@¤pŸ’/­h˜$gÚOÆ£x:Ú(pˆL÷ÛËFÅËKgŸõsLʪÐcîCÊ$Ò‚ÅðÞ9,¿	æ}
+Qmï}_­)¶Í®$¢\›Àô%¤ÕâÚë5:ÌÙ“†¶•;7¨Ëÿn¦ñiXn©ØhwÓ\‡µ“»Œ±dKYïÂò_É#p]xÄ“Ç8€ëj´Áý<ڀ͞°²v–áy ×¢lèÀMgêl;H
+Ê”©¬ bua£…MQ¿žýø3^\AFûî#L¾x…cèâþÊ:†Ÿwgÿ9ûw–ô¿!gèrÞDOêeB­’ÏÛyz‡•­ˆ>r‘aO;ÈÄRH3Up=†,‰h¢­ \“Óiö´•ÀgªíåÖŒ§ÛëdÛð½+u§D!¬sGêžvt§¯XjVXúînk5é	]*z:'†==T#¡È>ÿfÿxÄi“Ê6$”Ÿ°Àð!å< “€ŒÜGD±*¨#¼*Åžf„À0,o	Šg<œâ“Ú±O¢²zÿPO;\>®Lþº’Ï%X‘Ÿ:‘+ &xå[’ožb
²˜#ä½Ý×{! ¤Q¨5˜“5 `"ëBÀ¶Ügr«p"ö}×”©Q›¢‘yÁÔˆaI§x0T¬k‡è\èBù+×›´õ»œ¤yº$?dӍäóÙæÚ̘Z¥côÅê`¤TÆ(€EÀ£iòDÕV‚aŒ¸zªEDí7¹†)Ù‹·Œ¬o‘¬oM¹c¼•rëñ–‹-ZŽç~YØmCë±9¬å(Œ{ÒA5}®f†‚'(§Å÷‡[¤ŸÏvo3¶VŹÔò~U©äÔP¤-ÀlÚ:Qu¤‰ˆ,m]&[¨$´IW£±Ü~Ç܆Îr»—Н=gÝzÀ¦J†Wš7‚X€rLÓ	✬ĉ¬Äm¹)ˆgr«A<ûÿ¬};Y3PÈyJ]z)é¹Rø™BL™¬ÇîTªÁ…$VœÐöSe¬aì×þ^³†:4☰7‘ÂOœ’õ	´Üùj³jîâò¼u`ŽpŸ·ét	Û~›
+×oW8Umfq2”!*yÑ™#‡P
+M;',5íözí¿ÞdOÛ|èÕ'6(Ä/ô¸F¸vc%¶ÅVÕ­_ƒîúõ6$²;?ÉoJÿP¾ÝpåÇcûl¯‹Ÿ@:VBËù¦I«/û\;œô±ƒ»Íó›ºn§þ¯Áß·OQÕYB$T,ƒ>„ð£[ÆÈoÈÖú[”M‘ªß0ö{‰ÔZÓËä<ö÷2‰ê„½ÌX7>SÂ5 ^Œu§ÔædR›Èº¥¶-7•Ú™Üj©ˆý´¼áJrc7w^j]™mhD±âÅôöCÅH?Ÿè¤lÍØö ¢&H0JÚfNTé¼ÁœJßèÀ{’ÁêµýV^ÏÏWšD„G
 ›ˆRn‚+ž*k2Lý€­v„fº×@¸½×ΩñeÑ`¿×N©î~Z…Ixàû¬t°ÄåæÝ&<¾ó»GfÑÁ¡¹“ZBð+q‹{D¢òfþ™³=°såŒøýç©>E”$ªŽ°f1–fªÅ&F	`Ao_*Ãþ7ÔFUlïÛ~ÆŸ§Âq¨9Fczº—slÔ¸DñÀúùÖo×õ*‡¹bÁÍ1-籿¢%ª/©¢Aϝ­ê´ŒªQÏ"U·œ5…¦jV
+­³\f«–ýr\=!:µN{ë™`ˆCÛ0_cç#Ïf:Ýø(˜v‹™
K«eäDÔm0Âj"¸UÇ [d2½=fa¤ÌwŒÀxx|¹·®5ªB!£4;¨”)ÊHñÚاW¢p}‘çöÍ°óïÆÇex_´rÿ¢ËɆ
Ö³i;šcĽóM}5}ëØì+p“]Y!ç7ÍFQµai;œz|KË@¾7!ªH¯¢&ú!`ž glݦr4 ª©>e¬Fª¶”j$)உ“Šzè»Ûzñ´iŽ&bõdo®žŒĸd§«ž9ÇFõLdVcw
+$É_sÒü…dDŽ©¥‹ý¥4}I•ðôŒtJiNÖ¨¥‰¬[LÛrS5É­–Ó‰Ø?Eo8Þ½ál¢ÕÞp2ÑCzæ™ÇÞ°-=ö†éoÚì§J!¡»ÇVs²V”E²~”5åŽQVÊ­GY.¶xcµ	äÖYP•‡å6Yʺ
;\õCtÛ3Ã	KøN˹EÿÚ]ÄÝz7_ìôŽÔÊfšO»û*ªl×0ª$  eŽèbŸ”¿‰Aåßø›kÿµwWœª½3·cn“†3‡VÜY³ôù:­ )KãôÜy‚‚~šÎ¸€Œ5ÔÇr³ø¯½k·­ÁÙ§#0ð$ ˉ$M'§%êa$Ÿ¿/Xˆ½˜4ˆJˆÇ\“ò¬|¤iÊW	ýI&ÿ„¨‹*:õ騋B²S’«Ó¡®œcu%²6ꚁtOáêöô6
+).
+½9 E1¤ufø1°0ç±&ª/	íqÊvÉÎÉ%;‘uKv[n*Ù3¹Õ’=û§ †Óé g­ÃÉD†M3À°-=Éô7C"% 5zQ–‘µ¢,’õ£¬)wŒ²Rn=Êr±•S '‡P²¨VYÈii‹ÕÀ”¨lúÀM!à{z’û:œ…!é‹Ócv»Íä¥J<ätëËKGæΨçÿUÆF3 U€‹ñÉnzâèþÿ
áíp¯ͨZñ¨úáÓ:FO!´<™Ì¢©x¨n‘ö=
iöÎ!Îc~ ‚ÈJIHQs׉ÃT3{¼Dæ3Æÿi ƒ	U‡r‘fȈ*û½ʝ¢‰“gJq‚Ú7V’Öäýô)endstream
+endobj
+258 0 obj <<
+/Type /Page
+/Contents 259 0 R
+/Resources 257 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R ]
+>> endobj
+261 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [265.8608 621.0773 298.2689 632.1956]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+262 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [258.5279 607.1296 293.8452 618.2479]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+263 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 483.5929 282.5284 494.5218]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+264 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [399.6904 467.6527 432.0985 478.7709]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+265 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [252.4315 385.959 287.7488 396.888]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+266 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [193.9002 358.3426 226.3083 369.1819]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+267 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 288.3252 282.5284 299.2541]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+268 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [337.8484 246.761 370.2565 257.6003]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+269 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 176.7436 282.5284 187.6725]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+260 0 obj <<
+/D [258 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+257 0 obj <<
+/Font << /F14 193 0 R /F56 126 0 R /F8 95 0 R /F44 92 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+272 0 obj <<
+/Length 2577      
+/Filter /FlateDecode
+>>
+stream
+xÚµZmoÜ6þî_±g\€õÕˈ¯Üiš-pm.5îph‹BñÊŽï¼»îÊ®›ùï!‡%Q+§AP¨¦ÄáÌp^rÃüÇ¥bª°zQV–£ùâ|sT,.aîå'¥SÚ”ð’™]iQ°Ê±X¥L¾8;zü¢ZXf0‹³‹œ	)í¢4œ•Æ–‹³õ÷Ë×ÍÏ'|yÏ<{xš“Ͼ~üB›d­,—*€kj¢|ç){B,ã•ÑDxD»“•Ôjù†õ‰(—¿œˆ
+d¸»­“çÇøW ‘{½&Ú[|—4-—íÍÉJ˜esŽ“?\!‡µŸÛ"kÜʽñ„ût½X®‰ï¦AÙ--;YéÂ,¿"9¨úÛN»zO{v{pÃ&…»sά†îÙm´EÙEÜŸc¡mÊX÷_†[ÂUS[BNãä–Na¾TÞ©·äe|Ùúu¶¬xµü>E­pþÞ¾¡å-¬h»?z~–ħdàÁlYÅ•öaŠSûK¢yl¤_¥F;f‹ö½A‹¼KT†½õ¤*`g}i©kÑ¥
$A¥­rZ4!v_R`œúWÎÀ|y‰ßå²ÆñÚÓäßæI©Dî
+äZ^‚z¼bºÒ~÷ŽEÌØ}Î\*؍€’É(JжõóÑ÷?‹5Xá룂I[©Å=ºˆqkÅbs$™­tx½>úîè_¡"ÃUÊѪ§1TVÚ2Œ·¨èoÍ….àáCm­e’¨ƒEÁLUe]Å
³Ò•œ9LCP/áqÀÊ—¿Œ?nCˆQn~ž©ˆl¥¤¢Bœ~;®ˆ«@	v«€CqÁSwyGYâPöó‘/ƒÒ¦àƒBå-¨V)™³ ï9HÀêKÇ
UŠSfc¨åŒÜ@5–Û³—_f ö•k |ù”lï‹«ÿ†é
<ÿsñ
•‘ÒýoP£…<Ô,²)ƒ[N½?ëáö„ª˜(J5ØÞdÁŠô㍦ÂÇlQ‰oœ—_}{zTœi)øa3GªéxCYÓ—>l\•Z²é(Ó%™¹(KÈEY ›²ƒr»(ÊÍGY*vë²ØGÕOIuN¢©¥Ï¿uØ'5«ªotQÜbU‡¿åȺðÑø}ÐTÛåwÚ`q
+1àuí¨#
+[û¯ˆƒ\_¿ä­Ÿp€¤5õ9Ê~ëߦ°ÀŸ+,ŸªšóyBvÈçlÞçåv>ÊÍû<ÛùØùw;ö©0Œ‚÷«DêhÜCÃ;0z¦hV
+"d&œ«WÜ1ó@’KΤD@Ä3¥î¡¹t`ä yÅLlX„Ì…­ÆÈ\X‹(ç¦Ð¶›s‘@/„’`DÏÂöBÛq¦	ÒD l«!ý´Ø2èº"‹p=@×LˆBöºƒ½J‚½Ð!ìíÇÅ°zsÍ*[Ê…¼c¬•s]$ЯÒã:>bû@Ø+ 	$dâ@Ÿa7	T3Z &6`Û¾ŸöÂyÂ^*ˆÄK¼t^OZ#½×¾@&ïN0·È·ÔËÛ·`oÝïN$‡MÖ
œá'Âq0j6˜7í85
+‡¶«¢âNÖY	ŒG8Öq¬–›zë]obùÌìöþï³Ï€ð3?5z¾|<Ž €öeaZÃVE5@D¾Jè3ñ3`:B4lÝB‡ë)1Œš@tX´VLÁ¢'zœü`×™BLÔ¡9úc«·3w·žú|×Õ§Ðñû›è	é*Þ¸î‡Ý÷z¢`r€Gª¬,UÂGIðžÓ²;¼ÎåØAŽiÚŸÃ;@ÁhéqõK
R*k¬4-Ú;B¹m¬ó*Œ•.áÐ&µLt®I‘°ÕLŇ&jBÁ_§mä<Ü›´M1JLÄB18ÎÁDÉ„U>Ÿbn©å³Ýf³Ûú<{þ+é³¹¹n²Ù!)«ÂŸí"4Yû<#î
+‡Ó¯nMý&ºÑÍLµ»õÿëŸÒ<ÍERœˆåš"	?Ex·áfÐîç4{Aï[ÿ-	ÊÑÉ,ÜÛ)@Ý…"{nç´\JY¨y Ë*e1†8ဩ‚7w¤lb$Ö0uëZ§.z ×Q\Ó©
+?öõùEˆüKrãj•ðÚàâ'™lqÃk?J›¤
+ðcw5oTlcfjf¤_¥Æ·#¶lº\€KöõâÙ@5£…’L㮧…w!\ýÃ8­Ï)âƒn5ñ=ÖJšs㚻٫ì=CŒfèúÚð	æŽÃX&¢ʍÛÓTøNDßDx¹½Ì.ûÈïØÕjª×®,%¥9#øÕÌuÄéhœVNß¼ýãPâô”Êh<ì0°EÀ±Ù¤Y)«»ZElüD
+oðýÊw]¦Á¤¬êä1y¸àÆqþèé¸ÔãÛ.ÿÚ¡—ß]¼îðƒã†	Nþ¢[Ë>»›þx}L©¾e‡ÝcSßж„ŠxÇ;O¬D×dù2{ûîWõŠwWýživ$™„F8}Ýi26ðë•xG拃ÏáÅxÇäê‹„fV*ç.êý*]0¾¨±Eüž¯^ŽÔ’ɲÔ5†÷ójF¸,áÈ癞ðuìñ
9"àI4Z‡¬ôæ[KkardÜJÕ/›†.\¸8—¬®U‚> ì¶­×ÀbëþP–BÖÄëštî7¶Bðþ*ö§1S!XÉá\åIûs|5¡˜ÐE™ÜtmÅéëÿ{¼è7›fìÀÃRHV™r!kkiçšt _¥ô#O˜>°EK8•ˆJè6ƒp‹T3Jh7ÍM_‹àØ*êd³|µ¢F…×ÚÆŠõàu³
¹ö¡(*	E^ð~kw×Q`«]›ïム_Sr	pÃrH & `õÀ e1"Õô1ÇuÐ<²ýË
<ÿü œŠ+¾¡ûaü5â5=8þ/qêÚøïÂÕüOckŠW»Á¶pp*õ ÇÌ‹ÒßSçÈçÑ/ûDZMçâ¦ç› "óm’Ëø”âIþ<"!¿’‚
BŒvßõ¦ù’Ç&á_IûóÓB¼êPê  >O~Ãú‰Àà9=wÉ\CÊÑr²ugœØ2áyI¼.HÅ+òÝ*¹í¼Ÿ2b•ëdLÞÂéßâÌsʉŸ2/hÕ§ú¹X»¿¿17óþ=¯Z^ˆé™Š¨´¡=¥Z?©<O’—ý›HC›h¬K_mÂO]½08žø¶õ{ÙuVI7|™tä¶g´G3§É¸3Íe¼˜êxG‘=XYÃÇÄlRtÿ¬"¹‘Üw…¥ ‹¾b˜{¦o§lîà›É›‰ý|Øù÷êCWÍßO5~¨ÿB—6ÛÚÍ*!_	[xÉtœÜO0ÅP^ü7l zãÖendstream
+endobj
+271 0 obj <<
+/Type /Page
+/Contents 272 0 R
+/Resources 270 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 274 0 R 275 0 R 276 0 R 278 0 R 280 0 R 281 0 R 282 0 R ]
+>> endobj
+274 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [442.6299 746.8856 475.038 757.7248]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+275 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 669.6024 282.5284 680.5313]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+276 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [214.901 616.7703 247.3091 627.6095]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+278 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [217.5744 555.4411 252.8916 567.3016]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+280 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [108.8202 463.8776 141.2283 474.7169]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+281 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [405.2133 381.0078 434.3737 392.8683]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+282 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [322.8707 369.0527 355.2788 380.9131]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+273 0 obj <<
+/D [271 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+139 0 obj <<
+/D [271 0 R /XYZ 74.4095 611.1535 null]
+>> endobj
+58 0 obj <<
+/D [271 0 R /XYZ 74.4095 611.1535 null]
+>> endobj
+277 0 obj <<
+/D [271 0 R /XYZ 74.4095 568.1002 null]
+>> endobj
+140 0 obj <<
+/D [271 0 R /XYZ 74.4095 544.7612 null]
+>> endobj
+62 0 obj <<
+/D [271 0 R /XYZ 74.4095 544.7612 null]
+>> endobj
+279 0 obj <<
+/D [271 0 R /XYZ 74.4095 510.9338 null]
+>> endobj
+270 0 obj <<
+/Font << /F8 95 0 R /F56 126 0 R /F44 92 0 R /F14 193 0 R /F51 119 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+285 0 obj <<
+/Length 4358      
+/Filter /FlateDecode
+>>
+stream
+xÚ­[m$·qþ®_±0dÖÐÐÍwRù$;–¡À–ëÁˆcn¶wo¢™Ëö®N‡ ÿÝUdñµ{zö”à0·ýR$‹ÅbÕSUl~3À?~cSƒ×7ÖyfŒæ7ûãgÃͼûãgœh”2LicáfáíV‹9cÄͶîäwo>ûíWîÆ3o„¹ys烙êÆάñöæÍÝl¾¾¿ÝJ¡6Ï·|ó~#Þêx¹»ÃÿŸ"Áß®àö±Ð¤&»çH±?Ÿn…wøï¿	_™¾÷÷pù¿ósüZ}„«÷·[ %š{|õtûŸoþí·_iSMCpÉ8wæŽ@Ïð{ßÛ 2¿ÂQþ6è!þá±ÏZ2F3çu¸Ã¦säââœtdþ]%¡õYM3¡7[á%óÊÀ*rμÖ"ððŸ_ ‰—›·ÂnvÄGxÀKµù€#îpèÏo·jp‘s¢É«÷M—8q¼«{›š[ôSšäòO@–D°'A£Ðƒ’Ìeª43ÎRÛÄ́ÄŒw|ÔF“É">!‰èär êÇx_ºof¸[š³Ì(!»Ù=ÐÏ´˜c\&Ø¢ÌséÒ2ñF÷Í™‹@h¦½3•¢R¯ûgºû	g¦«|Ð œÄnœ+P›Ý=uBR•þŒKSâŽY!|5¥8…8¥üŽk`Ö˼NaYo£öÒn[K5zΆñŒÏ¡Ú6 œ¯Ëlb·[Ûî[zO2D‚ûžÉp{O#NR_°¿ÃËÈbXk9LxëÛ-ùßÔzœê¦R¥–(bø#6û°ˆÓïŽcbt¶ò]dé‹>Ë¡ÕgxÙí{Éó¾‡N‘•i\4œI´îEü¨ ?'="ÜÍE/=sʦ†OÑvT&ŽFå´0²»<(³°îÕõxmàHÅyGŠr î‹Ø‡‹fËæÝŒÅ}ݱæNåÝÃ"Rh
+ì0-E«_¢i¹ûç1ÞŸi""ȏ|Cøž‘ã'bò‹9c\‚×yJßœãBn…:Ò‰B)¦µM÷>:¤¿Ó˜ÑrÍÅ `}­A_häqì%³ª83ÜéUç|aÈ4¿·Ôàw‹o™°Žt!¼ÚƒüÂE6ýÈÖSrÖÓHoqÄÏþð¦à)? ž̍åè}}DUøæéHþRá«L¾­ègðjÖ)Îå}BÙœzf2zk˜¹ñVXÈXr íô2²Ptÿ£	ŒnÞ$4¦\\âé…–ç¹Ú«‘ `Â2OñùEƒ*•m­Y¥U¤@7[	Ì`7Ïb}u2ý¶n0“ͼÛW®¢Z~ºÊTW¸À+•†@>ÇX
dd•àä8ƒ¶Rßq[xí72b‚5ò†wÑu†ÅŠà¨ç?¨ÎÝ=Æ>@RaÓ;ÚÒáòq.\›Í1°¶G—õŽÔFú¾vþclÕaA|T]RŸà`…‘ötÿ¿?…ßzÁvq<Y”ϱoÛ‚–z‰á%
+È
ìáAl]W¹L¿­Ì{ÞíkUŽ6ÕVtüô*—¨Ö¹ -TÇE\R«`"²¾%¸‰"«w1Þ×Kþcv©°èÊâ’vd]ÃՏ±’á:Xogf*ª% AÎu}uëTh/•šEð(L`7O„±ÐáèAýup-ב´ ¡­Y Q{º~_C’[ÉkË_e‰»¶ƒ<Ësu9và7m˯÷ïVUEfç8üÃøÜK&<§ øàÈÍš–¡Xõ˜U©xŸR`<¦¸×‚VjßT«hF !l'bü×Ñ쯯D7BhWáKÔ;¸n<Ø®ý‰Ámào†˜âÍø3-}Fn!Æ4>²tûÓ­6™HëB–äs›å‡åþS€?Ì“…LG0ÄZËÍק4™SÚïÜ#ÖVqÐ4žÛø’×@`¶K0îc
+–,ã^tˆ¸]D	]d„‡„g3 >’Ý”\\1É™~[7˜Ãy·È.º©à÷õglX±‰ä%ÎTW·àü
 ÄfðJû¤¬å”ÁßäðûX¨jËGvӏɀ‚F÷iI táÕZÍÑ{YæìÇàùù] tVo¾?<¿àžz>œOÓ\ÁèÅ1´hØôÍ»¤Ii
«ë69ë_cÈ`õ”´á¥Ã8yv9(Þ
+ØXØ>0UqÚ>'êøHƒ2Â>#Q3$ÛxæîcömNN;afÔ_‚Á#1[ø"â©ýù¥s½y„†GÖë`Bõà„÷fp˜ƒÐr9A¬  æÞm½g’cþ±î>¨.WMn	à3Ä…®v¶e¸aBC«5~·™j>n³eÀè	0¹­™²"¾#æv캁ÓCŽ±ml7Ùy
+Tùc|W{l–oâ:>R¦¨)#Ó´\LÐh¸nó$Kú÷*a“ž?’ÏKÏö¨s 9Ÿ5˜lK´ÕÊ1®´nmu²8.æÎŽi ñ8f]›Ï>†Í<ņ	Õáu’RLt@ˈOËÝ`ÏpLð8Æ.ât©-“ƒ%´†
Šëk¡a¢ßÖ
æyÖm6µî>Ï4“7Ñ8”™|®6eLcªïü8K=8ÉÄ ¸§B·;2Õ:ã
+6Åà:¾#RlvdÞDF=`¿+¾4Ñoë+{3Q-‰
bâ,6¼^›	•Ð<5ïçY€f4“ðx;ƒNj™jo‘¤lË÷4î{Ç£DÆށõ þveƒ„4×›/3¸­'}Ñ$…·‡2DÎXËfï„-Ë:\ãÚ-›B‰cð(Sï,G|ýË.¡„Y­mÉ[¯æy¹vÌiÁ›|í""´à­s‘b$0‘W]øàºS¿Ð#N˜Gø ¡¼Oé€l€ÐÍvËDHø‹ËÛBB¨é+¯ č
+3XtbK9',(\é"è[+° +Tç5fÿ#=KæG÷S©e.'W¦Çê'fH¾ƒß_©×…ß·”5ùeNþPÈ[q—Ji-±„0)À§^Õ Hd×ÅÚ° èÇ]6Zõ°½u2zv 
+!«¬[<úà›ZÒ”RJìÙåã"ï–O £¶.e¨ãP} …5^d¯‹3¹à¼Ñ÷B¼š“*HÚï,«AOÉH
%XŒJf¥V­
+¶q‘ÃÐþ!M¹ßí%Ai Þ¥”P‚ࡧ‰^–—ëy©ƒ‡‚ÀvPõªê†¶8¼d·9Æ߆ˆJâvª…(!0ªfŸÃœ€½ÒÅ!¹1ÖRÁX$±()†ü%x›Í;Ç-ƒó”ß}¬5Ç×uùÓ·Ò—*q,æ!PïçÑtUVE4m‚‡O£ñ]0áËêÃ+TˆzÍfÁÙs%ð”«
+ÉvÉž)ã˜RzÝœUD+Ö,Q]5fkc[ÖºhÊê1GŸcÅ9
+ÃéÚB€uIb¢{k:•ÝQh^å|™-9.—mcz|1“êcñ_PŽó'®_—=­™#³Lz*s—"ÉRQ~¢Ô$xuéú"oN\û¦ÁƒRðÇS>Âç¤ç™^WÝ'RÜ3šGì+ØÛ ã®ò†ý„M5NÁ‡žšb(ÝÙýHRÀK5Y!5x›\Ðwäv¾%Üð_´)“ú›…µÀ5é Ùõ¼Œ‡ú#é´ãU–Æ~G-„Ó´\´&¢ìeÃÓù«"»ç”rÕ%åjøâ´8øÁúnÖ_’=¨úDIX	ê¬]d†¼pÑIìˆÃ€¾
e„“é>f	 3”ÉdêTE–#ÕnA\”ËfI@×nB‡-MwBý4D”^Ú¹Ÿ¦<V.ì‚9}Jf¹VɱIÅÍÅm=‚}óMºô5³éE>Öç_Jêmͺƒ55ÒË+æ½¢Z³ï‰ìº_¶²ðý¸Ë&¾öÄkOݱ²ÊûËPAù„n½+òÅ&»øçmîn©ÚwºíðÅK7r\PN¯x8OŠMÆ‚¡ªÒQ´T8ÖDÜík8_-žµÊ3He²—töøëòlú…ÒŠi¯,8ÅŒSüZV$Ñoëó%›u{¥Âàð4.êKÃF¯/‰êÊàX”7ƒ_Ô!}…Õš„‹à2 jy¥p2ý:ónC-?ŠïRQ©áÃjæ¥qëÒÉTWFŸu–è"%|„b	"ªëcDñ¹C‚Û~ÁçäܧAǼÈF0²€aŽy>'D!WŽ2(30íµ—é×E7ï¶,\>а¥43tí­]ÎYM!¾š¦ïwƒÝ#NâJ±|Ö&m+ªù^0Xv*wUmíA,bjÛŽzÙ$òõñûN“õÕ‡mô`ó‡GXú5	d¢U„l0 ï5ÇÝ¡Ôªkì9](êpÌÇÒÌÁúç3Vm¾:œvԝÕ!åt~¯U¨Nu_*á&ÂûÕÀvšSÖUqEJ‘½¯+Ô³³rðòu'²å CÊACÆXp|I1e(p@Ò~œ¦ÝSzXòÔp1F²3âØŒæÀ*qœŽGú¶÷ažGúŽ!<©.Ç 3÷Ï‘í¦F»‰{[&;À^–ÏÆÄÈø˜4›lðÜh£ ¾µ¸V¼ÉôÛºÁ|›Íº½âoAjJÇÆ,³KTWSá€joO¬ªrbUn¦w	Z?Rn	×ûŸJ¨ŒÅz ¢©$Õäœ`Ÿ-&·¦BzŽd]«Kù²Ü48ø»7Œ¤©5kŸêx}©Þ´È„C~!gØ}Â*+ÜT<_½£„†RqæD…Âø{ioI,*p_Æ*Ëç³xF
+a÷PUÔfGĘpùp×O]äxN%œµ#:Ÿ·ÇØƉ&}9Õ§du(¦LG¶*I'‹bd%òÁ	ů²Põ7B*•b {L+Ó%yÓY@Lѹ¨èéÙ™N•4‡bO«ã#å㒐«2iÃtÙ§`ocg©†˜ÞÄ?çªôzWÚ,·›e‰òa@Ì-¥M~—`êYöU™ewa‰5¬‘¯N[5_ø +eÒNKVë|*!½
+0£P­5þphS©Tø»m-Õ£º}qéŠ oe
ÿôc(2)•C¼^º˜—ËRHž©.;øP¹ºRûM¤ú.¿¡Ræ€þB¿/©DÆK)¬T4Ã-ΰõŸ‰*&}ðÍÿ\/ÆÑèËöáÒˆËVŠ§3}ÿ»ô®gºýÁŠTg|Wiò]?ÜÀw¿º4Î||ÂBü¿Šbá«»m¸Äè#(£È'†$X…¥óÂU{6@ï£CÐh
n7˜\a;³-–‹láE0¼§du_òÁþ8øâÖ¬Á%öñ¡9m'ê#›Âöç-kîŽ4ÅôQ_ó9î)2`^É·œö¸›O£3ÙêOºÕ'ŠÙªâ°Ê
+
 LñÂÄÜÖ÷/ÇcP©‹Q„àÌQÍöÛò™B¥3¡h>ú“›êHõÏa½—€F+~QÖš|Ì0WOê3Òw´Î*|b})-'º³fxzä%»0§2ÓYN|ª–€ƒÅ“Ùã,ÊVè9°ÂÁ!¬Ò˜kI‚D¿­Ì“³n¯dw”† –³e£?EDWÆ6‚iˆcÚ±û2r>sS>q•›ß“;uŽqLÁ´µÜy=£wLh»±'šmE4Ø!N7Ú”žÎ/~1¶0à? ú5—«endstream
+endobj
+284 0 obj <<
+/Type /Page
+/Contents 285 0 R
+/Resources 283 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 287 0 R 288 0 R 289 0 R 290 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 300 0 R 302 0 R ]
+>> endobj
+287 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [489.4544 710.7411 521.8625 721.8593]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+288 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [300.2304 699.0649 332.6385 709.9041]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+289 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [286.2454 687.1097 318.6535 697.949]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+290 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [143.6789 651.2442 172.8394 662.0835]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+292 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [356.307 573.1126 484.2022 583.9518]
+/Subtype /Link
+/A << /S /GoTo /D (other-common-types-bool) >>
+>> endobj
+293 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 561.1574 266.3938 571.9966]
+/Subtype /Link
+/A << /S /GoTo /D (other-common-types-complex) >>
+>> endobj
+294 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [153.5984 401.4762 182.7589 412.5944]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+295 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [241.6158 401.4762 276.9331 412.5944]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+296 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [459.8353 401.4762 496.9558 412.5944]
+/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Numpy-discussion@scipy.org)>>
+>> endobj
+297 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [120.2376 389.8 165.5172 400.6392]
+/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Numpy-discussion@scipy.org)>>
+>> endobj
+298 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [186.1994 389.8 229.7456 400.6392]
+/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Swig-user@lists.sourceforge.net)>>
+>> endobj
+300 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [108.1855 323.6235 137.3459 334.4627]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+302 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [423.987 157.0286 459.3042 168.1469]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+286 0 obj <<
+/D [284 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+141 0 obj <<
+/D [284 0 R /XYZ 74.4095 652.2405 null]
+>> endobj
+66 0 obj <<
+/D [284 0 R /XYZ 74.4095 652.2405 null]
+>> endobj
+291 0 obj <<
+/D [284 0 R /XYZ 74.4095 619.8772 null]
+>> endobj
+142 0 obj <<
+/D [284 0 R /XYZ 74.4095 382.8262 null]
+>> endobj
+70 0 obj <<
+/D [284 0 R /XYZ 74.4095 382.8262 null]
+>> endobj
+299 0 obj <<
+/D [284 0 R /XYZ 74.4095 350.4628 null]
+>> endobj
+143 0 obj <<
+/D [284 0 R /XYZ 74.4095 213.0382 null]
+>> endobj
+74 0 obj <<
+/D [284 0 R /XYZ 74.4095 213.0382 null]
+>> endobj
+301 0 obj <<
+/D [284 0 R /XYZ 74.4095 169.4087 null]
+>> endobj
+283 0 obj <<
+/Font << /F8 95 0 R /F56 126 0 R /F44 92 0 R /F51 119 0 R /F14 193 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+305 0 obj <<
+/Length 2526      
+/Filter /FlateDecode
+>>
+stream
+xÚµZYoÉ~÷¯ÐK
+ðôNßÝ~Û8±½’]Ä
+òMdÁip¤õzóçSU}LÏôp†0²ÍQ]_uUu]$¿já_YÅTëõ•už£ùÕîñE{uïÞ¾à‘F)Ô6nfÞ6ùu#,s^«9*î™ZγPÌ;~æ]ã=“ÜÀ…5œYã-RýáæÅwo¸º®F˜«›»+Î9¸d²›ÛnþÕr{ýï›?¿øÓÍ 
+7LhXU2¬`3UëJX°Rú1ìÍÇk¾Ù>]7JðÍn{À±ùpݳéÂÍñ $t-7Ç»@ÉExw¯àÒËî„t‡ká6Oám¿Ûî‘ý),zÂW_áÁçÀ¾…þî6…˜¢5Œ{©ao(_îáäà Úhe—$=|NS¹_m™ÊD>/g , µ2<G€o4àSFË5@Uì¹‰j§â(@­X`ØHËáƐ0¯µ¸t/ [ÉZ§Ýâ~Œô><DN\ÉåòRNˆ¿ f3J_Šµ:8Nm–9ÇíÿQòÀàDêÛÄ¿ B wreGê¢ýÀRð@)p¥JÈ3¹k­å‘à¸$ŽÛ3§Ç3Å}
+ ÛC’yÂâ½Ô6²ÛÈwþ!bt5oÉ™"y›î”	,Ä\Ï=_IÕRºHdëéb	¶HSÜùtQÂætfßôÏËS<?†8B¯„Äÿr!? ÕŸÜ#—ÇÑóž|í ‚-hm˜¢íŒH»íîZXetw›–lå4ã¼d)zìö‘{“|óU¥×¬ŠV3õǼ^US’‘^ÕÈžà—Ü(>pCÅþ·•
+B°+ ‰ªSz+jùc:ÌMÚ>ZíSÒ§ìuFªü‚º>.Ñ»†³×…DCìÖ—ž"í¡Ðt=;kãk%+ö(Éì‘É–í±šíQÎÙcùÃ!§g:G|ӐfÐ_¯ÚLœ·ù_nwɯK½‡³u|Îd,ê>&åþMAçvAÉÖA ÙŠ’²%%'²%/‚Jž‚Î*¹„|GzA/lvGPˆ¥ë”&ĦÞÙƒ‚…’E|i>DCåÈÖ$O§µg½G$q1"íbtTŽˆu¦Œ˜É¨‹ò5”ŒÛqX4/{ˆ¹ë±ñuË4o!„NI‰¡›­ç™22¥íCD~Œ®þ•Ø"FbÑz¹Z^O)pPßwÁõC ‡lMO(võÇpó9•cé÷·EJÙÞY`´é˜žh9:ÌqÌ8ME_(l
ù0i–p~FÙ;ªXòÛàWߐR+š‚ÒÀºß¨-Ù/Ô%™lµ.Y’·¨K*ÜÙºdû}I$ThÎO0ñÕé>ÒümS"ý
+zÅÑ߃•þŸÞVbpoÜÊÖÕ
+¸ÑŒsïÆàÛ]píFú×íÌ)”šµ&w
¿‹ž5=‰ÿ‰Îÿ5>ëâûm¼ïgšDÇdkRõè君/é }÷ã2 È:SþÑÁRF烅k)â¥l×´C‡ür¼·PƒR¼âÚ2"Žbã\é©„^*=œÚ,–pð
+I{:Õ¿Û€‡±8…EÈwIÃEcñ
jjó:”u,ÞÏÔ±J¹´^Ðú‰ç)hº-dš+Ãö*få dú¦\Pù`͵ùWRäOä:S9”g­²1ªÁ\ ZÁÖ’	™g„½¦«¡MmiôW¶©QÛžZ™ÇŸB÷
ü5DéG‚É&%­çú¸¬½"[ìšr@¸‡Âº÷l3©aJX±´Kª… ÉVƒö"ì´+ÜÙ =‚}?$ÆfV‰î/¬Ê!­·¹
+J¡3‹BÄHóŠ(u3*¹ìp^±}Åu4íÄ‹<íD°pŒ#ZNú*d÷Ô"í¨f¢‚/~V-ûHÅAÿr\«Oì~I¬ç*OOAGŸCÞ¾¡zuS
ð±d;Ö , ëC,7bí„t»mßõߟÂõ.–O¨ûSÆõ ?Ú'±,‚"r:_xÝ&úY±˜ÃÀá¨+ˆÞ8íT†9}E£Zæ<”ö!õã™”|ó	·~Ä«/ûîöžÜ<Íd-P>x¤k]Pþ_‚â.\›„9~.ôâÒð7ë <=1nò=½
“ëÀå}ªêºé!PÇ‚ãHÞ®ÅèDÞ”ôÕa«˜.—(BYæd%Ää gªlhŒ´z>ÌÞFÀÆ3e¸x÷‰~E„ŠíJ†’­ WËûODËزÕ{–4yÂ}—OÆ)øXÎ=…QtÛ‡÷Û¾ÔsòPö]¨°L¿"tÅvÙawL9m—–©–ÁfgĬÐʈâxŽ(E‘]×÷tö¢¡²:Ó+)ȐŽ½¢³DÞ”ô•ÔÓã­eV*1‘bšLÕ2xÍ,LÌ¡š0Qˆ.%«]x:'&tÑDUÏÚbIà’Ò"õô°
+<gÄW§ø†û§2äKÈ…$ñ!µÎv7‰ã¨Å?΍<Î}ô7Î|BÄ|¿=à0Ï6¥§á­h[}Ö›„CmåÅÞTП÷¦D”ÎÕ³–çÐMä¨kB"ZFçÙ¬†æsÿšê†»4l¡ª„†-FŒz;¼ß†»#Yo¨úr|$<i~˜%wÝ!,~ƒNZu(éÞþ4Ô¿â“a*†\ó¨˜âç]ð`
¹‰+€Ç}ÊïT.u‘ùÀ¾œãP! ÕU žQ¹\sy;„2¯Ï;ð.•Jxo¨(y(ûm·oÞ=WÃ0<ý­Ü|H[
”?R0Ø—\È’T©kÏc¾Oú;$H b*â?P"KÛ§º¸½ƒ¾ª›+v?漧‡9 S-—‹@°<§NÙN±MÇ%ÃÎéêÓxn@"äl#cùžSŒÛ„e79©¹®Ä½ð!öôø?‘>RÇcñÅzˆ_,¦!ÿ½ôH/´ÕnÌô!
a¦£Þ®è>üâ9ºvþǯèúþ¡üb³žú·†iî̘–µ¶–™„©›’œ"tÚ™ Rש–(ðÛ.8Ò6µ=(¼¾!~…)b0\¶ñcqŠ¯}¼Æl%ÃJo_‰áÙßáòæ5ÃQCF•)T´1ua(ðwP›Œ•q¾ÞJô+ê¨ù¢Fþ¦Ë»Â7öu
¨=,Q|Ö@ƒ$‰jM# E´ÛܝŽ”V§ÐN2ßr}±:ýš_âÔ½Z8=SD
+74£ÚïæNI÷ËSUžjÉZÁý²†2ÕŠpà„¬uNŽ…ëÓON»Ùc”2ºwLh;ÿÕm®
+¢º™ñ‚mNˆÎÅOãïTУf ÿ<Qº[endstream
+endobj
+304 0 obj <<
+/Type /Page
+/Contents 305 0 R
+/Resources 303 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 237 0 R
+/Annots [ 307 0 R 308 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 318 0 R 319 0 R ]
+>> endobj
+307 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [132.3327 622.7909 161.4931 634.6514]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+308 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [414.726 610.8357 450.0432 622.6962]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+310 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [219.6728 508.2807 248.8332 520.1412]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+311 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [268.4819 508.2807 303.7992 520.1412]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+312 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [390.3215 508.2807 419.4819 520.1412]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+313 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 496.3255 108.7305 508.186]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+314 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 484.9283 100.1426 495.7676]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://scipy.org)>>
+>> endobj
+318 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [324.6699 428.3346 360.0704 438.2891]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/)>>
+>> endobj
+319 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [382.9052 428.3346 454.0182 438.2891]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/rst.html)>>
+>> endobj
+306 0 obj <<
+/D [304 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+144 0 obj <<
+/D [304 0 R /XYZ 74.4095 564.5693 null]
+>> endobj
+78 0 obj <<
+/D [304 0 R /XYZ 74.4095 564.5693 null]
+>> endobj
+309 0 obj <<
+/D [304 0 R /XYZ 74.4095 520.9398 null]
+>> endobj
+303 0 obj <<
+/Font << /F14 193 0 R /F8 95 0 R /F56 126 0 R /F44 92 0 R /F51 119 0 R /F67 317 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+316 0 obj <<
+/Length1 1213
+/Length2 5760
+/Length3 532
+/Length 6525      
+/Filter /FlateDecode
+>>
+stream
+xÚí”g\“k“Æé ˆÒ{I@¤·Ð‹tP”Þ‹”ÐAADéÒ;D:z éM:‚ô.Ò{D²9çÝ÷èžý¸ûi›|Éfžk®{æ~ÂÔ3T¶GØA5n(AQ!QY€ª¶@TH„”‹K	£`750
+*•‘(£ €¨¤¬˜Œ¬„)@áî‹„9:¡ <ª¼I”]¡HìУœ ®X
0D@`P”¯@üù„'À ê	EzAí…HEEö0
+`u„¹‘
+ÿéGÓ͐úWØíþï”é‰5àÁšä`-Ú#Üྠ{¨©°ÛŠuò¿aêŸâh8\ìú§<vFÿ-v…Á}ÿ3puG£ H€6Štûg©)ô_Ö´¡ö0´ë?³š(0Qvs„C"ÿ
+Á<5`>P{=
+âp Ã=¡Å¡nöÿ4Û_„´MÔ´ÍøÿÚæ_)=0Ì
eäëþ·èŸµ±è/ÆÎ	óXŠ‰ˆˆb±ßÿ²úG+u7Â憽’ 0	ö%ÅÞ,I üE07{¨ êƒõ+,ä†@a`Gp@ Iÿ\¦¸@ØÉ×Ý	êögü_!I€°;vIû_!i€°‰ø#Ü ³„@åý+/!Še'$ô·
+l#O¨×o}$¤ Ân°ßE°] 8âW‰$¶Dõaój“¶Åý¿IZ lø‹Ä±“ÿEØÖÆö
+ƒVÓîaù›DE°§²ÿ
±¡¿! ìðb»À~C¬0ü7Ä*»þBQ¬²ÛoˆUFü†XûÈßðÏÑý†Øý ~Cìyпû¯ ìób•}ÿÂÿ~CUT>þ‚b2 Av¢"b’ )	‘ÀÿRA#‘P7Ô_/?öžÿ›`Ø·
+õBHg&¹Pçäš°â õüáB>\ÇÚXªcÍdϦãpá}<øæ+ÍÎKÓ¨o­®³{_0{F6èh|
öˆM™¸Z÷²]Oó«g6;JÓö]sç8}¶s»±füxWWwt¾¿øµ9¦+ó {'WGÍhƒø§ÍÒë}[z¨¤”™FÜ8üyå]1 EŠGq„xøœ7Åëx‚¹¡gAÎá$uü³‡ˆ&4Õy>INÂÕãSÚJH»˜Á2Á†ân&œâvÅugï;¥t€£!°Nø™Ä OóYuØ»L?&u›‘úAõm¯¯õMfÀK.I«ù‚U1~'ÌÃé7"ñùˆòß!³†Ë±5ÖË1šz&[cÚ)Þ}@'᥉„|¦¤%Íü&×1ƒŽÈWtìô‚\ú,ŽdÌÀù	>âÝYUœc<ë´€¹ýÙÜÂ⨓º™Ø¦—A´XùèV×@,é
!ãlWV¹[éµôbæ‹Û¶	gaR~IDd‡|¹Õ\Ù…ÊW„¬A-ÆENsÊ4U÷ þ݈ôöBÎ~%Ú‹‡Å¤›žÛ4óÔÒÅCäQ?¡¥{—iöŠÚžlB,iô/8bŽ•é8IÝ;d>'yáñU1?Î0KÛºñèF@¿\CªÍƒ<asŽÒ_Çÿ~hB=[bV±`Jº¤Bóg%N_jPÍj…þ	pº¦¤JÖV(¨Þ5¹ïb"ÎÀÖ w5kzà»=('¦‹~´éþ¶Ù\ z(õÒ¨¨zö´?>dÉù
ýÒÕØ™ê.Kü—ß5å"²´ÛdÅÔSõ/‹¦–g
+(˜Jq»3çãÀ:Àþ‰4“‡ì”	d¬Ém>t½–Ì—éɲŒÌbŸädhËiû·$^óíŽãè¸|•Šu¸D2{£„ :¾Míõ¯¼àÍñ]à#wÅHŠ,8|×?!ÜSþ]£USÈ Ÿñ[½f©UèÛT21ñ‡J2'Q—?¦'ŸäÔåL‡þøf¤f¬§œÍÉ7Ç÷Tíðï€[Wqr²¹M\P¶ˆ¦±…
+Ôšºž+(0B‘Ë_§Z¥`
³à˜[II
À
+
+μ²9a‚sïtsñKú’‚•A.§ˆOwk=šÈŒhÑQÕÁ˜–èˆ-Ç5™‚\þ{@nñIZ	“êMÿª7Õ„jñ–WL¦ñœ°~kÜ=º÷v†‡‡x¢õWž$YyÙå…ÆÞiíxXÈSùÑ"\A÷E˜³¬˜'RŒš3Ýý´hFånqW±Œš-´I[¹ä:PÖù­»(F©ùèó݉VÄ ÞgŘ?vvšÑr˜Æ®p‹#™›4õæºCŠ.÷÷Yí%ǼZ=ÞZ#Ž)èXMnœÍ3-ÎÅÉ‘?<?F²4t?Ròxk°Fé½Ò¶bïÕ|–ûð³Žb5½< ¡ßáV:·?h³‚›ýãXE”ÎñÕO…a·¡àoø郞\×*œ®E–ï³$Ÿ6)V®£ÓÙ_Cl·–?QYù‹ª2©Ù®ËÚ‘a2¿Š¹ï'{_õ‹Å}Ò¢¡9:‹™€5ÀÏ àÞ@XÝàvqÂpÛ®·úª-’Ÿ^.Z ‚,
+.×Ãp”J[_Û
+wÖr>°¸Û1zãªâÝí_äæÌš±ÏÒ‚íT¼é0X	ÅØ7R=0ütÖÐùÚ}Áq ”]këD?0qz™è0罨ϓ{"„¥)“p¥;~¸ê‹ß>=dî\§|„Yt²öh$Í…·ì#xD®â‘ãôNL³)ßAÏMŒlˆ¢ídn‹åËE…_,˜¬¾õÕDÝzËʲîéöpZWÒÇA`Æ„àþO)Q¦áˆž¹ç‚wrÉÅ;1á{ݼq>¾ˆ¶Š}¯í¦ó‰{wƽS
+$›Nî;½ÄÞ@ݯR¨oË»¹z,?ՐK,XÊwˆYÍÞ63œ«è@!½ŠUúÈ`)+Yƒè0©
ë‚R'ÒåçáE†f5e4)
+JL·’O/¿Êú§¦™Ç¥t4EM›Ñî>~2w;Óáߧœ¨Iƒ5A¢…^páÉ`qŒýÁAdÍéì—4æwª™·ÎÔ"xå
õM	yKWñìD á¤Uá2·+M&ôôÓðEБì%Ååé>¬+f‡UøÙ¼Ùœ.‰ê$¶CQ@Šë
+k׶,Ê4“®¹¢>a.GhŒwÑæÏ€&n
+· Ž.Zï˜ìÏk܆,éφ˜9ê¦?zK~Êÿ
+³[­ˆÆgÕ<+ê3ÖÅì$³®S:·£.®bÊ%5YóÐðWêêÉü2‘¾{‡¹›1ʦx
a³³¥{Vï.<ã9WI‚q{}
+Sƒªs|Xýð +ÎTÄO¬è¥>°“gç,zn’tv¡¿ß ¿bâbÕyÚâú`Â]x7ŸïêË1ñIÂbÃe28Å:œÍÿ¬ô¢áƒÃ;Ä1Nj×üR…ñÛÒLYÊlNFýâmËÓïA¢y©"CÌ*ÕÇÎ~Ê^¾Ûy‡ú‹õˆÈÞ¨4ÍÝÄËÛê»Ó)¦48dc	.…/‰eBOÖÞRï$Y¹¾¼¹Azç"m—œ’œDd-2f8c³>±¤)ò¥\—
‘¨ÑRá?ÆÝ´Þ©µ@l›ʯ6³_Ž[;¼^:|Ž‹‹+“ªILÏ×Sâ̾Ï«Ô•,îåg]¯Ñ>àߥ_—Oª»×Wí$Z3eÑÜnK‚tÝ3áž\ùú’Ž2˜ÊjÙI‹ÐË]Ê
+èPºïœ‹À¤1ëÏõ[ØQ5à
¼¡Šôå1<M^²¼qkî’u6«l8ˆÍö:Õ[[î³kæó¤,Nû…=_0ç¿Iµb{¸Ë¿9©¿|È#*O¡xød†J6?/{TvÁððPõxšäXâó£„f.$%ða×E®îá€Éµplˆû×Þ)îÃ’=t*~µÖ¯‚ö^~ÕOü謷Wê¼—6áÝõ$u5˜E [|QÁ¿©6ûë[òŠŽä‰ÏRgjmex¤š¬Ò@ØœD4‡†žÐ9–é$8ø6j¼ïõ8öÏ¥¯O¦ŸÏÄ	ùëž®&‘"R<d÷Ù<aöA Š¥YG‹0Ït¹$T“Ö¥FåÌýg<j‘ÛÌqÜNeoº `*²Ww­ÅIÎhXÓ6±hÊæŒÇ•`ŒnáúY¸}üñ~ù¨°CèÕcfuÞwÓ‘–Þ3(b/	1wü-q"¾s[Ê›qyß9æ—Õ³á…
+DGÏäÙy{bŽ8’ÃìMÈðø‰ìE}š`Í__Èò†‚¬ñ®á}ÅÍÐÒIÝy§Òj“ël:#KÈûO›~@Ü`ÞèP‡ý0|MÇáuÊÅŒ“¹Cðr0[—€êñ”µ;SrµÄ'ý}øLŽ&Ü>Ü5][¦ð¹¤}³ð÷eɽÇŠ
§·Â·f¾.”…Ù>žêôæe<–vf ø<°R¤zöª·Ü˜Âi6V˜bÛ¹„O’Ž{AøPœ¦ˆMæ;U¾•Ç ,ÛBýà"” ©o!Ç-¹P‡‘Ýl‡>µ¾ñiHð“3+å…ÑÀµ‚7!/«hÜ%é®"'çâk<éŒQc dfÎg¦5vKµ{07žVjcð~¡á컩]™°üFXb˜®—0·~¥g}Òݾv!øa»^":ø ÜÏ(³•YBþËãéªÛ›N…ò¢åÏãç]Xˆ¨EÇ8"&
+׌⦽¿
·r2ö%Ú?¼;ƒG¶ DMqó¡Ò”þ†ËºDyã^ÏM¹õ¦º¡Ú)ÎáùÖÙÅq¥#­ðªÓUËö=Ûrí»xÓ^:Ý11ï—D3|¥ø Ì‰ó’#Ý×›io–,©ÝøLŒ^= j‡ŸjÉ”ÜÜMa;=cÙàLV£÷jîSÍÃé·	Z]Ü—,Öf¸éçronÖöØ %±ô’É»îÓ6½s?`?'¶64Zþâ›læˉ%‘ÁŒHT3š£Ýìöá5a;îÓ€-í­¨Á;S›­ HV)OËþ“…/£¼o
¡§ò¤PzRºø¯í£h7ü–Æj·ªû'C†<–Å×$NÍõÇœÅjè0&Ï=ÈÝÅ"Ò¨lòÐÇ0&SkuTüS”¹¯Žn+Y½Ø4Í.=€LÌv¯Cþf–1u÷7MŒ7L‚óÚmˆ;Öý’YÁ`¾Î	á-LÒ6{úö=?®5f$àåªkµà
+Ùõ^S{¯°ISžS\ƒ?¡n¨ñäd[^yumU öñœÆ:p™n,îÉzýLLˆ{"õn¸Ù®•¥ðÕúõàØ–}§&‹äòX Cvß|ɬóEW; çUí^:{*ÏðÙ÷ioñŽpö.JO…q®<ô˜çŒ†}ØOš61Á¼èÛ^å!,¦?ȽU§†n墙Bš±~¥ê‹Òç2›PXž¿çèqÛpU>5XÿÑkiæSU_$až×kaàLÜ-Îé“莨³ÖúvK¢~°¤Ä\iSúð.’—ý8믆]?âH›P^ºpõ‹ÕAï%
¼§
+†¨‚%&d£tž#àWFo½ÛÔ—ÒúÄÇκƒ/èk;‹~âé;/eÛÿÒ+®BËœ¸ºsô	\Lò½6áé>ùšþp‰cs4mZ<[¢Õ.Á3ÚTWǏI¸Ù ùƒ'½§9Š¡$«¶_Ý®÷¥¬V¥§ìØnV™[éd0¹¼–ÊG‘Ü㪍J[™  hž]£™‹f£O&çÒñ¥{+˜¿VÕ	ÄMéž+S‰ôë?fyvmAìi³<Ûq÷gÓ«ÏS;“ÂAŠ¡”ÜÓ¹]Lp=#ŠçØöÑûS‡ëøìµÈÈÛnþ?¬Zž=[;Ûð=kq>™"®Ñ+›'6TÚùA	9ú(vÿä…mÖrîÀèçq3:±iœó
¢lrÀû3©ï+ágž@²$Ç¡,DqÈþjýÙ\Ã}œUÊ^‚…f>½ÁIם¦+Üš…dÑøj^Â;¾°8Ùž#Kç—ËãÔ}ÂQSÏ»èeœ{Åb‚H'¡·^ËÁSë»ÖL?YZ\ûî>Ùið‡Ô˜=-ãÍîhsº”î+鯟SLxÌ´W¦ëFË´÷çÛdúYvÍâ\'û
+¥CoSŒ{i¶½˜2}P¥p€BŒ«{©û0(TÓ¥&=b¼zwLl²Y>dW'P³LÓ&"ÈüaPߝ…Kaâ},u<a>«ÎL¶3\ ã†Âãú\Ðñ¾¥ÆÂ4c;²0A®”9w7ã™Bù×ÖÔ™;wø¹6ø]dìÞó>YÏwrf;Ò8Ú\#ßʪ“WÂ}ÒæÏ?]#ò®
+g¬i®~Ìõè[ˆIg/âë…珘¡Ë:N £½t9çÃIyRktZîf}Â_2AKÄa«yɝ#Ÿ‰È«çq•®úNæL¶ø«vAý—•
FÖ©g¥?î—ºîþ3—ýØ&·æ
Ä,õ¿ȳTm{‰OÜýšþãËŽ¤ú!„cäÀB[k½ðx%ÔTñ²^Q²O½÷¦rŸÒ8dæ'‰¼¯I¨ VìQ[fÞ3‡SKÍÙì¶6¼¥£ÉÆé¤ÌîŽ.ñ÷Í)ZóªU€íYWÖ° QêasQå‘ÁJ“3€Â¼xD
+&@#VöaìÏ…¨·?®ŠY¶±•lÜ­ù>>¨1Š3£n-öpId©÷õ|ÚòÉð’¿ßQä>Ïٍ’ ÊZj‚{žÚó‹IñÚHó²DI';¢är‚"#Û­0È"nÀjXÇðSŸðÆÝ~¿+óì,…Û†B”
á¦fµ6ps zV‹¸jÑôÒ_¾lŠGÅ÷¾YL¹cyýÑ¥ïC“Yôm&²£ÚÆ¥—Ilz?%3®éŠCþ}ž
àñÛ"Ò‹•Ée+¶#ýñýçþ{_’t2è3M>á[¨û»Œß¥%&<”GÆ+3ÑzÑÀkP»ý
*a@m+Î|N±ò¬y§Pk8öÈhŠóOa—j•ï5÷· ø0ò	{f®ì^‹‘MÆP̆À\@DËáMZ]k#cPçaÓb}-ߪjžµaeüŽàÂP&Ô®º³‡Úø Ý©g³µÏöTÎd\Òî(g8Žø'õ‰ßÐQ³RvŠNñÛz«^MK·#¡2òèCГEšKí+·¿ñr%°+“÷iJÁѱ£…¶qwÒ»XÇÁ79$=L¾\xŸO®ÄQ)v(P±žMîMÄ'—ÇÐÉ):‘Y†â3r¾ Ã_fÅH½í DåP-µ–fÿ¨ ÅÐ;ûW˶QGb"åéܬ•zÚVýÌpE‚žÖ­Y¹|Á öÞi`â#Š¬ÞÙ偼¸.ÛaLáÕˆw”*n8”aȬzP#cwf(AsYðò“ÌWHfö¶Ü2^2P®>aÆ#°¥Üõüè;úèY#GÛÛÌZš”Bd ÂF V6¾€kMeñ‚²¸U›…U|{ü¸IüÏl]¶¿1ïé}DeýÓÇx¾{Cê”…ìði¥É²*:)F g¨øyŽ{…ìIÚÍÒ¾»]ÚÕ_î¶ÚÒ0ŒVŠàkjŽO¡²J¯”|?G½NObq5­wäNÑÉŒî•Ý}Ä•cÄXßwÎ'ât4Òçî~ä·µü½QýÞŠÊ99k¥ú‡[¼ZÔFåÑ£ýÇŸ)õ®w›iW][ÉùS8«J2{©×ÞŸÝÛÚÈ
”¬”ÑûÉÁí	`b¿Í\zýÍŸ&L·çf“.˜Š$¨l†îÀd´€„´žëG3i^E {yõth뒏¹Eâ¸0¯²íúq,¬™‡Ùí£‹÷‡ƒ{ß[@ê8-6]’‰nê´úUõ¡ë·Ã¥÷.oV‹žì´ÏÄe¾× %_‹?ԝ̾6}Ñ ¾…ãÿ9¯YwF.sqa^0‚Ã{ÛY¥ÛH±•—d˜éµ¦»ó©®[UÏ ‡=€g€Ø€Üp–í‰u¤ºUºb$³t¿ŽØðð¶ç§T„å?ˆ>¼®ªLß 6ΖÌSO<¿‘Yé6„sQŒ Ç¼:ôÛ3^&øj´ºØÊÉÙmlcæao6Ž™«ûߍ~w:z$ïhªZÚUtkl±ÂJÅ©ߌAM$±WµFçb0r×·Ràõö‘ž~VØ‹­ƒ'H»V8»€ÊãrÞíïӤǶFë÷Ñ$›~´$—ß»ÑQ|dWè7d62àSÁ:ëÕm¥ðŠ]%¡ƒ³Â/áºT6ל|A‹žßbZ@³ˆ$|ÂÓ„„d}±‘%Ñòûé›
^ð‰Æq±žK]ÞÕK&èžXîäÄ4·"j]°\+䃨N›ŸÞðÝék&†]Ú—ÇEVšus
µµÀ)5¸¦¬¶Åò‹\ Éu °1QrZ÷2W ݾ–_)1XµØWð…]¬‘À ËÀ[ïÛæ´h1Ÿ¯ï)·jÎÁ²!þJ[§RæFn3ÿÈ°š|™à1ÿ]ÓûQ笧4se‹‚56=0¨|U¸šÛáGö«‡êm"ÿÃéÿüŸ€À¡`$
+á
+Fºþ%L0Ÿendstream
+endobj
+317 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 320 0 R
+/FirstChar 45
+/LastChar 121
+/Widths 321 0 R
+/BaseFont /TMVDMX+CMR9
+/FontDescriptor 315 0 R
+>> endobj
+315 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName /TMVDMX+CMR9
+/ItalicAngle 0
+/StemV 74
+/XHeight 431
+/FontBBox [-39 -250 1036 750]
+/Flags 4
+/CharSet (/hyphen/period/zero/one/two/three/seven/nine/colon/C/D/G/S/T/U/a/b/c/d/e/f/i/l/m/n/o/r/s/t/u/x/y)
+/FontFile 316 0 R
+>> endobj
+321 0 obj
+[343 285 0 514 514 514 514 0 0 0 514 0 514 285 0 0 0 0 0 0 0 0 742 785 0 0 806 0 0 0 0 0 0 0 0 0 0 0 571 742 771 0 0 0 0 0 0 0 0 0 0 0 514 571 457 571 457 314 0 0 285 0 0 285 856 571 514 0 0 402 405 400 571 0 0 542 542 ]
+endobj
+320 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 48/zero/one/two/three 52/.notdef 55/seven 56/.notdef 57/nine/colon 59/.notdef 67/C/D 69/.notdef 71/G 72/.notdef 83/S/T/U 86/.notdef 97/a/b/c/d/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o 112/.notdef 114/r/s/t/u 118/.notdef 120/x/y 122/.notdef]
+>> endobj
+192 0 obj <<
+/Length1 750
+/Length2 576
+/Length3 532
+/Length 1110      
+/Filter /FlateDecode
+>>
+stream
+xÚSUÖuLÉOJuËÏ+Ñ5Ô3´Rpö
Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥r‘g^Z¾‚9D8¥´ &U–ZTt”‚Бš
+@'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<8”0äs3s*¡*òsJKR‹|óSR‹òЕ†§B盚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l
+‘È,vˬHM	È,IÎPHKÌ)N‹§æ¥ ;|`‡èºúGEhCã,˜™WRYª`€P
æ"øÀP*ʬPˆ6Ð300*B+Í2×¼äü”̼t#S3…Ä¢¢ÄJ.`
+òLª
2óRR+R+€.Ö×ËË/jQ M­BZ~(ZÉI?	´©% q.L89åWTëY*èZš
644S077­EQ˜\ZT”šWN+Àà€ñÓ2A˜šZ‘šÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ—7ÙD쨛™Rl:/P1½dÉ«…¶öϾ(á•l=U¸h‹d¯_OÜ—EÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y.›1§õ‘´Õþ¢Ç³:•un~Q®?Á3/å…SÔâ}ßï]ãÒ
+š¤¥$e~sû]F1ñÊ»Ï/ËÚQ?ý¸mò»³·|<ċݺÔ/¦Ùq'}Iüö„+6­ìâEíÀgŽ¯¼xT.‘òGÀ¿gtÅÙ¥vՏG‚—U|íª“®¾~ª€]üRÇëÞ…_kü9¹öË:½{ápËñGúý
îûd}dN<6Îø-uBÛošHºÁ=c¦MÏvHžÎzºq½aûÿìRKë~,KÌž³}Š¬Ë›ªÂå»m¿‡Š÷Öêyo›ù~ÉîÃÜ×v‹
+Û_¹éÜÿs>§ß¶.#ßҭߦíÈè{­/þô­É™kÜ—<nÈeà‘œ[»«×?Ñí[ïÁ§÷º˜ÞâdÚe€‹ãHð1Îcê+öÍ“_èeÍäž7aՍ-<Ì
{fýß_áþZ#MzîáUü.G?=¨=ãûp®Yõ'åǶ‡/¨Tñå}[}âWè:‡)ïÓ»ÚÕÎÖ0Ê3íÿ±:oÝ;K©æBÊû.l½ñcc«yEá2ÿ
+óî-ÆŒž×¦ÈWµýþdöä“Ž¡_Õ~Ò+	”áš”iïsûs‹`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØad­j|ïǝéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ Œr›endstream
+endobj
+193 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 322 0 R
+/FirstChar 15
+/LastChar 15
+/Widths 323 0 R
+/BaseFont /QEOZRX+CMSY10
+/FontDescriptor 191 0 R
+>> endobj
+191 0 obj <<
+/Ascent 750
+/CapHeight 683
+/Descent -194
+/FontName /QEOZRX+CMSY10
+/ItalicAngle -14.035
+/StemV 85
+/XHeight 431
+/FontBBox [-29 -960 1116 775]
+/Flags 4
+/CharSet (/bullet)
+/FontFile 192 0 R
+>> endobj
+323 0 obj
+[500 ]
+endobj
+322 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 15/bullet 16/.notdef]
+>> endobj
+153 0 obj <<
+/Length1 884
+/Length2 3123
+/Length3 532
+/Length 3745      
+/Filter /FlateDecode
+>>
+stream
+xÚí–WXSÛ¶Ç)ºE)Kª‚iH¨ŠJéÒ7U
É
+„’@])RA:(‚‚¨ô*¨("]&A¤l@Bép£ûìo{=÷>ï¬µæoÌÿó¿Æ˜Sú¨±ôŽä j“ˆ(†TІæºH€„!šii4ÄP$âyTªª
+€6è@Ð?5”’R	"
 Iî~d‚£8†>þC¤œsÉ,†b(N =ã
+˜‘°âιº¦?Vx¦ 'Höq0	àX
+à :ˆøOºD<	Pþ+Œórÿ{Ê${ÒMÇ~Ú<ÐMâHDW? â!p#}7îåÿÃÖïɵ½\]0n?Òÿ¬Ô¿ÍcÜ®~ÿRÜܽ( 0$á@2ñwéà_æAÁËí÷Y]
+Æ•€=Gtt(R†Pü+NðÔ&ø‚8cëà1®žàÏ8HÄýî„^¿Ÿ>à6f&ÖúçäÿÕÚŸ“Æ‘bîçˆÔ?ùÓ‹D&ø¶z•‘t!ýý{dÿÛfZD,	G :
+(% C&cü ôCD'€D耾tÇp‘D¡/蕹àIdȏ¾Ò[Çüý$$Àq¿ €ƒ¿àI îø¢ 8á¤ÿ!œø*pò/H{þ‚J œòÒmxýÄ/¥¦&É7 ŠT:	@Pˆ‰• U%ÕkÿK‰õ"“A"åçy¥wäoÆèMA_¡ö‘°ê¡ÎÉ7Ÿ\×ÊîÌg9î)’šÚö*¬,U63¤~ ‡\ÙaŠ-ñ…ñ9žò&Íê?‡ãð¨áŠsWÌàaý|\dzÒÌØæ±3v—˜šî¿Ëã–9Iw¯”Ÿ\ö~ÅRh0T~(<µïɧ¾åë.í#TŽœäDÄþ~A"h95ÛºI»@Ê&Q5´K[åߥ
+¿ýÒå2È•ªzë¾!soêémvÄq_üh;yÏEœj•©ª³WT6ÉsÖìÝgœÚoÄ¥œ›ëQÏ+êÜå̯s”¦„fˤ4?5/óÙ·wö<k\—ÅçïË~­w¤•6ziÿ*}§õ03óT÷B¶]m3†£Ÿ7ÕÂíë°(UØìQ¦D÷dµž9Û*~ÉQX>XèAÿ.bcÁvAhµ¼¢Ï–4Çjž¨	añjú55cŸ¶aŠÿ».å·û7orðÁ,>(gë¿…;hA-\ÌÔ弃®ºt6˜W-"$ÕuQ¹þÞF2”ò'íB(Ù¿Ž#]O­{@Dâ%s2°j.±$×rÉ°Ýpcûcø#|å^”¡eÈÕ÷¾â¯âõ¾uæCX–?ø¦Žüb¨Ù'¡gš›uLîà>&Ñ&ú´òNQÎ4dÜ*W&ÎtÅ\¤gZšÙkxҍC8îNúǧ2ÏCf€LX£1ßCœ
+?ܼ}
“6ûU£åKÍÒæÓc¶Ð×í)Aiwš·ïòerÝÔºêþ¬ÈrfƒGÊ°îQMÅ¨=„5í0.z}
ˆ[Î
+ƒÌÖÂ
+ÊuwEMößTN}?YÞÛwIÄ*æß”l+±O´C7%H¡:ó³©,—×÷/Õ7…g¿#ÔPc˜Ü Ö_]žl¼0ØÕ}ò<jˆô¾Ëb=_ Š/ʍuÒø(ž“F³ »J&B[wÂ\>óŒÿ¤ÊJI=8]Ȳ½Ê9q 5Z³•fZà÷»À!ŠUu¸p(-áˆIn~¡*›*|]õ¤©Ï¼D":—¤ò&¨)®õ.±ó”åkκ·æž|×O|¼•Sù¹Y+¸ )]Þè{9y­72ÔË…ÕN­ÿ‘·‘Õ®Ú~ĵ‚V爚uÆ–ðÊ»m9œ½#%¨ŸÿÞE^*`[·©üðf*µny.!_a¬!&:0HÝ^šÑmöI¸X_Ê?<2*‰ëûmNŽB÷&ÕƒÄûjm¸ÏË;íjAuOc¯iN ûØ,\_ÙÄFV¹‰N:-]£<æ_~º"!–T®9³j”ñA!À2¸`â{m}”ìcÔØ¡Œ7IêÙií³1œWšÎDxn½ffbd·l r—×i‹>³«+½¦'¬C³c–asåîérU	Ž8ñ»}ÚË(˜ìk¹"+LÇL²PÉh›R ŒßetÞx„šÞ4Ù§Øý¬J5瞎ڀ¼ª91ʱH#“ÑÛ™_"}À:²¿áƒl–GäÅð˜jÙ~|Óc|Š;äÍö¾6UA¦6‰Ö{œ6±±Š%
+fŸ¦]’Óƒmè¶Øýî¶àBÂ:S1z¡¨O¸ªÂã½æ_39YR:¾lÞÑÙªgfF“wì!ï*½Ìxß oµhÍt´P—*>yˆºÿ+íÞÕ¡ñÇ%y>Û%ºB|WòП®ÝIÕlûî}ª6>æe!ãw‘®'’‡o³©×$Ÿå•È ZžËÈW´”É:¦ýŠV‰rÝiæ£9>—/kùFÕúsäPÕ1F͇§§,lÙ[møéš$g·ë6²6߬›ÜªñŠ3„OKB>·ÜÊÔG®ðå
MY/Aù–ÆQ:¶œl‹WddŽ0wï…W&—ñmǼ?]=eáQQ1Éí_èÝ%”ËUv¶É¬=,Ê:(‡­ UóH´ùØ­Ûû_To¤M¨ÒÚ4¶iVr_Y‡zf3íh…®—v .¶Æºbÿ·Œ+î–aiýÍ[˽%¾­ŽcPS¯‚¬yÕ“’ŠcS§ûãûW‹‡ûjÎ21qJš¸&¡õPÒÕvT39h‰Q£'¨òy!4®Rkh’gÆûî¡àv•ÙbÔttª…$u¾v®SҲ󣁱w’cL0n1Aþ/Åè5ÍEÍVÚR¿Qœ1±=2H„ºj)7ò8{$I,Y:4<d¿º€î­ds۝æ9xw+1b¬XäB|ÞÍÉsŠæwŠ*s俍j¥³Ü`hš­Œ9(Ÿm“£EŸ1Ü_w~ðP#¿pªV¬÷Ž½a¿ŒÒ``ž¥ñeý ‰¬é¿|ü€“XŸyå
êZˆLgùÂØš™EPN×ïÙW&)òQMÅ-ö[
+÷GQ}µO¶\
+·Ï &oðwת;\UµäÁ
Èè¼—Cÿ9Ÿ†0}	4ã¾²là–z2°!ÊÓáÄ Ö:w õcæ,¤ÂØ*åpèW@Zk FþŒµ»×ÝÒö*áÚ³Æ׎o? }¸œTµÖ#ºÚ¤ä}PÚ]=5zŠÃÂ2¥ü[Nõm{'7|øÔâ1+Âuð±Ïàä…3ÒÝzáu:¹¨J¡Í°)Sýã:“Ý µìÅŒÑR%Þ®5ÙƒßVÒÀÐ\›Ï£Å'5ºëêëz}ÆbU å$Ù…Šx“Ãï=jG=êD6ãFÝGر˜ÚÆ”ìëåã74Õ!y¼ B´íïä~'CD'ãÖ Ô®j}Z‚ý†IGºœU§ÞJL|Í”¿ÿĸ®ÙLÐ\ÐʸùƒSä†ÎäKKÑþ{'”¬*Uüý¡‹€Ð×üÛ™Ú
®…œ[A—¢·-<©ÕºûCÊ5/å%—;õó×X™÷f&†×ïæTnL‹ç´¨Uºcãª-dêˇdÇ‹p_kKs,ëÇG[ÓütkšÂQþ—Ž¤X²DÕÛè	—Ùäfd¬v
+Î ãU”®¹i#Ô\"ºç³5Ê'Ÿ.@A/9o®-¶ÎÍN<ï|çs¡¦éÞ¼f:À)ÿj,÷ø‰"éÞÄb֏oL½,ƒ÷VÄFîYÁâ¼_Xf
+#OÀ3ŒÕG»F,O+­~|Èúj,éä‹>Àd¼®Þ¹b‚†*i	xqNlß<:\H½%:­OzáúäÛiZã“Æ"Þc‚¼™Þî.¡rçøŽrʵ1Í;°›NlŽº#u9³ÑÀÛºåªß'»™¢êbk
+kqH¬Ô`þž˜`GÆ«ÝŠšÅÎ؃¾·u¼ônvúL-f7Âù“òîÙFRv|7Ñù›v¨8ünfˆh·l5ŸÅ(²*ºylMÏiÀqÿ9®.ncVŸîSÎ÷ðÎ[ˆ§fÈ}^¥ê·EWÝn”†™ÛÒ6»ëÂÌ–eägê`»÷U£ó*v%Ébi6äWÊæToÍ®ª‰cÕ
+vWSD	§{ªµ)|)î²Þ°éX¼^*¾}>dµÁ6XüM‰ŽJ•¦§š !\%¹Ô€}%#Qævúš ³ª'EÖ(òûÅ?…T™e¥×§H„Qfî•ÓõšsÊxŽ¸kW½Â‡¯ó'bì?kpIN–Ÿ©L=É°·³·57–/ø5cÏÚh+>ÔK!;ò<æht¢ýÑõÎ/¼–'Ê^ŽÌ‡™0¸m߶>*ÇÔ%£1x‘­ãi·çÌPέ¹žÁë6	"%­ÕŸÑŠ“‹ÙÂ#÷?#²x6WpùñN}ýýÊU½$±·jï™4;«Ì˜$¯};ä¾‘{۷׿ã}\<x7°»L7ÆËýlóEÇ`ÎgY8ÐEáTÉ™˜–­
Á^ë¤_ç¿Xó—ääNç~ws#óˆç¨ŒÊÎçM7u
ß;Øaæ¼,q+–Ñ?di¸—ǹ¹m¬ýY&;¬Î#Öö÷(~˜£ôÅÂuà®’?›öY¦½Ã[9ø=}†ò—NÞËz-ÀoËwyuÌ„!Q?ù¼áëuÜ<ýn Ñ£&ø4ÎÕ¼¹éu{L‹lÿ‡¬¬àÊÈZ·y‰ç[ʉ§ª(¿c9ó{ÿ$ýw{´9HÅ"×øMPÅ×Ró þgý—Ç\š2‘Žˆu7B¯(ë>>Îs2öm?Vbµü%–Å"¼ r‚ø?>ÿM👠ë
+bÈ’†ìù†)©
endstream
+endobj
+154 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 324 0 R
+/FirstChar 97
+/LastChar 117
+/Widths 325 0 R
+/BaseFont /ZSQYKA+CMTI10
+/FontDescriptor 152 0 R
+>> endobj
+152 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName /ZSQYKA+CMTI10
+/ItalicAngle -14.04
+/StemV 68
+/XHeight 431
+/FontBBox [-163 -250 1146 969]
+/Flags 4
+/CharSet (/a/d/e/g/i/n/r/s/t/u)
+/FontFile 153 0 R
+>> endobj
+325 0 obj
+[511 0 0 511 460 0 460 0 307 0 0 0 0 562 0 0 0 422 409 332 537 ]
+endobj
+324 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 97/a 98/.notdef 100/d/e 102/.notdef 103/g 104/.notdef 105/i 106/.notdef 110/n 111/.notdef 114/r/s/t/u 118/.notdef]
+>> endobj
+125 0 obj <<
+/Length1 2040
+/Length2 13177
+/Length3 532
+/Length 14314     
+/Filter /FlateDecode
+>>
+stream
+xÚí¹UXœÍ¶p$¸CpkÜÝÝÝ݃6îî®ÁÝÝ%wîî\îkï½’µÿËs®Îsh.³ê­9j΢ދ&'VR¥6µ7JØÛ¹Ð330ó DåÕÔ˜™ ÌLL"pää¢N@#K{;1# €™›› ìà`á 03ñ°±€~áÈ¢öžN–æ. *Qê&q„mN–&Fv y# -h
#€ª½‰%ÐÅ“ lcPùç	g€
+Ðèä4e€cf˜Zš¸ Œæ–vpŒÿ8IÛ™Ù8ÿ+lêêð?Cn@'g€ê_šÔ ¤©½'ÀhǨ`ʹü¿¡õ¿—pµ±Q0²ýgùUêÿ7²µ´ñüïö¶®.@'€¼½)ÐÉîOÕþ—œ<ÐÔÒÕöJ»ÙXšÛ™Û Lÿ²t–°ô š*Yº˜X \œ\ÿ
+íLÿ·¨rÿ2`ÔѐP” ýï¦þkPÉÈÒÎEÍÓáß«þ3û_Ìü‡Aåq²ô è2êËšúüÏ_úÿ+™¸‰½©¥9€…`äädä	:> bx3,íL  H˜‘ÁÎÞô T_€™½Ü?ee0‚†mŒlÿ‰ÿWˆ
Àèèjï45¶ùd0Ú¹ÚÿÓys»?a £©½‘ÓŸ'€Ñèd´sùã0Ù‚¢ÎF jýO”	4ÓÈ	hg4û3—ù¿£ÿuvþf-áꦥ³õŸ HÕÄÞÖÖèOäiáé`üãÈÆñ/!Kû¿2ƒmŒœ-þD@†^@'û?n £½ðßÌ’uqÿ3ÎÒt±pþ5dhfïú§ì ÚšYºý5¤ëêë¿$ëtûËÔCFà웤jgù·×?{¶±ÿë!î–±µüÏ(Hèèjô§‡ Aó.àG‚ð¥ùC Ô¢”WìrŠÿ›8AÅ‘øC Ì’”Uêj"ý‡@ùäþ(ŸüåSøC |Šÿ&.P>¥?Ê ò‡@Tÿ¨äj´[õ?Ê®ñ‡@Ù5ÿ(Ÿö¿‰´#c'#k ËœUnÖÇÿó´rƒ¹‚þ÷œœMìþôt2þ9«Ü ÿ!PF“3h‹¦á?Ýüÿ9k!ÈÃü/mÚâ/ÉXþ… m[ý… ›¿¤ñç.`][Œv!HÃþ/i8ü… 
Ç¿¤áôþsÚÿB†Ë_*ë_²rûAVîdåñ‚¬<ÿB•×_øßMþGë˜Y@vÆÝ[Ì,ìÿ=ïO+ÿï{]DÄÞÛž
@Ϻ9Y™AG‘É÷?¦™¸:./—½3Aï†ÿa3KЋô šÀ­.Ù›ð†X¥5‡Uø‰ÍTBÒ€‹˜·Ä+4ôÎwÁ¯$€Û”ŽÉ:ÒlÕk=Ue¢#B¹¿à9éôQž”ø蟾øvèfx˜éÕ†§õ;SÞóÀä>ø¹£yáæœ\qnk¼"Y»x0çrè¬@‰JLízƒ¬O×­±/+„ƒSK"ÓF=<´ž‚•X%ݱ"‚-|Ó%9ñãæt°ŸU8L+íú•}§+ÚSL~қأ	TT‹HîJË´x&=צž˜ùãf´>. ¬¡´‡‘Ü8«¦/£&j¡Ýnµã~­gæ‡j{]Ÿ'ØÂË.¬1Í$ÎÑ°ô·³æt•¢ÊÇ3ñ–jykç_ƒ¥B™XÊÄo°’³/€´Á:Åi”卨^ï²SÁ„M(Í¡X©3Ý–A-f€q¾~ºêMñ¤ßb}
+çH:>2¤‰øà"šohßXozN`ÞQ§Ó>É/;ôí_Sœ‘ﳓ?böúQM°ç܉Xû
+ŸZ!„lšPª¦”|¨<ù1BÏ•7KC|l™á™ëOV‘,ÉP€TãkۍˆZ9'ôj‡QBà÷Ì‹2·SÓW =vú¶¼WaŸáщÃéÀ¶Êƒ špàù]ññ…Ôs5P·»w™ÏÐMH;cbýñeþ'bÿ¢­Ù¥m=—8Éøé¥ÀÉi9w¥]ï*›GŸä:£Œïs‰ýÒ·0‡3E𭸱ço@_‹ïùÌh	šSU•Q%½ÕäTÁ–úÒ]‘DU¿Ž-3áö.B¿Œ“äb³fŒò­²;ˬ­y}2îC]Y(ÒÕ<˜iz—Â쳐¬Ç¾,Î#a<¶3)–{r3ìtöþ(%ti(xááÇ‚À^&®DÒÇq!*y³î1$‡› —íI“Ï.1sJ	W¹ýìù#ÌÐMãsØeîSž[èï[¿w•ð$€å–‚¼&ÚÑ«®j¡m™#±ó‡x¦iª•¶!^õÔŠFZÖ£U’d.GÖàyÓ/2W†Eµ#לYÅœ´»G§Ò•í®5?7¬ôXHññS¢Tµ¨M¦°0T9ý ‡sƒYs2…üµ0ÑÕõ‡—r¥ƒ‚HìÚ1 ¡S‰þbÈ…F9Õ}9*†Ø˶¶Ú—WïېÑU³PÕ& riù¸EãyÃû’ÐÓ¹.•äè]ú¾³.
}5;8)e¥´V ?ìkö‰T}ï7ÁœÚ®Ø€ˆÓøšÑù+¯“)De•“3ÄÏ\.¿;/*B‰ç§¿ÃËZ®Í}í8HU˜©úeãܼ6D§d´çâÀñ£d6~†ê7:ÜÌíæãæ6¡ûFçyÃyR;ä¶d„üúì†u·PúöÇÂÌ»'ž=1CD¸*Õ† Äåóf°¢V0|åoteE™?¤t'õ1/þF'@‚V{lô·fË›_F5—JéÃüÖr{Iö(?å4fZ¥ìÌ.Öz¶Wnˆ\ø
+?ßÉæ@©)àÖŠeŠ?u&@rÜ
+DlATœÐÇZÔò“.ܯ¤·î¤vyÞ…Ê…”ÑXÈ\6ön&+N—ý<gâòA_—°MI×6ÆUÝˆ•Ñ¾Û ˜m|ëôdùð¸&cgGë€_-Êû$Ám€eùy‰àh³µ·'
+|
+[Ž=À.A¸%Ó¶M}ÓÕ&öä;ª<KüÚë*Û•e¾ÛŸ%@'qJÛ÷›¨ºƒë_~k+ÂeÙg^]¸[óü[‰D6ø1þŽ¨–\jÐàŸº‘‘«^·cÞ\näÃWnÈ.yøNí	œèœƒhAsѺ&£
+¼Ù–SŸ\ümÝc/-Ö[Õ³M×»1!d4ž1
+Åž':¿¬[Õ©­¥RÄ	ùm¹ÇܧTeØß6QaìÐNà<بS›€M”ø°¶yÙ³U<Û?Ö«ƺ¿Itð…sRwź2ã°YnÌ°+ÊoµPkàb^ã—dž¹•yò>t¹æMÎ+>•Eà$6¤šÙ-Âïe‹kœÂºWTÛÝŽÙÞýÀe¿žð4O‰ÏHª†úíß#¼äʧˆæOVäñ»aÖ¡›ŠÈËTŠÜ;DØçvŸö5†ïÍ6‹kž¤†;Ð’éNíž;Ðv„nÉã쒝4CœÏòRM/"ÔÙÞÒX+•„X#dÇ´žÀS€‡¼àJ"
•üÊ« #J€ùVÓ4hôåûVÁ/g8Ìw¢ŠR5Ë~»;VgÓL'ûAŠ«yl»èĆ«dÄ]&CdâTZcÜ(ßsÍÀkM¿"”ìL]Þ…¾‚ñ¿Âú™
Ÿ…‘T“ËD‡_\:$Xi„å;·^W'ž‡š,qê?ŒLø~Ëÿˆ¿$+ÎŽusöUI÷>’ûé ÿ©!™méƒ:<JNÿ=;t¨:ÿf§EŒh
i¨¬.¤•>zVŠ]3‚©¿|¨öžçOnR£Pùµðrr4ÄŠ'†·%¤M—̲Ɲ‡ðdþBȱÊƨ§€é×±uE,#£­ç;žSxÚ^“{»©[Œ:oÝÚž>¤ëT6Í“3÷Re‰ôDÜöŒ'ˆ(V‡-&zýZ¥y&¾05/tW§ËGÂëïr'?›º¦ø‚&"ò‰r›r»NæŽ=XÀœÅ:ú‹>mô„­oúrÈë…ÉÕ×κ*cS¬Ñ&(+ò–EÝ!í
+¼ÌyZ­K·J¢M³ÕƒÞq¤KÝ6öÃ~H…@Τ›Ï~ŒU??x}Zì–DjV0ì³QE~sîAÛXwÔ…Ù‘»Øž {§tꩳÖTþBþ%ùÍ}
+Uä±Þ‰ØÍɝ‘¶C/RG
qGÄq#±{0©wuþ=É\ÎFœì€HkÇ:€Š×¶0[ÑÓIFK(žË[LÒœtõºÝ†&…:M5¢Âåü
+&µ n}T÷H.,ͳŒI¨/G5	ÏÖ1ñ#z¤Á…•*Y3‡"¶õHd“O‹YPìk,û	µÂÝfÒîZ;Ú§ |Øq£Fس|™ûàèÂøÓ'ŽHˆþtJ9^ÅS“¶T'|n„£ÀÏ–}/Æ/4-"œQã›UÏtÓ ¥×**c“°‹!†+‰ÀružŸò‰öÌNey…„%$R†¹$ðœ™Y&0¢t¶„ŒäÇÏ¡¡l“Ÿ~'RžRïe44ÔÐqdUÍ÷›é0oB¢üýer­¼ú¨d>«š#£††ØDÑÑ?qõÁ¬é6¿žXŸÝŒ"[VJÑ#Zxk…­«?UŠÛÙöêÙ÷‹çûOåV©ü*ÿñÙÒIéY©¬óಽà£vLs°i~±Ýhpž·ú¶i.ë«Û6´³˜DblŸ°4¸ËV•ÉÙ¦5SŽ†ˆÎ©¾«²—yÄ
·|ƒt§“uHb9ɦ0²ÄéM!àVô»Y_­
ÀéEbŸÔ/­r—¤c·áµpeÜDÛ…Qž4“E\ö„_3´ àú›¹QØN
+‘j,aÕñHÕÆŸü ‡ë“•Œ‹¸n1ýpÞ'˜?ë©1ö'?×Цh‡ÉK˜^Ñ…Ièî&†5|<ðTq¤"Önñ±µÔvÝ)¡ÁçHl…Íöúæ[nÑJ û;Î`ÀDá”n8MɾQ¢fpNŽâÉ·Ho:ó¨+u=ö-ÞÓ€×e÷f¥›™uúÜ„¡Êlô¦r¾+YC¶ó9šçË]Z„ü˜ÓƒÌ}U¿ÛÝ®VÑ6‡Eù‰Š
Lç<­t£Žð{Õ²É7†5jùé#›Î:±›¤‰þîèQ‘g§¿va«6GP;F)thyeëRh0ÜvëML‚¸‡/Ÿ‹¦™P>ü]9–èPŽ›ÿ¢rÍ»ž·(tÜÆ*ó¢¹ï/©q°çN †D÷9FÉX0@÷‚–8¶DëúƒP{õsDÜ´/ÿÎ'm;ìß+/[}œ’ӏƒörrdõXxöx¾É‡k,ëɉϘ³ø¯Rsˆ HÉ›ø;èôVUk`>¥’xô¸ Cù$Ë{bäldàúE®ÊHÔK{9êqFVŸy¿ãü_𗠍܂°ue	*~í _Ã÷T¶nѱ‚ñ¢<Þî:®n¡Þr
+®Ÿ:©U¸YŸ/U+åaÏ+5Ñ`±®¡¹xÉ9Ì’ÀŒÒz¨c(A]EíÜvýl¯JÿÙ˜UF}]Ðç³zUS|úûšaéI‹×ÎFkþ'ÿçD§‚RÆðø«³œ#Q ºÇáH1áÑoÁv0úê|+|Áç¡ðQ=‚uG}{÷¼º“ÃnvV`®+;lÏùƒHq3ýmåø&P±p§Ý…`“‘iûB·!Ÿí‹Žq±ÄfÎ:õ%xÚÅŸ£Çé‚æøÂÎ6ç0½×Tvâ¬Âpnå]8oØ·?g:kkÜÌ}›:¸£·ÿdváÿ îg/UYQÇ+[Ž1-;(J<È7F¨Ý6UÛ±÷ðð)h´,ŽÔ$s
е-݁,I¿0|·Ü`Rƒo-ÜøÈT­9ÚÀcø Ýt)G_™ÿ!Ɇã`áTp“÷Úö‰hˆå±ÐÓ{â]GDë÷‘=Ái_ú#"„xÑ	¸ƒ:³wÛg½²Ù$êÈùõ>
+N”'ín+ðÕ#aÂEfÅ«	­Žu5ýàî	(Äb„ŠÔ¶gå£h!ª(Ý*#ó¾1mŸqÎìg[ž¯/³Xx\*‚Æ„Z wKÇ#Ï)X;EöÔ}êÑþøèFoüŸ«DøÒo.dè[Úž~:Š›R÷q»"ùz-îãÕæõ}Åé
ÚC2Cr‡"Ö´è·’;oÒÃEóg—VEY?*Úû?+­±	ãÏ¥ôÃJ2®ë
…•aåk¡±á ÍqÿØgÒ(¾ÁwwÙø†Væc}ÿMA Ù«¼IÒªo;•Ú£Vر¹'ÚY9û85)ʃž¨i@~zü©4çÆ„Äp–;¾s8æWÉÖ·Í4×SÕúE~ê¤îw(éIÿYwÔ}†B$AŠ%zõë2±_³ºHæÐ;cŸ˜t>šÅHÒuY ÛFÚö9¯2f;» ½1Ô'º(Ä(K|ê³Fï±ôeÛ	,Ò«ÐT®e]KäÎ]Îo•Ð~Œ6GƒÌ(ß_5ÒC<5ÙeB]¨¬!פ‡ÇR=¶°xF3N[˜i’aJÙyÁ!½Öd§L¨ò1´Çòf¥©¡äÄã½`}ÊQà+±ÈFò÷qa½<5å­œ2ãÊ¿3Ö8`ü)v€ôÙrÇá4Ž#9 Þ}ã`V¤ú&I!c~ƒnéè!¡¢bB¹AŸ¤“¹~)í锇ÙÌÐù䍙7LãÕR`â›M¹ü0¥ÞÊWÓ”¾ƒsØ 0´PS€(m;þ¨K`A²éׄEãƺ>5ËsýC¯Âè,bã)]F¢oÿàˆãXÂs¾QŒ4â#‡vËÀ!ŸÇ¦G÷}óÆû’mÓ2iúXòïÁJ]>tKz[uµ”
+ê°›ó^­‡Û´UqïI0Hª#µ’PíM̲wóî„Ò²Ÿ¸oäaû­ßù®s²wߐ‚j1ì&¿ƒ]¬càÉ°‰'øZeÄ+2Fêÿl…W?g9¡ª¦bŒ½Âó6»ÂB…b‡Òî
cïž#æVG:fŠp‚˜Ö¶àa^º&A¾¹ñÍÚŒÑ çöà¬ýå[Î1ãRe²gCuÒ²€/Á¦ríß÷ZsåµQNJEÀJª-Q¤âBzw(y'UßFTdÈ›ãaƒ]—¬!ÁG…•§„¼ö@äZ…&ºô	ƒQ¹Oßðv\p<FMc1„Ê÷,ƒ‡õE”+ˆä½ÜÄêÛÏ/9Ãê<fTWW—Z	Ò¹ï‚Í¥¨ÌM&ª´—]Xk|"Û‘7¶æ[Ým¶:s³y6”²ÉÞŽ?,t„a©ö•Æç)ǨR[Û÷`e‹¯3µñïJ
–W&Â7£ô#$¦tçB¹iw‘Äìâ™~bX#×êÑ]‘ùTï=êÿѹWû=ÕD"v€ö“Õ‰æ¦6&f3 Ö®“¹B¢IÎË'ñ@Tf”ô€¦¼rûéçeØïc3'÷w'%ÕNÆåVy¸ôCFM¤)I±#Ëd5ŒMî8VCo)ê….¹[å–¸R½³¼ÜÌíð7+
½LâOX›P·‹…“f38ûÏíï‚ñZpØ#ü_žNDvz“¼KµÓx²èœ”ftìS	ïÉ´«qLSÕ±\O¬<øꇳti®N-Ng) v­«ªgK[>¦+â©|šÇ–epß{zÜEªé_PM6è¹>‹µ ï¦¦vå>c™È²’r­8%;qéå$Ѭw´·LÑñê*“®‡°b©3\íá²ÇV Á³sn·‘&Ñ1Ʊ(¢íÍKA$ñGF¤\KLèý ì<
ÆU¾‰J½aMÞZÐ@+#â#¤8âÌDêáùC²üú4I/Ú»¿5ÖÏÈ@d$oºqîÅÎ[Š’ã_+»ˆÜí ,ZlËH7;¸t·ã¸G{æ9š2Œº=™s»}'>«3|¸Ú)>OÓxD„j™áË÷Ô~ò°2€WÔT<ñy§¬š¦œö›çsX¢
+…o‘À@¶5|9$Ñ•8îÃpçýë¡šÏJ–I‚*0>ì«Þp5‹]UãbVH‚®—éůÃz]g¤¦Eµ65
+kú“ž0$«q׳ۨ™¥âøJeø¿KÊÖE0ÆÈíÂÛáùn~
+]BmW‚èªBEŸp£éxˆ^cc•œTEt²ÛÃ6 –)31QpØ-BÁüZººæB
+\ÆcTEÕ’ž¯¯æ¼Ý˜‹ç¹ÁG×û^BEˆ˜'Œ‡þÓ¾˜'½ÚäÇ´ReÈdÕ¥A8æ¾7ÅyãE¶U×#5!Ã.á ‹¿……Ͷ/}fäŽ\I	læäИ.ù]Þo4Aµê°•o­~b²èÜ2Ç[1.€ÒÜ
QÙÄ©í‚ÍÉaøÌI´
+HR\ö€S¼x/d1:6®ûȱ²Ç˜6RnÕb˜ùä)Pc UN}ÝÅöþöP<…Ó–ªP\ÇÈ}æáØÙTÊjÅë‘è—Ú-ó@d‰h;ÝöAsØ]Džòám·bzwEaEèV!â{Þ N¬æåÏ3îS4‚iéj»´fköޝGœI|橳p·×[‘Ò毙SéSþ²)‘Ä82çrqDŒFWÐWÄ&MÞ[¦†hÌm}c^•Ô8«GZi]¿U3«bRì´dÎ8²u÷7TL¢KÁÊÄ-ZçBtvzŠN'å‹KflÜ
«ázië2ïòV˜,$=
œä	j¡î5–Øhgɉ½I|ß` &3
+ÂýŸ3#„m=|2‰¡<Ç–­æì§D´®å‚yvp×â"Ý¿à)3.Ó`RþH=r™¿°"R7§‹‹KB©ØE‚6®Û¿ñû\¬1˺÷#õÂ@g<5NO>–+lè)ÍÚÎÎîø`ÁHQVT¨Yeácƒ,®šh6~§ÁµÍõl^®uAR©ú€{Ì £‡ÛCÓÆå=WÕÞ*ÛPë-™ø
BpèmN~ò×ÌUí{t©‡´!kÛ¯zes¬ƒ¶&L¥?ƒ“÷߯M÷Õf²,dØ+Ûo‚Z§´”Tõ‡9‹£âx÷¦íɪZ†‚Ê#‡O2-3ChÕ™£“8 Éïic–C‡ðšöyl™l¿A¯…ÚM÷l«|®*¸oßýFøKöÐ`óô
+ãJí¹ž–öz©KØþ=ŸÂÁû¥¶5·;aÔÑ’i0žž¨tfî
±Ï'Ù˜9ސܰ?Ž
+g“;Äûʾº÷+àzå{O£û,¬ó"³¯]éœk‹~†oç|ëC'>¿Xïí­³Æ˲j®B!œ6¹Ç‚ìÌœÉGu¤½ôÇâ˜bá5úªø÷¡©LXö>G¹V‘q¸Ú,‡å
+°š¶“²ü¨p¥¶ÝyùÙ|Â`ènl²8„½<>M}ÀÌ XÜœT–\ø|ð¬2CÜ: Jóò Ÿ×Éì³â‚ymýWOºñŠµQèWJEÀ¬Ý¥¬‘©j±1a;öÒoüZáøÞtÒ‡6uª3ç+í =ó.7;£é¯¹&œ;„<ãFkÍÙy玥>é„ŽLg¾ëˆàù†hk³þVÎ7c›#Œc§òž¼ÄK$8ðNêŽÏ6µ»ÔWšz‚
 à©Ær™K%Å«rlÛ½ô\ôË1Ä®˜jBŽðNN›/nÒbSt¡·µÄ0õRR+|æ^g4ŒÈ<ò$Oª¦¶còÓÉùÔç'Þʯ»A/L4ÔÄèQ™ÁŸðNmq#¹þ™cb3nηò2vLŠF.V¶šRGõ:[úE%lÚ׸ƒª½*=„¯oβMhtXe¹y²úÅÄ2¨«òoJ‚)†áX…–IKNÂ$IV™§fñ<?1}ñ,ÌSe®ãºâèîŸßÎU®Q¤™Ä°0 ®^Ê99ÔfoSŸ¹²ÃôòUžU›g:£ØjÕ*HgûM€re¹äå†WFÃz“LצofѪ„÷IRÞ³S‡Ÿ£=áD(æ(‡øúôPw³JãvëbÅ–Þ_Ñ]Êï»ujNàOfÜ’”ãGóÎBFça×Ñ@OëÞþ«‘ŸþÌ_®îj”®ò?òÂ+µ9	5w¶sñáÏ…»-0F¨paŠµ=*çk”ôä}ä¸}ñø–¯°Hñ-¼”•Áã¶Ø?ëPöuFu$¹Äi´h*&ž3IŽÜçÔ„­ÎPuâKRãíWé®}xN$îr¥ñ\ì|h-ü.B¡1:B¯YTGO@î™ÜbñBKÏ¡~Ãû ׫d$'@
%àˆ\ :ÔâG¸³•4•W÷ŽmàñEtm£
fbxp[H’•“M9YQY&Ã0]*·J‘)’ 2ÍÜ1]í*ü'±bª"»ðïPduHq¢ËS{c:žˆˆx%òÌ“¦ã‹¾¤ïÜ4ºR¢„i/­Çر)AköÇ÷z¼e9‡g4AÕ*¿trÑ=®o%¶¸è²¹rCBµ_xѵKŸYáØãµÀ›áM2ZØöÝ­˜[k–Ä°FgfÓ
3úxÙZ×7ÓÇg°jÏÍ|³ªÂ~]¦àÝ^}ô½ýâl=Å•䃤Þh¾Ÿ|é=¥šµkTbWß/ª^»šõª–‡(±â4ÊMWÖäUVÛGÀ€-²$ø5ÕýÌ­±¢ÆøAQî46£…dUÅø3;21·Û0wƒëï4¿
ÔiûBŠ1¦3A:fÉ"£å¤Fø–>4†+ïî
ý~9òÉáú¡ÉŠMM jü‰Õì»ˍé9v›“yH{ªª†:«Î‰ï^ûç~%܏wN¬…›À¶“Æ‘½ã‹Â4ÔÊ'ÉÌy®þëcšûŸ¬ÓlêñF?	oÑRrt¬
Üž5ÀF×®{…ï.²5/?n]aÉûŒ9‘rŸP°ðç»4kÛIß瑘µñ0ÕH²öötžÀ¥É»Ý~ž7„™Ï¿K}LSúÁŠH˳HëúFµ] ›øA~ý)Ò*ÒmUšrš©P@
+ÙŸ­b?]ƩÝ)e!zl´pàI/¯…%`G®õt½Cœœ•ƒƒÚv4}³Ã‘†ñM%.Œ¦ùZ•?bÑ/6)‚ãÝŒÈïaLØñXØ¡·Ð¬ë¨÷S†¥6ÞbÝAÚ	e_d©&SV%»ç`â¯ýNA6‚Í-ª†EYàžçãÚ/bˆ
è ËÙ,ÒJ×üÌ…‹´Aÿ”Q«Ik8üþT.Á{pLUŠ¨g3ÃJûbÓÝ|i÷ÑMûQძ;á·%1ŽZR_š’à=1pMÄþ#†ŸOÇj̇®Ç•`GkúZíI:h‹÷c¸1cª¶º]ÅéÔR‘Ve¾ÌYÝR)Ä›+=ô­™.×õ†Ã©†;“>cæïg&˜vÛGÊOI¢…¥¥bfÛaI/Á樚ëÚ€	â4[ø˜ÜÞxêíÚ	O¿}Xžóãö@Èaw¿k&í 4;öLÒÝöèwx¡VÒs{ÂùŠÊY'ÞGÓÓÔÜð]Ôk†:
+«([”dÏ<šº¼3È%V¨"eǤnÁ} Äß [¿&€ÉØïðàrkþ¬wŒ¸ò(Ä\"¿q¹/|eô•.eP02œÏ‚Ïi«-˜Œ%… ëüVs¬8SGÔbü›>~Ž@gF’tœœ6_>nö4ÍxÒ'˜¥ŸþÜGJàWLQgug•[ýVç“ìkx*¬à×è xjn$8’Ž‡¤©ø剐}Óƒ¤ëd
2bI/¸ùý‚»Y*s!Ò£-Ý$KÕÔÚ‘ p›asäc°g•câ ±›ûw)þšgšHý
+¨ 3 À'dÇS	iܳpû‰Á"Ź–¡£Ø¡`gg=î,”Ѽ:ÀcQ ‚²¨vL|¤“¡ìM¸\ˆt-‰áaZ!¢ýe†2†^•è!ÐýWJçÆëãî<í÷rð•ò½+p%
+ã•}Dt¬º®úÄšæ@"e.ºfØä×8
+²Ì„AŸ{LqéõØBÍ8ÈpéY‚|Z¤æ‚I]•#ǵ ·ˆÃ„±Ž…CóÈNg]³ÈáC”„Ïáózyn½Êg×ä·ø<æçõQﳝˀ:«Ó¼£BðZŒÔ°qسÀÝæ•eßud/íú©nJØ­«3ÀÐU<RÀ±üz
+»RuòYJZ%äÐZN‚xN/-*.ËkrlÕ—
+Ý—¬»¼·nÏc{¶Ï_YÓ>
9Ø6Xz%×!ÁšsHûùà뼋át·OHbÛæ¡$`Õwâ¼W!¿éýqPß&mÀ_n·Y>âKöU”îJ랐­w²®s{`)·ÐQ<™ãÇ
+«ëðáÙú‚}ŽKÆwRì­åÕ³JöîQº´ý¬3ÃMÛçì69UïKåèÙq¨Mt}h<pÊŠRßÏA4©OzŠà}˜˜“½mI|^$Ñyk¢èÏÙ|h2†Ó´WM4AÊgƒØV¬æXe¿Âu·J~½IäÄ”æZX´ýè{P™+|K³4Ò
Úø†ò"Šþ
3iVdnaÜ¢&LÖôVMæ3ÀJ²1RŸ•
ae4pe¤Œ_,`fŠ%Ñ|J6–6ûRc’¢Ü!ìT¬WIˆ|Ju{eû’Í	Ïäûš€61CvnѬ³f´ÀÐJh#Ž—þ†rD5"UD‹œ-QùìL¥'Ã\ÿUõ­‰Zô¾ñ%úÄ;‹éÞW)7²káÿò˜¢©.åÛK_g*€AWõÚ9cýôÃp‰‡¦¿ä7XÆêø@öº‚µ˜*{OÝeíßÇ¥É5dSm“¥¶S{ør
Ô%™u¯4«ÎÄ´a?ú¦w‰8ÅA‡g¥‘BÐöÁµM(Å´kfCã!ê!¿¬uøá–çæRã2}xp!wãÕ±+Å'Ý@{n¡¶Âyã :¿²P*ÙÉ o^"¾U»ï³HÇÅž'j ¢ú–¨$W)GÐÏóéqäÇo;;–c‡ã‹çl²£SÍ6¼ÞôY‡ÂldÁìŒ	rØ]®ì>˜A_)ëHLU¥`_d1rãÃO·×¶­#àï-ú˜=—~÷+@?@ïb¡½«û!sl(u1ý>"V;VÃj¬(kéópÐÍâ¡ a(õìÔi¶úUËù&ü,ZÑ6.¾-ýèJPÐh{ü·—}'Ï‘Ö¹BŒšô;tx¸•„™Éfo3¢Ü×r‘Åi_¼UŽ€ùn_R
+´®^›;~ϦbN,ýQ_w©à¥ûò¸
?ª´Ùé"7*oNÞé1ÔëÀ+ÁOXÂKൊRc¥ª3ܬî~š°q¥þ«ŠuN-ìžwГ§©#I“±	úä§wo$¾Ô˜mIíQž%Cwy]„´äê–jäÍk#ô—¹<p0ù³‘`f°p¾sm¨6 öѵ$éìX,Gà©ôz©!Êwk
+h"Ðb‹„9¾Ç}gŽ¼é<‰Ùåpïþò`T]X’5ÚpoÑäÉ;öÎûÙ¬‡ÃM;ÈlªÐ]Q‹ûÊÁ(¦}Æ <ƒh°
+žZ\åÞûè4Ù
j°è·@({õWŸÉáW`3ÝÉ=… *¶C†´®x…Ú 9¬y²™Õ$
+¬Â1ð–Á±)}4ÑñŒ!×°o/¾)x‚ÅðWpo°÷LHñßÕ5ªÝ§EãQfIÕšk6ßq¥Q½¨IñÙž1y”C&ÝÍ|ûFò öÑ)kRŸþûÛ¯‘?Ìàé.b 	³û„ž~ôBÊ‹nɐLZi¥³÷ ;ø­_‰»Ýx¨8W>FËÀž^Å9º·Í¦;L8¼zHAÐòkçC¥{huGApjMl;ÓÔ Æ]Ñ¿¾Íàüe±.×MÜ¢ƒò”¿ÿÐˇۈ¼æœYsøY7,¡AFÊÞ5X`	¯ì‚:‘t³ŠlR÷¬Î$÷Wt[$¹B,½BäétŒ(ãá•QcxXó.ô¤ú@™‡×'_´ Ò¤M8XÕ–=^ëÛì:ja¶}à‚€-.êðIMÉ%³ãûƒÛR´_4EÎ,œïCõäiŽÊ¨v—ÙD-¦±ÀàäõIrÆO	‡TF)>zD.~Þ§Ü•Ú†\)tíB!@¢G\G á3±Ô9†„Ñ.IdÒ¦Ø
+`õýÃÁ›<œÏ¸+œjœZcÎ/Ñrp6J£ åžéù΄Ù>¬d¬Q
)žÚЂ¶æíÏouX–ø;œåÇÐ=­åfÞÐ
+9ƒ¨Ü”°êɐÖ
+œò²UÃáfÑB'Ðõ³S·)Èçâ{îôÆ0«ü(›r>iž!N>,Í¡–H^¿2àˆý룓‘yÜ<)èð\¶å5›{¨+õ
„—?ø½á´ºm×žwÞ3Hº)ä
ç‹%w´¥¢Ú³±^ÖŽuWÜ´îÊï*àoÿ Ø“—•ê³dVÁ.[,ïÌb€›èJ߬44œ`o´
+Œ8óeáÌŒ¥øy›O9*
c6ïvaKV$oòz¨të1xÉôvé3‹xÔ0ÉC²ÏÈþ,Ñݍý:bÜ
+ÌÃ’ÇCuŠ:1¯Hõúñ©Ç1anËüAÑ*>$g)M9ºn°'fóÑš6@O8n	H0>SAFŽ\v^|(a«‡3é	³ÊÌæÀFÒúëÉc‘àñ˜*|ÝÖRÚÈ	¹ÄlOå
geÕÿfv×jŠ+0ƒ ÌqY“ÄfZ­Ç Êë7ÛðmßÁ¦ii ·WM4ŒÖ,ý%=Â-×~èEÌ<xå¬ä²òuÞH°OÔÌ:ÌEÈæô)0ÆüÜÛ8"ËóÔ”¥L‘šqëÇËÔÆ¢°ÒŸ…OÿxeÑÍÙWGO‡Îáø<]<ûZÑô%u?iRÜ.…Ço	Ìæ‘î2ñâ”çsŬñ… 6Æ¥å—}\*?pµý‹ï6{tå5¹	mræÓcnrè?é Mvu bþ®ãÞ£Þé´p†®ëY¼ekaØEl2AùöBÜ•ˆÝí©ÂëEH—ß–H<“ê³Lú³
+™ˆl¨î‡rßäKhö,f«{”cög509ž¨k3Ú8P––02²vCIP3õj…ïòÿ4²0X¶Oi%Kiý¡òºnÃRŠfz»Æa>¢f¶G¦wM7âË|òÀ©y·ö¡^AÂ\•Ÿ“yÂOzcš;±újÆÿó€›á
ë×ÒÒõ¨Ý'il%¯?»wÞ¡´-J¼–sÃÜf÷wâ.'fa¼%­¤ÁB)Êw©ÔqŒ/ˆµ9zÃMòݽ†b¨$*´gÈÊ€Ñ'³*={P•´ê>SäDa«0³PžÖ¶Ý檝|„NÆI”ÃÙÝÖ¯^–,Gf«â+UbðNŽÅ…X`êŒ*±{§~9ô¤üN+©Ñö»©Ë?4#þ>Ï.¿hYœJh[~+‚5!Y@®çê‘["™o3R¥è#­*‹ýðeyF‘WÕ	x³Ôo5±2Óö ,™¯¼ÞZOãÅÔKeOšî­ªâöì­d©R½e×*û×ä¹£§,ªhóéKCË"îÝ:š’*ƒ]eà»h/È:Æj­ßè—îó
+™¾¸k¬¸õiL20ód_YŽC9ÈÔf­å±ò¬÷ö‹NG›TúKûXC²À(Õ°àJ‰¶‘&ØMÓ9ß݃Í+AÔ
+Z¡Î¹ì¼mYàϽíÁêÃ=êt»}tV1	†Øb}¥­é1þýøpøûx™Â•Mæó… ÆoÈ”ïüñ”$“W+ùc˜†§8¢âYo(s(ÌÎ*+EÌ]
+åŸÁËü×/ÕI=ÍM?	²»0+ÊèåÎäwÚט„½œ™“£¨Éë;¯–§bŒËjM±Ačy
bDªá½l_ý…y±)EÆ+"®ZE·Ñ­ÅMssI{nâò[éÈ™ÎÉ°×äéÓÂ~3÷Éñ×FÚ¬l½³Æ—v”ëîÑZnÒluÓx$â¾V4ü…Ê^ætKÞ_æ:9'i\!ÞÎÞK+7°8†¸Áâ8á5'Y´d9Èo	qí?èålS«9E¹	×IÊ ËpjÊ)²†{­àéᨘÄÜŽ½m6P/Š‹I?ÓŠÖ;©~ }S0ÄoÔGçfRy¤Ð›-'ÛÒXï¥oô-7øöaP¼>£·'.%Åø*ÑÍIÙ•Î å%°IÔ~ßz&Aòa‚^*?S߯è”à[§E¿D6E庩Žc‹Õè~k+óÁCVv7aP§Eõ¿iÜîKÚÆËÊ¢|#(]Ë—06,oTLšðé;œÕVí°›_Ê%“%È5x­š3
+—³Þ
+bC—u·÷!tô”/™rNèšvàƒÓš'f’N«'š`§Š³àêÞœ4]£“Õ}Ù&
+-oäÈ#V!è ØÀ¤òpf°1j?aœå.Iúø‘€Q¾ÜÂêP]É .W"³*23鮲¾ì‡9Áœ’Æ.~0¿¢× © DdµmØ¥INÔ/ÓþŽ¦ml?ÔñCû¼‘,L9>)÷Yͤ–"áJ5UEÒ ##¢[V3(Å°2 N#XY®‰Ú-`]<¨œ'&Ê΍ž)Q÷»×¿÷Dj´ü¼¦x¿göÞsrË
+äØï=͆̅æç¤%%ïÝU5ò2³žª•³•fÖq|öQ¦2³¹SÈ.x¤srŒûBo¸NØš¦
>¨B%[$0zmä]5h *A•èð‹ßïƒ{ß»öU%´¿a5ñÎ<†Q\;¬c0ûÜÂNµàŒê=cqÔ%J¨ÓÅ'IöâÞ}…UMMܯüa¨ÝíÓXtA#2Ûþ&Dãä·„ÜmMnÛ©ÊëÊÞl2k4C‚ùµˆ‹Ýâ…4„Ä*VÕE
+É·•ï\ØT¬e1B¿<{àHŠƒŠ\äÙwœÏ”ç3éÛÁ•ok6œýO†ûÎqmÙMáG•wñ¶ìéiRØH›ìûs(‘}¸š¨ž]-¾±ì­Y?*’Ì¡05*{É¼F]u²J¢Ö#³}a]Êã 1fJ2)5%xL»^‹<j×êÛäª!EG6¾Ô<coZ±óO"}?¤ïðÕ<»EØT¥”Àã»þ!ØW¿f:‡•£v£Ø9€2þ1Dwñ“C–KXGX;¥\ŠÎ'Ò4§Ÿuƒ¿œFRë{SûY,aE¨~-tÂÀ”t¢'çZ[o!:?¬1¬7&ZG¡éL .8A
+`s:Ä]LÏLÆ5õO‡í+W<ÙÌ®PÆ<NT)ô¸¢9 “ŽøQw¸”¢†è*A6©ºîÔ"Ý&wÿdwªûËh{ãS.CD~4VÔÙ"r6ø¨èH~E>ØtŠ¤û»§…Ã%£ö”WȇÇÈ©ªF@$6údy5çilìɼ~¦1bVÝDM,t`Ò,õÚ-Þ‚ÿÓþíáXgç@=ÖXñ~šÁY—îV®§^ÞÑMiC–d`ìM”´‚J/‘\esÌ
+j+‡zÞÓi¶ýZ4ðUJ °Š6¼ˆ@[¤œ H‘Àó{{ÛÓ‰ÁH§ì¼f¹Kþø«{»Ò,ãhè]ÎœJ¤ÍåÒídE!°Hnó8Åáj†OŽBf)H…)=š½:Hó¢¢éôÛ^,•ÒÇï•ü[Fä¸N&›ŠfQIaºc
+Vz¹À‹œÏ ?¸á9sú—[…”šÆ–Cù„
èŸ\3`Ž7%ÞfamÎÉR8ÜU_ôå¨"ÂÛŒx`{GKXOÃ51´û*÷Kë…’bÇY„å1Boí	å!72ûŒÓöj5t~ü$¥NŸ*œóï±	ÔkÒL
+²ËŠæ&	HêsîÔð‚t6-kŽªtGGf‘Ä°.3/(ñ~îúþdõÈayÏ(»é܍ï¦ßlÞݳÿ|g5j$ y š©Ã>7pžôЫÓˆ¸âOo©†äj2ÔáJrWâ×f€·ù˺m"¬m-¦Í	¸Õín“½tR “ÛÅš¦%†"I“„Õ|'hýÁif(øÝž6áC•p·Šä}º*£¶™c¡Èú’Ú‰„†`…5¸½l„ >Â%éó°î'kY
+"Œøó­7,ò`Ü¢×JˆI[}vàãÜVšÌäH/^Z™èsZdº“H·‘Š‹ŽÁþc4Œ·gM»P®Ô!JÕĶ9I[I™ø̵³³úÀjðæ‹Ë§ýܱ¸MèOræV£µìM•–w©Ó!I¾5P’zÕùˆ4n«!9⟷gNZÉc×a,½?Ú¶ˆ`9|«[ç¿:™=®êÐ<juÕ§ÙC[]ÆsûÑØ”ˆF’Ò\nöÔš%œÏˆy‚YHÑH+Œ¨õ|¦é×q‘sÕÅÒ!M´s›ï TûSOÊ”¾ò¥¼-ñ§
ŠöIã‡Ü£Iaˆ™f}ö¼Xpºq°fîôŠÛˆô“åªÆkCwß*mdq6pRÈË
+gä»}«ìfí^cãMe‹ußCÓPÆà:¿Ñ7Íâ}¯öW®“QâÙ¹Œ_É1À°sÙ>dŽøè¢ “ïë&kÉΞ=tæؤ–RR¨E6UIîZ–16 ‹bN2G1ñ^úXÊ]•®&É ­Z ‹i; :â͏8p£?—8O´%œçMÉŠYÈôÿðîÿ_àÿ˜Ø œ\ìmœ¬áþÞj‰¡endstream
+endobj
+126 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 326 0 R
+/FirstChar 33
+/LastChar 125
+/Widths 327 0 R
+/BaseFont /ZVFNGF+CMTT10
+/FontDescriptor 124 0 R
+>> endobj
+124 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName /ZVFNGF+CMTT10
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [-4 -235 731 800]
+/Flags 4
+/CharSet (/exclam/quotedbl/numbersign/dollar/percent/ampersand/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/greater/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/Y/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright)
+/FontFile 125 0 R
+>> endobj
+327 0 obj
+[525 525 525 525 525 525 0 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 0 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 0 525 0 525 0 525 0 525 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
+endobj
+326 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 33/exclam/quotedbl/numbersign/dollar/percent/ampersand 39/.notdef 40/parenleft/parenright/asterisk 43/.notdef 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal/greater 63/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W 88/.notdef 89/Y 90/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef 95/underscore 96/.notdef 97/a/b/c/d/e/f/g/h/i/j 107/.notdef 108/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright 126/.notdef]
+>> endobj
+118 0 obj <<
+/Length1 1316
+/Length2 6869
+/Length3 532
+/Length 7667      
+/Filter /FlateDecode
+>>
+stream
+xÚí•e\ÔÝúîAº»†”†º¤A醡sè.é”–”A$¤AEº»»»Î<ÏþïGÏÞ/Ïyu>gæÍ|ïu¯ëº~kýÖ&:õW’NæP9'G7nNna€´Š”7€›““‰I»Ù89ʀݠ n!!n€¤»€‡ÀÍ/Ìæa2¤œ½a6VÖn iÖ¿š ’P˜
ìP»YCà°=à•ÄêæÍ	´·hþ5à	u…Â< œ˜ÜÜ ˆÀjeãˆ	ü+‘¢£¥@à_ewçy@a®ðP xHV <¢…“£½7Àj‰	Tu‚{AáIþo„úOq9w{{U°Ã_ò¯Òƒlì½ÿ§ÃÉÁÙÝ
+¨8Y@aŽÿÙªýW8)'ûÿ²QtÛÛ@$­ì¡ ®•l\ål¼ ê6nk€%ØÞúwêhñŸàËöw  ŽªÁ+MIöÿÙÏ¿ÕÁ6ŽnZÞÎÿÈþÕý7sÿføêÀl¼ †\œ\\ÜðFø÷ß¿ŒÿÃLÖâdaã!øø`ì	3àÄðåØ8Z@½ P/xb §£“|
+ ¾$þ K'æ_Û	â ­½­¡ŽÕÿU⠝áÛädñO‰O „8Ù;ýnâ‡Ï“üMð)R¿I  ”þMB  ì?$À Êý& Pá7ñ€Š¿	®¢ò›à	T\Sí„kªÿ&¸¦æo‚k¾úM  Pë7ÁŸAû‚¿@ðo‚û™ÿ&¸äâæ‚ZüÜ  ô„[ZýpOë?njóÂ]íþ@¸­ý÷uøÜp_Ç?îëôÂÜù„ûÂþ@¸¯ëß1·?Ãý„Çðøá1<#üêzýðÞã))'/_>^ 7\ˆW ÀÇåÿ¿5BÜa0¨£Ûß7ü0ý›-màG
+õ‚B0§'œ "¯mÓÂËd•£°!JY5&ª~ìmÃ
+zƒh_< ä¶P§wS‘I„»²AëyGåÝê§ñCî0Ø%1cüaÃÃl#Ó§™Jï$SÅ{Ý™þ2t¯¥aìlQmda°,E¿¨7çèën¾:‹ŒÖ&ÚB—¡G}WÖk~=¹L{툰:f^:Mü—²HPļ'~JòüPh€mzûì±S«;áM!ú»äS$‹:f—JiÞ8«7‰ß/	kƒŒK£WÝß©¼Õ¯º37œ£Íæ6´?‰Í{vúÜÍèmu»óLõXn‘Áµ:¨\>ê¥ ŽMôç¶":m„ÚÄæÀ¡Æù‚Vk3Õšï…O­•ä?Eúˆì/ՏâÆî d`3p3“ïâÖ°d±2>¾äU
+›N˜“½¯ª|KãšX‹»e+÷¾&Ò²Ÿ^q|=œCqáÓÔÞ`ê´Th/&¿˜uQ¢‹Œþ‘誆,A´]çÇrÙd|Uøeò5ö¥üÆd€ò‰/ðEÃi¥b¼,?Õõmö³óÕïÞ8\¯­”Ä™YÄ‘x¨Œ´õt££69¸-{'_|¬¨}6$…Ííp­!öNùh–©„Ï­hSÃX5KUk(DI5+ÎìÙ•â¡Z¥×v–{Œ.ýð/oq!Îg+k² ö¶•;×r2ŸªYgU:?+¹?-€rÍ%ëAÏòhbƤׄŒ’q´í°i,P^Àb;«¿?.Ø褲êÆ^²Åfl%ºݘ`’XÀ\¡{ä+î¯ê·Š;Ú¸‹ÃÅ×KW:}R ß—®ÎåÚËçŠd¼Ó
+ü†nZ¡ÎÞæ_ҏçN–´8jª»82ÓÜŸú¸pÛqǭ仲ó?ÃÏ-’äÁmYÙ	þq…Ë	kp!â¤aàõsßdu¦Ioï„`Ϫ¦Âx÷0®ÉÖœE’_“d຾–ø
+ÎY"ë—v b_'æØ-kNÈÿnb1RÕ¼!ÏêòúµFìüE¹HÓve¼ׇGž	ï½g•Ua_…T‹/ñÌ"Åb¬¬¶w‹ÖØKO¡Ò‰xÔ_ÊŽ¶¢™yœ”rïû‰™œ×fÇ¥Ju,¤æ÷Ù¯ñnm}J¢ê5oš]ô*¾‹?Z…yôÉ¡kí­›/%çøùÍä]ÇSŸ°¾Äqľæ7û¶+åþ*Á…Zû¡”~õ›úyã,{¬ñ³eŒ ‚"»¤Ÿ=ú*ÓYеçßɆ
2*Ü`^ÙšÚ>‰˜ÉîÁ×VÖwa”‰Å¨¥ÕÚÌwïQÞº)»«$<Xiî³D;kFÈŸ[~ã âRÁ€ÚS»{¤ðwNšy«“ÝPm
+¹s680²˜ovVB¢T%ó²ÂŽØ&X½+ÈG2ô·‹QÈÏD¯iÐïjyà ë]£–¬
+aS—¹ï£Îtälç<öy5`hŠ6̧:ne¼(,r™¾ôDÅšèiUþ„cëý‚]i Éê—Ózk†
+¡…ëÝ0¹¢^Uå@l)™×/»Ëós·àéó™Hds2M{Z±„‘C`¬<ËeØÐųm—‹r;ó³ßºß
+§ ¡®v>潂ȹ‚ô†#‡8y jïi÷1‰‰\ù÷)‘
+®¤†´¹­DJY¢Ö<2F
+\E†-|oÏ4»%ì¸F™X›¬‡|nŒoÎÞË#ï	”*PšèÛÆ%7PcÛ²égûvß’mÈü(ˆŸL«† >â½á87w
+1ò§WW×BøT'q“€ú,•…_eë{W…©%ý1´Ù?ìب´+*x…¬LFÂýŽ
+âkú5`;OBÜž@øFm68Dêb‚Y}»)™×YNà̸æKË@O{Æ‹š2$™2È6)͐äñý)ÎÙ]»>*<òŠ×ÈŒˆ—ŽyrB<ëTó)÷Ow‹¶€
+_–&Þà;Ë-Vg¹
+!“¾ë1Q²’d!
+±àÀ˜*
+ßU½²ñFÐøM™ã„‰§pêS!/]Õ´=͸6ÁìPC¤½GD£âãüÈ‚V(¿‚½PbDÕÇëààâ£1þFQ«I$%|™J4ûŽº_5W8sñ'–Õ×vF­¬Œ(È@c¦ùÙ‚{Rʁ+rfýšàà™ Â&…™¬¿×	Ý_êMODÖ5DžéådÞ_s8yæ&Ø
+µU y5“Pˆ$é½’,!¤HnŠ=«zµ5ó"œ
Ù0ºv¦x^­XPN_åÙV îÙ•MšhI+–y3¸šB¶’¬ñƒ»7hü49 ¥íRb h±îî²h!ê2 nŒÚ†2ôW¸îèN;°°\ÌQÍEƒ]c†jø Ð¸‰/æ’†wmÇT¿×Ѐj >O¬.·ùüVñ°ÂèŸ”Og·ž—ÇnAÆ­ºåô¢u™PÃÒo ¥ÄÞ#=‰ÃñhÐþr8eRˆúz¿9»f¯#–ÉKXwO´Rh˜!+Ÿ¾–w"Œg쏄d<¾9Ç7Ÿôx5®%¸´Z®Eøó¶0àñ[œØÉlØþ¶°]ç؉rB;…ëeäŽÏоûoƒ?>Ç‘Ë?=/89ýhhŽLP[ª»ð$’¤ž$1Eò®/·;¤w+™_Å•ž%p„¾û‘CdûxhB£®8ŠÑ@PÈU+®ƒ¥¿ôþGGí¤Ú-µàUÑ={‰JCßÛù­x6ŸS ô¶zK.†¸G.Ï@i·“î¤2=·ƒ£_j´£{Î]±6¿Íª«½~É韠h¥¶1äö@z
+¥Qá¯c|=wµ5¥Œ	úÊø”JZJî†pÆ‹''ÁN}£sĽ}‚ïvº¬±¾ž<4sœù2;Ÿ‡}›g¦êÅï+ˆlÚ]ˆÜ,ŒÊÉ%¨=Ÿ[d2b÷ñL:Šäglˆ:ì|®–†iüCdA‘ÆȸÝ/4×ãáô}•YïI+ƒé$x@AJÄ{Õ³UrfMÔ­ùŽ£!Ï\C¹><%[¨áQcZÆõü6Ö3G¾@W¬Béa²Ž!{UÈ»éH:ÞãóœòM'/%HRÿ‹àp¹ÛǏWO³eb²rÜ>uu<C`2Épé¼JWüYl×Ñ`RlÇ1í§¹ªý#‰#ÜÔƒu-üTìsË+÷Ö6aM^‡—ê¥?IÖL*$DÚ¯ªÎ©ìSŽ¡øJÝ÷I ß{•Ì…›§ÎÛR½C·NâµUÂó^Ùç§ïÒ}!Ú#ùšoÌ#¨ÀZ,cZ]—¯ñg>—ãC
+
jUÙUª¨õ9³Íy]ÿ©K[ù¨ú\»ŸÝ\ 
+d…üÌ9Å
ÄÛ7àhª¯X™®“ÂF»mL
é[Šaà²òäÌ+¦ÅŸ•ñhIQiŠÄ11£ñGó¹šU˜Óú=e¯ÖÝzÅ0ØUWe̵(uD@«K©,D\ȶ˜Š!f/¬;ß½¸ËñI—’í>‰
+\s#.W¬üA³¹iŒíÆu騑I³ó‡o÷bîÃc0lXú¤Û¿²œ’{А%Kê¿x²ÈnѾ†4£	ÛF6‘’ hë‘r0þð«Tdh<xÀdÚ3•BNúãdÕ|…²_èq:ôæ–êû «šÅºTä^­ÅÅË,ï%J\¶w_ÿŠÐÄu^~E¹<“ê“çyíšNÃ|N~ˆÅ³†“BØ·m•éx‚µ¸dÑr™Šg‹.kº;m=\.Ý©Ù}_Tœ$f:ÏøÊŒÃ@’…¢—ç¬Ì!»,ó†tótÏn.P§AØ
ë5ªu‰Ô ¿Èç™ùââ±ci-Z
"®Fï^3
hëXØœKž©hø{­Ì>TšÀó:Yâê·Þ{mÓÏÂÍïÂ$C†¨D qÎBËË?
ÌÍ~½þnòîüÍé\›zPŠÐÐ2á[¥aq¨ÖÖò„±2)ªÌÀ>Š+Å¡ò¤qoNeÖëGJ2)Bjl¥›K)<åÜþÖºÎlUQ£wDê†:ם[a"´R4¾ú‰L~dI˸t´öU‚ZTs?$²~jy 2|X®žÊ]8ÔQÚDBjþA‰
+Ò Š5’7ÜÒŠ\=²\'»uì«8ˆu-[*n ó>’ÀÌ`Ã»-膌(Þ}KÝ­(úr/•’xºÏ	ߦŠw»؝	–†Ðï³~X
0ãë¶/_xò‰ØóË
–¶¡ô>F$LÄr
C[¥:éÝ
.>9óžmÆâA͍u™ù\36«¤·¿t^iŽÿ--Ñçúƒròe,Œ_ð6^irÌûX{[F/ôB¹ÜßB­þü©œÉg°¶mƒµ·(m‚¡ß,S+#¡WÉÏT1ýa†[Ê ”;¥¢]“h¿è»ºÅ«j%o<ô¬äªjš[SÆ«üd	rªþ–r—¦‘{D¨âgUS)Z¾·¾q
ëíd
+±·µˆ–úì€â.ST…œŒÓ¦±îT¬éo¼‚f¼1Z³f­©2
4ŽG‘Ù §ŸT4fܹÌä"xtOãtäÄðûÓ¸Œ—_ôÐWâÙs\f‡[™È8íáiNʈžw€-9ãp¶
+O´üÙ›¦«©g‘¶6ëG]÷·bé<±'ЛžBJQ©±ñŸ·ãÔ¿ m³3ã>`X®
+å,)¯ Éû	v‰Ëÿ Yªý*ÃÍ/ôDyy¡¹'s&£
+ÙAžÚº¨FÑÕt¨–9°CðÇËònNäÀ&ý» šä»¾¸#	IixsXÓ–‹!¡ï©¦_@Q9sMb­øÞø§·D[]ÿÞÍa控Ä	[\O} ½¡·»/7†Úutç/J†zvft‚—è'B1.„Md=懒ý›™…È­ã[ýUíÌS+£–O–Û4ú
+1ÎÙš‹µô‹1°Ñ¯ÚäÃE9ýq¾B¾´O×%êãtí°†½ô»ûU$ðba.ó`K®þ«RÊÜ°þdoœòìƒ4m~`ïȶÊÉv[Ã\ºžŽÚò¢Q»ÆÊO"iÂ&ˆ¯
+kGí¶Ð”„xS÷qBʼ|Ã
+aþÈA!”‘xLÄE¨qé–2ì³d ©YÁàëK´ÉäSµKЍ {_æÊšk
©ö|ìÃúFÐ&šoiQ„*Q¦!’ü‰»äh;×Ð4ͶaìzrÖX‹@ãöŽe¹žl“‡cêŽ[…þ¸÷ÔfYÃÚ0-¾A(ºýÓ¿Ú<Lßêd–‚Í
+WVæa:ëÍbźZÂá3w·›ôƒr
+¹S7¢Í“ÇXz­vZ¬
zF6û:dMÏ}ÄwQxFd®°wGtpëâùa/…ÂBs¾°LÒÔRåÆ7;EaÐV6ùÚÚÑ’É‹-öPÎì?ïÎ
+¼Ðã—aß«Ë Zqøì[È™øæØ;B/Y$ó
+-Î3í÷±ÁxÒ?uYF“üÀ15y¢Ÿ$dnôuJ:E3ªq}'Q%ƤVÄ-—˜ÝÞ y¯“ª¶£)ºEÛèŠ1°çòÛYœͬZD»mú~GÞqåg¾!#<§[u»ÒÃë©îÛ«„¸¹ºÆ♳\Héûolƶ à£Z1qS‚È˜æ]©a ÁˆN^ºEMžÕ g`­ˆ±½ ïjÿI¤ œ°a¾Ç‘¦ï—S´IbÚ#•{Þ`ªôá‹B•cPß}7ß½3{o!›&
+¾—3!˲-ŸeÞDö›¦Ê!•ô5¡~ZñÍ=ãȬ´

«Ý/Z!_D5ƒy%• ~9RB2²tèÎ	ÆH„q­¹I^CËŠ—ƒfg7zo6¶¶PÒŸJeU¬Xû¤*›|£U¡Ât;BšoAÄòåsQRY}áÞ-ÿR«œ‡þÉEæäòŠävdk*}>±Øð.ªh1ægH£¹†‹¥ßOw¹+ýqK}í¼zwÖap%Eþ¦4xÜâˆÎ$z‚À‹¥M—ôð3
üI®úºíêïâåõ5‹¯×¬Xë²E"ƒizØSVÔ5&7Bð·“^2¶U£!ã+ý$ÔŽZ¼7i™j£1h%Ë}‘®‹¶Ã—^ûa—}Éé¦"P#Í£~àÉa¢yä|uŸ¬
+’!é…6Ñ.š ÉsU(2·ÇR}wÓ¬è$$¤/¬n§˜Ûì¸)HÖÎqöû’ôYoáôxL›´ªÃàNP	AŸÖxYÁÏ+^:ýé׉×-=ìRÌ­-cø|GÅ ùåì> ù[y—	é“þ¸¬•¡?ìÝò¾õì^˜ÿÝöëy$	÷ÈGb#Ú|%LٝÒÍiq¯^ð’ÆG"¨hZÖ
+ϨnÅ…#˜Nvü[·"c.x?{÷<ü³°ÆO@sõÔ•KLs/ëîÁL!çêq~5Ÿ:¹A[¿ Ïœív[Êᨁ²&rîÂǶ¶µã£2ðáÄÚÒ7±ËêdV•­ëº]«
+kÂã2ûGöV$;kñ¨«ÊΧÒÇ‹FbW	‚§ì¾r¶^ù|“»õ­ªÞߤè~õ|5»›Þ¼±D†üý¥üýêþ—ˆ²BJ¥ÍÄ22ؽO¥æU¨¬½î2‘ÚQixñÜ®ÌJœïÄí|BrAC(—ä¬EjføelÕ°;xW” 3ª©*ÕÜ•œ^úµv’FÍŒë:´\ÞooIj+$÷,vl%ýƒé•zøXí»ÈO'Óß7$:$Õ—û9+âl7`ûFRäU‹’¤kÊǝa8ã{… ‡ç0€÷º?Ü
ºoªo8›ì\¨M û¤".OÛƒ%º*ÇÓ]ðFjü_”?ÅÒªNSrØ+ø¼öKɤòøYšºÅ:åq>þïñ°¿Þ£ñÕý I2…AWÙÂO¢/m: Ý™ŠhqËjG2&³ªJÑÂño «!uãCˆ/üŠ¼ç¹uùΊ‡£'É´ú÷®§+‰þtïðºŸN&ÖM°¾©½Ýñß¼[µ
+L,Q¡Ù
+>àr$'œ*¹Õ¤X¸ÄPøA‰Þ”Ž“ÿdFÔ“Éï—¶,²ebø5걟|lF™nÇå·˜i°7êºÃG"(µÚl°:Ž¨y6v¤;‰ÏôÜèNNå' aÀ
+ý	º¸ºLûSÈöý¯ùòzN±ˆÊç/.0³îšrTðåÐõ”
åNRÙâlË(:(â“0dµ?-G´‰‡—ç“K¨ÞÙÄÃOú'…¬¹Ã›=ëG´Bß
+`–±¾bU5\¾Ø%9
~n²Ça9 ¼|Ï97鬬²=õTyC‡Ž9+3Ö؈¾Uàd¥w8iƒìHѲþ´³GµV
³É+AW\œp1€7ÀÌjFÛ ÉNêÇ2ƒÃÛÊÝ£wùE|oBöÑç þ2#›n~¦3)úÑQK½…–qÌ#PžYülnãÆÒzÜþ4¤EB«Jå:Wnƒ÷õ짧HÀ¤D´&À«ù֍ôµ˜æ(ðøCº¹Kù'ù·Ç£@ôLs´ =_Ë3íl¼ŸlNãOpZgbôÊÛ/ÎaÎQ¦ü_³¶*#%%n=Ž×O 2~7ð¿ŒY½Ã«¬ŸÚ;Ü£ÍjÖÈ7è½£ñÔöï2öHƒ«[[†ß\Õ‹G—î.Ôè/‘ëŸq)ªJŠÜPg÷ð¾|󚜡H—
­Æ#p‰pYŸZÌ#!òý;ªA?Tã€rønÎ¥äÄÑ#Å¥^E¬7žár¥O;*!(A‹PŽK9É—š‚ÄuòyH·+]ËýË‹¦…05ð‹ØO(£ †Q¶Üv1²níYI®[‡ìd2ë’±ËÒW=˜Ïh%ÛrðEc—Q.ë•p§ÑÕî~Ꭳ nÚ½ŽïÀ«ê÷Rsº6˜ßzbð“îHÂE½ßë¡زîoQSK·>fãXùá# ´ÈõŠ²î<G‹U¬Ý^ô
fÚ‘Iî£-­.iØ®‚sRV„žZ-ßÖÎôÕå½{å¤ÐR¾³Mé
yײoðÞÍøz;\èÜw4Ù)רÔß7¢)
+"È{ƒèû~ÝúÍgÞžBÊŠ¹mõXÂÑ4™ÛñE>¡ö…ÀbSe¦2\L4§,Á{ÉãçBT«CÔô<¸žÔ.¸«…øôÖåme´¤ß‚™¶||•„ØP;ÈØÍ7#dúÅ4kŸí²ÌK¡p¦ô$j^ÒÝDä	)3‚ö·/Ó¹ŸS•háO]Ñ®®½¿,ƒÅb†T‘odËm0àx›3ÌŸÝc8ðþF¦=küBSí¼
G¨5XºÚ¨ïÂ\ÐõA™Ì/;\ook}€øz &TRlÝŽ~Ï֝½11ÖO<Ô9pö©½Ût_ëù…âVÐ/ª¬8ÆãÂv
K7•è²ÕÜ&½k%küÄö¢¯ ÕØoìc‘hOÖ”c—ÒyXsžÔ«Ä>Ž9ïÝ`{6Mðö¥4>
+ÔPNŸº©§žÖÖ‡ r¦°!Z[œƒyÅ;ð-SÓU6Sä]aøºôÍÉ/®ó-"¾´q
+Û·Ÿ$>$áâ?“˜"·ý~±ÂsEáÌ£¹9D³ù„ÊqgÀjkàê,¡ªƒùš¨W\0YÕàݝt¥Ψ!¢ü"e†w°J)—§.”,¡)<à’Ñ0úû9l§û¥4AôÁºļSüÝâÞNn(žÙŠO·Nˆµy´5Ü·16Ö(w
¯1‹ž*,?”9–ý)R,á#,70!¡¹J߃2aþx+è)_‘ãW펮âs¡2ÛDY˜]o—ièWª÷,i"K!•<Ï‚¤÷,•'>ûܺjì^qÌu¬«ióݍ«@RTÊ°Vdeà”ˆz–NmþRûˆ ‚ôYbvÙ^m“n/	>æYŒ2ÄüpÇçpmm>&µ¥Ã¡§¥ù±ØþÞ'ë¥÷»¾±Í§ò–yܦŠöqŸçìäzø°˜ÎL</6¿ÚjÎ +ùmTQñ7ÕQ¢ßÌê¸þ?˜ÿ_àÿ	ˆ=ssr Ãì0ÿȘm­endstream
+endobj
+119 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 328 0 R
+/FirstChar 45
+/LastChar 121
+/Widths 329 0 R
+/BaseFont /VNZSRA+CMBX12
+/FontDescriptor 117 0 R
+>> endobj
+117 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName /VNZSRA+CMBX12
+/ItalicAngle 0
+/StemV 109
+/XHeight 444
+/FontBBox [-53 -251 1139 750]
+/Flags 4
+/CharSet (/hyphen/period/colon/A/B/C/E/F/H/I/M/N/O/P/R/S/T/U/a/b/c/d/e/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y)
+/FontFile 118 0 R
+>> endobj
+329 0 obj
+[375 312 0 0 0 0 0 0 0 0 0 0 0 312 0 0 0 0 0 0 850 800 812 0 738 707 0 880 419 0 0 0 1067 880 845 769 0 839 625 782 865 0 0 0 0 0 0 0 0 0 0 0 547 625 500 625 513 0 562 625 312 0 594 312 937 625 562 625 0 459 444 437 625 594 812 594 594 ]
+endobj
+328 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 58/colon 59/.notdef 65/A/B/C 68/.notdef 69/E/F 71/.notdef 72/H/I 74/.notdef 77/M/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 97/a/b/c/d/e 102/.notdef 103/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y 122/.notdef]
+>> endobj
+94 0 obj <<
+/Length1 1823
+/Length2 13445
+/Length3 532
+/Length 14470     
+/Filter /FlateDecode
+>>
+stream
+xÚí·eT\ÍÖ¨‹[‚{°ÆÝ]‚»»´qw‡àÁÝÝÝÝ	îî$XprúÝû|;9ûü¼÷×—f0ú™5WͧæªUtS’*«1Š˜Ù› %íA.Œ¬L¬| 1UV +‹(%¥˜ÐØÅÊ$nìä°òò²$&à7à_>N>N6$J€˜½ƒ§“•…¥€FŒöŸ$n€ˆÐÉÊÔP0v±ځç05¶¨Ù›Z]<™ "¶¶ Õ®p¨Nn@3&$VV€™•©ÀhaBbþGIdnàþwØÌÕá†Ü€NÎ`) Í¿4i`I3{­'ÀhŽÄ¬h®»ü¿¡õß“KºÚÚ*Ûý3ý?ú¿†í¬l=ÿw‚½ƒ«Ð	 `otýwªðßn
+@3+W»ÿ•q1¶µ2YØ,ÿY9KZy Í”­\L-æƶÎÀŁ ³ÿ– wî_
+ÌšÒºâÒôÿ¾§ÿS6¶¹¨{:ügÖ’ÿŬÜ'+€¸½¬àDðëÞüW-	©½™ÈÀÆÉ0vr2öDï0q¼YV 3  èffÙ»€/€{â0·wBú熂ï9³ù¿bÿF60ZýAv0ÚþAŽ’ÿ³ó˜]íÁ-þW'ÿ'ÌÁ`v0v‚læEYÿwô¿’Á%l]ÿÀELííìŒÿD8Ì–ž–@Пø*pY{³?!n ³³­±³åŸ€Ùèdÿ' öµÿÃœ`Q÷?ãœ`EK'à_ÿôÃÞÕéOàŸŽX¹ý•Öuß«ÿ0XÖèö—+ø¾0ÿ5s‚UAV‹ðü³f[û?q±ÿÓZ ó?ÏþŸ xn‘?žWôçûCà	ÅÿxÝÿ!nðª%ÿxÍR¼^é?–ùCàzò\Oáë)þ!p=¥ÿ¸žòWPýCà
+jÜKõ?^­Æ×ÓúCà
+:ÿ!ðÁÂüg»ð‚]Lþ8ÓôÏf˘ý…àÕÿÂn÷_¶³øÁz–!Øï¯G…Üë¿ìdó‚¥þzXÀVv|80ƒþB°•ý_¶røÿÙ!ØÊé/ügÿý…`+—¿låú‚­ÜþB°•û_gØÊã/[yþ…`+¯áÿ}ø‰ŠÚ{x3²Ÿ'ð–ºÎàåâõý?2M]À§Ë¿þ·€ÏÐÿas+ð‰z M‘VíMù?['7…–úIäO—ÁÒAŠZ4Ç)Ö÷Ìu¾^þ
+i[4&çH·Y§ýTž†‰r{HâþBàÙá£ò]ò2Ð1.eáíÐÍè0Í«•@û:MÁóÀì>øj{Óüí'¤Òìæxé7‚ÁÌŸC?r•iÄՏà×I!zõÜzÓ?sqkK¦Ùj„…ÔQ±“ª¢¥8–†s„m¸£}‹‡Ù˜
+ö³Ch¡_»²ïpÅxÊGÈIxÓ¿Çþ‚nÚA®ºK‡¥z$tVR††Zû{`¤Z8`¡æ8„]EP“	ÎÂ­Îôú a8ówR"\Áí’¡µC›ô•’Ë`³hߐÞв@v¹åg|¾}Eõ#‚×Û) é7¯C.ÁŸb;àÒ5Á%7FSŸV–¹ÕšWw0-}Ë‹å6Cト™ƒÐ·ßÞ®Âi"¾EÎHV{hOÖ¢´/~J&ïP†”O²p³‰ååTq˜‰c…¯vDc=™ª·õu•ç¢UÑ^fÔ¡|º)16ÐíaL7…U‹+ÕšDòü÷¿y|žä4'ÁÊÍB¢}ïm¬êÈòñ°
+®EQÎÍí°½.¢¢C°fÌÛ‹ÿ­DéœwâÙN]¯®c ëN²|yæ7
ÛùŸ—Zé–Më|ÕŸß	
Ñ8qÅò‹ºlÀqU1•ì%vš `æ'e[‚ŒqÌ-–Oûv‘PøÔºÝvE“ª^¤œåC¶TY¢£¦p'^Áaɨlé¹Â°å±¼æ7ºêò4%Ó•÷’Ãå|H}yÀËtlY»MTn;͸jõéžH’‰Hˆú€‹Öä ô=!/ÒYÓÂòÆB’†s¦9Ú{ì÷ůû')ñ~»ûâb?ú»iøÍÿåòÊ ¤•YÍZ“ªö7’ÕÛpn°©>KÍ¹µ³íA›6Këq¤0E?›õ썒T£oC8e¥yêý외p·]Dêæ+›	g’¾©™'iPÔµÕÙˆ=at¥­GӁq
|rýð[ƒš°ë/‚™_œ’‚ŽYªþJöîrto7ËCüÌQ©o¨ÎmâõSØE˜RÄùùß=>
+6ÈN \Ó­åÅÍw—Qî‡Cm*á¶`8f‡à_‚FÌ/Ç1í#¹áöWUŒûLB°f¹—Ù5oS¾S‰û’dåÞÿÚy;­-®èëûÕ#æ4Õ§V"ŽÉ_Î;ÿû»[õ—¢wi A›FªÙ…F6❘ٜÚOj-{Ûhõ(³­5v¬dÅÜbj°óŒ'CMXñ6¯â[h3âP?οÒ#LŸetöT5y;}c)&í›·ÎyfIPšŒŒxuª”«i“´K*+‘'»zfú‹0{&Øm.E\&÷1¥¯äkz
+¯ ‰•¿	ºDÐü·³5›˜ÐC'­åRÆ>5ßôö÷Uµ¾î‡k2ñG^Y™9Þ{Ó»b‘´ì6¤5¸äºw5ܦÐêèo\å.ŠÜ_á"àÂÇõÐ?«Gùÿȉ9¢‰=ÔB=’T?P´äð”úHµ85&p¢–òS:÷pC._ûÔ
'p£–¶B6Z™24¡{›Ñ
+V¡æ‰ÝÙOûäÜ|¤1 $}?Iy㥜¸xQ½’9³†ìW)!)©ðë·Á<9¯§×A•¤Ãg
ÔH^Ð1Þ—2|Ý+ˆŠF/˜á
T|’Ì£
€¶=§¢âªÏ ýý…uvóÆ»µ%˜]IåC"°94áÍŒ¢6ũʧIkdE5‚£5®U© h‘`tv,]11¡-ÇFH|¦šíN¢u‡\Í
+«øÕÿÄ:«O…f­ûN²¬Ã(óÎ'S…„M‘-ÑØ}€ÛŸÐŠ ûéÓ綛õöB®ïŽHDßåƒ{˜¬r…w
+¦žø!ÉS®‰6’ÎŒÖR.0…Ä ÈDÚˆ
+œ¯F³‘m×æTÂWï1*‚·Ï·c_òòˆ4ã§È<ã]
+§ª>d$x]Le`ÀnÀey²Ì
wÜq™æÔŒtæ u)vT‰ )QÂr#¡ŒKû7 .“ÃéÚZg~¬¿—ù´zv˜Â‰é«àö‚ú£7åÎï’rxo¥”´{mÑöórµo$¿çSé*­é«”e–Jv;½{¤ݶ¬>€“·û[a1Ä¡ž®Áœ7,qGÔº|~*bùV´Tá—Es8tC¿_}YÂQ•-|óŽwüÊ„ØF˜<’ÞçqM:ÔÓ„K~him¦½Ù;Tp*8¼ƒ+ªVŒ„%.;Þ®|WÜx\9us™Æ_”ÜŒ]DùNœÆ“8ܬ
r(-³è\Qíñj‚ñ_Šà:í:”‚g2ÇFd
F ´j™ äW®‡…$½tÒª0BöÌT”g¿A¡&	jXÜ„pï‚©£[¶,»ÎòC›}ô>kÍdçs
áÌ–#‰½“ΪòL9mVéáÖ@Á¸L~å–úX[ ‡+U0,f¢`_ÁVÈ¿¨Ëþ1ß™n•ÚeÑ„ 1}õ¬ÐÔŸDä;]UÉZ²KŸ3rç^Þ£L†cJ¦ÎoîÛÃ…OP#ÀTéÈ]¢ü1ú;Å5*N¢÷# á` #6G´ìH÷öYmòJ–Ÿ'FFr¿3öÕGDгÕYžc¥j9½Aã@ÃÈ–Çê@©D^<oÍ3‹"…½/â‰(%ô¢ê–é6Ót,–ç~ó£cx¼K,¹ž@¿>záÕälŠtä”
+,‘I€é®„ÄÄxŸÕE ô^ùyN”è 7ü•$ R(íâ4ËÉò6sCûX(JV€V³sK7ï‡Ðs
‘J=ßœoöh_	7þÝo ÐŒØ6BõïN.ué‰×ùDÊêÉ/zœ•ãøã’Í23¨+¶÷í¹CºH¿Wq×J
ÊQø*†%ùÈg$Wæ-.ë.ˆÃÍàÁq…{o9fœÒ+)Úû¬#ô`	øŒ&‹6hÎue‘-Z®_¥ÙwÏó–h]’ð›-Žt}ç6\Ý÷­²o|u%n®Z化‘©>¾ˆËå1ó°’¬ªšÒº3¯vãEc²â?¨ôBÝ•ÉñÓ4ÐJ4²²-Y[‘ª#èHîÕ2ætÜó4+ª;­ëD§lÈ9äÃãÀW8ÑÌWK`Ç9èw1☒ýn'âÖ%µù¬ìi¿ð´36cÏÜ™2s^%BA}¤Ì<ÊÀ1!£	íª‚´æõàüÞê%ý܉¤â¨ˆÐ?o±uDE5G ‰¯Hp7ÂÞî±Do’—6#ÈæôxóQ„¢ ÖæThžØçÇeà}–§È8ýC‹B•ÁGi]-]ÚßvaÆ»äa£<Šr‘\øCH?®a9.µÁ^pùUd8ýÉ)„5·zPâvYüü æ éÙèÁv¸ÇêWÛHÌ÷ú3!^+kêåû70+8Qï~€´0ü?®j‰Ó1~HÿËàLö€ö„iËéü»EK̸Ñ}w-k 2­mù¨fh:Èùe_ÖúUö›9}¹EV#‘£ÙJŽ$ƒÃŠ@šOBQVì=ùÃû.׉ÅûT‹žÖŸÅ\°_¥ÐñXÄŵÃÏ[§‰ @uê5À>OÙX™jÂ6AÏ#ë,# N©5Õ@8óÒsRø-ú}ÔÏͯË?äó&Óé°6ﶥmdȧ7ïdïҐå¸æg ø–Ì5µý.ÆŝQiãò	óŽ²Ø•hI“ãtRÀ}À¢àç †•2„ñE+ãÉàŸV¦ÐÆLÑž—X“õ_®=ɬEuªº}SUU0XW/\8yMÝjBôï𬜜Gõ’ªD[d?\à²u[~ú	»ú3â2ã+®0èÔZ+w×Z_Qýñ¦’NoM’¤Ñ’µ¨øÀH‚DÒÂH?uòéÚЕêG}Çù-EÿþŽuŽîì´}"—¦³ö¡œ”“nÔNqÀq¡vmÙCRýHHÍ-<žŸÜù¬î_[ÌJG¤Ý!‹×SçÍѲ²Î-dö„Jò\ö·ßò9|cÞAfe
÷Ò*½»ðWǤÝä“ø^ž¦±74ÑϧS“Ì$;ŸrM%G	K0ú%=Ňž	mXÒ0dG6DIl³˜¥$’Iw-=ˆ
[\p‚9jŸÆL—¹·KCyd&AØŒ~êiÍh«Â;²^>F¦ÿàؔ¹œ)G‡°¬|ÈFÂœâ¢ÿð}À£‘•=^I™°5Ù$Jmǁ°K‚Œí]JñÖÛ¢¨²¬Ôz“r+÷a®*ãgT¨×ŒŒ'ÙÜäŽÚÌd{¡zm¥ä[˜ùûo´ÏÏoÕñݨ»P†5U8_‘J³o¸¾¸wz°òaú±Q|o<d«+‚T¾‚Ö'ò¡ýò1…5Šú3gMPü.^ŽŽ| [7V¾÷z¸®‘báÍY²œŠ±Ž÷¯ýo˜5$xUUz£¦qsö\#L·24Þ¡6‚*–í¸Xoß$±¿8<m¿#¦ÒÍ)X942„Ñ3@%’´A\á'ø))É‹•˜õñRNòób™‡…fVGv9†ÒaY˜FòÕ\3=иbjí¡ç¦†™hôR©¿fJQ#å>V©."¡Mre†ˆjE¹Ù
»•]S[JìÎåöÞƒXô”³âÎ<Ta.]l=ûü¢EPïüï+ŠŸ¨)•za(¥÷êY;^åÝBÞ:»B‹ày_Â_vV*³ÝRXÚY
+IgžßôzÍ„Jº0§lž¡õùz¬ñ4l$‡å÷M 7‚øí·ÖXØ”t!Ð#~]÷A^C߸C,ä螸äøï®1G;Ÿ}ybQÎß%±D,†gR-œ ÍјÁÆPÄ¿‹îÔýógÞoed^͘¾£Ñjm5V¡äÕÎqËGCl‰Iù'~̵„Ófî\¾÷,a\—lìËÒݨg2Lø>)kÚá—áó¨Tí–Þðû't '‹]ô3¥ì@‘CWdóÓ D~¬ñî±Pë ä°²:MG»¹ˆ¬I—gùY0N%ÖŽEÃK$kŽƒÐƒ²+%oÌàU
Ö#æäœúÆ ’Õ‹R'7™»ëªFÉT}ç¦z{s¾kÊx½ºØ°Ì©ƒŒ§æ)åò¶þ*R³„³O9c
-÷-4<0ñÖˍNÁ$ÿ%ÿÓd9uJôzâÎÖÄÉ»åR­Z3ÿF`ây]µ6@ô·,ÜÆ®Ù,JRñ¼ÌŠ{O¯®¢«	´õ	Ò“y r¸µ/Ʀ¾¿MBè"<Ì@B²Žaxô«n53©L0T)̺I*bÆ-ÙÖ9UŸ™w¢ƒÇ¼‹5zÙ~WÎw˜{FT³òx5î*âF›©@ÍO³&Ôî''EmÌû¹
+ú§CðØu!œ1pæ¦È!mètlu
+‚ìo=Ã-‡_e7“] &õ)žšf¤”ÖN¥dIcR’0//øv&æ¨Êì䐈~ª½……ø‘_åi ÞÕ««'j3“r
+(Yˆ[WXÉ“x7ØlfNHß0*¶2ÑŽn”Ïý·bœE_)Ìš³¯[^ß#Ýã7¼_ç Czc“íîõ–Ò)vÝ_¯×©èÇÄx-•îwìõXÿ²Bµ(zuq¤GoÌBzõÅ©nœ¶¢oÙ”zÈ·u»IØ<]¸ò¢¯Þ
+yû—¬õhEM#ßóo50™ž>Áû´‹°@ÓxÃ0ùEUªn
•%v5gc”T­sE	µ'½
=WªH,ý Q¯N5/…tsÞ¬ˆœ‹É¡¿Å½ôe‹ê.ˆâ8XXËŸì‡*I7YêÎ$cöI}ÈîÜØÓHAU­ý¸´þnbq® ƒß=øóñ”¡öÿ²»ÆÀ~fÁ†#(B”~dõP\± i,Æ|ÊÿN•ÁÄ°36X†Ïiôãy	ËóNxݹh
î'¡^M45ÝYŽ>†õ hVõþŽºx¶éjP°ºMf…«Å;|iT³6
+±[æÆŽ#î§CŠŸ¤2½„žÓá[üó•ÀŽádÌIçŒúy¾Q8#Ú¸’21<qϪ¨¦À@Y«‡Ñs‚&s T"±[AÉþ½ôæí5•’¹Œ=ž'3ÀýÓz4I0"‚”Äk8šªiùBDõ‡¤p?ä&µ4?^¼WÛ~Ÿ²hlE³×.ü-´,j…®$»á¶\³EÕJaˆw-sóPü0:)00”-±VàØÒK"£ŠÀ]ºI@H\<5šÿÛýŒIˆF-ÍÖ–›ž-¨4pŠ¢3¢üšgÂ÷òó¯ÕSZöåvî˜a®Qn®çéwxEYé/Ÿ„AÈ
?Žõ#_	TÛýíDteJŠÇ‘
+£ØÌc)¦Gv]q4ö]#Z¶3`Z¯1§f{'’ûö´Ü,&ø0)Œ“©¦½>f}‘Ga³¼›[ƒNÎW•MÌ$÷î`%%ì,H‘†’·6^kJNæ+–Ɲ“Ôhí4¥
gxEÜ÷¾ŠÎ>ÔXíó­Ô}±¿²ý¦°+
k#K]võMVœûÓnoœeÊQo`åî	³Öÿ%ôjǧ†þ¹ Èòí8´ÍÄ`)›qìaéKeƒHÏN1²‡ÁÑ—áÛf¨íceÖsÝ%ö]ŸZXêŽm¾š}ª‡·–Η×
+¸6QO{t&é鲫5³ÍõŒþóFá8d2ÖÀÇ ar^ÅÙµçë[¦ªEˆÎê±™>fŸàb¶#ßîø,H)!Ããæ&­ñ»ûåNaŠh¡‹‚[z\iÍ”–Úû!µ÷Pö•Îú¶#êbìÕÚðÒwÓþÅzÐE‹r%u0ýnÞª\ˆ¨qÆ–6´"þÊuŒ¯ß$d
˺à<åÜ/·Ïø<rñìu”-:Njjz+‰bŒz¶±ÃځAØ/Sí#á,iüàaD¡f`,ôâc$üŠRAckg¹ÿœÒüý•äÍ*úÂ^ñÑŠ$âhY’ÕËû–1G¦‘-~K®„…Ôâøz¬ê“ å!d¦¡	SÖÓ'òtŽ%$bX&½”™'¿ÍFC¿¶Þ¦AeôOI.(Ô¨8’„93MalÀ	aí¥:qãgOÝ¿‚hÖ¿ka’lc±”Nÿðz!5{ôÈV„¯¼¦¨4lõ>l‚ÑæzÍ#¾-:êPXóH~ð_
Ë»÷û©À%÷&²®5…HtÆýŠ.ìyL¡FÆÒÐÚTõ³(̹B×›…vÜÇ(Å[’?%Âjj)îҁ]°Œªøö~:üâfK8µ§†¤Å|4„=ˆõ•+¾Ç	ãê=tÂ{õeÃLc"HdLÀÉÕ2¢ˆììt."•"Ä·¡w‰Pv–£ºÛˆpáe
+/دTœÁdr} Ï±¼å!Ù©ù=âK?XHñá’¸YŦ¿ÁÃ+5šb¶%§œ·˜s-‘°b^ŸiýÎ{ÓÍOË¿}
+ôDœQyúTÁgϧÎdº îñØŽzvȹtèΝŒÝQО…ö)Š@ÔÿÙ
/:déغðV7]B„S;1ÿ)~”©*gð²é	Õ!úèz̓͸z#‚ÎHý.R`ûRÏŒ· ø^üš÷”!Íí.êJ’_rb5-˜c¾p~™Ãüs€GÕ·
7øôëf‘Ó¥I‰#¾FWy	­ArzÎ9"öe£óÐ<O¸,Ä>~ò“؍þÖÚ*ª6(/yÙ¾ÞÉ4Eb¯ÜÚ*}8vLï"ŠêNõ 
Æ"†nœÞiÑœ
+" Þ;û“VŸÁDõäC͍1O×Çùê·øOfã!»lŠ“ŸÙd5N…‰HQnwš=óqŠ~|¡v;ãõü@<éåƉx§×¡œ“!ˆŸ
+U½p3NvvAzPÛ†
+W8œ='Þ‚ôˆþ.À]‡6ìƒMÒNËû÷æ-¸"VÍ/.»$çsßèfgŒžíÐ}ÒÃäß×K“µº\E——=ašè¹%RIòf¼Xg3ù)ÂY˜FLň¸˜lÃyÙˏüèâ]ðâ8wlsKG}ûÎŽè÷ÅXlÊãì…ðC¹Ôÿ$LaWlÞ}å$gMX¾0Qóuˆ)vôyÇÇ—Ÿ'ðuI¢š|ÖÕf®XŒœ>¦Ä:~ tç!¤ˆÞF}D’ÃgË׍$²"þE¨üuulöãK¢†‡Ö|ÎÃ(Ú=á¬áˆíH‹d³„2%9¶¶K×1ñ×¹s'ÈjÅ·…1q¯rµByÂÅ[ý$v9‚$‚n¬ºÎÐõ:“W› oà!
+#”>~DJD½¥‹ÂÁ_Éc+(oÖnf•#@lee&Áo¼G —KÚkðýúÿÞ÷Ê7ÈŒ5G•WÂRÄ+ÖloS&)>¤µcdÑ.î®^-Öƒ_%6MÃmïL8ÖèÂî*/Ûe‚Ô }'ÕIG-†"»mò<¹(º‘ŸDÑŽ§=hˆ385?þm#䤩#[AÄ
ŽLO§¾3þÕ
‚Àý=NþðNTJ¹‘»PY~‡{i!ÈpŒŠ¯Lêôƒdª©qÁKŠÌ •É>®\tmL‰Ò |`ˆÛ3šœƒÊ çútã‘MùŽFIC¯–E¦ÔØ"ö’nágóâqã©ó£ÃÃ| ^Õ!ºèO3…X‰Á¹vGš¶X%ß!8¾´-Ú^k†MtŠ°*¤”ä0Éœ²Ü¾Aâ>º=áÊ´å«0ú9[ü÷ïÓÔ0«Ÿëm#Ò_"†N¼°!áŽë½Ø‰Æ¬§¥j†šöµ[	kU–TO_ä`¯¥;p¶îâò ¡ä¨H¼|<§u‘¢d#qf<Ìé#;–cGNõ™BŒæ!úñeð¼V²â+_ûoö*¿™Ã狇W}Ì«œýMV‚‘<jbK€ªÆcRY²ZÒ‹˜y½L7¼:[ø¦…iʼn” *MÇJEÊC¡'P®e¥3ö?†à.žkþøhQ-k=Ý9§ŒL5!)óI©)Éí{\
ÇBU)¯@Pw{»UÕ¯Qƒaí>»ÐAÔá—Uü…°^{(õQÄ¡äÃEZe2å÷q+¿É‰KL:4[«¯ ‘÷ü/¼ÇY2¼*wqIˆBMÛ, ´¦ð_¤džŽY‹ñ«IĶ¹ øR#}‡wNW~“¦»ê2Žá“×äa$o’®1’ì¼QµóÖžG·÷¬Ìò*mCnõL	±ÅÒm9¬ór·u§îvK·ñ€–—cá&‹à½ÊMpòN”o|”R¡R’&¤Ò}´¹sxf(£ü¾6fšëÖ(
Õ£O$¹J-aÂ0Mw2šö•Ý`·–b™jÀIXì¹eÌwT¨ òÖCÐxgß··ÎY«ã }	òŠA!‚sÁÕxúSx‡|$ieîPzI«1É‘ƒÝaÉïù8ã[K¢tŠk$ÏdZ8×K¨£}Y_Ô—òbª±Â§¨[n†ÁÓ…ØÏ‹yx¾ ö“ögž)ºÚòÆúqKW¹‡:ñð§…yÛõ#å{E;j£ñop¿÷ï’wõ~Û§fÜõŽ–î1M]+Q #£Õàùð5š!žòë.Íáofá¿ÌÌÜ!7PXŠ¬£-«¢ Ë3*É¡aënö•ŽÂýLëå¼¾þYl,µÎÔÝ9²ß[C
ÆÀ¥ºÅAÄ¡4Ck½³S2u®œhƒÏ^KxÐ3vˆÇÄ¥
%VÞƐ§/-¯8DFê,‰Ã¦ci׃EáWKÔÉ#ЇÌà·‹Ââ™Ñ&~CvqÂ9ØÌ…ØÓ­  Qg#׬Z[$äɝ°Å!üÜê"ÞÞI{7v?Û¸%è¤õ`Éê_S0U̦‡$½%Ð$¬ªûx¢ã°\?‹Csiª‹ŒÎÊèPL<ã0»ÿ¬¶/ïäÆÅ©Uê¶tm`S¯h-¯ÑA”—òÀJ ÎaÅ<:àè·ÚŽúöŒÖžCXàzXž*’v<×1škþé8Œ-×™>ªéX—ßÇÝ+DcC;xk€â±Ý÷–þáo*bÐ]JÞûiTûÖBøu‰æž›?¯"¿Âqþa ÏgݾÄ~†¼†Ýoç“~«×ìµ{ØâÉŠV±=*¢|èÁO[ýÖ
máÞÝ2E6zôÑïp`†ñdb¯ÕD©¼ªö[y™)ÃJ²	Z>©¸^DʨFHC0=h["õ¼–†p5ÜÆ"ý¨Í%iÒ©y`Ø%”ˆMüN#/£ Ž’ÿÅüÁ3tò–¤kZ€²'ë ÉBDð]¶sÎVÃzRìf°¥‰FEJòª1
+¨ï~¼òŽF6¹Ê£}idCÞºl’žÞ™6H4ÚafYÎyñT+-,Ùw¯å¾ÿ¼ýšGCâ·ÂBT£Ëeé–·d
ÂùgvÒ3¸mòb­óҝº÷¨ˆ€ÕÍ–Ž^^![YwÃ?4»ãgyK^n)çÀmniþò _ùpY^½#â'¾Æ\ºò
¦'´çÕSÆOŒ[ÅDxëe¬8Å™À„@¬3yÃb̵ɴ{•èìêÚÉòP»:TÓ—ÃD•øÙ­o"ôqTš»¿šy¼£.åu[ŒûÑŠÛll­óvVôä/»8á±9qŠQ#ª9Û0L¤ô(š¿#yÈt§—O/ÔŽlñ´Úg¶94FQ%Ç!†gÈ$ ÙGBPh[èйµL(YxÚUý
=
<RVe(´›q9¶Î“ñq^üü{N[*H#´½­[|li#+÷ I~°«ù`ô, ;ùµÉ³ ‹§k§ˆ+"`µ†!wîK»ö|
>SCÊç:¾6ºG…þŠ«÷⌃¬x¬ÀQ)ÀæK‰Às4
+)@{f#nt3\ø>ÓUD"»Ðmp‹èEÄ°œ­jeêÂY(µ©f ‡JÃY:SóC­Ç¼˜†&Ÿ…L×v±cªhóˆæ!=44·j!¶:ôñ—Šº›Fº8,È‘èQÕ™ßlä>2íîBA>¼8Èîw­ÈS–å^ÈæRÉ¥ŸMùLóô×ï”M_/m=·¨ÙÓOMcIn¨„Ø"6ÔõJd»/íNúºµVÉ)‘'ðë+‡FóŠºÐ ÔÀ•l™×âÓÒF>͸ìa‹:|Dj“rÈY–yÅ©0Ž1ÎÀ‘ëloÄ8MYNé"¤½à¯ÂòQc{mN`ÒC[˜úaŒuÏO?¨PÞ5iå2€²¹HÌ¡eóà§Ûaa—Š~T¼Î!Hˆkó+~BdB¤Á²Þ}”ßHuGÒtZ3S†Ñf1„Ú	™B‹ÁrjðŸ’c?*¸´ÑãÒíMÜ07~¥×ÝÙPëà¹ÿXC¤Á³y›ÎÌ ™"öå.¦%aþÞ¸D£·È“G±:†¤Æפöµ8èÆH??Çc
ÊO2‡Ä‚·5”Åþxœõkäõ Jz[»½hóΓKDïÇ‹÷º°æ‘(ÌËÄü-t¤?¼7{{%àWõ­ô?­£ðépÖGà«ûV›dL èh—HU 3MŒ"ª|êÉ –Ôé|•Î9/{2‚zÚ÷+ƈm^r"[tN(o=_aá3ø~)¼0@A©Psy"+r³pñ“sTÚ87BTyß2ñ»˜zT@C ©+ÒŠTü
÷)Ÿ•MäáK“ü˜oz™éÜÐÐ^4©Iß<_4î“ïìeÌÞíj"J”ì~£tGvP¦Ü–¿Øñ½Àjá’³½ý}q‚ÙôþnÒe*–ÛQ‚¢§Ò!Tç–]vÖžEnn óÅúw¢op n~¬ë£%S[>j‰)ºN'¸a GYLðÌ‘dsÆíódà,þ%âsn7ƒ²¶È+ÒöWuÂíyó-ÓÙÍ´ºF3Š¿R~ÒQXԐB5Ž çgH¨Ñàv/Ó®·îuâ-wÝ-ú´
>+‡Ðw=³+§2 à‡6~g]ºÛ±¡Nû(Î×ï9F7H+è–EIÆiÐ-)Tß[~µõÅÎçoÕ w‡%ÚË.-æ‹öŒ÷%¡ƒn¾Zøq|æ·c
ÑT®[õ¬eNCš1ÎAv,àY¢RBè-¬r5vûõtœa™$’’Â
'OU!¨Ý•4عEböä½@ñôÉ÷ÆP
+Ý >³y±KÍ N}ò8¡<ï×—ùv¤;À!´lû.ßyÄ+ÝWÆœÜ·²|PHT®ˆ/xùÞ€Ã
+Š¥5‹Uð,fQÒÇö5ƒ!pY¬–µ?eÀq\i6Z¶Ëß–KÆyYó}¶çˆ‡)Åžãü-5o¢By²…3Ö",?Äïo(ðnØ!cÖ!㪵•él,Ý=Šæó[Üö²ÈL„}ƒ‹£;?(éfË ¼Ÿ&-šÐe5†¯óv<!ˆIÄÉ¿WÛsÓ‡ØKyO}¢Nø=¸<¹Ÿy¶JË×4{«*ÝMÒx ô‰ k¸Mz1µ¼\òKbkßO¾kûúx-Hlyºwë˜c,K0‘-ûô)ö¼fRËŒ¹°Í¿è)bñ€ÿí'	ÚGÎN$9–cõÏÖá±íÊPÔŒ—ÝgyÝü™cum¨G?‘̓kxԆ˪‚º:;oN/Ü,tŸXœ¨wºÏfÙn˜ŒjCž@-|ä<ÊZ*»ñdFëþ<¢AU¸ŽEM°ö]’JO!)ã;8$ƒߨ©ÎÐ>§^™ä¿)ÆçžÌépξýÎþ&Ã'‘ÈÉMZl½°ØïŽà*l¢?€Åcs:¡Vªyyï°—Ì·p0˜ìÒõ°®Ou;$ô=±‚‘#ß+Œâƒpç=dšÏ/»4À%oc~¥#ÜÁJï­¦k,^Ó•Axˆ•®ÿÁ€	å2¡3&1˜Çê*Âc,]BK\œ/\"uh϶…O—@`¯³Ñ°6nMCðÊÅÐ<=TE3ùQ¹¿óçòã­0‚륥0W‡€ûí}°ž<cæÈ/X#RBu‚Þ|bI|’¾Ü~WTº¹«š+‘\mþí›jKXsç	§…zLòÕÔf·FðC£Â
g×iöŠÏÚÕO:["7)Ý+S…>þÈ;祘Et‰ð k*ÞÙO²Á#ÈÀ¤Æþê=N¾'C–µŒoPz›áÏ×-³KI¾ð³t-ŽrŽl}Òæ8¤—QYH²"RRÈ÷_ÑPHë×FËÈáp“Ñòça‡Ok?Ì'<†öœ+fzl§¶jÔ£òoU“hÞ_~ïÈìø-RHw&5 %?Û~‘eÑð+]n|³N“6
+xHÜ’D`y¶ •á«çŸ¯Õ¿¾‡
+H¤å (ÄÙ—Œ†ðwB2¤D¬¯îrv1@ÖK'¬Ÿ“ÂR¿ïÅÌÝ®ƒgMá7H$¸ª·Àôå`£&`´ÉÎG
O<«›Í|¦™"˜¸Œo‚þJ¡Y:Ã[¶ÍŒƒYÀi¥‘dŸ´IÁ„¤˜³jc\Ú´Ïf“4–›Ïãó@×€žäˆ»ýTÑ^ÌQöR¬r+]Ä hªÁ{ñÖ±0–hÕº»ùb{?JÌð ·ÃVI™ŠÿMÎïªMÅû
+®rՁ2­Å-¼†n†0r¢~:SšÝ\¹‰Ä:7áŠNëKØáí{£eçe(–‹wŸ00)ϲ_,N8ö+‡TÛ=7Ð{+÷TÛDæ:sëRÓdÖ±¾.\wp§íå€=\6…׋¼p"˜<œ„Ìdu‡6Ð5:°[•üͬéÝÞc»”·ìÕ`2°åA`¬Û÷8É„ˆ›Û»JvMå¼Ï †­PwݬŠ<õ8*ç¾I»JÅHNkâGg.s(¶jù.LÙÒLf·“f„†Âì…~ὦ¼¢÷'ú”š+^»æì‹Ãÿ|㋪MJˆ°ÉFÙá<e•šÖ¤òDqOŸ”šB¦7ï´ìàÇÍ|4ç«‚¡-*Z´þø8ÕMl9ýs‡‹ckÌ ÝÞ™«¥hÛ>®¤RÐ=„ÃÞSZJj\¤VÞé.ÐPã+3Bš|¸/t
Û1h¼Ã™dqYþuõsx•"†V$T¡=mëÐÓg{ ä´FÞ–^Õ‡¯pÉ=[c[ÿwï›ë Ø%ÕÁ‡øF[­­Ö!=ÉIBßÊz•âøÄ =èÎD(ÊæÐÁÂII¬•¥3Xb¤uÌxE7À‘C²sI¿ü éôꏦeLj'–”em±ã(úî?½Š¤É£
+¾tvÛ\‹ôŸ%÷ñ
Ž_;à.j¦	vøÌ<I¬¯·OÉÙt@敏Ð2ùú ·›eÐ\3ü.ÎP"Ïy>à*-˜¬œœéäÚÖkT=ÈÚ~!ü¼:X_K”;œ
*Â0ÄƱMà`vòu@½.|Š*¸,¨`ý£|ËÀÌRO§Q™FÑ‚…,Ùs# ŸòøE_âNÈæþ}gWÁïëC˜éÛÓÀr&ÏÝ%:O’ƵÆî2®Žð4]ÚÔyî¦,O2š![£˜“HÖœhnš»x‰p–Ôڐ£.¤x~˜·¾LäÅÃrñ€Ùžó푉£ZòSÉDÖç´VQªV¸uèT‚Á’xê›÷èˆÅÒُëÛ+þáÊ$ìõÚq[Ðox“Ì¢/Ô°µx¢¨‡Eóæ~c?§\ɳ‘z+6{õ…—ˆá«·PMçRÆIoÝF”Ub·žZI¤™äu¼èsÒJLÄ">VX~´õð˦kêܯԔú ÄYx'7…-ÐœŒÑöúè»_|oˆôó€‚÷d(R??±a¥[øõ°`“í=ÐúÙ®žç·êê7ƒÉ‡è“Úêl‹ÅŒ6Ù	Š ¶G“Ö߉Fdû_õÞQ*p©‰^ð¡o¥‹P–‘Sjb×´jÛFõ<ÿÚNZ‹jNå)ÞUULýü^â‰?íÑÖ·w¹ø¦]ƒŒ‰½É7Ÿxݸ§wM®KxÖI½¥í¸æ*¿”õ— jý6îüèÖvMlNw4ªzû<5|ߨ©ˆÞô¡„
œªó*’Äâ°ÞYKºð•ïP@:ᣎnäwWhø{3’ƒŠFSùÕRÚ!·èÂ_,k'á}8¹‘hCVFu˹Ýl€ e¯([Ôô«þãêK©ë‰Ã¥ÄQÑ–OísçíhÜQÙ
+©uÞqž€$õ÷ÕŽç²¥¶`™8—Ða«q§ÞEǹ´Z£¤Û­öxîö²ZPY–iÚoóö3šg	|HÎg&`ˆÎú©˜¿<¢KGr¶‹‘ r«aÊxE™³Â6櫝{î—´uœòŽBUJWFAv}êV°’»L¾Û©õp3Q)ßà÷µùÄJœ¹„9aL×ͥɘPïq¦r‹Ë¿[:‡ ªUÑÈ[óóxm2xÛ~4E"(;§] bVAoš¶ƒ£œ[
+›€}§Ùr^q!Lª‘Ú‡Maº:¢Xž*”H¡uBi3U•¢ú›äùû*hGÀçAÒèÀº7ý¼[r@rÑk®°iê¼±2ò{q„FŒŽ<=Ùn66„ó§Ä¾y-é±îz¸lõIS–xþöÞÅI…K»ºwGç<^ÄÍÏ› ¯]bæ2Œ©ð­iòkœfʲUØõ K==×Ũ¬-ŸI9|K¹ï–Ëb±üµ§Þ³0ŽFO¾<V|;F¾.²È|Çw)%´ø›´|4W*››ú†n‚t")šê§è¼ìY)÷¼úX'Ò©Ý^2PÚ'Lá$ød‰ã~¿e<©¨	¥B©‰ yIœ‘KÛ‘¢(Ç®„îzs;À@È~µ–'ꍉzސ¸ûõ…ÕAVú‡º„ÒxìÕ늝¼ÞCéGBFïA‹€‘ãå»Õøù_yÑLTÕ•·Ïßp)];ä½5›Å¸KW¾ü ÐµŢˆúhÅøžßQ¹˜F×{N£–-t³’n*¢òŠ¹ˆ<^õë&iltïÓ5ϨAŠD¯–3Ñw‰wK8£œW‡´FM=Ë™0ŒîPŠ¡yüÂ/©’¸·±ú¹nvöãc¤¦ˆMøÎãÕ5uòÏËi
+î:jÒèÊM’CtF–÷ÎQ¹.=1ìI)KàP`Î<ê4¬k¿	ÂS{4u ª8÷]Gä¾ò}GGÌ™ÆAÇí&¿Ó1g0ý©µNMg
+wçM¹*
+m	e2Q¬ŠšÛWœp«úÄÙÈ-PaÞW±™|=_ŸeK;yÞNK<TÕĵ%-*e&´Ù$h2wÊûö¦ƒØéÖ%\²Â®’†2³êAü, 5›}ÅX{¬Üñéˤ=ܚĦ6¤B°ôŠSRdÊJT^{ëÝà5T¤6ìQ¦Óà6Ùqß±ò%ÙÔþ<MeÿX÷¦~fWÂnè3\ÁN{	,…Lˆ\Ší2§;ª*HêãGÅ &NÉ㍞økÁÍ0_à#ýå /ÕVà-Vhçyë“ÇCLÿʹ¦j1–ë3é€@•pŽÇ×ÙÆz¨AÖÇ8¬Š(£W2ñ9>):Œ=φæ’íꝻ©ÎÑÄF™ŸàÚÜ—N»SAçQ%%¼	1ǤòåÊK]²kd…¬ÔIõYd‘ːDHÙZ~GB{™n#u:ïûï‚P‰ùYUÜõ‚ä(wfø®D®MnÄ72G&„„Ïê\ër &±ÈF*6Â+.»¾´ÃtÛ9<>ÞØÖÞ»øBM®Ð»ï-ýøÄ_‘êê{i„#Ó„2lªèg7úiD”ЩÖç:;-ÑK[úŒÐÐßV5ºþ¡Ê׬§î‘ê•4Ó´TRÍ-¹tùðñ¼üÓˆ`B;®¼ŠºWn\ôTß)O9
=!?¨ñËÏããøwOc–¼ˆÐ¹†tõ
ñ÷ŸK7‘Œª§ÍÃ=è¾EÊ ¦'”föêþlبõ’Þù¡õjQ4í!NôS¾íMx£… y_ %†QÍ“%™>Þ÷·g¿ê¦µêŒÏæu3‹0AÃwóŠ“/\)Cóhñ?@*Yì„Ý¡§?™±U½¢Ököap»pÒò]ÞÔÖl}
+’\\PÔD”ú˜Øà KÓ~&ÓCÒ4=´¼ë«÷ÆOx:}k£ñ¥Þ‰§^¿ž‡R'p¬Øª¹×ÒæV[ÀÎ3~ЈÒèŒpop|®¡]ïª5&TiÅ2ÍA’±¡z¹öCÊÜYêwÜ|ÎT}>h*Ãñ`Q£ç2T‰‹A»hFi&Æߎ\V¨‰|NuÛo&a‘üH”
+âS`/›{
}—ohùÅE±üÖ_ÈÛ‡vZø¨#}eçH S<ÁÑ»³ñf£\Ȩ,õb;º¯á……Ñô»Îb…úKž3c´¬˜Ÿzgà$ʁÌoÒß…<±0h£g$JG¢mòA2Õn5$NÀ«â°±JM·Ðö&ì*ü&kp:øÛÈaϨu=SK83•.í±¡i€—áú:IÛaî„‘>pã|\iê»EòKÔ~
+íÃSxtA³9š›Òh•Ãü2;rR©•ë‚§º¢°:G9/þ­+äk’ä~^ÛŒ±î'=Ö|\5ñ£ýµÅ…ƒQd’™ÔéÐÍßãÏ{òUZÇ '¡ÓÚ&lÕKU;mŽ\<lƒèéK)—Á|¨³€’³ñ>oÛª™…ØpÊ›`øí¶€@%+&Ëÿäÿ‚ÿOL`j4vr±·3v²Aú_̈Éendstream
+endobj
+95 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 330 0 R
+/FirstChar 11
+/LastChar 122
+/Widths 331 0 R
+/BaseFont /VEHZDH+CMR10
+/FontDescriptor 93 0 R
+>> endobj
+93 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName /VEHZDH+CMR10
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [-251 -250 1009 969]
+/Flags 4
+/CharSet (/ff/fi/fl/ffi/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/W/Y/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
+/FontFile 94 0 R
+>> endobj
+331 0 obj
+[583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 389 389 0 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 472 0 750 708 722 764 681 653 785 750 361 0 0 625 917 750 778 681 0 736 556 722 750 0 1028 0 750 0 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ]
+endobj
+330 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 11/ff/fi/fl/ffi 15/.notdef 39/quoteright/parenleft/parenright 42/.notdef 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 63/question 64/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 87/W 88/.notdef 89/Y 90/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef]
+>> endobj
+91 0 obj <<
+/Length1 1242
+/Length2 6715
+/Length3 532
+/Length 7487      
+/Filter /FlateDecode
+>>
+stream
+xÚí”eX[ÛÖ¨q	Zº±bÅ!¸»w§
$@ A·âVAJ¡Phq—âÅ)^œâR¤X±B¡Üì½Ï9»÷|?ïýuŸ›•ës¬1ßg̱«1¿aUG¸£øA i Š®²HRpp¨ ¡`á®
+FA¥ ))a :ÔsƒùK‹‰J‰8€*4æäŒr©pÿ™$Trƒ"a`w .åuÃÔp ÁÆ… *Áá@£?ŸðA½ H(D  !0Ðêsþé¤åîˆ Jü†x{ü{ÉŠôÂH¹þÒäb$!w8:õ˜Ý —ÿZÿ]\Ý×»ýYþ¯Nýu°ŽþWÂÍÃEu(Òý¿SÍ¡Ë)#àÿc-sPrw‚CB‡`^ê0?(Ä †rp:‚á^пâPwÈ+`÷—€ ªŠ¦•º>ï¿Îô¯E0Ìe‚öøOÙ?³ÿbÐ?Œéæ´´„IÄ\ÿ¾³ý¯ÍÔܘ»PXLF"Áh fz0$ aî¨ê‡1pG 0 1-ytD ¨¨PÐŒ„ºÃ¡Ž¨?—þŽ‚þýûøþ
+: ÜÜÀÿ‰ˆIþcFáßq1  Ò?$Tù‡0Ùªÿ!	  Ö3‚ÿÔ•ÂdÚÿCR˜]þC !Œ3ä7ÄÈBCLY§ßãìübô`¿¡8PÐå7ÄH¸þ†øoˆÑpû1'*èþb4¿¡0¦…¿!ÆÊó7ÄX!CŒ•×oˆ±Bý†+ïßcåób¬|ÿAaŒú7Ähøÿ†
ÌÀ‚½þnÉÿœ[ee„_ ¿¦§üÂbBªˆ¥DÅŸüo™ÞHÌl þú*`ªý›a˜—
+õƒ: æ¦2./ê£Þ©åãó`+;5$ëÕt|n%	ŸMÁ†j{ò,U[\•dÞ%ßÂßbñ½fðŠm	4V?õL~9õkËçñV¦ƒÅ÷L]ô¦ÛEøEsýäé71lý‰¥OïÓ-z^õîåp©š|%üŠÕiíSÛ™!.a¡ž	7Ž¬æa5¢|éù>F4zÑ—2=oq4<È%š¨‘wáÑâMu•O”›öëÖ¥A\œ×½˜	Ùü>ƒBØ“¦åZ	~)±Që9_K_׿¯Ñ,gèØ´Zá½VWñóm:·¹¿þ¡–ùj]uq „AöS8,yV®Ïìrªí×':þÊõŒß!“D­„è[ò ôþ„ˆÌê þh>MépÊ­ÑÃ2¤}®aù‡±¤ÚaÓ‰uØù¶x?Ÿ%
ÁêfŸÂ’Bþà²7Þ®RØhtzRq—£œ@ø«ê‹¡ØÙ¿ÌmaCØS}¥5›—Çu"Ç…ÏÞ¢t¼¥7¢hÜýð
–éÝø Kàõ³0·šs‘¤È;X‰"±O“ÏY}F¤ñÜRú㣗*e·†–õë
3(È£ÆQÄǬ¾rξËX‘ËÕ°üÿBG<úV
+ò“¹7 ¸¼(@ׇÞmþF•M ôÀrª/q’€rÇE+nï‰ý«_!vëÄħ¸Ml/	³Móƒô,ËyrÄëE_¿éȪ:;U‘×;ì³Sx)´Gd„hãt,µ’ŠçÿÎEÀ3úzÐÌL
+@ø0㛄â¬×è¡ {œêà]õ´¢0KÝ1¯n;M÷ð·ÂÔnrÕ›¶<Ê;t-ÆæÖ߀¾^x¢EË<­ºdlÅÑ
Šê[ò€Yòñs3Î*=‘Ñy÷ê0ÛnÕ+{b°uG¨×-~ëõ ö32×Éð›(©Ëí1vku9hî1gÿ»nJoŸç]Ç ÕÙ]3­P—2ð{­®¢û%u‘øißbîA¹e‘†#,àTÝ.õ‡”yU:"W?ñ¢„zá=fP7Â9™x2KwÊœµªâZôÅU¾º¬Ö¹½sêAûÙþŠ“e"CœsÝ3ØúØ”nâÕÊÉþš=Ú×åµ(³ò–¸;N¨GXb¥RY« ‚ôÎå£Ø¥[$­|æ#žês>å ë/ØätæÒd»£ËV"VÑ¢cb3ÖlŽYAò(ª9‡ªe²ÙŒæžYbDHmv¾ªÎ1·~{‰ùréÀ£úÉA9Æ?¾	}ú!oÎ}܁š<v4Á5Ar=øùñá!Ñù"IoQ&Õ­qºÉöÙx¿âÐÏŽ´ŠÏ›h¯\bb›Ý&–Š	ñî`5É,§d®=»Ì¥è7t,Ln«á´4Y(ž	8–¢$Xâlbºõ?˜ªXŸGœáŒÚ›9ô¥WÎem¯r=ë)c@=ëlÉbô~=ÄZþn¸ø¬#çé.‹ãîQ©>vgÝ{j¢UV¾øQ’ýzÁ)iAJsNθæ%†å3ŸE͍ýúî.ƒ¼¦e˜¥†S¨¯WؘÑk¾ìÑx‰AîWÒ©2Ø»•wÆœ_N¾ÔZѺ9~fá·]Œëáí|ÏÄ¢Z7왁.8"…}TÊÁS¿ë=uПí”4*T5)†È‡Äæf¿ˆUº’¼©çC_ËÕáß>Z¶_‰7›;þo·ÎzÉM§Ž¥¶¯÷
–‘§Z|³+r01¡]Ùù€:,È3ˆ—øû5Õ«¯ÈûP³¶ƒ¶úG÷^4*>h¼'S[†ÛÝ;«ÆdpUÌàŸ-g!5¡¡íÉXdC2r,²È­Ã}3›Œ-F†Ùå X
+Öž§f<¯ý•Í==šÞhþuåíLÓ;:­
³±È“vÕ©‡z¦G²ï)H¦TÉÂ
ÙƒòÚ3MMˆ™.«JȨ,$y(?÷Çì·ÜÐÁ‹Sx>.Ñ¡aûÝÅý‰urê>J›»€ì°`ªã¾å'>øRÖ½¢§n‡
+ŸØ{Íß!Joò·Ãò³[¥#	Ó¢ÍÒgú¥†o"»Ù\LŸ‰ï·^”û¿¾Ö©mžmFJ6éÏŸJĽsóÍ<ÇÍôA½‰ïb_Ä?Òê!i³Ä„‹óÝǯ[¨Cp€ƒÛ›~¹ŒuŒ¬Éo*ØÍ|f•eRàÚuZÓv7lœÖº©%ôp[1¸°j=FõEs£«1 YöIL»í€ÑÊ/Ö°ÏŽ…Leñc•fZ‡|“¦š÷À…M4ùï‹é+&ç•å€vMÎg1ƒê
+) ëÊü—þ‹Mã,9BʸÏO°|b7r[‹ô²)Él$Qn~Ǹ÷àªß?÷õ¾Î;©7S\­«¨Óõ¬îŠß'uÚÜßêéœÞÞÛ¡Ä÷GYNP¦Õ¹³žÒô¶üèåûâb,a¬@ÔèÔJÄÀì»ËÙ¢‘Te‡·|ï‡i›~òùÕªLK#Îõ±¯Ùƒúögˆæ.*\zô&¿U~-Ý—f.{úyHÃlÀÀ~
+ΖA5aE{CæCü_[¥ð»U¤d!î’-l‘0ÖÒtËaz‹Íâ8Ñý$eóÁ¬ãøˆ8S8Íç Jª$:íø‘¶¯mۍk–ç 0©¿ÕKÿ^°j¨=ÙìçžÂÍ„á*tT˜–H$+#©ósËq€ÌQG»1Áþ¶ë§d…k¬vM^¦#éëÈA¹ððÉ+óÛãíC<!x_šÌ
Šq¾–TˆTP>ŸJEe¤ÄžÝ/©éâÉ(MYX%bhÎè©¢“`Í@!+pYO;KHÒGøâNí7D’xú›åPß„'È2 /?Ê´·hˆÉG*)¯Ä%ù%;NˆlY¿i sfÒB«+FàdÅÅ:ô!©_Vê”|‡Ë{h<ˆg¨5æ‰>èù¼¨G“Ù/о­ÖŠ±oñz17‹çݺ?Œ®çlŠÝâÖÁç§÷	Õ·<l,0öo°ìQ>l'¤³Ôùšï¥˜¤wRo¬O,Ç^`êd†ü¬ûCkbÙÿ7™TŸñY¤òá)IZb¾9—ÎNgéæW¼8@iŒE2()¾‡*~·†ñÅìÛ€š~-Ð+û䉳WŠ¶FÀ>kq'Ò5Îo Â×ï4"eÔÕÑý‡$8ÓgŸ@Í¥Á4-n8>(Ð]™ÆMç¨Ã6kÉP]l—8›„»äþ
’ùGG\Ä›6靎¼tWl´9¹‹1ˆÙ¶ÁÝõñˆÄI4„K§p°ÍVB`XôiɈaŒß< ©å×¼žácÝÂCä@Ó63b»èÑüèmۏæ^ú[#éãŸ%ïô‡¡ã¶ŸÛ±ÛˆÉˆ‹b:…‹ŠèïÚú¹zã	<a¦k -ZЕ›QéhÃSx'z
©jƵ}qã?’~BØÈa3ZÿB0±¶\áœìqç­‹ZhâOý<I¸ ²¿`#
+ßþ¢oÚ·z×^æÛW[Áâg$Sü,D˸˜Á<ŸYJš4IRkËÄb•ÆØ6[ƒ[œ'^="R¿áÖaîȸÕMy–ªŒÛ6Jl5®ÅäôkyåMòUдóÃÜMè`KãºÓá64sŠÉæ'½¥|™³q$ÑÈ¢bZ˜§Ã–Õ?´V‡µ\:wSëK\Ä¢ÒklêýÂøa4Þ9?P~Γն52½TZC1·óØýþcââàc-³ë_	a>#oK<Rp[UŠâè¤(ëÙøÜÞ«Õö³xw„e»P6¹îU7‹™äëí_ð=w ” GoÍkü¼N¼'çâd [õŽèîÃvŽÁ8çèzÒX«:1_ÑdzïXn
j+Xc BöÔÿ$<o%DÈ-XÞw\ž/‘í(3h>3Èó%y§pG«>:¨ô—9ahõÜ–b«*ýw×ñ—eÙØQcaC´Mˆ'¸Øõf4^h\ýìL1œ„dõµÇÄP˜Ú4DHW-0xÙ'fšjk²Û³D}tJŒçÌ[d·½í±ÿžDSwÃßÛ|©õ)©0çr¿cb¹ËOée¿rÞTwƒåQ]xÅ)¾4ü¸ b¢‚½Mv]#Xg`óæ›"»êëÚâÝÀêčÇÒç^{ÅúÔ¬€|ÇüÆ“”nf Qý7,ªÊ˜FÛqKýA•õUÝ	,´ç0‘‰Û&‹l[õëžç|Îc·úξ	“5»Ñ‰æØEæ_­ÕŠ.ŽYIzpõ%NA\¢o‘B¨pFeRì3cÆ&+Ä×|Î"W7æE¾oìÀ¬UØ|GvLwØ/½ÁÏ$UgHín£×xÃËýž¸ÃýO\ï¬s
UI%ÕÖârD=Í€?¦E'?‘£O;±}Wz^eþ]žcåàÕŸ¤"6Y9ì,RAÜì©ÑWx¹†Å¼ûê"–;9Äû¥R+ìG¹>Yˆ2ŸSL|?›_ÃÆ"šàÒN+ã]ÄF~6䘾´rùÈÉ(R—ÈŽç³–âÀà˜ÏÄøÜ[hµˆQº¹³Ëwß=É—çu›¢„a]õöæywÌ»ÃÕz7L%?ŽBÒ‰NÍ,]Ëm³®£†e-	n®Tbìt£›D‡íg=U!ýNCq¥²hš4ÿ±ù0f¢„¯³žo³á)^r¢R–çG®°ð[\æÌÑ|1^C ¶ ñÜ»Ô#ãqS[×Ù.Ä?Þ+j¢TBñºÇr„#2›{"Gë×!ã&ÌG¥J#­±ž›ªÆY’CÏšÑ&¬m•åô†â& ¡›{ÔF™© ÆÆkˆGÌY²€ÂèÉr¦ÏS¤ZNr—uÞÄ®ÑX?#žNŸlÉÀ¢x›òû:֏	49ys‘DNÉV•“6,ÍÅÇ>:žÔÞ	sgé„ „…ªß–þëTŒ*"TVâ}z䌺Š%¦²
+>—xÝC/ÙXïƆŒ{HwÖe9²Üvw®rݾ°ªþƒø>‚öŠ™Ñ›´Ìr‡/†¦wá‚÷ŠzàæÿJv‡ãi–õ‰p»A¡î2cåÚ†h›Æ{’ 8ÒM1}MÛæ:"óÀÌÅ„®cíánÇYÇQ8[›UÜú8õn·v·LŒþœ|uüÙòÚÌÁüæ<Ÿå¾¿xè§ÞóUMÇÒP/ÞãÑp…/!¤j&€«qÉQI~?™d…ƒ†Á'šLb¬OuOE•¯´¶¨í#Ö®.õîÙƼ¡“¼KîÔ	0{†Ì£-ËW…Žd…\²)çã3¼\äégë%ê*[øqºq¾Úzºÿµ·Þß°óÕºAj<!Èäç“™®w´ÚÀŽ)­J5Øå‚ä“èxæŸÑŒ	Ó¢ÎëZÇ·7“'Ê!3b™6$)'3yR…4þeçSæ,DñÚŠî,Wòöæ)<òFÂN)¶ŒS¡ì˳oƒÀ]ã¼Géém°†ÄpÃâ!¢VŽ7"NÒNœG’«³`YE×Q'{I­Û»2¿Â*„•
}‡–¯Y¥ÁøÅVr®öºqƒ«{Ú!\"NŒpp²ê"ƒ_-1ø›ÚZ’ænW(§ÂÎŽžVÄ•‰ÇÝUr*¥ZaÀƒå	q&£‡&ú[Kz_‡.Ö3ØéÙÂc{3¿y=×?‘óåëµã},.f#VŸ¸¢ÝòhGÕÈq@&2ÛàE7jŸ
+á‰2¥X°¹aúÃôånaW
¬ÓÂçã+aÒýÑÔ4XbßS¿	’o—Ä‘° iaséÞI\¢éMÔñüŽ9uûÃ|Êý&«E+ÔuîŠþ~ʶ¼>ôl¿¾&p5ðð\T\z.uØ\'›ý̨£6卻ßWÙ—¬á+F±| ÃÕÀdƒS³SálÚú'g~_PŽµyß0×w¯éfÈËq…ÍŠÛ·:’O	†(ˆò;}8ØT/=ccÙnf³Àƒîyõñœˆ(ãú/Žyš´	…
óë*6è+×+)8§F›ï.]ÏôÇNêN"ï¾oÖêÁ%ͼß\ ]в3‹'7Æ×Ë $P6è(çPNðNÐГ¢W@ëÈ_³qbó¥áªºiLÀM¿ä3{mZl-»-ZøJˆG²8Ñ¡äPØÚOËõØ}¹P2B+ÿÁ^=þ;4°i:ÞR!¦£b©ék
1= V ȇPª‚_6%’LÑBªüâÓ°@^CÏS¼nW…ú“&,KÈk‹~¾Á˜Ny¾ql’n4֚ɑï#ìT¥üÿuÛÖY°`]"°¦=àNÑ,ߘlß]%KÍ1~\s'ñJlrÞôÜ-êû!UF€öÑã¢Ü@Òân¥ù3Ž*Þ§¢Üßö_Åè:p‘ÚlRÄ~FUæEË®J†'ñÂÜC€S¨ìPÓD…)åÁ¡a@ªcó*ëdf%úxø™ˆÆMç¶ºë?"óÕ÷)4,ÇÄ‚fâR¯5´•J¥âÄc{dÒ€*ì†{%¾‘q³EßÏò®VšxªÎüÝÌh—Úóz^wóJ(^ˆ 5ð<|çúžr?È
†â㾸ûGºGóùBºGæÇIDª™îæü´ÁkãâExqá¹òÓÈ+ãçr¬Y?2?ÏÊf½?EL<û„ç¯ÒyµEœàúÑC¨þöçu8Ûîìc×2_Ù» LEñÇ
+]›®XŸñS÷L+óOßQ¾¥I
šýp(ºV{—,ÎV]ÔÌtL¾ PdßûdFU)më¼_.ÃÖ¸ßgšGˆ‰æþHn;
+oj|‹3»§(d(X[Ë0'¨ÕŽ}¤­ö‘Ÿ¨`¥³IæÔôÞ'.ZfàØú¶Q¿<ÇÚi3z÷ÈÛ¾§ì2˜tIˆt³éˆ>&R5B GŽEFKúãX“íY†ýœø¾A¸E’í=¿iÏ¥”ÙX|ÈOö‚s’ÎéåjˆÓ„Ê;]Æõ<T¯¿W=KMiuÔãL1˜7‹ÎɁ™Â:–©fÀOÏV’%¼f•x]SxÓ÷Ë"•]½[övz!¿‹«L„Q‹vEü(ófðâ²mrRá.’fŸPžwvj«­ˆa)Ž³:‰ïjQ ÐJ£L”¦fhû$\Ý¡Ž¼ÎÄ–
,•|f0ºAÂæ¢+,™*}ö–G‚(Æ >Iè‚%»L¦ÐKV^w®~LÍÃPÜ2züôR/ØUzš‡XÚÒáQC$—•²:ÞC©u+z%’ߟ¸hç»R°ˆÃ/õ‘@5AšjyßäUÚ¦Xs7_Žr‰7´Ÿ,RíÁ½R û¬a(Ÿ[H¥©¹t´ºoAþþñ®·SÐxòáÝbºüb±×AKŸR+¢öf½Ç?ªrÙ(œŠDrã÷õž8V¾	dõ¢AfzFiâ}„	Žè”U«¾–…y”÷¨QöÙaµ¦pñ*^Q[+]‚ÅöTúI{uäE¾°ÜKѱá<œÕÁ¯6lÚ EUlN…'[\Ð&6yûjeCY¿,@mjõO-°d$¥³¬'×Æ[ì³;£ ’¸3o¬ä‹·E…_þRרÀÊBwS'dA;½×gDQÖyÎ<ÎÁ™ o&cJ»èJñŸEœ0‘¼ ÊK—7Ô{.ï†øtª@Zdxà{̓C«Vž†?J*¾‡YG*Ä7¼|<Wxü4ì}Ǧ…•÷t,Ü26gžÒ¯éÄ(ÿ¦x‰´ÖÒñ}†î#©ðÕÑ©ñÜ5äøÃ-:€Ø]†5ÚU¿AÊ”€¤OÆÎÓ%ôŒj£.ËU%Sw-ã3 H¢oOãÇÚQ츻á•[ëëÒ?ñüT;2lêëÄ…ô’¢ÎwÏiõºð®º´ƒFr½oÀòËu¥†kàQyƒœõ꓈ßâ…àSõ/;i];»àIƒ»Éù«×9¾ÜÏ6]˜“gÕ]ºµ4S¸ð¸¦27<ûH©Ë¡V)hb¸oBw{àó¶ÿ@®ÁD´°EØ9$ØO]³ÜnÁÜ{_Œ¼3°ž×–,jÖkV’»¤Už9ÒdÖxüQÇ3ŽÛ*+OØ(z¨[r]Vr¯7éû&6=·RI !^'}R$úõVL±íf}ν-Ö¼"?Ü“
½ø … é[;Àc ¾ZTbçþ\<neÖè²ÄÞ,ìR¢´^¯+•ä¼î ­Å½3¯x­ÛKÃý­¾Û„üã/´ã ]l>G×£,Ž©<°NÝÓ»¨dl£¢k²¯NŸøjîǺt@Ñ~ùDŒb5Âtå;ÕϹˆžT0·mp7Kïvp\v¶_ßÝ«ˆºBÄÉû£«p£Öã•õ;Ÿ¥¥ô°y«Ø±Tóu†öf	¾žiÕ1:ÛcŸ'ÕâŽêöybGÜH03¬Ô
+Üû¾}}Ÿ9a/À>·é†nr–{„¨Foœ¾òÕ÷KOa/,–F7€$EÍý*ýJµ·
+¹ë#a|R±‰xIÕ°Â9Žºü#'v%ñNäxVh.¸ g2ån—3Ã/2su‰ œ?òÐåôÛÕÊ™erX-v6Sô©
+E[Üë¹}µáXŸìú(Zv Ñ¥ ló—!°þöðu¾mñ[8…ÅÌÔsì•T¶É
ªcê(«Êdú,ýeçTe¶Ê_Ú¿:ߟHT÷ùnfÙ(-%þå§ÊJÌ}H6D!¾-ðÕ—‡y#'¢ïýà--uTw^·¶ÚÚÎ>r76U[QÖÏ)`Ï›æBõëƒQ-¹;–t‡>WG
þË¿¤ÊɦÏ:håL¶Þ,öœÛp·6ú5:M´T7õ}È{i>ë$<9»<ú80g'.QÚÔi݆׾t»c¬Œi‹n »M:|–ÀèvóépÂÝý=L	LÐÑò<=ñ'	l[ú[Râ8q“\â‘Å+¡ÿÃàÿø¢€
+F¢n`¤+àh äÝendstream
+endobj
+92 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 332 0 R
+/FirstChar 40
+/LastChar 123
+/Widths 333 0 R
+/BaseFont /DCHZFO+CMBX10
+/FontDescriptor 90 0 R
+>> endobj
+90 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName /DCHZFO+CMBX10
+/ItalicAngle 0
+/StemV 114
+/XHeight 444
+/FontBBox [-301 -250 1164 946]
+/Flags 4
+/CharSet (/parenleft/parenright/comma/colon/A/C/D/I/a/b/c/d/e/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/y/z/endash)
+/FontFile 91 0 R
+>> endobj
+333 0 obj
+[447 447 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 0 869 0 831 882 0 0 0 0 436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 639 511 639 527 0 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 0 607 511 575 ]
+endobj
+332 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 44/comma 45/.notdef 58/colon 59/.notdef 65/A 66/.notdef 67/C/D 69/.notdef 73/I 74/.notdef 97/a/b/c/d/e 102/.notdef 103/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w 120/.notdef 121/y/z/endash 124/.notdef]
+>> endobj
+88 0 obj <<
+/Length1 1064
+/Length2 4328
+/Length3 532
+/Length 5027      
+/Filter /FlateDecode
+>>
+stream
+xÚí“e\T{˜ÇIAÁ8(0¤!Ò)Ý¥à #0ÃPÒ‚€€€ %¡C‡„´„H‡t·´€””;z÷^Ý»/w_ígÏys¾OüÎï<ÿç°³jëñÉZ£¬àJ($†O_P×Ðù@ììòh8ƒ@! ¸ (..ȺÚB€àm	aˆ„ˆG9y¢¶v€Kžûg‘ ëG#`P$ ÅØÁq0¨ ‡‚!àO~@ÖÁÐýÙáèÂ]àh7¸5?HP°FÀ0€ÜREÚ  ±¿ÂÖ®N§Üàhœ)€g’ÀY´F!<k¸
¬‰Â½Žsò¿aêßâJ®šPÇŸò?‡ôßÒPG„ƒç \1p4 ²†£‘ÿ.5‚ÿåMnpuüwVu@Àd‘¶p@à¯ÂE	á·ÖF``v€
ÔÁþ+GZÿÛnn¿,€uMµxÿ:Ï_9m(‰Ñ÷túGõgñ/ü͸é €™ ¿€€ ®wÿýdñ¯w)"a(k·¢·(
õá6G¢€— €@ZÃ= ¸Î0˜‰ÂàZ ÜL| ôó8En`'Ü™ ¬Æ…D! †rÀîß1 ¬ô›°òoÀª¿	׫ùAp}Ú¿	W©÷›Ä °Ñ?„[
0ô7‰ãüC‚¸Ãÿ@! lóŠ`Ĉsàð⤣ ÎòÄ)£þ@œ²Ó(€Ñ nT˜?gÙõ7
+á¤<áß99”‡Ÿ°0À'$* ˆ‹ˆb"â>ÿ¥æŠFј_¿n¡þfnýàp846Œ‚I=L¨x‚õUÌìË%æÁ—³­ŒÖ,kü\G8úß!§CÝ™gºÔø8/‰Žr™xùºû)‹ËÓZon¥¯ÎщCçËn–ËIÞ³ï&ix.9Ý8\§ª©ÜÛÅטîÄÆ™dµ¦l\ÏÐæRÐÿB2ÉŠ÷ÁÌí݇ä ÛbÆJI!Á¥¬ºÔ‰ÎØP‘)w긢©Þ@߇!¤U¼;¨ZWÚãLÒôØó$÷Ó3@—Š7‰‡S²X„J/2{س¸ËÌ
+<´§B‘\ßQã@vâ¼²ë}_¿#üºbÊädRû‰åÍÞ f颏û\Z›R0™àjÍÙÓ‡Èøø!W<¯ïRYº[wGï斍MOñDÅ·Qš-MÆÞX¹úã>;Å:I›•Ö~òý]“¹Pà·ž7ê=2ŠSÞ¬jUÝÜÜÏœõ‡Xè^RnÎÍ‹¬$VuEVGî)©©zcÙò»î)¢"oùÞŽ{h¶£Éÿ"ñÅa»–*Ú°^Iíæ“ !Θ›*ˆµ¹œÑ‚½9Hez rÀ¦ÞŒëº!².JŒf@O½ØMÎ:¹È͇Òà™ ¦‰¬âcÍÕ™r&®ÏUß‚ƒ ÆM¯’šUÞ#øú	.#¼øÙ›_ø¶XR¸Í*¶BY‘ÛF´|3}È#DF¿ä”™é5C²7ǽƒþÀ”š‘§2Pª[ÞàÙ´ãÄ?M‡Ø•¨·>Sæ•|#$»VK“-–L[sWæ¾Ø¥ËÙÒØa(f“ýõ’>lÃëµØ¨.¾@ûÊø‰¯â„>ÏZO]½Û0œÍ±J8‘Òý…#¼SQüÁÿù\É‘Ð0J£ïfÿûm¬å!Oãu	ˆP·Ý‰Uhv‚»üa «F¶±ùЏŽuPÜÝùë,uÉûÜçyLUÈF¨t‰¶¶ÇÕ¼0/.`~©£#Êz î·VV Š{Ë'°H²`$Çe>å|LäwP|$™á	_lš„Øa¤&+fñdGHïU¥%àùòÇ“ƒÌõÅÈ⌘¾öÙÖaj‰cð]ɽÊüF؈œbÕWÔÊÑY'5#õɵrKά+“¯4»¹[;ã—SÃfJÉòÙG`áKåAMíA¼Öí±Á´w`á~ƒßLKç_Ú*m†vØ¥'\Åb'œ_èq33@ܤ?r°…SØgê7ÛÕk”sw|Ðx]œ¬Î”	¶V­S͛ӐÏÏ`Ò}ä¸Ê;EXêM»ÞeÒ4HÝñyͽ×_‘À8/€òœÈ¼Eg-»ÜRè/±i2ªh¶šêê)§Ô
+~áøµ`ÔÙÔÝñ‡2¹íˆÔ׊Š.Ãy³†3¦yä—àvÍ ^Sy¼N»Ñˆéa)ž)œvÛ"aجž–ãͨkÑèÞØŒqHR³í„¯6)]Ç·¹}þ=šjë>]©S¥{×W÷"S³™ñÑEŸ<:M–{U<EpEY±m’×\Ð(‡Ÿ`Ì–î¯t¥á‹Y(ÑE-‘¹Å­úñ}É
O,½á¼âù%ón
+“/^‡›"±“EqîEGI¢7ñ#Û÷ŠØ™sø'‹¼i_óÙ\T?ˆ ‰æ(’–³çí¦ú&’U«=iÊ߸Œ¤ÀG½¸<D,v¢åËŸ~K?èÈ•ÔL£¡N{1#ïx•‰›!%¶l·é•KÛ&E)•ýŸvÕh“,2Ô,¥.‘P%IÌ)[;Ãj?ñ:â{Crk„5S9‘ZbýϲÍbn
f„sÏ¿x|”ó®Ê)8\E¯a=:œÞêó¬«Zvf¤ƒ5þ¶ŽÁ5ò¸Ã+—£·_‰Väæ¹J§}ÓÂc¨4„­ñ`®ÚŸTÕåòÌöû™cN…r0ïå»}Í©v£§G9O\6"Äé`sëO![aí{[ï'’x6Ÿ°LæS–®Pú¼ a£á£KKÖ´T¨øÀùÒÝ<[ÏB˜¾ƦÚkEðÑiù©fjI—1Lšµ-9î
g¸ªy†¾g`G”_yä|:»[…}K­pû
H'Áè‰îxUÖœô墹¬óxW>J·û°¦™¥Ðæ·ˆ2|Ùº]Ð’È´¦1âÎʪgÞdý Yí7W*nÓ˜ž
E	Úl$­e*¶Ô™ksK®qÞàl.Þ^\âráZäšÇŒô…ìKܶÐ?eks–óµË£1¯2îf¾'jîdŸ¯—àëw±§ûúŒZs óû3dw£µÚ%¼ÒôsûèÐç
+¼‚îƒöv*úiDç[Ú´¢%¼_\›ræc«§ùˆ1YAW?ÓkÆsÌ¥RÙíø8]C_g$s¬rÝ_V¡íb£1Ê/ÔÛ³»ƒÒç®.sTXXêõ9Çqs6àÉ%M»Ö[õ–-„ |ã ñRkAC
á:÷eûœê£ÖD-I3æAq§¨3JX£nÓl9õ4<Ý‘ÓòèhmÌlêá«Ë2ÐyVkÌ„`R›½mëµ7Ïø£¾ù+|`zï_Q@ÕA§%	2
+ºë¹yìpÍq±'¾"sc^@›tG$j¬¦âÒJþÐxÖì,ÍÕªûa?¼­Vïšñú*§¹<˶%†qÁ£’ëCOR/ßÒýêÜù6FS®ü—0öÀÿÌ8Ó”qµVëÁ„†$lev5h©:=Y2U¥×"lS*@UÖœD“XÉ
……§KN®_·üÆ[h#*6tƒ™q§}$#â8–V]}’›Ç¸u´¤7NæË8¿³£ ®+oœ@"R\¼|Û„ŸýÜ«˜9=ò”Æò£AÂ4ì€ZbŒÀˆ¿d
+(;Z<q
+½`ãOÔŸA¿¥q7…¢kÕð0 omÁ$w¸Î•OƏZGWúó—'wg¿¤õó«„õl÷¯×ès ¾Wùè¶S&áEä}îÂGÍÑ›Èïª[†Ågyì_%ÈÎÚÅíÆËÆb?uPnvOµ ¼……yÕW®˜€Äìo‡äõ=µO•Úà~÷\>ÝÍìAOÖš$¬­cHQXqêôâåa¦÷Öe:‡éÃx¡Àž©ª×À(W´“ßd9!‚ í¾ûMŠù=ÕS²Q«O´֐#
+¯^—[XIÈߎø¬¢ä{”þµ¦q]ZdZ4˜š•¨XxȻ݃Ö[›'T~l»Að¶õÌÈm­¤(¯Z‡Þ˜½˜jêQÌ!}~ݵ)W¢.XåQÏ"×½/“ÝKS“
…Ï=øòëîkº»dŸ_XàÎœÊòO~ù¾«2ÕcÅJ€ôÂÐà7^Ó¦´ØG««ÃJ˜Çr
Ó¹c¹ö¯2µš“T"0MÏ8Ü›³úˆüéOVú½ÐœúÆ~®´ófð ¶<^N	Ç4FݧòÊ{XË©tŸ>—G2D{‹[©î¦¹!%Ùš€Y×@ë½kj#ÌÎ÷.÷Å1¶9ò„÷V-QqÜù$ª4—*K½$æ§ïã{ÿui<;©¢Ï§Ú¯ÔïPæk¿ägû" ¾û9ÊRõåЮ•ö™¥Üûò̽µ¯XUHÆG¢)b@@9Tß^)ð"ͨì—äúˆî;õ4 ­MµQû.¬1”¶“g1¥O¤í6Ê‚^€ŠÉøì²d%(›”wÙªöÉÀ¨Uú61ã؉0¯mOÀ¯Jä}KK<¾<&‹¦á.Š60Úãï	[ÄÖ³ì‡}]qê>àé¤yÃ,Cá"ÒšÙܲpË2®xl`£<ëûrÏÓ
ƒäš$3>
+H*	Šœt°ž²Õ^<­P?°õ؆ñ˜)úóüUÆÅêĪ…8Â-·:g¬€¯ÍØcÄD_utj~ÑV’˵À™aõ–•¾uö@ý¢³ÛDN!©L	A°­Áè´Áw@î­«—s£m]Y¯v­U¿æW*™&²ÜÈzþ#ƒÝYÚÑÝq^&i…FpÿÞZ•lBç"‰¯»Z?¼^Ÿ(Q4Uw6§(Ù}cÍŒÒpýFzTdiqó™!¯¿Ùš´Tåu9‘2„|‹·ñ’熞¿ ŸRšTaûLwˆ]úQb€y>/‚tocp$|†×ᥬ3v)
%Ñ 1×âóž¸C©-½dàÀ†ªÔîýlÏâ¸Ò«9œ^y5]Øq4üÚañéÅFGÕ	[òÈЦ8òê—Ducï „øëg°i_¸lêYÃÕgÞþR<ó5i>Šßñ¸AajJTk5[Ìö#’É&ÆN,`@â8‡Âý%ÕÑwž®§]R¯Eί/}¸ŸæåÂ,·>ø{Û8RfäWÉ\iûEëäÔ[ò•<=lõµ˜vïòwÛÚہµ£.¥‚¡Ã›“$œêéOý6ŸnQæd6©÷ö˜—äÓÆ68ßLJ'ø J-Š’q#.G¼‘­ÂÈŠ-g}3þ¡Ñò¹‘ðûã÷öúÎ'á*çRùç16>·«ß†ižHgÏò>„ó$¶·¹sêO'ۏٔ§·¥zÇ
­¤®¹îÉ]ãP“ñ¸I¬…­Û4´”m¬ìà	›nØÝ©oáÿøå…ðÓ1†ÓçÉšeIÔdF¢
×͐SØå9P,t’Ímµ™Ei®ué«giüï!5{Az_®¾Ú=›UÊ9Ÿ¼?¾þÜ›–ŒíŒ5~Ëd“)çá_Àìñ£ÕE$îxõ
•áŸÞÅnŽú燺ߝӞk¶É}¢¾‘òhú8ò*„›2T”3àÚCF¼È|tÔ)í¨ÿ„ôßæ+{ÜÙ‹aL	¾AKÏ«G¼œ=k[:œZƒŽ&ÖÓÓ¤Þ[ILH~”Ï6¢±f×C¢p¬²~}(Â;éÿŒFF”Ä­TÏB<‚ÚB´Ø
+!à{²cwí.|SˆXœ©W¿™¡˜­2×5ÍËw¬î`Ï:畘öeéuq½¤gAØyÎÖW½oËÓçÍÍtElHdݪDÂ$Lé¨èA2Íi
+Šl<K)XÌ»œÏÈðM&<ˆñn'Æ0uËKW'f-ôw«"`W¬ó¤.öí<š*'öÈÉ}Õ+N[beÞ 6â Α$W*€ÈDh‚›\9é>µnLˆNn‰=É÷Z1Õ^EÔ»1¢ø]_5‹` /Ø€98ÿÝJ‰ù ëƒY&³dßl†L-ä]ûZ¸¿ÊHF¨	ûÓÎÌì÷逅ŽE£Ó‹òÉ&vÊmòž=½Ò“VâÇÇ™Øgoe“ï_ò®ý$´ÛöÁÖ†$r–"gÕ«óFuªÄ—åóþáâR@ÍkÇïê2`-ÆÂsÕš¦b;PG¤¾f?Ä­É«´dd>âÒ1så–ϸaُŽ¢Ì–™´ç—“ÞŠw¶Ûî<º½h"ryg˜úäÙ:©¬·òU2;Ÿ¯/:÷7¤¤ÄãY&L×FÅO€Í€èB°r¼i&¨Ô»ªÓB*”ãºíy×S]›L-}¼:¿–5£á¯.wâÙh°ex@*Ÿ¾¥x²!“^#àÀR°w¥«eäah%•Ù§`¹“Ç,4%Ö<qj…Î(ú¶3Ô馐O÷¥ÇÊ뉊nák¦RB>¾IÑN'nq(W¥^Ðï¿+Ÿ™i\•,®ÓÛ¨oxM[YLG¡i¨X0~G>…œDHq•ù½e~!RéÒEQ¶µ=Ç6mÏ$c€D¤Óó}Þ£},9tʉ\OaÿÈ£V‡Wò’ä_-÷óvèÕ&œÚ³Lgt’?t#f"²º—þ‡èÿþOÀàP4åEÛƒþe¨5åendstream
+endobj
+89 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 334 0 R
+/FirstChar 46
+/LastChar 121
+/Widths 335 0 R
+/BaseFont /RZEXOU+CMR17
+/FontDescriptor 87 0 R
+>> endobj
+87 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -195
+/FontName /RZEXOU+CMR17
+/ItalicAngle 0
+/StemV 53
+/XHeight 430
+/FontBBox [-33 -250 945 749]
+/Flags 4
+/CharSet (/period/colon/F/G/I/N/P/S/W/a/c/e/f/i/l/m/n/o/p/r/t/u/y)
+/FontFile 88 0 R
+>> endobj
+335 0 obj
+[250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 602 726 0 328 0 0 0 0 693 0 628 0 0 511 0 0 0 955 0 0 0 0 0 0 0 0 0 459 0 406 0 406 276 0 0 250 0 0 250 772 511 459 511 0 354 0 354 511 0 0 0 485 ]
+endobj
+334 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 46/period 47/.notdef 58/colon 59/.notdef 70/F/G 72/.notdef 73/I 74/.notdef 78/N 79/.notdef 80/P 81/.notdef 83/S 84/.notdef 87/W 88/.notdef 97/a 98/.notdef 99/c 100/.notdef 101/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o/p 113/.notdef 114/r 115/.notdef 116/t/u 118/.notdef 121/y 122/.notdef]
+>> endobj
+127 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 336 0 R
+/Kids [82 0 R 146 0 R 166 0 R 178 0 R 195 0 R 205 0 R]
+>> endobj
+237 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 336 0 R
+/Kids [221 0 R 239 0 R 258 0 R 271 0 R 284 0 R 304 0 R]
+>> endobj
+336 0 obj <<
+/Type /Pages
+/Count 12
+/Kids [127 0 R 237 0 R]
+>> endobj
+337 0 obj <<
+/Type /Outlines
+/First 7 0 R
+/Last 79 0 R
+/Count 8
+>> endobj
+79 0 obj <<
+/Title 80 0 R
+/A 77 0 R
+/Parent 337 0 R
+/Prev 75 0 R
+>> endobj
+75 0 obj <<
+/Title 76 0 R
+/A 73 0 R
+/Parent 337 0 R
+/Prev 59 0 R
+/Next 79 0 R
+>> endobj
+71 0 obj <<
+/Title 72 0 R
+/A 69 0 R
+/Parent 59 0 R
+/Prev 67 0 R
+>> endobj
+67 0 obj <<
+/Title 68 0 R
+/A 65 0 R
+/Parent 59 0 R
+/Prev 63 0 R
+/Next 71 0 R
+>> endobj
+63 0 obj <<
+/Title 64 0 R
+/A 61 0 R
+/Parent 59 0 R
+/Next 67 0 R
+>> endobj
+59 0 obj <<
+/Title 60 0 R
+/A 57 0 R
+/Parent 337 0 R
+/Prev 47 0 R
+/Next 75 0 R
+/First 63 0 R
+/Last 71 0 R
+/Count -3
+>> endobj
+55 0 obj <<
+/Title 56 0 R
+/A 53 0 R
+/Parent 47 0 R
+/Prev 51 0 R
+>> endobj
+51 0 obj <<
+/Title 52 0 R
+/A 49 0 R
+/Parent 47 0 R
+/Next 55 0 R
+>> endobj
+47 0 obj <<
+/Title 48 0 R
+/A 45 0 R
+/Parent 337 0 R
+/Prev 19 0 R
+/Next 59 0 R
+/First 51 0 R
+/Last 55 0 R
+/Count -2
+>> endobj
+43 0 obj <<
+/Title 44 0 R
+/A 41 0 R
+/Parent 19 0 R
+/Prev 39 0 R
+>> endobj
+39 0 obj <<
+/Title 40 0 R
+/A 37 0 R
+/Parent 19 0 R
+/Prev 35 0 R
+/Next 43 0 R
+>> endobj
+35 0 obj <<
+/Title 36 0 R
+/A 33 0 R
+/Parent 19 0 R
+/Prev 31 0 R
+/Next 39 0 R
+>> endobj
+31 0 obj <<
+/Title 32 0 R
+/A 29 0 R
+/Parent 19 0 R
+/Prev 27 0 R
+/Next 35 0 R
+>> endobj
+27 0 obj <<
+/Title 28 0 R
+/A 25 0 R
+/Parent 19 0 R
+/Prev 23 0 R
+/Next 31 0 R
+>> endobj
+23 0 obj <<
+/Title 24 0 R
+/A 21 0 R
+/Parent 19 0 R
+/Next 27 0 R
+>> endobj
+19 0 obj <<
+/Title 20 0 R
+/A 17 0 R
+/Parent 337 0 R
+/Prev 15 0 R
+/Next 47 0 R
+/First 23 0 R
+/Last 43 0 R
+/Count -6
+>> endobj
+15 0 obj <<
+/Title 16 0 R
+/A 13 0 R
+/Parent 337 0 R
+/Prev 11 0 R
+/Next 19 0 R
+>> endobj
+11 0 obj <<
+/Title 12 0 R
+/A 9 0 R
+/Parent 337 0 R
+/Prev 7 0 R
+/Next 15 0 R
+>> endobj
+7 0 obj <<
+/Title 8 0 R
+/A 5 0 R
+/Parent 337 0 R
+/Next 11 0 R
+>> endobj
+338 0 obj <<
+/Names [(Doc-Start) 86 0 R (a-common-example) 140 0 R (a-common-example.1) 62 0 R (a-final-note) 142 0 R (a-final-note.1) 70 0 R (acknowledgements) 144 0 R (acknowledgements.0) 78 0 R (argout-arrays) 132 0 R (argout-arrays.1) 30 0 R (available-typemaps) 129 0 R (available-typemaps.0) 18 0 R (beyond-the-provided-typemaps) 139 0 R (beyond-the-provided-typemaps.0) 58 0 R (contents) 96 0 R (contents.0) 6 0 R (helper-functions) 136 0 R (helper-functions.0) 46 0 R (in-place-arrays) 131 0 R (in-place-arrays.1) 26 0 R (input-arrays) 130 0 R (input-arrays.1) 22 0 R (introduction) 116 0 R (introduction.0) 10 0 R (macros) 137 0 R (macros.1) 50 0 R (other-common-types-bool) 134 0 R (other-common-types-bool.1) 38 0 R (other-common-types-complex) 135 0 R (other-common-types-complex.1) 42 0 R (other-situations) 141 0 R (other-situations.1) 66 0 R (output-arrays) 133 0 R (output-arrays.1) 34 0 R (page.1) 85 0 R (page.10) 273 0 R (page.11) 286 0 R (page.12) 306 0 R (page.2) 148 0 R (page.3) 168 0 R (page.4) 180 0 R (page.5) 197 0 R (page.6) 207 0 R (page.7) 223 0 R (page.8) 241 0 R (page.9) 260 0 R (routines) 138 0 R (routines.1) 54 0 R (section*.1) 97 0 R (section*.10) 224 0 R (section*.11) 235 0 R (section*.12) 236 0 R (section*.13) 242 0 R (section*.14) 277 0 R (section*.15) 279 0 R (section*.16) 291 0 R (section*.17) 299 0 R (section*.18) 301 0 R (section*.19) 309 0 R (section*.2) 120 0 R (section*.3) 182 0 R (section*.4) 189 0 R (section*.5) 198 0 R (section*.6) 201 0 R (section*.7) 208 0 R (section*.8) 215 0 R (section*.9) 216 0 R (summary) 143 0 R (summary.0) 74 0 R (using-numpy-i) 128 0 R (using-numpy-i.0) 14 0 R]
+/Limits [(Doc-Start) (using-numpy-i.0)]
+>> endobj
+339 0 obj <<
+/Kids [338 0 R]
+>> endobj
+340 0 obj <<
+/Dests 339 0 R
+>> endobj
+341 0 obj <<
+/Type /Catalog
+/Pages 336 0 R
+/Outlines 337 0 R
+/Names 340 0 R
+/PageMode /UseOutlines 
+/OpenAction 81 0 R
+>> endobj
+342 0 obj <<
+/Author(Bill Spotz)/Title(numpy.i: a SWIG Interface File for NumPy)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
+/CreationDate (D:20070913152304-06'00')
+/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.6)
+>> endobj
+xref
+0 343
+0000000001 65535 f 
+0000000002 00000 f 
+0000000003 00000 f 
+0000000004 00000 f 
+0000000000 00000 f 
+0000000009 00000 n 
+0000007634 00000 n 
+0000140903 00000 n 
+0000000055 00000 n 
+0000000081 00000 n 
+0000007817 00000 n 
+0000140817 00000 n 
+0000000131 00000 n 
+0000000162 00000 n 
+0000024629 00000 n 
+0000140729 00000 n 
+0000000214 00000 n 
+0000000246 00000 n 
+0000024816 00000 n 
+0000140604 00000 n 
+0000000303 00000 n 
+0000000340 00000 n 
+0000028601 00000 n 
+0000140530 00000 n 
+0000000391 00000 n 
+0000000422 00000 n 
+0000028788 00000 n 
+0000140443 00000 n 
+0000000476 00000 n 
+0000000510 00000 n 
+0000028976 00000 n 
+0000140356 00000 n 
+0000000562 00000 n 
+0000000594 00000 n 
+0000034600 00000 n 
+0000140269 00000 n 
+0000000646 00000 n 
+0000000678 00000 n 
+0000034788 00000 n 
+0000140182 00000 n 
+0000000740 00000 n 
+0000000783 00000 n 
+0000034976 00000 n 
+0000140108 00000 n 
+0000000848 00000 n 
+0000000894 00000 n 
+0000041045 00000 n 
+0000139983 00000 n 
+0000000949 00000 n 
+0000000984 00000 n 
+0000041233 00000 n 
+0000139909 00000 n 
+0000001029 00000 n 
+0000001054 00000 n 
+0000041421 00000 n 
+0000139835 00000 n 
+0000001101 00000 n 
+0000001128 00000 n 
+0000056494 00000 n 
+0000139710 00000 n 
+0000001195 00000 n 
+0000001242 00000 n 
+0000056682 00000 n 
+0000139636 00000 n 
+0000001297 00000 n 
+0000001332 00000 n 
+0000064004 00000 n 
+0000139549 00000 n 
+0000001387 00000 n 
+0000001422 00000 n 
+0000064192 00000 n 
+0000139475 00000 n 
+0000001473 00000 n 
+0000001504 00000 n 
+0000064380 00000 n 
+0000139387 00000 n 
+0000001550 00000 n 
+0000001576 00000 n 
+0000069139 00000 n 
+0000139312 00000 n 
+0000001631 00000 n 
+0000001666 00000 n 
+0000003736 00000 n 
+0000007940 00000 n 
+0000001716 00000 n 
+0000007451 00000 n 
+0000007512 00000 n 
+0000138112 00000 n 
+0000132806 00000 n 
+0000137953 00000 n 
+0000131967 00000 n 
+0000124200 00000 n 
+0000131807 00000 n 
+0000122948 00000 n 
+0000108198 00000 n 
+0000122789 00000 n 
+0000007573 00000 n 
+0000007694 00000 n 
+0000004033 00000 n 
+0000004190 00000 n 
+0000004348 00000 n 
+0000004512 00000 n 
+0000004671 00000 n 
+0000004833 00000 n 
+0000004993 00000 n 
+0000005153 00000 n 
+0000005323 00000 n 
+0000005496 00000 n 
+0000005658 00000 n 
+0000005811 00000 n 
+0000005966 00000 n 
+0000006140 00000 n 
+0000006303 00000 n 
+0000006466 00000 n 
+0000006625 00000 n 
+0000006778 00000 n 
+0000007755 00000 n 
+0000107331 00000 n 
+0000099381 00000 n 
+0000107169 00000 n 
+0000007878 00000 n 
+0000006940 00000 n 
+0000007110 00000 n 
+0000007280 00000 n 
+0000097890 00000 n 
+0000083292 00000 n 
+0000097728 00000 n 
+0000138935 00000 n 
+0000024567 00000 n 
+0000024753 00000 n 
+0000028539 00000 n 
+0000028725 00000 n 
+0000028913 00000 n 
+0000034537 00000 n 
+0000034725 00000 n 
+0000034913 00000 n 
+0000040982 00000 n 
+0000041170 00000 n 
+0000041358 00000 n 
+0000056431 00000 n 
+0000056619 00000 n 
+0000063941 00000 n 
+0000064129 00000 n 
+0000064317 00000 n 
+0000069076 00000 n 
+0000014690 00000 n 
+0000012151 00000 n 
+0000008059 00000 n 
+0000014627 00000 n 
+0000012389 00000 n 
+0000012560 00000 n 
+0000012730 00000 n 
+0000082808 00000 n 
+0000078781 00000 n 
+0000082646 00000 n 
+0000012903 00000 n 
+0000013077 00000 n 
+0000013250 00000 n 
+0000013424 00000 n 
+0000013598 00000 n 
+0000013771 00000 n 
+0000013945 00000 n 
+0000014115 00000 n 
+0000014284 00000 n 
+0000014456 00000 n 
+0000019614 00000 n 
+0000017992 00000 n 
+0000014786 00000 n 
+0000019551 00000 n 
+0000018190 00000 n 
+0000018358 00000 n 
+0000018526 00000 n 
+0000018698 00000 n 
+0000018871 00000 n 
+0000019045 00000 n 
+0000019206 00000 n 
+0000019378 00000 n 
+0000024941 00000 n 
+0000022939 00000 n 
+0000019697 00000 n 
+0000024504 00000 n 
+0000023137 00000 n 
+0000024690 00000 n 
+0000023304 00000 n 
+0000023475 00000 n 
+0000023646 00000 n 
+0000023817 00000 n 
+0000023990 00000 n 
+0000024160 00000 n 
+0000024878 00000 n 
+0000024331 00000 n 
+0000078461 00000 n 
+0000077071 00000 n 
+0000078300 00000 n 
+0000029038 00000 n 
+0000027620 00000 n 
+0000025050 00000 n 
+0000028476 00000 n 
+0000028662 00000 n 
+0000027786 00000 n 
+0000027958 00000 n 
+0000028850 00000 n 
+0000028130 00000 n 
+0000028302 00000 n 
+0000035038 00000 n 
+0000032686 00000 n 
+0000029147 00000 n 
+0000034411 00000 n 
+0000034474 00000 n 
+0000032892 00000 n 
+0000033065 00000 n 
+0000033238 00000 n 
+0000033411 00000 n 
+0000033583 00000 n 
+0000033754 00000 n 
+0000034662 00000 n 
+0000034850 00000 n 
+0000033926 00000 n 
+0000034091 00000 n 
+0000034250 00000 n 
+0000041483 00000 n 
+0000038914 00000 n 
+0000035147 00000 n 
+0000040856 00000 n 
+0000040919 00000 n 
+0000039128 00000 n 
+0000039301 00000 n 
+0000039475 00000 n 
+0000039648 00000 n 
+0000039820 00000 n 
+0000039992 00000 n 
+0000040165 00000 n 
+0000040336 00000 n 
+0000040509 00000 n 
+0000040682 00000 n 
+0000041107 00000 n 
+0000041295 00000 n 
+0000139051 00000 n 
+0000047379 00000 n 
+0000044583 00000 n 
+0000041591 00000 n 
+0000047253 00000 n 
+0000047316 00000 n 
+0000044829 00000 n 
+0000045002 00000 n 
+0000045176 00000 n 
+0000045349 00000 n 
+0000045522 00000 n 
+0000045695 00000 n 
+0000045869 00000 n 
+0000046041 00000 n 
+0000046215 00000 n 
+0000046388 00000 n 
+0000046561 00000 n 
+0000046734 00000 n 
+0000046907 00000 n 
+0000047080 00000 n 
+0000052204 00000 n 
+0000050376 00000 n 
+0000047500 00000 n 
+0000052141 00000 n 
+0000050582 00000 n 
+0000050755 00000 n 
+0000050929 00000 n 
+0000051103 00000 n 
+0000051276 00000 n 
+0000051448 00000 n 
+0000051621 00000 n 
+0000051795 00000 n 
+0000051967 00000 n 
+0000056807 00000 n 
+0000054969 00000 n 
+0000052312 00000 n 
+0000056368 00000 n 
+0000055159 00000 n 
+0000055331 00000 n 
+0000055505 00000 n 
+0000056556 00000 n 
+0000055677 00000 n 
+0000056744 00000 n 
+0000055851 00000 n 
+0000056024 00000 n 
+0000056195 00000 n 
+0000064505 00000 n 
+0000061366 00000 n 
+0000056928 00000 n 
+0000063878 00000 n 
+0000061604 00000 n 
+0000061777 00000 n 
+0000061950 00000 n 
+0000062122 00000 n 
+0000064066 00000 n 
+0000062293 00000 n 
+0000062462 00000 n 
+0000062635 00000 n 
+0000062806 00000 n 
+0000062980 00000 n 
+0000063165 00000 n 
+0000063347 00000 n 
+0000064254 00000 n 
+0000063534 00000 n 
+0000064442 00000 n 
+0000063705 00000 n 
+0000069264 00000 n 
+0000067232 00000 n 
+0000064626 00000 n 
+0000069013 00000 n 
+0000067438 00000 n 
+0000067609 00000 n 
+0000069201 00000 n 
+0000067782 00000 n 
+0000067953 00000 n 
+0000068127 00000 n 
+0000068298 00000 n 
+0000068470 00000 n 
+0000076204 00000 n 
+0000069398 00000 n 
+0000076044 00000 n 
+0000068637 00000 n 
+0000068821 00000 n 
+0000076732 00000 n 
+0000076494 00000 n 
+0000078694 00000 n 
+0000078670 00000 n 
+0000083112 00000 n 
+0000083030 00000 n 
+0000098789 00000 n 
+0000098425 00000 n 
+0000107877 00000 n 
+0000107622 00000 n 
+0000123760 00000 n 
+0000123375 00000 n 
+0000132513 00000 n 
+0000132259 00000 n 
+0000138577 00000 n 
+0000138359 00000 n 
+0000139168 00000 n 
+0000139238 00000 n 
+0000140975 00000 n 
+0000142671 00000 n 
+0000142710 00000 n 
+0000142748 00000 n 
+0000142877 00000 n 
+trailer
+<<
+/Size 343
+/Root 341 0 R
+/Info 342 0 R
+/ID [<72E223D8C368EB4F95EC46C06235A1BE> <72E223D8C368EB4F95EC46C06235A1BE>]
+>>
+startxref
+143190
+%%EOF

Added: trunk/numpy/doc/swig/doc/numpy_swig.txt
===================================================================
--- trunk/numpy/doc/swig/doc/numpy_swig.txt	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/numpy_swig.txt	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,785 @@
+==========================================
+ numpy.i: a SWIG Interface File for NumPy
+==========================================
+
+:Author:      Bill Spotz
+:Institution: Sandia National Laboratories
+:Date:        13 September, 2007
+
+.. contents::
+
+Introduction
+============
+
+The Simple Wrapper and Interface Generator (or `SWIG
+<http://www.swig.org>`_) is a powerful tool for generating wrapper
+code for interfacing to a wide variety of scripting languages.
+`SWIG`_ can parse header files, and using only the code prototypes,
+create an interface to the target language.  But `SWIG`_ is not
+omnipotent.  For example, it cannot know from the prototype::
+
+    double rms(double* seq, int n);
+
+what exactly ``seq`` is.  Is it a single value to be altered in-place?
+Is it an array, and if so what is its length?  Is it input-only?
+Output-only?  Input-output?  `SWIG`_ cannot determine these details,
+and does not attempt to do so.
+
+Making an educated guess, humans can conclude that this is probably a
+routine that takes an input-only array of length ``n`` of ``double``
+values called ``seq`` and returns the root mean square.  The default
+behavior of `SWIG`_, however, will be to create a wrapper function
+that compiles, but is nearly impossible to use from the scripting
+language in the way the C routine was intended.
+
+For `python <http://www.python.org>`_, the preferred way of handling
+contiguous (or technically, *strided*) blocks of homogeneous data is
+with the module `NumPy <http://numpy.scipy.org>`_, which provides full
+object-oriented access to arrays of data.  Therefore, the most logical
+`python`_ interface for the ``rms`` function would be (including doc
+string)::
+
+    def rms(seq):
+        """
+        rms: return the root mean square of a sequence
+        rms(numpy.ndarray) -> double
+        rms(list) -> double
+        rms(tuple) -> double
+        """
+
+where ``seq`` would be a `NumPy`_ array of ``double`` values, and its
+length ``n`` would be extracted from ``seq`` internally before being
+passed to the C routine.  Even better, since `NumPy`_ supports
+construction of arrays from arbitrary `python`_ sequences, ``seq``
+itself could be a nearly arbitrary sequence (so long as each element
+can be converted to a ``double``) and the wrapper code would
+internally convert it to a `NumPy`_ array before extracting its data
+and length.
+
+`SWIG`_ allows these types of conversions to be defined via a
+mechanism called typemaps.  This document provides information on how
+to use ``numpy.i``, a `SWIG`_ interface file that defines a series of
+typemaps intended to make the type of array-related conversions
+described above relatively simple to implement.  For example, suppose
+that the ``rms`` function prototype defined above was in a header file
+named ``rms.h``.  To obtain the `python`_ interface discussed above,
+your `SWIG`_ interface file would need the following::
+
+    %{
+    #define SWIG_FILE_WITH_INIT
+    #include "rms.h"
+    %}
+
+    %include "numpy.i"
+
+    %init %{
+    import_array();
+    %}
+
+    %apply (double* IN_ARRAY1, int DIM1) {(double* seq, int n)};
+    %include "rms.h"
+
+Typemaps are keyed off a list of one or more function arguments,
+either by type or by type and name.  We will refer to such lists as
+*signatures*.  One of the many typemaps defined by ``numpy.i`` is used
+above and has the signature ``(double* IN_ARRAY1, int DIM1)``.  The
+argument names are intended to suggest that the ``double*`` argument
+is an input array of one dimension and that the ``int`` represents
+that dimension.  This is precisely the pattern in the ``rms``
+prototype.
+
+Most likely, no actual prototypes to be wrapped will have the argument
+names ``IN_ARRAY1`` and ``DIM1``.  We use the ``%apply`` directive to
+apply the typemap for one-dimensional input arrays of type ``double``
+to the actual prototype used by ``rms``.  Using ``numpy.i``
+effectively, therefore, requires knowing what typemaps are available
+and what they do.
+
+A `SWIG`_ interface file that includes the `SWIG`_ directives given
+above will produce wrapper code that looks something like::
+
+     1 PyObject *_wrap_rms(PyObject *args) {
+     2   PyObject *resultobj = 0;
+     3   double *arg1 = (double *) 0 ;
+     4   int arg2 ;
+     5   double result;
+     6   PyArrayObject *array1 = NULL ;
+     7   int is_new_object1 = 0 ;
+     8   PyObject * obj0 = 0 ;
+     9  
+    10   if (!PyArg_ParseTuple(args,(char *)"O:rms",&obj0)) SWIG_fail;
+    11   {
+    12     array1 = obj_to_array_contiguous_allow_conversion(
+    13                  obj0, NPY_DOUBLE, &is_new_object1);
+    14     npy_intp size[1] = {
+    15       -1 
+    16     };
+    17     if (!array1 || !require_dimensions(array1, 1) ||
+    18         !require_size(array1, size, 1)) SWIG_fail;
+    19     arg1 = (double*) array1->data;
+    20     arg2 = (int) array1->dimensions[0];
+    21   }
+    22   result = (double)rms(arg1,arg2);
+    23   resultobj = SWIG_From_double((double)(result));
+    24   {
+    25     if (is_new_object1 && array1) Py_DECREF(array1);
+    26   }
+    27   return resultobj;
+    28 fail:
+    29   {
+    30     if (is_new_object1 && array1) Py_DECREF(array1);
+    31   }
+    32   return NULL;
+    33 }
+
+The typemaps from ``numpy.i`` are responsible for the following lines
+of code: 12--20, 25 and 30.  Line 10 parses the input to the ``rms``
+function.  From the format string ``"O:rms"``, we can see that the
+argument list is expected to be a single `python`_ object (specified
+by the ``O`` before the colon) and whose pointer is stored in
+``obj0``.  A number of functions, supplied by ``numpy.i``, are called
+to make and check the (possible) conversion from a generic `python`_
+object to a `NumPy`_ array.  These functions are explained in the
+section `Helper Functions`_, but hopefully their names are
+self-explanatory.  At line 12 we use ``obj0`` to construct a `NumPy`_
+array.  At line 17, we check the validity of the result: that it is
+non-null and that it has a single dimension of arbitrary length.  Once
+these states are verified, we extract the data buffer and length in
+lines 19 and 20 so that we can call the underlying C function at line
+22.  Line 25 performs memory management for the case where we have
+created a new array that is no longer needed.
+
+This code has a significant amount of error handling.  Note the
+``SWIG_fail`` is a macro for ``goto fail``, refering to the label at
+line 28.  If the user provides the wrong number of arguments, this
+will be caught at line 10.  If construction of the `NumPy`_ array
+fails or produces an array with the wrong number of dimensions, these
+errors are caught at line 17.  And finally, if an error is detected,
+memory is still managed correctly at line 30.
+
+Note that if the C function signature was in a different order::
+
+    double rms(int n, double* seq);
+
+that `SWIG`_ would not match the typemap signature given above with
+the argument list for ``rms``.  Fortunately, ``numpy.i`` has a set of
+typemaps with the data pointer given last::
+
+    %apply (int DIM1, double* IN_ARRAY1) {(int n, double* seq)};
+
+This simply has the effect of switching the definitions of ``arg1``
+and ``arg2`` in lines 3 and 4 of the generated code above, and their
+assignments in lines 19 and 20.
+
+Using numpy.i
+=============
+
+The ``numpy.i`` file is currently located in the ``numpy/docs/swig``
+sub-directory under the ``numpy`` installation directory.  Typically,
+you will want to copy it to the directory where you are developing
+your wrappers.  If it is ever adopted by `SWIG`_ developers, then it
+will be installed in a standard place where `SWIG`_ can find it.
+
+A simple module that only uses a single `SWIG`_ interface file should
+include the following::
+
+    %{
+    #define SWIG_FILE_WITH_INIT
+    %}
+    %include "numpy.i"
+    %init %{
+    import_array();
+    %}
+
+Within a compiled `python`_ module, ``import_array()`` should only get
+called once.  This could be in a C/C++ file that you have written and
+is linked to the module.  If this is the case, then none of your
+interface files should ``#define SWIG_FILE_WITH_INIT`` or call
+``import_array()``.  Or, this initialization call could be in a
+wrapper file generated by `SWIG`_ from an interface file that has the
+``%init`` block as above.  If this is the case, and you have more than
+one `SWIG`_ interface file, then only one interface file should
+``#define SWIG_FILE_WITH_INIT`` and call ``import_array()``.
+
+Available Typemaps
+==================
+
+The typemap directives provided by ``numpy.i`` for arrays of different
+data types, say ``double`` and ``int``, and dimensions of different
+types, say ``int`` or ``long``, are identical to one another except
+for the C and `NumPy`_ type specifications.  The typemaps are
+therefore implemented (typically behind the scenes) via a macro::
+
+    %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
+
+that can be invoked for appropriate ``(DATA_TYPE, DATA_TYPECODE,
+DIM_TYPE)`` triplets.  For example::
+
+    %numpy_typemaps(double, NPY_DOUBLE, int)
+    %numpy_typemaps(int,    NPY_INT   , int)
+
+The ``numpy.i`` interface file uses the ``%numpy_typemaps`` macro to
+implement typemaps for the following C data types and ``int``
+dimension types:
+
+  * ``signed char``
+  * ``unsigned char``
+  * ``short``
+  * ``unsigned short``
+  * ``int``
+  * ``unsigned int``
+  * ``long``
+  * ``unsigned long``
+  * ``long long``
+  * ``unsigned long long``
+  * ``float``
+  * ``double``
+
+In the following descriptions, we reference a generic ``DATA_TYPE``, which
+could be any of the C data types listed above.
+
+Input Arrays
+------------
+
+Input arrays are defined as arrays of data that are passed into a
+routine but are not altered in-place or returned to the user.  The
+`python`_ input array is therefore allowed to be almost any `python`_
+sequence (such as a list) that can be converted to the requested type
+of array.  The input array signatures are
+
+  * ``(	DATA_TYPE IN_ARRAY1[ANY] )``
+  * ``(	DATA_TYPE* IN_ARRAY1,  int DIM1 )``
+  * ``(	int DIM1,  DATA_TYPE* IN_ARRAY1 )``
+  * ``(	DATA_TYPE IN_ARRAY2[ANY][ANY] )``
+  * ``(	DATA_TYPE* IN_ARRAY2,  int DIM1,  int DIM2 )``
+  * ``(	int DIM1,  int DIM2,  DATA_TYPE* IN_ARRAY2 )``
+  * ``(	DATA_TYPE IN_ARRAY3[ANY][ANY][ANY] )``
+  * ``(	DATA_TYPE* IN_ARRAY3,  int DIM1,  int DIM2,  int DIM3 )``
+  * ``(	int DIM1,  int DIM2,  int DIM3,  DATA_TYPE* IN_ARRAY3 )``
+
+The first signature listed, ``( DATA_TYPE IN_ARRAY[ANY] )`` is for
+one-dimensional arrays with hard-coded dimensions.  Likewise,
+``( DATA_TYPE IN_ARRAY2[ANY][ANY] )`` is for two-dimensional arrays
+with hard-coded dimensions, and similarly for three-dimensional.
+
+In-Place Arrays
+---------------
+
+In-place arrays are defined as arrays that are modified in-place.  The
+input values may or may not be used, but the values at the time the
+function returns are significant.  The provided `python`_ argument
+must therefore be a `NumPy`_ array of the required type.  The in-place
+signatures are
+
+  * ``(	DATA_TYPE INPLACE_ARRAY1[ANY] )``
+  * ``(	DATA_TYPE* INPLACE_ARRAY1,  int DIM1 )``
+  * ``(	int DIM1,  DATA_TYPE* INPLACE_ARRAY1 )``
+  * ``(	DATA_TYPE INPLACE_ARRAY2[ANY][ANY] )``
+  * ``(	DATA_TYPE* INPLACE_ARRAY2,  int DIM1,  int DIM2 )``
+  * ``(	int DIM1,  int DIM2,  DATA_TYPE* INPLACE_ARRAY2 )``
+  * ``(	DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY] )``
+  * ``(	DATA_TYPE* INPLACE_ARRAY3,  int DIM1,  int DIM2,  int DIM3 )``
+  * ``(	int DIM1,  int DIM2,  int DIM3,  DATA_TYPE* INPLACE_ARRAY3 )``
+
+These typemaps now check to make sure that the ``INPLACE_ARRAY``
+arguments use native byte ordering.  If not, an exception is raised.
+
+Argout Arrays
+-------------
+
+Argout arrays are arrays that appear in the input arguments in C, but
+are in fact output arrays.  This pattern occurs often when there is
+more than one output variable and the single return argument is
+therefore not sufficient.  In `python`_, the convential way to return
+multiple arguments is to pack them into a sequence (tuple, list, etc.)
+and return the sequence.  This is what the argout typemaps do.  If a
+wrapped function that uses these argout typemaps has more than one
+return argument, they are packed into a tuple or list, depending on
+the version of `python`_.  The `python`_ user does not pass these
+arrays in, they simply get returned.  The argout signatures are
+
+  * ``(	DATA_TYPE ARGOUT_ARRAY1[ANY] )``
+  * ``(	DATA_TYPE* ARGOUT_ARRAY1,  int DIM1 )``
+  * ``(	int DIM1,  DATA_TYPE* ARGOUT_ARRAY1 )``
+  * ``(	DATA_TYPE ARGOUT_ARRAY2[ANY][ANY] )``
+  * ``(	DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY] )``
+
+These are typically used in situations where in C/C++, you would
+allocate a(n) array(s) on the heap, and call the function to fill the
+array(s) values.  In `python`_, the arrays are allocated for you and
+returned as new array objects.
+
+Note that we support ``DATA_TYPE*`` argout typemaps in 1D, but not 2D
+or 3D.  This because of a quirk with the `SWIG`_ typemap syntax and
+cannot be avoided.  Note that for these types of 1D typemaps, the
+`python`_ function will take a single argument representing ``DIM1``.
+
+Output Arrays
+-------------
+
+The ``numpy.i`` interface file does not support typemaps for output
+arrays, for several reasons.  First, C/C++ return arguments are
+limited to a single value.  This prevents obtaining dimension
+information in a general way.  Second, arrays with hard-coded lengths
+are not permitted as return arguments.  In other words::
+
+    double[3] newVector(double x, double y, double z);
+
+is not legal C/C++ syntax.  Therefore, we cannot provide typemaps of
+the form::
+
+    %typemap(out) (TYPE[ANY]);
+
+If you run into a situation where a function or method is returning a
+pointer to an array, your best bet is to write your own version of the
+function to be wrapped, either with ``%extend`` for the case of class
+methods or ``%ignore`` and ``%rename`` for the case of functions.
+
+Other Common Types: bool
+------------------------
+
+Note that C++ type ``bool`` is not supported in the list in the
+`Available Typemaps`_ section.  NumPy bools are a single byte, while
+the C++ ``bool`` is four bytes (at least on my system).  Therefore::
+
+    %numpy_typemaps(bool, NPY_BOOL, int)
+
+will result in typemaps that will produce code that reference
+improper data lengths.  You can implement the following macro
+expansion::
+
+    %numpy_typemaps(bool, NPY_UINT, int)
+
+to fix the data length problem, and `Input Arrays`_ will work fine,
+but `In-Place Arrays`_ might fail type-checking.
+
+Other Common Types: complex
+---------------------------
+
+Typemap conversions for complex floating-point types is also not
+supported automatically.  This is because `python`_ and `NumPy`_ are
+written in C, which does not have native complex types.  Both
+`python`_ and `NumPy`_ implement their own (essentially equivalent)
+``struct`` definitions for complex variables::
+
+    /* Python */
+    typedef struct {double real; double imag;} Py_complex;
+
+    /* NumPy */
+    typedef struct {float  real, imag;} npy_cfloat;
+    typedef struct {double real, imag;} npy_cdouble;
+
+We could have implemented::
+
+    %numpy_typemaps(Py_complex , NPY_CDOUBLE, int)
+    %numpy_typemaps(npy_cfloat , NPY_CFLOAT , int)
+    %numpy_typemaps(npy_cdouble, NPY_CDOUBLE, int)
+
+which would have provided automatic type conversions for arrays of
+type ``Py_complex``, ``npy_cfloat`` and ``npy_cdouble``.  However, it
+seemed unlikely that there would be any independent (non-`python`_,
+non-`NumPy`_) application code that people would be using `SWIG`_ to
+generate a `python`_ interface to, that also used these definitions
+for complex types.  More likely, these application codes will define
+their own complex types, or in the case of C++, use ``std::complex``.
+Assuming these data structures are compatible with `python`_ and
+`NumPy`_ complex types, ``%numpy_typemap`` expansions as above (with
+the user's complex type substituted for the first argument) should
+work.
+
+Helper Functions
+================
+
+The ``numpy.i`` file containes several macros and routines that it
+uses internally to build its typemaps.  However, these functions may
+be useful elsewhere in your interface file.
+
+Macros
+------
+
+  **is_array(a)**
+    Evaluates as true if ``a`` is non-``NULL`` and can be cast to a
+    ``PyArrayObject*``.
+
+  **array_type(a)**
+    Evaluates to the integer data type code of ``a``, assuming ``a`` can
+    be cast to a ``PyArrayObject*``.
+
+  **array_numdims(a)**
+    Evaluates to the integer number of dimensions of ``a``, assuming
+    ``a`` can be cast to a ``PyArrayObject*``.
+
+  **array_dimensions(a)**
+    Evaluates to an array of type ``npy_intp`` and length
+    ``array_numdims(a)``, giving the lengths of all of the dimensions
+    of ``a``, assuming ``a`` can be cast to a ``PyArrayObject*``.
+
+  **array_size(a,i)**
+    Evaluates to the ``i``-th dimension size of ``a``, assuming ``a``
+    can be cast to a ``PyArrayObject*``.
+
+  **array_data(a)**
+    Evaluates to a pointer of type ``void*`` that points to the data
+    buffer of ``a``, assuming ``a`` can be cast to a ``PyArrayObject*``.
+
+  **array_is_contiguous(a)**
+    Evaluates as true if ``a`` is a contiguous array.  Equivalent to
+    ``(PyArray_ISCONTIGUOUS(a))``.
+
+  **array_is_native(a)**
+    Evaluates as true if the data buffer of ``a`` uses native byte
+    order.  Equivalent to ``(PyArray_ISNOTSWAPPED(a))``.
+
+Routines
+--------
+
+  **pytype_string()**
+
+    Return type: ``char*``
+
+    Arguments:
+
+    * ``PyObject* py_obj``, a general `python`_ object.
+
+    Return a string describing the type of ``py_obj``.
+
+
+  **typecode_string()**
+
+    Return type: ``char*``
+
+    Arguments:
+
+    * ``int typecode``, a `NumPy`_ integer typecode.
+
+    Return a string describing the type corresponding to the `NumPy`_
+    ``typecode``.
+
+  **type_match()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``int actual_type``, the `NumPy`_ typecode of a `NumPy`_ array.
+
+    * ``int desired_type``, the desired `NumPy`_ typecode.
+
+    Make sure that ``actual_type`` is compatible with
+    ``desired_type``.  For example, this allows character and
+    byte types, or int and long types, to match.  This is now
+    equivalent to ``PyArray_EquivTypenums()``.
+
+
+  **obj_to_array_no_conversion()**
+
+    Return type: ``PyArrayObject*``
+
+    Arguments:
+
+    * ``PyObject* input``, a general `python`_ object.
+
+    * ``int typecode``, the desired `NumPy`_ typecode.
+
+    Cast ``input`` to a ``PyArrayObject*`` if legal, and ensure that
+    it is of type ``typecode``.  If ``input`` cannot be cast, or the
+    ``typecode`` is wrong, set a `python`_ error and return ``NULL``.
+
+
+  **obj_to_array_allow_conversion()**
+
+    Return type: ``PyArrayObject*``
+
+    Arguments:
+
+    * ``PyObject* input``, a general `python`_ object.
+
+    * ``int typecode``, the desired `NumPy`_ typecode of the resulting
+      array.
+
+    * ``int* is_new_object``, returns a value of 0 if no conversion
+      performed, else 1.
+
+    Convert ``input`` to a `NumPy`_ array with the given ``typecode``.
+    On success, return a valid ``PyArrayObject*`` with the correct
+    type.  On failure, the `python`_ error string will be set and the
+    routine returns ``NULL``.
+
+
+  **make_contiguous()**
+
+    Return type: ``PyArrayObject*``
+
+    Arguments:
+
+    * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+    * ``int* is_new_object``, returns a value of 0 if no conversion
+      performed, else 1.
+
+    * ``int min_dims``, minimum allowable dimensions.
+
+    * ``int max_dims``, maximum allowable dimensions.
+
+    Check to see if ``ary`` is contiguous.  If so, return the input
+    pointer and flag it as not a new object.  If it is not contiguous,
+    create a new ``PyArrayObject*`` using the original data, flag it
+    as a new object and return the pointer.
+
+
+  **obj_to_array_contiguous_allow_conversion()**
+
+    Return type: ``PyArrayObject*``
+
+    Arguments:
+
+    * ``PyObject* input``, a general `python`_ object.
+
+    * ``int typecode``, the desired `NumPy`_ typecode of the resulting
+      array.
+
+    * ``int* is_new_object``, returns a value of 0 if no conversion
+      performed, else 1.
+
+    Convert ``input`` to a contiguous ``PyArrayObject*`` of the
+    specified type.  If the input object is not a contiguous
+    ``PyArrayObject*``, a new one will be created and the new object
+    flag will be set.
+
+
+  **require_contiguous()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+    Test whether ``ary`` is contiguous.  If so, return 1.  Otherwise,
+    set a `python`_ error and return 0.
+
+
+  **require_native()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``PyArray_Object* ary``, a `NumPy`_ array.
+
+    Require that ``ary`` is not byte-swapped.  If the array is not
+    byte-swapped, return 1.  Otherwise, set a `python`_ error and
+    return 0.
+
+  **require_dimensions()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+    * ``int exact_dimensions``, the desired number of dimensions.
+
+    Require ``ary`` to have a specified number of dimensions.  If the
+    array has the specified number of dimensions, return 1.
+    Otherwise, set a `python`_ error and return 0.
+
+
+  **require_dimensions_n()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+    * ``int* exact_dimensions``, an array of integers representing
+      acceptable numbers of dimensions.
+
+    * ``int n``, the length of ``exact_dimensions``.
+
+    Require ``ary`` to have one of a list of specified number of
+    dimensions.  If the array has one of the specified number of
+    dimensions, return 1.  Otherwise, set the `python`_ error string
+    and return 0.
+
+
+  **require_size()**
+
+    Return type: ``int``
+
+    Arguments:
+
+    * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+    * ``npy_int* size``, an array representing the desired lengths of
+      each dimension.
+
+    * ``int n``, the length of ``size``.
+
+    Require ``ary`` to have a specified shape.  If the array has the
+    specified shape, return 1.  Otherwise, set the `python`_ error
+    string and return 0.
+
+
+Beyond the Provided Typemaps
+============================
+
+There are many C or C++ array/`NumPy`_ array situations not covered by
+a simple ``%include "numpy.i"`` and subsequent ``%apply`` directives.
+
+A Common Example
+----------------
+
+Consider a reasonable prototype for a dot product function::
+
+    double dot(int len, double* vec1, double* vec2);
+
+The `python`_ interface that we want is::
+
+    def dot(vec1, vec2):
+        """
+        dot(PyObject,PyObject) -> double
+        """
+
+The problem here is that there is one dimension argument and two array
+arguments, and our typemaps are set up for dimensions that apply to a
+single array (in fact, `SWIG`_ does not provide a mechanism for
+associating ``len`` with ``vec2`` that takes two `python`_ input
+arguments).  The recommended solution is the following::
+
+    %apply (int DIM1, double* IN_ARRAY1) {(int len1, double* vec1),
+                                          (int len2, double* vec2)}
+    %rename (dot) my_dot;
+    %exception my_dot {
+        $action
+	if (PyErr_Occurred()) SWIG_fail;
+    }
+    %inline %{
+    double my_dot(int len1, double* vec1, int len2, double* vec2) {
+        if (len1 != len2) {
+	    PyErr_Format(PyExc_ValueError,
+                         "Arrays of lengths (%d,%d) given",
+                         len1, len2);
+	    return 0.0;
+        }
+        return dot(len1, vec1, vec2);
+    }
+    %}
+
+If the header file that contains the prototype for ``double dot()``
+also contains other prototypes that you want to wrap, so that you need
+to ``%include`` this header file, then you will also need a ``%ignore
+dot;`` directive, placed after the ``%rename`` and before the
+``%include`` directives.  Or, if the function in question is a class
+method, you will want to use ``%extend`` rather than ``%inline`` in
+addition to ``%ignore``.
+
+**A note on error handling:** Note that ``my_dot`` returns a
+``double`` but that it can also raise a `python`_ error.  The
+resulting wrapper function will return a `python`_ float
+representation of 0.0 when the vector lengths do not match.  Since
+this is not ``NULL``, the `python`_ interpreter will not know to check
+for an error.  For this reason, we add the ``%exception`` directive
+above for ``my_dot`` to get the behavior we want (note that
+``$action`` is a macro that gets expanded to a valid call to
+``my_dot``).  In general, you will probably want to write a `SWIG`_
+macro to perform this task.
+
+Other Situations
+----------------
+
+There are other wrapping situations in which ``numpy.i`` may be
+helpful when you encounter them.
+
+  * In some situations, it is possible that you could use the
+    ``%numpy_templates`` macro to implement typemaps for your own
+    types.  See the `Other Common Types: bool`_ or `Other Common
+    Types: complex`_ sections for examples.  Another situation is if
+    your dimensions are of a type other than ``int`` (say ``long`` for
+    example)::
+
+        %numpy_typemaps(double, NPY_DOUBLE, long)
+
+  * You can use the code in ``numpy.i`` to write your own typemaps.
+    For example, if you had a four-dimensional array as a function
+    argument, you could cut-and-paste the appropriate
+    three-dimensional typemaps into your interface file.  The
+    modifications for the fourth dimension would be trivial.
+
+  * Sometimes, the best approach is to use the ``%extend`` directive
+    to define new methods for your classes (or overload existing ones)
+    that take a ``PyObject*`` (that either is or can be converted to a
+    ``PyArrayObject*``) instead of a pointer to a buffer.  In this
+    case, the helper routines in ``numpy.i`` can be very useful.
+
+  * Writing typemaps can be a bit nonintuitive.  If you have specific
+    questions about writing `SWIG`_ typemaps for `NumPy`_, the
+    developers of ``numpy.i`` do monitor the
+    `Numpy-discussion <mailto:Numpy-discussion@scipy.org>`_ and
+    `Swig-user <mailto:Swig-user@lists.sourceforge.net>`_ mail lists.
+
+A Final Note
+------------
+
+When you use the ``%apply`` directive, as is usually necessary to use
+``numpy.i``, it will remain in effect until you tell `SWIG`_ that it
+shouldn't be.  If the arguments to the functions or methods that you
+are wrapping have common names, such as ``length`` or ``vector``,
+these typemaps may get applied in situations you do not expect or
+want.  Therefore, it is always a good idea to add a ``%clear``
+directive after you are done with a specific typemap::
+
+    %apply (double* IN_ARRAY1, int DIM1) {(double* vector, int length)}
+    %include "my_header.h"
+    %clear (double* vector, int length);
+
+In general, you should target these typemap signatures specifically
+where you want them, and then clear them after you are done.
+
+Summary
+=======
+
+Out of the box, ``numpy.i`` provides typemaps that support conversion
+between `NumPy`_ arrays and C arrays:
+
+  * That can be one of 12 different scalar types: ``signed char``,
+    ``unsigned char``, ``short``, ``unsigned short``, ``int``,
+    ``unsigned int``, ``long``, ``unsigned long``, ``long long``,
+    ``unsigned long long``, ``float`` and ``double``.
+
+  * That support 23 different argument signatures for each data type,
+    including:
+
+    + One-dimensional, two-dimensional and three-dimensional arrays.
+
+    + Input-only, in-place, and argout behavior.
+
+    + Hard-coded dimensions, data-buffer-then-dimensions
+      specification, and dimensions-then-data-buffer specification.
+
+The ``numpy.i`` interface file also provides additional tools for
+wrapper developers, including:
+
+  * A `SWIG`_ macro (``%numpy_typemaps``) with three arguments for
+    implementing the 23 argument signatures for the user's choice of
+    (1) C data type, (2) `NumPy`_ data type (assuming they match), and
+    (3) dimension type.
+
+  * Seven C macros and eleven C functions that can be used to write
+    specialized typemaps, extensions, or inlined functions that handle
+    cases not covered by the provided typemaps.
+
+Acknowledgements
+================
+
+Many people have worked to glue `SWIG`_ and `NumPy`_ together (as well
+as `SWIG`_ and the predecessors of `NumPy`_, Numeric and numarray).
+The effort to standardize this work into ``numpy.i`` began at the 2005
+`SciPy <http://scipy.org>`_ Conference with a conversation between
+Fernando Perez and myself.  Fernando collected helper functions and
+typemaps from Michael Hunter, Anna Omelchenko and Michael Sanner.
+Sebastian Hasse has also provided additional error checking and use
+cases.  The work of these contributors has made this end result
+possible.

Added: trunk/numpy/doc/swig/doc/testing.html
===================================================================
--- trunk/numpy/doc/swig/doc/testing.html	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/testing.html	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,482 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Testing the numpy.i Typemaps</title>
+<meta name="author" content="Bill Spotz" />
+<meta name="date" content="6 April, 2007" />
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
+:Revision: $Revision: 4224 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="testing-the-numpy-i-typemaps">
+<h1 class="title">Testing the numpy.i Typemaps</h1>
+<table class="docinfo" frame="void" rules="none">
+<col class="docinfo-name" />
+<col class="docinfo-content" />
+<tbody valign="top">
+<tr><th class="docinfo-name">Author:</th>
+<td>Bill Spotz</td></tr>
+<tr class="field"><th class="docinfo-name">Institution:</th><td class="field-body">Sandia National Laboratories</td>
+</tr>
+<tr><th class="docinfo-name">Date:</th>
+<td>6 April, 2007</td></tr>
+</tbody>
+</table>
+<div class="contents topic">
+<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
+<ul class="simple">
+<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
+<li><a class="reference" href="#testing-organization" id="id2" name="id2">Testing Organization</a></li>
+<li><a class="reference" href="#testing-header-files" id="id3" name="id3">Testing Header Files</a></li>
+<li><a class="reference" href="#testing-source-files" id="id4" name="id4">Testing Source Files</a></li>
+<li><a class="reference" href="#testing-swig-interface-files" id="id5" name="id5">Testing SWIG Interface Files</a></li>
+<li><a class="reference" href="#testing-python-scripts" id="id6" name="id6">Testing Python Scripts</a></li>
+</ul>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id1" id="introduction" name="introduction">Introduction</a></h1>
+<p>Writing tests for the <tt class="docutils literal"><span class="pre">numpy.i</span></tt> <a class="reference" href="http://www.swig.org">SWIG</a>
+interface file is a combinatorial headache.  At present, 12 different
+data types are supported, each with 23 different argument signatures,
+for a total of 276 typemaps supported &quot;out of the box&quot;.  Each of these
+typemaps, in turn, might require several unit tests in order to verify
+expected behavior for both proper and improper inputs.  Currently,
+this results in 1,020 individual unit tests that are performed when
+<tt class="docutils literal"><span class="pre">make</span> <span class="pre">test</span></tt> is run in the <tt class="docutils literal"><span class="pre">numpy/docs/swig</span></tt> subdirectory.</p>
+<p>To facilitate this many similar unit tests, some high-level
+programming techniques are employed, including C and <a class="reference" href="http://www.swig.org">SWIG</a> macros,
+as well as  <a class="reference" href="http://www.python.org">python</a> inheritance.  The
+purpose of this document is to describe the testing infrastructure
+employed to verify that the <tt class="docutils literal"><span class="pre">numpy.i</span></tt> typemaps are working as
+expected.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id2" id="testing-organization" name="testing-organization">Testing Organization</a></h1>
+<p>There are three indepedent testing frameworks supported, for one-,
+two-, and three-dimensional arrays respectively.  For one-dimensional
+arrays, there are two C++ files, a header and a source, named:</p>
+<pre class="literal-block">
+Vector.h
+Vector.cxx
+</pre>
+<p>that contain prototypes and code for a variety of functions that have
+one-dimensional arrays as function arguments.  The file:</p>
+<pre class="literal-block">
+Vector.i
+</pre>
+<p>is a <a class="reference" href="http://www.swig.org">SWIG</a> interface file that defines a python module <tt class="docutils literal"><span class="pre">Vector</span></tt>
+that wraps the functions in <tt class="docutils literal"><span class="pre">Vector.h</span></tt> while utilizing the typemaps
+in <tt class="docutils literal"><span class="pre">numpy.i</span></tt> to correctly handle the C arrays.</p>
+<p>The <tt class="docutils literal"><span class="pre">Makefile</span></tt> calls <tt class="docutils literal"><span class="pre">swig</span></tt> to generate <tt class="docutils literal"><span class="pre">Vector.py</span></tt> and
+<tt class="docutils literal"><span class="pre">Vector_wrap.cxx</span></tt>, and also executes the <tt class="docutils literal"><span class="pre">setup.py</span></tt> script that
+compiles <tt class="docutils literal"><span class="pre">Vector_wrap.cxx</span></tt> and links together the extension module
+<tt class="docutils literal"><span class="pre">_Vector.so</span></tt> or <tt class="docutils literal"><span class="pre">_Vector.dylib</span></tt>, depending on the platform.  This
+extension module and the proxy file <tt class="docutils literal"><span class="pre">Vector.py</span></tt> are both placed in a
+subdirectory under the <tt class="docutils literal"><span class="pre">build</span></tt> directory.</p>
+<p>The actual testing takes place with a <a class="reference" href="http://www.python.org">python</a> script named:</p>
+<pre class="literal-block">
+testVector.py
+</pre>
+<p>that uses the standard <a class="reference" href="http://www.python.org">python</a> library module <tt class="docutils literal"><span class="pre">unittest</span></tt>, which
+performs several tests of each function defined in <tt class="docutils literal"><span class="pre">Vector.h</span></tt> for
+each data type supported.</p>
+<p>Two-dimensional arrays are tested in exactly the same manner.  The
+above description applies, but with <tt class="docutils literal"><span class="pre">Matrix</span></tt> substituted for
+<tt class="docutils literal"><span class="pre">Vector</span></tt>.  For three-dimensional tests, substitute <tt class="docutils literal"><span class="pre">Tensor</span></tt> for
+<tt class="docutils literal"><span class="pre">Vector</span></tt>.  For the descriptions that follow, we will reference the
+<tt class="docutils literal"><span class="pre">Vector</span></tt> tests, but the same information applies to <tt class="docutils literal"><span class="pre">Matrix</span></tt> and
+<tt class="docutils literal"><span class="pre">Tensor</span></tt> tests.</p>
+<p>The command <tt class="docutils literal"><span class="pre">make</span> <span class="pre">test</span></tt> will ensure that all of the test software is
+built and then run all three test scripts.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id3" id="testing-header-files" name="testing-header-files">Testing Header Files</a></h1>
+<p><tt class="docutils literal"><span class="pre">Vector.h</span></tt> is a C++ header file that defines a C macro called
+<tt class="docutils literal"><span class="pre">TEST_FUNC_PROTOS</span></tt> that takes two arguments: <tt class="docutils literal"><span class="pre">TYPE</span></tt>, which is a
+data type name such as <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt>; and <tt class="docutils literal"><span class="pre">SNAME</span></tt>, which is a
+short name for the same data type with no spaces, e.g. <tt class="docutils literal"><span class="pre">uint</span></tt>.  This
+macro defines several function prototypes that have the prefix
+<tt class="docutils literal"><span class="pre">SNAME</span></tt> and have at least one argument that is an array of type
+<tt class="docutils literal"><span class="pre">TYPE</span></tt>.  Those functions that have return arguments return a
+<tt class="docutils literal"><span class="pre">TYPE</span></tt> value.</p>
+<p><tt class="docutils literal"><span class="pre">TEST_FUNC_PROTOS</span></tt> is then implemented for all of the data types
+supported by <tt class="docutils literal"><span class="pre">numpy.i</span></tt>:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">short</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">int</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">float</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">double</span></tt></li>
+</ul>
+</blockquote>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id4" id="testing-source-files" name="testing-source-files">Testing Source Files</a></h1>
+<p><tt class="docutils literal"><span class="pre">Vector.cxx</span></tt> is a C++ source file that implements compilable code
+for each of the function prototypes specified in <tt class="docutils literal"><span class="pre">Vector.h</span></tt>.  It
+defines a C macro <tt class="docutils literal"><span class="pre">TEST_FUNCS</span></tt> that has the same arguments and works
+in the same way as <tt class="docutils literal"><span class="pre">TEST_FUNC_PROTOS</span></tt> does in <tt class="docutils literal"><span class="pre">Vector.h</span></tt>.
+<tt class="docutils literal"><span class="pre">TEST_FUNCS</span></tt> is implemented for each of the 12 data types as above.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id5" id="testing-swig-interface-files" name="testing-swig-interface-files">Testing SWIG Interface Files</a></h1>
+<p><tt class="docutils literal"><span class="pre">Vector.i</span></tt> is a <a class="reference" href="http://www.swig.org">SWIG</a> interface file that defines python module
+<tt class="docutils literal"><span class="pre">Vector</span></tt>.  It follows the conventions for using <tt class="docutils literal"><span class="pre">numpy.i</span></tt> as
+described in the <a class="reference" href="numpy_swig.html">numpy.i documentation</a>.  It
+defines a <a class="reference" href="http://www.swig.org">SWIG</a> macro <tt class="docutils literal"><span class="pre">%apply_numpy_typemaps</span></tt> that has a single
+argument <tt class="docutils literal"><span class="pre">TYPE</span></tt>.  It uses the <a class="reference" href="http://www.swig.org">SWIG</a> directive <tt class="docutils literal"><span class="pre">%apply</span></tt> as
+described in the <a class="reference" href="numpy_swig.html">numpy.i documentation</a> to apply the provided
+typemaps to the argument signatures found in <tt class="docutils literal"><span class="pre">Vector.h</span></tt>.  This macro
+is then implemented for all of the data types supported by
+<tt class="docutils literal"><span class="pre">numpy.i</span></tt>.  It then does a <tt class="docutils literal"><span class="pre">%include</span> <span class="pre">&quot;Vector.h&quot;</span></tt> to wrap all of
+the function prototypes in <tt class="docutils literal"><span class="pre">Vector.h</span></tt> using the typemaps in
+<tt class="docutils literal"><span class="pre">numpy.i</span></tt>.</p>
+</div>
+<div class="section">
+<h1><a class="toc-backref" href="#id6" id="testing-python-scripts" name="testing-python-scripts">Testing Python Scripts</a></h1>
+<p>After <tt class="docutils literal"><span class="pre">make</span></tt> is used to build the testing extension modules,
+<tt class="docutils literal"><span class="pre">testVector.py</span></tt> can be run to execute the tests.  As with other
+scripts that use <tt class="docutils literal"><span class="pre">unittest</span></tt> to facilitate unit testing,
+<tt class="docutils literal"><span class="pre">testVector.py</span></tt> defines a class that inherits from
+<tt class="docutils literal"><span class="pre">unittest.TestCase</span></tt>:</p>
+<pre class="literal-block">
+class VectorTestCase(unittest.TestCase):
+</pre>
+<p>However, this class is not run directly.  Rather, it serves as a base
+class to several other python classes, each one specific to a
+particular data type.  The <tt class="docutils literal"><span class="pre">VectorTestCase</span></tt> class stores two strings
+for typing information:</p>
+<blockquote>
+<dl class="docutils">
+<dt><strong>self.typeStr</strong></dt>
+<dd>A string that matches one of the <tt class="docutils literal"><span class="pre">SNAME</span></tt> prefixes used in
+<tt class="docutils literal"><span class="pre">Vector.h</span></tt> and <tt class="docutils literal"><span class="pre">Vector.cxx</span></tt>.  For example, <tt class="docutils literal"><span class="pre">&quot;double&quot;</span></tt>.</dd>
+<dt><strong>self.typeCode</strong></dt>
+<dd>A short (typically single-character) string that represents a
+data type in numpy and corresponds to <tt class="docutils literal"><span class="pre">self.typeStr</span></tt>.  For
+example, if <tt class="docutils literal"><span class="pre">self.typeStr</span></tt> is <tt class="docutils literal"><span class="pre">&quot;double&quot;</span></tt>, then
+<tt class="docutils literal"><span class="pre">self.typeCode</span></tt> should be <tt class="docutils literal"><span class="pre">&quot;d&quot;</span></tt>.</dd>
+</dl>
+</blockquote>
+<p>Each test defined by the <tt class="docutils literal"><span class="pre">VectorTestCase</span></tt> class extracts the python
+function it is trying to test by accessing the <tt class="docutils literal"><span class="pre">Vector</span></tt> module's
+dictionary:</p>
+<pre class="literal-block">
+length = Vector.__dict__[self.typeStr + &quot;Length&quot;]
+</pre>
+<p>In the case of double precision tests, this will return the python
+function <tt class="docutils literal"><span class="pre">Vector.doubleLength</span></tt>.</p>
+<p>We then define a new test case class for each supported data type with
+a short definition such as:</p>
+<pre class="literal-block">
+class doubleTestCase(VectorTestCase):
+    def __init__(self, methodName=&quot;runTest&quot;):
+        VectorTestCase.__init__(self, methodName)
+        self.typeStr  = &quot;double&quot;
+        self.typeCode = &quot;d&quot;
+</pre>
+<p>Each of these 12 classes is collected into a <tt class="docutils literal"><span class="pre">unittest.TestSuite</span></tt>,
+which is then executed.  Errors and failures are summed together and
+returned as the exit argument.  Any non-zero result indicates that at
+least one test did not pass.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2007-04-06 21:21 UTC.
+Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
+
+</div>
+</body>
+</html>

Added: trunk/numpy/doc/swig/doc/testing.pdf
===================================================================
--- trunk/numpy/doc/swig/doc/testing.pdf	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/testing.pdf	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,1016 @@
+%PDF-1.4
+5 0 obj
+<< /S /GoTo /D (contents.0) >>
+endobj
+8 0 obj
+(Contents)
+endobj
+9 0 obj
+<< /S /GoTo /D (introduction.0) >>
+endobj
+12 0 obj
+(Introduction)
+endobj
+13 0 obj
+<< /S /GoTo /D (testing-organization.0) >>
+endobj
+16 0 obj
+(Testing Organization)
+endobj
+17 0 obj
+<< /S /GoTo /D (testing-header-files.0) >>
+endobj
+20 0 obj
+(Testing Header Files)
+endobj
+21 0 obj
+<< /S /GoTo /D (testing-source-files.0) >>
+endobj
+24 0 obj
+(Testing Source Files)
+endobj
+25 0 obj
+<< /S /GoTo /D (testing-swig-interface-files.0) >>
+endobj
+28 0 obj
+(Testing SWIG Interface Files)
+endobj
+29 0 obj
+<< /S /GoTo /D (testing-python-scripts.0) >>
+endobj
+32 0 obj
+(Testing Python Scripts)
+endobj
+33 0 obj
+<< /S /GoTo /D [34 0 R  /Fit ] >>
+endobj
+36 0 obj <<
+/Length 2238      
+/Filter /FlateDecode
+>>
+stream
+xÚ½Y[·~÷¯ú4‹Xôð>Ì›ãÆ©‹ -¡yhú0‘fµB,i+im¯}Ï…äp4³³.Š‹…(ò<ç;wJ.jø“o„©ƒ]ø&ç¬\¬÷/êÅÖ~x!#1Në<|™X]jmE‚Z,]^7¶¤QËÆ
+g-½"(çú»Õ‹WouXH/”´f±º]ÈPo½Èt«Í¿ªÕUw¾ìndu€ÿíÍR×uu¹ƒq‡cœV¾z€ïû{=â_wLºâIYÝß,•­º}KcYoþ½úë‹ïW™Õ …·Ê,œaV¬D¼,©I,c €SŽ¤ª¬J½pÖï%	õ¹%ŽðB>^½mŠ]Ú	eµƒ›ü[`<HW}‡ ¼§Ёª~ŽB¹êxág>gpý2´”Zã=øî@â»±²;¼#>¬ÚÙó!APº·Å#6„2|A~tõ·ö'Ž¸ÚF6lc&O8‰$4Bºî<ÅsºuÀóŸis7æQQ›P`e¤‘•c–^ßÀ|B÷’yRuí'®–¶Fï جÐF):òMÔÓá6^:þOò+뵐hžC†mõ´[™×p洍K?•v„–åEdw%(‰*Eµ«¦ºDDŽ O*DXª»’L‚>šP™méáÆ Á’¸üÀ–R^ÎËŸˆ8–4cI”4…0“¿GL¶dÖ¸ø¹"U kÉÂ8îI'l-ÃWDDƒãÔ²™G$Í#ò—®EÓèNì/oêF¶/›F4MX”LàâÁC"êÇâ‡öE™Ä#Íã1ïøÍdÝñäs¨8_N-J>&`Q´ÿzfb‚†ì.õ,,™èyX~ÿw?°ô!¦C n1hZJ»@„Y”ìÑ²JH㛯ˆ=«æm(ÑÌcõb‚KwXr_§u	ÆÖ—9åQÁОD4b
+=ð?æŒ§det-œŽáñç8¸ÿ¹>7k¨&Ê‚z±TrBùiLN²×‚+Íæpf©hâ–k€¼ÈÅ]c]‰/\‚Õ!§öCLUûbÉuÞµ)Õ”e©©!.©ðŒª3ù² ézt(²T˜ÿ5s¥3C®Ô•‰æo†NCT^ÌO»€úk-Mò4žÙ%ô
Uk0³>î±2þ­Ð×°8£úM)Öeƒv;軀:ËÔÕkœ¸0]*µºs—Y{ÉWJÅŸ©`þ4q(=°^'AhÖ²umcÀ·qˆaÇc.}!’Ðt{baq|~ˆ&rßžÔ†Y2¡‰¢0°ÃTwÙ1á»­”æ“žd˜¨èÎ-Ùä`þŒ[¶чL¼;Ù?‘¤’\Å#ê8¼eΔwÓrïÛÜÄ C2d\±ÎÈÔW¿Jm(™¿
+ÂÞ¥Uø"MDzaú³º‘Ð?¡âaâûÂhïèŒ3bßêŠï—ØÔèhzyg‚êÀŠRAU{ó.‹|–ÿ‰Ô;8ù”x6Õ¹û€”¤+„~ˆî’Äj’p_ÁÁ•ŠŸD|œÂ¹¿j=ð{L_uŸz=­ò¸ÀvwdÎ Þ‡Tdžxý6]‚?Z%®&;Æ£ã¦Ø‹ÑxÇ}ð$]róû‰ú”Mõ&!_9GGï¨ßk7†e›hÙ‘øÒ/$HAùƵªË…¾}L ¤^ô6 ›ãÀ•1s‹î“I	RPÀµŒ…L(£Ûn˜ðã‹=ÎAŸE ä$´'ÍÉêw>ئô–ꉺƚ8íßõÌž¢¸±Øõùœh½¨¡
+šÉ‰¯"”س®#_¯âçÇàvÌg#…SÚǃI¡lIM„å:§2Á‘[CQ7º•BØf†:¦§Tþ¥hÛ^’熑iÁ¦}{àà
GÕ}:¢=ñ¶‘s7¥YPñÕù¸ïøÈtÃKJìÅïyov-Eý¾¨ep?Ó`º8£îÌL%»Ã¹ã{R½Dám›ßz¯\Æ$ªÑaˆäú}¼`3¬®ä…7øaS¸®5˜K Ò4hž)…2ù² $£CçK!éŒPNY¸.\#Íü½ª:øÁ½û–jç#©Ú7U{fX>"Ø]|-#€Æ-‡±ÂB/ñeØ$êY¯DïSâ.
+ÿkN<—AÛYŒ2Ñ<¾Îu“,æ.‹ÙÿÔÍRN—Õ
+’,Y-Àw_$ãXEœãez ôÚaaj“ß•Öê3]¬vú-Ý9÷?1A²/¨¬BË«‚°¨RRÌŸì·Ò×Û(F{NO_ùÁ+Wf¼ã	WÍ1ùÈd“i¿ŒÛíåù8®´Òý%ÍÍÕãp«SWôTYHœ–ù‚"÷ïc¬Ú¸aªp‘å¯{H²ÇZö¨ðÁ>½ìéUù€§{ËÏk[L›‡Ýç–œŸo+WÙ\cÓã-M=Nª+º(Ħ¬Ù±K™6—Ø”rÌï†PŦõ¹¦û›¾±UüÞ-ã
+©‰ÏMS©lK\õâ,S˜G’œøú'uëšS*"Ç} #È¥Y©N.·8ß坾ÎÀøŸû"ï³lèI6^^Y~a€¥1pðÄ›o`ñÞ\v¯éÀøCß‹¦—ÉŒbOt.êâö+7~ûÔ˽ҍ°ª‘ÿó“Ò2€WhÓ`CßÁÏ.nâ¹(S¡Žþ«Çu4§cd]‚MÇÜœûDÿ#çZÒÐ÷¯¯e(Å€eŒ­ÖÇ\ù·±5ÆõEQìRÇ
8%EàxÝÿ¸ÐñLny‘’?>ÜØضÓOAñXZ¢æø¹Í%òð
+rJ$
+ઢ±B#§=oÍÄÖ„SñÂy¦4{ŠÅÞA†±å[I¬4ù'
Òþ’ªþ-xÚ@3Õsö¶{ŠÕÐè8§_½Ͳ —1ÁâC¯Ê'!+òú:«jÈ…NMÝ÷_{ïîÌendstream
+endobj
+34 0 obj <<
+/Type /Page
+/Contents 36 0 R
+/Resources 35 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 69 0 R
+/Annots [ 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 64 0 R 65 0 R 66 0 R ]
+>> endobj
+50 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 572.1561 154.7972 581.0627]
+/Subtype /Link
+/A << /S /GoTo /D (introduction) >>
+>> endobj
+51 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 550.2982 191.9077 560.9481]
+/Subtype /Link
+/A << /S /GoTo /D (testing-organization) >>
+>> endobj
+52 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 530.3729 189.8853 541.2121]
+/Subtype /Link
+/A << /S /GoTo /D (testing-header-files) >>
+>> endobj
+53 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 510.4476 187.9425 521.2868]
+/Subtype /Link
+/A << /S /GoTo /D (testing-source-files) >>
+>> endobj
+54 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 490.5223 227.5535 501.3616]
+/Subtype /Link
+/A << /S /GoTo /D (testing-swig-interface-files) >>
+>> endobj
+55 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [98.3198 470.597 200.6545 481.4363]
+/Subtype /Link
+/A << /S /GoTo /D (testing-python-scripts) >>
+>> endobj
+64 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [204.9922 405.6211 234.1526 416.7393]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+65 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [136.0988 334.1691 165.2593 345.0083]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+66 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [244.5817 334.1691 276.9898 345.0083]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+37 0 obj <<
+/D [34 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+38 0 obj <<
+/D [34 0 R /XYZ 74.4095 771.7323 null]
+>> endobj
+48 0 obj <<
+/D [34 0 R /XYZ 74.4095 613.3264 null]
+>> endobj
+6 0 obj <<
+/D [34 0 R /XYZ 74.4095 613.3264 null]
+>> endobj
+49 0 obj <<
+/D [34 0 R /XYZ 74.4095 585.1076 null]
+>> endobj
+56 0 obj <<
+/D [34 0 R /XYZ 74.4095 461.6307 null]
+>> endobj
+10 0 obj <<
+/D [34 0 R /XYZ 74.4095 461.6307 null]
+>> endobj
+60 0 obj <<
+/D [34 0 R /XYZ 74.4095 420.7842 null]
+>> endobj
+67 0 obj <<
+/D [34 0 R /XYZ 74.4095 322.9312 null]
+>> endobj
+14 0 obj <<
+/D [34 0 R /XYZ 74.4095 322.9312 null]
+>> endobj
+68 0 obj <<
+/D [34 0 R /XYZ 74.4095 279.5807 null]
+>> endobj
+35 0 obj <<
+/Font << /F39 41 0 R /F44 44 0 R /F8 47 0 R /F51 59 0 R /F56 63 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+76 0 obj <<
+/Length 3176      
+/Filter /FlateDecode
+>>
+stream
+xÚµ[mÛÆþî_¡:$Úìû.ÓOm§)¤ˆ¯-Š¶(hî|ˆ%$9çö×wf߸»\’:Ç…!‹"‡;3ÏÎ;ylEá[I$íÔÊØŽh­Øj»EWpí»W,ÐH©‰TÚÀÆՍâ”X­ùj“/ò‡ÛW_½¶«ŽtšëÕíý
+®	%äÊhFŒîÌêöîëǶ>ßlcëþæ_·zõímZ˜QC8Sv¸ÃqÇK§‡@ós&G¢ßä7Œä/‹‚¼AþŸï¿‰!$VèJŒ
+„DµÀ\"-Sc7Ü®/p°;Á÷ðé·;Ì?)“ðû=^ôgî’\ð7]ßá¥@vÀã„©ûzµÿs3Üw<øûöÇ›
7îö‰èÿÕk¥s©­&\ª¢¸udl½
+ásò·åº"’SnªE~F5û§aÿ#APñ>È„êlñÚ£—;Ñ{Ђ9vR¨YaÙš8v#¡7’J¢;¸}Ãé”ân•çwA‚¸	B8é.ÙiüþïcùÁÓäJ¹Ÿa#ž w½Þí pqR!a‰â–…˜½[†¹åˆc?ށ“ÊlŽžÕöx
+0ì¶ïÝ:p‰û=Bw¥¶•&ßø¯>®Ó߀¡(g‚r zZ	‘#âÈœ·ï&LŒsÂt”ô· [ÿöî¾ ¤&„'c™	7oû÷ôÜâ# ê9,þ0^˜+ÒQÊJü•ë‡Ý!zj™ÐH)ˆ¬š]a†~GÜ'”ò¸íaO1B•]âóï é)@ûx#ÝG÷ñ7–ª#ÿ/As©¢€l¾9@²ûè¬):F <
¿žÚóBDgK_;.ÁПæa’ŠPnmÜÑí)ìç“[b#À.‹Ø~·=îŸr“j
+¤+%ôÿVˈ2ÉZ#ž(f"‡`ú\RàëãÃ.9à©Tjç©þy#c”Êk£<l8c1^£fsF{v¿ÇñStr×åžOÍH
‘¶SW2¼±.¢ôvÌ\pn%‹ò¹1ÄÛ×ò(m¥Ê–1~>nÎÅ1¹¨¹'`ٝö¡,Ö/@=µp©¹ŽsÚ~ËKîÒq?9à֏!@ÃbE50U0AËþ†¸¨uDB¶/"·‹ô!ø¿uh½À.k$¨¶»;ÆCì{×ùƒÛ5¼5îÁ´!Å´­]äà4쨤ã]t©·æèÞwÀ
+².šú¤4°!›qj!š+QZõm–ûmŒW“È»ó¥2·Jû_°Ø…ÔŸÁçO<?¦j-@XU¥\›ß¯tG	v©8Nô›ü†Q}:^õlՏµ<Ê&ie%OU%'ª)¬cÕ•RŒC; ƒ°öûná×µL±·Ñ†B`ƒÖ£!®\‰‰Öb™AË–pâþ"äŠDË…]”—…Ø6å‰îЀÑ)ëBšCh@“;£!ñÐ@£ä¼K¼SAç¼ønÔâ@}É]¬´¬eKV¤ßä7Œ›Ñ²×Ó°µ•<µ1Eªy)8€Ç…ä¥C	É;Ä~}¾ÔXà™˜¾bЊŽ[nÿ¸jÁöOˆ!Uqi‡.c‹1ÿ—&¤®S‘ƒÂvŸw¿º0r
+a'š€;èxïÚõù²Sý•w
+¢„¹2ŒºÌ"ԏ‚ÊÌZÃ?­òÎÒXÖÍ»Aüutßn±²Üó”Î:/^c¼ÑPHJV…øgäuÜı/²ûìPÖ!9)d¶5,éꇾnǪ¶ë±Î¯µw>Ú(J¤YF‚Ú"¤iÈ›‰_ÃmcLÓþ{mžÂ…è&»ó—þJL®—ÐåIìµ»ªY’W³ãš©ªÓ»ôÛ5³P຋5þ‡à¸)¹^’TÚŽG“iø-¤òŽ¾t˜Áˆà<Š
hk.Ö¯±BpfÙ
;åö{7o0ËÝ …@²¤Vs.ׂnƒ*‡Tž·U)Àœ„‰÷òT#}˜œÅHèô;alZ23—qž5i¢Î·d5ƒLïu‰Ý¿³ûgÄ¡óâ°øs,ßû»Ü†ÝGGrÛµ
¤sU'ÇQ3/’£*)dF ‚þåd«pñî/ÙPR)¡Ïïm8ñ Õ±Õs©’Û*^ë£XÚ-
+SJ¸Ö`³•3ÄbØ8¯›¨Ìy×a·¿Ÿ’8q÷ÅÜi£¸XLãp¨Lô¥Ü²xgC'vô4HT”p@ק{ŒÏÖ]YÉuCVw?ÎÇ{'ÄtgØýi )²©¡‹ç{΂ËÁ_;¥ª`$XßEP*Ÿëµg½ØoìžP_KÍI
+}'D®E0N ÁÂ-워Zÿ¹áþܹ®μ~|ßÞP¬‰¥¡Ø{yéÁE\Çê³Þ}óœú¯O*œ©¦õÒ–ã'iÚÓúlyÿµï·§0±…_ÃTs×ry˜6¢c}|ªqÆT¯áóøüŸo¹?Ãçgøüè~r÷ŒGVPhw¶&ùÒÔí¬S8ZfÞèÖÆÛ
+"­
+LÌ•¡‚=ÝšmTÒfJþ=(ñm£Ç§P}¦9–/R+l!å°ÃÚo*‹J8Ý(**ôžžÄeïaUµî[†É4%ܦâãCüü:XD²r‘}#øhqQÆàó;`«ØÌœX#S¨z,á÷ðùa@Måì“ <¿‹yé2ÂJe5:½%VSÆï"úɐ÷ð(ßü=Þ<›O8’ƒw$·Ô“Ÿ³¸‚–¤9P(Ê|¯f6£47,Ç-f„È|ðé¨KœˆuWLµkîb^ü%$çˆTžt„?ÎzÃqâaôäfàœ2r‹¢lµ~ÐK¥Aì5¶‡TuõPܲ‘˜Nzlˆ‡ýÙý¢¾4Œ)⤠âî(‚—͸¹ºSu+çNbZF#{k9#J[þ’0¥»AnÎnŽç Ëü£Ðlr܇L!'_¦Œ®c$¡tyÉJ”CÖÏ–ø¥–vòž–IJ´¢×ÆlIX×Eä~½QÚ— Èh×òQh@Ñr*ƒýüéÏJɪz &zºù}¬¸wp±ÝÏDZ¶Âcg]ãni¶q^n„žÝÝÖ²Tˆ½,ùéKž,ãdGœ¼J(é¨ÖêÅ“WI:Ë&§²aܺɗws?&sÓ“àVId(+-3š2íŸYÍÉ»ITc¾Õc-à+DWòIñÛè¾±ýÉe‹ÊJàΰ:žG$£šC$’-#2Ç6C¤æ;HÎ÷Šâç:d(Îu5[@&£šC&’-#3Ç6C¦æ;LÎ÷'ã!¾^¦TV.•W=§šQ=‘-ª>ËvP}Ä·­zÁ÷
+£¸o0 Óyt2ª9t"Ù2:sl3tj¾èä|‹ú³©²âDà#ðy•3ª9•#Ù²Êsl3•k¾*ç|_Ú"5Qt%A„T2ª9T"Ù2*sl3Tj¾¨ä|ßû?Ä—šjCm)-4ˆójgTsjG²eµçØfj×|'ÔÎù^a×!C%Ô/Ò, “QÍ!É–‘™c›!Só@&ç[ª}=ÜZ¢©TóHäT3H$²E$fÙHŒø¶‘(ø¾ØF^ –áDk¹PƒåTs`E²e°æØf`Õ|'ÀÊùÞ§‡%qÆ?¥ºÒÄàÓÑyÕ3ª9Õ#Ù²êsl3Õk¾ªç|ï‚Úñ©[þ˜¿˜Lo$ô\J¬åˆí´œP¿9~8¹7x>Ïhzæ%B¥ˆ\Ô#jéço2QC½tŒ}º“
®Ö#jYÍteÝÉú7›HU¿DÙ¿-WÜ/Q„3©ù™²gøð˵¿²|ÿ.ÜÐœy!íÒÌË
B"Lå‰@³Åå®U¦Ó¯2(F˜¤ŸøNyù®‡
Šõ÷ϱù0 _®õ_ø0€fƒÃ±hÕ©zÁäÿMÓž8—¬5á§áð W¾G4½ "NNŒP™8ЃÅüsSöŽ+é=Z½éÎâÞ"ÁWÆŠw„[€ÅIÊÑò:p|•æŸ<¤Léß…ù®	;©'mJ¢¨4ŸÇ¦ÆËB;f»YHc«0tÊ']þXŒ{WÙû’üŽ3‡-rþg[RkÆýâÙØË›€¥Ä^¥›³°>~^~!SCªÎâ·´ËÕH³ÉˆÆo˜u
+¢ƒái%”×ìÒŸI5øý:`¿endstream
+endobj
+75 0 obj <<
+/Type /Page
+/Contents 76 0 R
+/Resources 74 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 69 0 R
+/Annots [ 78 0 R 79 0 R 80 0 R ]
+>> endobj
+78 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [106.2195 758.8407 135.3799 769.68]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+79 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [253.2366 687.1097 285.6447 697.949]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+80 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [185.549 647.2592 217.9571 658.0984]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+77 0 obj <<
+/D [75 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+70 0 obj <<
+/D [75 0 R /XYZ 74.4095 564.5693 null]
+>> endobj
+18 0 obj <<
+/D [75 0 R /XYZ 74.4095 564.5693 null]
+>> endobj
+81 0 obj <<
+/D [75 0 R /XYZ 74.4095 520.9398 null]
+>> endobj
+71 0 obj <<
+/D [75 0 R /XYZ 74.4095 248.7539 null]
+>> endobj
+22 0 obj <<
+/D [75 0 R /XYZ 74.4095 248.7539 null]
+>> endobj
+85 0 obj <<
+/D [75 0 R /XYZ 74.4095 203.1918 null]
+>> endobj
+72 0 obj <<
+/D [75 0 R /XYZ 74.4095 156.2214 null]
+>> endobj
+26 0 obj <<
+/D [75 0 R /XYZ 74.4095 156.2214 null]
+>> endobj
+74 0 obj <<
+/Font << /F8 47 0 R /F56 63 0 R /F51 59 0 R /F14 84 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+88 0 obj <<
+/Length 3303      
+/Filter /FlateDecode
+>>
+stream
+xÚµkoܸñ{~…àÐ5šeÅ§È ÷!M“4E{8\ÜÅÝ!Pve{Q{×X­/wýõ!‡%Q²“\È+QCrÞ/*ü¬‚ü¬VLUNŸÕÖ1c4?ÛÜ>©Î®àÝ›'œ`”2LiSÃCáíZ‹ŠYcÄÙ:_äÏOþôn¹bRÁË‹Ë~/ÃYm\}v±ýquqîäªíÎùê´Û_¯e­WïÞ¿…ç7áo÷çÞ·ÇK¸oàÚ´áÝëÝ
Lýùâo°•9sÌap§êl-8³•å~Á”§á.pà:ÂÅàÚ…é6›­Ó5R‹sw ӝ¯…°3€>yu‘HçÒ0a+à¢ÄÙ¼üÁWÇ+‚ù!ãT‚_ç<§òý§Ë""ï ‘÷p½}3AÃH¦”a1’Rz`k[.‡[$õÌk‘s^(äËOWð|ã¹#ÒÃ]#È	Ÿùj‹¯l÷]€»ÃE#©à„Ã>L¸=Àoíçݧ¥§ræ5hfÍ£¬ÊržÈWr&…Ð4‰¯•0«·§@Rv¸¡=ç€Ä'Ä‘¨Þ<K~Á?mâÎ.A:#ÃrÇ@RÒ­PO¦¢È…3§µÈøÌWW%R53œsBzOŒ¹…ë®ßæµYZVkØ)Ll/!‚DºÍ‘Pþ£fÕnñ%'<ümOôHéDåÀ°õµ°¬ªŒ~@÷ü:Ÿ0QÀ鲁\`¯§—4Æ*"×#¹õ¢B…Ùx ^M&“’WLƒ?02›µŒöt±¨Z©–˜±Qð+ÒhV;ùXÖFðP/ºìT¤0õAöD¨övšñš«á淍׿CAÛ¬vÜ’Ò~CnÿŽ®ÒøÄȱ%| ûÿÆZz×è¦V²–Ê1­¥ZdîȤá¾Ã{«ùŸ.Y-9@„k°«2Lš;ˆŠˆ¼ àÃõ=\¯¦bµÜôN·yKhyÏÒ^ó&k`?%A
+Ü°Jƒ—Àd#ü:Ÿ05Ùɲ˚%œAW&FhŒ4+A=°9øQ+k3Ü|KVRh7ÑW]„ª Þ·¨mS¿
+Y‚².ó«ÈüY¿Šb"¿Š·§sQ’ÒŽQâ±BJðË|š.û€_E$G~•B—´
+TÒ·¥<Îérn™¬¤6•b WÎU"Ô:›&+hl"AE“E¤U½j†"„1=ˆâ rGZâ#ý/„·"ÆBePP–‰åmsGÑÝ¿L{Ö-8 ¿½÷WûÈ¥û¨¤]˜æÓ…{r(Û0%hMÁG:ÉjkÅbòÒ‚ëB’‹9¸TYÄÕêâš8@è$íŸvÑu¢€èkY—½e‹Éƒ1~Âmä›iˆg®Ñ}vÀMHºüýá2üæL…Çmd[ƒÏõD6]îî“õâðáH	»0J?­ÀQ%˜àJ~A’eÀ—§”<ÄýœŠ} º7«ˆqS@ÆX¦yJm¿9ç)=ÜGžC
&WOávY	8À”"_
9?x²‰,I)åê® j"‰	ïQLø›‰	á/	7kæ<l2¸Sø3‘ ®0§ò¼† ÍÿB•×¬‚š&û˜ÙgÜ~ß!³¶¿„#$WI÷õ:–TАêqVù,ZBâ%Èå•jèïi³Óµç<VÕ›ãîîTÈ}FÕò‹Ëh/Ç’`ÅUÅâ)fUÿé´AtVÌèZKiY;JX0,Ö6©Œ$víHÅ3ˆ(€òÈu§Ì$®Â‹ö׈ú>J7Po‹e÷¬D T J_BúD:ÖÑÊK:wWÎj¥^eÓF”̏ÉfÆ,ñ4µ> Ÿ†,HùÃZSF«©
>uè’¤[½ðiŠX}Ú¥¢žÉ¯ƒÌý@ŸÂÜd7L\BF,H’%[5˜U©:3·=-yJ´D¾–z0®™a»Ðxˆêk"g¡~#OLA_J’çX{êd¿ä«:¹«Rý'}ýç67¾¸H
+~ÛGX>­GÀ›Fz®ccf—I‹\±÷¶·z!†WNéG	(y1{Iæß•ÍßB—àù8Œí@
x®])„
+É	-g:<£ÄžV¾Dh<Ž<2d‰¼ßÈ›!©PD¿AtNÈË”óÕO•®²°÷åLôKqøy^ÕþU‚Ø‚„ü54©ðO*Ä÷Ø»®’¾ëUð:©<Õù‹}È~8sGØ›ÖS!£öå”þõê‡æ”«!mO6ˆ+v~< H{7´q?z¼Ú)–Ɇuz"!ñcï…ø–úŠÞª –:ðƒC7÷Âx°†‚|Õ6d'úFW…v:¬¢LÀ{ 2åMx”óé)þ Shbò‰61ò4Ç°tžÐ†5†	0×ð:¤å%+´`Úè‡J€Ï4ÛÚ0gy\´—„gÀ)¤ìä½"Î^ýÈ1w¶IÙ~po29eÔؽ%ú‡±=å[iH©šAÃuÞ¿ðšY­í^ÜL¿’÷2J•¼!=žÁ7—ì„ç$WY­ZlŽœŽ“âXC¨«EŒ×	h‚Í°Ï™–Ü°y›k[OÄ]ÉHÞ0œÌ¦ø@×ÃldU¡¼Ðµ‰i7’þ\/àúÇL«O‘ê˜/Å‚!FÎ_.6K#u=›C–iûÏ/¤°qrªò€qU4ÃØ3Ñ’Y¥J%V¿ÿ†¨ûõ1õ¥’«×è±|ÆLÀ§‰M_m—c°a{ˆOÏcç<øúé ¥X'††ÌË“\y£‘(S´3Ë;‡š7¥µdK/ÉïVTOÇÀ›I®–KPSÌfºä8Dàf/0·«î:z&y2姶inúžŽZÈëds>z4›tìæSƒ0¥`Ä*+ÅÂÁ[N2¡®oÁtá}¦å(,3Da4Y8ŸŠÐ¥¡BOÚ‰kaM´¸¯WÏŸ€ugö¤†]€8Íœppd¢ï·Ædé†"+´üßÑXáÐ(É'€¶7'DzjNØ‘ö¸,ùÍ„N­…¯EN3]91¨š}†¼ýüU¶üŒ|*·1¼\q´Å$°Ñ¤³Åǐý’ÜΤœq›ü\°¨û¬ JËæB_3Î+>bI|<K5|àÊ€hk˜rN
³ëWÞ c6¨ûZªiE·
@ÔaLfc#¯0¾ðß=ÓÖÉiþ¦Eß!é=K7Æӏæ®ÐÝée,ºu*9âÒGR„AÒ!RÖL·‰³}Ž9³†¢g³Ù´Ý|oÊlí˜Ê}æ·
+ElvZHèkíX$mii	ŸÍO%BIýõo¾Ä|ý› ˜èóR3kào—KaF'¬ÈÀvLÿ1«gçý–ì;Ù/âÇý»ŸY¿ÝûÓ_eâ]l`o£Ÿéý¦Ÿ§¯÷º¼õÖž
wÙõ*ñ)6ª¨aî×ÊÏ}Ê–mOŠÙÎúTÙ¥¨7é(cI–sq£,	çA»¸­íЙ*î[i£Xò#l;²Ô}/‚+
`Møñ#Ÿú™ÁOÀ´^–™Ÿ“ýw7>5î8¦i§Cr”
+•2Éƪx–ÈÚeí€(UQŽbÓÍ:	™‹’Àî/wùóÎ"A-4Ëæ4ç‘Ͳ¯èµ¥}1:ˆÜäeÀ3z¥ÝHqœð;¬gaö-
'c$›ùŽÐŠï¿%ïtÌŒtLÊÓ2úfh'_ʘÜ3ÿiõ4 þՐñŸéóy¥ênLa¿d¯aº™G·…ôp­!=ÚÅ`"¦™ °U8¤Îbº6|çÇE èûŠa<}J
+¯Ò'†¡ê¦m5üÒòÆJ‡ÃÜr&„©¿¢wÿ.;j;•I'á6ßù¨Z}ºN1¿çEFÚà´žÇçW[T\Ú³4ÖƒÞi£ú>~LZ1”½?Úeçà©#)ªrµáÞûÖÛ[ïÜ9±õªœvq—JT¼/Äh
+Ø…ß<`¢1æ¾6ýú#-íêÅ> ¸iâú¿í1žrUDML2iÑ]ú,$¶N‘è£&¢p*ٌ׸&ÏÃ>?ë΢ê6}ããÉ@<¿žôxUÔPgbC¶¾ØPM°ë8D"{f±U¡8âLÇåù7þT·=6yÄVÁÀCx­´Y	¸­èª}.Ü;ºGç+ÃLAÏE?öO´•—øÓ-‰)Ê×x.T(ƒÏ&Ö–FØ0ÿåf„^dÄxMäÅ_è»,ÒSŸRÜtl æñS¡ô8D˜e àªÈãòxð!a¼©·QqýHDèåíGkâöÇ6E’û,Xz³õ^æâÜj0ÍÓô;É*ÁÝWÌ"Z n¬²Væhu1€£–ÍerÎ2¡ëâ©ç:¬3 Â§DR‹´î.ÇÛ¥ÿQØï©ŒPendstream
+endobj
+87 0 obj <<
+/Type /Page
+/Contents 88 0 R
+/Resources 86 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 69 0 R
+/Annots [ 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 101 0 R 102 0 R ]
+>> endobj
+91 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [135.2839 737.0327 164.4443 747.8719]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+92 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [208.3454 724.7985 311.5372 735.9168]
+/Subtype/Link/A<</Type/Action/S/URI/URI(file:numpy_swig.html)>>
+>> endobj
+93 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [364.7967 724.7985 393.9571 735.9168]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+94 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [268.4471 712.8434 297.6075 723.9616]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+95 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [458.303 712.8434 521.8625 723.9616]
+/Subtype/Link/A<</Type/Action/S/URI/URI(file:numpy_swig.html)>>
+>> endobj
+96 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [73.4132 701.1672 119.3703 712.0064]
+/Subtype/Link/A<</Type/Action/S/URI/URI(file:numpy_swig.html)>>
+>> endobj
+101 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [324.6699 247.1243 360.0704 257.0788]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/)>>
+>> endobj
+102 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [382.9052 247.1243 454.0182 257.0788]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/rst.html)>>
+>> endobj
+89 0 obj <<
+/D [87 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+90 0 obj <<
+/D [87 0 R /XYZ 74.4095 749.1338 null]
+>> endobj
+73 0 obj <<
+/D [87 0 R /XYZ 74.4095 677.9741 null]
+>> endobj
+30 0 obj <<
+/D [87 0 R /XYZ 74.4095 677.9741 null]
+>> endobj
+97 0 obj <<
+/D [87 0 R /XYZ 74.4095 634.6237 null]
+>> endobj
+86 0 obj <<
+/Font << /F51 59 0 R /F56 63 0 R /F8 47 0 R /F44 44 0 R /F58 100 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+99 0 obj <<
+/Length1 1213
+/Length2 5760
+/Length3 532
+/Length 6527      
+/Filter /FlateDecode
+>>
+stream
+xÚí”w<Ûÿ·ÇmJµ65ªöŠÔ¦ÕÚ{ÔˆB‘Ø´TQ­]{“ÚÚ/j¯ÚJÍšU{Ï¢T©qóýþîïÛÞïýóÞ¿îã&ÿäyÎù¼Îë}Îûn ž¡²=Ò¦tC‰	‹ÉTµ
À 1aQrnnU‚†#ÝÔ h˜,@(c Q€˜”¬8XVLÎ
PEºû¢àŽNh ¯*ߟEÒ eW
+…¸´!h'˜+N
+A ‘P8í+PF  >á	0€yÂP^0{ar11€=ŠØÁánä"úÑts@¤ÿ¶Ç¸ÿ;åCyâLxq&ù 8‹öH7„/Àæ@.¢ƒÄõ‚áœüo˜ú§¸Ð¸þ)›ÑËB\áßÿÌ#]Ý1h
+ ´‡¡ÜþYj
+û—5m˜=ãúϬ&‚€C•Ý0€è¿BpO
¸Ì^Ž†: OØ_q˜›ý?MàÆö—

#c#-¿¶ùWJwCùºÿ-úgí_,ö‹q³AÁ} –¢Â¢¢b¸BÜ÷ß¿¬þÑJÝ
Š´‡»á®ƒ¤ ‚BA|Éq÷G’ 1 ÜÍæ€ùàüŠ»!ѸG ¸‘(ò?—)!	qòuw‚¹ýÿWH
+ âŽ[ÒþWH âC!À ¤ìo–ˆ ½å%Åpì„‚ýVkä	óú­¤4@Ä
þ»®‰@þ*‘•¨þ"\^ío’Ƶ¸÷7ɈD‘@ÄèáZÿM¸;(ùE8M»_„;ôoŝÊþ7Äu„ý† €ˆÃoˆëÿ
qˆß§ìúÅpÊn¿!Nùâì£~Ã?G÷âöƒþ
qçÁüBÜ¿‚ˆÏoˆSöýÿû
UQAúø‰ƒB ÜþÄDÅ¥ Ò’¢ÿ¥ŠA¡`nè¿^~Ü=ÿ7;Àqo惒OO ¡r¡ÎÉ5aÅAêùÃ%Äüø*Žµ±:Uï?5S<ŠÃGô=ôàŸ«4;+M£½±F¼Æá}ÎâÙ ? ñ5Ø#6eürÍËv-ͯžÅì0MÛw՝óäéöÍÆš±£I|ÝѹþâWæØ®Ìýîí\=^5£uÒ/@¼6K¯wmé¡RÒfiãðg•wāT)Åá³ÞT¯â‰f‡ž9‡“Õ	Ì ›04gùd9	—Nèc¨¡MâKütëŠ;EØpª›W½o•ÒŽ†(Àñg2ƒ>ͧY´ao3ý˜ÕmFöÕ#´½¾
+Ö7™/¸¥¬æ
+VlÄlœ°¦^‹îÇç#Ëk|‡Ì.>­²]|¢«g¶5¦ŸäÛtr_èIÊgJYÒ½'lrýd°Ïù’ƒQˆ[€Õq€‚87"$B¾=­ ‰sŒg›4·?_urÂ4“Úô2‰+Þèˆ%"¿&lœíÊ&w#½–QÜÜbaË6á4LÚ/‰„â€?·š{ »Pù’˜mü¨eÀ¸ÈiJ¦êþ$Ø¿‘Þ^ÈÕ¯Dþ ˜|Ãs‹nŽVF°xˆ2ê'l¿t÷";QQÛ“]˜5ñ9gÌ‘2¹{øCp’Ë£³´Ík¯E ôË5¤Û<(6f©ýuüï…&Ô³ˆ"g&eJ*4V2ã•ñ§f Õ¬–§jJªdà½!…‚ê“{.&Lìýûr—3¦û¾[ƒrâºH™‡ó™îošÍ£‡€Ò/ŒŠªgNúãC_3.ÞWM W¯wY¾øÖ¨©(ñ€µÝ&+¦ž¦I,µ<SPÁTšÇ%ß áÐñO¤›8à N `Knóaèµd¹HO–½Å"þQÌD_Nwп)ùŠgOÇå«t¬Ã
+Ù%Õñmj¯é…hŽï‚º+FRe!;þaH‘žòﭚ„·¾Õk–Z…¾I¥—x ö8Žºø15ñ8§î0g*ôÇû4í­zꙜ|sÂpOÕÿ„u—!»Ûøyu‹XZ{¨`­©[à™‚Ó tµôu²UÞ0ˆ¹Oµùˆœ,Ð ¢ àÌ'›&4ûèv7·€”/9D)äRq‚üx§Ö£‰ÂˆÞUŒm‰ŽØdr\ä
+ÜòÐI¬OÐKšToøW½®&V‹·¼d6ç‚÷[ã?ïѽ»=<<Ä­¿ü8ÉÊCØ./4öv»XÇ£À’@ÞÊá
+ºhâœ%Å<©b짠™±0óWÝOŠ¦UîôwƒÕlaMÚ2¨E×¹ý²ÎoÝE1J͇ŸïŒ·"õ>+Æü±½ÝŒ‘Ã6v…3Y‚¯ÓÍ×›ïë)ºÜ½µ‹Ìj/>àÓêñÖqL¡ÂĪhòàmœ
+nr-LŒüáù!’µ¡û¡’ǃUjïŐ¶e{˜æÓÜŸu«å
ý7Ò9|ýá @›eTØÌG*bŽ/’)»
#|KséºZátu ºt5ù¤I±r
“Îñ
+j»¹ô‘ÆÊ_ÜP•YÍvMÖŽ›©ø5Pü“å^ÑY²÷e¿xÜG-:ºÃÓ˜qÄWÂ"žu¤Õ5°íj³¯Ú"ùÉÅ‚:È¢àb-O©´õÕ‘­Hg-×}û1ðm£×®*ÞÝ.ñEnÎl{¬-hÐvÅëƒåP¬}#Í}ϧ
M‘¯ÜçB9´6õ¸§–HrñÞ‰ù<¾+J\š2qŽPº­á‡¯®±ðíã#AæöU*Àg@„U'k—NÊ\d‹É>‚Wôª 5ÆèÄ<“òôÌÄȆ$Ú|S<_.ê0ü|Þdùà?¨&ênÐ6Ö5O·SºR6x‚Ó&D÷~Jã‰1GôÌ>ºK)щ
ßíæ‹óñE¶Uìym5ß½=æR Õt|Ïé
 öú^•B}[Þõ•#ù¹Ë†DxbÁB P¾CÜj榙ál@íU¨ÒGe KÙ(˜Ä®…I¯[”:‘/=/24«)£KQPb¾‘|rñUÖ?5Í<.¥£)jÊŒ~çÑãÙ³ØéÇøþÛå$Ml	ÚP-̼Ëo«cì(2kVg¯¤á ç¨SͼuºÉ'o¨oJÌWºòw;ˆ ¨
+߬,4×Ó[H ÅDr”;”§û°-›`‰Tãgòfrº$Ÿ«“ÙE©®*¬]Û²¨ÓLæ¹g3HúD¸a1ÞE?šxT|¨Ü8»è½c²?¯ò°¦?bá¬W˜úà-õ1ÿ3(ð“ÝJE4¶8«nÿÙ§¢>c]ìv2Ûµs;úü2¦\J“-ƒx©®ž, ŽôÝ=ÈÝЈQ6%h›™)ݵš{îiϵ<HŒßsàS˜TãÃæG ]v¦!}lÅ(ýžƒ2;odÁsƒ¬³ómì¥Ä%37›Î“×ûãî";ùü—_Žàȏ’ë.YÀI¶Ñàlþø§E 'P
<¾!Î1r»æ*·¾-N—¥ÌädÔ/Ü´l0ý$–—*:Ä¢R}äìÐá0¯ì廕w ¿P€ŒìJÓ¼ÖMº´¥¾ã0U‘bJ‡—Añ)Á¥ð)8ôxõ
ív’•ë‹ë‹ä·ÏÓv(©)ÉDW#c†3V°kã‹š¢ïYËu¹1PÉ:Q-#lÐuë
ȐZË Ô¶‰©ür#ûyà˜µÃ«Åƒgø„±øàTMRFþ~¸¢0ï`ö¥D^¥®Tq¯ ÛZö¾À.(ýª|Bݽ¾jO0Ñ"˜9‹îf[´ë®	ÏÄšè×LÁdVËvZ„^fèbV@‡Ò=ç\$6…T¶‡ÔÂŽzఁ`à5M¤/¯áIò¢åµ³lSðqxeÃ~|l¶×‰vØê2pC3Ÿ7eaÊ/ìÙ¼¹ÀušeÛƒnÄõ	ý¥«D^1y*õÀƒÇÓ4²ùyÙË ²s¦ªGSdGjTŸ&D˜°p£¨ºÎsåðL®DbCÜ¿öNò4}è©`PÑð«µ|´ûâû¨~âg½ÝR§àÝ´qïö¨Ç©+ÁThZ$9Äâ+ˆñMµÙ_ßR Pl$Ob†6Sk3Ã#Õd…Êî$ª94ô˜Á±L'ÁÁ·Q«à]¯Ç‘.c}2ã´D&^È|÷t5ÉÑâ!»/¨æq³÷‚U¬Í:ZÄy¦K%¡šô.5*§î?ãÑ<fŽcv*»S“‘½º«-NrFÚ¶‰Å@Svgî„cL÷Ï­3àwKA…Â/YÔùÞNEZzO£I¼$Å
Ü	7%tHøÏl©¯ÇåY|çœ[RÏFJ*>•çâë‰9äLw´7¡ à_ ±32ôIh‚7}.Ë[
+Q°&¸B õ±TÛtC‹ÇugJ+M®3é·XCÞ}ÜðâóE‡:ì…j:¯Q/dφB–‚Ù»U&
hÝ™ƒP+%®xéï§s4öá®éÚàÂgRöÍ"«<%ws+~ìK25œÜߘþ>:_fûh²Ó[ öÖY´Œ3àçå"µÐÓ—½åÆTNëðO…)¶‹„déøçÄ$èŠ81ta¾“å›yLʲ-´÷ÏC‰šúæsÜÒY
+unq˜m3¦Ö7>		~|j¥<?¸Ú@ô:äEµ»ÃeäÄÜOBÇÑ‚!Šâì‚Ô,La"ù,ôÆn©v÷gÇÒJí¯
Þ+Tà%žYç0µ+‘_KÓõáñ ¬ô¬/@¹#VÏ…ÞoÕKFï—»e¶²HÊy4UuséP^¬üYüœ+	­Ø£GTÃxáªQÜ”÷·áV®[}‰öîLeÅPÌ+ÑRBÝ|h4e¾á³-RŸÁyÖrSFn¼®nèŸrŠsx¶yz~TéHo¼ìtÕ²}ǾTû6Þ´—A÷“¸÷’iþRÂ
+PfƒäYɡ´×‹–´nü&F/ï“´#N´À%×…vRØONÙFÖù&’Õ½šûTóðúm‚Vö¤Šµ™®û¹Ü±=2HI,½`ö®û¸ÅèÜØËI¯–?ÿ&›ùb|Qt0#Ç‚ál7»ypE\Àÿ$`S{3$*DèöäF+ šUÊÛòEàxþË(ßþC؉<9Œ‘œ!>Äk+Äèy ƍ°e½±Ú­êÞñ!¯ƒeñ™SsýW±&‚Í'prw±È‡6*›<ðÇ3ŒÉÔZ•øeî«£ÛJQ/>E·ÃH'ŽÙêu"ÜÈ2¦íþ¦‰õ†Kr]¹
ñĺ_°(ÌÕ9a¡¡…IÚfOÞ¼À·¦ÂŽ¼Xq­Z¦¸Úmjï1iÊóqŠkð'Ö-5oÉ+¯¬®Æ¿Ý:£³\b‚Hx²]=æO½n¶ce)r¹vH;øiÌØ©É*µô©Fˆ)»‚®dÆù¼«Ðó²v7#•wøôû”·DNG8GHµ§Âwf_ÜsŒåö“¡OL0/ú¶[y éroÕ©aX>o¦’¹U¿\õEés™M'(,Ïßsô¨m¸*Ÿ¢ÿð•ˉª¯F’ˆï«Õ0,p:î×ÔqtGÔik}»Ž%'I?/DJò>¾Œ)cxÙ‹~¼µ—Ã….ðdL¨/\8ûÅë ¨wRÞ“Cû4Á’ã@ŠQÏÈK£7^È-Ú}Ò#g]ÎÁçŒ5œÅ>òö½“¶íáW¡eÎAZÝ9ú!.õN›ødrU8Ì±9š>#‘-Ùj—àmª«ãǬÜhúÁ›ÞÓEŽT’UÛ«n‚ÔûÒAWªRISˆ¶m7ªÌ­t2˜]^IçcŒÈîr×F¥-S5ϬÒÍF³3&Srëø2¼Êß«êâ§tÏ–©Dùõ±>½²Œ õ´Yšé¸óœ›«éåçÉí‰N‘ E¢Ð?JîêÜ,&ºš#plûàý±¿ÃulæJtäM·ÀV-OŸ@Œ­møŸ¶8ȍ…L’Öè•Í‘*mÿ †~¿wúÜ6k)w`ôó˜ƒøÞÙ:”ÎŒ,›ðþLîûR¤Æ™7"Éq(K'Qº·’Ãx:Ûpo…ºh¾Y¬78áºÝt‰_3Ÿ,_ÍGD\`Ç'Ûshéübiìœvþ¼O$jòY#عW<&ˆÜqvã•üµ¾+ÍôãáåÁÕïîH²§¿u½;Ú\‡!¥ûRæëçG´‚ãÓí•éºÑàöþ|›€L?¡®¼«d_átØÁMª1/ͶçSA¦OªöÑÈJu/u&…j†Ô¤‡· /ß1›l”OG„˜%Ô‰Ô,Ó´Iˆ2ÔÆ"vfÒ؁xKO¸ÏŠ3³í47ȸ¡ð¨>t´gé߀µ0ÍØŠ,L #”2gïâg<U(ÿzΖ:}ûN€ ÷þº€ØîÿÁãµ|'göCÃUÊͬ:y%üÇmþƒÑ5¢o«`q–ñ„Àš&àʇ\¾ù˜tŽ"þ^Dþˆ¦¬ã:Úːs6¬‘”'½Ê Q ånaÖ'ò%´H¶’—ܹ?ò™„²znÏPé²ÿðxÖdS jØQÙ`dzZúã^©ëÎÏOæR [dˆÖ¼˜Åþwy–êbm/I»_1~ØwÙ–R?€rŽì[hk­-‡š*^Ô!Š Jöi¡w_WîQ‡Lÿ$“÷5	ÒŠ=ì`ÏÌ{êpb©9“ÝÖF°x8Ñ8•Ô‚ÝÙÖ%ý¾1Io^µР?íÊ""éB?h.ª<TÃ"ÙèrÐØçÉ!D”Óò|Ÿã™0íÖ‡qË6ö’õ;5ßÇ5Fñ¦Õ­Å,Šî¡ô¾žMY>^ô÷;ŒÜã=½–AC]KKt×S{i1!Qéo^Vƒ,éä@–\ŒSÅae»¦Y%Øë˜~ê_»Óï÷|yŽ#ƒªpÓP˜š¨!ÜÀÔ¬ÖanÀÌhs W,úƒ^øË—Mòª£ùß5‹ƒQÛ–W\úÞ7™EïÒg¢:ªm\z™Å§öÒÑà1MW<êð?¸3l ÞÔxŸ/O,Y±Ïéí=óßý’„d¨ cN5ùEn ïíÜú.#9î¡<ò©!±R(£
¼µÛÏÓñ¢Ô6#,÷f+O›·» u±Pñ†#Œ¦8ÿéVù^s¢÷#‘pdæÊî¶x‘ØdŬÎD´\§×µ6R0uÔ1/Ô×ò¯¨æYVÆoͯÁ¡v°í]ôú{Øv-$›½-x¦§zt:ã‚~[9ÃqÄ?©ïT⚎š•²ˆStŠßæõjzòˆ¸mI•‘‡ï‹€ž¬2Üj_yüÇQˁ]™|OR
+-|´»“ÞÆ:¾Î!ëaöå&"øühb9ŽF9°C†ítbw<>8¹<†ANщÂ2ü`ð×slðEVŒô›@T>)ÍbkÉAöê P£³µl‹m$6RžÁÁÍêa©÷mÕÏ‡Q(!àIݪ•Ë,`÷­6>¢Èê­]È‹û¢Î^½dèp[©âšC–ª=òéö4U#h6Q~œyî
+MÂÎÜ”["HÊÕ'L{¶”»ž~§S=mäl{“YK—Rˆ
+TXÔÊ&t­©,žW–°j³°Šo3‰ò™…¯ÉöÃâ× æ=½i¬¿qù"v®IŸ°R<É¢6YRÅ$Åæ?Ëq¯=N»^:À§K»ú˝ö›æBÑJüM-°±ItV饒ïçáWéI¬®&ðµŽüƒ‰
+Æ/¹ƒÑ½²b¹sŒnÕ÷ñ‹:Žô¹»úm.}oT¿»¬²JIIÅV©þ>Ö ½^yøpoÚñgSJ½ëæú×VJ®ª’Ì^ÚÕw§w7×s¥*Áz?9yœ ¬C7YJ¯¾ùÓ…éö\oÒÇА¥•Í0ØŒ¶c°Ö3]Òh¦ 
Ãó¡L/Ÿž}]òh7öe¶]ÿ žE‚5sâ0;ª}tá^ãppê{H¯Å¦K*ÑM^¿ª>tíf¸ÌÂîÅõj±ãíöé¸Ìwô”«ñºÙWæÏ$6ñü?ç5KàOËe.ÌÏ	Epzo9«t)¶ò‘
3¿Òtw>ÑÁw«ê™ä´ðPΰ?¶ŽT·JWŒd‘é×þÁþ섆¸üiÃûW•A•éë´ÆÙRyê‰'s×R Ë݆nª1"̘“W珞`{Ò[Ä	¾­.¶rrvë[عFøëõ£@–êþ·£ßÊ;šª–vÝø´Pa¥ŒâÒˆoƢǓ8ªZ£s±X¹«HiÈZûHOƒ üy‡Öþc”]+‚CPeˆ™ûÖRÞÍïSäG¶Fók÷0d~ôdß»1ëQHBTWè7T6*àcÁë•-¥ðŠ%áýÓÂ/áº46W\üAëžßbZ@3È$Bâ“„¤T}±‘%ÉÒ%ÇÉëu>ȱÆQ±žK]ÞåfØ®xîÄø"zM¨\+ä>“˜^›ŸÞ8ðíÉ+f¦ú—GETVšu³
µµÀI5„¦¬¶ÅÊûÜ ‰5 °1QjJ÷"WÓ¾š_)9XµÐWð…C¼‘È Ï XëÛâ²h1Ÿ«ï)³jÎ!Œ´%ýJ_§RæFi3÷аšr‰è‘ÀÓ{Qgl't³eB56=p˜|M¸šûÁŽËêm¢ÿÃùÿüŸ€"`é
+A¹ÿ÷0”endstream
+endobj
+100 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 103 0 R
+/FirstChar 45
+/LastChar 121
+/Widths 104 0 R
+/BaseFont /FFTUTL+CMR9
+/FontDescriptor 98 0 R
+>> endobj
+98 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName /FFTUTL+CMR9
+/ItalicAngle 0
+/StemV 74
+/XHeight 431
+/FontBBox [-39 -250 1036 750]
+/Flags 4
+/CharSet (/hyphen/period/zero/one/two/three/seven/nine/colon/C/D/G/S/T/U/a/b/c/d/e/f/i/l/m/n/o/r/s/t/u/x/y)
+/FontFile 99 0 R
+>> endobj
+104 0 obj
+[343 285 0 514 514 514 514 0 0 0 514 0 514 285 0 0 0 0 0 0 0 0 742 785 0 0 806 0 0 0 0 0 0 0 0 0 0 0 571 742 771 0 0 0 0 0 0 0 0 0 0 0 514 571 457 571 457 314 0 0 285 0 0 285 856 571 514 0 0 402 405 400 571 0 0 542 542 ]
+endobj
+103 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 48/zero/one/two/three 52/.notdef 55/seven 56/.notdef 57/nine/colon 59/.notdef 67/C/D 69/.notdef 71/G 72/.notdef 83/S/T/U 86/.notdef 97/a/b/c/d/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o 112/.notdef 114/r/s/t/u 118/.notdef 120/x/y 122/.notdef]
+>> endobj
+83 0 obj <<
+/Length1 750
+/Length2 576
+/Length3 532
+/Length 1110      
+/Filter /FlateDecode
+>>
+stream
+xÚSUÖuLÉOJuËÏ+Ñ5Ô3´Rpö
Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥r‘g^Z¾‚9D8¥´ &U–ZTt”‚Бš
+@'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<8”0äs3s*¡*òsJKR‹|óSR‹òЕ†§B盚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l
+‘È,vˬHM	È,IÎPHKÌ)N‹§æ¥ ;|`‡èûú„„ykCã,˜™WRYª`€P
æ"øÀP*ʬPˆ6Ð300*B+Í2×¼äü”̼t#S3…Ä¢¢ÄJ.`
+òLª
2óRR+R+€.Ö×ËË/jQ M­BZ~(ZÉI?	´©% q.L89åWTëY*èZš
644S077­EQ˜\ZT”šWN+Àà€ñÓ2A˜šZ‘šÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ—7ÙD쨛™Rl:/P1½dÉ«…¶öϾ(á•l=U¸h‹d¯_OÜ—EÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y.›1§õ‘´Õþ¢Ç³:•un~Q®?Á3/å…SÔâ}ßï]ãÒ
+š¤¥$e~sû]F1ñÊ»Ï/ËÚQ?ý¸mò»³·|<ċݺÔ/¦Ùq'}Iüö„+6­ìâEíÀgŽ¯¼xT.‘òGÀ¿gtÅÙ¥vՏG‚—U|íª“®¾~ª€]üRÇëÞ…_kü9¹öË:½{ápËñGúý
îûd}dN<6Îø-uBÛošHºÁ=c¦MÏvHžÎzºq½aûÿìRKë~,KÌž³}Š¬Ë›ªÂå»m¿‡Š÷Öêyo›ù~ÉîÃÜ×v‹
+Û_¹éÜÿs>§ß¶.#ßҭߦíÈè{­/þô­É™kÜ—<nÈeà‘œ[»«×?Ñí[ïÁ§÷º˜ÞâdÚe€‹ãHð1Îcê+öÍ“_èeÍäž7aՍ-<Ì
{fýß_áþZ#MzîáUü.G?=¨=ãûp®Yõ'åǶ‡/¨Tñå}[}âWè:‡)ïÓ»ÚÕÎÖ0Ê3íÿ±:oÝ;K©æBÊû.l½ñcc«yEá2ÿ
+óî-ÆŒž×¦ÈWµýþdöä“Ž¡_Õ~Ò+	”áš”iïsûs‹`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØad­j|ïǝéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ \r’endstream
+endobj
+84 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 105 0 R
+/FirstChar 15
+/LastChar 15
+/Widths 106 0 R
+/BaseFont /MLVPVK+CMSY10
+/FontDescriptor 82 0 R
+>> endobj
+82 0 obj <<
+/Ascent 750
+/CapHeight 683
+/Descent -194
+/FontName /MLVPVK+CMSY10
+/ItalicAngle -14.035
+/StemV 85
+/XHeight 431
+/FontBBox [-29 -960 1116 775]
+/Flags 4
+/CharSet (/bullet)
+/FontFile 83 0 R
+>> endobj
+106 0 obj
+[500 ]
+endobj
+105 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 15/bullet 16/.notdef]
+>> endobj
+62 0 obj <<
+/Length1 1548
+/Length2 8704
+/Length3 532
+/Length 9615      
+/Filter /FlateDecode
+>>
+stream
+xÚí–eXÛÛ¶î‘"…âÒR,¸»»Cq/Å5@°@ÚâÅ)îîÅ¥Hq+NñâîE{²ÖÞgµgŸ÷~ºÏMò!¿wÎ9Æ;ÆÈ>¡¡PÓd‘° ›eÁPVA€”²–;€ƒ•]†F
+4…‚ÀÒ¦P  €C@€ ápò8ع9a4€ØѲ²†è¥þÚĐ°B@æ¦ eS¨5ÐÃÜÔ 	6¡¬ 	;;€Æ_'œ@g ÄhÁŠÆÁ° ™Cf@+Û_žä,Á ¾É.Žÿ½ä
+„8ÃLèÿ¶É €™´ ;Øy ,€–hl*`X6 ÌËÿ
[ÿ\ÖÅÎNÅÔþ¯ðwê­›Úƒì<þ½lïèB Ê` Äá?·ê ÿeNhr±ÿÏUy¨©È\ÂÁÊ`ÿ—r–¹-Ô@Psk âü[:Xü§XçþvÀ¦¡¦!¡õŽéßCý{QÍä Õòpü'ê_»ÿfŽßkäÐg‡õ—¶öþïo†ÿ‘LÆÁlr°pòðL!S4ØÏF<€÷ ƒÐ t‡fcu CaG °žx,Á´¿&ÊÅ
`srCfv­üKä°9!æ@è?7;L3… 쀖¨ÿVÿ5èd.˜lçâü[€¥1ÛÛ›þVx lÖŽÖ@‡ßïßiA`‹ß̉³©³õ?
+ÿ_‘ìÀ¿ñÂ< \Lûç…Å–øM°R¿I À&óñÁª’ýM0J¿	vNù7Áòªü&XÕˆEí7qÂÿ›`­ÐüM°>hý&˜OíßËþö7Á2èþC°Í ¦æ¶@èÿè¿ ×?úÿœ€ ,´løgs0ø[†Õô{°šÌ~,£ù?ÄÁ+Êâü«Ë ¬HË?æÃê„•iýÂÌ€þ@˜	Û?æÂî„Ù°ÿ°ç†Íá„Ù ÿ0Ž ,/ä„åuþa
†þ0. ,¯Ûoä„åuÿay=þÆÿý¬KJ‚Ýß³pX8¹x |\°ß»×ÿØfî=#пïQØ}ñßl	‚].@ ;Ðmal.h“Ô\â-“7QŠÄ/iõ9F¥®ë[;zÀ|,¼]ᐢãJí»»²T<Ìm¤mr·bçð¶ꣲ'~N1É3OÛ®&Û©žÍÄïÎS•=¶)o°Z§/yàU§V†Któû2NûrÔ襵vP¾SÀuë»Öw§òò½“MµÓ	ª¥å¢ÐÀNv*	åYvÃNˆ{¶<àm‚ÚÄ´tnsÁ½ËCÍŽ2†»5GŽðç”Ìœÿ<n#’ÊBÄ¿l mu»üÑð5 ®®°“Æ,­²;¥2bºÅa¡õf±sb]³¥¦Ûnúaã¹ã(ÑÎW%z”	g#”2Yg‚2ŸË•±m+Þ±sÉ\¾LKS=2èå'Ñ×ãxþ"U kÀnz™8Ñòÿl	^ûÂ\¾,.Ý­rˆ©÷A¡—*î'	|›¤În×eç~,ê/œñ$|åÙCÇÜÞîô94?xhîÉ»¼éGx2®É%m½$öm^.›Ói~*@,ÝC]`áÏšd¤Ø¥xdúP—$ȱæ`Vº=·zށS:¥À¾à@P@
+A»žZ+ìÎ(îBŒàæ6KÀ)îmD|ŽÜ"¨/¤b·<zTo¨<†q²Èô;J^o`q[ :Ș&ÌmŸ=Œ c|™±·<µ¯¥æ—¡§Þ?ÝÛ/ˆ¦sèZ`ôivïvGZbSðº/ ÏV;ðªÂ¯DÝW½¬{²9pcuxÇÊJ#
+ºÊiè@†òíaäe'» T´Í£ úðaJÊL3®”A‘g…ÅEO|³nœi…Ñ<}­‰†ô7¯ ?8)—¢f¾aܶ°«{°®µu­’AërE^"¼š£–ñýZŠÑoH%/xì4¡A¡“QìDMRŒI(°„|
+Ñ8R4òX6qU%0
+>ͼËr
:¿BðÐsөÀVT”upw&¸Þ¼ÖÌud*ÒbvB¦pFŒa§ŸoîÒN,©gâÚY LPàwâ
+øf®pf’W=pÁ—–ÏÇ´±³/_ÚâRyÜ·¼>ßiýFX„‚×·¬™TkÄ/Ñ—“µ²NƒæŠ>ðý—G4cgï…f|\²Ru5„á="…v–U—Σ‘tL~7×¢ÖE'UŽ01èø³®Ú-6˜)gs8ˆuOZq*’~dúÀêBCü Ù„Îà)R½ˆîJYÂ±È ôú<¤|ï¼ø¥9:È]ÞLì›)³·Bàc¼´•cÏ2”ãV»àÂYÄÑ&Ó4ùá³âb~çõbÿ‹NSÈŇFÏ$-:»†¯]mDZÚ$ß5jw†®pó
+{­
{g²W3"ÎÀ."ŽŒA$Ðý`qÓU•ÁEßQÒ1„ð1öÓiûjÈ$2² Ô2eR!#ñåm@Aÿ˜ó9
+ÎO*_¨•Ì÷Ö¢BmAùÄåoÀÙäÛrçÞ„îÖj¦#0õ#ÞÑà„8\Rö—Ó-½Íxá-”%®ÚWàv¨ä·ø:)’…ø+ú¤!àd¢EûþY"·²¼vg*ø`æNÞ±†Š^'Æú¬£™Òí81ü´ùn´û5Y/‹AÂÃVcžbMsÍ{Aˆ£q-îkDÜòhy7Gkô³•Ùeº©_ÕÉÂu§©Ò•²Ý¸ó
¼àÃî½{XrïГ;é}2#ÆÔõw6D“t}¬BÏ,sô,|¶3:è”ÛÍ6ud7ѤO´ßì´PüȹáŽOá¯JÞDÎáðähhíËÐòg/<”òæ!¿xRòûh7Ž26b>I9ÄÁU¿¦£Ï¸w³…Ó;§é‡îºŽf5™á+¸†/è_¼´ÿˆ3z çá!{]4ÙùÑïÕÁÅ°É—ýjt%c캦ZöpáÕ?€[?»Åa
+io~u¥-eR"~ÿlƒu§_¸Êæ=ЋýÖÙîW„˜Ð™ý‚L»ótXÄ«Å59ƒ¹Œ½
à\p{ù=d! 
‰‡º0›	¹D¿³>t$3ns%ZਙòEØÕ¹¿ÍE…	È[³‡‰q¥$ò	'gbKÚu¤×²øúUÔ[ƒq
+÷§Çš‚Ò(µ¥»•lìOüéŠ	s@Š;ð?Æ­):NµªHÃ_ˆ²E œ†¦›K‡]~ÈË9Èmd±Dþ4Ù4ðª˜ïkõ˜!™K½¿X4ÛUå#{xY¨r¶+@á[ͺf#SlüºÍÚ‰„.@Ø/Ë=Ú¬ˆkªÒ’E
+TíN/Àª¡Æ¿2—a2t;kሿAê¹Xd:#½‡‡M…e$]!ÌsÌþ’³é*¢Ø˜Ë9	³"-‰qÓE]‹Î$×îÓVRsʤ{^„×ÑÎv0³ùFú¶-':GäêQ;ϐ-A|æ—>׬×h®åúS1^re­PôðŒ™®Z[£†ì+ä¬?)0H¼$~{ʽ•¸££(TUðœ¼sXÇ%@{ÜtàÙ8]HjÍ-¹¸_F#‰ÔKFß¹åªßVýLAvΙ1òhú%(¯I*	½³WS¢ŒP†$bp¹€}•©y3‰‚•B…û¢¤å™¹í x	™þ˜Ë½3÷ÀCƒLÁùy<ð†6Úü(ÎXDä}ã¾þE©àÌ”rF&ãhÉ®úÐ;}xÜpƒxÇ	T÷.Ù°YßœDƒÝ»éÑ¢ÕøÈ#;éuf¹PýøŸð¶öñÀR®.õX%É.Ø&í+§ÄÅNà\v2»áü¨&æ“ó™nUÚžÌ3»}c½¬$,Š¥H"¿Œ_'†£brô‹¢4íNo µrciµø‘/Yx$™|Íwû‚—rƒ¬G\V.Ó·ÝúO«ÎåŸöºMtÒ¹÷&X{ið^‹£=|úÆ\§²: ™Ê²b–%Ïد:=m®uBëÅÊKõ0ã𣨔¿ðjàŽ¡ mñWJWv•/½Õ¶íOœ=-ZZÚ–v®‹
+hò5ûA¿éÜ"¨tÎ)‚?ÿÞ¥v·ÞhûÛ`Q<óv¨
+¿ñ°×»š)Œ™¾ÏdLmï.&iÊ48á$±ÏETZ	´/ÊŠ1ý«#t^®H-ìûnõ#²Lr!œ°L]7“lˆô™¤h²óD…ˆZë.VÔ"dnSÍSRbÓtN’{§µÕIßõıè?¸'ú‘2ûp‹3!?Ùn·dg%»÷÷ª_£8"åeoÀc ,_ÃewE59Å'©=2õ<
+î®Œ˜mÛž¥"GklJÄŒFY] f	iÁ©Ò8œžú®É#•@¨8br6àR+;I(fß1¦!×<'÷öÿ6\W\
+ÇÅ™ãYRAWØ$k~‰ð¢¢§.BÈÉ*õÐw]¡A>k'ñBõåûUcoÉüñ_¨Y—äªÊßôw†âfä¢57ßí¢EÕ|%*‚úÿÈGÇ”‡—|¯}à‘?Û½"•…ŽŠÂyK7ª¾/<žSÄâbòùÝ-#Y¬-LÂ?x8ƒF”ëωØFj˜üà
‹^o„JzF§}ªû«÷‘	{+¼áÕ5¦sbú
++ÃýC÷uÐL?ÏN!q€"Ý6!i‚õ%Î3íNÒÈôñ¯±Ë¢mñf‘´„CáOg4Tˆš’ÏɶüùqC:ÇŸ‘þH£ÑäâNÿ´jCjîÜyw«JLϴɬ&"+æE•Â2[Ù~iÝfÄãK¸Þ,ßêÈE䆭›¥RR^þAš¥ò1û#ëT‘ÎÙMgkЛnJ¿¥EB,™æyæk§þ‹ˆŒ¢þköpÓµˆÚoC1ÊN¥Üí.v§>õKÊ\¬³à¬=ˆ]ä}´nd]™ňxÆÝx6 >½yöj×bêTœwMje®çÝÆ®¶Î´ÙÙÓÆÚô]|*—Pc5iÄ|ö&E° XI4Kï,,Û¿¤ÚÌʲb Ö×ZÓ^NãõÓ"œÂ©œ¶Û—µ¼ípË¥žôpI¶©!3™ù:R5åoð€YׁzÕŒBɳ%V03^rÙ‰¤œÕmkt¬-h(eːìw³õ*†º;¶þ¤ÐZ”Ì)×TŠ•Œ¹v¯H;$ÖM¾ÙÛði¿ÚòçTyÿ¯(iÊÅ’Ò׳žP©SC»WÅ?òö+m¸,úÄ…?š,«¶Àº–ïjÕÉÐê‚>vy®ßd m‡ƒ{«]%sÏéŠã
+ͧÖÇ[ª 'ö™¨ªz7BäCd_SûmßVF‚Ñã3ÆN$y¾¶‰Ã΍"ÎqÄâžãzÑ¥Lª¢ù]?ˆlV»ÔށWÄríÊ
Û+ºÌ
^©n)Ö'ÎØ®Èˆ ˆ‚»ÝÝzØ=$_åµúþËi&ÿíÜXJÿ¦8÷辄ùÓƒôÀ©ÇÉjÉlIÏqr×eEAˆVö;ºÂüìMK§çWÉ(¢—¤»µu˜3k#te&ÊúS}b=é]ˆ^µ®¸â”ӐMHêê„}Ḹ5üV•Â÷Ùf
“LàÊ<:…7þ×rª7à=V‚áVßO‘Þ
+!R÷,pjr=ÒïrŸîìÆ´dá'2#û>F*UÂëu¹úÁ¹ƒvÇ"–úU¬­€Ã3•›½—N¢tD’kHÖ«ÆLöwêk7ïnÊU
+d Kwm³G§V]ýߧÜPµÓ©{Õ'ÊR¿šô÷ËËÜ`§¢NƸŽÞý’WÀµË?;±‰e¾Xa´RsÒP@`UÉú‘ÁÍïf=7±³R?üA¸¥YXú¬Ÿ›'`p]þú
âçoû(ª51šC½e¬dèúQµŽ&÷Þuœ
+‡Çv$Ÿfñy|Yõ6+MŽ©òrF‹ì_ .Ù*©A‡Ö\Jƒ™z›xú­\³%DZ@ÆîŠn°âÔQ²¹=)[B“V°g‘}åÀ®õÂѺÕè°^Oîç˜çÎÆørg¶dÏîÂmÞç÷G/LT¸ëýŠG"<	"µÍ¤XÛì6ñD‘f º}[q}=î›t€F†Ð\ˆc=dë$Z_€‚eö†ó»`<×3“r£Ô~4‚·,LïДÓí¸€À¹BÞ¶>e@kx"¹VYµ¶‰DN@ì-Ïòøã ˆ«m¡ñƒEZGߦÜ#[Ým#*:–…YuS´ÈÇðc¬Çlúdõç¹¹JS¿ÑÅ01œ[{W½Àûâ©å[ß3˜Ë'ͱ“¨ÍuTE¼ƒ>ŸHÙ7zâ*áIÛìa±Í¢­~î1«v¨û´$¢&ˆsžÆR´CL5#!›z)EJ:]Év°àq^œ -Hhüª;Zr2?ž\eŸ_çðnÞ(RPçï.âXíþèPb¹”Ž¼ÅÛ?›6Ä0`EÅwé òSˆrž|nóÌZr0AÎÞÅpÒþ&ÓÖOK7ì'™'?Ê?RŽjçþ’¶cÅ{0Ô~xà0Þæ%k‡Å1j.)à?;Ü	àªÏ4É ÈF,% d>ù`,û‰X¸]èrÚ¾…u23Vá9ã ×›‚ÉVäÉ*›ÑOÅ‚‰f5‘œ¯o~aÆR!V›m*MoµŠ8"%ıh÷wY~Ædأߙ0&–&¹X¤:*Ò±'‘;±9@Ý/s‰Äk†*˜-F©Cg±ÜƒÍâ|!`½e¢ÌÈ­\UAÿÑû۝ô±ZiR)eWÇŒ˜Ó¹Û¹
º÷òrB#u+ú,¢¨­™ƒf‡{ù3{
+8ÉÁ67?ìnm)6	 ·x•UÜcÙq6T$®â¦o¢(*‚d!£ÍÝåÊv
+!ÆB$UɦãB/‹â'MØ+én½MÇŽ^‹Œ–+çÅ÷áÅÖÌ0ùÇÐ2ÓôFè±XÄ&©Žð±–jÛÞéïé6p‹½…·ëDC	m_S	麾|5B|o`—Çi# X¸Õ¡°Hûúo'ú>vò©ž…³:ö|±Φë颭+'áôÎm¯6wÒ§“nGy˘AÆJ]Nße2À[»0¦îóÇf:ÛJúêSÚÓl“ ´!ŠËÆ,Ij>i,QD×D¿ £y½=„PxoFš€Ãg›ŒÃ­¡t"<nþ)}ZT˜1±{æÊ[‘V¯
+'Øœ¬E߇
H¶q²”9‰æO9í̇.ìñ®$ÈƸ1–qeÀã8ŒåÝð@–±'îyùMÑ5¢^bAò(E<ùMGÅ¡gÖrŸlÝI D³s„X½ú"g$r>;ÏîÏÔk
+“Ÿ.K½*Þ¥>ÓŒÙ^­KÎ\ FÊÏyÂ
+£ë“yRLæ=…pá™`wÓÚWá²Ü=dop¼«üœ–‰ 2áé€Ú±ŠÉö’8pjH¼‘
(Ö¿bžbQ¼›Èa~81§»6§J³Sî$¦H=‹’.X@ˆK<ÞíÏç"z²•ŽJž«ƒý¿àûü†Ëiµ¿ÁÉÔÈ¿äbMYïY
+ÊÌÕGm+Žmv{­–BÙ'˜üõFhÐǨYDØ(¯-¡CŒõè¤D(‚ö‹ç úPšÌϏ‡§W®”±ÚqÉ_d¿êÁ-J‰#Ž:Rߍ–=ä9¡M½Zm
ëðO™˜i¬/£Xm—ÎOJwüº³q¯–ý¥ø¸MuiÆ¥¨|÷3{w¹µ8nój!ô«•Ú0d•ÁË »|fª5®îUAŽ¼Î]6ñ›U~ŸO>ÊsÁá5^’FrûÞÉãŸu"æ+ŒD™~LåcY)+xsU’ÝéøËÑi|Õlè(Hz{w"¼?v§é'rfžÙyXWÙýNÙé	f{«-SXöeˆvdôÙìâüà}Øi.ÐIk\¢uiSÇ÷ô[ºb»öåüñr»"ÆÇüÕ]#QHdúYÏe’³c=Ø‹¹gQé·Œþ¯	ÃË?Lº·}ùáñüö³_T[EÈ]Ê-”~ óä×Ñv´$䍭L:\33o9܏q–aÆZU¼Êå¾-g@mmœö³|{³_þ{ÝÛø
ܹ†ÝÑyFìºÔfÆöŽÄøÔa÷u#—üc–>Å+‡ÿŽ7ÓFÇ”¶üGåôñ@«Á¼˜œsÞ¯²¯lµe]XrÌ_v>̦ÜMZ”€¤³ô™Üf9ÚQ2Ú¬i4'¥rÔv»&
+ä:Ô­ÞúShq{ëù-­ó™‘ØÌãiÇ0ÄØfi8¢c‰HÜÔBâ™iÅÉÈJ<›]°Ì40·¡ÓYOºóì$;%±«~oól¦u5øQ®4ï؝—ÝQ]W—¾½üL¢7»T0†JÙŸ[¢0÷Þôfˆ‘µ|
+±™ñ$êzë‘8¾Ía3÷XSÛ‰O€Éz½ôžÐ×Ïd1£lq#;´dŽJëE
+_ŠÈýËѸv¹4ÝÀ‡–NÓGWe"5¢0ÉçÊÎ(Ïѽ?¢ªrAïŽäY,GãóEjbU¸!
ââU‰/¼±”TF㶒Ø#vâéúæ ‰Ë• J×w§
+Ç~F¥Þ"]ݼ«,?»ï·i‰â©6äO-NlíÅTÂßäB¶&–:¤øP}>ÌV}?KbUìõR‰_©Aò{!&’0îØôϲêøt)|EdSöMÆ€î6 ×V'­×äXNT=©wUd7¯²†Œ®¡#­ÿ+Q¸¯…0Ñù/ZzÓïÇqiâãA{S„L*uÕpÔïU•}Ê5:1ߌ#
ÔGomXdÍyŸwxÛè\Î#ZÊ2•Yx˜ï(#¾–ˆË­Þt¢°W%U}/žUq{ïµH×Z»¦Øöêäv*–@ý§Š›ÜP”\99ú’k6Ý•‡Ó†¨þÏ*×O†Ïý—6÷¹x¢~h£ÌΝTfÐňpãä÷ÅÓs?Шð\ËäŸÍoÇÜÕc®8>Sðñ·›ä"³KRÆyµ„Ô0ùŠ}…¤Ç9Ñ^3cgiã0nB¾æ³V7ó/J—\»xN£{Ò5ž5yˆqéT¤FY]T½šB[NQm…ßہ;Sò~UjÝ,lF1	;—pCÝ;aWŠ×Eó±•_6`_½ÊÎœÐæþÙÃc/$WéÀÆ3`9b}têÓ¦Ðznù中Ø[ë|§ƒ¢ÛU”D:v’TNü¼öLµyýýƒõ/¾ãçY¨ñF^~K¨”Z=8ÑMóÑZõg{”•Ôõû§;ÜB%®¬	$§O¼B~Ú&}8#.év˜+j<%ÖQϨó¯Ñ.iM§›ˆ)¯_CUÉöNíC5P–Œ¨
+ yÊ
+ÔZ“ñ `}¹®-ŽKluèÓ¢JhÌä@ĝÂ(µ¶Ì2g%b–âÜ£<ß2&B½¨ÝÑI4`ª~m
¹gîtÊ!¶¡yÚxÿR~”kx»B“Ì‚vö[&öëÆ"Âz;`Aø2*¦.õeŽ‹é´ã™jŸm}h€ýôÚÁP:>O~šg“—º|¡/ç2tˆÊrÆÇl2 ‡P˜p±"ñ!K„Òé[÷2"ÖÙ¸µõ»‘®ÏÈQhÐ÷éÓÜÂñ³ò·¤J݆F”ôù\ªèzSÊùÌZ—/¨Æ]˜ÊLÄD“ÖN?u©·€ï"˜T(T!êWU×MYßÎÉ—ës<·ŠÕZ–ž„PVÎáJè\`•n*c>»<JæR¿Î)åT-M8¯ ZÜÖÇ©¡K>á-„^ñ€D4SûYíЍRQïó.úS¨âÛ*aÿ ˆ¨öºÌ¾Ý]ÐX>½­j9]™£;
ÂÚ°ø¹"-
+Ø?'‘žœKۨɓüÜÔ«›&
ÉñWrV9ä´â·'x9òôÒŠ…y¶áš-¤4XÑàÖ·l°Z€L¤Fê<L0Iéf-Úi]ÒNv2”ÕŸ‰Zg Þq\¡ñJ“!l+ñAÔžðc^Xhž=êá]W¸´Âð—|Ì ü¹Æyµö—²šé…¥¿Vl´È´¤ë„÷vICšPlW^í—E_(EZ""ŠÔŸ6øy®Vø•øë!êËrÔ¥Çr:ˆ.h'’T¼Ãa"c/÷ãG|}×·tlåb¨+ÑNC”ð,KïquÚèûÑ+5@ñ©¥]Rƒ<…ÊR•…¼úÚ÷áµ_69Ãõo.ørï°iâ;5ü•£Ö€í3Òq ³÷ÞÚÍ•ÝRB*yP‚¸.ôô¸¬ê7~"åûÌ4¹éAŠ<ß’ÐoTHïÔoÎ;[($V¾ŒÅ¯gã\sû#´j65¸ÌàñŠÚs’4®=1žwAjeR„nBÐnnÍ5‚vzB ìZ¦ÜxI˜*ÃãÅe€r~‘ã{Ëvo7)óL§æÔ§Ÿ×Î7yÞê);X¤úhÌU&vS«Ç¾Œ¥3”ÿL ‚\ï™0Þú´KpS«¿Å–·˜yå¬ZýþG+W%OýwÛËÄèVyâR³¡ÈÃDn†È¨ÕTšVÇdþ•Å„	[ÝUy6Í«›_%7;Z‘W|ã‰#ß‚	çØÀ½…Š¹ŽA{î•oM¡×¥(LdÕ!|ÁÄ	áBò[JiD/üN¦XIj¢ÛÙ¢Ê'é8 9Z
2ß;ÉÀ ÅÇ·”\_¯Ðƒœý¾p
=¥~%“”H‘œ+—<¬+VJfcv+8œMb{SqäE9Ë÷¯ÅG„ã™÷eó[¶R2ûæ§WP<at¥«y£Æœncˆä“ª9ºÆ~B⍠™Ç-"æå›väÏcU^VÉ
+£eªƒ`sú$e¿Ø%\QãÕ¼Î<ÀS¢ÎíElí`Q«ÖAÀE
+bcëgÏë2eÿ¹^–ÆYÈ3¼&ZæÒ®ï¼ÿc›¼yؘšõEŸk¬*òmâ®!9­@9	!ëÏŒÉYr?ÎàheßÇòRÖ¿ÇÇËÁa÷ÄWê&†›Ê_­þ‚Á»búàsû
+Ï2&e5²-	~$äI²j
+É™<ZÐõÁ¼NSõãbl…‰€n;Ø{˜,
“ùyÒÁH£û`ð2ãˆ;MrÕ³*d¶Ý~"}´!Aüí9qõ˜Ì”*~=ø:ýÛFâÕÕ2ŒV‘öù…šùáa$Dð 4g—ìå/	ú>íjÁÃE¯„jUþØÀYÖrâY‚ÄÖùªbË3à¼URǬ[½Èñ*Ã^;‹û(®/>Sç©•¨]h[ÿJþLÀ±ß”qºŸQY§Ä‘$#RZlD¹;à-E¶>8Ë$«¶[vøNj
ו•Û¾õ‚;T‹!A}Ô^ÑAÝ3¾_;½B¿ÅꘌÌ^n{ÝË*B&ê¢áH±—±xÝo°?ë/i6 zô]¡C»ŒBIH?b
+]øcbNX§ÍåwäJÞxàYÆ:Û’¿LÍÙRY‘î|­6üœA² O¼ñ
+é(ùp[N”ÙömÇI‹êÿ™ÑaˆÏ¾:ûÈ?‹ÀqïÖ0§•2I΢?vmnòM/L"™`Öz4·¯¤t7ò‰¯XG?õû‡T.*ù›ñ¾6†V`(bQI({Oí#µÕy¸F¹¢®Hìéÿ9cDÊŒDr¼ŽÒüÛšCZ"ä"R8Qµq|¨ßàhÔnô°ªbØ^|<¬ý‚ÝBÍ~Û¶;¾áJŒ1OnŠ… †¦îØ	Ù\bÅSÈKW³”À-ÙCàî8‹àÇØF|ªÙŒ1Û9Û›v=L3|Oh‘›¥a€ß»yéÞ“üuöK£ØmNW›úp½tu7¢*	²žøòªfv‰›q•Ñê\Q=Ó8¹–0‘0‡ÕEH’9¢W´6Ér¼¹W€}—©LƒsD<ÏÈô5gC^ñKÏ
ßÇ™ëVL0z”OƒèYñLØä{…l)F_JÂõ¡xˆl÷Lotõì$5º]7/eøÎl˜:æC„Qºrb«5éÍ·ÝáP6€”êwÏ|󂋉Ÿ§ñÜœÙe™`g銿–8ŸÎÜ{ŸJb
+ò`MPn«ïV#¸µLïìáöÌKªÏØóí—Ó9gkdÝ}ã§ÖäʸÜûõK54}lºp@¢4@vt¬ó¡ØÞOcw¨éPjr)¡÷˜ÿç*—7v^±-äE{Øl^ÔÒ@½”1éz¡”žbíÁ«GýnVYl‘1¾ºï“¤ö„¾õiç(Â~Ä‰
Qs‚]õ&”ÉÞTˆ•óï/%>“v-v˜	ç0kŸü:j’eyʇÑÀ ab?(KÉöE¿HÙ?a?Ì*ñ…µÄÇÖ¸‹C—vù/§§Û‹M‚Ê›èHX·FtÁŒ?KçUªK%kðÑtæžäñmöbË–Ô>þR`½Hϲ֡~‡5÷uÖ ÁmÔо×v»Ð!˜ÏóhèÑκK”ª=–FóËÅî)r-þ£×5_¡ÈŒ!n¦åðÚ¶˜	ûÿáíÿø"€¹ÐÛ›BlÑþK_9/endstream
+endobj
+63 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 107 0 R
+/FirstChar 34
+/LastChar 121
+/Widths 108 0 R
+/BaseFont /RPRATX+CMTT10
+/FontDescriptor 61 0 R
+>> endobj
+61 0 obj <<
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/FontName /RPRATX+CMTT10
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [-4 -235 731 800]
+/Flags 4
+/CharSet (/quotedbl/percent/parenleft/parenright/plus/comma/hyphen/period/slash/colon/equal/A/C/E/F/L/M/N/O/P/R/S/T/U/V/Y/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/w/x/y)
+/FontFile 62 0 R
+>> endobj
+108 0 obj
+[525 0 0 525 0 0 525 525 0 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 525 0 0 525 0 0 0 525 0 525 0 525 525 0 0 0 0 0 525 525 525 525 525 0 525 525 525 525 525 0 0 525 0 525 0 525 0 525 0 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 0 525 525 525 525 0 525 525 525 ]
+endobj
+107 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 34/quotedbl 35/.notdef 37/percent 38/.notdef 40/parenleft/parenright 42/.notdef 43/plus/comma/hyphen/period/slash 48/.notdef 58/colon 59/.notdef 61/equal 62/.notdef 65/A 66/.notdef 67/C 68/.notdef 69/E/F 71/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V 87/.notdef 89/Y 90/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef 95/underscore 96/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 119/w/x/y 122/.notdef]
+>> endobj
+58 0 obj <<
+/Length1 1117
+/Length2 4847
+/Length3 532
+/Length 5563      
+/Filter /FlateDecode
+>>
+stream
+xÚí“y<”mÛÇEö]D.ÙÉ2vBÙ‰Æ.kfÌcF¶,YŠìk–d_²F4H$KöÊZD–ÈïÜ÷ý<w½÷óçûþõ~ÞëúçúçqþŽßy\ÇÉÏcd*¦æŒv„i£QX1°8X	и©n	–Àâ’Tüü‹@£4¡X˜ VTj8@J Ë)IË(ÉÊPñhO?ÂÅiÿ‘$¨!a„Ü„b]aH‚†Ô0E;!`X?q@ÍÃ0ùc‡7`ó†a|`ÎâT`0àŒpÂŽ0ŠJâGz(8ÿ+ìŒóü÷’ãM0L
+‹Îh”‡àƒSI@ЄZ0‚“ÿ
Sÿ×Æyx@ È?äÿìÒ¬C‘¿e ‘ž8,ÜD;Ã0¨¦Þ‚ýeNíñeô°P„“ÊÅHþBxk#|aÎF¬“+ ‡zxÃþŒÃPÎÿ´@hÛŸ$Mu
uEÿõ?ÿ\4‚"PX3?Ï¿eÿÈþ“Á¿˜Ð°‘—”	ï¿¿ìþQLå„vF !+@1¨a2$€ÊæÀ|	Ž%ÄQh,a@hÉ] ŽÆPýñ;å%	í?BÐùER€„î/’$ô~‘"át“AÅè2M‘ aö‹ä‰[a"$ ¿ˆ éô7%	¢Î¿!Áì7$˜ƒÿ†„š.¿!¡¨ëo(H ~C@Âã‚	…P¿!¡ú7$òü
	ʘߐ ìýÊØߐp>Ü/”"(ûý†eÿ?ñ?çG]í &+
ˆIÉ‚	BÒŠ€¼¬äÝÿ–è„Ã``(ìŸW“0…ÿf8‚0³0˜/̉jjít5Ü-µ!²$H«à})©È9u—ÆGZüH+uØdÂ9¢^}/‘ùç–GeèVHW¸ïœpxǼ4î×Þ
+õz”6vºâã°’áÿ‚Ãr'ã¦ß²ç僰uú–†Ñ½
Ùs†ÃóïJ’¬
+»²¿½YÏ3Ò4[%Ÿå!j·ñ©kÏ—“·ÔÎð0Šx. ÍcæU-5w‡!)ñüÜ`X[E“èÌ6ú%Žé¨€âÉãS{ç~‡ýÍ?ÚEë£G}L5!vÅ1‹¸'7Ó­â+Nmf¹³À6;±™£‚»W°¶é•mžÓ•£9…Ö‡†—dJuîߐ§EÄ4·ò˜Õ<ªlœËéê`
Ùçê+¹êëœÕGû_ýú¡n„.¾ùFÃ`[§«Êæ;»!­1õp<BëgE]p:—÷£º57í§UÑp<Ãe#¾±åH1½ùúɍwÉSêa]Tr*®…¼4-¾)/:Pj1ƸãkKµ3@·ðMì
”A;r¡û
»åzñZr‡¸«Ì¿/öùÑJ†»è«
+£UI¤8lÍíø,oÅÜ_ú&®×–ÕªÓ€‘‡·¢Tž|›á&‹-œ7³ƒÄSk™
˰s̨
+ÜiOòTXvEìålShœÓç.LÅÁi—©3'ò‹1é/Á9ð‰PŽ‹dy™{R‚Ø—¼r%©O-áßƧowÝfeçi$ß*à
Ö‘wþœÙSÃj»S^qä¡í´&aç¢ü9¦ñ¡ý½Üà|²[ßTïBéF×i%e»˜ãŠ§Ždte˜/Îæxèä¨nf0>1~Ka_èÄ>”õYîƒU<8~Ö‚2ÛÂT¶‹e¤àø@D–GûZL©évç<¹î]Ž#¹pîôÒ¯|î°ôuŒò+õ(KUNÒtSr¤+s\OÃ[“ %ìÀÝ-ßFSnM&êz(µ„êd½©|XA¦C½TƒùÅVÚRfÆg}ŽŠ8öKv]g,·_ÓÏ•È0‰ÏŽçͯܣÓjhþÖ)¥^)gU÷„¢u6ÞîßÏ!;óÌ×RtlwOc±H1 ýït=žÒH]ðóŸp<ïW^²ñJ6^&EÁ	kìž5àÿð–*QˆY¹’ÿÑÙÁ•bTÛÓÉ·øT/f£¢§U\!8¤;à›»mŽËKB,MÆ¿ýвºÚpìhŽºõ܍¡xÃú•:hÌ;qÆäöä”A2ÍÛ—”Ë"ŒíßQˆ¿OW²’_£¶—E¼´;–>ÿº±Gk®ÁþyÀ«£h%qc¢Ð!ºíç:u
qÛ!Oäº"©é-ûº~†¶¿{kqì›ozós®Ûþ`ÍS¾æÔ‘?«|õv¨7OÝüã23ÀA̵+¢{ûšiº§w'‘}UúéÛڃΉ©)U)|NÙzÙ!‰ë*ùz2™‰7¸E¢¼ãÞ1.Ó
+ÑNéàrùëu₯N­j
¡ì¸f›wÉdÀžß¦6ÿyøë;IZ‘Ñ/¥y«8|*F>ú¦Ò1…»dÃ,äˆupÏÙû\ÈæB ¿VÐR:åñ“-͇•y¥y¢Í™¥×àÜ^YùqòžkB‰È·ò{E(Ž¶p!}áòªü¶\ö•@Û­j©—¯¶F-uDXîŽ[*)œñÀb{¬cEî“„D²Á³g¯ë
+ýØ!BR×ײÒD­|âw‚Igô/r#JÚ¢>
³ñ@Z){ØãÄâ^t`³öcàd;®÷§ì^gŒ0D(úHÞêð¨â
+d²Œt·âšóϏS¤ÓÝ¥![ú
+¹u[!ý‹¶*…jå¼Dªí`áè9™z³ª–€.‡·Í¡QaÆ.áYòãä•‹"“õi1«Ø!éÛ…CQ:ÏnEÈCN‹Ûâæcã6e"EÔ惫"1tÌ—™'E›‚aÄÏìbÆ5ryËâsGzÒlxl
¾£ZW;ÜhÊHŒËù´€œžÛ=X=s\ ²4é7E¿b·Ò$ü–ÎýÕæ˜Óu÷xŸa´ŽòÚ{mÕX™÷õÌâFõøk»¼±&ƒœNŸÅo#ÝÙÏ‚H˜Px·o¥-ý®nö5;$¿ü,˽xT8óù‚)„‰ƒïö^º»	qŽ‹”'ðBì’¤Ø5õUÊc`4\þóÛ¾‹ëÑÿt8öÈO‘M€•ÂÏÆiد|0•á.Ô\«œ ò~7ÿœøpܶmŽÛñ…Îî”è¤ZVêŽs|¥<ßè5À‡ÖLӐ1Ñ™\•$6ó¹^,kyÓaÿz»Sæ‹Óþr;î®r²¸fúôîz1ʍƁ&¶J@QfÏ¢ñfñŠƒr¿deµ]	OàòÊŠà뾶:d­uEõTP綋qÖ£ï$†Wð·ßð.‰Ù3‚Þœ¸	-f¶eŠÆ^¼©VÝÓ÷~Um­úÃ+íú&ú3ÿþXáËžV
+
+Å'"L”î$ï×[|ñ••Ÿ8Þó&HèõÂÛžZÒS@²TzÖnN ë$i,n¹õ
+ÄGÁ:¯ð¤˜áÖ5p-Fh³?Y‘¿<ê
¦Z/>ÔÔÍ
+©xÎxŒOè®ë.*­ªS
Ýß8ݦÚøàÞXϘ	}­`{ŒÑÈ'õâz ¤üGèÇÐðýîÆ
+3åö|VP­ñ \÷!‘؃Uœ±ª>?¢ŸTôU\&[ל~a ê(9GÑ:¹)ÒèNëùš·™¢Ó=Yw­‹Ü¼š|ÜÚICš˜‡Û[Eº‰ŠË9o¹|ØS§Ì?{¬°²µ;n£¯è@TLÑzŽë)ƒ¨óǸ®½üolDç-~v…\hN?·7r„?u»£õ©E狶Û}ƒ¶IùÍÄ·¹çÜìñ±Û!.³·›ÝÏ"߈vkv+‡|¶É²—Iúè²ÁÑP)\9Á‰0¯Ž¡ØT	rècF²9Ð \iª¶X¯ËS|ä iŒ-ŒuȾ¡96µL}¸øÒ
+oÆë\güÚw˜0‘sË8íùžfø«³FÁg5ÍYqWqõZš™<‹Y´Ý‡\©*MÄl“”ò¨œgßKéšßÏm¼eÄì}Sõ=;yåMÈešñÊÔëí¬¤Y)”³MýIãº,
+¼ÚC˜„R@	º
ò7Y¢
ó´S¯«o‡'ôß9·HÝí+÷áüÕä5˪‡-ön,_¸¦±‹ÉB/¬íØÎ$â5Ïp–=Üy*:=„.Í‹p
+&Npðñžxi½Krðñ‰Ûˆ #ïà†ÖGº[â9÷¡ëKßW+ŽW3«0å{zV¦uñ)Ù­ŸÈ~º6â$Ìðô¹	 Ã>ISãäFéèDÁÃ…¤†L9×½OVB[¬ßtûrô}¢mb'YË|º3$m`ËÖU¹nû]ºÕÒâ—¤ðv7$€ÔçghT£_ÛRË\ ßžå;
½	‰ôÐiŒ‰q££2^].ëknêåÊ›P=Ú-î‘ãvþ ìj„ÂðÓ«uä5"^-™oË'Þêó,?Támc‚Ï=ù
+w&20Ó§^¦nñ‹|p2ã oÊH{¡§S•w·Ù{»ïžtOœhæô'}›¿×VûÞßGCò;ÕD)*û	‚×½½ôêÔ7[wdïvµ‡D鋤hž£PåšH¦£î†ªÈ¤%}:#91ò+Z‡ß•¶´ØÕ>õN“.W0Ä,ËŠE¬ ‹1	ø	ýÈËÇ%¿,öoˆ¨üÙ¤#(Áp’h?{äëBÖºiR4ž@ÞFå]^nÕO+ô°–2š½s®Ö:Û«×÷ú‘¥øùm¢­IÇSȍr®g÷
+s£Øc¶wT ¯ˆè|Ð&Ne?Ú_%!ºîÔ
ò¡˜ÕÍ=Sb9/óE …õÚ5Ê=!˜…êbä[ͧ4Ôw;tÖv¯søf:¶À7òó”yCŒô„ÜÆÉÃÈRå݇Úîpè»týˆ½ßÛÿ\/ÙÉ‚–û¨zZ°¶š´)D–Ã+dLšU²<ïìw=ÚÕÊc§-N³;·Ð¨“Ûù\6ØÇÌ“¨rR	|³s>7¢‡£9²Á·ÏžëTh&¿o¹ºÁ¬ÁtwûT“8káEQãÞð¥ÒÙ†¹¹8áÄml@
+gXóõ×bÆÀïcþÞl¶¯L†ï—Œ|O”á9ð6}J©ýõàfO.Žœ¶üm¸8IBw†Ï“^|pÎä÷š…:O¹WÓݧG“+ã]ŸMÜ‘FÚ—T¯qÕhŠÚUo«¤ÑˬyÒJܨ =Ä*EUåÌÁ¶_&${w)æéÈ‹ÞoGˆT•©KydŒMMâ䃄¯ŽQ¥ñäú¥Fð50z]KŽYyÒÛ‘ œÅ®‚‡Ô–Mªt-¦òè:ˆ‡IßRôÐý¢{É.åØ/ÞsÈF7©Äó(Ι2ø¢Hα
8¹âaî‹
+Ô­þXn´ÈVDRïMº¨:Ïö³&£þ©µ©Nفþ”Ÿh'›.¹JÈ1ýºiÒÃWÑy%Ëa!JM#*éÄèú{qDDà ;=pQ]¢hçL±[öjö¥{Õ•–
+33r»dNkFiCÂ_›ÆD$
Ôá""kî‘R‡lÌS¬S‡Ã»8Mø?ñ„ÜÕo( i2†mÞ¬ÿ¹N,­ñõ|‡®ÈÄ"
FùÍÅð þáŽÀ¼pÀ™Ç†gUi¬*]•X”æ›käm);֥1‰ìšÊ7ÉØüê¬%¶.‘=ut—ǯcüðg¥ÂVs?Hƒå¾i¦¼»Á¹ó~ré7šÍ9÷¬Ùsv팪C3J°ybÊZûòú•3Í?ɃÇ–;nÜ.<sb+÷XY0¦™uFÈóO=xghL=e£”fI;hý8V¤ÒKr1lÑÙ½¶A-ùŽdXpã8˜LTZ>CÖòCf¸Ó\`Dý:º ¨¡$‘;nmÊÆj§Vs?µ¹žYl–2ñï:$kè«Èê\­ùæ\±-ƒë]挻ã&{Ú_ßz$µ×<ÒIóÕNçì{CÈF‰@NÌŒš	[oÇóªCý_Æ7NÈO[ú™E´ÙÇ…{\Z˜VYºBiï…ï«)ÌÛN†9ûK‹º±âAçeXÌìeð<O˜rzìY2†%c'‰ŸZùØÓÃôâ”"g\¿ü\\½ £ñÜ©ýA“ô‹õì¤)€›¥eKwvE¶¾k×òƒ`'¬­—爸ú¶ñ­£{NýžýÀŒZò
D!ë,E¿ªT=ÇCd­¾¾ÚŽ¤‚Ûî{ÒÔ^[ìWd?yƒÄµ¶]«Ïö—~,^å»?°ÒÂiŽÓbYNŸºÃY‚æ(J<ÝcÈê-}Ù)œKÛÉ~Ε1àÐtEÈ*gå•êgÞà+íUaze$aöÍ‚Wq—ë¿ñmðê€h2nÛLœ¾>ï?„’M®ôL÷¼ÔÐÔIÞF\^"ñ“Û+è}yÿÃzˆçŽÍz‘E™Ì%˜²Ï_†|ÌéÎpâÏÂÈCüûf9mˆ*Ž‹Px0­"ù¹4hzéøúT‘˜`Íj ½ûQqD‚NslíµVµIúƒÙÕ=i[Fl}`aDc—jgÖܤ±kȇ‘ÜGIVi&H²þì}[IxÓˆÔ©x7èZoÃ’{ÖÞhMvz» âŵ—…ä$y]@N˜õ»«…ègáfF¼¶ GåÔjª\R9„è­¸.î+KQg…Ò[þ.ÈÅy‡š¦kYÈõx)÷À¡Yiƒ%[™ã 9c+Šú8¿†„'ynR'†ŠÏ·o#Mëi¿¼dŸ4<:
+eV¹ˆ2+³‘$+5‰T·—ÑTMOßÛ»blöƒ³×ÒONï’U ô¹¥*ñ©	‚éóp¥°çCÑ|˜Ž
à ¿Ã¯cÌè=79»[žåX:‡/¥¤«rš<e½¾W `k[wÄ°Qjoð†£ûIþÀ'•gܤ%Ë­ïÇó®~–YѽÇ:ä>uÝ,w5 í3WðªÑ²•w‘þØÛ©[Sâg:oïÒq‚’fø*Ç·|§z|œ
+k½®\ç­ÀsÏîÖëæ½÷Ÿ¯g€<îo¡F-rH\R†H®n±‡ʭΘ’Š™ú'=*zW¯!|`ùÄ+‹ÿ9“ƒG‘>¨‹÷Ún¥|ëéõZQ-ÊUy1Ë/²Q(Û®„dBÄIfͽúåE­.>.ù‰W>T–Kj¤µsÓn{ÅITNë˼RU<]@o²]ÀŠUnÑÖÌ£Š­Ê.³jç„Öµü¯ª$‡LòéRŽÆfKž
+<R¾+¤‘“ š¦®R³¿ˆÞ=<h%õˆøŒ£°d4ÐÔ¬oW­Ã9Ðϼ‘ôÖö‹1ÇõY ˆ¼‰G€éÈpóóÀË>øbÓœùËz¢dÊeEÙ­V¾ú®"SáõJí'R檷¢Æë¿BÆ.
Š•Iþªÿø?!àäƒb°h$ãNõ_L˜2eendstream
+endobj
+59 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 109 0 R
+/FirstChar 70
+/LastChar 122
+/Widths 110 0 R
+/BaseFont /OSQHOH+CMBX12
+/FontDescriptor 57 0 R
+>> endobj
+57 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName /OSQHOH+CMBX12
+/ItalicAngle 0
+/StemV 109
+/XHeight 444
+/FontBBox [-53 -251 1139 750]
+/Flags 4
+/CharSet (/F/G/H/I/O/P/S/T/W/a/c/d/e/f/g/h/i/l/n/o/p/r/s/t/u/y/z)
+/FontFile 58 0 R
+>> endobj
+110 0 obj
+[707 884 880 419 0 0 0 0 0 845 769 0 0 625 782 0 0 1162 0 0 0 0 0 0 0 0 0 547 0 500 625 513 344 562 625 312 0 0 312 0 625 562 625 0 459 444 437 625 0 0 0 594 500 ]
+endobj
+109 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 70/F/G/H/I 74/.notdef 79/O/P 81/.notdef 83/S/T 85/.notdef 87/W 88/.notdef 97/a 98/.notdef 99/c/d/e/f/g/h/i 106/.notdef 108/l 109/.notdef 110/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 121/y/z 123/.notdef]
+>> endobj
+46 0 obj <<
+/Length1 1686
+/Length2 11515
+/Length3 532
+/Length 12472     
+/Filter /FlateDecode
+>>
+stream
+xÚí—eTœË¶hq
Á4îî‚»woÜ-8ww—àîîw‚»»Ëí½Ï½;9çþ|ï׏fôè¹jU­Ù«ê«äÄ
+Jô‚ƶ†@1['zff€°¬"3€™‰Iœ\Øhàdnk#bàä0ss³ Ä€†  _v6vr€°­›ƒ¹©™€J˜ú¯$N€ 5ÐÁÜÈÀ kàd´­ad`P²52:¹1 ­¬ ŠÍp(.@cff€±¹‘ÀhjnƒÀø—’¤‰-€ó_acg»ÿr:8‚¤ TkR@’ƶ6Vn c 	£œ-¨äòCë?s¶²’3°þkù¿õ¿†
¬Í­Üþ;ÁÖÚÎÙ	è µ5:Øügªð_n²@csgëÿ•t2°27´1µ˜þ2w3w+˜;™L¬ǁ6Æÿ)êÜß
+΢2*
+Ââ´ÿÚÓ¿ÇÌmœ”ÝìþYõ¯ä¿™ù7ƒºã`î
+Ðbµ—”zýÏ'ÿ¨%jcdklnc
+`aç 88¸!€NˆØÌ sc + è
+fd°±uM€zâ0±u@økCA{Îhòwì_ÈBó•
Àhïlë46´ú×Nþ3Âýß#ÿfc0Ú8 m¬€&D™ÿ;úɬ °•³ãï ¨œ‘­µµÁï;€ÑÌÍÎhó;Äš*kkü;Ä`t:Øþ€ìlm€ÿ0;HËéËïqv“™ðPiGPËÿaPaG ËuÙ¹þ’³²ý#ÂýWŽµù¿G9@3ÈVè7q…h¾è?Ä	rûM CñßÚ‰ßê›äoUùM K¹ßª ÿq*(ü&КŠ¿	´¦ÒouCù7¬Õþ!Ð
ôÏ™ø·]=ÞŒ¿wŽ$bø›@"F¿OÈÄø}Yàø×!üAj¦ ÈÍìµÛüIXþ «?¤aýAÏ$£ÍÒ°ýAv HÃþi8ü—?´)N ÈÊùY¹ü «/<‚ +×?dåö‚¬ÜÿÆÿ}ç	Ùºzг€N7èé¯6s¸9¸½þ-ÓÈÙô$:ý}¥ƒ®®ÿasÐEºçlx,냊½Es'J iÀ…L¢äj:§Ûý¢Á­
+†¥íiV«ÕKS0w¡w‰¾<ã;~oõü<&vöÕ>*iöu×E7Ž	_ý2EÖmÇŽäÎÿ¥¥~æú˜\~ju¤8N#¯/ý¼ÿ([JDyv…¬KË¥¶+5€ƒS],ÅJå[`5+±"j’}q0Û·__Pãb ~û{[|ƒk¤]¾°muFÌ…ËŠ}վÊD3j%bUܤÁTÜã?.Êû†ŠRõÖ;X!
+0Ur ìB/Á)Kúg`U¤»ã‰êMžcÿ
–u9£kjU'~!çÐY-ØÖc¥Õ3Ë“ZÈg:Éµ-§|€s=$Üsç´JÇú­ûžy¢Ä:e‡«jSkB#5Ybkö¥¤N`º3#_§©à	z#Øñǽy8¤èz8"˜o¡>ZQ?{Ë"¢ôöT8ÈÀΨ#”‘îUÄv`$Œ¸ØŠpc¨X×ÖT˜SD“}ž’U†ðì Gÿ…fe´* XøC©^0Çûëö×8×€Ÿì&ø’XüÙ4Aï<T‚ì™øvËaŠåD‘±a\\v[jiRÈÊZ?U{¸ó¾ÉŸp>Y+kU·öfè¾O4†-MS±š9‡#;SK5«_á©@äï÷£ràˆàrú3ÌQi$Ö…/<à0JÆÈKL'=nŸ](“w›ÿT»^wF¯˜$ç‚7–›¡¡$q&ì|½€Á”ü¼¦åÅ’Ãô’[ç¬ÉU·—HSÚE
+“…—ü|“n߸|¯Ð|˜vÑäÙ10š 1Š‡Zoô: -ÐXþ¦†é‰ ãHµ·õÐã…\%.ún½ëôl;lÌ(øê™÷la±\ˆÂ¨d
©JQõ†`>Ï2íom¤ÍÔiy"LéhG½Ó¬ÎÔ´ÿ]€¬‡ÅbêJ^¼Nœ»6˜ü‡IòÝ$ö¡ŒÔ±ˆ@‡u	Xòê‹!{‚¶‘±±_è¥ùñ ;퇰V®õ;•°‰í´Ã,µJη’ø“·ìbŸìM3}äEm¿HÓÜ¿^-ôó2†&¿¢86‹ÔŒc`ˆæd¹ò}ª%’ú¹pNµ1Ù\@¾²ü³™
…RA¿ñbñ¢·è]Ro–XØê*—¬DÞ¯MŽÖ—¼¸Žƒ<\jä‘
ce !®ˆ´•’TVøP_@ñ}ÈÖ.šLRzNEhM¼Õ£yΔp·"úÛfÒˆ{i~]íÀ¾Éû®"¦¼bÎnà(Uѧ“ȏ‰Ö7ùZöüJ,ëãÐÊ/.ѶÇÛËT°¬2l›‚‘oø"ÔùÆ¥>„¤¬žÎ{ÔÆšG{÷	.LyÈ`÷]LÊ—í”ff
+µŸ>n…xeì‘{y‘™áÖ&V×y_þ
+Mì=sÎù!áä­š¡¥®0A,°"0 ¶ŸU¥w³às¸GWcÙЊ‰+Õ„Ç4‰n`«â!85>¡P3*<R9wVfÆžÂcóö··²S¶+à‘ͽQ*_&¶-µIÑ&nf+Âð¾©É†žì}!·q¯ÝÆ£8&ÇBÿ¶To8¸Úš·òô¨g˜ÄØBHOÈ´®¬ôyëCÙvµÚ±x#œËG‹ëi3§Ì»NFÙK© sfaúå›0êô/ŒÎ4ðVF?mEœ3œ±¸úžBš?4;$æœ
ÞYÕ-­TûÝPº•1+Ô°§¬B¾9»:Þíc5³Ž©Òð“ô<À,—ÉÐîñRR÷þ0>
+tŸys
 ®éÂÝѲpE—Ý:ɵ}/å¬Z~„àr‚ï4ªfx {wŒ{&6x}ÜìÄwѵaË]>ÄÍ	°èM±{BC
»óú¸Éô79㣌(á‰<g[suDrÝ_·7Px¨Éëï¥*’Ðœþ<|âÛ›r«[;ˆ›oʈ(xðáÌ̲Š…xbqZµ÷hà¯é-]Gj¹ãÁ%Œ¿Ý3¯,æqÕÂӳΰ n;] ëÚBRtLÀ ¼8LƒH5ųÜPIi‚…âB2'uÃcŠTxB`~B$$É›vŒ„Ó+ä§%‚èüÄzTîã3Ô‰xù@ð='éYB•÷@øàa?ä„uE3B½õZÖ õ&x>úqÎ*ØÀ5Ò>ă9ãD
¾Íǯ3A¦Øm9™NßòE#~?´!uª¡P"ëò*,ìd¶1-qL%nji§Ys^ÝÏ“š©ê`hm50~GØ¢<¯š’äaìQ{/ÀI¿N¡°—SœûæT–êæÉQaæI‘žUá^0©!Å„u`gý8¬¼ï„R§Èx	`„Pbˆ£Üpc¡ªîYŠ?†F¯ÌäQ¼#ô¶å=µÊ™õ(³®…PP3ãW}Z衍ÈìÉïÁ|»3»©=éûÂõ¦È<âÝË¡n©BŒ]&DxßúPÂÊzìh#cSÞβX»ì¯¥Ñ”oÔ8þQ4®Úã\pŒŽMš9èNʯŠ@Ö¹R¸Á
+Ü5xÑ{È™Ìî{
+¿š6pBüØ•ƒþS-”
/å=Ògàæ®´!Ò/À‹1Pb3MIÐÞrþ´ÅÒÈEoq‘$U{ Ç,,ÐJ“¼†ófS5¬½0§ƒ	ÚwŠpkj¯Ð<Dü­KW}Vy[i)ㆿæ@¦ÿ‰ß"KïLUÕòب-!vý(Í‚ûW!Ø™>¯µÏŸ¹Žœ?í\8ì¸ Ü({ÆñN•öµs©/‹¯p¬Qè>×ûônÒÂs@*‡
+b-\7Þ!ÖE®:\ßO°¬lž›y:~&‘š×k1ðÜ„Š‰"t½òH£ÒJx£þÁÔ=Ü@¸Ò½R±ñ±¶NW‘A%’ǯն5ÝQ”]ÊZºóß Jôˆ©Ävæ]òtbÞ2–kùÆõËj[€uÅÐ0®ùŦú¾€(ŽdbËŒZõUÏ%P/w”ßpÔxx(lT€•Ö‡Ã[Pÿ…!R®zºÛI6A·ÏI¿Î?
+y$g8.‡™`d2L¢Ïò„σ¸¦òHì	׋ÑîÅ­qnk†ùcú{:ÕppúFaú[÷ÞÉ„‡lÉ•OK‡ßÔË?´?óCPš®_ñHæ“·Êa01/zº
xO§‚aÐ)Û£´c<¥èj…ˆQ[w Ý“m=¿¤ŒöŒ²UÚ#æŸZŠ‡Y}‚@íA`cÂÇ›a+MÙ²¾ã'´Xˤ89™íãÆìÈÞë,Áón;sJf_ßF€=‡Ä™P¾çK9eo}3®äáTÝ”K½>Å'Kd	²…¤4¹ÂÙ'H×âèv-«èK
+M$¾îšÙyƃ½[f{J|¯+£g¡Õ¶•¹=Ê·¡£ìF8nTWá÷ÕçPöénM÷i_)q:a@Û ákËÓ&Qu“Ø4E3Ýqr¤(ýæ’ý`)b˜à9\ÈÑØåiI…3Ï{¬2í©„zª9° üWÁeΘŠöç0SO²z‘úw
+Ìä`!´±…}vfŽ‚ÊK’t=Øþ›’Ñ!
+«³ÉÒWÓ:v†“>v’M¯		û‚Ìa¼™íhü—SRµåºd­§¸Œ¥BEbg€¤Fß–¡ú›	f?¤YB8—bµØL¤Iß-hMÙ£â/€e“´N6BwQ˜z]°¸Èêþ!2ô~ª–ÚªâðI‡@M|HWÕF‹§)g8î\ÏÂ|±‘Ø[G¯PQ=;a=ÆlALË0¸œÞ‰-š¹ÐT‘Ó]?zÏÒ]ºÎNd³åâ.ÓÖ—úhŸ@½øÆ}­¾~ÏdÂÛ¸"dâÀQV±ž¨òZŸ°G¥’œ¬ÂÚP|ø">'ïûÆ•1uk툋¼áGl|†WùñkÉ+ªXÑRƒ£ “ò¹š^ zÎÝ7Ö n¤ÙÍK–¸VøÑÍñê·à.ÆpÞ¥‡›Ì(”Âcu+åâ-ÁÝb~Þ/¹Q³X¿FÔôm,ý×GňŠ®„~–?ñ‘7.xÿâò|Å	;âäj…ìDÉ­«º«zÃÞ"c:ËkâXÚ9 ÿà‚¡½µŒ9–1kK·°7)–z¥»M€O¿±Ä_Ž¶¸:~,¾\.Ñ¡.iéNhpPã"U	Ò`v˜/ሞáü¤‘DiC|e€ãþ…«Ó«=¥ZéÈ,³Ú¥©‹GòçdeP„²LÐÞ{r½IŽŽ¢AÝÂoGM7>ø¸ŠåKbŒ
‚÷'ÐB;XYsØÍšP%ê_°gMÆÄyteä!í¸e§T77цÕÞà_ø¯M²*Ð?”8<C.¸ÆîH=™íÇNeÀEïU™ðÞk²è
@$êÂwÛ;W²ÇùjO':—æ¸V©I…3ëœwÓ4Ã{?ùÇ·«c¾?‚C{ZN½Ìx˜Bì}H3_qˆ(­ Iùªm¤ÊäXŸ£ÅÅõH%X€Étän›„èÞ4…1eÔ¢éÜÛu¤¢Ó§°o„#‘¤FØãsÔÕê9~®¡à°€à••Py¯Û·6
ï5üõ›Òèã’àÑίY„J¥pWonŠÃU¹’µF&‹Mª-)íŒ Ø}Ô›èQ	¦’ZW§É¥Ök—mâ”	Êùä¼Oo‹ƒðÒD^»{¸yãOßMsM¨Û†òâd¢ÝåÙQŒHÞ¤…€ß¤)Oñ¼qû±Z"7ÐWô¨)$Þê*ô'	ÁX༏ Ñ~)¼vyG´ÞùhGïxîõß\øû¦Ë¾¡ÏÐÃØ8С£®*èôT
d-‰±¹|ò›D’ÔÞzšèðĐ­Lœœû©cÉŸl]løO	‡O;ù	Á"¯.òï·ç]kÙ÷L|`-úëù)²¤ 1hæ³ö *ü»¢5¼f©4
82]Y"ÄÛK3kV’ƒÆa·žÅM&ç©>{ƒf€çÿÊØm„ùqâÞ5¿4 ×èÊÎòá!½6©}¦ªGÌ+|³íz”^µ”®é~x1Vns%J…Wd‹—±&3Ni…
+¡q GÙxWQlÃ&à‘ü)=é‘)€Œ—ã×o7Ô'‹ñMÿ˜6L[r°¸žnZ,^§´SBm¸µŒ×ׂ ýÞ>'—ûHüHâU*(×¹<{ºÐ]·kõÞãωª«‚v±ÿþ¥{°ZJU):ßÅ%EŠŒÑFtÃ#½9‚ýÂO=ÃM<$‚ÔÖ~mìÃëlŸåÉÍä“vM
+ß6¤5´ªkr™­xu”Y8‚„ÕEæõ¢î>Éx¶?©ª˜|{8|iÃëË÷é<¡+Çïì54M`Y>¡c‡øÕöèáé’ª\«„‰±>a‰iÏ´Y Q¦A7ª•»È׊3Ì©xð.ìhú
s7_«{Vt–%"nõœÚû{ƒþ&èbñm—yZD•€ÌÔ.ŽXOîõžÿÄZùÜ]L^y¾Þ¼˜}¦ç’=v‹]¸Ìy¡?Övá-Î,™š¼zt
+‡ŒK¢åË„22KvN6¸>4‡Þqì_Ýrò#LÝôœ·ûáHylwƒnýå˃Óé)èDßj/d¿xNï'DÏd4Õ~‚ÜçMýãÈ[áGäA²~.£â2å	Å$‘üÜL{QñÔD‘Õí}W"õŠø}…îúSE1kah’ljŽa,vË0}›¢#~ˏXkpŸ1O$”Ðcù÷wáú(0éÅ9„êÁ6|fÏ×JÙH0gt_3ŠG-Ÿ)1š±…¨ýì“;]˜Úa‚B>{“ü*ó³Ž$%‘iìc—ƶhu_Þm\6Éà$¸áˆv4ÃEŠcÑÛO*aJmeÉÙ"—ÜVZÐNŠO2Ν£.’ñ¥Ë³œ¼…Éߝ+òqJJw%ŒhM
V(éŒ,4rM«®Õ²‚æ¾0ŒY
Î4DõEŒXæP8ÇP·9úÚ¢ß{fJXŽtyf#Ä>cm/a:ØP˜nŸZsêžµ¸Cz
„6Ïè`¶ ˜ååQ¡4.-¸Æ»wÅÈIµ#eó½™]wiH˜Ò¾”`WwZ”¨/kApòánŠ¦å1‰zAÙ‰”žS£Þ`
+6â¶óT%Ó·8²&0R¾W!¾	<¬L™l‚©ÎÉ«ã`Ɉ£P8ž)oðYÃ
+Âv¨ <HƒVÛ¦…hpo]É ÄQÄX±Æ;ôM*S¯ó:®˜/a÷™(_ÏV·'g>è¦à¤KŠû%{–T¼oå—Ðäâ)5ï}ù%–Þð¡fûpή¿1šä‡Y>mŽ’{¡kžóÈ“¥Ç›Â}Æ ïÈ7&_¸&#Ihïd+(?3éRßîõí½t5† ¹-I§mo»£QóËãX—ÔéÞY¶¤cd¤Yžþ%ãšç¹—oá}3p9}ŸzÛ`|r®CÍó¨3Ðó
+ÞõCÛd-ê¦De¨û¹¾‹òèwr¯s9‰ Xø&¸óŸ¨o LÆ9d’D†±¶Ë­˜¨FŒ­#¾«„7±¬°å³ÙSч÷¯ëT3õXŽ2Twii‹Ú¡™!> ËS°Û¦š"‰9ÀJ^c›Ë¬×²»”mª¬¹‚\Ç.U¥c+Ñ+¬G¼€f\¶Ç¸-\ÈpR¡Ñ„pëçÀÖ£ƒ.Ü_ìw/¤a­\ôèáDÚè-1쯐ŽjCže8vG
¤À­N|^Êàí5éËŽ8	;°²HӝhÐD%2-E}²R”¦Ü^üqï´Wäð…®öÎèÍÓöž"OPïJ¶Lûm½ÛÉS¢ƒ)™‘:¥ükãâK	äãêŒ/½H
+	˜vŠdÓ¯qò:`¬\ë¶JˆÈõtÒ/"
W„owi{“~R;ó'·­˜þå&Žh;¡Lx¬à0êS¨F!pŠg¼4Ðq¶_æ?ä²×<¨#Q&šž:ãáôCíÀ<¸o=L·>¦ž[ìÙ“#Ðàˆ±ŽÙC#0jÂX{@0Å<4jR\qü̺w
+»6îMã>gͧ(ãwu¾S¸fÓxž#6p+´óöÝ3êW#åNtÇ”û|
ÙA™Õáfž¾†Ø³=.Ш3î¨ÃWÿ¢¥ðÁ¨¬‰®Æ¬EC:²ßEãNe¶’PÔ~Wÿùzm#Ï©4IìÎ&»½Ä¶(·°W‚Ö@B ̽C‡ƒf%»`TOtYDμA~zƒÅ²BâBÔã’Qñ±t@Çÿ0uñù¼µô|žsxæ^i³ü$dy“äp¾\ÒU#ŸKËÙ®Ÿ
Ý{CæŸèP	Œkų{Št‹™è„Ä¡Ö»Š‹V9ÙJMYb@?úõ}Ž&{Ø|‘IVöåÀ64}—Ó;
´{’ˆÏé߆HqÈåcNÐ
+øSÅÕ†Ž‡ÍÌ\
+ßÂ+‹úz£®
so¼ž¶s$«HÈ€ÉïévÈ*PÂV°Ho>šp$0øŸÝ€_ÌðÈ—ó~¤ò‹Î/½îbèc•(	ä÷ìXàûY2	ØxP‹+¥
+óÆY̘m«àS½…N
Êlû•u+hvCýÓÝ+iœŒüJ+´‡|…œeŠí½xçbZ¯Cþ'„
+xã«îl.SÈ—ZaQ@ÐÌÀ49kíð™EŠÿ+…Ÿd0•­ÅÖ1ŠÓ.Rö½ì)þü÷b£R2áuzä˜ÁñN`¹¸Üvê<[è$:³=\ãNûÅÛwóÑJëÖã(™KÎît:Ž||rºôñMŸ¡}k©Å°QU)¨.±N«K"»…\`qŸî…ÔMå½/‹/Øú¤S4çipMé:6¤-¸“÷ŒÍ¸ÏxGܐ¤»{µ»®×”Ç8„ÃöI¿–²s·­ÌÕ|Œg“T¡þ
+mª"
6"¡÷`óaŽ¡êŒt˪"…Oä.@Vœ¥9ØùÇýy±Óü})X,z<TÑà5±äG¼•Ú@i9‘e’öTïå,xIÕI^Ÿ[¨‘©˜\ƒOçÔiQÞÁgLe3HDyÏÞVà‰ÌOdeñþmwPe–jnõ”ÝH.%ÒÊÖåjßQªO¬uÁäu;T–+‡ûôÊZä
+h.#—pÆ#­UömßõÙ$[ª=š¾\/âzõøüëBü恱Ú0QLQ%¹‡œÖ1 #Ä÷?¿ˆ—ðº3©Ð¢Œ?åËéæ‘qýè±Óù}þºÓc
+Mãoé¶úÉXö'ä>øDY—ïÏ­²ˆ’]‘[èïëx䚣\¢íÞ£†‘‹YÌTe´Hüv °Ø‡ÎfGLãsÛ¶‘ëFzb³ñó¢(_Mc)_¾¨™	¶zëX™TÞ¾«Ž`¡½¡᝾ìÇl{/§µT
NàÙü6×¹:8¡!@oÁêe+jŒÙªXçš©˜ˆ™» ¹¦qtY}MÇÏÒÓ–<9Qd.I°¦/b×Sû—pš@Iò«
JôvÅË‚k§òS¿ËÊ÷V÷õŠý›öªµ@0‘ˆšþSîîœÂ»~„SÜ3ì-fYúÌ«JƒÝf/Nμ¦ßF•âÕîi‘R¦B•jDcR»	{Ð>jjû`Ã6\-z›¶	–Å¿Fkr‡Œ#løC@CBÄ?¬p˜}Y!·^×NõÎ;å['5¨ZšWmtáÆ6øXä_Ðñ¥­‰´©Ë…@´ìÞ“©6.xòHNŽ®âé%‚éÐDiªBºB·Jfvô9øª-ˆ ©jPü\8œsîÈœ[_@ò„€§ðɶHîË­(QQM=£ŒÆ§Qmá:oð݆`shÖÏŽô_
f±Ëô¬ì?”éØŠ3-{GVX.®pŽ ¤%Ái ß¯8Ê»¼ݪß>.þîÚW¥¢DíÊ<‰·¢X`+SÍàkRÔ¹Ÿ «B/üsMðFpŒ~GÊRÈ =øìQVøëk9Œ*E^1ÊlÈ¡h«“:~l†ú+¯ýê…°·rm9dý
+M°Ú6õqGœIÍ@¼{¡ŸëwÕ2¬®gÀÛÊÖâzo¬àì༃l” Î¥QÓ‘5ÜIÓf)Ÿ÷@°â}Rç°ÓOËÉ“/ùÓÙe-L)ùГ´(æ†i8zO®o#©dAÛžûEÚô“ÐcÅXE‚8¸±”R×ßWç~ÚŒöG9óUAÛÇd}htÖv¸¸8.£0SÛ»/îzüIË!ÍptÏ¢¤:ÿyˆÜá-uù>ørJ¶f-~ÿõ¸v·ågÛÐ3¼>>«È’YãFx/t]CÉ¡û:c§ìÈJǵ´B€~6ÎcœÍ”w[czÖNN3Ýþ±ö š¯ÉS‹¯VeHau¬|Ýõ
|ÙmqÂTA;ÎüÛÈ#G¤UÔ»(—OÞ´aß艗~Ù _ñeÆj~&ÀÄËøqÙ
+C•ªò?gÐ2¿ÒyRÒ êÅy£ûЂ)SáëѸøééFD‡!ìùvöéÓm‚	Šï>'ºè²e;Q¿œ?,ÚTÂ.}Ù-Xÿj—}ü³`:ë÷Py~ÊýÒqíõ؈iüÌ>;EÞP¡Ô
+꼩ˆòþo­úJ¼{‰PFHQ©_$ÂÒbÌžÕJx‰é¾77”À¿3â*§HƒC#‹¼3“5Þ='+v–e…+º‘òÙ
+âËŸGLŸ¿Í™{Ø«[ålŸÌا{ßN öž´©Ï=¼5¿Éð¶ê5‘ÖP2ž¢½!Öé«ÒÆ÷A9ߟ+EZS§|ûXxWW·u™cLkk×]ò€Üà¡A¾Bm Åb´3U·Ñ·g`lü
+‡þÇ*=Þ”#(U½6„‹E´ù´“i%3Ù78#ºÉÅ“ºø	mGô,:VÞeÆ´¶ª-ÚµŒÂI{GühH3ã{΄q1GAV"LEo—3©ˆ¡žþU‰æ  qc¨
+ÅiH0²³†RMˆè±)ͯËÜúÔR¹ÎÈküm¼º¯:“—pUögÏy"8.¡ŠÈÒî¤12±{3shYTd7LØÍLÍU‘j~ü'”×Øöõdn–U¯øu¢•+±ÑÜzCF0gLÅ~]M‘óèüæpõãc×Êy
öŽüÝæÆ`o8#¶}Û³Áu”l}¸3Ôs§åD
+âV£”ßkª¶ÒÚÙ:Á .¿äüj­íY+¬0k…Jœa“R›s>ê+½Å)³ ˜_·B4Rÿ\™ZоãÙì5‡ÛLRSé5dçèí°'êBšßý¨p½%£¢ëkg‡ÈA(0šñ¦[¸Þ!±Ÿa©BÛ^.pw¶O¡‡ÌNJ“dhjÇgå4äEÛ5½«ÑÔ#câýœJô}>è|͆GÒ –°â3º;lt—¯š|Н¡Î+}JýÚDþÓÿ“‚v„xQ¡=‹š”†^üÏ>3Á*Ãd¶äR#DªuòÓÏêˆO¯–—Zég—fl¬~yzÚøø{ÑTÅ-®!DZ­0Æ£uÅ›	U`¤Þ„mÃsÀÙ}â¢Uƒ¡BÔG^&tÿ+Á"ܯ*RÖUBéÉuü&õâ§+öë||:>HéFšä!ùk¶,mZOëú[ƒ"Í.ÄÌ$Í›±›œß½ã³ꄤŒnг	éC°^j!÷dÒ_Õµ¸õC xÒCÒtñqÃí­'
+!1v`/':tá·°F po.fY]¸À„t)ìpHöÐ÷*æŠLP¡éQÎo/éõE	¬Gpˏ/ÞpÄ9b‰‘ßÞF82¦72¿‰ÀííËJÉøï¿Nî-šÒ@²H2 ۍy7?”fD–.è±oñác(ìuè·[nÝÊ©ÁpÐÆÜ\^Wøké¾Ì“®Å&<1H–áßð‚;J Bà`BÞ¸KpÔ¨GÌœ½zò0¹ ±{ni{õ]eŠç÷ô÷>™%ï*a¬õ´hhvâ°Î­>£¥-=£““È(Mn¢AMIìuO´,QÖÅõG±lu„?†-Ì~B!5DÁx7–ï™78Ò¾ˆõD~All.Ujf²Gú‹KéÔŸ½;SŸÛ'?Và¸Î.ƒw®–ƒÏìš:sJ‘·{¼¾ßí!ÜXXÕbQ©Þ^‹qõ¹YïŪ¤vÄȳ¬ßF†üWójzÙX²^Ý»W'E¨
+h`:Yü®÷¤Hº^îê…†s}¬¦+ߐý.ìwucö›ô2ð&Òùx ݸœlùâƒ_d\â€ù ã—|´¾¬Å™•Œô9Öž€;v¥Ð¡”ÎlÙS¶»#!žrÎ<\“"=3ýÏ_3ñ"ƪ‹5Ä5ø÷=ā¸Á£™(šÆEó
+ˆ¿¼¸—°ì€Ô?T­).OJ'G?ddñçš&Ÿ*¥T^ú®WL66ëe×à®I?¢Tw«à5v[pwAè…Rµ¿wÂ*íB•H·Q#¹²†3’ºrB˜s§?/óÛ{S—jª¤8ùºC]ð}0Ê„dæ/Lm0F[L˜¯ðÞkbʵÑEÚ˜ÍÊØC
+uÊfœX‹zöS8!þà…¾['“£¢¡ë&§žC4Û`~¨S™€iU‚2÷%ӝ^œ¥æÑ90O%Nc5:Ð6F[½.MZ&\EXû<è$C5¼)dǏE·äPá3ÅòœT™Š°„~Ø^v²¤
K$ûðù™¶¢f¬áëõːZ[§ÙseD¹ÃÀÐÈ|ÖM9•û,gýê9Wcó»bXYârôe!™Ož~ÈÇV½ÛˬκԤ‡Ÿ¡j„ˆÝå—&ò“í·(ïŀɝ¯•ý¿oàŒ
+³Û1|hڍŬÊÞ€¤ÃÄ\<U±nkºié<ƒâÅÕµ¿‰À܉ãÛ¹Ù"ù©Ü-ÄÖõs.÷¨ð‡µzÊSíyßø7Z†³k뱈Ù7Å…9ÃXîòù… u*w½ú+.4^7>¼㜄@ÚMâÚ÷P
v=“%Hï&‚—JJ?«w‘v–8ž†O91c߇Á'j®4)\±òáðñf×´Ôží Keq*ÂMna»†@‘eÄ1›ô\.zÓ@J?™¶'˜jÌDôZ÷$”ÞátN¿&
ýÅ´ÒB'PÚñxˆªåÉ1©!›ß6{̃ñÝ$Ï5“‘WçX<ê«ô­*§±RUÞ†«›×<Z¦­èÅlã!±¹5©ƒ€è¯j|Ïô/òŒ‹ÊŽÛ΃b·“nN,U›18qÍ×÷ž–ì»$k™m©k
+‚²R8I®±1r;Çla*iÕ½ÜW%\ASuµ}u¥!Xr2øáCz¾Ôƒíq÷x藊씧Û]½LÒÅ[Yƒõ²¾'ú3Ïì°E£Àí°{UØQ¾y¤z67_鯏‚<©1uôþÌ>_X¦ÊœÇ=aVÎèfqÓªîÀ¹>!_x±¢¡{”kßÈÎgtÓ›A¯ú%žDÀWÓwö& Yâ©a§^ÅÃ}×S×P‡$Ñà 0/$1)·Ô?öï½OÓ2o¡ƒ§¢"J8U9ëI³Z#“®¯·úÊJ×È@˜,mÎ+äËYÃEbb®ýaî¢z¢>%a°âÔ-‡ÒOÆ©ž	^ûƒpÚȬ8°¨ò#ø¢ÛŒ)‡—}þpµ†ô	Be¶l©ØÁ<àÆ9ž+Q¹tvjð	WûR»l9RzÅl–¯¯Ò†™1­¼HËh+bœ¼#Î
+ƒªÂ͝…%*|
×÷ô][TëÏWm/2Y¨ŠB„€ýŸR¿¢÷¢åöÚêä=
IØ1ï^•’
~—QÐë,»Q”cÑèd)+ÕœMûq+ƒYB6ÝÌJzøTš§|Re¸éYoÅÓh¤®Ö}Ë‹%~ûñâG—–'"deMCtâãT^,aÎó>L´îyÉÜίÌIÃr8e»ÁŽ¾ò…sŒ†Ÿ$綵H¹¥d)ˆ‘iá‰|¸Hc8ïdSáVÉ‚ÿ°`{Zð½ƒìq¾8Ó>núªM™‘̸ޢnV—¿=ËMúˆ†ùMQÎ4kê½–wã²!EéÀŠ˜ú2Š„à+Ät–aR’MRSS$Ÿ·FhwE¤ýSß%Ñ%¦*dbñ?ËëÕŒjN^žAÇ	îðªyNeI)·ž–<}2ãMM8˜q•äî‹cþ„PО¿.¾^HSxõ;Ûôèqu€W÷V¥²‚ˤ.KZ°}#¬×qGy‚ĦÿyìqAóž9NÔ;çC8æh
¸ÜÏ·ážàÕ*3¿­¨¯J½gè¥4°áõù»n»×¦
++™û+SM¢‚´[!ö<†ßž…'®ö¢ë§hžðÏ£òhÉ0«Ï³ó/ÞëG¹uü´Á	¶ÞBk6v‡Ì÷˜‰œÛnE¦g¬Þ-¿W‰KÇ>\ê›Kp`|aÅ$EÁ0²ãœü¾!ÛOžç¨”æ·‡u×kÙXh^ ƒG:šE󺿚¤‘àŸ³dXpOÿȮǕZ±¶‡,ÕÆfô«¡ñ¥×X´2 €ÊŠJ¦ð$ª§y`*óV	=¯ñ¶ÒšC1Ei=W"¥ÉymöB@
+›ˆ2ü	{– -5†*¨"RîeýÂ8ñj/]]5Y]:_·ME=Uœ±+ö§H~ó&,&Å‚?¦qH•ˆ÷-Á${tÖœàôü¡¨Ó¡ŒF¤8_ɏ@¢PÌäl´6OWÖi³êIEyØænOJùÑ€(;ïS¡™KkƒöÐ#%¦ÞUO2}V	#)Ó
­¢Ð{lb©ê3Žëº´{™[l
NmÝ[ìû9o1WÏÉ(¤;Ñ€ÖhNåÑ;41ãö‰qÍÁõCž>Í#´æ”/Šp¥)ü8:u…ÐK˜éi½8ñ¶2 FIÊ~Ü,ÍIZKŒtF]³©¶—Xü08Q¶§F‡æ[E!zÜí­Žö›bI‘
+֋ݘ‹>ܳšý©bfgÍùP jp)µ†O°²‚kÿ;Ãd†…ÙÜ_·¸*‹Ó[ð÷¨÷ó¢Ç™úî&ÏÌñ!nÒ¸çúÇcÈ;ó{Ü€~1#‡ž‚1HÌÖ>ZFRnŸÇhBTçÞSa ÍÇÑàt¾&ºÿüðã'ãb&l	Î,XXEÍ’›Ò©ÉÕ/¯ú´F®$Ï …ȉ×Y-LY%¾É]=žž¬ƒ˜‘Ë·©Q]èùloŠ·G_{–©M$¶Ý¢(J]ïáÜ3âøDdš×&­ç€VˆÒ8®«øïŒuÑdów¢~Íü)j¾Q®¥H½ÀÌ=¶Yâ&›)åA
+6„°ïvñ—r-ïà†Ï×Θ$NyÛ†ï}n¶Ç`œz—ȳsõ«Ô\$¾[¹™p˜•Žì}”¤L(	'o*þ@q/Ã>ã$œs:£#ݪDqnËoùn–A.¯'Tè@óÞ-º0-8;Ór:þ;æÍÇ4þ˜©S¬†sô/‘ÛÖ]Wù`¹·Æ¦¿2¥Ã[–‡š´db¿|.©CXVò͇I
6py‚l21ÛëŽ «K2#m úÕÑd¸‚©Ù§½Þ{"¶"Î$H¿
+5~øñ­|ozļ”`î¶
ZÆìÆ¥ol™åÚíZf!oµíÇIño…Kb]ý,ËF«?/‡eíˆVfb [ìqÏTC?‡>ï"¬ª¡Ü­ǗgC®™¨ˆ•œhÌPr|Z¬«T¿·¨T3ÞÒSf2[à Æ£†º^”Ÿ„p—“úH#‡9º‹wwí¹†ï×ÌvuÏuØó5¢R!aœàzw©¹2"=† ”^wVÐéù6~ Ã6ÊKf"¢ùBìÄì‚æT¬Ê]Ï»Oy›»¡ÿhk¾JÚð|F:HJ7­§‡ß¼afüÖøRFï7Š×Ôôƒcú³Aº4ÞÚ+£8„ààf y‡P'M-2ÇxÔÄ“ZºŠ ÿQDì¤ý´[(ñºìPWsœÑ÷…×\fTâ1Èòâ*jB8Æ"²FÔ¢å{¢'cÙòےワ·âý¡WÊï ”¸ÓÒ5]…>^œG#aâtåÛyµš_ÉEsS°Äې8s‰s6GPMÀM³ôÍ{kꆻ«‰Sæ=›ú㵬6Ò.£hÅñÝs$M«,çÆFÚ¼d`Êv§Ñ5i{ÌWˆÊÏÕÁŒ†¾EZeP™=Dí²ŠB£6”Ñû;jLøisØÁ÷fú?üAøÿü?±€‘ÐÀÁÉÖÚÀÁá¿ Eî3endstream
+endobj
+47 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 111 0 R
+/FirstChar 11
+/LastChar 122
+/Widths 112 0 R
+/BaseFont /ELUPCG+CMR10
+/FontDescriptor 45 0 R
+>> endobj
+45 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/FontName /ELUPCG+CMR10
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/FontBBox [-251 -250 1009 969]
+/Flags 4
+/CharSet (/ff/fi/quotedblright/quoteright/parenleft/parenright/plus/comma/hyphen/period/zero/one/two/three/six/seven/colon/semicolon/A/B/C/E/F/G/H/I/L/N/O/P/R/S/T/W/quotedblleft/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
+/FontFile 46 0 R
+>> endobj
+112 0 obj
+[583 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 278 389 389 0 778 278 333 278 0 500 500 500 500 0 0 500 500 0 0 278 278 0 0 0 0 0 750 708 722 0 681 653 785 750 361 0 0 625 0 750 778 681 0 736 556 722 0 0 1028 0 0 0 0 500 0 0 0 0 500 556 444 556 444 306 500 556 278 0 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ]
+endobj
+111 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 11/ff/fi 13/.notdef 34/quotedblright 35/.notdef 39/quoteright/parenleft/parenright 42/.notdef 43/plus/comma/hyphen/period 47/.notdef 48/zero/one/two/three 52/.notdef 54/six/seven 56/.notdef 58/colon/semicolon 60/.notdef 65/A/B/C 68/.notdef 69/E/F/G/H/I 74/.notdef 76/L 77/.notdef 78/N/O/P 81/.notdef 82/R/S/T 85/.notdef 87/W 88/.notdef 92/quotedblleft 93/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef]
+>> endobj
+43 0 obj <<
+/Length1 1041
+/Length2 4846
+/Length3 532
+/Length 5537      
+/Filter /FlateDecode
+>>
+stream
+xÚí“g<œÝºÆD‰Þûè%½‹}£FDƒQf£¢‘¨Q=ºÑ"BôDž(щè=™dïý¾9{<çÓùçy>¬ÿ½îu­kÝ÷z¸ÙTìvP
%$*,*P©š‹Š D…EDT‰¸¹ÕP[W·EAå ¢²²b 
¨f€ùä$%äD¤ˆ¸jw?$ÌÑ	àSãÿ•$
Pqƒ"a[8 d‹r‚ºa4 ¶® 0ƒ¢ü„*®® £_+<FPO(Òj/L$*
+°‡AP ;¨#NüåIî€ Hÿ#lïåþ¯)o(Òc
+À÷Û&? cÒwõØCˆ€úÌnPŒ—ÿ
[ÿ.®áåêªoëöKþw¥þcÞÖ
æê÷Ï„›»
+Š€öP$üßSÍ ÿ0§Špým´Q¶®0ˆ
+ÜÑ
+ùGæ©ó…Ú߃¡ N [WOèï8nÿï0…ûm ¨gÖP1¸ýÏžþž¼gƒ£ŒýÜÿ’ý•ý›EÿfLu0_€¥¦¼¢˜DÌû¯‘Õ¿mvAØÃàŽ 1I)€-iëG„¹=’ˆ`p{¨/ ê‹q†#P˜% LIH¢_
• Ý1=AØÿŠÿII€*“4 ¨ö7É €ê‘´8 ¨ýÉ`üaš
´ý‹DED @û?P „þb  Ã( :ýC°?ãÁõoÄÿ1ʈ?£ìþb”‘ FÙóÄõbŽàõ7Ša”ý~ã¶[Uá $Ž9–˜¤È/%	€¬„Ô£ÿ–	ñB"¡pÔïŸ	skþÅ0̃B}¡¢™ID>Ü9µ.²$ènþH)ž ¶ªã»xý7mŸš‰Ã¦°]ûu=ækÌ/Ê2¨H×ðÖØ|.™<cš
5v{ħM\­yÛ¬eø70™d€üVÝ9Nþ‘5֍mKbŒÍ,I¶xݝ¹×ó-÷ŸºñúÍ/ìXí–Þµí/Ã¥¤Í52\M¢"jxÄٍÈÓ<JžHDÍù''âÎ
‡9GÔßþ¼hò¢¼È'ÈIº²Æ:‡àÇÆz2>™B“Ì~gR
+}Ô°P+-$+Ù¹œµ^ž]Wòv¬`j[½¿xûRCÍקáäçòûZÖ‹eõ¹¾2&…m¶¡ñÓŠLÏ'Z®>ÒU-§§؏4ßD@Hƒ’ûzãÂ3j6xÃù´åƒ	×F:h¤]õ
ÃnÒ÷#ÏkMÆ–a'R½‚´ø_W?(Í+å÷!{][Õê+õŽ*wrŸ¨Æݼª>Âb*uòG»}^óÐ÷{u¡=›Ëw(ˇÇÕ¢²¿¦?¤îÊ&Ú†exÕób	g§„º½9QBõL<&:ð‚Ý{Ø¡PXn×-¡÷iÔ|•ÂÚÀ‚Aa:iä(ŠpŸÝGÑÉg+b¡–ßæ_è€ËÐLFzØ­˜'›IôFŸï}φÐgfµU€\ßB¢ásaÕ¶Óæ=3Äv™›>"\–ÏžEßhทvó•I~¾E…@–TDv^ÛËêã#µ;ú»*¥‰|#x„háq(¿/ûTè€_`8»ßÔT–ˆ&,P'}[ZyÚsxW˜+V½ŸJ#©(Ô4»
je£íÜ.Lì"UÿÙrŠKNAß6³<à]?õð“@{Üï”·’ò{Þ§¬±6¨@4M:zbÊS­/><¯	µêR¿°#´µl{ìyM×|Ù¯KqLâ2ö3Rö|c„ËRCš³/ÈÓ[¼ÃOîåý¢s_T}zËTû±3Ú¶D»³ˆ³ìmD:^Ò‘ä KY:Âph…Í6Ô鬡Cž[­'~ñ7RX¤Ç•©ÛêvsFþ)‰œ<k©º´Öïô"ßÈ]ëTÈÕÂ3ÁÛzü}ÑÑâS¬/ëÛØòÈèÙÅâá÷%;?ç÷4¬ªkRpœÇî¡-ˆÅ*Uí×á·(έc毑tw2¬jNUƒ,¿`“ÒÛ³–Ç;?Ü;ob'Àg—(Ú'4ee®Ù6
$„PÎ@)H¦ÓX»§	!µ¯òÕõöù
ZËÌÊûF˜5ß™©·E>žÝ1ãßoCï;ã
#ùxtèìœÌ÷eU_ƒ“7ŽG_)ühKªü´êç™CHø`«­rLª+ø®¼Ìg,Çx¾o3æ£òèÙXÜV¾†Aèh;ØÈR„ñÊQÒl±žÄu¼7½©vßöEø1ΰ)äCrÕlÑˍ¯üëÇÝh&TJ{ÓKf¯ìI$ցáçÀ”¶¬è-6‡­/²¸œî‰kn1Þ•ÐQ[üâKNr•Ê#c~‹ö„”yÉSË{ö%
?v	´˜ŠéŽ–E(„\Óñ±gèÈ}‚lÁìá,×Ê$5ðNpDÉ×û~è|Îc/îÃò'B·›4ÕôØJ*NnéÆŠ×E'FÚg ÿz»@˦钥ɔkÜ#ÜW¢†0o2âQ .ÐêêÆ•—±°ðu¯‹£fM–aieœX%e´9ñ¶7<ø8ìGè¿:†«áU?»™p¿mnc ¦ÙµÓ›&T´˜ù¡ì‚;*Yñ4]}¤çÛÉíq¥Ü3š§–8ÍwèCÓQÕ(
+²^†¥Ò²ºž'§ÔšÎÚ©fe\Šl®îQÇ|ß»þFÕdãÚ<PZ¡Pw#?úàÉömd–˜Ê§
+^XvÙr%Àßãåà"½][<]ѱG¥„§^<>‘>•¡Dρ+–ýk·Ã·õ^ÑÒVËÄ$qŠû%<ê”—†ÏéÞµÎ^î¤Ä>P~[–sdòyüìÃÓ2s@äôKªúRk•;Y7¯	ø…üäµ÷'(‹ú•©™‡"Û«k<üg
+±oÊ
+©V[˜¤8:Í߉ûŒÀ	7Çb÷®|ù°€ZB>ÓÔíô£gðüDá¸Ö<éÒÙ{üz	+<ûB†*/û^sÊÍ.gv‹ï¨á#ígðF…oAvL0<<‰ä#¤LeuôàWBÅž\Iz‰Æâä1£y^üÔ'û¬;öë ¡;橪Z8*|?ÖâL‚k7åZö<ÏáP©zPåM©Ó'új,Ù¼ŸR>
¼%üPéÀ#æ0äãr@®6G ž™DéÊ»è7}¡tä±Ã0õ„…»(ˆBÑyÏÎx9ÝêٝýEôÏô1ÐqCž´YCl¦µO…ŒZ=©TÝð¥c	šXgʧ'˜¶‹w Ígš‹yîÇ7(õˆªý3MÚRì︋`	b5§~£¹=îZ¡äª§û=ea21œãð]㸡r>/êB$Þñ¬¼¤Ó2S:Ô=ËP5ØG§º{ïc6ûÝ3`Ç1	]°ÁÀMÓ\ÝùúIõMIr÷ËPôT,;¸ÙÆÐÂœÏ_:Êèç-Ÿ¯ŒB_ª^o]LKÆˀǬ‚ØŽßß›tÚ†·0HW;Ác=o´ÚOu,ã4É©›”Xï¾ÃE8êZ£üL¡8#oqï™?–r•€“.7€§—Jž£‚‹Yˆ©ŸsQÓÙQ¨äkÛßheˆÈ©/%›Ý)ñ7LØ,Ø´M(VµNϹ'_Žú¨î!ù¢IOIàuÅ}Æ&h±?p°gØ蕼p‰ÿ÷—î¾^ÍWùb¡Ã^u#:OUæ%,~âfŸd‡a½l8m¤:<BW„)kuŒ‹ÁšÈŠ£Î|®[±ˆšÍM}ó‡>^øæ—_ÿ  8´yS‚ŽS<êq¤7Í.F>±/d†]à\JÑ:ÆÉ€4lÂfO(2‰VÇ^=Ÿt³2 ×Nð\ýðI˜¿Ç|{j„ø°öÖÆ¢hDªGč¥
+#}J¨É°L×zxó¤áÐwl*G§…c³MŽÎë[¬¤¶jS@éôéBÚlÎ*Ñ¡K|2àâ~.å<Ô
+κzg“Ù¹v®„ò¥º>Àା(AžÆ;K´p<’˜ó,æé(öòRHi)š[$뤑p¿'9ê©ÍhÂà)N{ôÀDT;=Ëd3p[œ{¾¼3]#ª™ÞÿÄVÞ`$ÿŠ2üDÓoNÇŸ0;6“ $û"&žØ`-]ãùl†
̢瓂^\9ÍšÈTrËGKú>6L๑cò92äúPqb›ºÏíÅYYÕÁ•eŠÏ—9ÜjÝ{tÌîj3§ÂÝ%¿]ÎZt*%C–yÕ´kq‚.,2Q*ã7¾(j˜lQ8ÍáùþyMcÙ$PÎlh¥‘ÇÚÒ˜8HŒOÅÊT¾ë|/:†xñ®¼qx5¹ÅSå:c]@z‚Œ”
»M/Ü*ÓLõFÃVmy£ 5n¤	rȳ%ñ3ªÊ^­éb9=ÏòB7g·¨7IBÂKsnrð›6 à¦¦¨Ý…E÷ü’UQOäÕ0‡ZZ
+“íí+3füb³GZ›®–ÁΝýŸ{Ø4e}׆”BÜžI3=<ÄóCÕ½ÜÞ•oªÃÉZ3î×kz4‹ÞkÎ¥;ŠÃ©ÐrÂÆ=×›÷ ãÁ.Q]¬æ ³JÒè†Ð}Ú¦
+P0ªgxš"Wß
I‰î2xÀ츩 9­üƒ=×—Tì
3lÊ @N!°ÕÈË®©dñ¹_“ôõ½¥B§W®i¥óÎUÀŸ©œ
+V­æî>x¡åË,qëÅÆ+
  56á듃­VŒg/L¢ý¾NÏ|ò¹‹Ãµ:žUVüR¶ÉmK­è©w+ãkb±'Ëb×pÇ#ædÈ@Áÿˆ¦=ý´ðWÞ‹³ dñ\ø—bøÝ:½*¿(¦²ÕŠ¼·Zá¥A¢C‹Ÿø	ð·TŽæÆ\kZuH¹³=ÇÊUèÞXZ‘³€'©A\j®H}©Ô¿Üy¤\Œ§÷ƒ€ÔA걐D\B
+"VŽ
§¼}+NŸþžoåANúñº½‹­½¨ÀÔWT|UûÄ)Òz.™`CF€¹ÓF¨‚¹¿ˆ«¡L‰ƒÇ#°Sfêá-ñœÛÀõàöƒ§Æ“C†9ofÊ6^b¿šqÌö„<¤ ¢³)’3.±k¥Ð¡3<+]¥N~'.?.:"±Ì‹"Ÿ?¬œ ßp:qó·ù’Û‘s<wø~0_˜l¾j³Ì"N¯Ë›ì1˜Z)¢Û¯?YÔ´‰–tëþP|Ž&Ð:µZ:¢\œ¶‘RMü*Ä3e4[Dã»dlw¤ãCcôJ~šŠ¤¼v hy;Ù'”F+*`)[°­Q£Jèh}bõuÊ„$=€84ßS­ ¬[h-Y
+²¿èŸùe§€ôàµV‹Ÿ@ÍÃA]CØsÕFý¥yQ]Asy0¯êËUÉg¬Ø/[‚#û|+upÞå/:ùõôwìì{n›>žèÛSTÀ-©6ËÕÎ	½yÌŠ×4êè6REÄÅñ\$s¾P9JÙ)Å
+„5RLîó—Yr‡æNñ²êËì',´xÚ$ÈC’2Bfk”IJi‡f‹nàms°àt[&™)€k…|ëÀ'Ú4ãÔ+9gò‹;€Î—Ã5/³ÓC&4'GÑÑ ÃräüøÕJV“` N¨¸I*æAõB#ø†O¯sEú0ÞÚå ÞF©æóú*‡OóDYÊÈs~çØŠ>P,“gžú–ËŒ¤³LIEóµ'Å÷÷ò0‡ÜÜQQÃéxOÎ £KÒjÙÔÁõºhW£ï5EŒS+”ÛO6ßF'ìÃ4ã³Ç
+„¦-LDd±Z˜¢õ¡3|Öß’#M;g}¼5
ÉRzHôÁ¼SeGŸ¿.Om}xéð=у­Dè<`®SÝãÖc±}¶Ìx˜	êé·¸ÏW¦Xè{Õ=úò‘X$Nkh¹`ˆÏ:#§5âˆUUÌ9I}ži]KhpV²rp…#kŠRÖc?®[Mm‹›ÂC7B%BÇVfr¨ä“é>ù=Bå¡)²:tc=ÂZŒ{ …¥SnzïÉý÷È)°ÎÜÝ=J}xlL¾
+¼¡Ð"“PÆQ }ÓZsäñ‰¡#’§çàRPu7Á¸¦T|Æ«ÇŸi¼ü½²Å›õ,OYå™uy²§$iük«RøTïâŒUï\‰*´…Í\:äNsuWiq¥òò$ç8×&ÚNÚŽ"Ν$œ§I®$—œ·»–ù5ô8Mj&_䱡Ã>í½ø>#`!E
ûù‡áãQoºv•Ó|R<´62«7»0R
û8}·äT'2©GõG'ê	ò¨ÞåVÜvÌ$sçn‰9TYðµnÏÁ¬ý[u_6Çú½’â¼1·•ä8zEJ´¬ŸÔ‘H‡sR[ÜïmÖÝ ü\)šHû’p[·Ñý*d¶µ7ý˜G{%¨W”1(0¹5ÿôþÀ¾ÙÈ×.Ô1
Åh:ÖíOÄ”Æþø……ݯ™¯_댵ª™'ž¶Ø0¢w|´¸l”ÕѬ
+T—ÏúÀÓ÷ƒÚtÔ¥ìêRLïDõ"n'Tq®¸Ø¨Mú¸zõ²µ¸0˜r‡¨ tZ~Ší¯·Ü`&xV1%a´ArYõ#êCÌ–Ø(/?­bE×}É‚ÏÇ7£–®Ò/ß±¯ñS†c^ŽT³6EZ4î~ù´uKØÝiº…€Ïãx§#5"À#yš‚AúX²CÉI.ü´ÔêRº3²ŸpS‚ÊÕ¾¿™šµ–*ÇÀDSLàèÉf‹ö	 —Ûæ7å¿¢4’?«Ã{qväÏ,¼¼ö¢™»Í#úy_ÌÁ¤‰[õiêÚLÇu{Ìë-YâðoÝ–µy­QaÉy;-Ï“ýhL	×ÝHjߐ~ÊjÂ#›3g 
yŒãT.:l͘¹3®Z¦L½¿NÓ»²#ÒèŽEsΖ$Õ*»ÞLXÊ2âÀku§–ò¬ÅR­„b5‹xofD[e~ˆÜmVë×p:™k¯¼å/Þ:TPßÚ¥VÈÓ"TŒ
+uÄ´K7`z-ºKµC³¬¬Å%b" m߃»š$GÞIåŸêu{M)ífï…‰!Wuˆo„CM–v€vT`@«Ã«Á4¡“ÏÊyU¥öôG/øVÛ»ýÓór?*-Ïx2äØGàŸÝVѬ§·FwõéÇ^|®$s\‚P3ÞxÑBh1>kšÐÆh„ÿ™þ˜…vAÍmÑO7¥§Åµ0¦’µ™õÒX~2=R·í›Àßw¿rç幺a‘'©ÕÞYð㝮i'yçƒëO"¹yxšÊ9óZäøý¿Àÿ	ˆ+Ô‰B¸Ù"]ˆþG?
}endstream
+endobj
+44 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 113 0 R
+/FirstChar 46
+/LastChar 121
+/Widths 114 0 R
+/BaseFont /LQSFAO+CMBX10
+/FontDescriptor 42 0 R
+>> endobj
+42 0 obj <<
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/FontName /LQSFAO+CMBX10
+/ItalicAngle 0
+/StemV 114
+/XHeight 444
+/FontBBox [-301 -250 1164 946]
+/Flags 4
+/CharSet (/period/A/C/D/I/S/a/d/e/f/h/i/l/n/o/p/r/s/t/u/y)
+/FontFile 43 0 R
+>> endobj
+114 0 obj
+[319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 869 0 831 882 0 0 0 0 436 0 0 0 0 0 0 0 0 0 639 0 0 0 0 0 0 0 0 0 0 0 0 0 559 0 0 639 527 351 0 639 319 0 0 319 0 639 575 639 0 474 454 447 639 0 0 0 607 ]
+endobj
+113 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 46/period 47/.notdef 65/A 66/.notdef 67/C/D 69/.notdef 73/I 74/.notdef 83/S 84/.notdef 97/a 98/.notdef 100/d/e/f 103/.notdef 104/h/i 106/.notdef 108/l 109/.notdef 110/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 121/y 122/.notdef]
+>> endobj
+40 0 obj <<
+/Length1 933
+/Length2 3180
+/Length3 532
+/Length 3819      
+/Filter /FlateDecode
+>>
+stream
+xÚí–y<T}ßÇ-1L‘B¸„£bìË †2Ⱦd‰Ê,ǘiÌ0Æ.ÉZ)¢±D"Ód-Y"²„"E(	‘]¶÷Ôõ\×ÕÓýçóüu¿îsþ9ïïöû¼¾ŸßGZÒÆ^ÑKFƒH2‰ª¨SÑŽZÚ©h*0e¨´ôQ
+ˆ¢âɤc(*¨¨Àá*€¡PUT4uÔ´uTÕ¡ÒÀQ²wó¤²Gå~i†^ A‘ KÕôbÎÀ ˆ€=ƒ©A0ÀHì~tøv /Hñ±0¨Š
+€Åc¨ ÄáIP¥‚ÌHd@ëÏ0ÖÏû¯”?HñeŠd™"å ¦D,™D° TÉŠÌ<d*ùÿõûp¤‘h…òú1þÇ’þ-òƒþ§€ìåíG)€%RH¿—:j³±x?¯ß³fT1$ሠ ügï‹Ä‚X<ã	x ˆ¾àÏ8HÂþ.‚¹·Ÿ”ÌŽŸ4AšþÓÏŸ9žDuòþ{êâŸ¬ò3·CÁ®Ê0eef!óýëëÔog“0d,žÄ¼š ŠBAA™7ƒI@ˆ
+€'aÁ@ d
+V‚‘ÈTfÀÜÉ9ÀƒLþ°S]PòfzBÆþˆÿi«JÓ4%Ôߤ¡þ‚j€îd¶zþ‚€þ„J^ÿ Š2 DúU™J~Af¯ï/ÈÔIý™ªüþAU¦ª ŸøïF‘CÕÔ EU
e ®®h©ÃÏý¯:Œ…’¨?ï8ÓÍ¿ØÏôA´ÿ
£EH­ˆ¡‡ç¾¼Ç!Ïj„«¼jõ ¾§fgd_+1¿ÍÜGþ}™ó:ƒÆÏ;Î1.°)ê÷$Ô¶9wÁçjZïÖ¸¿û8-ø±¨ó"Í2hÌûÀjäÔîêŠ×KÓ¬ÖÝïÛéÉ.wš2盧rld9|†J²<uõø4=JSËI#žˆ.“Q“´ãKó¡_T
+àK¾¶c¨+2ŒËõèðÀù‰ßÞõ\®ìë[g §³s ‚%3½ì™wDUKI)¹©Òwä¸á÷nª&èÈ~#·½òÒFLüN‡_c­)áMOç:;0>Óõ‡~qó²¬õŒ]e5¼I`#ݸÑ{ÂÏT”%ä›Þ»YŸ>ƒ{úßÉ'ÞhŠâ-r¼~`Blû´4Ï”6iï[­ß6¸©F~í¼k˜S’yw²ÈºªøàÌrîð9¸ö);A“Æ{Œ„J3?RUÂ’qñq³PºÔýGzÉ	
+ašÉ×+XJZÊj«µ?űyü`LTï¡kMñ_>æ÷.}Ô®L¦tÓ¡DzÖÁä@‡¶¡¯2RÈè¬Õ:x¨Žß(a† ¯ô!ªaàNI¡³Õä‡raÙžG_££PÎ
´F3âc¼â+6|ìõkéÆ”ó}ÏÜyü‡›P’¤ùSÚB”£±Áøœ˜î4êØØí}é¡2+¯"3«ßÆ!P»xB•†o­§Ø>Á~²W™º;r¶»‡—Qú•[üÉž<­ô½ÕˆÓZ‚"yúô7(êŒôí1Ì´=d´Þ>~ao
+J¨EZ±bC€µ77ïpŒ—òz¤–vX»ã³L|µ¢äixÒÇÒµsªoÈ–/¾Zà‘Ф»¯Ê×KøêìaÓVíðÜ@_ÌK
8ºzAÒ2‘^߸ÎÂ/ùà³*û=k,të\ÒµG±ÓõKml<eÄž±\
+9'̃‚T[
Éøù/
+5(ý2ÉÊ£ONFR(¡èÍC;Î[°Ãߦï‹Q¼~KGk5ÁJ’:º± jŸQéÝÜŽYɝM(ÉiÃ8Ø|Ÿ]Í*õŠ6Ð]z(L[ڻݥå›’ß΄®¯ì¼–_:ewDûÚ®CÌRª8„£ÉŐ¼Ó1X/ØÒ`®ûۅĐŠe£V.uÄÆœr½³icµ$:´Ò_ª‡7ê¬ÉƧ‰tã4¼AèZ˜ƒÆFÓ–ÜÛÖ·â}IkÑôŽ3ÃÍù„´RE7÷ˆ—-–Gò«{½r‰ûàóÍ:¾©œVŠf²¦kÝuÁQÎ/·?„ÇL
›aqìIÄŸõ\ϴ폸K†F4ûbÏÚªæ¿èJ‹¶G[Ƀù³÷ì{6Ú-¶<¥9…ånĆŠèí3í.ó+p’wd¼/u§²}–Åž[ûÕÆ¥´GCê“Õœç[9t:&©£mâ
ýåñ<†8Ú1Ü'ý¼JìÄqH†L	—ñ³¯/òB“Þ4„nFx-8dÈܝÖeÝ{W~<1µ¥3~q_‰®«IÙö%M¥ïá>¹¬:$Ö'{ùz&tkŽgNܵ 
(§ÆÚ#ìa:A×IÇ<²Möß ¿ÇÖÃñ®eXé¤\t"áK,!þ»t\¾s]ŸFf$Äñjî“êœ;D+úÒ
+ã›ÇO“Ia'—QÈ/Ò'"ê")h’Äè>ã†*[ËéÇÔ#êÄ+1
OŠ¹ÖˆšÎþ¸Œ³jͧ:r:$pܸ—ÕM†ˆÂ¦grC‘ŸrdŠk/Âm»LÂÔb½ÜpÜ’g¬¦YÖ>ë[F%ύ<W?́Pg уK¯Ï›SyoíGN£÷À5NZq|þÆà“~ckc0ñ11¦æêA.þá́ÁËXÙºjñз|\S9A×”s«õ®IÙZ¸âë9	ÿ‹7§ E”ɽžÉÍ®$‡ª±!¹Ž§~
+{ï)í’‡Þú")cèü„×ðÊÛÅYmëþ Ç“'3Ñksgá_LE‚PÜgÑæ8'Ž{~ÏÌzÑäÈ
+‡¹Õ±üp'siXÌ£Ãea
+lÞR׉e™®âŽè’ß͘Âqu¾ä¯Þ]û ¨¡ÄÉþÞáÔvr{×ÌȲÜMkéW{ÙÇ³ä ©²n?Rʳz†¸¹k÷Z6ýß­¶¡wAÒÑ»,pz_	ÍÒHËࣉ•—I¹’j¾Û_áAú0No£"!6~„¨`—Ž(@zir˜~ jZWêlþâæâC.¢ý>{rßšuÌ
z6Ýd¿žËߝ±>Y
+œ=,2ÉiM3Ù¿.ºx;«ja\ÅzCmnÛzØ­ð³Qß²Sw¥q‡\SQÖѾ¾­|ûQõvµáþ’˜ZŸ‡žIÅñÔæõu‹Nv“‚¦	Ãóß4EÈDÆ…Ùï‡óåéøˆ+ïrjê`N‡AÈ•{™†ÖïõGïúù¦ß1;êIÕòøÜHc°¶ {£O]=O¿O{¨Ib'wÂîj³Ék¬ï¯C‹Ax«¯:;捻¯è<2«"¿Ù¡—‘,—/ûäB3Œ .³îá6í#ßV™8¦V´¼¼8"̐¯áÙ—-’µe&(Å.CgMQQub¯(ä‚ýW}ÖZ<HGºp[Q@Íç9@y75w ¼axLˆ? k†â b.ïÆ´X³¬‹j·z0[+9—ßeFÆ¿ž©F§%Wì¼ëïò}¹ýê•»­—N+ÌûE°l7}P}Õ%^0pÄýCôæÕO¹¹ñ[!,öfnªûƒ{¾Æ·vzKj›h0µ¿NǬ®L^p˺«9øbF<&ü4¥jŸA¾böUmoK¢Ü†\;tE˜ ºëEM"J©j°iÑÒšÝ~zWâɉjÑÊÐZÌËõêø7Gr-| šü©É®²÷±±Cõü¹M|<÷j§¬|¸¬Ž|ú¡ì0Èš;X >®R~ÝÄ"[ñã‹ÍKžé½º6dÚF\3®ÎñʝAE‰žA¿í6öE/ö÷œZJ‘–K¬ü³Sª“1ñ&åVeé=×ÎPîio@BV¤œX5^µÁ#LRÔqnÅù„–ƐèÈÏllº=¤åY³UºêÞ`]rrø\ÒtݏéöÚ¸[z«y Þ¾ƒ$íL;œl¬ ®TWi>b±8Ÿ—ÛÒqíÜÄEcA©i³‚O¸¾FW	
%À¶Fe_¢MçO5Énùò»?ØÙ+Úµ3§Zþ~(ïŒÃóÓJÖªÉÀ‘éÍÁTu„>K;0,»ámfÿ„PŒzáP¼{L.Mëcö‘˜Bk×çù9vŽòˆRKäu¹mVàÒ“¡8ˆ²ÍwŒ¤=Í'íoÄMõð¬KŠÌ,/òïWC@îhØÆ_/|ÃÉe—ãTNNŠnªy׋„Ÿ,mæÙ|§ùÚf"ž,%å½vºÔ¤æåÖP¡H¨çÈÊýfâÛVÜ	ÓbwÞ&ùÈÛÁ„ý3ŠËò½¦ˆÍµöש&
+¯fC[}øìþîáõgh²ý÷Æ°<¶ðú<›]OOÕé:^\¾ÉöHA{¾Ð(Ü9[±[ب´ŸÓ#;.$+{°JëNEjÝRÇvn¢D²“^4çDml“£$îwp'î9è.h÷ú’÷Ô¤‡/›Ù•I	aU^â§!O	œp7Œ¾è”‡/]h:>špêœÅ—¹kBµÚÁ5A®—’ݶf;
+…„¿2$b[i<iÁ£úY<4G_¯?/AÒ?×r1gð|üò€Ãûî‹UF‘2³´‰¬ÉQL÷q†2ÔuaWEC"GóŠÅoëHeíé>]{¥‘%yLÄyHd_¹ÙRcËÔÈ•3)ÖP]NƀȀ“`?ގ惍®Ä驘Òæ\)„³ç\ý6éÉ’*W<¼Þ™P_g}RHp¥ìeâZúQdìP±[7âK)¯ÿ£ÚÙÂ'â×a©{^tHO-?n•”Šu³¥=—
äD›h?µuÑË4Sè.ïÜJµaÖÜð'Œvºâ”ëª{ô_´àáõļåL|³ÚC;wÆÎø 6å²–ÝйùAßël¡¢èüÂ#³}-’WøçºdK½®ÁîÕòì.ݝn_Ö&	†”çõ`ÎÚøÏd‡b'oL$zÆÆM>JÓ’yªØ—vٝE(!n6¥æb@`þ±íoQþ?>Ðÿø€!‚(
+•ì…¢œ…þWʯÜendstream
+endobj
+41 0 obj <<
+/Type /Font
+/Subtype /Type1
+/Encoding 115 0 R
+/FirstChar 46
+/LastChar 121
+/Widths 116 0 R
+/BaseFont /IJZGFK+CMR17
+/FontDescriptor 39 0 R
+>> endobj
+39 0 obj <<
+/Ascent 694
+/CapHeight 683
+/Descent -195
+/FontName /IJZGFK+CMR17
+/ItalicAngle 0
+/StemV 53
+/XHeight 430
+/FontBBox [-33 -250 945 749]
+/Flags 4
+/CharSet (/period/T/a/e/g/h/i/m/n/p/s/t/u/y)
+/FontFile 40 0 R
+>> endobj
+116 0 obj
+[250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 668 0 0 0 0 0 0 0 0 0 0 0 0 459 0 0 0 406 0 459 511 250 0 0 0 772 511 0 511 0 0 359 354 511 0 0 0 485 ]
+endobj
+115 0 obj <<
+/Type /Encoding
+/Differences [ 0 /.notdef 46/period 47/.notdef 84/T 85/.notdef 97/a 98/.notdef 101/e 102/.notdef 103/g/h/i 106/.notdef 109/m/n 111/.notdef 112/p 113/.notdef 115/s/t/u 118/.notdef 121/y 122/.notdef]
+>> endobj
+69 0 obj <<
+/Type /Pages
+/Count 3
+/Kids [34 0 R 75 0 R 87 0 R]
+>> endobj
+117 0 obj <<
+/Type /Outlines
+/First 7 0 R
+/Last 31 0 R
+/Count 7
+>> endobj
+31 0 obj <<
+/Title 32 0 R
+/A 29 0 R
+/Parent 117 0 R
+/Prev 27 0 R
+>> endobj
+27 0 obj <<
+/Title 28 0 R
+/A 25 0 R
+/Parent 117 0 R
+/Prev 23 0 R
+/Next 31 0 R
+>> endobj
+23 0 obj <<
+/Title 24 0 R
+/A 21 0 R
+/Parent 117 0 R
+/Prev 19 0 R
+/Next 27 0 R
+>> endobj
+19 0 obj <<
+/Title 20 0 R
+/A 17 0 R
+/Parent 117 0 R
+/Prev 15 0 R
+/Next 23 0 R
+>> endobj
+15 0 obj <<
+/Title 16 0 R
+/A 13 0 R
+/Parent 117 0 R
+/Prev 11 0 R
+/Next 19 0 R
+>> endobj
+11 0 obj <<
+/Title 12 0 R
+/A 9 0 R
+/Parent 117 0 R
+/Prev 7 0 R
+/Next 15 0 R
+>> endobj
+7 0 obj <<
+/Title 8 0 R
+/A 5 0 R
+/Parent 117 0 R
+/Next 11 0 R
+>> endobj
+118 0 obj <<
+/Names [(Doc-Start) 38 0 R (contents) 48 0 R (contents.0) 6 0 R (introduction) 56 0 R (introduction.0) 10 0 R (page.1) 37 0 R (page.2) 77 0 R (page.3) 89 0 R (section*.1) 49 0 R (section*.2) 60 0 R (section*.3) 68 0 R (section*.4) 81 0 R (section*.5) 85 0 R (section*.6) 90 0 R (section*.7) 97 0 R (testing-header-files) 70 0 R (testing-header-files.0) 18 0 R (testing-organization) 67 0 R (testing-organization.0) 14 0 R (testing-python-scripts) 73 0 R (testing-python-scripts.0) 30 0 R (testing-source-files) 71 0 R (testing-source-files.0) 22 0 R (testing-swig-interface-files) 72 0 R (testing-swig-interface-files.0) 26 0 R]
+/Limits [(Doc-Start) (testing-swig-interface-files.0)]
+>> endobj
+119 0 obj <<
+/Kids [118 0 R]
+>> endobj
+120 0 obj <<
+/Dests 119 0 R
+>> endobj
+121 0 obj <<
+/Type /Catalog
+/Pages 69 0 R
+/Outlines 117 0 R
+/Names 120 0 R
+/PageMode /UseOutlines 
+/OpenAction 33 0 R
+>> endobj
+122 0 obj <<
+/Author(Bill Spotz)/Title(Testing the numpy.i Typemaps)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
+/CreationDate (D:20070913152306-06'00')
+/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.6)
+>> endobj
+xref
+0 123
+0000000001 65535 f 
+0000000002 00000 f 
+0000000003 00000 f 
+0000000004 00000 f 
+0000000000 00000 f 
+0000000009 00000 n 
+0000004918 00000 n 
+0000068530 00000 n 
+0000000055 00000 n 
+0000000081 00000 n 
+0000005100 00000 n 
+0000068444 00000 n 
+0000000131 00000 n 
+0000000162 00000 n 
+0000005283 00000 n 
+0000068356 00000 n 
+0000000221 00000 n 
+0000000260 00000 n 
+0000009560 00000 n 
+0000068268 00000 n 
+0000000319 00000 n 
+0000000358 00000 n 
+0000009743 00000 n 
+0000068180 00000 n 
+0000000417 00000 n 
+0000000456 00000 n 
+0000009926 00000 n 
+0000068092 00000 n 
+0000000523 00000 n 
+0000000570 00000 n 
+0000015242 00000 n 
+0000068017 00000 n 
+0000000631 00000 n 
+0000000672 00000 n 
+0000003039 00000 n 
+0000005405 00000 n 
+0000000722 00000 n 
+0000004735 00000 n 
+0000004796 00000 n 
+0000067208 00000 n 
+0000063111 00000 n 
+0000067049 00000 n 
+0000062361 00000 n 
+0000056544 00000 n 
+0000062201 00000 n 
+0000055258 00000 n 
+0000042506 00000 n 
+0000055099 00000 n 
+0000004857 00000 n 
+0000004978 00000 n 
+0000003232 00000 n 
+0000003389 00000 n 
+0000003554 00000 n 
+0000003719 00000 n 
+0000003884 00000 n 
+0000004057 00000 n 
+0000005039 00000 n 
+0000041807 00000 n 
+0000035964 00000 n 
+0000041647 00000 n 
+0000005161 00000 n 
+0000034753 00000 n 
+0000024858 00000 n 
+0000034593 00000 n 
+0000004223 00000 n 
+0000004393 00000 n 
+0000004563 00000 n 
+0000005222 00000 n 
+0000005344 00000 n 
+0000067870 00000 n 
+0000009499 00000 n 
+0000009682 00000 n 
+0000009865 00000 n 
+0000015181 00000 n 
+0000009987 00000 n 
+0000008777 00000 n 
+0000005522 00000 n 
+0000009438 00000 n 
+0000008928 00000 n 
+0000009096 00000 n 
+0000009267 00000 n 
+0000009621 00000 n 
+0000024540 00000 n 
+0000023153 00000 n 
+0000024381 00000 n 
+0000009804 00000 n 
+0000015364 00000 n 
+0000013474 00000 n 
+0000010092 00000 n 
+0000015059 00000 n 
+0000015120 00000 n 
+0000013662 00000 n 
+0000013832 00000 n 
+0000014003 00000 n 
+0000014173 00000 n 
+0000014343 00000 n 
+0000014513 00000 n 
+0000015303 00000 n 
+0000022288 00000 n 
+0000015482 00000 n 
+0000022129 00000 n 
+0000014683 00000 n 
+0000014867 00000 n 
+0000022814 00000 n 
+0000022576 00000 n 
+0000024771 00000 n 
+0000024747 00000 n 
+0000035434 00000 n 
+0000035136 00000 n 
+0000042237 00000 n 
+0000042056 00000 n 
+0000056034 00000 n 
+0000055669 00000 n 
+0000062818 00000 n 
+0000062604 00000 n 
+0000067633 00000 n 
+0000067433 00000 n 
+0000067943 00000 n 
+0000068602 00000 n 
+0000069309 00000 n 
+0000069348 00000 n 
+0000069386 00000 n 
+0000069514 00000 n 
+trailer
+<<
+/Size 123
+/Root 121 0 R
+/Info 122 0 R
+/ID [<D7563326663C85C2C6ABCF269EF11E63> <D7563326663C85C2C6ABCF269EF11E63>]
+>>
+startxref
+69815
+%%EOF

Added: trunk/numpy/doc/swig/doc/testing.txt
===================================================================
--- trunk/numpy/doc/swig/doc/testing.txt	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/doc/testing.txt	2007-09-13 21:43:16 UTC (rev 4034)
@@ -0,0 +1,173 @@
+============================
+Testing the numpy.i Typemaps
+============================
+
+:Author:      Bill Spotz
+:Institution: Sandia National Laboratories
+:Date:        6 April, 2007
+
+.. contents::
+
+Introduction
+============
+
+Writing tests for the ``numpy.i`` `SWIG <http://www.swig.org>`_
+interface file is a combinatorial headache.  At present, 12 different
+data types are supported, each with 23 different argument signatures,
+for a total of 276 typemaps supported "out of the box".  Each of these
+typemaps, in turn, might require several unit tests in order to verify
+expected behavior for both proper and improper inputs.  Currently,
+this results in 1,020 individual unit tests that are performed when
+``make test`` is run in the ``numpy/docs/swig`` subdirectory.
+
+To facilitate this many similar unit tests, some high-level
+programming techniques are employed, including C and `SWIG`_ macros,
+as well as  `python <http://www.python.org>`_ inheritance.  The
+purpose of this document is to describe the testing infrastructure
+employed to verify that the ``numpy.i`` typemaps are working as
+expected.
+
+Testing Organization
+====================
+
+There are three indepedent testing frameworks supported, for one-,
+two-, and three-dimensional arrays respectively.  For one-dimensional
+arrays, there are two C++ files, a header and a source, named::
+
+    Vector.h
+    Vector.cxx
+
+that contain prototypes and code for a variety of functions that have
+one-dimensional arrays as function arguments.  The file::
+
+    Vector.i
+
+is a `SWIG`_ interface file that defines a python module ``Vector``
+that wraps the functions in ``Vector.h`` while utilizing the typemaps
+in ``numpy.i`` to correctly handle the C arrays.
+
+The ``Makefile`` calls ``swig`` to generate ``Vector.py`` and
+``Vector_wrap.cxx``, and also executes the ``setup.py`` script that
+compiles ``Vector_wrap.cxx`` and links together the extension module
+``_Vector.so`` or ``_Vector.dylib``, depending on the platform.  This
+extension module and the proxy file ``Vector.py`` are both placed in a
+subdirectory under the ``build`` directory.
+
+The actual testing takes place with a `python`_ script named::
+
+    testVector.py
+
+that uses the standard `python`_ library module ``unittest``, which
+performs several tests of each function defined in ``Vector.h`` for
+each data type supported.
+
+Two-dimensional arrays are tested in exactly the same manner.  The
+above description applies, but with ``Matrix`` substituted for
+``Vector``.  For three-dimensional tests, substitute ``Tensor`` for
+``Vector``.  For the descriptions that follow, we will reference the
+``Vector`` tests, but the same information applies to ``Matrix`` and
+``Tensor`` tests.
+
+The command ``make test`` will ensure that all of the test software is
+built and then run all three test scripts.
+
+Testing Header Files
+====================
+
+``Vector.h`` is a C++ header file that defines a C macro called
+``TEST_FUNC_PROTOS`` that takes two arguments: ``TYPE``, which is a
+data type name such as ``unsigned int``; and ``SNAME``, which is a
+short name for the same data type with no spaces, e.g. ``uint``.  This
+macro defines several function prototypes that have the prefix
+``SNAME`` and have at least one argument that is an array of type
+``TYPE``.  Those functions that have return arguments return a
+``TYPE`` value.
+
+``TEST_FUNC_PROTOS`` is then implemented for all of the data types
+supported by ``numpy.i``:
+
+  * ``signed char``
+  * ``unsigned char``
+  * ``short``
+  * ``unsigned short``
+  * ``int``
+  * ``unsigned int``
+  * ``long``
+  * ``unsigned long``
+  * ``long long``
+  * ``unsigned long long``
+  * ``float``
+  * ``double``
+
+Testing Source Files
+====================
+
+``Vector.cxx`` is a C++ source file that implements compilable code
+for each of the function prototypes specified in ``Vector.h``.  It
+defines a C macro ``TEST_FUNCS`` that has the same arguments and works
+in the same way as ``TEST_FUNC_PROTOS`` does in ``Vector.h``.
+``TEST_FUNCS`` is implemented for each of the 12 data types as above.
+
+Testing SWIG Interface Files
+============================
+
+``Vector.i`` is a `SWIG`_ interface file that defines python module
+``Vector``.  It follows the conventions for using ``numpy.i`` as
+described in the `numpy.i documentation <numpy_swig.html>`_.  It
+defines a `SWIG`_ macro ``%apply_numpy_typemaps`` that has a single
+argument ``TYPE``.  It uses the `SWIG`_ directive ``%apply`` as
+described in the `numpy.i documentation`_ to apply the provided
+typemaps to the argument signatures found in ``Vector.h``.  This macro
+is then implemented for all of the data types supported by
+``numpy.i``.  It then does a ``%include "Vector.h"`` to wrap all of
+the function prototypes in ``Vector.h`` using the typemaps in
+``numpy.i``.
+
+Testing Python Scripts
+======================
+
+After ``make`` is used to build the testing extension modules,
+``testVector.py`` can be run to execute the tests.  As with other
+scripts that use ``unittest`` to facilitate unit testing,
+``testVector.py`` defines a class that inherits from
+``unittest.TestCase``::
+
+    class VectorTestCase(unittest.TestCase):
+
+However, this class is not run directly.  Rather, it serves as a base
+class to several other python classes, each one specific to a
+particular data type.  The ``VectorTestCase`` class stores two strings
+for typing information:
+
+    **self.typeStr**
+      A string that matches one of the ``SNAME`` prefixes used in
+      ``Vector.h`` and ``Vector.cxx``.  For example, ``"double"``.
+
+    **self.typeCode**
+      A short (typically single-character) string that represents a
+      data type in numpy and corresponds to ``self.typeStr``.  For
+      example, if ``self.typeStr`` is ``"double"``, then
+      ``self.typeCode`` should be ``"d"``.
+
+Each test defined by the ``VectorTestCase`` class extracts the python
+function it is trying to test by accessing the ``Vector`` module's
+dictionary::
+
+    length = Vector.__dict__[self.typeStr + "Length"]
+
+In the case of double precision tests, this will return the python
+function ``Vector.doubleLength``.
+
+We then define a new test case class for each supported data type with
+a short definition such as::
+
+    class doubleTestCase(VectorTestCase):
+        def __init__(self, methodName="runTest"):
+            VectorTestCase.__init__(self, methodName)
+            self.typeStr  = "double"
+            self.typeCode = "d"
+
+Each of these 12 classes is collected into a ``unittest.TestSuite``,
+which is then executed.  Errors and failures are summed together and
+returned as the exit argument.  Any non-zero result indicates that at
+least one test did not pass.

Deleted: trunk/numpy/doc/swig/numpy_swig.html
===================================================================
--- trunk/numpy/doc/swig/numpy_swig.html	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/numpy_swig.html	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,1071 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
-<title>numpy.i: a SWIG Interface File for NumPy</title>
-<meta name="author" content="Bill Spotz" />
-<meta name="date" content="13 September, 2007" />
-<style type="text/css">
-
-/*
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
-:Revision: $Revision: 4224 $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
-  border: 0 }
-
-table.borderless td, table.borderless th {
-  /* Override padding for "table.docutils td" with "! important".
-     The right padding separates the table cells. */
-  padding: 0 0.5em 0 0 ! important }
-
-.first {
-  /* Override more specific margin styles with "! important". */
-  margin-top: 0 ! important }
-
-.last, .with-subtitle {
-  margin-bottom: 0 ! important }
-
-.hidden {
-  display: none }
-
-a.toc-backref {
-  text-decoration: none ;
-  color: black }
-
-blockquote.epigraph {
-  margin: 2em 5em ; }
-
-dl.docutils dd {
-  margin-bottom: 0.5em }
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
-  font-weight: bold }
-*/
-
-div.abstract {
-  margin: 2em 5em }
-
-div.abstract p.topic-title {
-  font-weight: bold ;
-  text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
-  margin: 2em ;
-  border: medium outset ;
-  padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
-  font-weight: bold ;
-  font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
-  color: red ;
-  font-weight: bold ;
-  font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
-   compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
-  margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
-  margin-top: 0.5em }
-*/
-
-div.dedication {
-  margin: 2em 5em ;
-  text-align: center ;
-  font-style: italic }
-
-div.dedication p.topic-title {
-  font-weight: bold ;
-  font-style: normal }
-
-div.figure {
-  margin-left: 2em ;
-  margin-right: 2em }
-
-div.footer, div.header {
-  clear: both;
-  font-size: smaller }
-
-div.line-block {
-  display: block ;
-  margin-top: 1em ;
-  margin-bottom: 1em }
-
-div.line-block div.line-block {
-  margin-top: 0 ;
-  margin-bottom: 0 ;
-  margin-left: 1.5em }
-
-div.sidebar {
-  margin-left: 1em ;
-  border: medium outset ;
-  padding: 1em ;
-  background-color: #ffffee ;
-  width: 40% ;
-  float: right ;
-  clear: right }
-
-div.sidebar p.rubric {
-  font-family: sans-serif ;
-  font-size: medium }
-
-div.system-messages {
-  margin: 5em }
-
-div.system-messages h1 {
-  color: red }
-
-div.system-message {
-  border: medium outset ;
-  padding: 1em }
-
-div.system-message p.system-message-title {
-  color: red ;
-  font-weight: bold }
-
-div.topic {
-  margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
-  margin-top: 0.4em }
-
-h1.title {
-  text-align: center }
-
-h2.subtitle {
-  text-align: center }
-
-hr.docutils {
-  width: 75% }
-
-img.align-left {
-  clear: left }
-
-img.align-right {
-  clear: right }
-
-ol.simple, ul.simple {
-  margin-bottom: 1em }
-
-ol.arabic {
-  list-style: decimal }
-
-ol.loweralpha {
-  list-style: lower-alpha }
-
-ol.upperalpha {
-  list-style: upper-alpha }
-
-ol.lowerroman {
-  list-style: lower-roman }
-
-ol.upperroman {
-  list-style: upper-roman }
-
-p.attribution {
-  text-align: right ;
-  margin-left: 50% }
-
-p.caption {
-  font-style: italic }
-
-p.credits {
-  font-style: italic ;
-  font-size: smaller }
-
-p.label {
-  white-space: nowrap }
-
-p.rubric {
-  font-weight: bold ;
-  font-size: larger ;
-  color: maroon ;
-  text-align: center }
-
-p.sidebar-title {
-  font-family: sans-serif ;
-  font-weight: bold ;
-  font-size: larger }
-
-p.sidebar-subtitle {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-p.topic-title {
-  font-weight: bold }
-
-pre.address {
-  margin-bottom: 0 ;
-  margin-top: 0 ;
-  font-family: serif ;
-  font-size: 100% }
-
-pre.literal-block, pre.doctest-block {
-  margin-left: 2em ;
-  margin-right: 2em ;
-  background-color: #eeeeee }
-
-span.classifier {
-  font-family: sans-serif ;
-  font-style: oblique }
-
-span.classifier-delimiter {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-span.interpreted {
-  font-family: sans-serif }
-
-span.option {
-  white-space: nowrap }
-
-span.pre {
-  white-space: pre }
-
-span.problematic {
-  color: red }
-
-span.section-subtitle {
-  /* font-size relative to parent (h1..h6 element) */
-  font-size: 80% }
-
-table.citation {
-  border-left: solid 1px gray;
-  margin-left: 1px }
-
-table.docinfo {
-  margin: 2em 4em }
-
-table.docutils {
-  margin-top: 0.5em ;
-  margin-bottom: 0.5em }
-
-table.footnote {
-  border-left: solid 1px black;
-  margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
-  padding-left: 0.5em ;
-  padding-right: 0.5em ;
-  vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
-  font-weight: bold ;
-  text-align: left ;
-  white-space: nowrap ;
-  padding-left: 0 }
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
-  font-size: 100% }
-
-tt.docutils {
-  background-color: #eeeeee }
-
-ul.auto-toc {
-  list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="numpy-i-a-swig-interface-file-for-numpy">
-<h1 class="title">numpy.i: a SWIG Interface File for NumPy</h1>
-<table class="docinfo" frame="void" rules="none">
-<col class="docinfo-name" />
-<col class="docinfo-content" />
-<tbody valign="top">
-<tr><th class="docinfo-name">Author:</th>
-<td>Bill Spotz</td></tr>
-<tr class="field"><th class="docinfo-name">Institution:</th><td class="field-body">Sandia National Laboratories</td>
-</tr>
-<tr><th class="docinfo-name">Date:</th>
-<td>13 September, 2007</td></tr>
-</tbody>
-</table>
-<div class="contents topic">
-<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
-<ul class="simple">
-<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
-<li><a class="reference" href="#using-numpy-i" id="id2" name="id2">Using numpy.i</a></li>
-<li><a class="reference" href="#available-typemaps" id="id3" name="id3">Available Typemaps</a><ul>
-<li><a class="reference" href="#input-arrays" id="id4" name="id4">Input Arrays</a></li>
-<li><a class="reference" href="#in-place-arrays" id="id5" name="id5">In-Place Arrays</a></li>
-<li><a class="reference" href="#argout-arrays" id="id6" name="id6">Argout Arrays</a></li>
-<li><a class="reference" href="#output-arrays" id="id7" name="id7">Output Arrays</a></li>
-<li><a class="reference" href="#other-common-types-bool" id="id8" name="id8">Other Common Types: bool</a></li>
-<li><a class="reference" href="#other-common-types-complex" id="id9" name="id9">Other Common Types: complex</a></li>
-</ul>
-</li>
-<li><a class="reference" href="#helper-functions" id="id10" name="id10">Helper Functions</a><ul>
-<li><a class="reference" href="#macros" id="id11" name="id11">Macros</a></li>
-<li><a class="reference" href="#routines" id="id12" name="id12">Routines</a></li>
-</ul>
-</li>
-<li><a class="reference" href="#beyond-the-provided-typemaps" id="id13" name="id13">Beyond the Provided Typemaps</a><ul>
-<li><a class="reference" href="#a-common-example" id="id14" name="id14">A Common Example</a></li>
-<li><a class="reference" href="#other-situations" id="id15" name="id15">Other Situations</a></li>
-<li><a class="reference" href="#a-final-note" id="id16" name="id16">A Final Note</a></li>
-</ul>
-</li>
-<li><a class="reference" href="#summary" id="id17" name="id17">Summary</a></li>
-<li><a class="reference" href="#acknowledgements" id="id18" name="id18">Acknowledgements</a></li>
-</ul>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id1" id="introduction" name="introduction">Introduction</a></h1>
-<p>The Simple Wrapper and Interface Generator (or <a class="reference" href="http://www.swig.org">SWIG</a>) is a powerful tool for generating wrapper
-code for interfacing to a wide variety of scripting languages.
-<a class="reference" href="http://www.swig.org">SWIG</a> can parse header files, and using only the code prototypes,
-create an interface to the target language.  But <a class="reference" href="http://www.swig.org">SWIG</a> is not
-omnipotent.  For example, it cannot know from the prototype:</p>
-<pre class="literal-block">
-double rms(double* seq, int n);
-</pre>
-<p>what exactly <tt class="docutils literal"><span class="pre">seq</span></tt> is.  Is it a single value to be altered in-place?
-Is it an array, and if so what is its length?  Is it input-only?
-Output-only?  Input-output?  <a class="reference" href="http://www.swig.org">SWIG</a> cannot determine these details,
-and does not attempt to do so.</p>
-<p>Making an educated guess, humans can conclude that this is probably a
-routine that takes an input-only array of length <tt class="docutils literal"><span class="pre">n</span></tt> of <tt class="docutils literal"><span class="pre">double</span></tt>
-values called <tt class="docutils literal"><span class="pre">seq</span></tt> and returns the root mean square.  The default
-behavior of <a class="reference" href="http://www.swig.org">SWIG</a>, however, will be to create a wrapper function
-that compiles, but is nearly impossible to use from the scripting
-language in the way the C routine was intended.</p>
-<p>For <a class="reference" href="http://www.python.org">python</a>, the preferred way of handling
-contiguous (or technically, <em>strided</em>) blocks of homogeneous data is
-with the module <a class="reference" href="http://numpy.scipy.org">NumPy</a>, which provides full
-object-oriented access to arrays of data.  Therefore, the most logical
-<a class="reference" href="http://www.python.org">python</a> interface for the <tt class="docutils literal"><span class="pre">rms</span></tt> function would be (including doc
-string):</p>
-<pre class="literal-block">
-def rms(seq):
-    &quot;&quot;&quot;
-    rms: return the root mean square of a sequence
-    rms(numpy.ndarray) -&gt; double
-    rms(list) -&gt; double
-    rms(tuple) -&gt; double
-    &quot;&quot;&quot;
-</pre>
-<p>where <tt class="docutils literal"><span class="pre">seq</span></tt> would be a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array of <tt class="docutils literal"><span class="pre">double</span></tt> values, and its
-length <tt class="docutils literal"><span class="pre">n</span></tt> would be extracted from <tt class="docutils literal"><span class="pre">seq</span></tt> internally before being
-passed to the C routine.  Even better, since <a class="reference" href="http://numpy.scipy.org">NumPy</a> supports
-construction of arrays from arbitrary <a class="reference" href="http://www.python.org">python</a> sequences, <tt class="docutils literal"><span class="pre">seq</span></tt>
-itself could be a nearly arbitrary sequence (so long as each element
-can be converted to a <tt class="docutils literal"><span class="pre">double</span></tt>) and the wrapper code would
-internally convert it to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array before extracting its data
-and length.</p>
-<p><a class="reference" href="http://www.swig.org">SWIG</a> allows these types of conversions to be defined via a
-mechanism called typemaps.  This document provides information on how
-to use <tt class="docutils literal"><span class="pre">numpy.i</span></tt>, a <a class="reference" href="http://www.swig.org">SWIG</a> interface file that defines a series of
-typemaps intended to make the type of array-related conversions
-described above relatively simple to implement.  For example, suppose
-that the <tt class="docutils literal"><span class="pre">rms</span></tt> function prototype defined above was in a header file
-named <tt class="docutils literal"><span class="pre">rms.h</span></tt>.  To obtain the <a class="reference" href="http://www.python.org">python</a> interface discussed above,
-your <a class="reference" href="http://www.swig.org">SWIG</a> interface file would need the following:</p>
-<pre class="literal-block">
-%{
-#define SWIG_FILE_WITH_INIT
-#include &quot;rms.h&quot;
-%}
-
-%include &quot;numpy.i&quot;
-
-%init %{
-import_array();
-%}
-
-%apply (double* IN_ARRAY1, int DIM1) {(double* seq, int n)};
-%include &quot;rms.h&quot;
-</pre>
-<p>Typemaps are keyed off a list of one or more function arguments,
-either by type or by type and name.  We will refer to such lists as
-<em>signatures</em>.  One of the many typemaps defined by <tt class="docutils literal"><span class="pre">numpy.i</span></tt> is used
-above and has the signature <tt class="docutils literal"><span class="pre">(double*</span> <span class="pre">IN_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1)</span></tt>.  The
-argument names are intended to suggest that the <tt class="docutils literal"><span class="pre">double*</span></tt> argument
-is an input array of one dimension and that the <tt class="docutils literal"><span class="pre">int</span></tt> represents
-that dimension.  This is precisely the pattern in the <tt class="docutils literal"><span class="pre">rms</span></tt>
-prototype.</p>
-<p>Most likely, no actual prototypes to be wrapped will have the argument
-names <tt class="docutils literal"><span class="pre">IN_ARRAY1</span></tt> and <tt class="docutils literal"><span class="pre">DIM1</span></tt>.  We use the <tt class="docutils literal"><span class="pre">%apply</span></tt> directive to
-apply the typemap for one-dimensional input arrays of type <tt class="docutils literal"><span class="pre">double</span></tt>
-to the actual prototype used by <tt class="docutils literal"><span class="pre">rms</span></tt>.  Using <tt class="docutils literal"><span class="pre">numpy.i</span></tt>
-effectively, therefore, requires knowing what typemaps are available
-and what they do.</p>
-<p>A <a class="reference" href="http://www.swig.org">SWIG</a> interface file that includes the <a class="reference" href="http://www.swig.org">SWIG</a> directives given
-above will produce wrapper code that looks something like:</p>
-<pre class="literal-block">
- 1 PyObject *_wrap_rms(PyObject *args) {
- 2   PyObject *resultobj = 0;
- 3   double *arg1 = (double *) 0 ;
- 4   int arg2 ;
- 5   double result;
- 6   PyArrayObject *array1 = NULL ;
- 7   int is_new_object1 = 0 ;
- 8   PyObject * obj0 = 0 ;
- 9
-10   if (!PyArg_ParseTuple(args,(char *)&quot;O:rms&quot;,&amp;obj0)) SWIG_fail;
-11   {
-12     array1 = obj_to_array_contiguous_allow_conversion(
-13                  obj0, NPY_DOUBLE, &amp;is_new_object1);
-14     npy_intp size[1] = {
-15       -1
-16     };
-17     if (!array1 || !require_dimensions(array1, 1) ||
-18         !require_size(array1, size, 1)) SWIG_fail;
-19     arg1 = (double*) array1-&gt;data;
-20     arg2 = (int) array1-&gt;dimensions[0];
-21   }
-22   result = (double)rms(arg1,arg2);
-23   resultobj = SWIG_From_double((double)(result));
-24   {
-25     if (is_new_object1 &amp;&amp; array1) Py_DECREF(array1);
-26   }
-27   return resultobj;
-28 fail:
-29   {
-30     if (is_new_object1 &amp;&amp; array1) Py_DECREF(array1);
-31   }
-32   return NULL;
-33 }
-</pre>
-<p>The typemaps from <tt class="docutils literal"><span class="pre">numpy.i</span></tt> are responsible for the following lines
-of code: 12--20, 25 and 30.  Line 10 parses the input to the <tt class="docutils literal"><span class="pre">rms</span></tt>
-function.  From the format string <tt class="docutils literal"><span class="pre">&quot;O:rms&quot;</span></tt>, we can see that the
-argument list is expected to be a single <a class="reference" href="http://www.python.org">python</a> object (specified
-by the <tt class="docutils literal"><span class="pre">O</span></tt> before the colon) and whose pointer is stored in
-<tt class="docutils literal"><span class="pre">obj0</span></tt>.  A number of functions, supplied by <tt class="docutils literal"><span class="pre">numpy.i</span></tt>, are called
-to make and check the (possible) conversion from a generic <a class="reference" href="http://www.python.org">python</a>
-object to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.  These functions are explained in the
-section <a class="reference" href="#helper-functions">Helper Functions</a>, but hopefully their names are
-self-explanatory.  At line 12 we use <tt class="docutils literal"><span class="pre">obj0</span></tt> to construct a <a class="reference" href="http://numpy.scipy.org">NumPy</a>
-array.  At line 17, we check the validity of the result: that it is
-non-null and that it has a single dimension of arbitrary length.  Once
-these states are verified, we extract the data buffer and length in
-lines 19 and 20 so that we can call the underlying C function at line
-22.  Line 25 performs memory management for the case where we have
-created a new array that is no longer needed.</p>
-<p>This code has a significant amount of error handling.  Note the
-<tt class="docutils literal"><span class="pre">SWIG_fail</span></tt> is a macro for <tt class="docutils literal"><span class="pre">goto</span> <span class="pre">fail</span></tt>, refering to the label at
-line 28.  If the user provides the wrong number of arguments, this
-will be caught at line 10.  If construction of the <a class="reference" href="http://numpy.scipy.org">NumPy</a> array
-fails or produces an array with the wrong number of dimensions, these
-errors are caught at line 17.  And finally, if an error is detected,
-memory is still managed correctly at line 30.</p>
-<p>Note that if the C function signature was in a different order:</p>
-<pre class="literal-block">
-double rms(int n, double* seq);
-</pre>
-<p>that <a class="reference" href="http://www.swig.org">SWIG</a> would not match the typemap signature given above with
-the argument list for <tt class="docutils literal"><span class="pre">rms</span></tt>.  Fortunately, <tt class="docutils literal"><span class="pre">numpy.i</span></tt> has a set of
-typemaps with the data pointer given last:</p>
-<pre class="literal-block">
-%apply (int DIM1, double* IN_ARRAY1) {(int n, double* seq)};
-</pre>
-<p>This simply has the effect of switching the definitions of <tt class="docutils literal"><span class="pre">arg1</span></tt>
-and <tt class="docutils literal"><span class="pre">arg2</span></tt> in lines 3 and 4 of the generated code above, and their
-assignments in lines 19 and 20.</p>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id2" id="using-numpy-i" name="using-numpy-i">Using numpy.i</a></h1>
-<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> file is currently located in the <tt class="docutils literal"><span class="pre">numpy/docs/swig</span></tt>
-sub-directory under the <tt class="docutils literal"><span class="pre">numpy</span></tt> installation directory.  Typically,
-you will want to copy it to the directory where you are developing
-your wrappers.  If it is ever adopted by <a class="reference" href="http://www.swig.org">SWIG</a> developers, then it
-will be installed in a standard place where <a class="reference" href="http://www.swig.org">SWIG</a> can find it.</p>
-<p>A simple module that only uses a single <a class="reference" href="http://www.swig.org">SWIG</a> interface file should
-include the following:</p>
-<pre class="literal-block">
-%{
-#define SWIG_FILE_WITH_INIT
-%}
-%include &quot;numpy.i&quot;
-%init %{
-import_array();
-%}
-</pre>
-<p>Within a compiled <a class="reference" href="http://www.python.org">python</a> module, <tt class="docutils literal"><span class="pre">import_array()</span></tt> should only get
-called once.  This could be in a C/C++ file that you have written and
-is linked to the module.  If this is the case, then none of your
-interface files should <tt class="docutils literal"><span class="pre">#define</span> <span class="pre">SWIG_FILE_WITH_INIT</span></tt> or call
-<tt class="docutils literal"><span class="pre">import_array()</span></tt>.  Or, this initialization call could be in a
-wrapper file generated by <a class="reference" href="http://www.swig.org">SWIG</a> from an interface file that has the
-<tt class="docutils literal"><span class="pre">%init</span></tt> block as above.  If this is the case, and you have more than
-one <a class="reference" href="http://www.swig.org">SWIG</a> interface file, then only one interface file should
-<tt class="docutils literal"><span class="pre">#define</span> <span class="pre">SWIG_FILE_WITH_INIT</span></tt> and call <tt class="docutils literal"><span class="pre">import_array()</span></tt>.</p>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id3" id="available-typemaps" name="available-typemaps">Available Typemaps</a></h1>
-<p>The typemap directives provided by <tt class="docutils literal"><span class="pre">numpy.i</span></tt> for arrays of different
-data types, say <tt class="docutils literal"><span class="pre">double</span></tt> and <tt class="docutils literal"><span class="pre">int</span></tt>, and dimensions of different
-types, say <tt class="docutils literal"><span class="pre">int</span></tt> or <tt class="docutils literal"><span class="pre">long</span></tt>, are identical to one another except
-for the C and <a class="reference" href="http://numpy.scipy.org">NumPy</a> type specifications.  The typemaps are
-therefore implemented (typically behind the scenes) via a macro:</p>
-<pre class="literal-block">
-%numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
-</pre>
-<p>that can be invoked for appropriate <tt class="docutils literal"><span class="pre">(DATA_TYPE,</span> <span class="pre">DATA_TYPECODE,</span>
-<span class="pre">DIM_TYPE)</span></tt> triplets.  For example:</p>
-<pre class="literal-block">
-%numpy_typemaps(double, NPY_DOUBLE, int)
-%numpy_typemaps(int,    NPY_INT   , int)
-</pre>
-<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file uses the <tt class="docutils literal"><span class="pre">%numpy_typemaps</span></tt> macro to
-implement typemaps for the following C data types and <tt class="docutils literal"><span class="pre">int</span></tt>
-dimension types:</p>
-<blockquote>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">short</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">int</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">long</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">float</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">double</span></tt></li>
-</ul>
-</blockquote>
-<p>In the following descriptions, we reference a generic <tt class="docutils literal"><span class="pre">DATA_TYPE</span></tt>, which
-could be any of the C data types listed above.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id4" id="input-arrays" name="input-arrays">Input Arrays</a></h2>
-<p>Input arrays are defined as arrays of data that are passed into a
-routine but are not altered in-place or returned to the user.  The
-<a class="reference" href="http://www.python.org">python</a> input array is therefore allowed to be almost any <a class="reference" href="http://www.python.org">python</a>
-sequence (such as a list) that can be converted to the requested type
-of array.  The input array signatures are</p>
-<blockquote>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3</span> <span class="pre">)</span></tt></li>
-</ul>
-</blockquote>
-<p>The first signature listed, <tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY[ANY]</span> <span class="pre">)</span></tt> is for
-one-dimensional arrays with hard-coded dimensions.  Likewise,
-<tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt> is for two-dimensional arrays
-with hard-coded dimensions, and similarly for three-dimensional.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id5" id="in-place-arrays" name="in-place-arrays">In-Place Arrays</a></h2>
-<p>In-place arrays are defined as arrays that are modified in-place.  The
-input values may or may not be used, but the values at the time the
-function returns are significant.  The provided <a class="reference" href="http://www.python.org">python</a> argument
-must therefore be a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array of the required type.  The in-place
-signatures are</p>
-<blockquote>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM2,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM3,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3</span> <span class="pre">)</span></tt></li>
-</ul>
-</blockquote>
-<p>These typemaps now check to make sure that the <tt class="docutils literal"><span class="pre">INPLACE_ARRAY</span></tt>
-arguments use native byte ordering.  If not, an exception is raised.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id6" id="argout-arrays" name="argout-arrays">Argout Arrays</a></h2>
-<p>Argout arrays are arrays that appear in the input arguments in C, but
-are in fact output arrays.  This pattern occurs often when there is
-more than one output variable and the single return argument is
-therefore not sufficient.  In <a class="reference" href="http://www.python.org">python</a>, the convential way to return
-multiple arguments is to pack them into a sequence (tuple, list, etc.)
-and return the sequence.  This is what the argout typemaps do.  If a
-wrapped function that uses these argout typemaps has more than one
-return argument, they are packed into a tuple or list, depending on
-the version of <a class="reference" href="http://www.python.org">python</a>.  The <a class="reference" href="http://www.python.org">python</a> user does not pass these
-arrays in, they simply get returned.  The argout signatures are</p>
-<blockquote>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1,</span>&nbsp; <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span>&nbsp; <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
-</ul>
-</blockquote>
-<p>These are typically used in situations where in C/C++, you would
-allocate a(n) array(s) on the heap, and call the function to fill the
-array(s) values.  In <a class="reference" href="http://www.python.org">python</a>, the arrays are allocated for you and
-returned as new array objects.</p>
-<p>Note that we support <tt class="docutils literal"><span class="pre">DATA_TYPE*</span></tt> argout typemaps in 1D, but not 2D
-or 3D.  This because of a quirk with the <a class="reference" href="http://www.swig.org">SWIG</a> typemap syntax and
-cannot be avoided.  Note that for these types of 1D typemaps, the
-<a class="reference" href="http://www.python.org">python</a> function will take a single argument representing <tt class="docutils literal"><span class="pre">DIM1</span></tt>.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id7" id="output-arrays" name="output-arrays">Output Arrays</a></h2>
-<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file does not support typemaps for output
-arrays, for several reasons.  First, C/C++ return arguments are
-limited to a single value.  This prevents obtaining dimension
-information in a general way.  Second, arrays with hard-coded lengths
-are not permitted as return arguments.  In other words:</p>
-<pre class="literal-block">
-double[3] newVector(double x, double y, double z);
-</pre>
-<p>is not legal C/C++ syntax.  Therefore, we cannot provide typemaps of
-the form:</p>
-<pre class="literal-block">
-%typemap(out) (TYPE[ANY]);
-</pre>
-<p>If you run into a situation where a function or method is returning a
-pointer to an array, your best bet is to write your own version of the
-function to be wrapped, either with <tt class="docutils literal"><span class="pre">%extend</span></tt> for the case of class
-methods or <tt class="docutils literal"><span class="pre">%ignore</span></tt> and <tt class="docutils literal"><span class="pre">%rename</span></tt> for the case of functions.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id8" id="other-common-types-bool" name="other-common-types-bool">Other Common Types: bool</a></h2>
-<p>Note that C++ type <tt class="docutils literal"><span class="pre">bool</span></tt> is not supported in the list in the
-<a class="reference" href="#available-typemaps">Available Typemaps</a> section.  NumPy bools are a single byte, while
-the C++ <tt class="docutils literal"><span class="pre">bool</span></tt> is four bytes (at least on my system).  Therefore:</p>
-<pre class="literal-block">
-%numpy_typemaps(bool, NPY_BOOL, int)
-</pre>
-<p>will result in typemaps that will produce code that reference
-improper data lengths.  You can implement the following macro
-expansion:</p>
-<pre class="literal-block">
-%numpy_typemaps(bool, NPY_UINT, int)
-</pre>
-<p>to fix the data length problem, and <a class="reference" href="#input-arrays">Input Arrays</a> will work fine,
-but <a class="reference" href="#in-place-arrays">In-Place Arrays</a> might fail type-checking.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id9" id="other-common-types-complex" name="other-common-types-complex">Other Common Types: complex</a></h2>
-<p>Typemap conversions for complex floating-point types is also not
-supported automatically.  This is because <a class="reference" href="http://www.python.org">python</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> are
-written in C, which does not have native complex types.  Both
-<a class="reference" href="http://www.python.org">python</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> implement their own (essentially equivalent)
-<tt class="docutils literal"><span class="pre">struct</span></tt> definitions for complex variables:</p>
-<pre class="literal-block">
-/* Python */
-typedef struct {double real; double imag;} Py_complex;
-
-/* NumPy */
-typedef struct {float  real, imag;} npy_cfloat;
-typedef struct {double real, imag;} npy_cdouble;
-</pre>
-<p>We could have implemented:</p>
-<pre class="literal-block">
-%numpy_typemaps(Py_complex , NPY_CDOUBLE, int)
-%numpy_typemaps(npy_cfloat , NPY_CFLOAT , int)
-%numpy_typemaps(npy_cdouble, NPY_CDOUBLE, int)
-</pre>
-<p>which would have provided automatic type conversions for arrays of
-type <tt class="docutils literal"><span class="pre">Py_complex</span></tt>, <tt class="docutils literal"><span class="pre">npy_cfloat</span></tt> and <tt class="docutils literal"><span class="pre">npy_cdouble</span></tt>.  However, it
-seemed unlikely that there would be any independent (non-<a class="reference" href="http://www.python.org">python</a>,
-non-<a class="reference" href="http://numpy.scipy.org">NumPy</a>) application code that people would be using <a class="reference" href="http://www.swig.org">SWIG</a> to
-generate a <a class="reference" href="http://www.python.org">python</a> interface to, that also used these definitions
-for complex types.  More likely, these application codes will define
-their own complex types, or in the case of C++, use <tt class="docutils literal"><span class="pre">std::complex</span></tt>.
-Assuming these data structures are compatible with <a class="reference" href="http://www.python.org">python</a> and
-<a class="reference" href="http://numpy.scipy.org">NumPy</a> complex types, <tt class="docutils literal"><span class="pre">%numpy_typemap</span></tt> expansions as above (with
-the user's complex type substituted for the first argument) should
-work.</p>
-</div>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id10" id="helper-functions" name="helper-functions">Helper Functions</a></h1>
-<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> file containes several macros and routines that it
-uses internally to build its typemaps.  However, these functions may
-be useful elsewhere in your interface file.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id11" id="macros" name="macros">Macros</a></h2>
-<blockquote>
-<dl class="docutils">
-<dt><strong>is_array(a)</strong></dt>
-<dd>Evaluates as true if <tt class="docutils literal"><span class="pre">a</span></tt> is non-<tt class="docutils literal"><span class="pre">NULL</span></tt> and can be cast to a
-<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_type(a)</strong></dt>
-<dd>Evaluates to the integer data type code of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can
-be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_numdims(a)</strong></dt>
-<dd>Evaluates to the integer number of dimensions of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming
-<tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_dimensions(a)</strong></dt>
-<dd>Evaluates to an array of type <tt class="docutils literal"><span class="pre">npy_intp</span></tt> and length
-<tt class="docutils literal"><span class="pre">array_numdims(a)</span></tt>, giving the lengths of all of the dimensions
-of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_size(a,i)</strong></dt>
-<dd>Evaluates to the <tt class="docutils literal"><span class="pre">i</span></tt>-th dimension size of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt>
-can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_data(a)</strong></dt>
-<dd>Evaluates to a pointer of type <tt class="docutils literal"><span class="pre">void*</span></tt> that points to the data
-buffer of <tt class="docutils literal"><span class="pre">a</span></tt>, assuming <tt class="docutils literal"><span class="pre">a</span></tt> can be cast to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>.</dd>
-<dt><strong>array_is_contiguous(a)</strong></dt>
-<dd>Evaluates as true if <tt class="docutils literal"><span class="pre">a</span></tt> is a contiguous array.  Equivalent to
-<tt class="docutils literal"><span class="pre">(PyArray_ISCONTIGUOUS(a))</span></tt>.</dd>
-<dt><strong>array_is_native(a)</strong></dt>
-<dd>Evaluates as true if the data buffer of <tt class="docutils literal"><span class="pre">a</span></tt> uses native byte
-order.  Equivalent to <tt class="docutils literal"><span class="pre">(PyArray_ISNOTSWAPPED(a))</span></tt>.</dd>
-</dl>
-</blockquote>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id12" id="routines" name="routines">Routines</a></h2>
-<blockquote>
-<p><strong>pytype_string()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">char*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">py_obj</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
-</ul>
-<p>Return a string describing the type of <tt class="docutils literal"><span class="pre">py_obj</span></tt>.</p>
-</blockquote>
-<p><strong>typecode_string()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">char*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> integer typecode.</li>
-</ul>
-<p>Return a string describing the type corresponding to the <a class="reference" href="http://numpy.scipy.org">NumPy</a>
-<tt class="docutils literal"><span class="pre">typecode</span></tt>.</p>
-</blockquote>
-<p><strong>type_match()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">actual_type</span></tt>, the <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">desired_type</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode.</li>
-</ul>
-<p>Make sure that <tt class="docutils literal"><span class="pre">actual_type</span></tt> is compatible with
-<tt class="docutils literal"><span class="pre">desired_type</span></tt>.  For example, this allows character and
-byte types, or int and long types, to match.  This is now
-equivalent to <tt class="docutils literal"><span class="pre">PyArray_EquivTypenums()</span></tt>.</p>
-</blockquote>
-<p><strong>obj_to_array_no_conversion()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode.</li>
-</ul>
-<p>Cast <tt class="docutils literal"><span class="pre">input</span></tt> to a <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> if legal, and ensure that
-it is of type <tt class="docutils literal"><span class="pre">typecode</span></tt>.  If <tt class="docutils literal"><span class="pre">input</span></tt> cannot be cast, or the
-<tt class="docutils literal"><span class="pre">typecode</span></tt> is wrong, set a <a class="reference" href="http://www.python.org">python</a> error and return <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
-</blockquote>
-<p><strong>obj_to_array_allow_conversion()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of the resulting
-array.</li>
-<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
-performed, else 1.</li>
-</ul>
-<p>Convert <tt class="docutils literal"><span class="pre">input</span></tt> to a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array with the given <tt class="docutils literal"><span class="pre">typecode</span></tt>.
-On success, return a valid <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> with the correct
-type.  On failure, the <a class="reference" href="http://www.python.org">python</a> error string will be set and the
-routine returns <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
-</blockquote>
-<p><strong>make_contiguous()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
-performed, else 1.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">min_dims</span></tt>, minimum allowable dimensions.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">max_dims</span></tt>, maximum allowable dimensions.</li>
-</ul>
-<p>Check to see if <tt class="docutils literal"><span class="pre">ary</span></tt> is contiguous.  If so, return the input
-pointer and flag it as not a new object.  If it is not contiguous,
-create a new <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> using the original data, flag it
-as a new object and return the pointer.</p>
-</blockquote>
-<p><strong>obj_to_array_contiguous_allow_conversion()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">input</span></tt>, a general <a class="reference" href="http://www.python.org">python</a> object.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">typecode</span></tt>, the desired <a class="reference" href="http://numpy.scipy.org">NumPy</a> typecode of the resulting
-array.</li>
-<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">is_new_object</span></tt>, returns a value of 0 if no conversion
-performed, else 1.</li>
-</ul>
-<p>Convert <tt class="docutils literal"><span class="pre">input</span></tt> to a contiguous <tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt> of the
-specified type.  If the input object is not a contiguous
-<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>, a new one will be created and the new object
-flag will be set.</p>
-</blockquote>
-<p><strong>require_contiguous()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-</ul>
-<p>Test whether <tt class="docutils literal"><span class="pre">ary</span></tt> is contiguous.  If so, return 1.  Otherwise,
-set a <a class="reference" href="http://www.python.org">python</a> error and return 0.</p>
-</blockquote>
-<p><strong>require_native()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArray_Object*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-</ul>
-<p>Require that <tt class="docutils literal"><span class="pre">ary</span></tt> is not byte-swapped.  If the array is not
-byte-swapped, return 1.  Otherwise, set a <a class="reference" href="http://www.python.org">python</a> error and
-return 0.</p>
-</blockquote>
-<p><strong>require_dimensions()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">exact_dimensions</span></tt>, the desired number of dimensions.</li>
-</ul>
-<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have a specified number of dimensions.  If the
-array has the specified number of dimensions, return 1.
-Otherwise, set a <a class="reference" href="http://www.python.org">python</a> error and return 0.</p>
-</blockquote>
-<p><strong>require_dimensions_n()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-<li><tt class="docutils literal"><span class="pre">int*</span> <span class="pre">exact_dimensions</span></tt>, an array of integers representing
-acceptable numbers of dimensions.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">n</span></tt>, the length of <tt class="docutils literal"><span class="pre">exact_dimensions</span></tt>.</li>
-</ul>
-<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have one of a list of specified number of
-dimensions.  If the array has one of the specified number of
-dimensions, return 1.  Otherwise, set the <a class="reference" href="http://www.python.org">python</a> error string
-and return 0.</p>
-</blockquote>
-<p><strong>require_size()</strong></p>
-<blockquote>
-<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
-<p>Arguments:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
-<li><tt class="docutils literal"><span class="pre">npy_int*</span> <span class="pre">size</span></tt>, an array representing the desired lengths of
-each dimension.</li>
-<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">n</span></tt>, the length of <tt class="docutils literal"><span class="pre">size</span></tt>.</li>
-</ul>
-<p>Require <tt class="docutils literal"><span class="pre">ary</span></tt> to have a specified shape.  If the array has the
-specified shape, return 1.  Otherwise, set the <a class="reference" href="http://www.python.org">python</a> error
-string and return 0.</p>
-</blockquote>
-</blockquote>
-</div>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id13" id="beyond-the-provided-typemaps" name="beyond-the-provided-typemaps">Beyond the Provided Typemaps</a></h1>
-<p>There are many C or C++ array/<a class="reference" href="http://numpy.scipy.org">NumPy</a> array situations not covered by
-a simple <tt class="docutils literal"><span class="pre">%include</span> <span class="pre">&quot;numpy.i&quot;</span></tt> and subsequent <tt class="docutils literal"><span class="pre">%apply</span></tt> directives.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id14" id="a-common-example" name="a-common-example">A Common Example</a></h2>
-<p>Consider a reasonable prototype for a dot product function:</p>
-<pre class="literal-block">
-double dot(int len, double* vec1, double* vec2);
-</pre>
-<p>The <a class="reference" href="http://www.python.org">python</a> interface that we want is:</p>
-<pre class="literal-block">
-def dot(vec1, vec2):
-    &quot;&quot;&quot;
-    dot(PyObject,PyObject) -&gt; double
-    &quot;&quot;&quot;
-</pre>
-<p>The problem here is that there is one dimension argument and two array
-arguments, and our typemaps are set up for dimensions that apply to a
-single array (in fact, <a class="reference" href="http://www.swig.org">SWIG</a> does not provide a mechanism for
-associating <tt class="docutils literal"><span class="pre">len</span></tt> with <tt class="docutils literal"><span class="pre">vec2</span></tt> that takes two <a class="reference" href="http://www.python.org">python</a> input
-arguments).  The recommended solution is the following:</p>
-<pre class="literal-block">
-%apply (int DIM1, double* IN_ARRAY1) {(int len1, double* vec1),
-                                      (int len2, double* vec2)}
-%rename (dot) my_dot;
-%exception my_dot {
-    $action
-    if (PyErr_Occurred()) SWIG_fail;
-}
-%inline %{
-double my_dot(int len1, double* vec1, int len2, double* vec2) {
-    if (len1 != len2) {
-        PyErr_Format(PyExc_ValueError,
-                     &quot;Arrays of lengths (%d,%d) given&quot;,
-                     len1, len2);
-        return 0.0;
-    }
-    return dot(len1, vec1, vec2);
-}
-%}
-</pre>
-<p>If the header file that contains the prototype for <tt class="docutils literal"><span class="pre">double</span> <span class="pre">dot()</span></tt>
-also contains other prototypes that you want to wrap, so that you need
-to <tt class="docutils literal"><span class="pre">%include</span></tt> this header file, then you will also need a <tt class="docutils literal"><span class="pre">%ignore</span>
-<span class="pre">dot;</span></tt> directive, placed after the <tt class="docutils literal"><span class="pre">%rename</span></tt> and before the
-<tt class="docutils literal"><span class="pre">%include</span></tt> directives.  Or, if the function in question is a class
-method, you will want to use <tt class="docutils literal"><span class="pre">%extend</span></tt> rather than <tt class="docutils literal"><span class="pre">%inline</span></tt> in
-addition to <tt class="docutils literal"><span class="pre">%ignore</span></tt>.</p>
-<p><strong>A note on error handling:</strong> Note that <tt class="docutils literal"><span class="pre">my_dot</span></tt> returns a
-<tt class="docutils literal"><span class="pre">double</span></tt> but that it can also raise a <a class="reference" href="http://www.python.org">python</a> error.  The
-resulting wrapper function will return a <a class="reference" href="http://www.python.org">python</a> float
-representation of 0.0 when the vector lengths do not match.  Since
-this is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, the <a class="reference" href="http://www.python.org">python</a> interpreter will not know to check
-for an error.  For this reason, we add the <tt class="docutils literal"><span class="pre">%exception</span></tt> directive
-above for <tt class="docutils literal"><span class="pre">my_dot</span></tt> to get the behavior we want (note that
-<tt class="docutils literal"><span class="pre">$action</span></tt> is a macro that gets expanded to a valid call to
-<tt class="docutils literal"><span class="pre">my_dot</span></tt>).  In general, you will probably want to write a <a class="reference" href="http://www.swig.org">SWIG</a>
-macro to perform this task.</p>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id15" id="other-situations" name="other-situations">Other Situations</a></h2>
-<p>There are other wrapping situations in which <tt class="docutils literal"><span class="pre">numpy.i</span></tt> may be
-helpful when you encounter them.</p>
-<blockquote>
-<ul>
-<li><p class="first">In some situations, it is possible that you could use the
-<tt class="docutils literal"><span class="pre">%numpy_templates</span></tt> macro to implement typemaps for your own
-types.  See the <a class="reference" href="#other-common-types-bool">Other Common Types: bool</a> or <a class="reference" href="#other-common-types-complex">Other Common
-Types: complex</a> sections for examples.  Another situation is if
-your dimensions are of a type other than <tt class="docutils literal"><span class="pre">int</span></tt> (say <tt class="docutils literal"><span class="pre">long</span></tt> for
-example):</p>
-<pre class="literal-block">
-%numpy_typemaps(double, NPY_DOUBLE, long)
-</pre>
-</li>
-<li><p class="first">You can use the code in <tt class="docutils literal"><span class="pre">numpy.i</span></tt> to write your own typemaps.
-For example, if you had a four-dimensional array as a function
-argument, you could cut-and-paste the appropriate
-three-dimensional typemaps into your interface file.  The
-modifications for the fourth dimension would be trivial.</p>
-</li>
-<li><p class="first">Sometimes, the best approach is to use the <tt class="docutils literal"><span class="pre">%extend</span></tt> directive
-to define new methods for your classes (or overload existing ones)
-that take a <tt class="docutils literal"><span class="pre">PyObject*</span></tt> (that either is or can be converted to a
-<tt class="docutils literal"><span class="pre">PyArrayObject*</span></tt>) instead of a pointer to a buffer.  In this
-case, the helper routines in <tt class="docutils literal"><span class="pre">numpy.i</span></tt> can be very useful.</p>
-</li>
-<li><p class="first">Writing typemaps can be a bit nonintuitive.  If you have specific
-questions about writing <a class="reference" href="http://www.swig.org">SWIG</a> typemaps for <a class="reference" href="http://numpy.scipy.org">NumPy</a>, the
-developers of <tt class="docutils literal"><span class="pre">numpy.i</span></tt> do monitor the
-<a class="reference" href="mailto:Numpy-discussion&#64;scipy.org">Numpy-discussion</a> and
-<a class="reference" href="mailto:Swig-user&#64;lists.sourceforge.net">Swig-user</a> mail lists.</p>
-</li>
-</ul>
-</blockquote>
-</div>
-<div class="section">
-<h2><a class="toc-backref" href="#id16" id="a-final-note" name="a-final-note">A Final Note</a></h2>
-<p>When you use the <tt class="docutils literal"><span class="pre">%apply</span></tt> directive, as is usually necessary to use
-<tt class="docutils literal"><span class="pre">numpy.i</span></tt>, it will remain in effect until you tell <a class="reference" href="http://www.swig.org">SWIG</a> that it
-shouldn't be.  If the arguments to the functions or methods that you
-are wrapping have common names, such as <tt class="docutils literal"><span class="pre">length</span></tt> or <tt class="docutils literal"><span class="pre">vector</span></tt>,
-these typemaps may get applied in situations you do not expect or
-want.  Therefore, it is always a good idea to add a <tt class="docutils literal"><span class="pre">%clear</span></tt>
-directive after you are done with a specific typemap:</p>
-<pre class="literal-block">
-%apply (double* IN_ARRAY1, int DIM1) {(double* vector, int length)}
-%include &quot;my_header.h&quot;
-%clear (double* vector, int length);
-</pre>
-<p>In general, you should target these typemap signatures specifically
-where you want them, and then clear them after you are done.</p>
-</div>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id17" id="summary" name="summary">Summary</a></h1>
-<p>Out of the box, <tt class="docutils literal"><span class="pre">numpy.i</span></tt> provides typemaps that support conversion
-between <a class="reference" href="http://numpy.scipy.org">NumPy</a> arrays and C arrays:</p>
-<blockquote>
-<ul class="simple">
-<li>That can be one of 12 different scalar types: <tt class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></tt>,
-<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt>, <tt class="docutils literal"><span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">int</span></tt>,
-<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt>, <tt class="docutils literal"><span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt>,
-<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">float</span></tt> and <tt class="docutils literal"><span class="pre">double</span></tt>.</li>
-<li>That support 23 different argument signatures for each data type,
-including:<ul>
-<li>One-dimensional, two-dimensional and three-dimensional arrays.</li>
-<li>Input-only, in-place, and argout behavior.</li>
-<li>Hard-coded dimensions, data-buffer-then-dimensions
-specification, and dimensions-then-data-buffer specification.</li>
-</ul>
-</li>
-</ul>
-</blockquote>
-<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file also provides additional tools for
-wrapper developers, including:</p>
-<blockquote>
-<ul class="simple">
-<li>A <a class="reference" href="http://www.swig.org">SWIG</a> macro (<tt class="docutils literal"><span class="pre">%numpy_typemaps</span></tt>) with three arguments for
-implementing the 23 argument signatures for the user's choice of
-(1) C data type, (2) <a class="reference" href="http://numpy.scipy.org">NumPy</a> data type (assuming they match), and
-(3) dimension type.</li>
-<li>Seven C macros and eleven C functions that can be used to write
-specialized typemaps, extensions, or inlined functions that handle
-cases not covered by the provided typemaps.</li>
-</ul>
-</blockquote>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id18" id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
-<p>Many people have worked to glue <a class="reference" href="http://www.swig.org">SWIG</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> together (as well
-as <a class="reference" href="http://www.swig.org">SWIG</a> and the predecessors of <a class="reference" href="http://numpy.scipy.org">NumPy</a>, Numeric and numarray).
-The effort to standardize this work into <tt class="docutils literal"><span class="pre">numpy.i</span></tt> began at the 2005
-<a class="reference" href="http://scipy.org">SciPy</a> Conference with a conversation between
-Fernando Perez and myself.  Fernando collected helper functions and
-typemaps from Michael Hunter, Anna Omelchenko and Michael Sanner.
-Sebastian Hasse has also provided additional error checking and use
-cases.  The work of these contributors has made this end result
-possible.</p>
-</div>
-</div>
-<div class="footer">
-<hr class="footer" />
-Generated on: 2007-09-13 17:08 UTC.
-Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
-
-</div>
-</body>
-</html>

Deleted: trunk/numpy/doc/swig/numpy_swig.pdf
===================================================================
--- trunk/numpy/doc/swig/numpy_swig.pdf	2007-09-13 17:53:08 UTC (rev 4033)
+++ trunk/numpy/doc/swig/numpy_swig.pdf	2007-09-13 21:43:16 UTC (rev 4034)
@@ -1,2545 +0,0 @@
-%PDF-1.4
-5 0 obj
-<< /S /GoTo /D (contents.0) >>
-endobj
-8 0 obj
-(Contents)
-endobj
-9 0 obj
-<< /S /GoTo /D (introduction.0) >>
-endobj
-12 0 obj
-(Introduction)
-endobj
-13 0 obj
-<< /S /GoTo /D (using-numpy-i.0) >>
-endobj
-16 0 obj
-(Using numpy.i)
-endobj
-17 0 obj
-<< /S /GoTo /D (available-typemaps.0) >>
-endobj
-20 0 obj
-(Available Typemaps)
-endobj
-21 0 obj
-<< /S /GoTo /D (input-arrays.1) >>
-endobj
-24 0 obj
-(Input Arrays)
-endobj
-25 0 obj
-<< /S /GoTo /D (in-place-arrays.1) >>
-endobj
-28 0 obj
-(In-Place Arrays)
-endobj
-29 0 obj
-<< /S /GoTo /D (argout-arrays.1) >>
-endobj
-32 0 obj
-(Argout Arrays)
-endobj
-33 0 obj
-<< /S /GoTo /D (output-arrays.1) >>
-endobj
-36 0 obj
-(Output Arrays)
-endobj
-37 0 obj
-<< /S /GoTo /D (other-common-types-bool.1) >>
-endobj
-40 0 obj
-(Other Common Types: bool)
-endobj
-41 0 obj
-<< /S /GoTo /D (other-common-types-complex.1) >>
-endobj
-44 0 obj
-(Other Common Types: complex)
-endobj
-45 0 obj
-<< /S /GoTo /D (helper-functions.0) >>
-endobj
-48 0 obj
-(Helper Functions)
-endobj
-49 0 obj
-<< /S /GoTo /D (macros.1) >>
-endobj
-52 0 obj
-(Macros)
-endobj
-53 0 obj
-<< /S /GoTo /D (routines.1) >>
-endobj
-56 0 obj
-(Routines)
-endobj
-57 0 obj
-<< /S /GoTo /D (beyond-the-provided-typemaps.0) >>
-endobj
-60 0 obj
-(Beyond the Provided Typemaps)
-endobj
-61 0 obj
-<< /S /GoTo /D (a-common-example.1) >>
-endobj
-64 0 obj
-(A Common Example)
-endobj
-65 0 obj
-<< /S /GoTo /D (other-situations.1) >>
-endobj
-68 0 obj
-(Other Situations)
-endobj
-69 0 obj
-<< /S /GoTo /D (a-final-note.1) >>
-endobj
-72 0 obj
-(A Final Note)
-endobj
-73 0 obj
-<< /S /GoTo /D (summary.0) >>
-endobj
-76 0 obj
-(Summary)
-endobj
-77 0 obj
-<< /S /GoTo /D (acknowledgements.0) >>
-endobj
-80 0 obj
-(Acknowledgements)
-endobj
-81 0 obj
-<< /S /GoTo /D [82 0 R  /Fit ] >>
-endobj
-84 0 obj <<
-/Length 1941      
-/Filter /FlateDecode
->>
-stream
-xÚ½YYsE~÷¯ØG™ÊN¦çžð‡Ø@AH%¦ò@xòÚ¸°,cÉ9øõtÏ¥ÑîJ‚*—¼Wït÷×çôBÃñ«˜â^7ÖyfŒ†f6?âÍ>;;‚D£”aJ‹#O[i“Ü«¦5žYétM5 %˜ÖÆ5­ϼ0†ÈOΏŸJ߀e´jÎ/P–iéPÄLw~ñÛäöXØÉÃ1LæwtöñØú	ÃËkü=9nW“éq+9Ÿ¼Æ;oð÷þÎèV<
¬ºûK<ŸâoÖÅg§´Â
þÒ5=_àï>^¾<_~<þýüÇ£ççEÌj¡£ð¼ß©{&nkê ºR
*i„	šsOA6F+f-ÅŸ’ «?‹T(ÇãSW½%
ZäD䈅ð`&'Y­ÔCŠ€Ê>3“Å
-Oÿ‰ël°oóJ-H敵aÁn‘|I2\¯‚(׋€æ@-™ÔÖr *øNi‰‹d,²’”“ÓUº± §Ó$æOÓ?¢÷t“HÂÑuË1™3×
™¿/wC…b\ù
-+
-& £L$kwG:ÒÉœ&JÓ‘¢„‚s;"hN… j&•Á³dµÛc|qÕÅòïJ9µ•ÈMF‚-„‚–㑨˜wPžÑû«ôèUí…žI0xR3
-^XC”©
-Qrá,÷A¥¡!ƒ’CÌ*Cö4´ŽãˆÊ.ÕZ‹=`td%¿ºþ(–v량Hÿ_—×ÁŒ0¹Š®ðÈéÈa:r*¥£>ú§oj¦œeàÄ!!7Ün2QÈC™LsZÁ8]§Mä<fåœdºùô.ä>Î1¢Z{ǘŒ†EÃ0/þ,4@ «O«1{H[•¤ŽBV¨J^¼K1°Š¹áé}ŠiFc€µXP¸šå0$SoAcVãòë# ¼E–FîF PÚ—Ù!fÉþØthnESsVMÎÀdàÊÃò {@ÈT!,HÓ«Åÿt‡)_ÕÔ‡Q  Úþ€ú=šö{ôÏT¤ÿ/%>)PGkÐÆ5ç!؆*}H6Å í2UƁ0 F­» <[ÌçXÃy??.©ùP25±¢.núø¥˜óÎ4µD#­5‚çÄAÂôm¬Ö{ÊTŸƒÐl1¿Ëµæà  ,¯{ë¦hÖWÔÝ®¾*ÌîVGKl­¯…ˆàù¾»Yëžà9¥¶â!u³†y¤°  €©´f=,,
-«.»ø¢ž"=ö€BíÉ)…Š ø9”“ÐiÕÔ¸4^½î@M굫ºsjOÂ(T¤ä«EN›¹µìF”Å:iq¿R¯?Z',‡Ã9·Ô–yíwï
-){Ò}¤6y7‚Á·K*ˆ]Ã˲·À,ð.¡B[Œîb<=li0…DÈœÓM-äHÆäLØ}
÷—ué—jOoQ¨Bo¡©“äsÔù…Ç:' ÁŒâª©9 öS¨CvRƽܗ	2Õ¶šñ:9Ç*uÓ=yó„•Ü55ûa¯‰
({H4¸Á-±Ü—22Uå§UÎÈs“aªÓ
‹‚c†;hjnC_à
-;mg—A¶tB¸Ý¤‘µçó)¥‰Á< u}S¯<PÔfœ×Ô9J.wO
-Q°ñŒòÜ_ɼ!¾¿‰i÷ݼ+“˜‘f˜ÜUÕ\Gz¡D5NŒL*#H¼<–BRlÄ.%NR%Fß=ö¬x¼x˜­®#ã@Ž€9r>zñ<åzád‰à*‡…ûo¨Ý	†»Vˆž¥"ž‹js—y÷Itgt÷6?ÊÄðÚ[®y¼ìgLÜŽráe#8`¸äíØVóú¶~a`ßá²Ù‘Ãxú¬/:†!ÙoCŒþÔ=Síf>\Œ˜#Á¸¡¥ƒÊÓáàqô¯`û§ÈôÖªLÿéÎeðUøjfFޏšV`ƒ_æ‰!¡f4&w–Ò1`×Ñ÷Ö¬|Zzè5KÏ‹¼x:‡÷¥¯ˆ×qªUfÌ«8Í<—ñ¸œåÇw½Ž-p!pDôÏ«P®º%ÚV2-¤£ò¹e«‡ò¶¢±qoÑ=þ…Mñ`7eè»W&ÚÍY!gÊ„5çb #˜¤ËrˆýéE*âDò–ƒÊÁ¿|DT®
-q|nÙ3f¨ï7!ùšuÆxìƒÁm:͆sá™
Ò…Nsÿƒ¯w$Œ³“`ónºZ¿´³f«ë%²"¶nqóe€å
-Ý,,u“?ŽdÇa¸åjr·}ûi̧ÆÛ0C4^»}N”éÛú…¡-Ëîq#‹iMZÓcðq0QíaŽÕ78f“yNNÚm4R€k1¿-X¾d­b/lšCžÀWº^³ü(úŠä–IgaÓW®×³«Y0KfNw6KrìÄ.³+ÍãuoO³ÛÓžlûDãŸÐP+¥rq"”—ˆ¥ÝŒ4…Š”¿HߪÈõªÙ>æ— Ã<}LEtœ&ßÄ7–éòïøÝŒnå`^ÅËÛ¸àáÛm@x‡»xë·
2M[
+°Ç­±Â"˜‰HQè³Ó‚c 1Æï_‰–}endstream
-endobj
-82 0 obj <<
-/Type /Page
-/Contents 84 0 R
-/Resources 83 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 121 0 R 122 0 R 123 0 R ]
->> endobj
-98 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 572.1561 154.7972 581.0627]
-/Subtype /Link
-/A << /S /GoTo /D (introduction) >>
->> endobj
-99 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 550.2982 162.5882 560.9481]
-/Subtype /Link
-/A << /S /GoTo /D (using-numpy-i) >>
->> endobj
-100 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 530.3729 189.1283 541.2121]
-/Subtype /Link
-/A << /S /GoTo /D (available-typemaps) >>
->> endobj
-101 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 510.4476 178.7476 521.0976]
-/Subtype /Link
-/A << /S /GoTo /D (input-arrays) >>
->> endobj
-102 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 494.5074 190.5034 505.3466]
-/Subtype /Link
-/A << /S /GoTo /D (in-place-arrays) >>
->> endobj
-103 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 478.5672 185.4226 489.2171]
-/Subtype /Link
-/A << /S /GoTo /D (argout-arrays) >>
->> endobj
-104 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 462.6269 186.7573 473.2769]
-/Subtype /Link
-/A << /S /GoTo /D (output-arrays) >>
->> endobj
-105 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 446.6867 245.8948 457.5259]
-/Subtype /Link
-/A << /S /GoTo /D (other-common-types-bool) >>
->> endobj
-106 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 430.7465 262.7715 441.5857]
-/Subtype /Link
-/A << /S /GoTo /D (other-common-types-complex) >>
->> endobj
-107 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 410.8212 174.6126 421.6604]
-/Subtype /Link
-/A << /S /GoTo /D (helper-functions) >>
->> endobj
-108 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 392.8286 153.5624 401.5459]
-/Subtype /Link
-/A << /S /GoTo /D (macros) >>
->> endobj
-109 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 376.8884 160.5759 385.6056]
-/Subtype /Link
-/A << /S /GoTo /D (routines) >>
->> endobj
-110 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 355.0304 240.5847 365.8697]
-/Subtype /Link
-/A << /S /GoTo /D (beyond-the-provided-typemaps) >>
->> endobj
-111 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 335.1051 213.6367 345.9444]
-/Subtype /Link
-/A << /S /GoTo /D (a-common-example) >>
->> endobj
-112 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 321.0976 194.7271 330.0042]
-/Subtype /Link
-/A << /S /GoTo /D (other-situations) >>
->> endobj
-113 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 305.1574 179.6044 314.0639]
-/Subtype /Link
-/A << /S /GoTo /D (a-final-note) >>
->> endobj
-114 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 283.2994 142.0953 293.9494]
-/Subtype /Link
-/A << /S /GoTo /D (summary) >>
->> endobj
-115 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 263.3741 182.5135 274.2134]
-/Subtype /Link
-/A << /S /GoTo /D (acknowledgements) >>
->> endobj
-121 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [288.033 198.1192 317.1934 209.9797]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-122 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [312.5275 186.722 341.6879 197.5612]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-123 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [350.8735 174.7668 380.0339 185.6061]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-85 0 obj <<
-/D [82 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-86 0 obj <<
-/D [82 0 R /XYZ 74.4095 771.7323 null]
->> endobj
-96 0 obj <<
-/D [82 0 R /XYZ 74.4095 613.3264 null]
->> endobj
-6 0 obj <<
-/D [82 0 R /XYZ 74.4095 613.3264 null]
->> endobj
-97 0 obj <<
-/D [82 0 R /XYZ 74.4095 585.1076 null]
->> endobj
-116 0 obj <<
-/D [82 0 R /XYZ 74.4095 254.4078 null]
->> endobj
-10 0 obj <<
-/D [82 0 R /XYZ 74.4095 254.4078 null]
->> endobj
-120 0 obj <<
-/D [82 0 R /XYZ 74.4095 213.5613 null]
->> endobj
-83 0 obj <<
-/Font << /F39 89 0 R /F44 92 0 R /F8 95 0 R /F51 119 0 R /F56 126 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-147 0 obj <<
-/Length 4012      
-/Filter /FlateDecode
->>
-stream
-xÚ½kÜ¶ñ»Å¢E½ÂRÄ7™
Ú4NS4I‘^QMQÈ»ºóÖ··ÎéÇòß;Cr(RÔ®Î
Pòê1‡óâÌÛtðmŒleçÔÆX×j­Øfw|ÖmnáÛçÏX„‘R·Ri_Å»ÖjÍ7MŽä÷×Ï>za7®ušëÍõ;	%äÆhÖíÌæzÿÏí»WWlÛ?^5B™íðÃßö»Gxu×û«]ÿé£JgH”kQ&ÆÑ#@
p} óÙ˜k9, hl¯ÅÌö‹1̆ïâÄ}øñÕ=\·w1¼´ÛﯔÞöøâ-½4[$ñ¾¿¼j¸¦÷?øß~š	Ñ6oâÊúÝðINŒˆ¹î#.DWÅ
0ÃÊísø¢9B°m†û&#EOuXy>>·6­“\lÆZ§÷Œò÷,@HD„Já¡lâ›–õ&òG4§û´{iì×À*ð5Ê¥±Ÿà"ž}vÄP0ÑZ«H´k-“*È*~z¸0ßdR›à›|@%µ5ZdÓ_‚¿ÃõÅç’µvFÆLeÔÊäR¶œY^N¾óû×)îÄw-‰Ý‘6f_i'‡Ñ¿°xˆüQ²˜›$+"‰Ù¢Äp
Tt֐È0ON"Dp”º(ÿÇ7QPà-i‹„oÇSëÑ2	r(\)‡_"u¯á¿¤’@‰^9¸å¨ZAv~JÔ4nÊëèˆËáŽÃª¹õPG¿°1àØ’—¿éö>°Aˆe¨EIϧ[áåz‰C^&™öp}€ñßIx³
:7,hâdDñ¢Ê…ÍYdc¦`^¹æ6Å¿<Ý௭t¿¶¾uÁéhTïk«æ¿ã<~¼5
-P'¦-¡âÖB|j´Bµ¦“dõgX$e»zGöËŽÃéή;pfÓT¤ȦÒš·‘‡Q¤pò¤bhPT|spñnü.¢ð{1€S2Zl¯i4 órxƒo㊣þ	Þ
-mU©Ñ½¢]ý>
-Øé)pqrŸ<lTxÍeS™à›|@e­j´—M%S¼U‚›3S™ V&¯áäÏ^ùý Þ¼Ãÿ†ï½j!û½è¶ïÈÞ¡šu“OLJh½ðvç·,Xœ`púðá×©7^3ýÐÈû›¸×ÞΐæŸî	1ÏÔ°Ÿ¼Ñ$Z†1R÷2)»Ç™Olˆ—£dp:ÿýÈ8>¤)4£´–(•–"³Ñ8—wpC¦íž3A÷6Üsä-Òci¯ÀG;þÙ‹üm ’sÈ0ú"ë´ðýÓðsÎœN(Æ|&ØïG²nû`"Øö‚ûyÑ(Ð\b;Ý*eÝF;+ÖbŒßäjÙ­Ð"
oê÷q‰¯‚ÜÌéºu‚’ž¹Ô
-²Lƒ²]àÚ$çÍÔ@NÅ{a­Ë=Äèað÷IÃ>JdîÝ-:ä¸U’¿Ëcøþm§:²l€Îoéçyñ|Dp—ÂÇÌÁ6Â)AÝä
I÷ÕâÛý‚c€àÇò\@
-TvƒïÉy=‘œ/ýt<Ýz⢼:
-É[&&«Î“gô†-Œ‘IëÖ*lˆÎ÷ 
-’â‚cz9¹ÑZƒ1°rM	¾ÉÔ"T¡Å¥|å#°¿Ð‰.§ƒ3ïÑØŒŽ™ '¨Ë³×ÈH€­
-‡"/A^€E|
-Ür¿¹Aòò&câ]à6y’ÛÿxÙça24û0A¿ÛA4p‘Ûy·Vi1<Û}ˆ$—1>H*秞ÇÈOˆ©*ƒžÙÍãiŒÑ¸—Õ[Ò”¹`ÀQ"<½ÑJ¶Ì€—X‚oòµ`ThŸjáŒiƒ²¤gnáj…
-Ûµš;SRQzˆžöGôÉ¢Á)}Q`Þ¥)áàÏa¤ãs*ÀÌZÏF8Ÿ7¤'À}x9%€ºhÉŽg™™+Þg6*8ïÇ(…	Ð5¶ýx¾”$ÒΣÒ,jVÈ}ffi‡œl…À2Gá7¨<`8ØG`b‚"S8„4‡â"c-£åOá<ÛækÀ`ÞZfJÍø|‚te4cÿxšpˆR:ÅþþS¦dyŠ×cxuŒƒûiÐ)}_?LNÓ2û	xÈ´Ó)žëÊÕ-°ç>Ž=Æ8í½~Âû}FÄC¼Olô4ðôÛp{ö¸ö"îÒñ9pò€›€¶çM÷sWQJ©Ä É’³gQîS63XéÁm+Ü“r—¶UŽ`e¸Ù	Ł;©¬¦Õm§;µQ[(Çôš'ø&°`?çhWÝ;è³n–tTî=B]žsŽÆA”³W
äÎb漤°âC3`‡T4Ï<`Ö¬K!­ŸzJ²ú­yBNE¶êBFÎjŠ©'‹ÂðCœß³d—b'ó£ÜBZ¦™“ë¢ÙH|RjJíCqÍY ÞÈŽ¥S ƒ¯“CËܾE5îǩDZxX>…/y²?
?Ë'BŸ´ê¶ŸÁ}8õߤ<æézØMÉìTØUa³0ºŠ›.h¡WsÌßäê4o…vE¯À·Ú5£c¦W	êòì’	8:³dJc&áa’kävH¦âí<zA-.×BPËJ‘YŽ+S] _FÜI´–øÂ4ÌdÜ(0¡°&±f÷¾ÉÔv¯BûÔèâÓ‰9óà5]¦w>j[Ò0).;>_PniZ­¹z’ãÑRe53¿ãÃ]ˆJ¸³°ï…õq¹õq¾ŽÖ-¥¥`ä¥môƒ«µ„×âî»Àè2À)Çð~èãÁ.‰ÐªZŒ7s‘óŽtLƒ“·
Å !MVKG‰ˆ)QH†!)U&]ð¼U†[µJÉ…§:Ö
-žö(Ä-H_ªÈHSé`ò¥¤#‚í¦ AVçiž`³=jN¤Ñ‘…‰¶ŽD¤5àWÀ©N·†k¶¢‘	¾ÉÔ6«B»b1Sº¤ãl%ûâìt’ eÆ°å8$;ªå^NzvVË¢:ºQ2Ÿ“PÄã|Y±m狧ʻ´¼µLÙ•= ð&‡?[ÎO@+É~¦[ÅÁl•DÌm!A]ž›qЖN”s'É
™~tT¶+‹ŸáE4ÛQi"œ/‚™Ídq2Œ‰ØE(‡Ø˜7ú¶c’b}ÀHy¥>?Ç)qÙSær<†oE)Ëã˜}ôj
ÖÆäÐaÊ(úd‹XH(Æã¿W“É
-æÌ¥D˜°2Égåc_$+0]~peÅÿžÌÜÆÊÂÂÑÔM['S¼|`=,ØMÉÉØb@îtm†@iZ¦áì 
jx·v JðM> Ü*´+ͺÃ4Ÿ‘1o ¨•Éµ„É™)'¿”Í‚ˆòIý-q{RÃ<Wb% ?㐲ñ…y,‚Q¼ª+-J.6²ØóÅø:ùY¸=Ærx–ûAÿXNÞ¢BãÐ:Îl¼)¾#›¦Ó+š(ƒB¤’W´î‘Ú><F
šˆ-';¤ƒùX˜yŒ%»i_4yÕ…ÔG	|œ’ÎØßdyª]ÁéÃWÓOà^Aº*º÷徬Ìã…ÁØ‹	Oæà<.BÆÓµR2¾šñ„	“!zÿU;k»EC‹cw ‹³©«§q®>|öëë÷A]ü‡BI‚lëe)Û>^:.¶@8§1ÁÜUÙªvÊñ½nYGð>éï¶×WVx›íDè-I=;XAv¬Üž"ñÒÁ)Ý0LB¶Î©µ°+Á7ù€…CÈíBøòâfôÌAµB|dd%¶QB|ôÞ/䐅µÐ<Š÷øp
-ùÞÊŒ1æ?•»	þòºj´+ÞÄ™¶³L^fj‚Z™N¡“ŽÂÔÒ›à›…JJ/dÈã
-Nj|vRóaFÏ¥ùluBvà™4?£:‘£8_HPHꯀ¦—²Ç¿L-ekY—f¡Ó¾Âõ9\ÿ†ëE|þ3\ŸÅws
×ã;|þ*½?3÷!«ÌZÜpþ_DK[Ú¥3U\äOôÓN¦O˜è|@—MðŠ
-ïaª¦œeö!C~Š+{ŒÜ:SÞè¦bÑo>xÍ}òŸé´ŒôE´Ëg~¶ýu€¢íCâ~×7ñÂûÀÅB2A‰qýˆ›þe„šê?N‹Z™=¯(-Ïr?qæ§KÜù96K+û[SVS®)`›‡Ž’ŬàîClè
vH»í	L“·} Jõ§Çqï'D5á»ã”ž¾ÐÃå‘?PŸJˆa]@"1‡Ì)÷Ëà-ý}ßäTLödÌœïÿŒ
-ÆR€)Èš¤²–7!ÊnžyÓ®©o‚rÊÿÆE?.4Ú0…i”#ŽÔ؃ììƒsUÜ‹ãBÜ(˜&Š`_—Í^>̬jwèï#÷ÂZÎBbr¥
-'}òÆZ|óŸ*ørXu­UV攐·Üŝ”<¶t³6ÏÅèVd	B³	c¸/«·÷ty›êÎë—ì:u:ýÿmZ}†P¬.—eR׬çC­‰žQÆ*Ž¸pú:;56œ»yƒ×ŠÛÛ
-F9E·[m‘¸˜"FÖ.I¤YZ1NL­b.¶Ë;¶Ð7î!Š§<ô áïýÖQô|ôlS«ãYñóÃXÀaCÁ2ØLî©Õ¹.‡+²³ÔúÇÌê†%g4„ ÓÂÑMpYgÃê122YF-åcãmšzwHÅ‘åVÕ7¤lY‚ÝÃ-v¿.%ÅT«EªÊ®¶+/Ÿ¡Û(Ó¾8ØñÒÈ úF1ìt#+ÿ:ËW„?BâðsŸµ³íȤô±Iî2	uCÜTE‚‡ª®›éŠ.m}n	iÖ¹¨#FLVaáè:&°½ psÝ°Õ~˵&¥;&=7³¶5ÚPæ²´‚K•à™ÈüGR;3˸M^^­Ü—D
tQÂ}D¿à.õFh©ó†ŠCҍ2׈É"Š~;W­årÑg{•™òD´QÍ9mîïr…+ÌŸ§b©s‡ ¢Ž=ºµ¼û𶒌u™«‘´šíääXs,µM®'ÍpE~ÀùÐ\?<Áä€mÒ,÷ÇLmÿ6ýå«dËl*q~XØÔñT—ÆXMÌ%¬°NZåQ÷¬eÖö÷TnNR;V½¦¿®+óácúãJ.íÙ¸2æeÛuLϸ¬ö‘ië_fYàY¥oú»ÎÜqDßã¯=—q|írßfC0MTçÜÆâ„kág«¬óý«*¸Rendstream
-endobj
-146 0 obj <<
-/Type /Page
-/Contents 147 0 R
-/Resources 145 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 149 0 R 150 0 R 151 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R ]
->> endobj
-149 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [312.8897 746.8856 342.0501 757.7248]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-150 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [124.3686 699.0649 153.529 709.9041]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-151 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [105.5626 674.5966 137.9707 686.4571]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-155 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [178.0471 663.1994 213.3644 674.0386]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-156 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [145.9004 650.6863 178.3085 662.5467]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-157 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [185.0642 539.3837 220.3815 550.5019]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-158 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [375.3565 527.7075 410.6737 538.5467]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-159 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [168.2912 515.1944 200.6993 527.0548]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-160 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [486.5452 503.2392 521.8625 515.0997]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-161 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [88.3572 479.8868 117.5176 490.7261]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-162 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [332.17 467.6527 361.3304 478.7709]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-163 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [199.781 432.0662 232.1891 442.9054]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-164 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [368.9173 432.0662 398.0777 442.9054]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-148 0 obj <<
-/D [146 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-145 0 obj <<
-/Font << /F8 95 0 R /F56 126 0 R /F58 154 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-167 0 obj <<
-/Length 3126      
-/Filter /FlateDecode
->>
-stream
-xÚÝkoãÆñûý
-%rqb¹oò‚¸<›"H©‹¢Hƒ‘ez²äX¾\¯Iþ{gfg—»Ë‡|M?MŠœ™÷ήXÔð'NWºnÍÂ5me­‹õí“z±…o_<£µ­´±~Œ|]YWµr±J‘||ùä÷Ÿ7‹¶j­´‹Ë›|SFé…³¢r¶u‹Ëëï–/.¾¿üó“Ï.#¶¶­ŒÖ¦‡"Šøå~Ë ß&´ø*… Eҹ˿Áõå%BÚÊ	©&ŠiG¨yÚB¶•V¢ ¾‡Ù,àasÿnàêÖ›‹•tjùZhø½Çþ
½Bü-X®æ
\×{ʁ7å̤i+gjõXñFøù9ÑÎX6¶jE#ç¡ÎG£S® Žâ@¡h7ëþõŠ<HiÛ¿9x¡v?ÀÝ.ÒñùvÇÊØ{¸;F|ÄŸD
-5”÷?usGè@½4j݃•
-‚SIé0.QµÆHšÊ>R:¾†Gà^)µ<o7a|0†­ÿ´çW¯i
-ÏKéG—WªjœVc _iÔ„Ç·ºRJ›)
-RŒ±©é׺2Ê&”p:â"†Z¾ßÁõ
\?ÀõOH®ò;x¼‚ë-‹»#‘úwøû–¤!À[L
·Gbìxô¶Í,ýLZ¨séË‹•0îÑØïùõ‰bOŸQaþÁߐírª‚¨*¦zÍCßðpŽcsf–É™ñýÜkûhLš™	fÆÓM‰Ë™áæü\¦¤6*äóLä=l ’ËïkxóW¸¾¢kzrn\6;žÌ¿Þ°_e¦òV20§æ}l’n)Íút¼¤[–0(Õ:gAxDqî7™Ù}p1TÏ–§ÿ2‘ÿ‰¾d½ßE³ˆ^]ºë³þÓ:„OɍZ,?dÁ</¢Å‡Œäi¡ŠºÚ»EÌap}Á¸a’!)ŒªHx…’|~“­ð^#­haŽ)£WIH¹š0æ+Ï1š¥çwË‚~xJpìù:&¶šâø‰·K¾‘F&Ä ±¬…
-h ìg½§¡MüI~ÊzCïû˜=ð³ü)S~ïŠêT˜f}؃$w‰ï<A ÿf2ß1‰ï3µMjb¢²Ö-W4l‚Ëìü:dzc q'œ±¬_àñÿøA’¸~dËØ%ï®8“ì؍6,Ò
-NC·Í	G-æ^æY™;í„y“¥VÇL9ªäñÚÂßß3m‹"gOMêŒ¥c³í¦ø’>ø’c|¥Žð~|<Æt¾ãÀðýTæ—IPýuj2¡`¯)ÞCجû‘J3ןO'¹ìæcôQq†Í©‚qÌü>«ÏèÕüœêþvfæ5Åaê3
-ÓãY°—„™Œ`¿¡ŠzJ~Ö<{~™ÄúO9Ý|×·üüùùPrNÝvÜl{1¹ÂXÚ÷4÷Ù*9Å$ÇQƪçSðí\ñ¢’ ñ«6u.Ú¨‘h3¢¶|)1¹à£€ðD+ïq¬èÑÁSµºöéKßâY)PÂ.õßõ-‡[ê?`«@Ö¤s
-·s¶HošÊ	aÄy`öo“
-¨"•xRmåd×Ý÷¼ÐãÉ3r¤Ø¾ËW|§ã=h’vUÿ©/F¥óý—Ðà 
-û$mx’Ǐ,í²<‡ÒA¹¥«•¬Ÿ!(Ìx݁ =«ºBÈfùUÄêW>B«J5 ¼*AÓo½€hâ'j)µu:ØîXªØ»kZöY‚È:ueûD¨ÊՍf÷yh 
-ÑTÆØ xÃÔ¨=
-RÎR¶à1Æ6ëÈQ· NlB½"FøÕ¦ªLbzý54%[`Œ>Cš
DP#s´î^t§Í&\—È4™©eK–¼á>+)TLX;l´ ™Ò–<6ËÍ¿z§"an®=+a|×­W;ˆ.ôî%µmÄÖ¦m+
-øД|¦àWé€a/t€§w‚CCɏ2•Úü”Ù u†
µ³*çâb2Úþ5š£ó)xG!™zß^΄KÌG™OzLÝÚ:Xß7C+k*Ûˆ†¿³Î¢©³öÒP¤1˜ìƒïø´ƒ\ÄÈðoIœ'Í1¯lîÓ·]p]£ùԭ̍|ÌórM©•m8U]WB¹0Ó|Y=˜5nÎ4Â10F x/€òLúp/]ɽ'ŽñTZ9MNè¨Î,O¡sº7»8Ô7¢/³°Í“xÑÂÙ˜€æºÙ#H2D\˜óm÷:tö4è’†¡Hùôôº‹åGMŸòÔF6âUl\åT]tò×G’¸ßZ¸™ñÈ»Iš¦ÝŽ·)6‡°G´£‚©Ü­j,†]½Á4g"I_%ðÃ]«éc㈠åÔ2祌"3Ë€m%!Þd”!¥TK+¹±MUK#)š>ÏY‰9ûšlפª•Òm3+“4KZÕ«P鮯kÁjßan§<¯¸@<ñfÓŒ#³øîû)N{Þ®»X]û¯þwÿ«~Üi“¢žØx‚ Q™<x^|•Âd2@Š2ùÓfŸo¿A=AUÏ” JŸÒM¥$‹œÕr8@Ís8DÆqKÕ†bG(
Iòª»>7½Iú²ï<H”¸o~Ñ;œDwë«Ð¶Wd‹Óž;T«\§_<qʉf£$$é?Y¥í1
-éï}}ÖúVòXV–°¼Ðu#™« 8³B1p,“[
-œ¢¯Bßx
‡Ý¤•Y…ûÂîÑV–ÀO[Y :ãô¢Æø¯eÁEi@jž¸Ã…“9õ	¿W&*PÕm©@|%ÚžPQƒJÔ#ɲWVÁÈŸ.dÚ€2´õB…´
-+v¿$L{´4ËËxçñªP„×¾O°ŠïÆã×X%t»	£¦×Œ°óléŠ-¨Ú¹<sÇæ搦m¬iÊp'}üeºñÎE Dƒ¨.Q_­_%ø $^x'~A†OÎJ«]Ý»8>÷åD^>S#[Ùë€)Dî|ž«€®¹ÎÿA
-p+_Ï6I<œ½ŒÕkÙê(WïZˆ¥hñÞ×c´#kÿîtô0©nñ{˜ÂÐ_†Ú/±ñ?Cð¿õÔžͤ½€pŸxœS	“è&
-ÿÂqR‚^­Ëº	„[óRºÔfAÜnn9 4œn}ÔÞnâ¢v¥”ì{)*ËÇxdݝø‰V*›ûþS´
-x~ÂH8õBc	¸‹‹^ÀÞù/4§·þ¹Cs¸ëÏ­xÝÌçTÈ­·æž“éÒ¿Š„ t+ö6Åå«Øh\i­‹Ã5ø&ø;>wþF~»=äž‚¦ãe©5Ìðöø¦_¾Á+EŽ÷M˜)Ê_¼
-yô:YøÐ|À ,J¾>>ôüÌ-^eåŸS!óßd¤N+íÚ‰`xê·ÝšO,á/¶˜!#ÖU‰ÝÀ-7l}&¦è¨%Ô0käÔ¥Ï0—¯AŸ¡¥ŸnÒ¥Mèðµ±Eƒ×ÞáøœÖ – þ^ú"@Ë}ôú升Iý#.÷þG¬‹<¡ÏrusVð'ô:†ÀÔ†ëi³ȏÌÀHgÊ/¥Q&é.¦™œ=ó+K–eæ
±…\¬;ľ}"D”аÀr®&	©(¡ñZ«~éd¦:Q	íìB€e·µ={Ð0À¯ÒÃµ× íÙÅnNª‚Áê‹¡æ©CQi#]N} A@7aÙ´ï5y˜Y~zÁ:–ñÞÆ[CH²óé­EÁŠŠúÜ\¦ú>Ê°j
Ö r¤âñ¦ª¬-Š[gáÑÏÙ$uŠÚ%~æ{i—«Ô
-·CôòE(4LB6eÁ~Y•/3Å{Q„úà‡dQ?ߎȷâ	ÑX3Y3•‡E^éæC²™¶÷Y,¦iΚëã}v•s”P9A– ̸)1™þbfAȱl{3Z|âo“•
é“d—nf¥UCÇ“ç>@R\÷¹Uùb#-TH±úš<˜*°ÁY‹ßp.5Á0<–Ú¶•VD2¡¾Ÿ9›Xìÿ‡ýý™‘éƒñ¤I8¿’n=ŽI¡m*iÜxç!.Z a°l
K1ù}Æ‚\<½?Bï?ñμûendstream
-endobj
-166 0 obj <<
-/Type /Page
-/Contents 167 0 R
-/Resources 165 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R ]
->> endobj
-169 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [98.5482 758.8407 127.7087 769.68]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-170 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.754 758.8407 287.9144 769.68]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-171 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [204.2029 307.9714 236.611 319.8319]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-172 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [185.0902 284.6191 217.4983 295.4583]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-173 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [267.0288 284.6191 302.3461 295.4583]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-174 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [73.4132 272.3849 149.368 283.5031]
-/Subtype /Link
-/A << /S /GoTo /D (helper-functions) >>
->> endobj
-175 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 260.7087 108.7305 271.548]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-176 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [270.1513 188.9777 305.4686 199.817]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-168 0 obj <<
-/D [166 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-165 0 obj <<
-/Font << /F8 95 0 R /F56 126 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-179 0 obj <<
-/Length 3162      
-/Filter /FlateDecode
->>
-stream
-xÚÍkÜ¶ñ»Å¢E€½æD‹/‘j>9vì¦H ½"šÂXï­Ï‡Üî^n7uÜÀÿ½3ä"EJ{¶Û´0ä•ÄÑg8oòø¢…|aSm¯Æö¬ë4_¬·ÚÅŒ={À	F©Ž)Ýx¨Œ6Z´ÌvX4)’Ï/<|j=ë;Ñ-.^-`Lj©¦ãÌt½Y\\þ}y<ãË×p­Žgÿ¸øóƒ/."ZÎLtr€w´qèîŠ`¾Mfá›ôƒb%ZœÆ_a
-ßÁõå³bÒ2Û+1šÆHêq%Y+tNûÍ™0ËýÏ@ý®Ë³FqµÜÁíþˆ÷r¹]¡”Ööڏ©mðQã°Ë·ð|{Öˆn¹Ù®ný—‡kxyµóòåK¤q7|v…£ÿÄo7;wõÒ!Ø#)?à!ß\Ÿ	"Z£¿B¤Wˆ}˜à³£C~Æy…LÝ¡„>Õ]"©{¦D«@˜(D·Åï<h&A
-Æ%2X4
-Ä
-Ò¨¬×Z¸Á§gV!9¾¼GAlpfoqü¼2­Yß÷DbGßnx¹3s|s“=˜AdÂiõᬑR.Wþç°9âXî_ùßÚÂ!ÛúÍ5Mýu ŽBÇáËÀ!÷(ö׎O· zç?ÍWßܸÙ!ÌÇ=‚lá†Wž×BË	‡Ð+&¥²`	
-g™œ{p¼ã!Û'Ž#/ë[²‰·gàcäò‡V·¤Q;'÷ö	š-\‹Ãuî_£xö´v/	Ï®?øaüâ9\/àz×·táý÷„	èqý«ªPßÝ›â
-˜ùò\Ÿ•zÔ¸[ÚVÁ…ur¹xŒ	lIZoÚÛDBJš¨sÚ(<n~h¹Ü¬QÉȽ^UÑ “ˆJTø÷»az@ 4,¡-ë¹Ôd!+rGWNÞ…„fBE؝󍜨;’WPŠ)”Øsêäp“0¾!¤ÿ!ÊLEæÜã 熤RÌè¶ËÝÐÕfç-1øžKoë=¬ñ%/Qxßs¦ykǪ?Ž>zàèGˆÍ`õ)›8Ì{¢ž¡’¨ÁÔÁ˜w_<
-fÑf‘³¿9€qº"´Ô”R¢FöjÉ*^Îlkù ×›Ê‚òk£ºpàd†ÿMºê±J#ÂÛuˆˆ.*FÁ‘E	å%æjWO¨(T¼Í´`Ì„èXÇÅÔ½çX“@ÒïZ®«’IÛ2#uˆƒ‡àsšKúÄ1´>ú€KÜÈ/)6œœ~+Á“G2åüK³LKž[˜K @ûoH´«ÄaxÃé
¤CmŒß^3&Y°Í¼!^ ©¼¥Ù ì:¡è
-ÛÂ=,,dXäƇUåŸÇ*¤-øæè×\rFzëC´ðÎn“Æen§§í©½Î`ã_ds[Ýåx6Þ
8%¼Í}3‚„o½#@ìÎËÜ	>|–ÔænéKLAx;ð£Þá;êŒð“ˆNŒ£Î9éŒsfÓ±VµzÑ¡wî{q*uðMúA™=hçSwÚ+Z«FÓ%+jž¸h;ÈVZ•/i;*ŸKÎI=v#·#UDiº¯‡Õ(mǾNûü¸`ÝN“h‘B’°ZêT	G2Sl¡î»t~^z%Úù¥Ó-ÄÙÊù¥‹PóÄu	½2'¾^‘÷Q’3- ÍÊì#Éq((†TÇ›„Å^É>wY(ÏÏr3ŠîÛ!Þÿœ$5°¯vCÂg?lF¥Dt7µe]ÇŒ_®ûŽikûËá›ôƒÒ
-´',°—(%=šÆØÔ	â%¤íq¹Ã]‘é5]ÊQôw‚CI§ÕvXZæú†Vç²\zt5l°F—ª½‰K1YJicx¯¨¤Ó…T 
-uÔ¯5ÇÿûÈž—UÌ}™®gT =¥ç¯àú‚Þ˜¸þDïBQåßg´yœÔ»Ú¤>I&²&á&ë€û
׳@ã'ð^U[E8<ªS@¾§ ~$îVI®¸"âTR=÷ÙÔÞݳÈû.©¨†Z¬ÌÙ½†Œu¿
‰ …ƒ"ö*&Ð:”…h)ÅéØKðMúA%öŽÑâ|oCÿ"LØgty†¢¨Uj4Ÿ"Ôü, N3!À ²YÔ<k­¯…&IM?t¥‹Å4˜å·¡ä(]¬_æÔáùÊõ‚´HRÖM
-ºÞ@ŽÅdVø{
È0‹$kЊ4ÆÅ5¡ צÏÕÑŏ~ùøáãOôS|²…›ìG1)MSÜ
¤=BüÂåžAy!áI
-h¼| |Z‹þèðLH­óæ~R[h¬:îÓÙä‹„P¼-ð­WWb«6ÏÒ rúÿ¼'üiÊ]1ö™p¤Z‘Éùà_•¥T[ŒŽ¦·¤\¿¥û7¯!åÑ]¨È¡ª†’«boPæCü_18ÉZ«ml7n—_†sì6÷cU@a_WºV« ˆÿ*ëR%!¿T6áF;²Fx1X£±ÑÃ-ڝékšY @VûFÆL”\ÂpÖ¶*Ý2Þu§vK"|“~P:Üí©„|¬áv4"á#¨yⲩ+­râ¯h•÷[/§Õ.•u=¬
-8sqÆ
ûd¬ÚÑ2ݬ(SŒ²)Ò3kºÐz“G×VB?ú#éȁ*Þ‚Þ	=òÜE{}Ÿ6äûLéûì¤ï3Ñ÷e:óó¦æç-8á»K”áÎ?“Ëi”Á E
-´B°à\ŸPÎߤ”úQ WN©¨¤Zù4FÊ¡NWšiP•œøl9’+áùhYœ»Qñg² ôØ) ó…ÜRåŠt:ä`ElbÛòrDgM¾	àÛçÓaÇ0Ý[ý[„J¼šj[Ái¯ü‘ۀ뤣s}ƒÿ¿¼Ùø¶ù…ï—» w›­Ûÿ:Ì´ÎÓÎy#­­ï ã@ٍ¶ä68Toéâ2D›Fœ±'ì$ëDËß¿G¯Z(zxX#ÚvÄVÂPo×M³÷˜5‘#·Ÿ•öíãhÜ­»r.í"ô5¦,ëÑ«´±ÃWîê•›šñ>ö½'w«°ÚÇ^cÞ?Nís<ŸÛçŽVaxÎÖ%‡tWNÚwNÀ*24¼*3iÛY™õÌXmîÁWÏd×õCYÛ3aÚŠÀú
ÉWßÁ£'–›('˜(ÚèFÊgØ' ^}±a’tßÐŽÛ>úæ;±ùÅf·ÔÁ5|Ð\ó ('˜.§CRfdBó1€7)|’
-¤(’çÎ"¿	»5Y« 8w£YŒ¶¨yâr–^™S«îÇ€6ÒÓštP¹É·‘1·º,:9ÁgNK1¬¹HV½{¶`h4oÎ&û¥Î߉råæ’ÛW¢\?Ý5¿Í€^ûdþàà«àhWTj`Ð0£Jƒz½ÛÕÚùçÉö¢ä­²Ñ_LQL7#TH|k.ÿEØ º
‡S‡!Ê>¡ôû‚îñÆ7”:œÇ<N>†ëkB;ú4œ©}VõÕ]V3í6ÜÍPöÁOÌÓ\œÝÝ
 ŒîWáË]Øà=_ñU‹)ˆ´qwûÿ^Ž·"ļcÂe4Âc´xm9	9»Ú6ÁH ä-Ïã_Ä2i¢ƒ\\Ó‡›G‚aÚ:ÐÈ8¦ÎÑj<'ÉOXŸÐ¢á©ŒÏ“Ô›À‡˜<,T­Uý‘“NÉ eâ/f’þ‹³†C™17ÃûŒš:@ê‡ á²Ë’™jÑ%ŠÖ)¾‰Ûu"«º+=Ì]â?\øµÃ!‰IVÄèv"˜™Žµøaða";5Ml…¶´ÂD!×¼Çõ3E&šU*%j,³ZÊ{¤¡xF(Ö•õ¬¹zBó0ídÜfôûŸ–iX>é€Èµ4	v瀸i†R_Æ9ж)ÏTwLhøhf²M*ˆŽÒt *eŸ=ÄK¡EàR"4ïu¡wžN,ðÉ­a\ËyY$@3²P'e1GsÅ˜h])ÑpØê£eb8S]B&ÐœLê´Lfh&2IBôö	c'fŠi­±¢<Áô 4Ç4Afz†fÂôˆèÓ	Ñ{(Âýå¢Z†м\ 9¹Ôi¹ÌÐLä2":!—„hæŸk.µ·€ÛÔµ0–Ä	PåȈf\1!YU6
-¿R¡÷oŸasendstream
-endobj
-178 0 obj <<
-/Type /Page
-/Contents 179 0 R
-/Resources 177 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 181 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 190 0 R ]
->> endobj
-181 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [110.73 758.8407 139.8904 769.68]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-183 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [175.0442 617.5703 204.2046 628.4095]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-184 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [474.6661 617.5703 503.8266 628.4095]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-185 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.7793 593.6599 294.9398 604.4991]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-186 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [173.2926 482.8242 205.7007 493.9425]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-187 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [270.0076 447.2377 299.1681 458.077]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-188 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [314.0087 435.2825 343.1691 446.1218]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-190 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 344.2349 108.7305 356.0954]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-180 0 obj <<
-/D [178 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-128 0 obj <<
-/D [178 0 R /XYZ 74.4095 697.101 null]
->> endobj
-14 0 obj <<
-/D [178 0 R /XYZ 74.4095 697.101 null]
->> endobj
-182 0 obj <<
-/D [178 0 R /XYZ 74.4095 653.5817 null]
->> endobj
-129 0 obj <<
-/D [178 0 R /XYZ 74.4095 424.0447 null]
->> endobj
-18 0 obj <<
-/D [178 0 R /XYZ 74.4095 424.0447 null]
->> endobj
-189 0 obj <<
-/D [178 0 R /XYZ 74.4095 380.8043 null]
->> endobj
-177 0 obj <<
-/Font << /F8 95 0 R /F56 126 0 R /F51 119 0 R /F14 193 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-196 0 obj <<
-/Length 2490      
-/Filter /FlateDecode
->>
-stream
-xÚÕZ]oã6}Ÿ_áG{1fÅO‘Ýn»è¢;(Š¼,ºÅBãx2AÇqÖJf¶ÿ¾—_Ò%%‘Nê]Fd鐇<—ºº:4]5ðGW­ ¢1rÕjC”’tµ;¼iV7píïohÀ¡ˆª…/3W·‚Q"eG¬%ÚH1‹2†pªà U”´Ê´õ׫7_}GÅÊ£˜Z]}XQJ	k)_
°«ëŸ×ÿnh»ùåêo¾½z¤T&¡îpB; ¦¼Ra^˜ãܤ¼º¾ƒOŸ[øÜ„ï{ø\o¶’qwÚžzÈÇ'Ü‚z\4¼¢
-B•T‰°º*%Z¤Jλ 
-æýÓ=†iß,N›7ÄPZ™õ*M: ês.p¢)g¤3F¤g,ƒó4¡’MUE„*©auYJ´H—œwAÌ›Nû	J4
i$c%ª¤D„Õ•(Ñ"%rÞ%0ï“×Èùb)-ˆbL—Ũ‚X¬*V‘vkÂ;/VÂû¦§Þ•’§R†PÃ+Œ*M=ÂêS/Ñ¢©ç¼SǼ×aÚv½¼2ìí@¾úN£Æ[N‰Ö:MLÃýíöýÝf˽èú£k_…“óøiДµë/·ã:³˺ïw§°8ïæþøx·aëþ-àZºþb‡^-xo»Þ»#ÛÛ.\êü¿wr{Ýùi$"0H£L7V<;¿ìkø\…ÿÿ	Çÿ‚Ϗðùvª<yŒæmèà­àËǁüџ܃×þÄûÍ–)?¾î`žzý›ÿrü0+ä7£Z݃[›0¨k#¬iµ=1Rú§ÂƒïϪéhzhÌý-mGÖÛöv$œ­;?›Ï¶Ýž±ìª³}2;×ÆÕPJ6!Ü6ˆ÷66Òéu:uèî7—h&R5nµpMãbñ‘~tÑÞrÖ¬;«“›ŒÄw¨¿°÷Çn±Àý!b
-»1v®§* ‘~ð
*wxÌ°ëûÈá×-ôà–²çóÿl£ã#Z¹wc/ïg¦.YÔ1žÿšû%pÒõö>,ŸnÚOn4ià]Û‡ÀxÂ"i9Œ[«dqÁW‹î1ÙlUÃÖW㽟$!Ã!m½’º!ö¿ËAöÊé&@~ÂÙ(·ï’^“Ní<î㎅T
†1n—#O“%ÄTƒ•-ŒâÉ¢ôx™‚ˆù
-s'oÃBÃÊ9êx…îÒTèRÚ4:crˆMÇ>ò‡\‘©!„&ªm噡àE]&žÑÒN‹¡@å!hF<¨ðúýCLbæw©P4šHfd¼#bÑ%Gœ‘mÚ9±›IÐ†zT’àû®»ócˆ¸Íî.(>{žâ}|=vqô8|×ÁW·.†©ôi£4û.‰Ù±gkP{ß
-Áã}ëÐsx¦±;Ù»ºð.&ǘ=âƒ#$­,Ìñ]
-e·™-])„’I>ÿ~.àñI®%î¾PB
°j	U/*¡&¼ó%TÆ«Í•ÏõrÂÁìsô]¸la?…Ï×Jáósøþ.œûÅ7u«t¡8•\@ýo*u9F•”°º²%Z¤lλ lÊ{¾²tý—óÕ}››%‰mýO‡ªë
ōâMåe £JzGX]ï-Ò;ç]Ð;åz•ô»hTêz7P445£JzGX]ï-Ò;ç]Ð;å½pæ`³™ãYÙDè–´-mËjcTAíVU»H;ª=áW;ã}lÂÎÌ&ç ØQi”D¬âÞbT)*VJ‰E%ç]ˆJÊû´œSÔï%2Ó9Q‘ŠÊL%*UŠJ„Õ£R¢EQÉy¢’ò^83ñ³3Ó󲕠PqY‰ B•"aõ”hQrÞ…¤¼/­øE³Õ9(~F옂’OTÌwŒ*Å.Âê±+Ñ¢Øå¼±Ky_"§U~‰Ì—ÅîGxx…WÙ`ٝü6œj_9}ƒÜª´sšZ¸”rÂ¥	ìÅU%ùd>–„1¨ž›Á>êý\‚	äf}t†Üö:LïàŒ>˜ÝÔš=¶àcjïž{Á}wæÄiãÑmð„á™
-㩲;nàŠwP¯áP{3yn½u ûƒ=ó«s5o¿Ÿ
“¤iéKá™ulœVJA‰$8LË!8ÌYpVa«ø1DˆÍFˆÍø€C‡(B.¼iÕŠ¥ÑHã–ÅÆ:2‹±ylœ»°™Ý›Ãm´ˆOá x;ÃòC~–»ÓŠËÐZÁ¥m 9nlm4?uqæ¹û™Çm÷rfï‚xaöò-»©ÒW:I¼=ÅQ§r}8:ß-êº÷]‹YWnÉÕ˜ôpÀóy#ƒ«û-6 ;Îîüÿää°[€¶’-€q··s+š&ـȭÿvn4p¶›ëa{㐞BÝ}9cíã¹Þfw'"ãiìd|4 ñwÝ°ùâ6)ÖÐä>ô¶±|Ëp?M¬r	
ÍW“±b+xå¿Å
fÌò¼Û³Ýr	/¦P7¤ã™ØåUEkˆâ”¥£pâÞ<†;Ý©,s 1x'NVÐÁjøÕ(kÌìipžZáݤÆRŒ´öñÀáYÍŒµM£ˆßâÓ]£I·väïÜt¹o²wE§:G^ëET…Ý–¢Âð”}ÖYž}Éû¿yÁý/˜ûYÒ„+ÈÊgFnæwl.`åãî…û «î¥ñ¢Â}Â;_¸g¼Ï,dì©ô›Pe_ØÞg-ÔÙªösFŒ*©auµK´HíœwAí”÷¼â>Uñ‹XþLqOüJFP)U@韑.ÈŸ¾¸Ùÿ´ÕÕšÐFÕäG¨’þV@‰E ç]AÊû
-ùæ‚›Œ3û《UƒQ¥DX=%Zœw!)ï+å WÞ(€0(+‘B¨R¤"¬©-ŠTλ©”÷O²Qð´¨×#ÕP¢©®X×UŠT„Õ#U¢E‘Êy"•ò¾BV{á
ªáÚT6›1ª•VJ‘vŒÊ„w>*ï+eº?å&mxÙ5•ílŒ*Å3Âêñ,Ñ¢xæ¼ñLyÿ¯6ž¶‚ž¹ñÐÛ÷aÊ'/Ó‡î>¸N”yOÍÿӁÃ/¡¹;úÕ£âOø¨uä¼î/ôxׂòÔR¤ø¥æççð@SÂDKúéÚLÔ°+BG~Æò	³æÁ"è¢Q÷y˜›µusΣc휠m4¸áE¢,ý%òð+ÿ`^||àbºå|l÷ÿ?çg?ÿw—âVJ°MºÛÁá$K>†Ñp7-”³E éO‚$T@aAvN2§“¬!Z)6Ç÷;¬ŽÕendstream
-endobj
-195 0 obj <<
-/Type /Page
-/Contents 196 0 R
-/Resources 194 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 199 0 R 200 0 R 202 0 R 203 0 R ]
->> endobj
-199 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [192.2385 577.419 224.6466 588.2582]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-200 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [447.6812 577.419 480.0893 588.2582]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-202 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [444.362 322.3246 476.7701 333.1638]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-203 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [161.7108 310.3694 197.0281 321.2086]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-197 0 obj <<
-/D [195 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-130 0 obj <<
-/D [195 0 R /XYZ 74.4095 636.402 null]
->> endobj
-22 0 obj <<
-/D [195 0 R /XYZ 74.4095 636.402 null]
->> endobj
-198 0 obj <<
-/D [195 0 R /XYZ 74.4095 601.9391 null]
->> endobj
-131 0 obj <<
-/D [195 0 R /XYZ 74.4095 381.3075 null]
->> endobj
-26 0 obj <<
-/D [195 0 R /XYZ 74.4095 381.3075 null]
->> endobj
-201 0 obj <<
-/D [195 0 R /XYZ 74.4095 346.8447 null]
->> endobj
-132 0 obj <<
-/D [195 0 R /XYZ 74.4095 138.1683 null]
->> endobj
-30 0 obj <<
-/D [195 0 R /XYZ 74.4095 138.1683 null]
->> endobj
-194 0 obj <<
-/Font << /F14 193 0 R /F56 126 0 R /F8 95 0 R /F51 119 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-206 0 obj <<
-/Length 3459      
-/Filter /FlateDecode
->>
-stream
-xÚ½[_sܶ÷§¸—ÌPŽ!þLŸ;ɤӺWi'“d2Ôé,«Ñé\QŠì~úî.  òx7ñ¸ã¡‹Åb±øí«þ‰U«kÝtfÕº®¶ÖˆÕf÷¬Y]CÝwÏÓhmkml3µk#›ÚY+Wë”É×Ͼø^…¨;cäêâÍØ—uk»vuqõSõÕ™¨î¯÷gkÕÿyߟ)Y}€×áì—‹¿|ñ­[uug¥E.Íj-\­œðÍï
-šÃÿÈAÙªÇ|ú3Ù2¨h}Å6yŸY`"ª·X¸½ƒwgki«-4¢²(ºËÉ™­¯Á¢*EºÆ‚ÝöîL:j6¤MàÕTÏÏ=ùåLëmAm«7(å†iXó=çã¬ÏÖÚèêž	*&­ÒLyµ¾ó*ð<·÷¾WÝèjªh«Íæ‘ùXlªý¢•Õ–éžH+üµÄ#Á7cãÝ>–´}èðnl37J¤ùýÌðP‘kú»9öÈ᪐Ä3„]ߎ…$Ì÷=E*¥‰¤ª=JÒc>rTR«ê4õ¼Ç™êd5 ãŸa77^sl&0]Všêû;dÿ웋¸îDgj«”[µ¢«uë´_œXuÍ4¯“eé×iZ¦éòš²õö â|`íã€öy¤´u£;UÈS8‹Hµ,Å”JqŽÚvÙ¢ëTµÙ“²~ÇÿF½‘%ÜzŠ'4~^T€{ÿ:7ÛX¾CòG¶¤ÀðÝhY8×5´¿	¯zìMûuµAÖ¿ùicÙ‘ù¬… þÎåft3Ú›geŒ‡~†íXø-šÓEƒÕðscü1]Œéè$D,³×¦&34âlmD׎1«)“­©YjÏ*q8D—¼>E»>wðÔÛ"»åùhfu…
-â¿ãôsbâݯгir«ì6aÞÁ¨2Ýð	‡í€‰àÃl!ºo@tlOŒù=ºÄ”qÏR—ˆus“‚4³¦	-]²i}Hh™_j ¸ž®æ¼ÚÄÑRüÏÄà|ñ·NXº»š¦lË
-ñæ&âFzÍÍÑÔš.³
øôKž¶¡0KX›Q雜¨M«ìÊ:U[!»#¾2Ò¯ÓS/5a{¢¯T¨M×ÉBžÂWFªe)¦ÌP
-ÜæS\xu•ý«®VҝªŽ@~DŽ’é©Ê°]ÝêÉä”ÊTG„heíTÓæRøuzïÍãÊ-˜8®\4¯¸C--€a(ìm`;žÇPöÜ»qÙ¹ZK! ܆ á’ÕîÂRáÂë탙YÚ$a­U˜[ V¥›̯ïLhÌ¡ÁÄ0D_·Jš¹©€¹“FÍGLQ¨[w` ÂÂKÊž¦Pè‚€Îd\"*°Q;Á@ÂÖÒ@«%yבjÚ¯±i¿ú+.û…‚U½ a|rÁ¿¿òûð¼‚çO†U¯áùž¿Ãó“ýÊÍ^óó7ðüÄß/¹ìÏŠ6âbÌA‰V™ºí¤<¢é„jIӁ츦—ºM4]ö{@Óy¿§kZTúãÚ>÷MÚ};ýž¿ÕqýÃ:pæ˜úG¢%í3Õqå/ô™è¾èô€ê³Nƒæu5÷Içç¸æUwB¸#ªO¨–tÈŽ+©ÛDûe¿ÔŸ÷û‰}Œœõ1Èï×Ö]+ì²öSªíG²£Ú_ìvÔþ¤ßyíý~bí«“µtFr´Уv®1ÝûMÇs!‹.¢{-Ú4þð{Óߎè)<RÂl‰ˆ‰.,'4pDŸÄE>‹OY†:Ž­mõü‹çŸÃ×çÞƒh…B€$ W|SSûlsçQ2N9Q§aLÞÞÅ`•ZLÀ“
¦¥iÇH‡݀[4ØEרž"4ŒTÚ$¶*jŽ>Ò¸Ä.Ёvï_Áà5ržÑ±aŸüº
17æ÷ŒšK)Ê©@øk¼€ï9†úý:m0Eܶ§â~ × z.O‰ûÕ)&Ì8a¤ZŸ˜\ÔêT¢YóãÉçD¼ËÑ’±‚-ÄÇ NÖ0KEpÕfïœSÙSÔi‰p	³¬«#YL;vZر×ÂË=/™X¥0¬ðkë†¹ûhœrÞëdn´Óà坃	Bö§‰ï2ºv²Q̤ȕX¹+Jö-ø*^pf“dα*ÄuX%_ø2œ6üU/| …uij
-õpé{ÜôÞrÃ7þ·÷?!Éuóó;«ëÆ©|ΟnâB€°²ÍO¾Û©ºm4¬%ÙÔR{,§è×iƒiNwÂ¥úHð/ÄwßMÄÐMíZYHQî¹Lt¤k
0GY›w=7·¤™áCšZêßc©ýnƒñŽØm˜-Ÿ`¢EBy¡ý
ç’bÈ^1.…t(óßqU7¶ˆü)霋<øb´
-¤+dž³VK©.qxâCÜmÀ¨9–Ëäë”~¢û	Ó³hpi–”ÓÏDË"¨á[*Ãáý\-–°%*Ÿ!ï}2’¢ÿ™œÝŒi,í9æRÞÅH~LàS7'U*›¸¹1š¸3<u"×Ì.;ÿ„}ˆîe²…µÓxï€òñáÝ=3|ñkí`ûñݱÎwìâ?Т@LøÓÂv†fÉ^ÂwþäqëWT‚a¸$ϯaIX­ø>¿Ç@ÕBvۅʼn„³ç€jvcG¸i›¬õ°óÆxB„edýàñ,øŠÖ4Õ·‰wç|5¹x+keº6wñá’W˜=*iÜᣦÁG’&ß…ƒ B3&Ü‘ÞÿL—%Æ3L˜æ‚oÆãz(ŽÎ¸zɝ÷¡‹4+„DýŽÒöI
-ÞEÊxâ¹Kc†™ã˜p°íüI‚ƒNˆkœ%ÕvÙ9žÓèÓ!Ž£}l»Ù‡£ƒs°6ò€}¶Ã7í ÷Üx½ñ–{t·á(ë:¸ÌÁKgÌ%RÛó½O'ð!aØsûY+qÍ+¡ÑZÆõå‰Ì>9hö^”Bª0¬áËCŽnÀÇÉùÃÚÅDïA ÒnµNYLCT(®w~àãi½~ÕôÞqñ<ÿä÷
+sÏ:ã€hž#qy?æ­¨>œDõßpŠêÏ3á8½¶!ËX¿ç‰˜^÷¼É%îS÷%
-*RþÅe‚ódÊy,PԆž÷ ɯūqç<|ª
-•„r”̯»¨du´/€~µjÛî#ì+eqؾ"êü36’êØòÆ×ó7Í>nñÌÛ§Zš™f.Ys²)øÄH“7
-!#hú>‚!ª›œ­JGQ.ä`¨6Ë¿$­ƒ-ï!HˆÝ6ÂAöQ˜Ás›[Ó
\3‘òÎ^"‰£jé8›~O
žýÜ3
-zÂj“¡þ𰐵aû:£:¾j£Ã!á®PŒ;•w†ô´Rž0ÊìÄÜQ3Ѽy¿
¼äÂ%‚\ŽºD¡ò	’4Ñ4Õö&Aì[0ÙɦèOIU;áßg¼
-ÞÇA{鮦¦«ºZ›.æ9ÍŒrÓ,zPÃæ–OOiz”UˆùM¾ÓOMmt3÷31 ·”J†AçšÁ»3;g!ààüB2Ø<%þô©šîõôì8Žò±ãÔKz5¥nôy„4Î$pÀ[AZˆ7¨7<¼¥…aÃóýnG«Þ/ÎTð}v"Õ—àÜÀ.©dïÿ¿=[4]‘:j]qû¥­Â–…ïåö1—5h+ì’goOì4œRµ5J$1Èà…ˆ9èt>–|—'Þ–Leç¡$÷PrÊ…äìFµh`«‘-@™ò§~6˜¹6Q²¥{­‡X8½Óˆò_P[ìÖ…ÈZÂâim!q±Ñ¢e1µ4É·:sØæö‹0Ešê%×WþX•ê_ðûÛx[r­LS·€™s>Þx]Žö/Ó\F„A!ʹMÁM¶"Ùpgœ¶µéœ8ÑFaâºNæ6qQض@¤\N&b˜Ñ§x°ø+$CvIΗP!¢Û%Tx’I
/`qÉR‡!Y¤
-žu.ñë¨6Œp-ŸŽ×_2Hû‘¹}ͧrøüuî´_:M›Ãli:J;Ë	¤ñb(†£.º\w(‰áòŒ#—ÌGvÆG¾Ó©£Ð'	O}aÉ2Z·‡»ØÞ;¹]ì"F©Ôì*@ÊÞÓν`l]c@ÍNù“;h†qÆa(–]oÚæ¹¹Pb<rAä•‚K ØõV
~mß³}ôiî·¹V/:YÃvý1HÊâ°ÕGªÿ¯ÕÿÀéÉ—º|œÕ3FÕZ„ß{üj²ôZäf£åÄl¨M4¹¸‰í(-×&¨,»­i`Î:eW¢U¶Ý±SH¿NLokNØRLVü½
-üÕLîhrƒS֍s¦qrƒ“©–%»©µ+%ËœH5¦t~ó<3w¼ù¡BÇ°	4ºn$ ºué—%Ÿ²:]¿
-ØeÃÆr‚Zu« ‹ˆvY­‘êˆpm[·Öº\8JÉ]¿
½¡}r˜‘ù2Ý(Œ	Tyy3wìkº%MkïK'ñp}È
u®–f>2žê$DS+î‡ÉÈ	e³ewño²fúûŸ
-sendstream
-endobj
-205 0 obj <<
-/Type /Page
-/Contents 206 0 R
-/Resources 204 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 217 0 R 218 0 R 219 0 R ]
->> endobj
-209 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [194.6375 716.5495 227.0456 727.3887]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-210 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [280.5773 680.6839 312.9854 691.5232]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-211 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [338.3317 680.6839 370.7398 691.5232]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-212 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [325.0489 552.6042 357.457 564.4647]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-213 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [112.7078 517.2966 141.8683 528.1359]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-214 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 505.3415 105.8213 516.1807]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-217 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [333.1098 273.3621 423.3722 284.2013]
-/Subtype /Link
-/A << /S /GoTo /D (available-typemaps) >>
->> endobj
-218 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [253.4973 169.7506 313.0848 180.5899]
-/Subtype /Link
-/A << /S /GoTo /D (input-arrays) >>
->> endobj
-219 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [403.0247 169.7506 474.368 180.5899]
-/Subtype /Link
-/A << /S /GoTo /D (in-place-arrays) >>
->> endobj
-207 0 obj <<
-/D [205 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-208 0 obj <<
-/D [205 0 R /XYZ 74.4095 753.0247 null]
->> endobj
-133 0 obj <<
-/D [205 0 R /XYZ 74.4095 506.3377 null]
->> endobj
-34 0 obj <<
-/D [205 0 R /XYZ 74.4095 506.3377 null]
->> endobj
-215 0 obj <<
-/D [205 0 R /XYZ 74.4095 471.6552 null]
->> endobj
-134 0 obj <<
-/D [205 0 R /XYZ 74.4095 320.3306 null]
->> endobj
-38 0 obj <<
-/D [205 0 R /XYZ 74.4095 320.3306 null]
->> endobj
-216 0 obj <<
-/D [205 0 R /XYZ 74.4095 285.9271 null]
->> endobj
-135 0 obj <<
-/D [205 0 R /XYZ 74.4095 158.7917 null]
->> endobj
-42 0 obj <<
-/D [205 0 R /XYZ 74.4095 158.7917 null]
->> endobj
-204 0 obj <<
-/Font << /F51 119 0 R /F8 95 0 R /F14 193 0 R /F56 126 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-222 0 obj <<
-/Length 3687      
-/Filter /FlateDecode
->>
-stream
-xÚÅ[ës·ÿ®¿B_:¥Æû‘~r\;IÜ´V'ÓI2Z¢eµ¦¨’§Óÿ½»xp8‚”£$ã9ëî°X,€ýíGvLá;6’HêÔ±±Žh­ØñÙêˆ_@ÛgG,ÒH©‰TÚÀÃDë\qJ¬Öüx^2ùôôèñs¸eŒ8¥øñéëa,͈ÑΟž7ûÛ	›Ý¼YnNæ¨ÙÓõjµ¾
-÷§'‚ÍÞCó5<³Ùr·ŸœÌ¥³³õêúíòç“N¿|üÜ;â4×8=ž3K„ež÷é	7‰׳åj7RèuÂíìþC³Ùöþƒ—p‡vöŸ7‰zu
oá‚1ý«ï)SH±¸ÿ/Oø»^ÌÃ8kdæ¸	Ô7x_ÈǸ†[ óí:< ¯u캽õÝR×5
-‹c.ÏCûâ6¾X¯¢,lvæ¹áõþÄÊ9™[ff§obs5:¬ _4¿KaÕ^!Ï<ëíIŽžæýf@K­ÕŒH!tP
-lÚ\Dšê‘éçe¯åεlQ–ë´r8·7aÆòHF&µ<#%ÍT{¤’h£e-Åwä¼Xb­³/D¢ß#BÃEx›±úÆïéXggRíY€D՝S
-ð±|´ ¨vK„¡›Ým¢Ý$UD¼‚‚­‡[;{ú(¼ºK:w†H|ÏqAÇŒ¾I
-÷ØcÔœAVï¡Á¡‰c6`ý—ÂÍ>]­žtŒÕ‡îb¦ï¯cËö@uÎÖ´»›…ÍíI‘-.sD+;ÚìØd°ñ™´¿‰|^Ò7ã7L÷©27„:&GRŒU9Qõg¶€ZWŽ4èÌj™ì´<ïʉ6áÝuñî*<|OÅöí6õ*Y\O·ü	îo³¾*(†NÀˆï¥t)²Ó„	¦až(ë6jÊ&r;óύÓ`³dì‚àZ‚w’ŒPKÿ&„Èþ
¥ƒ^™Ò¯Róö“ñ–%ÓÎ¥Äd ëï¸;â'‰ÌbÉ"„åÚ@#¬Âé>¡>‚˜€‹YP¨ZÁaÓGpû¸vuÜw¿9Iš7V®×¡ßôúû¦ÿFêulÊ+š7‘Ñ"¾þKxÝéáõ2ö¸ð=ØìõÌ~Œ"¬#iÞ4¸~ö]â¹ ŽQ1^¡qdìxþ–«ó:J·Ž“‚&F¥i–æÑÞù_EÊ5h¹ó/£™ßm‹?lÓĹÔ0Ÿû[ƒ®<À	§÷-FxË€é³õmäpPÜúR!v@Rb€½ßÊá¨`Ë?ß%‹ÝøÎT8½?E3v[¨|Z¾ñΦU¿öVŽ%c}zü=p‚½þ{=…ë¯paªòO¸>…ë+¸žÕ»~eJ¶}§˜ËaHØ7—çQ~œÏ¸N«ý©°ßr*»Àð°ûr ªÚ¸•óÙÞWƒZˆÁËëhPÖ¡!°:Y²šÌÚ°I6ákàØOX‘";t¸÷Ž{“${?­_‡¿Í m("8#`¯YŒ+CQ³ºŠN%LMŒ£	¥4E/‡éw»‡lW˜Ý•€Ýј<+¡{ƒNkb;=C$‡œ*0‚DÃ8;û<„ŒøßrØ0PHiiŒÇ §Zƒõõi|ç*Žƒ$ÿñýbD‰Ä)ªYÜÔÏ˘™I5¡ Hø*©³¸
-ï6¼bFEÈÏCù‚–ˆõ7or(kˆvl7¤ÏL(·/‡Jôó²C›C5lÍ¡˜ÝRË3ΡU_Š–YVe˜‰ ¢áµyܽR)!R‚f©=4Ë*éwfY™èÐ,«–bg–Õ¼e†£{[i·š-®+ªSE>$Œ›¯œGMºÖv ˆÚ¹¬'kh…ŠÛd*}}n¼BXÂ9*ØaÛ‘éûKÒ²Å%y	|ן5bhEä©ÝíHD{†ÖŽúX
}*.¸ âÞjø}XÆ]j -l«R‡.M¦ïËײ=ÒR¢X³U£EÊT{¤Ð†X	R%EQµ+„®gqVèä:Â^ 䤄~M¾”´ÜçPÔE—Š©ç¡%[ïmôïÓi;Ÿíöò¬IÛ=ßéÚ×ס[¨á0SnòˆG)©¤ãû0„0¼ñÒeìñ6Œç™Š.s.ÁHÖã™ng¾VØP¿‡öX˜”¾8‹Ì[g}d„´O?†Ö£¿C
|C0MœdrTª	9T¸î'iN´”n$À©Ìžl}õ5دzIöóæE ØV	íM¼ÙÄ­Á±žëu™G”Õ¢vaq™ó>ɯ Ñî.3Z›r¼#œÁRI§!¡ƒ€zOU<ÑÏË…ù1ÛC`zZ0>’gììÕ),Ø«X-ÅtA•S 5Öº™¾/BËv·ç•
-Ý_€LµgtIÁrU>¶Dn“±¿#Ò*µþÃ’ÊJâáÓåϱ—ߤ:k=^¤¿!jXW™œ3)ô-Ô^«ÂŒwÀ8qFŒÒ`:iꮵ։Œ·)õØÞeÜÛâøû–eܶ!ƒhi7…§ð°¿ðë;*Eûæ­GШ†b¬w,SØEÄ9Róxè
-~Ôq´ás”ám<´çºÏOœ˜Ý^Ý\®¯¶“Ƕn&G|úfȶF6—Pmu‘·u…øµjøƒÖJ­’y+“Í™Léµ·¡ÉÚz7mÛe>sÚ„R?ºÿÙjqæSüHm€oÚ¤eL;W²»ÄCàDJñ6(L¤k£‘«ñAƒã)²Ã¯Š#‡·ƒ0Isòðµ²­¼oß’ ÈšAbŒg„¥ïÌg+¥Û.‡ƒ…”ÍžM<¬bQÂwUª|˜bð6¥ø jyW&»©ŒOeÞ£PëÛá̦ÉÈðû_(ôð¡ª#Dˆ††ø-ÍÙf½ÝU†Éœ<¸6º»FZ²òÖWʉi¦òqk#£`©a•`?}÷=>‡±¿<¢,¤<¾CD˜süxu$ˆ³*=¾=zyô÷Â=&†{äcŒè>°(GÅ/:Ь.R=®’\1b ¨½'¢V˜ÊW+MŒ„ ¿’åYu w›Ó ¨œ‹ø·Œ 
-…{=a”¬…Å4©N¶hL™d{. ÔU‚±©ƒV.U–^Ä
-çWþjFà2ì-Ñp´·¸š „½Å‰ç:N}B
-érT|gðûXƒEôïè Ï¢ÙùhÂAC
-8x}Ò”H"„RD˜U÷L¡¤êà%QM©cSQDS#+~xÃ=Â2Øs帬¥½)¿‚¢˜@í‚ŽÖ„é}—©Za*ð f˜¯\<ZdeŠ·)Ñbd/|T y•¸„^M$¤Å¨<„oÖS8dÖá&ˆÝ@T„ó\jFÿ¥ ~œcµœì+ת‡p+tRè 9]BNgÈi^®Òä`“%àƒñÚ	ÿÎØ÷§¬°{°WPu°—¨î…½‚õa¯+쀽RÚ«
-7+T¾ËÕ¶ëºðãGªuñ2U+P…?XdeÁkTòôðglÖ¬x›ðgÜ$þŒ	¯B
 ‹úÛüQ‘	°»ŒÃ82vŠœãžüH´öP$JÝ÷µÎZQ 1ägÊãب\÷a.QÁÆ0iÿ—ÈSÚîø**ò¤Ú
ËLuX–¬–}a3,+iƒ>âí:jLžÀ
-Ö_ÃDÔŠU—`ÀBC\TKÕ'çY­ðÇúðè˜Ö¿DÜñ‰Rî”ǃ¸Oä°o|ŒY}O”I$ìQ£Žª s}o4®“¤¶šÿ㨒“mHý	Àbç¡<–Ù¸Öå±1 Ør0¢ñEøÂn˜îV•kÈ]3©XP·ñDܤĺz7âѳ„|‡%įn…ä÷1…ü0S(džñž)”Y7BL2Øø0¡hóâL×q쉱Çór}€Í›Ç­ÂzÜV5å{D¡‰’Üí5ˆ`Ø-¸¡=± êÄDu/ƒX°~ ƒØv0ˆ¥´Þ
-þRƒG—ÓɁşp°þŠeªVŠ:9D
-0•û'¥ÎgR×ÕÓ±ªâ„9[îãek²RªðôMþá—e}§’ty8H¥‡Å+ ýÖtRü½Œ,AŠâ'Ø n )¾.VpGâ@‰1£sœß9@0´äû”‚ªƒÇDu/<¬]a<–Ò†¼vÑMÕ)S²¿^™ª•¡F#ÖÜ´­Eè¡‘æToáOûÓ¥P½—”‡ÃQÊŠIX$•@ÓpS¦v€™‚êËrJ¬vå±.õ(<§Òø÷”‰bNÒKH g[‚àí,¼Ö¬FÞAN\€Ï•ƒ}µÃ_YÌ/nPÊ?$sÁYš=va ꘅHt/«00~ £Ð“t°	…¨Ez@
-·âá¤KüöH'áÚÖҝ…
-uèò"‚%}þØͪ8µÄ:ɺœ‰ɪ¬Š	bªÛ“T-Šäª(×㫝åzÌ{Drb›lb¹ÞþG…—é4u}[’ºðLIµŸKÿwA1ñõŸ°MŠC°%‡CÌêëö';Ò°/àz¿•FX¿ðß{‡÷ŸÅS…ôýôˉÔlW††?®R,[ÀgÖ=¹'B/©vC?SÝû%ë‡_ØŒþJÚüLÀŒÿ=&P	~ayùm@çŒÁjcýmÍT­$u¡#Az5N/h{@Gâá–U™;3LÄØe:иé\ô4¹}8À§|ÇoVýèÅGKQBÿÅy:­ö_í‰	ƒ‘l‘ƒÕŒ>x¯ŒÉL|ݯ!UÈ¿3¼§-ymÆi|þ6öù&^Ïâï2Ê–¤cvHÒ¸2Ós'šyAÔº§“†gN8œÙù܉ñþÆ_{*endstream
-endobj
-221 0 obj <<
-/Type /Page
-/Contents 222 0 R
-/Resources 220 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 237 0 R
-/Annots [ 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R ]
->> endobj
-225 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [110.0908 728.5046 142.4989 739.3439]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-226 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [162.8935 728.5046 198.2108 739.3439]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-227 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [489.4544 728.5046 521.8625 739.3439]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-228 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [92.7704 715.9915 128.0877 727.852]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-229 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [486.6948 540.649 519.1029 552.5095]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-230 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [92.7704 528.6939 128.0877 540.5543]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-231 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [337.2248 528.6939 366.3852 540.5543]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
->> endobj
-232 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [432.0992 528.6939 464.5073 540.5543]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-233 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [148.2193 492.8283 180.6274 504.6888]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-234 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [202.5826 492.8283 237.8998 504.6888]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-223 0 obj <<
-/D [221 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-224 0 obj <<
-/D [221 0 R /XYZ 74.4095 753.0247 null]
->> endobj
-136 0 obj <<
-/D [221 0 R /XYZ 74.4095 481.8694 null]
->> endobj
-46 0 obj <<
-/D [221 0 R /XYZ 74.4095 481.8694 null]
->> endobj
-235 0 obj <<
-/D [221 0 R /XYZ 74.4095 438.7979 null]
->> endobj
-137 0 obj <<
-/D [221 0 R /XYZ 74.4095 415.7379 null]
->> endobj
-50 0 obj <<
-/D [221 0 R /XYZ 74.4095 415.7379 null]
->> endobj
-236 0 obj <<
-/D [221 0 R /XYZ 74.4095 383.3746 null]
->> endobj
-138 0 obj <<
-/D [221 0 R /XYZ 74.4095 163.9773 null]
->> endobj
-54 0 obj <<
-/D [221 0 R /XYZ 74.4095 163.9773 null]
->> endobj
-220 0 obj <<
-/Font << /F51 119 0 R /F8 95 0 R /F56 126 0 R /F44 92 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-240 0 obj <<
-/Length 2912      
-/Filter /FlateDecode
->>
-stream
-xÚÝ[[sbÇ~ׯàQ¤–ÉÜ/~s\v*®ÄNåÉv¥X„µŠ%X´Šÿ}z®Ì3hÁU×+àôéþ¦§ïs 3ÿÈLqı3¥
’RÙêñ
-ÏîàÚŸ¯H á\".¤‚«A1ÒRÒÙ"gò§›«?~o	AF:»ùé K¤¤Q³›ÛﯿÛ>ïï7ëÝüÇ›¯¯¾¼Il1gˆi­z¢‰A†
-v—áˆ1®VÆÂÁâ|wJ*-*c#’YTïçŒ^ÿ:'×û9#îÍûù‚áëu
“0†¸Q¼ÀùËÕ÷?âÙ-@úú
-#f4Ÿ½ÀŒˆ1töxŐÑ"~|¸úçÕ?¨ÃlÂ⚊÷ÎB~‚ÿî7ðß¼~ÀËÔÀÓ²)CB0ÓÕ¯D†IqD¿.Sh9‡Tç@)A”ÁÅDå¶}½pÏð²h7 \Pø~NuT6•×ëÏ,h°"™±“ 6Î8@°lV@ü^ËÀèþŽ\þ"ÞªEƒÆ썟[ê;+ÿq½±b-œÝgÍöFðÒ0¤1}MDªENæ4AŠ=£ðÃW‰ÌBùÕšGZS5©Z¹…Î3ࡕؿϽa¯·ðú¼ÖðZ9«·ªÏf°žìßðÚ&ÒFËö–J¶åßÏ¥ýîïÖÖ×Vãˇz¥TQ„•âÕJí¥§»@ó]¶æDß®9ÇÓ²õnlìf»©ñ0LÁÿØ´â#Ñ4†Ò‹Ãö-(–{u¯,d!ÀfjŽ„.Üƍ>î'A¯»}øúÞ]²þµ¬w«xåmK—¿ŽK¿óßn긑IMØè­ƒÄ(á&ä	Šp¶ TŠdˆêšq&êð»Úº¿n…ÏpŽ *ÂÖ	 8é³Cqd¸È9vB1‡«”òƒàÅ’iD59+ç<Ž‡âDõŠ±†Xcä(gdS¡8’Cñ¤ÜC(®åöCq.6zçÞ‡Üý<Úü!"[çJV_jUR$¹¨#ofÁB4D•jÇÃl¤o×S„Ù†­ñÛLŸ`j#ŠnR›‰j ]ج£HO›ÁŽÖwwºmC	U^©13Š¨q1èÓÁ«íSà¿ÞùÛM0„»m͹NmŠ !	›	&£ŒØ@¢_ä7´i®a;°Ž­¯@À+qT6¨Zé…GqØ{Š™,Å¿Ò‡¸íH›JPlR
-¬§T/jq63‰æÜœ”"ÃEα“”¨ Î*lá>.÷+‹øÝ	éju„É9ÉèÀáx*
-4LD‡hú% ˆÑ°@¥	('›H@‰l˜€¦å¦ÔÈí& Bl•€–YðRúC¨òJÇj4¬4bXÒ2HüŽµK;ž•"}»È"/4lGYIq¤°Ó*NTé kZ…ð©ì“Êí~êc‚¸FÍ©JJôÓ0[¶%1$ƨ&ªt%!ÊZJ_Æt·œƒr~kîcqß
1*;Z¸aF6冑l솓rnXËí»a.¶rÃې»v!Ý?…Ï·§¹b·%¯Ê_§$淍ch]™ÐÕ¢;h¤o—_¸HÃvd{¯–iå'ªiéŒ(„¹&¥ôSêCcz^Õ‡³öú³½”Êì×sÚ,÷9ê|¹ïä.éËX¾Ÿy%A†è,î¼ôÕöñ½~¨Eà^îÓ8¤§AQ2%Ö3í±èSÐ|¡Œºþʺ8¹ Š§ÿZœ­øÆkjŽ$³ñ,Í’C÷. ÙÙÚ‹Ûá’¿sk£Ç‹ûV€:áƒS¿,näâz‰ÎWÓîýÛ|6´ö÷Ö6±³^„ClïÉZŠ÷@b…ŸñŠ•;<ºMJ€AGP«\ßTËÌÞnÒbªp©¢õ/ÁŠìæBz
­â¶q–òxœ~vý)˜fý|	¯R¹¾©*ðM¸þ,È–Ÿþim…P–gääÄC%L™Œ¹÷F?…ZHêçPE¯DÌ †jÓ³KñÀo‘3ìTâ /êŒwÛf5›Á/.2¡cÚiJ€Y"fpLÀ<Œ CŽÐJàv[¢ÝD#.0B…1ÃŽ0*xo¨.1®¶ÎÀå>ØÿÜ4ÜÒmðQ;Æi8í:£!ËyoÉÕ›²©rüâ7jà8.Š
-ÇŒj¢nŒTòqRhªk¡Ý¢1—yâ1N,-߇Íܟغt„#%Ò¢Záñ1P7K-
-Ċ則7Ô(D°˜Rv"šDÀàš€. ôÏnº6Æ48Â£ÃœlÂÊÙÐ̦å&;käv
­{ù)õk›H‚Bù]®ñ¸¥Eúvµå¹f;š;QÓƒ=NTéF""k]ŸÒŒ(A"`hFü€ï‹å®×e@“M˜4Õ„l"€áQÅI¸!Ö¨DûñDÍÝz½l¤W6g©¼Ÿ±ó¢|kpç*YkF”ªn¸êâTÞ€YÌYæ>û–ÇÑÇbš?€¯šQ|çÔ–ÇœÓL=ç
›ýxšRKx?ýK÷Ûy»|ÝfnX9}¹šÉ)AÚz9œ9ÀòWKw¨át‹}§$ůÂc´à~œ*À†)­ºV‹âå)µOoüöìÖaËÚ™„h¥Œ˜1¡—bý"¿¡Í 
Û³ÍÔÀ–xšó@5‚c†¸à²D±Žž÷çàÒ[~Yµµ›m5E”bUöŒß ù¿àõW÷j-	Cþ jª-ã)c•›“œÐ•1*¡aüb]YÎðXW–h]ÙÅÀ¥®l€.veÀS»²‹¡M]Ù mìÊJ´[Ûê¼485¨ž©ËÁüF(ˆV ÏnË d†ìÛ¯NmËrÇÛ²Dõ{m˨RCy:(™s²‰’9‘
Kæi¹©dnävKæBì'Ôœ•‹wgÍj{íY±Ø×ôg“*?4h“ R‡V xE‹F!l»Œ½edSöÉÆö6)÷`oµÜ¾½åb?­\ã	-Z³Ún‹V¬ö”mRׇmZzlÑ
-駟èV:ôó<‡³Š}û,Ï«NA)‡â^³aÐÌȦŒ8’xRîÁˆk¹}#ÎÅŒ¸»pÖ°	ÆüÒ<všÇÖƸ!ù©xfÝDô*åЁ\	ÍÎMžcCIB«H®±ÿ“ºÓÐVù·«­KzÜÉ «+î}PtWƒÕ<¹[]oÓämè¼ ÛÚÊ܁$6ý„BÌS¢<ü¢–Ô0…4•êU]#£ZW# Ê;bm«Úµ¿]`Œœ>/rúÖëj¦#—‡¶úU¡¨]>R
„sÍÔ1…ôÚ1A,?@uŸsoeÝùó0»3½6Ì6»Ì aÁ9vµÆÆCqAfµZïÜY#€éØ»#\†“V¡l¸ eKxð€{¥3ÿáˆJÌ/> ’PS¦…–E©eH÷Ùƒ’«}¤(ã3¨G`•ÔÖï–÷!§‘‘U•ÐOQlÛ°3û$žVT‰~‘ßÐV3
ÛS§
Г¦Y…§ž6Dªi¶’K©Kå´At{õC,ÌÀ€ê£ú—¨ãŸß揸ú±Ž-f㣟1·ÏU²Ì³iÂ{3;†0c±¾9Ðáža¬<~~\þìúÈ6_ıöͯ%íy“„Àp‘sì=
-aÜ°LpÙöîïï‚ò¶áïî„®×þDvÖadÎãx×›¨~¯]/áÀ¥ÿœmV¿eTå[¤Vo“BSñVíÖn¹ÌSlzæô)æõQéÖý…·Ï+^®mâQÒ@Þ¬²¬*¦£"D$%“
-NDÓ¢5·ž,DŸÒÄ_ÎmOPº¿&ZDšEFÔé{Ø·¢‰“E kqéç¿yÿÅWýendstream
-endobj
-239 0 obj <<
-/Type /Page
-/Contents 240 0 R
-/Resources 238 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 237 0 R
-/Annots [ 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R ]
->> endobj
-243 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [271.0812 690.5936 303.4893 701.7118]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-244 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [215.8886 605.3217 251.2059 616.4399]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-245 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [370.565 589.4719 405.8823 600.5901]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-246 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [240.3865 520.0498 275.7037 531.168]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-247 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [338.6766 520.0498 373.9939 531.168]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-248 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [279.4096 506.1473 314.7268 517.2655]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-249 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.8608 396.965 298.2689 408.0832]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-250 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.5279 383.0625 293.8452 394.1807]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-251 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [368.8832 355.2575 401.2913 366.3757]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-252 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.8608 273.8803 298.2689 284.9985]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-253 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.5279 259.9778 293.8452 271.096]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-254 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [207.6747 230.2254 242.992 241.3437]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-255 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [389.5264 218.2703 421.9345 229.3885]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
->> endobj
-256 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 136.893 282.5284 147.8219]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
->> endobj
-241 0 obj <<
-/D [239 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-242 0 obj <<
-/D [239 0 R /XYZ 74.4095 755.3439 null]
->> endobj
-238 0 obj <<
-/Font << /F51 119 0 R /F44 92 0 R /F8 95 0 R /F56 126 0 R /F14 193 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-259 0 obj <<
-/Length 2796      
-/Filter /FlateDecode
->>
-stream
-xÚí[Ks#·¾ëWðH¦v`¼¾9©8⍣›írQWR"‰²(YÞïÆs0 –Ü*oUj‹âpÐÓÝèntÁ’†d¡8â؈…ÒI)Èâòþ/®aìg$Ðp.RÁÊèÀ<Ê([T!m¯RJeÌ,%	RÒ(Kö×󳯾%|a‘T.Î?,…k·ÙùՏ˟0Q«ŸÏ¿;ûûybIGZSµÈÎåFª¹\!s¹Ì -±·+²|€Ï3|þ²eîÖ>¿„¡
|^Ãï-|.àóßpÿÒ=
-jõ­ÎD—Šƒ~VÆ»ÕÀˆX>Ùg¬œø<æ;;F–kûE—¿­„\®ïÍƏm?øo쿬zá΃ÓÈ]^nVTø³±Ìw–nºÑÇÕ@¥¿ÿÁÞ¶÷›+øtÛX™»  ™#¢k‡  ´çÿ‘ªåþ@Õ÷~KèèüBhÝ÷™ÌÑõÎí÷+’nYW_…ß÷ÎK3KŠ$™‡]ÞÇçýsT97ÞÛAæÝzç<¯öÏú"ÜÚx’$róy®aiÅYÏ#YË%‘¬ï“¦ÜÑ)¥ÜºWr±·¬áóûnYÿþ¹|²4˜X	;iÇ>´þvc\Z~ÿ6F»üb—ª1°Ì6þ¯d7…‰Y†9`&±Ùâã|²Ä¦åHw²	0Éà9¨~mg¼}ñJ’Óå??x­v[0'¼–›'{ë&#hl'ÿ(Ÿ=Ÿ^¶~4†dãÆÖÎiî"JXw^Ü‡õÎ[Ó`°¦Ö`M‚ŒÞš.ÍYB"}¢Ô>/¿ÚkµÜ^@¤pŸ’/­h˜$gÚOÆ£x:Ú(pˆL÷ÛËFÅËKgŸõsLʪÐcîCÊ$Ò‚ÅðÞ9,¿	æ}
-Qmï}_­)¶Í®$¢\›Àô%¤ÕâÚë5:ÌÙ“†¶•;7¨Ëÿn¦ñiXn©ØhwÓ\‡µ“»Œ±dKYïÂò_É#p]xÄ“Ç8€ëj´Áý<ڀ͞°²v–áy ×¢lèÀMgêl;H
-Ê”©¬ bua£…MQ¿žýø3^\AFûî#L¾x…cèâþÊ:†Ÿwgÿ9ûw–ô¿!gèrÞDOêeB­’ÏÛyz‡•­ˆ>r‘aO;ÈÄRH3Up=†,‰h¢­ \“Óiö´•ÀgªíåÖŒ§ÛëdÛð½+u§D!¬sGêžvt§¯XjVXúînk5é	]*z:'†==T#¡È>ÿfÿxÄi“Ê6$”Ÿ°Àð!å< “€ŒÜGD±*¨#¼*Åžf„À0,o	Šg<œâ“Ú±O¢²zÿPO;\>®Lþº’Ï%X‘Ÿ:‘+ &xå[’ožb
²˜#ä½Ý×{! ¤Q¨5˜“5 `"ëBÀ¶Ügr«p"ö}×”©Q›¢‘yÁÔˆaI§x0T¬k‡è\èBù+×›´õ»œ¤yº$?dӍäóÙæÚ̘Z¥côÅê`¤TÆ(€EÀ£iòDÕV‚aŒ¸zªEDí7¹†)Ù‹·Œ¬o‘¬oM¹c¼•rëñ–‹-ZŽç~YØmCë±9¬å(Œ{ÒA5}®f†‚'(§Å