Merge lp:~fcole90/ubuntu/precise/python-reportlab/fix-for-1005187 into lp:ubuntu/precise/python-reportlab

Proposed by fcole90
Status: Superseded
Proposed branch: lp:~fcole90/ubuntu/precise/python-reportlab/fix-for-1005187
Merge into: lp:ubuntu/precise/python-reportlab
Diff against target: 24029 lines (+8641/-4994)
195 files modified
CHANGES.txt (+49/-0)
PKG-INFO (+1/-1)
debian/README.Debian (+1/-1)
debian/changelog (+11/-5)
debian/control (+2/-2)
debian/copyright (+6/-6)
debian/rules (+6/-0)
demos/colors/colortest.py (+2/-2)
demos/gadflypaper/gfe.py (+2/-2)
demos/odyssey/dodyssey.py (+2/-2)
demos/odyssey/fodyssey.py (+2/-2)
demos/odyssey/odyssey.py (+2/-2)
demos/stdfonts/stdfonts.py (+2/-2)
demos/tests/testdemos.py (+2/-2)
docs/reference/genreference.py (+2/-2)
docs/reference/reportlab-reference.pdf (+168/-168)
docs/userguide/app_demos.py (+1/-1)
docs/userguide/ch1_intro.py (+73/-53)
docs/userguide/ch2_graphics.py (+8/-9)
docs/userguide/ch2a_fonts.py (+1/-1)
docs/userguide/ch3_pdffeatures.py (+1/-1)
docs/userguide/ch4_platypus_concepts.py (+1/-1)
docs/userguide/ch5_paragraphs.py (+1/-1)
docs/userguide/ch6_tables.py (+74/-8)
docs/userguide/ch7_custom.py (+1/-1)
docs/userguide/genuserguide.py (+2/-2)
docs/userguide/graph_charts.py (+245/-64)
docs/userguide/graph_concepts.py (+2/-2)
docs/userguide/graph_intro.py (+2/-2)
docs/userguide/graph_shapes.py (+2/-2)
docs/userguide/graph_widgets.py (+2/-2)
setup.py (+8/-8)
src/reportlab/__init__.py (+13/-9)
src/reportlab/graphics/__init__.py (+2/-2)
src/reportlab/graphics/barcode/__init__.py (+2/-1)
src/reportlab/graphics/barcode/eanbc.py (+18/-11)
src/reportlab/graphics/barcode/test.py (+4/-0)
src/reportlab/graphics/barcode/usps4s.py (+2/-2)
src/reportlab/graphics/barcode/widgets.py (+2/-2)
src/reportlab/graphics/charts/__init__.py (+2/-2)
src/reportlab/graphics/charts/areas.py (+2/-2)
src/reportlab/graphics/charts/axes.py (+100/-45)
src/reportlab/graphics/charts/barcharts.py (+111/-24)
src/reportlab/graphics/charts/doughnut.py (+69/-25)
src/reportlab/graphics/charts/legends.py (+2/-2)
src/reportlab/graphics/charts/linecharts.py (+2/-2)
src/reportlab/graphics/charts/lineplots.py (+36/-13)
src/reportlab/graphics/charts/markers.py (+2/-2)
src/reportlab/graphics/charts/piecharts.py (+478/-144)
src/reportlab/graphics/charts/textlabels.py (+2/-2)
src/reportlab/graphics/charts/utils.py (+70/-21)
src/reportlab/graphics/renderPDF.py (+11/-5)
src/reportlab/graphics/renderPM.py (+28/-19)
src/reportlab/graphics/renderPS.py (+10/-5)
src/reportlab/graphics/renderSVG.py (+18/-7)
src/reportlab/graphics/renderbase.py (+1/-1)
src/reportlab/graphics/shapes.py (+83/-5)
src/reportlab/graphics/testdrawings.py (+1/-1)
src/reportlab/graphics/testshapes.py (+8/-4)
src/reportlab/graphics/widgetbase.py (+2/-2)
src/reportlab/graphics/widgets/__init__.py (+2/-2)
src/reportlab/graphics/widgets/grids.py (+18/-5)
src/reportlab/graphics/widgets/markers.py (+2/-2)
src/reportlab/graphics/widgets/signsandsymbols.py (+2/-2)
src/reportlab/graphics/widgets/table.py (+2/-2)
src/reportlab/lib/PyFontify.py (+2/-2)
src/reportlab/lib/__init__.py (+2/-2)
src/reportlab/lib/abag.py (+2/-2)
src/reportlab/lib/arciv.py (+2/-2)
src/reportlab/lib/attrmap.py (+2/-2)
src/reportlab/lib/boxstuff.py (+2/-2)
src/reportlab/lib/codecharts.py (+1/-1)
src/reportlab/lib/colors.py (+47/-48)
src/reportlab/lib/corp.py (+2/-2)
src/reportlab/lib/enums.py (+2/-2)
src/reportlab/lib/extformat.py (+2/-2)
src/reportlab/lib/fontfinder.py (+2/-2)
src/reportlab/lib/fonts.py (+2/-2)
src/reportlab/lib/formatters.py (+2/-2)
src/reportlab/lib/geomutils.py (+2/-2)
src/reportlab/lib/logger.py (+2/-2)
src/reportlab/lib/pagesizes.py (+2/-2)
src/reportlab/lib/pdfencrypt.py (+2/-2)
src/reportlab/lib/pygments2xpre.py (+2/-3)
src/reportlab/lib/randomtext.py (+26/-4)
src/reportlab/lib/rltempfile.py (+2/-2)
src/reportlab/lib/sequencer.py (+10/-2)
src/reportlab/lib/set_ops.py (+2/-2)
src/reportlab/lib/styles.py (+33/-3)
src/reportlab/lib/testutils.py (+2/-2)
src/reportlab/lib/textsplit.py (+72/-35)
src/reportlab/lib/units.py (+2/-2)
src/reportlab/lib/utils.py (+19/-13)
src/reportlab/lib/validators.py (+2/-2)
src/reportlab/lib/yaml.py (+2/-2)
src/reportlab/pdfbase/__init__.py (+2/-2)
src/reportlab/pdfbase/_cidfontdata.py (+2/-2)
src/reportlab/pdfbase/_fontdata.py (+2/-2)
src/reportlab/pdfbase/cidfonts.py (+2/-2)
src/reportlab/pdfbase/pdfdoc.py (+174/-7)
src/reportlab/pdfbase/pdfmetrics.py (+2/-2)
src/reportlab/pdfbase/pdfutils.py (+2/-2)
src/reportlab/pdfbase/ttfonts.py (+2/-2)
src/reportlab/pdfgen/__init__.py (+2/-2)
src/reportlab/pdfgen/canvas.py (+132/-92)
src/reportlab/pdfgen/pathobject.py (+49/-22)
src/reportlab/pdfgen/pdfgeom.py (+2/-2)
src/reportlab/pdfgen/pdfimages.py (+2/-2)
src/reportlab/pdfgen/textobject.py (+16/-5)
src/reportlab/platypus/__init__.py (+3/-3)
src/reportlab/platypus/doctemplate.py (+18/-6)
src/reportlab/platypus/figures.py (+2/-2)
src/reportlab/platypus/flowables.py (+544/-17)
src/reportlab/platypus/frames.py (+11/-5)
src/reportlab/platypus/paragraph.py (+167/-53)
src/reportlab/platypus/paraparser.py (+32/-2)
src/reportlab/platypus/tableofcontents.py (+2/-2)
src/reportlab/platypus/tables.py (+106/-41)
src/reportlab/platypus/xpreformatted.py (+4/-2)
src/reportlab/rl_config.py (+2/-2)
src/rl_addons/renderPM/_renderPM.c (+5/-5)
src/rl_addons/renderPM/libart_lgpl/art_svp_ops.c (+28/-1)
src/rl_addons/renderPM/libart_lgpl/art_vpath_bpath.c (+13/-2)
src/rl_addons/rl_accel/_rl_accel.c (+3/-3)
tests/__init__.py (+1/-1)
tests/runAll.py (+2/-2)
tests/test_charts_textlabels.py (+1/-1)
tests/test_crypto_algorithms.py (+2/-2)
tests/test_docstrings.py (+1/-1)
tests/test_encrypt.py (+2/-2)
tests/test_geomutils.py (+2/-2)
tests/test_graphics_charts.py (+51/-2)
tests/test_graphics_images.py (+1/-1)
tests/test_graphics_layout.py (+1/-1)
tests/test_graphics_speed.py (+2/-2)
tests/test_hello.py (+2/-2)
tests/test_images.py (+2/-2)
tests/test_invariant.py (+2/-2)
tests/test_lib_colors.py (+2/-2)
tests/test_lib_sequencer.py (+2/-2)
tests/test_lib_utils.py (+2/-2)
tests/test_multibyte_chs.py (+1/-1)
tests/test_multibyte_cht.py (+1/-1)
tests/test_multibyte_jpn.py (+1/-1)
tests/test_paragraphs.py (+118/-84)
tests/test_pdfbase_pdfmetrics.py (+2/-2)
tests/test_pdfbase_pdfutils.py (+2/-2)
tests/test_pdfbase_postscript.py (+2/-2)
tests/test_pdfencryption.py (+1/-1)
tests/test_pdfgen_callback.py (+2/-2)
tests/test_pdfgen_general.py (+91/-19)
tests/test_pdfgen_links.py (+2/-2)
tests/test_pdfgen_overprint.py (+2/-2)
tests/test_pdfgen_pagemodes.py (+2/-2)
tests/test_pdfgen_pycanvas.py (+2/-2)
tests/test_platypus_breaking.py (+2/-2)
tests/test_platypus_cjk_wrap.py (+101/-0)
tests/test_platypus_general.py (+2/-2)
tests/test_platypus_indents.py (+2/-2)
tests/test_platypus_index.py (+2/-2)
tests/test_platypus_leftright.py (+2/-2)
tests/test_platypus_lists.py (+106/-0)
tests/test_platypus_paragraphs.py (+83/-3)
tests/test_platypus_paraparser.py (+1/-1)
tests/test_platypus_pleaseturnover.py (+2/-2)
tests/test_platypus_preformatted.py (+218/-0)
tests/test_platypus_programming.py (+2/-2)
tests/test_platypus_tables.py (+22/-3)
tests/test_platypus_toc.py (+70/-4)
tests/test_platypus_wrapping.py (+104/-0)
tests/test_platypus_xref.py (+2/-2)
tests/test_pyfiles.py (+2/-2)
tests/test_renderSVG.py (+91/-2)
tests/test_source_chars.py (+2/-2)
tests/test_utils.py (+2/-2)
tests/test_widgetbase_tpc.py (+2/-2)
tools/__init__.py (+1/-1)
tools/docco/__init__.py (+1/-1)
tools/docco/codegrab.py (+1/-1)
tools/docco/docpy.py (+1/-1)
tools/docco/examples.py (+1/-1)
tools/docco/graphdocpy.py (+1/-1)
tools/docco/reportlab.graphics.pdf (+4108/-3600)
tools/docco/rl_doc_utils.py (+4/-3)
tools/docco/rltemplate.py (+4/-4)
tools/docco/stylesheet.py (+3/-4)
tools/docco/t_parse.py (+1/-1)
tools/docco/yaml.py (+1/-1)
tools/docco/yaml2pdf.py (+1/-1)
tools/pythonpoint/__init__.py (+1/-1)
tools/pythonpoint/customshapes.py (+2/-2)
tools/pythonpoint/pythonpoint.py (+2/-2)
tools/pythonpoint/styles/__init__.py (+1/-1)
tools/pythonpoint/styles/horrible.py (+2/-2)
tools/pythonpoint/styles/modern.py (+2/-2)
To merge this branch: bzr merge lp:~fcole90/ubuntu/precise/python-reportlab/fix-for-1005187
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+158773@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

23. By fcole90

Edited example and documentation path in README.Debian (LP: #1005187)

22. By Matthias Klose

New upstream version.

21. By Colin Watson

Rebuild for new armel compiler default of ARMv5t.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CHANGES.txt'
2--- CHANGES.txt 2010-12-06 12:45:44 +0000
3+++ CHANGES.txt 2013-04-14 00:48:45 +0000
4@@ -8,6 +8,55 @@
5 The contributors lists are in no order and apologies to those accidentally not
6 mentioned. If we missed you, please let us know!
7
8+#################################################################################
9+#################### RELEASE 2.6 27/09/2012 #################
10+#################################################################################
11+
12+This is a minor release focusing mainly on improved documentation. There are a
13+number of minor enhancements, and a larger number of previous-undocumented
14+enhancements which we have documented better.
15+
16+
17+###General changes
18+ * Manuals have been reformatted with more pleasing code snippets and tables of
19+ contents, and reviewed and expanded
20+
21+###Flowing documents (Platypus):
22+ * Added support for HTML-style list objects
23+ * Added flexible mechanism for drawing bullets
24+ * Allowed XPreformatted objects to use Asian line wrapping
25+ * Added an 'autoNextPageTemplate' attribute to PageTemplates. For example you
26+ can now set up a 'chapter first page template' which will always be followed
27+ by a 'continuation template' on the next page break, saving the programmer from
28+ having to issue control flow commands in the story.
29+ * added a TopPadder flowable, which will 'wrap' another Flowable and move it
30+ to the bottom of the current page.
31+ * More helpful error messages when large tables cannot be rendered
32+ * Documentation for images within text (test_032_images)
33+ * Trailing dots for use on contents pages
34+
35+
36+
37+###Charts and graphics:
38+ * Support for UPCA bar codes
39+ * We now have a semi-intelligent system for labelling pie charts with
40+ callout lines. Thanks to James Martin-Collar, a maths student at Warwick
41+ University, who did this as his summer internship.
42+ * Axes - added startOffset and endOffset properties; allowed for axis
43+ background annotations.
44+ * Bar charts - allow more control of z Index (i.e. drawing order of axes and
45+ lines)
46+ * Pie charts - fixed bugs in 3d appearance
47+ * SVG output back end has seen some bugs fixed and now outputs resizeable SVG
48+
49+###Contributors:
50+ * Alex Buck
51+ * Felix Labrecque <felixl@densi.com>
52+ * Peter Johnson <johnson.peter@gmail.com>
53+ * James Martin-Collar
54+ * Guillaume Francois
55+
56+
57
58 #################################################################################
59 #################### RELEASE 2.5 at 18:00 GMT 01/Oct/2010 #################
60
61=== modified file 'PKG-INFO'
62--- PKG-INFO 2010-12-06 12:45:44 +0000
63+++ PKG-INFO 2013-04-14 00:48:45 +0000
64@@ -1,7 +1,7 @@
65
66 Metadata-Version: 1.0
67 Name: reportlab
68-Version: 2.5
69+Version: 2.6
70 Summary: The ReportLab Toolkit
71 Home-page: http://www.reportlab.com/
72 Author: Andy Robinson, Robin Becker, the ReportLab team and the community
73
74=== modified file 'debian/README.Debian'
75--- debian/README.Debian 2006-02-14 14:38:23 +0000
76+++ debian/README.Debian 2013-04-14 00:48:45 +0000
77@@ -6,7 +6,7 @@
78 Python.
79
80 Examples and documentation can be found in the python-reportlab-doc package
81-in /usr/share/doc/python-reportlab-doc.
82+in /usr/share/pyshared/reportlab/.
83
84
85 05/22/2000,
86
87=== modified file 'debian/changelog'
88--- debian/changelog 2011-12-31 02:12:00 +0000
89+++ debian/changelog 2013-04-14 00:48:45 +0000
90@@ -1,8 +1,14 @@
91-python-reportlab (2.5-1.1build1) precise; urgency=low
92-
93- * Rebuild to drop python2.6 dependencies.
94-
95- -- Matthias Klose <doko@ubuntu.com> Sat, 31 Dec 2011 02:12:00 +0000
96+python-reportlab (2.6-1ubuntu1) precise; urgency=low
97+
98+ * Edited example and documentation path in README.Debian (LP: #1005187)
99+
100+ -- Fabio Colella <fcole90@gmail.com> Sun, 14 Apr 2013 02:31:26 +0200
101+
102+python-reportlab (2.6-1) experimental; urgency=low
103+
104+ * New upstream version.
105+
106+ -- Matthias Klose <doko@debian.org> Thu, 31 Jan 2013 21:08:28 +0100
107
108 python-reportlab (2.5-1.1) unstable; urgency=low
109
110
111=== modified file 'debian/control'
112--- debian/control 2011-04-16 13:00:22 +0000
113+++ debian/control 2013-04-14 00:48:45 +0000
114@@ -3,7 +3,7 @@
115 Priority: optional
116 Maintainer: Matthias Klose <doko@debian.org>
117 Uploaders: Igor Stroh <jenner@debian.org>, Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
118-Standards-Version: 3.9.1
119+Standards-Version: 3.9.4
120 XS-Python-Version: >= 2.4
121 Build-Depends: debhelper (>= 5.0.37.1), python-all-dev (>= 2.6.5-9~), python-all-dbg, libart-2.0-dev, libfreetype6-dev, sharutils
122 Build-Depends-Indep: python-imaging, python-sphinx
123@@ -37,7 +37,7 @@
124 Package: python-reportlab-doc
125 Section: doc
126 Architecture: all
127-Depends: ${misc:Depends}
128+Depends: ${misc:Depends}, libjs-underscore
129 Suggests: python-reportlab
130 Description: Documentation for the ReportLab Python library (PDF format)
131 ReportLab is a library that lets you directly create documents in
132
133=== modified file 'debian/copyright'
134--- debian/copyright 2010-12-06 12:45:44 +0000
135+++ debian/copyright 2013-04-14 00:48:45 +0000
136@@ -71,7 +71,7 @@
137 *
138 * You should have received a copy of the GNU Lesser General Public
139 * License along with this library; if not, write to the Free Software
140- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
141+ * if not, see <http://www.gnu.org/licenses/>.
142 */
143
144 /*
145@@ -131,8 +131,8 @@
146 Lesser General Public License for more details.
147
148 You should have received a copy of the GNU Lesser General Public
149- License along with this package; if not, write to the Free Software
150- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
151+ License along with this library; if not, write to the Free Software
152+ if not, see <http://www.gnu.org/licenses/>.
153
154 On Debian systems, the complete text of the GNU Lesser General
155 Public License can be found in `/usr/share/common-licenses/LGPL'.
156@@ -152,9 +152,9 @@
157 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
158 GNU General Public License for more details.
159
160- You should have received a copy of the GNU General Public License
161- along with this font; if not, write to the Free Software
162- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
163+ You should have received a copy of the GNU Lesser General Public
164+ License along with this library; if not, write to the Free Software
165+ if not, see <http://www.gnu.org/licenses/>.
166
167 As a special exception, if you create a document which uses
168 this font, and embed this font or unaltered portions of this font into
169
170=== modified file 'debian/rules'
171--- debian/rules 2011-04-16 13:00:22 +0000
172+++ debian/rules 2013-04-14 00:48:45 +0000
173@@ -11,6 +11,8 @@
174
175 include /usr/share/python/python.mk
176
177+build-arch: build
178+build-indep: build
179 build: build-stamp
180 build-stamp: $(PYVERS:%=build-python%) $(PYVERS:%=dbg-build-python%)
181 touch $@
182@@ -142,6 +144,10 @@
183 rm -rf debian/python-reportlab-accel-dbg/usr/share/doc/python-reportlab-accel-dbg
184 ln -s python-reportlab-accel debian/python-reportlab-accel-dbg/usr/share/doc/python-reportlab-accel-dbg
185
186+ rm -f debian/python-reportlab/usr/share/doc/python-reportlab-doc/html/_static/underscore.js
187+ dh_link -ppython-reportlab \
188+ /usr/share/javascript/underscore/underscore.js \
189+ /usr/share/doc/python-reportlab-doc/html/_static/underscore.js
190 dh_compress -a -X.py -X.pdf -Xodyssey.txt -X.xml
191 dh_fixperms -a
192 dh_python2 -a
193
194=== modified file 'demos/colors/colortest.py'
195--- demos/colors/colortest.py 2008-10-19 23:16:31 +0000
196+++ demos/colors/colortest.py 2013-04-14 00:48:45 +0000
197@@ -1,6 +1,6 @@
198-#Copyright ReportLab Europe Ltd. 2000-2008
199+#Copyright ReportLab Europe Ltd. 2000-2012
200 #see license.txt for license details
201-__version__='''$Id: colortest.py 3269 2008-09-03 17:22:41Z rgbecker $'''
202+__version__='''$Id: colortest.py 3959 2012-09-27 14:39:39Z robin $'''
203 import reportlab.pdfgen.canvas
204 from reportlab.lib import colors
205 from reportlab.lib.units import inch
206
207=== modified file 'demos/gadflypaper/gfe.py'
208--- demos/gadflypaper/gfe.py 2008-10-19 23:16:31 +0000
209+++ demos/gadflypaper/gfe.py 2013-04-14 00:48:45 +0000
210@@ -1,7 +1,7 @@
211-#Copyright ReportLab Europe Ltd. 2000-2008
212+#Copyright ReportLab Europe Ltd. 2000-2012
213 #see license.txt for license details
214 __doc__=''
215-__version__=''' $Id: gfe.py 3269 2008-09-03 17:22:41Z rgbecker $ '''
216+__version__=''' $Id: gfe.py 3959 2012-09-27 14:39:39Z robin $ '''
217
218 #REPORTLAB_TEST_SCRIPT
219 import sys
220
221=== modified file 'demos/odyssey/dodyssey.py'
222--- demos/odyssey/dodyssey.py 2010-12-06 12:45:44 +0000
223+++ demos/odyssey/dodyssey.py 2013-04-14 00:48:45 +0000
224@@ -1,6 +1,6 @@
225-#Copyright ReportLab Europe Ltd. 2000-2008
226+#Copyright ReportLab Europe Ltd. 2000-2012
227 #see license.txt for license details
228-__version__=''' $Id: dodyssey.py 3660 2010-02-08 18:17:33Z damian $ '''
229+__version__=''' $Id: dodyssey.py 3959 2012-09-27 14:39:39Z robin $ '''
230 __doc__=''
231
232 #REPORTLAB_TEST_SCRIPT
233
234=== modified file 'demos/odyssey/fodyssey.py'
235--- demos/odyssey/fodyssey.py 2010-12-06 12:45:44 +0000
236+++ demos/odyssey/fodyssey.py 2013-04-14 00:48:45 +0000
237@@ -1,6 +1,6 @@
238-#Copyright ReportLab Europe Ltd. 2000-2008
239+#Copyright ReportLab Europe Ltd. 2000-2012
240 #see license.txt for license details
241-__version__=''' $Id: fodyssey.py 3660 2010-02-08 18:17:33Z damian $ '''
242+__version__=''' $Id: fodyssey.py 3959 2012-09-27 14:39:39Z robin $ '''
243 __doc__=''
244
245 #REPORTLAB_TEST_SCRIPT
246
247=== modified file 'demos/odyssey/odyssey.py'
248--- demos/odyssey/odyssey.py 2008-10-19 23:16:31 +0000
249+++ demos/odyssey/odyssey.py 2013-04-14 00:48:45 +0000
250@@ -1,6 +1,6 @@
251-#Copyright ReportLab Europe Ltd. 2000-2008
252+#Copyright ReportLab Europe Ltd. 2000-2012
253 #see license.txt for license details
254-__version__=''' $Id: odyssey.py 3271 2008-09-04 12:45:58Z rgbecker $ '''
255+__version__=''' $Id: odyssey.py 3959 2012-09-27 14:39:39Z robin $ '''
256 ___doc__=''
257 #odyssey.py
258 #
259
260=== modified file 'demos/stdfonts/stdfonts.py'
261--- demos/stdfonts/stdfonts.py 2008-10-19 23:16:31 +0000
262+++ demos/stdfonts/stdfonts.py 2013-04-14 00:48:45 +0000
263@@ -1,4 +1,4 @@
264-#Copyright ReportLab Europe Ltd. 2000-2008
265+#Copyright ReportLab Europe Ltd. 2000-2012
266 #see license.txt for license details
267 __doc__="""
268 This generates tables showing the 14 standard fonts in both
269@@ -9,7 +9,7 @@
270
271 usage: standardfonts.py [dec|hex|oct]
272 """
273-__version__=''' $Id: stdfonts.py 3269 2008-09-03 17:22:41Z rgbecker $ '''
274+__version__=''' $Id: stdfonts.py 3959 2012-09-27 14:39:39Z robin $ '''
275 import sys
276 from reportlab.pdfbase import pdfmetrics
277 from reportlab.pdfgen import canvas
278
279=== modified file 'demos/tests/testdemos.py'
280--- demos/tests/testdemos.py 2008-10-19 23:16:31 +0000
281+++ demos/tests/testdemos.py 2013-04-14 00:48:45 +0000
282@@ -1,8 +1,8 @@
283 #!/bin/env python
284-#Copyright ReportLab Europe Ltd. 2000-2008
285+#Copyright ReportLab Europe Ltd. 2000-2012
286 #see license.txt for license details
287 __doc__='Test all demos'
288-__version__=''' $Id: testdemos.py 3269 2008-09-03 17:22:41Z rgbecker $ '''
289+__version__=''' $Id: testdemos.py 3959 2012-09-27 14:39:39Z robin $ '''
290 _globals=globals().copy()
291 import os, sys
292 from reportlab import pdfgen
293
294=== modified file 'docs/reference/genreference.py'
295--- docs/reference/genreference.py 2009-02-22 14:19:44 +0000
296+++ docs/reference/genreference.py 2013-04-14 00:48:45 +0000
297@@ -1,8 +1,8 @@
298 #!/bin/env python
299-#Copyright ReportLab Europe Ltd. 2000-2004
300+#Copyright ReportLab Europe Ltd. 2000-2012
301 #see license.txt for license details
302 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/reference/genreference.py
303-__version__=''' $Id: genreference.py 3376 2009-01-19 12:05:41Z jonas $ '''
304+__version__=''' $Id: genreference.py 3959 2012-09-27 14:39:39Z robin $ '''
305 __doc__ = """
306 This module contains the script for building the reference.
307 """
308
309=== modified file 'docs/reference/reportlab-reference.pdf'
310--- docs/reference/reportlab-reference.pdf 2010-12-06 12:45:44 +0000
311+++ docs/reference/reportlab-reference.pdf 2013-04-14 00:48:45 +0000
312@@ -1231,7 +1231,7 @@
313 % 'R71': class PDFInfo
314 71 0 obj
315 << /Author (\(anonymous\))
316- /CreationDate (D:20101206144432+00'00')
317+ /CreationDate (D:20130131201657+00'00')
318 /Creator (\(unspecified\))
319 /Keywords ()
320 /Producer (ReportLab PDF Library - www.reportlab.com)
321@@ -1440,7 +1440,7 @@
322 endobj
323 % 'Outline.49.7': class OutlineEntryObject
324 94 0 obj
325-<< /Dest [ 44 0 R
326+<< /Dest [ 45 0 R
327 /Fit ]
328 /Next 95 0 R
329 /Parent 86 0 R
330@@ -1458,7 +1458,7 @@
331 endobj
332 % 'Outline.49.9': class OutlineEntryObject
333 96 0 obj
334-<< /Dest [ 45 0 R
335+<< /Dest [ 46 0 R
336 /Fit ]
337 /Next 97 0 R
338 /Parent 86 0 R
339@@ -1467,7 +1467,7 @@
340 endobj
341 % 'Outline.49.10': class OutlineEntryObject
342 97 0 obj
343-<< /Dest [ 46 0 R
344+<< /Dest [ 47 0 R
345 /Fit ]
346 /Next 98 0 R
347 /Parent 86 0 R
348@@ -1476,7 +1476,7 @@
349 endobj
350 % 'Outline.49.11': class OutlineEntryObject
351 98 0 obj
352-<< /Dest [ 46 0 R
353+<< /Dest [ 47 0 R
354 /Fit ]
355 /Next 99 0 R
356 /Parent 86 0 R
357@@ -1485,7 +1485,7 @@
358 endobj
359 % 'Outline.49.12': class OutlineEntryObject
360 99 0 obj
361-<< /Dest [ 47 0 R
362+<< /Dest [ 48 0 R
363 /Fit ]
364 /Next 100 0 R
365 /Parent 86 0 R
366@@ -1512,7 +1512,7 @@
367 endobj
368 % 'Outline.49.15': class OutlineEntryObject
369 102 0 obj
370-<< /Dest [ 48 0 R
371+<< /Dest [ 49 0 R
372 /Fit ]
373 /Next 103 0 R
374 /Parent 86 0 R
375@@ -1521,7 +1521,7 @@
376 endobj
377 % 'Outline.49.16': class OutlineEntryObject
378 103 0 obj
379-<< /Dest [ 53 0 R
380+<< /Dest [ 54 0 R
381 /Fit ]
382 /Next 104 0 R
383 /Parent 86 0 R
384@@ -1548,7 +1548,7 @@
385 endobj
386 % 'Outline.49.19': class OutlineEntryObject
387 106 0 obj
388-<< /Dest [ 55 0 R
389+<< /Dest [ 56 0 R
390 /Fit ]
391 /Next 107 0 R
392 /Parent 86 0 R
393@@ -1575,7 +1575,7 @@
394 endobj
395 % 'Outline.49.22': class OutlineEntryObject
396 109 0 obj
397-<< /Dest [ 56 0 R
398+<< /Dest [ 57 0 R
399 /Fit ]
400 /Next 110 0 R
401 /Parent 86 0 R
402@@ -1722,9 +1722,9 @@
403 % page stream
404 << /Filter [ /ASCII85Decode
405 /FlateDecode ]
406- /Length 1186 >>
407+ /Length 1176 >>
408 stream
409-Gau0Bhf%7-&:P.Os5Dh7%%4/gQFoDhfX_5ZJLo?u4lh;0:Gs#He4;'gpXek)>BZRWF0K,X@+aHdhKRk*G>nVuI?O*Up&OPrGl9gW,_`g^,bO0p?c,\4q:T-<B?:on<feu?=]I%'H6t2^@EC(HcY.rA[q>ke:]$uML&LSpn!;##,g.Z@XuSnZ3,%?T=T`S\Y2C'W1oOTjJGN'?^Ottcd%8<siHdg<.pbOiTBIPcVj"!L:/]*<H'V3QY*:`2O0'(!m784+Nj=IJ`$3m_a<6=lb(3#]YCm(jg^8ZJAs*3VD8P,B<)PQ-RIq!F8dWDf8C9aSRC-]]Tc7!>Dh0>I4h?p@o\8^hNOWlH*gK)&.uH'N(60],Q/@bW#AkLF/u5^Ib2I!rdqqPt*O*rUSiP1R.G)oah$<^CPkf^B3[<.;6rJQ:?#;@2gh,c6h'G$P0S=\jga`bnX#1.f,7+JTOjJiWq>:=(Y7oN$eLLl&l[*kAZh?BAeu-J9b*RpJ5-)qf6tR$qFr1k[[$:ELZ@kLOjm3L*UM#@ApdIk3q,ELS+R6o7pd0'=Ktt_0abf]&MZE7RT,"0CO4iX;@8@%?D?X2eO?hUe0e/4'[b@C`1:6+\6$K8\K+SX<l_fAg4a!sHcq!C%jk'l.32,3q%'j(_jl&cm"?S`o7dT!8;lIDHc3(KuKV:9'%OsqC5&$+#;>s4FdeWoCU@d251m*-n7&WF\W#HUnZ)%*)Mafd_%fRE,^:OXXj6$H&#[K"=m&OSL=J'q7R5[9oS>2pXA,AH5BH>(%Uab9>;p1:@7`oY@CChDZmnn?Ch<7<pgdRq^it-uX%G^/Un0G\%2OnCKDX@PSfO2ki+q9^;2l7guh0<<V*iL;4<l<Yg%0s%g@q^mI>jp\_]Ais/CW,/tBh-CJQ]-l>G?j5qr,OSKL^[M9).D6aE7k#g:BiB0s$!4C0Xq#.,O+D0[c.2KT!\5<"?#l^)F*HQfPFF9&)\S.D_&F?Db$ZC?"oR@aAgY.Gn*8'&!UG9Vh+f%DJ!UNa).!D2G:YN<YV'J78/_M"gUR^G4;7:gP+7H_`W;t"XU.9`m@)8B!bbs%t>mQ4HRFTin1:DI6]D%r1^1O?a;iu=5cRqb2A#rT#R!>1Yh9/OhZ@>%%S,]&q)!emp@rd7aAo=N39Q4(ju7G/0MM!q%A/VoneQFIeF;:J!@D~>endstream
410+Gau0B9lJcU&A9%PJ!aI(_I`Kk;TU@RRb"DV,S#anTZ`K<8m@Lkm-`:3qs->U&uisW,,7G4_QYnY4)`ugR8jLnrIjT_eH*<8i;)+=_?c#'_Sf6C\;"@Jo<Z3Xcb^\\b9:$.I\&36HH1^@(K0Sj1HHYKcci*Hke%11G?tp7duqKWj#ErU;1j(F]i=-_Q14);(#32L$:TXb;#CL9:[mrVg(O5>Sd0AsoI4mFM,'FB3`0GPKN[4dib7=m-&e#[:`1n)9]?V)PXY'e(?(9C$t8'nFu6j@__oeN2X$r5P8)A7jZ_KneacTm2>ZgBD4r&oQ<-nj9P`.Ecj[drf>'c`*L_thl#/FplIE0Y3YVd6fME'-$61QIc@2Rn5GU1[)csnj."blc/[l^ECOcj`G0KH5[I"6ZP+@5$7%(.^Zr()08L+>XWm/!3b?]h1fX\dh![!:/1X@o5DarXh"qh2f+s@\4Zh6Bu<i9,q(=*Dr;Vo82WmTgb),H0SAks!dH;pC./M`;.Ud8($,MQ8U;jG^&/rY7!14+C.LgT6hP><2j%^Jh<NsE=_k7SjAKI>c[$O<oC*u-%qNnNO:?q1[dAckpRO?g5(@h:LI>tKb$b#"583IO4GlkR9F<^5goltC]LFE99"BT3H;K]D(RClgYJb/8jOE-AahK@m;c;l["\`WC<4\=sg_#6c>"T/9*GbeDQ#B^pS[./NHL:#m@4&IR,,RRRK=?dj8%]Km'GK)\+_<u4V?r6hA"DMm28qlV>heuu3QbaP,,?DFBkA,A8EW"%juUb-$1>O-hh7`oZ,.hPB"Dc'ULc!U`BX?>@$EJQtB6EOeU>E[PS>>@Ap*c45I)bfHU;r=m#CH@(4XU!GTN[Bp0Q)qRQEi>gU%.+XblYPF,^+MZPMYBT4G/PSSb0#P'lRHo6BA8\;AD!@=#ZY`O_9,f,11;+!pDm8D]kssEQEHg.Qenn58UK2Y&49NnZAW$"jUS-S!d8V<Z-p8WG%@Z$'BSbM9MVpV,`lUG8,;sb>1fHYksnkh<+3kJ3,4b!RauVF#36Ve,$X2,")jtsc@([4XMa05OHGu/!$.k49W+]ppMUE]&#?G.+L#TWohnY<!e-?_orj2oiq*'ZIO"SNrYD'8_=Be[Y&(B"J(+0.\Std$]9\%VnF9GeK]LsmQgj2,%n)*BZ[W!o=Hs^~>endstream
411 endobj
412 % 'R120': class PDFStream
413 120 0 obj
414@@ -1749,81 +1749,81 @@
415 % page stream
416 << /Filter [ /ASCII85Decode
417 /FlateDecode ]
418- /Length 2140 >>
419+ /Length 2127 >>
420 stream
421-Gau0DgMYb8&:HLqJ!^Eg@Q-%o;N`?<8HJ!`+DmRY[aOfa5d2G6d`*Q!h-F2^d#[X`V5T;`a-S,./5aT]fe^)n6\X%.?g-D-N9FiFp.n!^,O,dgC^4hB^S<admB(lH\&.stDNEN!@F4E_p)p]Tp#E$66Z"U;S4l\3&_gMa^X\:O\"KskCE65%3ae3j%d?lPcfbNq5%<^"<+JEIO,eC_s-`^J&c_;2;&kB;q4i&2b2o,JRG#R)PG'b_Od31M3e,SN-hGONai/-LJ"*OVVbYC2BP9b\L(0#=D.W8^]N`EA-aU@"`3OS[,gm!aL:*+-1:jYkZk//`-Pl#1:.r4+Y]W0p_pZ'"1h<CQ<'I=9mu%rYd!>2ai_hf$+jm7do:SXW`[,q9>bXa/-2KiGM)ODR<K(H@NBeeQY*;b_oqeKa?/AC`Zq"oN[#0P9h4rN!>ee=.?XNEJF-ka0-b?Hnl'32uY*m#4@uo1smf).:h#RFo5l@eZg.?<piUA10:fUhbZL`/HD@r<$P%'R&k;"Q$BQQ_C]TO^daQ`M3M[$#Q>e:.l^TYU<3_-F'3hZ&4Ef%kI\M3kP-'CZbZ6,mQP52-X]OFMYNC?J3,c?Qk2Kf-8,8O<dlioj.Q78.m^9_oVXOEE[?uVHQk&1=^_GKY>Ir;V'FHqK6[Z2\SS)Ca&=`56!T0s.q2016:nspW=oO>k`FP*5f$h)9?6.X:Yq;T*5-!q&?k19bH=&].\@e])eW*>%4615BpYD.J-gAro53dlF^!)69l,Q9`e?70E8(]S48c=<UVpI](daHP>=EV1(GdT1?>0sQ2`>uA62E0,$?(u6qfA-8WMWfY7F,t;W4dOJZO&i_L"RCcjZhtZkA\a^;[ZU)_WnWD$dlRQ[]1lrrIF*WigqB-nT;!6NXCHTD9adO]d)Q8Hb@rO>l;.r0->]kg(e6&4l5nrWtU?FdA9S0_V-o[Ba]%L[?D4*Eh^#G)@(/S^:kB*6XJUD3H$u,c\*UR-J'XbL_<`]"V'EBnF.P;TN_q2<HR<0p2Z^=l,"J;U3;[PN0Ap&FP?j#V4D"I^.["B]#!"m=eToE9q$X:P9*Ae:,.[c(>..Z\Gmqmj=,6]](*_VcpFB7(?JAZC=Vp7g-QM</gMUdGZ\C*oEnqLKGc,c:,-M4"I)Y=fNq,7i/XsYJ!BVo0.9W2>gYd1%PqHH0<:%h`e6u8kDQ9"hY0Vat\5ed\:a%XR1pg7];g'"Yjb"GJIEmjf]S\lW>j>7P4P.I4HVH;*?oUA&[a`%5:T8J=aK4=!''DW*/`@\YHpoX,e6pp4Hm`$oBcdn<D9#]^YG..*=Y@L(RSm(@c;+STUIp.VX-=[dODod3a\1tdO.XeG#_ZFq"<m?3FOgelEJl@<.=l%IjU/hsrhjsgB>k?c.Cs5`/e#5!Zjpg?1+#.],6;Zl!%\%\4?hh_*UL*DTL@NuR$!.J<-nq;^j"6@Kkkk](F!FcUS.(P$:?3W6;IrF2a<Eh)+EfRkZSi:G(`CFM7Q=leC>o\f\b3Xd/"5#BF]B0%1`*Np7Un'9B@DcEY>42anPp7gP(UH'E@APk-nCXph&f:+Y[^t9$&un=6[q:Z]_j=.5)\!Kr=oS>As[C!l_l(#-+YNAg)7C#TRN(/$l8O0]DH9tbCbbr1._4t#J6&C=93(G2?R?EA@8Q[%P*u@L7"h?9JongY49*>oOL(2<M]&:[D?5V$F/o)@2l)JOZ%/W`oA1R4Wcnd@YD%Uf2M?20^1>MYST<,b#E>5(Pi!i1-/;#MhMJ1-;/d_2n9PX_C>$Q_qDXH)EV"?mI*gtP5m<QT*6&YgE4KiaR:g56,.f\\AI\iSb`82!_mfojWXfAUj=60PRGZAc1hW.^h_JNk.f..25'V).<H(A4E:"2q*?3eE@Qq>dAT/)aG9n&BBQCcj,_2)]K*\^B$3k0hUp(?^/U\"]p*I382K3N)a*$<Z,DWg3mQ-#8Jh:eLYT,4.Xm8m-@O#7!B&"W#*@K#.5l?(7bURTq;6@!'K5o.4&Pt"cAFit&U!D*(I$M4P>',d:[.ZH/K3tP_@<bT<P9U4DK^YMVfT)F_g!3$(^*i!Ja*JoLbF=!<DQpA*`dk1FeVnJFhP*V>"[sna$m[b&0;td*?W';*i5iac"u+jq@D`qM5(~>endstream
422+Gau0DgMYb8&:HLqJ!_-&Cc=+";HGs%KA.Y:J2DCY[s9\>XN6[61!+!MQ^.pLj*PAel=0SG7#!"&\MJTpG%R\7g@u'SH^k]HG!WmW$Rq%u@SC2hkgIETH@)p/o5/\!>jNI>W>ci_h;Rl81:oV4T,BZ?-54\Hj@gDq]@6IXc")#'$6-NNT/oiA<G"4$5XR_F(_$4rK=>oa'ra;U3M_S:FR]b/rrE_NJOkqg9:)Y`^<N4J/e@Zqb#h/7`_PcGY=3erbAcq@Y`Z[n<oHt)j[qA:+[3dZ`Mp:$Go])MA#,<'+WI]Q_\.fJ6D\*8jH#6@.i'_UU;r,03fhb<Xt8p%%ct2WDCQ)5.2%nA)WA`2720j8I':'0:3oMhCB$CFP3[+ESemaWfl;lJ:L'X]\9J`%R7ec$M54o5P\PVX.90HY<#6S&7PV"iTmr,:4XrDZZ/7Llr:7_$GM\0ol</Do(7?,=DsTHXc&@!3p_UDiIi]09l_AWdgf-8GaTb_8Q_`sl*J6FA.U>q'Er&sO"c\Me.$`C>V&hY1\EqS@FHgRM`9$`9GXq3*G$5,M?;iHgGq9b$?`QSX85o571tOKipRbN'Bqhk'M4WgNH-jN*?t.'kb0.\QB[&<o;TX,`cA?\4nehl(8lkp<5V<N-^@BfUlTeP95IGX@M;&0BNS\:%i:nR<9W4@80p*Qr8>_^Y<i4mm'j165AhC<k9',B"3gY4GN*BO'3*a`,Qcm:1HVo!IO+ZCI)I<OC7^iJ)&p3j0h%DP1@>"?(,f<s8rZV9iet'iN(%-::AKjng5K<@tpe+i1[D^"0^Up6.i9;BCXt[Fs3ljc]lVo$g77rNgHDG]#8gJ@\AhnSH(;KD*ZZ=M0pi_R[6fK>YOk/.4<&BaOQ#h54*r@'&9i1$+b7,NNf5*eh=q+HLV(jqKb:'`a"BR`/(:BGU9+]))R4,Ym23ZrM!Qm!*W,B&s86_sO6*L)/OTe]fdQ*jFH6i5:9gK6HXcoM!NM9;E\!8g73<t(.U5DTug%'9&FXE[%i%/IU"Ms9#nWZAcLoO#W)f,O<NK#!qMJge\#p:EP0=5`bG[ZM4We9H=8gX'_)F]+=m_/!AI%nDfX(/-;PWmW@p2O1Eimdc,h\%#C>I3$c$<J,P9&@u(^DRo1gOqa)=Gu$'2W"bEja'C*KOtRG`.SJ0"=lP`XhXNBe)U[JT8@Emj"b8>N@Od!O6@*_m$%eo&cW(f9:I'T6$^Eu6V^hBZu\4fK:HSk>g]4rhY-6FP^`4j+rQGlk"Dt$B2DPk5*=a\=ko`EK&:>CcSUmCk\g;2H*s&.f.$thZEprWH6k'SZu;ck6m3!EI_Q0ic))t^hNIIMEFXM(<Vf0fLBZo$XBGU<,&bSh"fDQ;Z[/9q7%G`^^-;Xe\Db&FfW%d$o;GYXMhZ5?:RF(;+Xm!7a6eZW00B`:`IH8XLi+NS2b)$$;Lh2e!@8Y&JODoh8'%&:\UkW.LdZD1T:h9\956h[naQggUJ[G=EH&b48<,FA)/E%^DlCotmKHkCXO_9hWl_$LUa7mdEiH^=?QON9.Z]RmRTPmrlm%HVn^U<9\]X;tWPf!&eRb2r<*V6O=7aMV=5g20\j%LX62q1cK^T9:TW(MA>\'dj<6qA.F#s)sMQ`,T]N1(.r_)p_Yp'S]c[(W>G4-8!&fIUa80<\c027BR:n`'[?oUuU9B".cI%IGAEOrQI7oQBL$[=,XW_h0]9=B'p`A$\V.imed)5IXh$:,W9a9@%d^a=KKXG4sYbQ(1MaV5]+*.Cqf[2=/e+e3l"&:\!7$K".9ddWNZ_5Q/+3INU$ejZgmdnBt;G-Va^Ln3`sWJWFW<[a9=KU6.u^uXrs@1G;uf`^C5Z'!p9[;bShj)0oq48JuQY#!4siMLa$5*TN/@qMH$s/@Gj*;"0oYYPlp2!8a1`WUmm#"V:G^4LG<-H9VFE7$H=K1H(+>'j`:+*m!^o+Nt?-Eaa5SBI@L2P_`Qlb/8?(oQnsZ#-99WN$%Jqk'm_k(fro.g?Te?d.mk"jjg#@,.X.ZhKh'(6Ms*]dDQP%t[*NfAG(d]T,sM!jl;sCSPs1$5$Vg=4['*p#0=2Qr,O%"OY"8>HFZC^2[C7lipl?!UKOnpjetFW-cEug>2Q8)EGB"~>endstream
423 endobj
424 % 'R123': class PDFStream
425 123 0 obj
426 % page stream
427 << /Filter [ /ASCII85Decode
428 /FlateDecode ]
429- /Length 2191 >>
430+ /Length 2177 >>
431 stream
432-Gau0DCN%tI')c^`s']<n_FbrWU)oU?+Lm6T"t<BEDCPeVKn5-s3KghJ\BOBhZL[=.Ak>jA@U$:f8s&i%SXDVsF(U^mp$dsYJ$L90SC.r:@uC.?SPqY0L,Aj_I[V<"I5sKKl`oIVN<eKW34YDacLK;3Xt7nY>q,5&]i%lO+8*KI]/W!+_!SeN3Q2Yo\:T_q9glrGRYZ^DXRq_r:EmhJ7+3H;F'@l\$Vsad%92OZA_DfM9Q"Rq3U*(3P$cW/0:KVP:25r4`OR?.\14&9OaL5@3mf#??n#=*'2GNK3aY]uhMW;..F`rT,KMO'a651Q[O`>K2:;-&+S+92T_/-/q+F$<OWYd&N:%oWpnU$-r<o0'.DNO`36p[<YMMBU`;)hTlMm'>q8C"S\KaOabAIWRr0#:j02=Y-,_k7q0Ie(sonHAFed[Ln=VVh3d9J=sbcVsjbm(a')7/HPbKSZDQj[]B8PI]kJGmhH>&0s95J@r9^K*[Cm_"-9T*AjhH?m"acSJM6o9Et"FSE5qV9RcO?6>0dBQAWa/u%rM\]D[cSVsAWX.?/3EGe=D.:pXSR+09C3C]E^OFbNg1PaF"p*-ZVrol:l+aX.ijBje!#4ECJj*0+q&\kpYNqhE>E?+E>!n-b'9\Gm0N>!psBp=kUQGH`qP);+h9+-0k3@-$Hemq_s%?-o;X`jcYmK_(*S!C9<+,n`W@>r@;5i2"-Mfd0.YIFGMme"gX]mbC9hM:1UiW.tb*6E>6,K-1h#;iQe\[O&4PuMVkDR1#cdZ0X<Jt==Qd<PT[]K6,EG;Em;ddoVH]d^OWn_=LDbdDqIqT#6.4+/HknR84W)EbkRQT@o.(Cc>TSWo\sH%>YcQ10#;IOU80HDk"D,EA=\i=4q?O2ahp`'Ba'BoNio_(F&)5p<lVEWgbi#`[FCJYt!(L06R1.SHp@$,a^SP3Z9[_4Y*H;X6[F^d(1%Bni'c[i36VlW9'.Kk4=CaYUL/]uUX6+I-kg+U1["4KDu:U#TN#DKq/b0YY-SLh*,CQrQB\-LlI9bE8OL#&n!NZ.+UT'J%LP)+:IArRD8+l<WEnLmZu^=Vc;n^i^lMMC\##2a0S/,g0RXW<0@4X!*t>k7sDte]:]<4ImD._;LF)3:CdtL-<Xu-%9O(6Xq0#plYJ6H*@1g^4@H$5+8#9%7L%UCY[-YoU4#DMBH.f:\e'jMqg++*tQ<M_hb`c*(Tr4M-qh2R92r>\2GKm6i_!jn<+ElM_4SPTqSnpldo+LWo1_>`0oYI[nZXOM<H1GTpY*.QL+nUc<6;u909X8PQm163,<i,=>NmiPp.[e8J?Wn$tqp+c3APgREfU>2>YS^"/LNoG^dP8"Cm-q:0k2*&P8!GfPofL.[2BkRuKldlnBClE'kd72dq=?0QQ:ik+l7$Sk@S&qn&&&Bf)asgiSDZT5G!"]oNOfSigm`<i6\_i=?B:UD0%60j-QJ2tuI+&IM.LJI(sa*G5m,$i\8k/8GD6QLU6B$%sO6fWZau8_=K1APaSAAuon);61bmJ1B[iSb0MgSl@e[#2RF'^pem%2>cEF7.4"Uj??Qr"d-'q_*:AE/34A9:ZP"6e4&7G=Pu4bi$+Yt&>Od+#nO4:i6;&pi?&+ZBAl'0`hoG]huYF3k&bT:&]]Ire!@6m!R`&DiH#2!fs^n0;SuL-m#m&U=op2`[G:5iI]=YmKN+(.D1%^QbPc%afEp'(W9UpJFGk18njURm'O5jrPZ%!FrWYGl>%:$)'ZPGQK_Ca<d=:s8"C\h1\WL6]J8?Hr&1]3pYj6gjEX$e'7kstH9j&B&^&RNcn&(qZqDZ!k7,&u&9$Z8m'1OG.<!S>+73:7RgK7Xa/DIpNMhcqODeC,0EFk=B\qQ8c,]#f)E<r$!:1\1E'J2c(,cOb0N\$b+a.f8"PRBUj=f)SIq]P<&?J[p7LD[%80.+9+jPg/Qj2"%MOrf0TX:e]?!ua0,eDQlF9t6Q]=WO.7ZhU>dIFa@soW!3&<'qte[L\ZqBZOLne)RZK9R-t1(@7l+7*,Y^LONFQ;8%!ABC&i8N'[lKrnasM@W4SP0>&.gDdNm\FH?;U^::+>)&@<XYn5&2C.@ZpIKmX?&@=m8Ae20.*KN\QpLVu",?(qI8EUAcXdifYE!*+YbK29roim[rNV\:+57YQqHPud2:L/H*N8ep3>(us`,Q0'N^0*?7+8lZ>/*\_~>endstream
433+Gau0DIrF("&H+gY^;D,0&@ZU8s0bk!(`I3Z#8CIp)FZ^j(hi/MZ^+%FUuJnVId\[f[[T*KJi/*29BI6:+7J&,h51tegYk;%&m^I\f@OkSGA'+8Ft`..pauG!5!JghI+5==%S&ABpS6='Hj#r!UL,W*:Q8X0ml@pX<ZN9i_GE<U5(^\3?$AQ]LrN*30Vjh)0Tu=Be:9D*b*ATgaVTtcFSYh"9AKI\mRV!9X"<CG2#]i%k5iod[ik?I;<P3G=uE&R4sIjN_Gcom9P7kLnQ-1?l*O#@03_.S^MI1=HZ;9?p)k89JYD[KE$n*CfbZPfTP8/oc,g&$<GW8,[s&ZuR0q!V#%,7e;Fs3SZ83i81e!-rAf?'4p]GU4\E.&PQ/(93``>/>r<19XBsonVD:"9o9a=b4DS!@;Fjn79GA%csUZ)4jV\]@P`J)!;>%s%7QnqH2@;2UB3MY5;hO9[LUVZL!d"\*`&[02*QHCi:(otCPN(Q#s/pQ1tbGk%tqJ#isF-E1[?`X_mfcN\ss,Y9%A0]$acj)H\B:cb9R4GscP;V[&@$#OgY87o/O0dG`I,7#;elNMtd_bSs^#%gE8pT\j,c9;14T4pJT@8Q-g`J^S;Z#8l.)ptd'$*L9j&I=4kB.R(]m9meHh?Jn`50?#9/Y_]Bc15uhKWZqe7+Gh@_CP8.tW@C1*;2VZ"kLQTNA\FGVpZ><(0t@9*8('alP!a5[;ReEYo#$OBup)c'=_4"q%t51Rm?E25;;/H<0oA=E\MHH-2`-2<e7UJ:LV-hM)kZ$D5csem,:S`aut:A;9X9j4YgV(s]2aCOj@PW@UPseh2M0X7Ef]*MHS\(/Yi`f&6@E$+.:pK8)'h18cKK#<,;`d+O@_;6@Og1B]s*&)^%@n<I2ehkWCga^eV,Y?8;!21"G\Vkh>*,@/(eP2fI6@4*(1G]`,@jN#AXm8"3$$jlUPA:/&5ddKK^-H:D=I*b[miV[,JIl!A5"60mU5c=K9U$_K,;<L[t(lNj_Q4Z,p<tOd4J/'8Q:9iNmeqB1$;oY1m/F'6:(-Lq>EU#OED&n)A&:F[:'UFc^frhU;),$.NP1536i%#)YMI+9Q9U+F+&XA$F$,j[^1Lu`V6!dKiZO4Ei;96*470Rl0I_hNZYbEkMY$S-<,f^s@3-/XG8sS.7UJWM,/7$\%XXPOZRPNpNRo%+p!)CBkB8L0$ai$J^)paLuPX1d6&`MbmcDUQP+QUZ)Z".uT8fcd8!8!FoFtJfPPC'QIHU]D3V$8-rbB9?2aXm'3/(/Me(pT$<CeYH\&]7d8ThhD#==cfPkqlso]c4r5@2i%^S=u-I'E9G9Ji);h>OE7$XXW)2IWlCOX2KP!pZ7]-aB7-"5C&&93YA/8nt:-jU@/jKFIa"gdC'`L&Ip0L]L%0*X4tPL"E)N%HYeX863Y17<a=?8ED7"b62$K_Y^c`BG<kq*P('j=5F'i>\)VYWU),m$b8DeE\)"bO4d:OtMG47<(fl+#1DcQh?&GYRC3[397k1")]JmZ,j(feAhdeAg6/obUaE(iS'LM\TVTaP[-3Rb%n?M[oMLZZkk&;h"l>Z"g5ktP4e;i8TlR$2B)mt.Lf&+).Xn+?[Z<5j@X\6sa^G2LJYKMhm]HRk%r3@oV=IL9pZ?9?g`uerCgu9Y]XWY(QM2_WbU_nl[\S@@*"&cK?AWro&>r].b2Jao_W`Zg),FkVlGC4r#p3HE&rSq=D0t!Oi2^BoaGs&M%iTTfeSKCc\W'lqPTLQ(N20A#1#_VR*lfpcb&l(Z+7Up`^Ul;X)'9Al)#ANEcTd0Fh/Se:TJrgjsBc'^QU%G%Nel,PO9[XgAed8+56E0EDf'WHiUO?TX_p'No1=Vj^%#k=IiS^sLFmhL-Kq_2u"RtZZaVUp#S"@FVB^eGB-+I)0pPZhaHQ.b350Vj<'PTn86g`_CMe.VuN:"C2VJrM6nt"F74b[7/KFWm6#k]d3cco1j1#^h"c7!L+cMsE/n!Ab7NQ<\iS&(1&-Wn#fi]JG_E"d:6Q5+/CFE:&9:83%`\+pP!!d:R!$9nT82Eq610Ke^KnGKqX&FeJ"cVdm%WX6AMr"Fdu8qgR&44ZP#mBGIim/+$'8#dn5SkNc0UW!A6_?ER2Y+Mec]_^`(8c;CCl3r<Ol<-_$p87/7H;T#38*k2TBui;gqVNloNfX/A)/S&G~>endstream
434 endobj
435 % 'R124': class PDFStream
436 124 0 obj
437 % page stream
438 << /Filter [ /ASCII85Decode
439 /FlateDecode ]
440- /Length 2347 >>
441+ /Length 2320 >>
442 stream
443-Gau0DD/\/u')ldas'Zi(@&HN$'(tMiq2k6;2Ls2P[X]E<^(2`7q%AlrAp:5@J)=m^79MMpV^_$J306]!ln^HD4>Y/(%Ie<"rf8S(pC$iV_iTTb/Q*LI__E`\kblDqfpD<:iU5CPS7[sV31+(!Z0(uN+.oo6Q*,eJ1AN3&3'S@l7s0!(#(shl*oWV)'fMH+SF+YupC1C@5)Dr^;'03.rmJkC%B(&-]RTnB2(_#@id1pipZFN5o3"'P<ZIk`9h+*k6^^)kdMb]/fF%TS\)h6PC5Q5tASk!r;@?^-RZ,cp<+1Q@s-sVt=le!a2n<\HKOeM4W@8W68P:LJG-n2Z6B.;36FE]G;JV.Nl`BJ*/S.u4*"WIpOCXpOpOJL*8o/KkDlFFOlB(4>8qj+Y:p"Q[>5,8*A/L4V.N+>H8T&"j34II-=gD<b$6taRmn1o,pL'`7R[;\I@=js_X4k]*6C%D>]?"Pe1jK\&SfqSE4a]9-ZRD@Cn!OC@n&chA7..-GoK1K<!nmjs:'B&\.qO4SKmrnKI.]?DNlTUe`sF(^>\Zcbpb*aHTV?Gq89hA7I%\qT)bV"+"l3O;&B]":iM@BA71;Z@^HToh(hqB\)J'8BqH^t0=kG)?<<;5!g4[-RhC1id[7EHeS`B!$M^$=rQ/EY)HHiCrC9nn?P]!Ni`^M1G_\FME<b#.<Q%N)GeP^/"<!@r$b?W41k>Z6%e]pokDG/ZhV82L9gMZaOjOF7(;!U#06#^h8N"s3_P#Cee1tW1?l*eMs7CargDbJ#f^UB);QZdaF7K.nh(Ob$#C5j.^%"%0o,Q-_m^.=L%#jFgX#Hh?;lC#80GIJ^,<c?jeDY5X?1Q6q5GS3\_a)9mX%8@j<:>DXbFR7<'0Si3YE&'Sjm/D#fR>/'DrTb9fT=RT.c+oK%Qi0Hu/rel)9(f.j,LQb''S\uS-'OPSdOCMj.cLM%?VmiYK^[VFk[nj/T,eBl/o=<3]]G%%>&iir'Wl@D@NR;@D;*Ab(8d_A[3JkWFsRF6V-m78:f:hXKb/42C2$MR!A.OQkf1>?HT$:"@$fLMkkKqN#fTj@JX.L/TN%u7R6l8b7)1<Jce9Ru4iYcj"^-tL.Ff=d_/OF:a0aqPdt%;#UlS$`E;k?LoH0X*SX/n?-1^H,W9(4^q<7\ODp9$73DW=UQZK@Fq]apJInG?)g^`S*')`t,OS\\i3c/oa5u^im]c&e*<0oJmC1^NR[EZF4frs)imtC\OS!IB:rPqN@ZAX"E5J#4FMo=a1liAr,qnhbk--V#AHF0msht9UUj3"X94F=d?J<o0VQ8htBm6uEm[7nm/@5P`j9u"4lcVBIU5*_Wrk9\'i\UH%tJmqR"cN)-e>$@0=c`l1c?1k*!k,P29k*<:GWZ1=ZQ[.V^&N5H'rLLe-Sa/^aj*7lc%=_\?>fi9eA^/[]gIVpGiE!Yse'R"K,:#3l5B$%eBkYU$`H5E9A@b>1+F>YX24VP/#:%?#VL)Aua#_@&n=D=/s&dLN@O:?U!U`,2*U1b?Et$dZ'H>-rLY9p./<'jtJ`N(`$pt21<V5sXIkp@Xqo_eH@/B9&8W&Q=(9K.HNDdLCZcS-\HI<(kW&"EqOiF-W(('J1[J?`T);hXq`X(uEKZ>3VP"j[f;!V:saNnT;9uDGXJ-:4WR(E&X;6Qe(`j[lcKdE?qA,FN\@iJ32/7r%q4["?s&d)5;(N$3go27o3?.\2(WO:1i_k$]ri!PfVQ!+;$3CZAVh7")&2_:8_Jr\uYF42.^N$ga^_nsHJB>L0NB&:7PI3A$\B!$Er6`:q]&/i!81?3m8(Ip&lKBmn?i[110:9Fof,M4@bJ8*_sKfpQ;gD@1,),+V%^:->AVj/Z7>[QNiQ1#%".(I[3:6YJ2$L-m2I0'd=_H@O"6W#^'j7%m%T0X"lj$>AZK&LC#^[(n\G.;sjX4ZD;hJH>;IScnGJ8mjQlnQ#-!r?'k_:\]-&$Ena]@f"5I_Q*a?X\F*)c_;g__=!:S3$BA.bB()Ylls(<hq,`]V3BsL"W>HI9Gi*q/m>oe;_r56\PHN.MC)?&MI]CH]FscYrVJ%pWDE.5lH85@Z'o@#(/<F:kfG=AA5E%-G2Qn0]S7BKB'f91rRG1&tA5_E)!L:l>su:_/75G.'XHuCKsM@7cL@YrAhsLK('s4RRRY?*U\uG'QElW%S$Yold4qJql1/qn;6+&G)s#Ra6rBP;2o6KE:9a"mL@]4s.2Y9_Z]-L*OP=Z>KMo^LaBb3oFVd20l.p[aKsFW_(;*N-I\kN['NVeA_88B#/6OLfq<`OfV+kiDn_][/"/l$0Ub"3]5&_K4kVHVO2KojUWUN7NgH@t<7>Jte+q[h_MFj\~>endstream
444+Gau0D?#SK='n&%!s)8pMYg_$*M>D=E4=&\+2F+K;D#sN1pL,<W7E-U.4#=7FJ)>>9LpA!mG-aGF=:g7Xqg%V?G;uB!reC!WWe`hkkbh3D)CDi4BK2$m[.lu&/C)T@3'SAMSt4,?2P.q1r-FAdk@];CC3=-)V7bFE=(TqXfg$Udlgln<m.QF9F<+.k;*i0[k,_u4cWS(1m67#6/8;(4[;&Y#b3)2f51d.s[F^J29GT6bCN]#YD,lc9/,,>Fhe;Ph-UH$.YN'Mg*V`^^LX@dss/6G1@Z/ol8`,/"B4C[lZ<5^>^%Jh4f6<QVQWZ_;&T&b%-R*;_#NL<ZQ$rZZIWP8Wh2?GO#*U.<'<t:lM+;%R%p8$d+[g,fWF.9F&Ep4"cI5406$J[8P/3Rrp<j9PX-M<1md33Dc[rmhbTJK<;e'(k$cq*LloPON7(3Z+Q(uC0QblsZLm]$XDp),>)N7_93qlSh2.0lOCpc.f3enrVW(Q`_W)W!ecqus*.oWmAQrUWG;Hjs"WaS6-AZW!;F/JV,[?Es1(B]u7-d+?\=@)=t+%4rp,E1+H<h=@)TMNQ7@4E8VY/rQJ"]_u_Z-cCNb9k;./%Ar5[VV:Rr/?L3M;8trf]Qj62*Y/cmQI!<IASYqj"Fm<@a%!O<%R^\IJIio+MTZ"hXtdZ(@W1gd:bY!VR'bkn[Y7;io/t:9c>D"mT^3rA2K;oe)T3N0#s/i4Ib6AIGt1)Rmb@,-s>ZC+3Dg)dAhNKpKIpN'%Bf>%].\a:8G`7F")hf(/Xjb<jk`uY.r,:3^l)ViWKH)8R#,n+M"5+24XMI6Q<+?kQ)kqBa:8qEr?tq"DG3rPopX)!E!Q!BsB9QLk)PVC59B[B\E502tkeUP6iE!RL1eMa5=j*0Xe7\ZrF)Qb,hR1PX]f_80BT]:YI"J4LUgB.e5&8=.0S#K$DD3UU-8Ebehkr.=HS,Lo:7h9)i%-m51Y@-IqR76S6'mk2XS]:NatAS9selF<:4$?f[9`T<UX![mPJ]7)/$qV#I+m:V.Tc:fUNj^kN:8<O-4?bNLFl[d1]@lkbQO:P=0]&A/SOc]q]"0'3=EFJ7S+WQumW&NH!O_X=-rmQUP2>1eFNqk-/mjnKdK:A+T">)$Y`=1PU)03/mmAb(/kM4@:i1m=\FqI1p7D;lk_93f6Z.Rc(ZjYn#LW;3MCFfd-$NE`;[Iobe*Gb]O/ZJH]L>A403:3\.>"_+a?.6c\#?5+Ib-X4k.2e(_S.G7U3b^$X/3SAs>gr_Q@)Z!Z6RPaamDe-e^Zt,&'3%k^r?"B<9q!(E,C,cCA#:%>hVL'hcZN(jt4oe(IO3)3D4Qng=K6toI8,>%jNe,rSi_f<_iHFf$;kq6@TR#]3_bbne'n(KISrEQDrQh>^Ql4CtP8*:hHaL)C'kP&1PKB;)5?WY8eS?!MOiF9[('t7Hp%WaYN8I]&0nObj_IFp6P$Qg!@-_""Oe7D71`cJ`'+u91@d5GiMs:Oa]aO4%VQf\sl[6GbGA-#NLrjI=DGO'$Q,Wfi_F<A9g:`_I@b5J-ASCIU`Gm7i'"C96CGLt/+ie7edX=crQ!pq&)t7NIM4<Q[osk'ImY=5e$dXDfac*l\!J`qu=j((EJqm_mC-XOn'kPAc2\JW]C56pq)0$<r>>D>Zkqg\amU=SO)[h"IYhc"?6c^Bb/b$ILoclVuZGlYE8$..L34=DX9e2_:oV'7"IC[\J!ffJ'@K!.)L1_JIEW81XP%Zt6`^r!,:%<`3+$k\G&Qb[cLqVQGm)#Dh2_[]0%C=+5.Z*@j$t=@h*Y5En$+nk(ol7_OqQHQaa$ruLehDbO-Duke^Zc3"G<>oNNYs:&#OglUF^__XV(ZW]7)(JhK&&EB4c@[:+,UbO7)VaSd@S.<-T5BtA-hi%4J:ZK<&)>g7g$O;.Po!O#lUN011C,8KFs"#3uecSV]e5NPu+bJ_)8dnVN7-q#>rNl.'XL!CS[d\,&pTRi>a,NTE5G"VU<P0L\mhl"hS7&P9Yb,Fm*Z]I'n_Tpe:0+\Z`EaA#sjjMM50KEl68>BkotI>=j'`\38:.JdGXAXbm#R;d(NLL`eiXoe%#oH_`$K\R/!?q'`d`[LDsf)b*N"h+.gEIN$D+-S_A:%FiO"NH,MOd$1XW9LD-j(Lan&FYoOmo,ET0+-!itr5@?`4_\g/MuRqW%!dI_U>\Ao?mXY+Wrkes"9r2QF.QF+md`h'=MLd\IJEXV1m6h5FO13*gH?V%in7itI4iEpN)D7f-I(*IZtl!;-lC&hPZ%hK_m$D?8MZ0eR0_QLQ#ums>r!MB_^W>)P*tk2/&Qf3S_J78p0T1_U7M~>endstream
445 endobj
446 % 'R125': class PDFStream
447 125 0 obj
448 % page stream
449 << /Filter [ /ASCII85Decode
450 /FlateDecode ]
451- /Length 2341 >>
452+ /Length 2296 >>
453 stream
454-Gau0DgMZ%2&q(:PJ)JKol%W5SbOKEc5pJJ)!J235A/!9nJ,q6!2CB3<-)ikqYMW9SjBV&[PG$Z]*8.3H<Muil<O'krq!3_0]OL6b1\QmQ53lit<jM^-HH'R3YlDq-O8a?Ne8Ns!-Ytcdda;Sd_)',%J%N.`1q)E#MrL10IXKWQ9C:a6#QhX$"s]H,"t;rAfOW2Q[)XG_ck`O\I9i,>[_`@J+>-nNEdu!?1e]qgZ].MC?OFeq^,-Vk9J*>QZ^beh(T_VN@,?9?ZTm.0o92]X,KhrKRMD#$?O4^-dPRt3V=[GrDh?JmHk;BL*`Hb2]-U\0Y`TS?q_4cK1M(g>1eO1$e-kuc<?iLUjS+a:>#U+Y[D>$:bI?Q[YIUWImMri#X]=E68U^_t(B9*^<h.rnqIfQTMatCG?I9]t@S;+CU*V@g[r8Hi[)gW@G4%;AWeDjHUO9G4h""Y%Ph%]W5aH5')ReYZduE0Q;Yl:&NhGHJ`Rg-SND^,Y(fsuNDAi0L,]DrXmZ"91D.gaF0g<lY1b$m'D@ne:(<.%^4S#LQ_F8IK60]TD1qml*Q:P1*SH#?:b(\2li"D?VZsN2(l$'8j4`I]SFbO$OXsi@o\5@,ILFdTm*keeHX#;(rfP2l,jjr"YZI*F3S2Z+YdCJJJ^&E>7!*4]r)rIIlmAa=.opU//$(#O$]S^#="IY4a3aRXc8^iZ+aW0RQ65[c[Z7H"tI&K_6WMnX]QLL0'Io4icj@Uo@X?\\`e<&7,B(EU>&4<1ShM<:H(0JGYr<)JsK]9IK*=33;7,1@d?sC4IKm!eGh[!NobKTl[n:o\X%C-e1F9#N12&l/q%R:55:IZrsS@%@'!O1b*C)$3K/9Ya;O^_L8V,);i`0G5*=$b`0=m1\R,s_R!$f27fk7m6c"))KE7O*Lj&@ge?-6fMC`5O;V07_Ve+Q>N>L)dKaaHYdb?kBgIGDk=aC"dne^%^/9*CXifDK@maj0_I&VbX0GM&o4?A$Si@4G@.6rsEL8Q9m3i52Pb(X;uHCr/rQXP)]P5kL@&kd^*bSAfiF3P@3.*3d*$FGr:Fmh0E7hCkZ]nMNu]:_ej+VZ58)`$7Mu'(H_?//5\H>IUEAh*Qf>B<YEmq.:Ze3%>@XY^p1NZ]H+!cSdW1?MQ-g2,d(_7MS&bFW#D%&!mDCOZri0g&@$#N"PSBP+1P9tY!ah8n:l37&K/!=(ER;ti+9chGU,9aOUX`JoC,Gp[K8P'!:;8gB^D2YS5VRo?+EHd&NNHb/%u5U:/P]@&LE27m(]JV!9)Vl8[T;aRqD(M%6>QS7;FATP3`V-$Zs!s^q/UWJ1.6P$JH0lr^J.S.?Wmiq38A62h_rAW>iGa)7_Zdn@_<OJtJZC6hP11*(].sIQouBIj0*A]dJlE\R0LdbiqJ]6"TK'Gs<H:Wq5)@g`&pW+)3"7Oa1<-<?'23fbT.A<`Z(?MCf)k;=)nLdSD5T"L8sR\m'(bllC,-#m9F;F9>+]0sKJ"gd^>uZh&Y$*7a#@)7-.#h`3G[,:\O4!eQKk'k:)G!T8Fo0H.Tn;;[&apOI-8IXaPo)7h`Y@]/7=DYRqJ`.9H[A0729h?;L?.VuDT55Z2EiZLq.nb[Cc0MDM/R$`60c_c>UZl]PB&5('uD7Y`tnC/B.@tt$:qq3LCL*$c!iLoM"G4?A`8?4-&/1CbclgV%%Q#Rs5!?W4ZPh;POk-)d_=D[G$@H4qKpF0&RI*.Up7\?bqVbW/IoY>/:k'_`'Jd/a"Up(XnmlDOI,8_[OdK0"OI<@hcf3m*\FUK^C%4K`;8p&306/RIGI:MCVo@_G,R.f]?f'iQf4;,68KU`l<LSCM-q%u%d^C_0SC590V<-"`J*'q7=k0csk7jfIb+^gg<NATKWMf1;f-r(F$RcXih)@(IW)As>he(Xc9p;]CLdn9fDERKP13u+"KEjKUk0i*838D"C<NFMtK7H"\uX-BM=Y.!4lTci8ZSG*Ziq=FRMTUU\n[glY>;s9hoO2Re$:@2LA%UZqtfrrfVO/N'ei@hd&r">[62b#M7kp',(ImOBp3rli(^9K^cUa2K9PjI*`J"'YFHV>*/CiZG#2F-V>R9LS@\LkZY&,P9F"''`.<1r87bRb5l'!ZE_E^_i%"V'tu@sf3YHp%8n%eqJbmPUa4V\n$(F2B2affKrFG)Sm,YX[)M,:5mK5J'$&GB<sdLOle*BkIZYiI#mcqRpi3S9:aIcSQJOCcn9.p&TJIhqD34$_Ob`lRV%:4%2:KrTrc)F<9K$E:d%_%5JJ1Bfq#XY*mm(^OLDZ6?72']^=T,2TuA>2@dUXmhEB^Z!B7J9D]qpnHa,]8krjU=(\f!U]1F<2guM~>endstream
455+Gau0DgMZ%2&q(:PJ#J]&\f4hTmri:S1pYRL+MaWtP@XEeJH7?"2CB-:-)ikqYFeahls/nc';Lc0N\"+O3E:3(`@c<&gC<US7J-%QqU\0&\imVVW&mNTFSdTekP"]7s2RXcG3sN@UWtP69MQs[k4n-^=&p*V<l03O?O86CO#g^KSK/e<i9IlPLq:J6Ml`R^9G>u38LLV!"24J4n6<nNnfuui8[k<Mf/R*tppFH"Cu+J`;D&@)Pb.;3fgo#$:9kOb[J2D_\+1g+FcB$b'soe,/VNhF@5l\2Q*3UCa;YcR67a-O,t07C$&r"l94:D:o$H_t9r82_1Nb?.:!H&2+k0)EB=#.RB.'.-BaqP7"C<loEfps-W_;TN3;B.g&8N1k2h"+>YEI32;<Pnll9Fd$<g7=3g^;JZFfFeZP80!K>\\OeM4%&3U<H41=`bi0]X1k,V"e/<6ArCsjr:>RA>@<o3H#`LUGKHdp?Kg)'rmKTD*2Ar1O?-&;^M(!]W.c#2^D_LW%`h!,-XgA1.]i@i>3tr\WRO/o!p4WJ;4u--50]'m5D(7XIT,[EmQs$<*>BLNKZYSTrdirZE1;B_kO8Ta<7<lm"p8hHX(Ip`HT-[(*#/!gt@;;>IsN^2$K)FV9#JZ1]:6ahJMBZqhm^#J1Y2u%JGJU:hI(I-g(OsRL;7\fMeq>cM1)pgFQT&0s/(1Vd!*Z;RaZ4_-T&Z9pl6m6^@iWi,4O[QN8<Hq'(AJZo8m@m"3$`5VS='q)U0HC7,7P)@]*)kK?[h('p>&GYAP.U>K>+d;[N.-Z>iV%\9Jla@4!@/cot(FQqNb-d*]j&P2+/=XH\2gs=<\)D./`<3s,rf39[3GWBL,jgg#QrgHdGlp?q3-7]/=:;2/SBr@k]nS-];J9WHX[k57>,G.@]M.OAX\7XD?WYq(ZkiW5_o*AQhVXuEZ?3#]P*+DF!bS$anjTfC:S#O&TCnX*WOYUNLe1eu&+f%aGGan0RGV8JD.&rFsZac<D/)fpIU2"(68MF4ndUFM?+_-kO'5.L5]bd[_dk[.85*jL,OGJctb6nig"Rs(^=ZhS32j#sd7JH:FW4!ZaSq2&&Ho-#gFUje`_R8aQji$5Y>[<45E-EV+('7>="Mk"1F0bl*g#UPf"kK/Tl;nb&GVG>`X'eNm1[JG@gN`nPjerAO\[8W84jre;9]D0IH+tdLldkkY=7WV<3LNm@,1hPf^=-]1?U)D^h5ahcViV.Y6/$[4+g5p57ibqC5@5/0i"$,AQ+<)kh1XfjSosbXhVe%!VWU%+pB=U*g$Inh-Eu2S/!Dd.k)>bQG?`T>Un`-bm$a.+``j_c$FtqF5^FL-5S@lACpt4imciKZGrKW$pYfKt=gmmn!YqGlPtW5"_$BIeZ.K9^i,7l-b.a9@?\RAJJ?FCUH$_]e)S.i[@]/7=D>7jKaurbY+!8l.^C%8NR'<_krpX,?MnLg(3cD3Qr@eC?@U\\*58YHiIdFm<QDLV;]'FS@:G)*_ki%$[mHiBl*5E6'W&IIuhrcZZ+g%;OZf2Uf0#LtcQ,\LZ"aju[Z,LTt2SU.`j(A2U"+4?s^O6O&#X7pEAWK(/fU6BlU+)qm..)9qg1[d:d4W+:EC"l`8+:VL!BDlZqa/aNN=MuZFoV:^19tXBV,_)>VC[9&DpT=2f3OZ@gAqK"cM>a$Y<g,J9G42[0b0c?]eYR7:S;rMRjlTtpAd;A^&q"B<_=]nF,cb<(r%P^[ZA@'pZ4N2C\SiqE>!PW=WED9(CSQJm<pKX#e646SV01T\m+M1;h+F,=lu591]QNp,+]k^mb&dOJ,]@k[mdu_k+4^Ic_Nd4[D`p^e\*Sn]9C.dU[I2)7mbhU2c`G)9#X/C6!))%S'7ndUSUImF#`!>/q,=ih!dETC`X'jd%&*AU_6=b!a8TAj;Y%\Z$QasAMo`5:XQdq]K:S'jpM4b-!'FKZM'WPf<5TL^OK&k^<?(%#aidk;t0k2A)OB83$9`/WPdNCnBeF'#[piQ+,5ZI.2hbs\AV(cLE)Nba-#Fm1aoVkQCqW:X^QkHB,KIAfhiAkAe7]h1KZ$+imXebU"-2P$BruqDV1&(mh/,#i7A1TA7$4h:B*iXb-58:0TuuiXG?$&Ocp2UHXqh5Ff1@cE!A$<rG].CVrU1uX7a#$9C7,RZk^)i>29EsiO$2*3id_(Fkib^BtM2K3RYGrf)I4sFFJ@h9qkY[<:lBP#G#iq*Y(]dA_8+-I$;P`<cZHl(>7N-;_OH3U[j_E.iS-XBl=uE[J*;)H)@`')5Q(#T4\<or4pEAitlU^n^65^BpgO~>endstream
456 endobj
457 % 'R126': class PDFStream
458 126 0 obj
459 % page stream
460 << /Filter [ /ASCII85Decode
461 /FlateDecode ]
462- /Length 2346 >>
463+ /Length 2325 >>
464 stream
465-GauHLCN&7A')`jos'`,sO_!Es/\faY+4An]&Ko_#ZYn0b.107QCt<pB,SaN"rUKUjoroGq[UUT70s$2*L;TE8B4g@)$\+cFoja`b7eGZ77p_ZS+aMmUQU\IV_s$aRn'_rRS3%S9T\FCnLR1B@F*dE-SX*]a@puJJmXu@R-S78W:JO\.Y^3M%Vor\E7PU2Gd#_<G2M\r\3L-5a<#NP31G[/u;@3/&$EK<r=_TG__FR$<#tPmX[8gpM-k0lF(&!5KJ'mKY9%YDs'POaB)RN=aRV%iukt>N><`)U]4L3bQQp@HA.8XVWal"3>['f.YfBg4ndk0Q2ns4XW>7P17'5?p._P\q+9DrgIA/%44I'[#hYM\[g@Jrf^-cUoGA>djYJeFsd6)#=i1Tb4tMe?PA#+N\%C4X?m]9R2Xc/Dl/lPCi`;R8UpeU1NPX>.c25/[&KK4aHB%%!mF=VS,9J0[^g@C.JJ+r+"=-Bb7cOf]rD1=GUACs[WV5TO=9Gn:1sMSjtpmp*T^B<[FUA>8i8$f+IFBnRm%l0eG0`2_`b=B_M''Ym>&+!DKAOqq50V1_35:oGR@j6QUiA-m'S;^9_I'(fb(/i\=TO^(LCK<caXRmM&TZg<sEld/7Y25[6l`\?VO5e0E,KqUI.`?\h#BEJGG.*ONO],Tu4G44Ocg@%))JeHbDN0LRVb5&?pKrlRjC'QQPMB(1KFUG%0UZBi*OTNI\c/C+G0A1^_5I-.hjP&ZfNf9LjWDS\WGFPls4G)5ZRW9n%8'%[2R>=u5ZXRil"F3.+'L-/,k=AL6dDXfYe$#CaIh?]?K3p6>2++p]Hd'r#K"grI7jZ=W3RM;"<PJ:X=A\m'CshPi_-,)'l/=`j&l/BV#.TQC1fbj]4C%5RUHNjS[&fGDFTO17MH%smdf^(j9nR>Hfe&_;oa*J4TR5p)s,%r'.;-gSYCKe:Y%7`5O7K=$T_InfMnR.'g96q)O#:hLEps99S=--!2m8@]<6KG0DsoJSGL1cgZBM=V&6hG2El,8Y:o?$2S3+,"/iXg/VGId&E?PW*7&b'C,4T:Pl:EU!CW9"QN'f%r`^iQ')b/D8Ys^k;I&!X?JrY_]]@\/&h;764i10OZ.UV\i+\APPU`[CPm=3G;C*lSQ4Bs^Vc3=@q`ZiM4%G;95b-%8t*5pABBD5DHkDE7l76HWA?+ku-P%j_d]pZGpph-^3q"ecR2k#MOT$6qOC<TX*D<Qk+IlMAU)Qa3m]G<$`mQ5<Z>7QlnnQXdM:Yif.CMOZ=8$d<SC7RLbg$,o)acgia4HG3Lp"6';B&tr4"_b\NijaVdm1@k'C<?6LLCI1U$`-`l+O'I]CQXtXLX9SDI9a>CH+dj`W3Ik89X73&B+P2iPm6M/#,/]V7FMCOM(Gr;05<7`iNJNK,<T$.XJ\C==%^TMB3BDD9pM?jgsjcaC$LSUffPE*b+I7*:cP-5MI8>K=J=h1&hPeqG]_1A7n5.m]AlN2[H21<,mg]aZakX2G3eEV"8G>7el[MFpmO,IV4P;Cf,VHEn`Clj,f<V,cC27'>"tmX+]AOeEP'N^f@E4W379!*OXSq/I]FSgbJW[CZP&*Ai9&'UTC7:)*f@)AEW0-YgX$)F2K=^@VO0AUeNulDm;h"rY`kKdIK^G(Dn7+Y6dReeB<ff>:(?PG:mPm/+PSV72C8%=oVeNjPHd#Ub`FEp<r(FJ?Zk%;Bu.pd/^<&p$\=/e$++n0cXaa\20p?-.>3)(4/oF/IWmO9`u-5UMAWilF64r+ACNSBo*Am&=UD;Tj!qn(N3<Z9h.b"nY$sADRi%Qs_FpqEbkjVDPkW=#b:\NQ1j.8b'H%D:FX4(#Y)4p7T.oKQ$u?Q(cn%m,rYK-0=@7jRTF,kI=FNMT6d$#9DBleooeQF?rjDksVPAlEFL0gffUF[^"BY&@^;"r;QtM0pm`,P1Q[6*tIce<(5CD/kUMm@T2FqK%%;)3c1G4./mKL;+89CoNi=C=KL@jKdK>5M46N!'n_rSh[\5?)k65d<K(jN/PK?H)I3-04ub@l_9)G;bR3\P21$otT^_ILV[,`ipPVSnhYXq*%h-*\lqOLVGj,)lc]bGR1biH#6JGZbd@i5>ReSapo\'Lp5_X*9PlZ<XDklccX7V;h(1o*B]l[`VLe4tYP&DcHOt0Gb+u$kgL1>b[gB0O=>?3S%JncJI/fDTd#oaHZd@CqM0KDn"]e:>e4p[G2(9]/kFK"43]8K?NhY%Nn*TSu:<!MD8Doh15IHF4#-XCN"E$KBAiYlYjqm:.?MKc$9jqpqSX(_n.^@IpGfI/7'BX`9=lrc1\pZ/&rk1ZE[Y]fPPq_G?Wo?EbBO4-ekNIPQ([J]&^!~>endstream
466+Gb!#\D/\/u')ldas'ZJs?oq1%;:]LjIrI&8c[_.fNXFR8/rCCSPZUdfFa%PVL]7'4Z[<?"a-%u!LU.H3I+d3+B:aB\G(",cf6<k'K'7tE]m]@5hk>$XIb3o6pm-@KT:Yt+HK(:[%Ych(ot:!;1rPd1PCMA%)(E61f#mJWBQ8@HG-C2qkm7c!j"C5i%;EJj$j.F="@Ko;V=Rr'B1YEgBh>*G[8r`.;G2ll8l[?T-6=I-UeJm$HU6[VB`-Spp%&jC\o"YB;U=()A%ca"#X>#AfX#-+Ku/_&F!Hn4iSqK*?F0son-FF>+X?siK^P\]FDAnB,i-.\:[AE@KVasVOq9%XIZialM,l[W9IX+5Jtb5e?KLMK9uIea=@5BO[7kFG9$jK(>2>%7HR.2uaP\V+bUWB.#Ae`sjuTeG_\-9U9<%H58tBaK80<PZ7:n)UZKt:t?mj)Rcg0s$XZsCE3N;_-:<-cTZkfd-f[pu$r3\22rVjn(*YH8OfDf:_Dab/C1,.Lo6ucC#+GiC(@rk%qkYnop,*)"6WMkQ!c'a^C;ONp"2LD+`FhRcULN4`cHe>=E9Z9?d7IbD?<$FFL'L-5.kHp[LAeVF$qY/%P+/G_X^K^ju6b0RNi9;4)?[Lage(FX`eRCOs"7s.0_TKdGU@01t=jM`mE1SNd<KJdtXs,faeT!Wu\Cg%8Dq'+oit"CdI[re5S0Jbk!gQ*GXD-'V3kn,1Y!,,5>BDNNl<b-X<\5Ic=+3HCo"LCr9KgP!G)K\AT!.j=gDdS.SdO?Tgj\_RM6Ie$<fUA=r)O<+et#jufaCE]EtmZ+'=Uer'ni\#1-&o^.+2ir&*M6?LC:7S\1!lbJ#h5I5_DJh()N-ASk<LcEFGtob2kUQdd[IZaC)i_3X\UndNgKg9du`8dSZ-K(V@#gf,8r<T(CZir^i#%L.cYc^s]m_JjULu[pm^uf("pREfGGPYJrWX/#b\HoD_)>mc]HBk9(I5"Wh"j;Q@?!+u8Z$cBi<h4I9Vs4^9+39KUahKh1gP6Y8-#)lA&+Q(32#mZBCZ&mR[u`F>6+Y#C@`;*<+1r2s@bH]_D/=$;N+bo?R<XrC0[4+UGPbXANA?.#hdkFHdsh84s)AnTrmV7Y,,Dj4&f=^5$(h2U;1Eu")3<sE(hcQ4Q@%S+R(dooG:kJI.C@T8Lnq6Y*odb$O%K]VK<8F>%r[JHlALC8u4cdG?4bj8MKOdF[T'Uqkd\9>peHd>Mc@oX_DAr4kE&4g>39PY5k+Ki(o'E`4s9.Y;CR`nY4NTP_LkA^e"i[Dg.dPCT#2X_%k=<4=D#VP>k9Y&_rrX'*9*6`.ZBYVp+-@h('Nj3R[cn8tj0pX?H)5rN\8:'Z:A,=n_.HQP.H<Yd[Y\qGuco4gh@h!_An%;)&R,,1Ic;@k,hqURkA5mI`ce0!+NfL"n$`@GF#sG_d^IA;WpfNI(,gI3-P,KctQ>^h0c,M$;;E$ggpiui!4#kfqj5RIL[\5-RQBYY)e']f;<c+X#CKK^`,<M<]g\!jaGbhs*FU4Ea2.$VPk5rg]K4MME+`+d%M+("LJKDE8[oI4V0k&3?AuhZagm9JYo46K%Y0P%:<9>N1$+u(Z^jA"b0(Y@VfKne:@H7Yu8UYaTX36(OcL>lALd>-"fDgFi-CuKBLqnbf8qMa7QR9a/rapKE0(tjZr\<R:LM.>Wo;h*'VPj+e(E.F,[=#.OgSI^s:O@8c<HIN01MObr\4FO6$'WZYTdJ`&c.6D;Io4dL#!8=V<O>tdoineZ[!nM5"Mt+=h95__qqHuBR8-r2dHt5__9ndnBF/&EEe!]GYfQZJ]+=`cp=6r^CoJ<g88"k1AuY,72a<7J+`A;3IF@-E%q==%H?"DPJ*@_9!l_`ZEb"4*<ClR.2Y'FK?s(YX=(skIbj)mH;rr_Kp)Js`QDLZQ&Jl4SGiFsE"A/c(8d"m;o6+rA==i/i'Wu5Y8/$RDnl]%+q".&0`c_Q4pg:!8J'Us..(2q-]1,S!:0#qhYcJtHq"jK"N4!A(<N0Gu(1C?^m?K/2/f3.X'SmL76G8%[]'SD)^cQ,/$$<hejaBk%Pp(Hi%$]`F:I00hDaX_.@hWaTQ`CPT<p=M`/M_.hs10Z!#lI>_G6]5/%c*i<$f-&V]6'6+MP;X2SA)[Feo9C1\pm1B\>)o"*Mrln,Mb@<Su#>>gfYNb.%gA&NnuG2DnDe=:3H'_n7p=D_5M0(i>YsqV:,'<9^)?@#'D8U8>'A6FCTF%4n&Zh?@U^aFuBsfnWmT?jTG3mJioL>q50^iR+s>!0!L,FoK!(eXLsnHVlf2E_li1sh-#B"aMBV/CtWoVni)&_ht-~>endstream
467 endobj
468 % 'R127': class PDFStream
469 127 0 obj
470 % page stream
471 << /Filter [ /ASCII85Decode
472 /FlateDecode ]
473- /Length 2019 >>
474+ /Length 2026 >>
475 stream
476-Gau0D9lK&M&A8=iJ!f%\;5[5j9E&7*&)0g2?!n1Wi`f\&Zp\&5A5Z&uZ/&dE)+p4^`3p:'G$lPX.J!#RRl<\>d)Ni9I7A:.hoG6@9`RHbirjt:hhCTEpg\\sn`00aW5]=%0^/3-p2Dk,B.bid]%&o?HHrVRnL`5VntPN+lIk8&::PbUdg(@.j#O7rJ0?KuV!IKrK'FX5#Qof-gfUcf@a,[m;M>=_OT#uRs+Ttr%aL]m&9Z`Vpf^)Q)Gol_TU7*gZPiecbVc_CdP<pX-<D:M_[(U<p[*e4-5-PS+X8M%KO9;l3CHR#43NF3Q<:<+UhXn-8;T+>3J`@&PFTYt(t/6$O(/[RIfJf7;u&Yt1<\o<H?^<UrDCl_^)_WcQ:)=aW0hX_:l%JK[?.`:eSuGDi:ZYYAu%-F$'b)ZY8?mM.-Uo=(Nq#LRRaf^_1SQh.h<C>[]'K\(UMV;KM=W!:Orb-aKeV/7^bAVf5(19>@^!`6\LZF=iM&G9d*FC9Y662(*]S$rm*,h>"`ck\H4,<EYn/YE[/@.bet`E0X6'D]O(Rj+PC]qek@!NcFcho]jCFYg%@CTJ%q8bK#s"Q)`?e:7GT,*I-+EQKL3[`B0pWk9J1_[>9@\(BcjFt//3j:/nYd"R;C^,rnJn)W5\<JN)M2NW@G1jVOS]bnY8@u>YuaZQ!jg?a-m#f%C1]=qWO,MhG]_8>+;%\^O8T6m[+O!n(7HS9bdt\Z)lnGjJWrm@tQ$#c#/g'/.Wh1VI59nna:Y/3hs#lk;JbFW@$uGAboC,>\n&Ajf+%iXosN%<(/oi.\`l\eTZ\3_^:CFa0Vr#*h=PAe:olBY[S!f^g;4=32q0/L=E-giU7.hMA^mQV#p0dp$Qt#8m7A+a?9^UQ+JM_cTR0(3\AZ7Vu/[&C:>:VTrZNI*TF6$C1nB@_S!U/F>8bMBkp3D4R[TGq/Dfg[?e5<p_X=3]t=EDlZTCarLR%_JJ^@Mf8kNW[n(:",rfZcFHgdKSC=;?<L@Om%D`?HE;.B1:r^2m-T\"9$JdG5hrE/)(#139VUY/'ohF9,O9sB!eA52Ipm09$1`.b[;5#iVN3Uu)EpqUC21EN24=Um]YehlC.B*2OD5R-q\o:;28*+!B?.Dt&bmQYZ87h*jPSBS;4W^@.]#!,[Tj-(7-%QDYSWbg<fKL.LP*q3pkH9gb<ONu:`e[_RU?tS6n+Ek'V(k_]SnIu]G$1qSALr51hD\'$ID#U&ZU[cqI.'ARhC[d6SiY@7e?:7Mr:%"!n2Mr.`^NCq:%bk`fK8d/*<M(26N5`NNoj$._75q*?V9[<UcWVK>Ta]qAkY$<WaUC%%fa>WinMK0W6W\&a2PqS63nQLWRBcjA;=_-$ZlqI3K6X93g66LO'FaoTY%6c#a8;'n_E2=qWg%N^YH:jBPU8U[:W#l6GMnRg[A!,N)^;(pV;@?lDq4?`]dI.LFQ`@+`-*tcF'V<c\4e%ld2p-WZcW'i.SNHK,5$qE,Y56N"h2GC0MY^'Y$WuIhY@GO]Xf>ni.uE"9p]3?7%T#fU@FaWN)`!$NLrRcLe]B\2RbuWlaQ6"4P,uZ1W5"r]AY_Hk*bfS<EHi*HC@BA`-GT"ckf*O1TN/le/3E>E?c.+X\RFq;XB-pMgWFr=aXkH\hs@B[5s6"As<pUk6kuD;qf7?>+nDKWWkH0NC,(EH]1'.A#*,9)e`F,dB%K``ChNmfpe[f)35%93aljGps!*NgZ!Q.A`VPJU*kc0QUh78^K=5%c&/O0nmBKWCO,);?^gUV"KtH+fg6'E/*rl7eE.;[*EBfg$7$nIs[9Tbjab$3bY/:3?1!cNY`&RBh07#Ym?Y5(7<SiRsgX&,u3WX%d-]F6W_21rA,!tq+W_JSIk>:c$erh+5]0$SGVh>>lXH1[J1kt_5OY6`6bNL".sMHToKb%AnA?Ul`I(sm=@Lcp%l:ABK&H$VLBR61Gg=T9QLt4@.UunO";*NqXuojofIU^E0F;r1:Z4E/f]'5TMGf/Q`2Rg:61u_)_NfC#DD?8\,~>endstream
477+Gau`TgMZ%0&:G(NJ!f%\;5Xu4Q@*$^&)5p;%Bq8/`,Bcqck9opO[Uinq9lJ8$mj);@U"[$UC(I7&iDd6F65f7d)J;rIKjkDT?$Hk`WOPBE<KV"mDAW;r%c"!pjRMIQ"(%d)"`,lHT2r'1RAnBgaO:92.squn;\r@H-s&fea2i.%=6PEmL[BZS=g*SZ9P/VDpSPJ668E>ZbNnVL=9f)3,*)u7$FZI="sUY`]mTGIlrA3D7fd_Tlg,GQGG2>8Lp&;arm>J'VPf#Ji65sZcUa;(k0fu^-*^ON_c=dCV0QFT9B2Pk76C>'#d2RP$dG]i=pr)Y]=.=fR(/P+HVFZpmju.#d:uA?)HBX^+qe[YK&-U9cWk^hWko*"qLP/f;lNO6QS?uDCImc3tQHfMiC*Vj<MG5*/I"G>dk[*l?TR7s'`?&`KhF0`Q?P2_@`Ds+d#F#+Q8GK&$$Co1BWilb#qNCJ>H\Z$N$l+#VZ]DZ/DU.*.=abqKR8dadS^(@]:\qqIQATl]4f(?*E;^pJQ8E99pJMW'2IA[%)1NU[F4&5''=.6Crp:,pMFhR9[>G2(k8`dlLU&(s"RtXYUa^MTOF4Xj<"oJ4cp"_)N2KF=d#/KINgS6N"o-P,ub=O\F,SqGY@`21o]K/7#cS/bfEZ\k-ZV'@koOAF>KRi4<g65$V&.73L"c^."'NOXej?Eh@J!eTQ96!&Fp[9XsPOH`Pa]96Ab4]LXoNd9D?4$,HC\VH=Ul!<#N/84TMs"03X:>$0W+X;nZt]K.*V4hl?(W0:H>*5ZGm'78PtIo6O1%B2ME_qu9['[uIS8dXLVlKrRE$X/\A^chqN[66%gSp_<0[9B.N:@WV"ea?gaL-A!sbRjMC<F\sV?X#\)R(Zh^.%gZ3#BJ\QrT1pL!nCK(%dfu<M"]g:R,V+P?s0Af8g"=uWU"oV0XmiIK8e/l+B4GAVm'l&KIT[+p]fo':<;j_cCp&@=e=ic:FL>*Pl?23CKkb17-[+ZG@,9g:5=ud>sfX^.`ZBo(GWa6\Hm5PBOJnXkR8MA\\)E.H],(PO<ZYk\WI.r"B7t$Aj/]hX-00N,;ZK[Y,W7/o3<5*V5\3,PUi3s\;rZqmgNK;Xh)3a;>t6J;FCrJ#Mi?5;mQ?aX!:,Gg(,?86nB[ZH6mV+k-#`'cqeJL-2^]TXB%jM$Q#l<NMLarrGOf$E:W+;#Q4:5)1VA0Tq7o<SlG=!dsdFi&mXCkUXMn"m1K&Pr;a]Lg\Ug-VN,7^@"PX@PA[8M#uPALW45)>JBaHpBN4q=k8a:"j,2G%H_WWKVsQ,JV\)7'H&JL3rusNUJP]_Yd1k'.`0F%P1h+:dbli-2>rc?A.T/C\)(,;VS$HDh[1_2nl*o)76&4p;*GE&JC5B-PU&,lkE1D>^oZu1Q.Uu=EbVZi3F,l56CAW'i&B2Y3X>k!7Si8^(m6^"3"4uGr4:rdV+tD=_MZF!a0_I)P(/lKEc_il6M)9bn%A/uDXZpPY=IRBQX)&f,7@>s>W@7H^p[_@J2\cOo\ZoWpF-QWIWX%WGlr)4V`M),I<2E4)6LZ93*G`]e>5XXClG>HSYsHH%M-0be$0_E!#/%e94<"!h3&=bN"Qa?]$G%UlM8qr-W<<tL[[A5n<5p'VffI0l\6E=_oZ*j^$&-Y;[]\)llPMu^F8'Q*EKZR2$TVV[R#.&1V,YI#)##aF1LjUP"DsoBdG=C&6hhUi3g@&(1.U`q\2#KOU>"r.B@stl8&$f"=#$fk>@7F+QNLC71iMfY4n#c'iP8K5]TfW,6gC%q75/g<a.T;RCc50!S2M<iSAue]cVh`<35]Z,>?*qA3u8jg)\-R039\*hHRoGIAnW\-j_6D_XmpAmF!hBe3-OEo]kuHDfETVJ=&QB9RG"b$3GSGg^4TtM2td144addk^k]b)bW:Q_<TtMfhqb%',Ab3F@)mBVl#(k+%XPhfXpnrZ,])aX@5Pk9Wq0rEJk'Y1lZU]co!4INj'KL\q?(N7]U$@Nc?0&il[!u*/R\0CbAIAN:R2HV(]OM6-+*I~>endstream
478 endobj
479 % 'R128': class PDFStream
480 128 0 obj
481 % page stream
482 << /Filter [ /ASCII85Decode
483 /FlateDecode ]
484- /Length 2337 >>
485+ /Length 2285 >>
486 stream
487-Gau0EgMYb:&q)^sJ#IctfNBm:8_l2L6Saj5ZJugI'*4$-GS.=(VUR?BB"FI4ZsQ$t`JZ9S,g3EV5R875])'pUdoE4U!rN`&GFScJT>@"X+bUHO;@*/K+(c>Y@<QtfrU_@OSfNf!1`6#(GV[9_:/Ck7Bk45</tA-IV(gp$,iD2;iq*?_[dWmDi/_<4isI"JdfO$j^4:8:a0Ke&"Jf$0?_+Cjj5mh<,i3S+jds/3"dP>Z3"<-T_F]jb>UBd6l;iWBn%XJ-2jjQ%?2i/5YPWkm*U7do3Bc#<)Xrs3'WcBuMV,"'GBIe7Q?j[Cb?&V+\hfjMScrR[ntQFur$!/kV/4ab\u8In]6q@e;HV",)F8>ef6C4sLdc;.XP^U8r[D[nJ>/--B2l,94oZj=kCMXICfa^sMuP\3$>W_sCb>@ZblUjQSL@qR3X$a$D-SFMI\u6k^=PL4J&+Vf@?M/WI_=Crg(uTr/^Ueu?)@2oB(WaW1;0uTCEk!&Kj5IGh[.64E(4K5Dksq%*/<#&^,Nhi*5cdr30a8qY-iX,D2MDKaJB,Br?&d1.2!!1'`QI5ge5#'n&:,aLS"G7!AM0g7tl+o9,Xd0ai't1Lao0t22#Z17i*n+Q$;9+B;)CPWaTWi@\.!JIZP[K(f\Y"aYLC<)6_Xp^qe[(/2LN:I3?=U0LA,Dk#ba]g<.8^Vf(Q[i&<)XoYQFZ\hell9A?ppQ%[t%!p:1f+7G,91d574^S!)or5l&i"hG*>oLWI%H[c"V7%/bb71Bg)2WcOOQF_*U?0E#/\'0A%`4Hb00H'c*@mKgY>a$)Z(;fD2H4OV?dIRjVM*HA![$=L5=:*'5Fej/^+"2Z,&HpVF0-=&TORoNLMO._;Uf=@E7)r:[&]E,];AuIo/WKa[LneM6C7_1AUIHKpBVLc,e#`>a<FrTd!lH7RM&3+p5DufV5d$<aKH9[i01jf(3j5(F_Ptp_Oa,:'I]lQdG.Z*/N^H?hj54#T#N67)r:*G>JRgJ`+tXuM:$;(:B"OT>_S\1hWJLIR-#VC&ZJpd*R.SG:_tj-g-<KAamSZd/#<sT`eZ7MDN5EK3q@lnX8%gSm$7"*<P4?LT=9c[\H$]ZrqVgClI0qNl@Y&9WAaf0eDLpbQ@37,<1\,fmku0Mh-+`\<Q"+%(_U8SL<,Z0$OoPP0"j/efJCS2Y8N+aMe/thbnSaFfBXUC4?>=o5FU)[[_FR=rC8%.E`&FFJ]FBP3D+s)N8R2pILP4hGSH*[$J%MbKhY7s4oAl"t]VPKKJ\#<6qt;l%(W%65i]0ML^]+SM0/]n+<T]:^.P)D%ass2s1Uu8Gd!\*Pq)M!*cG=$uZ"ZbZU'j)+*a=V!h5/2]!n`]o%7ck(;dnJ4:)L1IMO0k7RhLnmQNYkA4MegiCT`[RjW&T;l!csG9%ODk\ODQtgo.h+Y)U!aB#[ek/&,.j;P7f=*&h+;:1Xr*CQn!^BG^5pCH0%`:1877H@d.7V(sSk/XMX_qFTdfe9g%d3fI_Znc4a-eQq8L3sYXdVpqZD]G=/AoE`Q>4>"3o]tnb?R?92+OTS8D42qVb.\BAo;&,I!'KHT//@]6[i*C0k>WDM;"Hqo=3&&rPEl6.E;dse:R#WA5h!)->'Pgqdfpl/ZPN=r+/\8;.15!gb[o:eA3=5akSYt\iRl"(62;4<Jp/-ETVGK5&aHh0RH0c[4XL3M3mFn;;FOAnkd'IVhT:-olD:%,qa,VV8hlu?5',`8KV3Q"*%f.-\Q"_^Xl3CI.Oj3XEh+a'gA<3H0eOG5.BC3.KDY2d8+:;G^3;QV4TjPbK&nT6[XO4X!7C65R]EfpL9!Q=-^)?Kd'ClB6$n"OpS-ZF4:%LQ]_Vs]]P42S_\!^_qYIX>#'J?ZUkK]KMA0lA8m?E/Elkmh8LHFkWm<nq:USlE3h,%uEYa]BJo$FJ6R725_)g_8LkjBfqL,'8]%_Mqn[G\Ckm+4$Hf6mJ^e(MHK9mFFJiM"Za4WH"f]UQ_[e+f6AeQ].cL?CY,js[tPFb@ibm;u"Y=_"7i4F4<u#6ql@0cF!c^n834=_h[.>@eg+.T.K44n=5%:\hAs7pG;*B%cB.QBs]JgQ2X2%Ui1.S[-*H<=W'`>]4uMQ?[q1>F/G$TU=bZ@)ReEXo'A%Z.!YkSIcZW]e+#md"/c=HFl78UC!dliIQ;CL:6mK(#=Qmr"XI?^^J26(QF%Hh=lYRa65f+nF%2kq^][gogTPi3N:IL=$?T-;s4TDLNf)Wn8qBEqo/:(lIO_g@-!@QKAj7ubp9npdKOXq'=u*h*9hV#:/N\$Zq<=eU7NHdfN<2JK.gHP7H;`:%XCIZ$W2Z<k3hRT:/Cin'L*mk~>endstream
488+Gau0DD/\/g')ipps'bW=+mHjD/bq7epd=ea`HF2LaL/i)%[Y.dQ7/5^,cW+)2uDq0)=#1\SD$OGVaXF]e8Y3,1Cn+FUd"d2rcakGrH(VL5(jV>FI?#d%#/kL:@BisO1lYWL!A>nPU</&d%?n(n]gUOh_'j][E4,D1:[rc*$=kP;R8>HK#+\G,FHnjNX\H7Ac#DT5,V>r:Ei`Cd_.;CF'H5V;_,2]8$[Dfp%B,+I\Fq,]eBE>E[Mh0e#0c5(fN6tU=uBaVFR8T,I`p)r^mu+=d]ifqY+QadR"_t#jakK>J*q$@Stnd)mlc>IS<rJK`;ctSPd@Xo_aW+?&t5"mHk8Hc/RW88n%*ZRuP\,CU5-`==8u.P"s-?;B(sZH'#"NJFAr'_.P;jKLt$EkNUMLf=o%"[t4:ol#)j="1mRd,0TW$;Qc"T<#'F^"F_^4lbXO1OhQt?5&pq0_n"C74;c!+g"Bd^o`;5'Hn&ujVaBIM7ooSBhjG/b#A$B>lU("ag3>H"EMD!WB>4KlKX^WQd#MokA!JO3o_:8;b':=k&D"R<&`Z[cB`e,VPa+p""!_9H+V*C==bf;>Sh=.m(F&JJFVYNj>ErcSNSjm@7Z7of+j@3qo!Oa:<DMAk+6YX496al5I,,Y?pX8acm#lU;4FqP[d`;5o59(Xqp7L;9)h3$H`e!OZ5C6A^UM19&,ODOb%gBY))?HZmjt#PZ\oMmukS6=kbb.qREjpsg^u6FZr(Z%R)VGnClh5T7Au"VDZVom9(dA;[as[L4;5UF)X_[lc!$WX)W/I945a0"ZePa@ZZ:e4J<D]FM.[L.?1qJpk.="FYhZIjhQEB:0oGAJUfO:M>C=DPE``6TY3s)2!JaUHt.-s/df`iSNa^2iE`r25LCk"@HSEkkbUT5U'75OhKJi)h;@5p:V+W6;I[47c$a.ON5?P3m2`BZgp6n"MKjc.K-3t[LESe7#Pj?G,6b8-8+J(TNJ5C>M!^Q6LeBq`.<'D9?5PN_;^:,dpVn^FK6(f^J@]eJUVO_S=Hr50RXL6M,k]KH6GU[ceNq\WEf_ua\:AO#/QDLkB[,2S5Npl'UW<VlJb:J84hH^.sO!bo!"k$2ht6qIYL8HB^l"fNc3:9qQL;uP`l;Z+d:Kk@g@lD<(`^@$O&09!8CWYW`k7XQfac.Blngr3gl0rZZ)Y-VTmbBsE1c2[16@YXhoLs2V]VXots!s3Vam,mV:\1`Mf@JHoSGrY^3\M#d_jsoslA/38+]!;\=g?d_a=STSEUA[,FNR#XVJ"gXJeY3F6G9.]_:>MbfRKA=b@a1%tfN]9&[1hPb=7NRP?umZXnKibR&T0:Cin@JSR;rdDB=_2a]7N;C??W`7Ieh]W]'JmoYqNdRA#d))?RoJ]^bltLJZHYem(mA;1S"p@6@Ntba*6!HJBU#E4i%X->T#1a/XMX_q,-6m1j\"q3f\HVn,SO+eQq8LSV)?m;f5Q6?Ag*Z4[u^l:J5V5YOUC=Ae;s>EaZG+8$&Yfo!pS?Xod(0,DSP-_NtZoH5@M`(QL\15gjJ*KBJ[oDL?N]PaFXZSrP";^=2c7;qthTYW8uD-Hdu>/\6<J2M:/6[o;(I3=Z$pSYgAc9q&'V)Kqs8"%X!L'^E[VCtZ,Z`t"8->3dPLf+rM*$[8(*?ZoZP]bs_t#47^:n!HHAL8GV21+4TLQ#L"=#&D&?Be!W\#JJcAc!0>u-cp837tUoo7Z>/2m5E%'o\M&?MI*YLqH2\(Y@:"YZ=PA#iSBK&=tMnM!7[3)H&7*d)>8:qnqUN;+/j-faR2"3qsXrjdBb+WHek9LH#1<#*PM0K(T25/Wo&$G4<uGfCMTgV$t71A5C^2`^>7(qSi(iZI,>Cp3Wm!nVGA8)Pr,h':4:%:<Z^)s8X/2X_r?+u6+Rj2mQ^O/UmGlsqW-\Y^1c'5RZ(TI^q',U7Y@;RG6G'4C`PCgn7^)j^^G8eD<]?WU$uB"Ulg-$ACWVl]r<b*;crNr?1G;01[q6HNYWAqOWQd`KiHCo[&Jgb\+S7V;03M>IOqq)%5JGZW2<Hq+\@roPr@6`*k<T"&9>6+l2esd/d*EMe8#4)lpS&9\3==^hYC@+5f&#_BR9Q!lSe&qr$UjYN;hGtSb7?g[,6cgrBE1WdP7D#b!_ndJ"QYD9`RE4+&LVaZi-hnm,&->,biC`1U]T::I"Z#o!t.:]8M`[-W;"[fGm<8q0L\c"I%5H]P1k=P:i&@J_22)9@VC_a^$ts]m3PLjtqr"5rA,ORWfWthUjHLL;A-$-OkMLc8?U0hRVnGkl4/kk[a~>endstream
489 endobj
490 % 'R129': class PDFStream
491 129 0 obj
492 % page stream
493 << /Filter [ /ASCII85Decode
494 /FlateDecode ]
495- /Length 1610 >>
496+ /Length 1619 >>
497 stream
498-GauHL>uTcA'RaVKs)@k^8ROZ`SaXqaJaKc!SRG[4A9K%Q9LlAL7%d)R,j1qnrqBa@G"<aoOF`/F_a:pq3]]=rarpo_'tU$b']@dIIeaOAfRQ6h@EWT*hu_1/LBi;L*eZu>D@\eQd-pZ(4WJNfnFMp>M,[D_%#qHH,)6DSl`.s[#8jZbfBcmM$ol3T]$Rc>o_b;OTFUaRfouigV"g.P0q?+Ag;fWe[;WIB,8f4Qi&L0`Q"I_UVj^]a;S.Kg>oTLH&-E?9`"]!KR2Pnbn>M<(U'rABK-;I76'J."q1M0MOFl3;4'Fc,";q7rqW)0s[)HuQ`cRjZc==,L-OGck7QCEa+LRiqFip,OS\U;R.I:&"pXYXMj#nIVN\_:5I+T>f>J&%3mC,16GF$Yq4@HHVkBj)6jKlMn[LU(4H43f]P6\?6p&'#d[Z=rg+j%YuAZHQr+-1LYG5^?q\dH6QaJu8R79)/F:!If=\j`j%'$:juFRaTtZ4g!Fht1-"aLptc[`X!#R%Zdfku"ELJsfHFHN+!YL4V5q'_#@b)Cda'&gq0$iI$K[6`6G*="H/d#0&E=.KsGNb5C)=l1Y&#>Hg1sL=;;iiuY4fD7<lddEc4O:&_p!g'[bt>O_KKd5b2b+B;B/-,h;kGVd4CC76+/]`_S,Hb_C'Z9ARME?l]YE_^,;@Up0?qg:Z#L7)6GUoP6oh/L9i/He+so.QLt9.^FN@]b@IjMh"1ZWkc5T&-VK)R3h@X7.Z<EeM3B;A(35Lb@^BjOn=obf!@,F1blpV9#BCR&sC5XP4J<a>gqpnD@\W+!(Fpn`E0C/Wq=:/2G!&+YfM;4Dku`g8onN0jjA"GH8'*%6eQ3Ca+;iT!\4\Y,@Q_)jd!S>,"\>HdG]Ei`JmN[WF0\/Wg*O7F8U2:r-):q=:PaR\r5.0>3Y?F@&),;*uf>$i>92lk>$]lU%`a2R-C,q,'hEmu+760S7k[Gb^c)4,_?oQ$2B.G`YI)0$0?L?D?6Ha(tBmr`I-AZe'\$ZQ)n#^q#/4rK7k^991(!)&3WgIWQ1_DK+F_)d&j]m7[eRmq>9=qM)9Km@d$=VP'*jZ'"_gS;&)@H\rR"3-[ng!tUEQn)fld\,1MX*M-[7I$%=GS1$B=N6GmZF]W!bc.3rd7l?_.7URIC:9->E+trYg=(uTt7ej!K-AcXeZd+7j-F>1FmL_c_+-ktI<[>XgO1(X8FVOONCiQ(c/u?C4NoUn"N\Q#k#kXcE'8!56We8T$kgh?hFgih]irslbX&s93R]fn;:?=$&,#U.+!tloX)nZ[HJJV]@:2r'`8c#ZOBJ%lLH,]?YmaAkE3jk<,SQdp5g.cphZUY=#8NR]7it^[6cs*4Z//mBNiT82P9]4/2/Ht[u(+&F>>@7W[:P6g7C$jku4#Z8RiE`%R.!Gje1uW?:-*;u#XX[Jr3D9$KL%SS`".?#X`gtg^L-m;t7.'@;MF=)Y[_&VfJ's!(E:6R@jkGtV`8(W>qh51tm.seP8nBWr#gTS:U#?c@np9N-dB0)-GMDN1Admd1E&."53#Q44_$ajIU-!J_of+.f]QeQT`S3]-Dff9hU5d(``cR2Hk]])UMW6%hobrMBK6>)j_1+4pihH~>endstream
499+GauHLgMZ%0&:G(NJ!`D6FojspjI;;V&(tj/?!o>M`ooUf(BlBf2Ii1T8]mA8rV$dNagkW4&N>9)L`$[5%u4e0'LI?-U&18%!T"7DVfs;;&I^H$]7(QN+5gUQGjs>D6!2eM@d&"<^E9)d39Teha%JiWWTM,9RU-Uq%M&VRW[<K+kcgZ1ksH<]HuqNl70X=X2.AeY9=+`7k0bq4rZl4[BCN%r^?)ad\%]bYXUS,3L]JhZ9.<C8Z7u!udErO7Y@2Yap<t'XR0H$uS:W)'%Eg1nVB?&MUGH(:ir[2i$DUBmn'&3W0$/bV'u>#DQA[;hM9uUlTA%^rfrrt,cC&C;_RGaY[&TdG\$kh_HT:=#B-Pmf1^'M]RECf&g[=M\b@q@PUNk#R/^mno7;;^f_6:?j6WNIET!&Bbs5'I:2mT*<(#k!peAf]#%mhW.q=.*F-3+u+2I(P=_^2,sBPO]-nMPp;.%rcp5Za":Vq^/5OWWs%_'a^3dJ-usAgiaeH&P]I_+Z:_^3p5(_gjRB%,drr/WAc-86h*"K_%'s9]qqI2_6cD-DiP<;$tP"SbZL!du+H[G9?/]RGkO8f!pJ>ApaL%b7FFebdtdnG@%m/I]s>hs'Tq?Q$#V4'hM,>NW\-in=l?5:3WT9Y+aZ])'N.R"IV95O?g@P.8V`WMP5FS,>Z4oD#j.O%eOqSiQ47bF@stUFP6sH-B5qIh48T<'?#ma6>gH[<\m#dAJW<e(eDY1oPc:HT*p93VP9oDNG`Y>iNS_4[^EprHsGbi@G/6)QKO*fA,Q:Zi]/HGY2Canl$UUseA[Y'nUaW&@T[?!l$IJ%gNH*U$I5gfr3mNN7n5g4H?Z,DQ:R-XQC+:;Qfu_P!(JXig2*92Z%1JUiOdq0jjEV"A$M<<1X@<bm%g:M7-H:/C?fJ($DjipjTri1QqM;\?<9XKYtI@/V))fC.I?Cg(h[qn?Y@7I.Ige>%;@#fEtZ6b(@HLF4)nmT)X!Fcb#1%OjC,VT*b809:Lm5H5%1sfO&t]:o!+=^If,WY32)]OQ562h+JckZ-]JF::uUo/<u4/?#M7_(JnX5mP'/I2/5NXM&p;+EI-.+l-)RE"UoBLM%\/4oL`;3djZ%NOcN4W;O(ZX*Q9.0-%o9NZZ-'%T/gr_dN5ClDC=XM@SS3d>Tp\U/,$@^2gZjd3`(N8Y29K,NfWBFHW^%io[:E=Kd)hMQp"p3FW!^OJr$I<^fEQ)kH!"1C]je%3I.KoJ4Qf,XOlmGM#J*/0RP5n`C7mVFpX/!1NF:OYlC;sMT61gj;?(bXS@Mmh8OP%_Cd=lYr!op*G2NOkM/tcf;j0C[,?bJ`*8[n^C:j,AW6T7h[.T5E7h)hLpX/kGofLi'^'_P29#3"Jera#\bB&6:5"Z1A[3J;hS6B;n_U!hR_hh^/8,C#5R*\i2WWHq(E3Cj.=qRO`PkL>_QKq`iejl\K'UiV;GL<!<S2/&8C+%W",l'tPC[U#jU(2j-HWLp3Di/EU*^h\AWQJJ!h>T`^WQYT&L@`U_.(E:?E81&fg"g&o%skqg>p%5bi+23;Bf<f?JfT&1Or::mD*Ob"4=hl*TneRs"6Za(j)B-R\L7sdIc'gGDBW5f5oAJ52]Nn:#Ni0/I/~>endstream
500 endobj
501 % 'R130': class PDFStream
502 130 0 obj
503 % page stream
504 << /Filter [ /ASCII85Decode
505 /FlateDecode ]
506- /Length 1667 >>
507+ /Length 1847 >>
508 stream
509-Gau0DmrRJH&H/2gr"&\$F%OOmC]cS^]?[4_hFuZtS#1;)+.29uHa.^u-!-6s\A,a.),/s,#V!;k>VOl[qt0TaKF^6BmCRk3'&\O"F?fTZ#;Da#htQt$^4m`MV^MM7T(pLT7PR=0TbkbER+Ac;4nhKYV^E1oDe"MU/h(+#O^,Q?7QXON8S&5eor<,"U$sODE]O)WM1JR%Fb/^0rX@h*?/jbtT<7bbZdRU02Lc!]cfG[Brc*rp,,IulMMZ\W]d[Pug^jg#73Uh4C5ki<OcW,-NN*:&K:@polt:cg838NOH'/9]OQ)3,9S&*:mWFBBVSqo67'Bd=HgBu$?>ij$2`D(V;O,HC9Q-;-:Y+jN9t^XbD7QqMRHhI8R+@bjheaOh9KrpihXJna^0TnR)36Zfgg[*VUG/-MbS7+63j=in!43[PJ^N?XQ!mq5)\N2:2jSmoh/\r62Wl:M!#$fGm#M'@d54mWaWN,<7#UQ.OrD1(VlYuOEn\Jj%LQJT)DF0(R_5r-$Dcrpc=r,sTPF#Jn</C[UWS^qK_&+![395J;E@(mXJO;IaO'jBo/53bZcW"H.Jk0GlkUi]H>,_m[Bf7bRYV0j"q+SOS-a6;/1!]p/.cpK.b#9;Elouh,Apo3Ou4X?.#^T\1rpXP.B&&jHWsp0pCqkoM,_(:Tj-FDjUc4J9;U^69oB00@\AgKH;-Zh!MuX6Pg5#m(%%<Nhck<js&Lr&0BtM`QqYd^(:+K5pmm+700s4_&4XR%\J3_P?AG=a89H"D]ug(faU^`/\jJ3,_l"f17JnPtXf\[\W/@KeJKtnr0&Tc*8a>dQ.a`eimRH$[W83B<O/-i['Zo'J<WEm=Y=QrDk_'!i<D%,VltKpra@IKa#7UiR-qB!W'@YArjCJZis&MgM'tF3-6e(B=aW3!N=M5TPd8UXB6;p"i%8>']H^L>8E*OXqRC4\I$\R_];TRp:c8DcJUOLfqdBYB&aP"7\rr+'[lPKQt7Bia`CY#T.UnZ)0F^$128dnLO*V*5DF2>W$-=9@#DI-U&Hu-nho+F6,o0r8VPi@[W1&_?RVEV48^]3p!qAnY:<:@ESq0_TBD<s(Ma;_]hr'FlamBl_=gUajnjGsd0cK?U(/<?b&rb-QOF<RbbD>u'XCOTn*4Qujf*NVt>S%#g+1F:5aPA6qq^a_o67Jb]AdRIHRft6>Vg:>L196^!bO*rZ@3r]Lf8V-75r1+t<m@nl'Hc[<=?Xt]<9NtbcnQU#Q8?4q]PB8a>Jc?(gUup6$>5#65%M'W^:U@:!0foMH2*pV/F:,m,2k])r-`iUG43TX0'pd)O[Tah?H4BUheVanRn^C`;cKINWb+pYhM&M_V'.nM/jEr>6E"j9Egq=+JVch1S&OIjZSsm:o3SJbaO.J%_%bL9cL(`m@I;V]32#32^W1g!H'chaqf2Q0CIZ][U_8Os'\dNiqZ;[;`\Y,G>@Q0f2Hj0,L3$*2Vl")M"IXFi0I<#;Z_H653H]'kBNZa@CBtZ0r,Dc3"@(=?bY?pQA_-h@YX1`>(oD2:tdnJOu/Xp*AfS>MC70,eu1N9rrq<TtB.W`k3E-_$ggu=7sSk(al?]S7B3>)c*_p'%Q?bV&nVmc2"[Ll"dao,g[$%mbs4*&0'mhP?47_4,q?GiI""M5$R>phG(ZF9%Qe!#7^qMXkn~>endstream
510+Gb!#\>Ar7S(jupVs7!]19f?(]jI=r3"0uG@[KTm$H,(I0%(&FWCa;n).6Ht$h]_)SPW!\),f"_ID2$m/n=8t,OBVE"qL=^!kbfR]5DBkA1n7Cp#s'oUU7[4]8"Yj'_U[!+A*S8a5o^DESFMYDrfNcn+2L4PZ.Z!_%XTo]H$asPm6pP4Bq)AI:o':(QU/IS9T;:,`)<bd1?58hr'\Hk^#M?UT*Of%-b4G-Sc:U%/akppreE:)3JYeB/sr.b'9)`daD410/BcP[:hdEtA/-C_)QQM!`p!9iU\gHDI&%3TbX=32@4:4N+aH[HY2eB9fW7teDGpt$A[",.<YVplq0dIhq*aJ;=j,90VV.a?#'#oHQXZ;!m+ruEMi8NPO8dsf#jUiiK0^%hl9:.UNn4m8lOhqA6?C&@21T\H=TRa-5nXaf2Dce9^BrMX#t]&#!cHjSp_!-&do<Z-OOFCgR8V=JnUFXs]Kf/Vdu$CM`:"%E3;NGN"ijPm>MRlidZfQBm#3SJ^FCllNpLF&E'u2(V0m&I%\n*JB:PfSoA&,=9]5,l3Ws-)e>NdL\c&'P[U>.k7]0m,p7,@;bWloUCeQ.OG+XC]J-"M?WCg>JC!VU3LhNY@:1hKQDU*Xln1FS`@;3rKD,<R9N/K6d,4i&fM'OGIA'HenLZ&sp8t-8#rV6dR+0k@G'O$LL3*QFr9:9hI)[)$'E!sj.kKLPsC5.*E\3_%#Q8ri2XX^ah%4;1>O(s)/#"]O5QRT'\'cKBRYu."WfNa9_?+E$"]s5eL\:C()</shn?;*qD?Vifs91C:`B9NPUKoKZ"Q`.0JJ<+9qT$-AR<Wb1caSj#L2*0P<[oRmdg=ndU77$++EkB-CBJD+[V#b]^dPU!W.#jR8UW/B5rPl6]:_Ykc9o+4Mng-,ICP&@`!5^kA6ie_CBbD7f.0L9cplnl-Vk@[V5m>*EP_[+ke8AXpGZ2k\4\+SOM9Gi_"k<AdUdjOmXJq\hptVSYagIM]/<*DR\/UubF$_4B1ZPE89$?n^,ZDhP65[F2&%0D:25r?(Bu]9fo_3Ql5JIWa0;H*&>bb][<,$U&?);2>K#EPbo1stMRJ>bLbZ\WHo#cp]qsE<COjcg/^DN*r9"m#:jSt;nTg=J)qnI'PhU0R$ia&n$==aNh`]gX-Ff@C`?U2'HFikdJ[Z*>+3eR.b7JeN-+0$.<HD`\-HI(M1:48>k=5qf]RA<-A41Q-cb)@iB1smeVl=$[",?UX9,/KmT)6^OrWk2KK0tuXqF`\/nh9L0jGqo41Tp(FR0&YW?6ak2'7ILDlds>&'H)-@nl1c1b6X&g&Fn+9R7,:r&-,aY$Yj=e%C`V@6*_2pD1"Uqih7[)ap'fsFc@FW$mbo):O,+`#C0II!=NRQ8Y)V',5-3IXlYmJ$Nn*=r_c3WK56Y"d'%8[ProeHJ(qnc6cG+.J<o%SE&-0N\02alId#>ScZ59*MGW;&a#tf*hlr,4\DYIIGW*,*Y:D6_i$D1>=+$noPM=SmX@'6Q*Q"/IiQFk%Koj4?e\iB+,$@LM39/Ln5iqDs>M>I0PW4?eu3=lZZUAb\]kk&5Ui+g$\4hI"JmH>ihm<R6P[mTsiMb+UHA,Fmh%YjKFAiE&D?s"mNZOa$Sn;JB*a38e=lJPmJr+b1Xk&)j"R-V#4%/h75hme)Z]8@BVN:-m9i7LmkQOG*iqe?3@^j8%V<$pE)9Z7tZH^3hS-:n/j>Q"pZp[DK9rJ:=&d6(KlNr(S#Bm[h=FFO/rh=(_?&"1qui-V@`Xa\XcG'e?N&&3]@;iY,mB%*1h=ZI"nK/n'!lkk.hD"Uq#J(<=C1&=5_/[^$b4h6;9V"GjK3^3BN:2Ypq~>endstream
511 endobj
512 % 'R131': class PDFStream
513 131 0 obj
514@@ -1839,9 +1839,9 @@
515 % page stream
516 << /Filter [ /ASCII85Decode
517 /FlateDecode ]
518- /Length 1110 >>
519+ /Length 1172 >>
520 stream
521-Gau0Bd;I\s'R_puIlMd'l416PagNJ(a?qk%5QPBb)?JS[?YGS-fgqi0;K_s4]9FPbDUZ**RMZ;]RJ5RUF7-SL!1uG@q`cT^hbq,d1I)Kqbn814):Bi18;Dgn_a/7V2GOh0kFS:s&rIP:?ECNTPqJK4K!1PR_h$\teXPNJ&pA9D#[W+iU^Agh=!2M/98mii(ZPkSSAQgeKrf&mD,<%#I>.;<dU-3$It*)^k'Q'`=Ss5_r*(RSj=nHJiepMgX,K^H@:VcgO28h<O-,F<`t2bA+'uX+**kPuAj;?UV7[H^[MpeWZ6DDj"]rQ+/'G"noZC^GE9%=pH&oiNHnTdUo);LThps=l*HA^j`>Q[i34W9i@Ot&T[m%U\2?2;G$X$W+-Op=hi?3G/+PfYBN)`sf1e-sEfn`fc0,h0f\6,0f@>SttYZD8l_SU0oG*:T3<:1h(5Zb`tT2Zeh>1oiP[.OQeYWF!X\%6rlPpi)-hD@Hkb.fH<3^NP-ZV!oD-b9/e9&*UIXT:d8G+]$S"9ND[p;jWk>>C/^nhm=JUU@&e+_62>DUSOe]&.6k!rmjV"e#+9:+`b<!U95H.J^p/@Sp^th&Wg>ak,0$@Kb(7bSSl+9A3.=L3pX\q=:%$o0mo7?V-E7(Hn]fXbeo&XD9aIQp%;;!6`&38u#@XBuk8$X*VWP^QWf=j6t%sA;*X,ktP*f"CrW"bIZ?8ELg&]cUikHG8\G-nnaQb%PY?5*VEU%=2A&%_^Ah9k,47Q?T*V'PI@ZO)7"tnb4#"r0gaYU@9Ug(S*J'.W`57Q=eH'jA:J?Y'kFGAN9`fAGHUDV"raPUh,6Y<\9Qb@0p8V'i_YYuCe.K$<no]gNjn]<dDdT,Z]AV<@(2D%[,\5`U%01TOd"LfDXR2S>RNTc.b_[B2gc*'q[RGEKb=1QdF@OST';2AHML,.U!C/^m'.AQ[DQhNZr?6OkPF:(A=6K<4MY!EKps:UgFHO]?/U`N`$+-Zim>pQB(TEZ9%tXrj*LA.mmSk9Ruk[iO.p99m*Ybb3mFAQ*!KPn2:"4'b*cj9Eo+(G8Y53D4?*J0jJo0q`bi$YG6Mk[b(WFF7?NeJ4]=g#b"+J?YP*t7i'5J!kS!~>endstream
522+Gau0BhiHJN&:R./J!bS]QC]3h!r5-_IFpXSUm"hbg5U4Kckd?Wi,3#%[aUK@ral4'@ClbUFh;<!(shB5n!e58+/\i(g\7cPpcX>grq+#;+O.`pHZM_riE\JaHl3FlrSBMbGSYYtA<C9DE:@UV7'98+S.g:l$l]\Rm8gP7%M5k&Rml6_KNR4O0dLj/i[&]`#kia&>f.$6i&"tuX=C4#:bfG)%I%LrIg,];2m_9G"-!<HQuV!cE2BY<;cgK;@;7C0D/`'f!@sI!5cpP-p<iNU]<m3g8jE5MC_1j=V8Z2\.\fVR+"QFs#:j%/^:D`IAI7kTaGM/`!uo-m%+uKm(rR9^:TrZGc>FPIaYTaVdX*7XXaC[cDKeRQV8@Up#@%WE7Q]b.`[.+ZJuBG;o1l/!/S<l3--5sf)h)/!9Q\31rPBGlU1ek`Su8%OL4@3d"0&Mu-Bn^:bQI,"Y[9?;6H0_@"OpKA0!c.5G[AmC1SIp=Do!UW0S-@/@4ba=R#U0E"$3>5I39P<Ytl&=L/,"b'^^1ugqkp8.,%su;.UeThD@Hlb!/O94$iYNZV(#!s*'FWdibm15`#]L5m8S9XC5>SN@nF1GI-9@Vcdkq:i7()JbOBQpOM\@8u'2:^qBr?pOT+U>+kpfqEl_-`8YC&1A#J%>__h"m^*hi,'eb86LAlQj`G7apZnl\F-;2rGe%0YP(a]8WCUT^22eOT)AgU<e%&,0euUbhTtfTKiOVlL@A?'63nWs5kQS>Fd_O)</dVLeA7\mYgGZ3uMK"ReSur\r5k&6IpC=F1cA?ilbA7,/oDUOd6KVo.M(e23a[t7=a:-dS54ZB.3(Auk&uMK6i(b;;6C1m'bQ=;B8G8BR4+YsD5[5$BY>ae7["3eienm)b_gD)oO('D=!Q@?`&oEG':b#3M_<YsG-/'3qOaW$3$dD.%d>kOS6K^?7L/)L0Uq,*(F!^=-;HU_=)Ep6WVj)"/KGEY8_:7gk:Nsg+&RIYaI]>3lC3Sm\F6tYWSp*j+a1Zr4%p<MO[84$W4sS@gT=3(%62-%WO@C3T]NFN<(eeQ6;,l8Z>IK-Qj^7LSjMK8s4G5nST&UJY*/;iqL1r@L[dko>YORpboa9f.@-]$W[6*1$"dT](1G=PgYl.`+pIE7-M=3kF)6geQ7S?.f8)HgZ_f5)u@%[_l~>endstream
523 endobj
524 % 'R133': class PDFStream
525 133 0 obj
526@@ -1911,342 +1911,342 @@
527 % page stream
528 << /Filter [ /ASCII85Decode
529 /FlateDecode ]
530- /Length 2014 >>
531+ /Length 1981 >>
532 stream
533-Gau/XCN%rcn9]]`LP(AV8J0.3j4MWm#>;[@/!(HJCMX+8I@qiXi_5IU7E+qKrU-V^'.7XJc>dC[hKM*=*ISdaTC8@[#4Qp>K52S,&M.D\a5.XK2t2!1Gjs&<JR?f"B.t?%]\2Y!L-,r'F=<=m*hWMJOa.:l%-<IFP*7gNBh-cQDce--ILM.L@I_L^s4)N>BK7)Y_ck6A42YQF11i,!m[.EYC@u28g,#+Yeeu/rg,G2V3=oh4fK0!1JbEC"UU+Cpi0UJ;B/#oN]htbX\uWPB]KELtP<FKPDC%MuTTG>k"bPn*[6d."ErM3%>Zc!lkPk%^2Uq6t6Ui;"!]n>$&]\9:,T;?Q?^l(<f8@4qdA[204(_Yc4;J8=BE]qW<\Sp'NKl'aU^0(QPdgRmND>92]d@&4/*fiR"DW4*gjgB$Cl6GMj:F]f>@#%!.I0[QQrt/>YUgs^&]',$%(?g7@CbD*\;O$fW4\GM.!#_3,X-=>lo^9.1dc!$,-QT=%hTOI*Ngf@'[ap0(I?Wl%lV;%#Y7dW.KfEA@jg!g_F&')XXqAWrc*;6QX\LT-WDLPLpi=k->/ef4LteN_=Ke!(uV,!JX0/k'/`Mr:08i3R():R7Mg_1<5ab1MRN_Q0IpI.eSfja=(mT@7?ViXM`!F&H23'A[)bTZf!\3i["L_:(-Ek"0d*,k`oj^d=XN3Q5YH];\>2$(pN5l7p_O75B(iMFU")qnD+YrpPL=;!5.R3X=LmW)3qNKKn-T)9oY$[o2s6do9j75hH;4NrE-4__QR!@LpYMQ)\VY#g\9:6\!U&<0njF3qK->:?0agYHHSUUH%6dMkV!JQ0@aKs)HOs>iEf^=(9"H.u7iCjP%d5&MUOtS2bTtsR;ClD)Q[&mN*G1X3KrHtq^[*C^9<-S!]q55lrfJ:DH?:,Te"]t_\CPnrGBU>i,#"E(W9?rGR!o<MU#dSJ0>fr:7@/WJO2[#.J_YqMhO<-)LW(LDl+H0eeH7@88SY:BPU7##mfhEKSTR@dor2%P07)"6?U>dk=.=b**$S]W*6Xi!)19d32d!JjA<-Qb85QEIXX$bHE5GtY:=Ou+Nq#WYD8m8_n:5kZc9,\k+'#mHW[63$/X>>.0N^1$O@9^siI\)f-.[V;QV-!WG,fL\gSpXP6GF+1_FC"0eR_epK0i+e"l=Np_t*"-0(6=c@I)TS+Yla/!PHg6&_npu4b.>/f-nF6N7;&G8(0.IL*n1Ch8P2\_UF=X<$#*L78?jnm=FRO%^=R3DoOO+_q_<S>U.,sA?BSL'fgL#ZRECrlSXNV$Pg8@8j/T;T7k81C7*\?r<NGF<Z07E2C<2j"n![R5BZk:gSRX(77OMAp@d9"T]OSEhmd)J:LND#jkK?nP2n\nD,GbBbHJGPmp,mlREKL?/@466m(^Q[<jV3N\L/6m0&o.?/uQ:DS@!LK9J9(X2`[+DJ;+c;EQ-ECDXitJhE\g;Tnik!bKkq7<EfsenRqlPGWPYTZRInf1DH:H#XsBangNZV5(QKWY[&<"Al]rJhWS`L3Lr"84;_%a7nQ.E_]n,#a1*ZQ-dHlJh/C;Pif1^$6k!_/)m!7h*>2Gh4r9FS0obYNak+PnI-OH"7ca`]Ki'[.#"Ge8*i)t3JLNoRE"B1m)9aZ0[i=^(e_M-gKkYm>'tPC2X=WO;f27+a%g"4*WIbD`/h@c`QI%NL/mVS2M0u5H?aW:E/fQa[53`?#=Q*?bEu==2eIDDOBf@C^3MUTe"Ic4$LQUSXccHZR"gXSOGlEN)r]H$^bJLWFC5R3J$DOaeleFh@=H`.3'T?$P.W^=32m-FND:HY%:)#])T$==hOA>c+kLC5Ym5660n(:9HIuV(6A_OX5$f8-B&lf^SC%6R;ZmND3r$hD.GOHU'\+kt\dh,:"cc\s6RYD,DD<-ETE-:mb54BBu;BbLdmVn5B^,J&8S*\;]FAU*GG$X0N*E_>MLSI:>Ot,#Z-#3]tUJl(fFlFm<KTA2%7l++(_&YKS4&pJQ&M)`@cf+BO5CbQ\#Q~>endstream
534+Gau0CD/\/e&H6"/s5Dn0=Am)Cjg_S-`PL92fa=NDf,DPWGonGkOuQC97T+BB?b\\feVVbX6g$Ea`Hsh@Si_W[`P9c,ir\07)CF&ZKJQ`.&C,ngXDd%YqVd(A*^0iKhSg*Co8@"eI(D]`:RZTmaW<W2"_">#*7b;YS"V14DaE)PY,1![890%alT\hVf^&RVIrAIMT*<]pb+lG#VqMj/3M*lpL>?W&=Oq)V^lkcOkoS*`ON^lNaiptEs6c3G6drC;IkVlq@D97MN@td$G@ic]Ndl.`@,5/[1PdM0\Qe+FlA\iS&MqVfF(L%=+8@>@S@3<]3FF7KKZZQX\>mskS;'^i;#'?s%V9E(kQJRJ&Cq6<1?#3/BL"(U(.H(/;B$ud'M&f>T#p]s]oQKV!aUs?PE#=E52,:5%`/4(9J/hDFE.^4KtXWsa-?0J(X-]r&ff(cHU<(r!%-HVW,gZd7GMNf/<k"ZG/h2225uZ8&c5,JVT;RQF"")^5!^G_;TE!6+D%qOfOp<=q1G5W3GrA@9%Ad1D/kYSnED)PYuZln:4IV=1R;M)KdThNX+ZLn@]!PF$9YkXXrmuO\=DJd%$?iI:D5<S&5>,27;R<keWMF,="</u$H7>r.[Vf+\_=YMe1:12kUOa\r)Lj5a'RXG2_Ai^7-TH-;9p*0Csd*s'GCP*'mrHNPSHOQ-a][49UF7@jfe[?MSG9NC?DZ'G"PHp^K(rOG^I3ZqC#GE8u."UXaW*C<u[$bPeMV9b2mBVlG[Eli"qdIO79dE+12/P"!<otWd"*UV_m='D6N0_C[lH)mlU*u&\r-->(>rSOAE]>MG.#=7j3('.>r!4)fgtI3dR5haOgmCc")p6rcrGR2ka6r(M1WH'5lWZ/j_:=r[3_oN4VZAGj/^@eJiqPm#%c%f;=Ckh%snPeVAK.df2HoMIT)A5lc%QN+rSjNNdDAU6Q@2c:l,EG<3PQ`@Vie?LJsNpqUDtPb?3*oqKOCRWp\>REJ*V;2NItUJRm$+DPN!CMlt<aOFr=C$0Rm;ut7A&`#Sg_0C>2D1Wku-K0'(FHLN1;54MDV^$'j*1of\kBocsCH$/g&c-b6O)qMidP*?LKAs%AMIhSg6*,upRB&E"]$%K,aP7HggWCWsiBrnr["h9UgFIrGqNhccN]7%g[1EC6hbSD^9%[ja-2@5U)c]3clm"]'$_*?P\bs76M#57?CJeIW:>gi/N8S;h)?=$;]LE(%&Yp2>34aj40g$,8:)>_K_5U@eV*&Z!.SJ^W\(WT/,A_)d>B$\BfESILCD?Q8]N(Msb&Zr799Ro./4iiFWRs.LCAf.4,W[i&_p#i4HanW9N<=gR`Y=uA^k8_,g]"hrVh*QI;:+18HN2cD>FUgpJ)uE5HNmFKXm\0G<$^?LlFuh1;ILe-Ic]<h.pP$H:C;ljamjH=T<7<C0>0k0*"!anlt^@7a_Q7blLMg_p&doMDJ7+R)co`#iAEfqYA_4B4;Op3@en,b^?smPT<aJQTsI0Aqe?3e"b`Wh\s`poo?-46Eg`N8a"u@d:-UNGLU1CfV66=qFM?P!LGpSQ6_`V@i&E@b.]s$2Ic*BS7eh';>^ZL/(s]QKLg.;^M$L92j^`X&mg(oCIpl)#L8.msa'E6jNN\Jl>9#^29.;SqN!(1%@[t9W_LK&DINgto^h6cXf+$)0HtHqQ2Z&LAKKluo3(XB"<*;3aH'Zi4GUZoYg(X/[kF_E@D(Q\k+Q)DfA(]dC"=oi\+ghdVXD9b-+??3rp^Fa2I701f?ruEE7"B*NTj+e>Xj9WUkB-iII*842$-*DmHr;@$E.g]^:$N(YQQtC@m2`+YcRbagP'G%8<f;I"5)4+Bhg];+g[q-[(,K&TI9OB[@ng>?&CTF>#bJ_X"n-\n-a$oB<'?>7:W),Mr5lpON^8kkbjETrdU6D@["I1YW(GP%_cjEt-aWDP[d`RN4ULQf%*k/Pn,eOJakWA3M]*2*DFG$G+8c66bMU8~>endstream
535 endobj
536 % 'R141': class PDFStream
537 141 0 obj
538 % page stream
539 << /Filter [ /ASCII85Decode
540 /FlateDecode ]
541- /Length 2096 >>
542+ /Length 2111 >>
543 stream
544-Gau`UD/\/e&H3^ns5C[#8;9O=j>XV<5,@G#V9QTQ2:)d<0[LFYZ_9pTUuHX6IWr/0kLFLT0blA\R62N4hECTQ*C:/6L&NkW!8\1DQOb6m&I^H$4$a++=7GPFnDM@G6!038a3a.ZJmLQqER*OZ:Y1>6g(_akSmF4j%M)`lW6#P\csSZ5h1IEJ#&(T`7J[SE)K?>;&k@Ju3Fmm+"]l1MaV0dCDI=[Dp_\bC@JKG1'L&F6.oZjg&3g+`$H;BM)3_oud+R3Q"jW8cN7jau3M:A[g8FNa4f?*aSRJs;$&=up`HfU)^obKJauXPr]fBD-+k+S^('!h>_^=*5p5D2KgIk&cj*0L<$OagS/i-lCpg+$hflP2md$4dXSO5g-=SPJ*0cILG</IXaLP.)nEMtDii&!')Kq(JEfE=f/n_C?hD#LZt`dDZm8WbNaI5#m.Dd@X0[OOqW_/Tr+1BWP!8<,T+1ns5/F+F7TIHrIXMDC%r.Hr*<D16A+17TI,0>R(?1CQdPPS4ZD:UmgV9EU63k`ea.@Iafa5&je0-"/RkMAF&,i_)0gRu/c7QT--%`]>2NJ,tIEhNF@3jlhjdQKUr<KN)DmlQ]LL98!uhs+CO87MdaE\/&C,UFV:8@1:I4aUIC\GFgpIN:QG`B.4[?K6YiZC]U@OV-itBqP?<,&\<C;74E?Kn^G_p`RW'=s-r%-bPc-D6*peA%"d>oKQ*oD'26R5M*LaA.RkBY0"&)r6udeqQB]Hak1X2S'oNX8?qP-gnY&i#8L`jJOu]5d$<Xo[5NqGR<_ASoR]Bi_p7naW[;k+2MTAs>;Opc$msb;$e-Of\\6a?RgYYA?&I^M2%]knUWr/s+&sBK.'dQZVQ!3c#h8&qp0Ggr=5q]!I_L/2!bJbJLW2>_2_WhM!/l^C4aFn"8VA,*._oeL!5LL#t4Fk`pJ!OX[I:dBT$!$8J$69luX@to$^dhE\bWPlJ*o%-`BS(WOI(;`G5o5XK<ePNEgqu/7gg*Q"e.CqUI?oK;:h8%]cW]j=-edh*46;>-Xmih'='2B,8gXI%W(phO.'[5(^lu$rMTLqen?B/7bb;.7S4]3erLD)mk-*[G^p2Z!Y^A7?p)Y'G&F,a_h6g@[dtr:j)X!-2F-I(^a)YB\_.2Pi.&m=PK;pr!4C%;V]=j!pZR+2O3q1cB'@K6j!ri57EKQ=<9#SS4d/*cf[aXMXSd?q;+o5l0pQkT]j2'kT]mG.\rQaPVr@0uI-kItXOF"btHrg:ZD6\*u'*^+ee-Pfl&dKXn;$VD;4@>*"H;g]7BVbL'!e='oMFnN7XE=0\,?Z&lE9Z:]l%tc*.%26b(6SVPp!lbbs1P!P[,c!AktaCKUlKAR*6EQFIoO:(?dKj;$f8kolV$fK2#7]m*O?jD=-gr"k31rP::&-e:V/L:PDo9(2$&`N`#Z03E.7qf(&tPr<\'&@d+r:(%loqd0r%Ak,BZ5JI5=atLSsuT"0#1Ha,NAUQ[9RYp:q&<[m+k=I_u6]H!\'`K%92TOpOf6U./<ZNbr0&?q>ZR"6Q(=Jk_qkOO^<;G3g.ule&T/1,4;VC+OSB]>ZYH3[fG'eTROXkA+PZhP+.WNT!u8TVt]=bcW@/O>8C"[M_EG)&=)DN''GXs#h</RfKjti2DA$'iHfE_Te9VD(sk03PHi/Xkm+LE@Wk=_\8%5pc=r<#eMOYi?6p.E1@5S2f7c`@/!`-XX20.mWP$IN9Qr'-"8.D$I!4T2K5sU[%-)M2a:UT+EZ7'4h56@g58<D6sZ8qM8(I,dmKtMO,D+p!(2q?gfAH-b0cJL@uooWmlBu0Xd)NC\d:qG5>1XeU%l+?Ja2Sh[0_2Z;LVE9BWX)sURb#ahmC,j&2dcN3m#6Q,?&2[PeVE8N4'uTr66':<6JPVG:DR\l]DBXMY)8-.f0-rF;EAK,ZF+i4]8DadPZ?HfSbk$*S[M_HJSd`?Z-#D:B55;>Q-"#W;-JP_:nhnqL_u(TaO@tGc?\7@O!NE^GI,(d.DtDSQ6U"g>1Uq)ogWoC_T^`4tZ#*\f)_(h]e+F[%q<Wf@LoEFJF!jot@p4SV42-(5u^-YXb$'Su%IMd3;WP-Td+$KDtrB_T,(~>endstream
545+Gau`TD/\/e&H3^ns5C[#8;9O=jS'GcOL?[*2X@["5W0b#5YEJmNC9cl(!$4E];$[eUoBn%%]05$,*U(-_rpHZ@gF[_$2nLA!5'2c0CM76,8d6gG(L3_0&bF0iPE"@K<QEO+$d"M#(sa25][DGI_%;%C/YE$0Y%fc*$2Kb:m2n@OMPO8]17%d?pRHX@DFB%JcRNDo]G9QXs^0`:!b"R$\bJ8DB]d.75%VC3N*aV.YH6,X?bll!pIesf?t_XkUVU@L*NASHo]96(s>mQJZ3aT[8HRd_Q?cDS3crK2n;n$ce)>PXTP+HN*8IY:LGC7]K[&#`'0^+p7)3@4!SPj@YC3qKpZ8bH\/GdFmNFTF1fIYWg3H*s2?S-VV3<hN'G#1)b9M[GN+Ako$U[b;\2Us*WtfAk=ukn.gm-k#q`CNP=?3@Cn7P7=4+RuFKAu*aq=\Le+-Q%1J!Il6:q*sN$p()0C-rn0eIF6.?An]E9D.FH#pDD9<s,3)+;bSnf^N/OcU1"Djge#YO$%C3G6Vm/+T3+&pa'Ve%)+XdU<.\9,'d3W0EK+.#cPW@:fQ1,!*[_4\U;*g*^_fX`Bf3nQ@Ee-8J<[,u$q,Z-H:,#bKD4fBfA8)7egf`Oa2*7Og=foa.^!`%m[>re6_aUC3G%>YD8Sd1roh)M;1X$Nk_Q(#p%M31BmF/tg+2d!BRp[t)A__n!B#cHM%H;](_Q\!J($Da/W^3FZ<c5U#R!r=Rg)^Y7mMGM!Bd4!^5&d!IUk>U\j4aRe)A5Pq6+`^h5=g0-LKXq6U>#IDK-D2:a%P%JWd;VD^Q<'hfi$p?+pP?MgS[bDl,]tHeV_(nN&.u_18::[rUhuS_"\MPQmY*eg0ruBYogG4%;mRCja!XrQUG^`Ai"NOMcf%LI&X1o;n;*TjX"m$c85r$*t?6J6pngUo%@[?8EaZF%3AiVJXobf2#.dI>8;McB*bX^o+(%^]KerHIeJ5=*J.oKuO=VuCF/u]J80/-@rJh2E_U(e;ipj,6oAY*R+50n\GVAquV:qk[Xk70rBrm*;dGEiQ87T:VuZ]pslANDpM6jd>VM0=3_^#k3]>1%=]<)fpI9#^cp\5lNg.&gqm^se/$W[T>2cs]j==?p)_30uEkq`.e!c!S4mJeOO]@.S!ASJT?aKiC8)4tUPlg;A>NNH<.U3=^cHWT4h"oE>%:MlIoIT^!N@*c?-PlFm8uCe6Ll-D%^\1A=V9JH,L*PhEul74`6YdJohOgV`IN,@N)dS3EAC^*>i/60n?JIK=hBh<,IKL\SM.O_E^%Y,?m8]*3_(LQt7#q!jFadsaaP?n<jC619WU:_T/P*,-Z<\N["ni$6N<9i<l"SUImmc,0N6*8E#,p!TIco1F?Aq(ECgh5'W!l_u($^:(9N[55u5q<#c'`&IInOp6>#>O<9?Ms".Xlr@cl*T_I%IWAdu:8Ts?eGhC?G'!In\&&rE&V$a6i7(QX$$uaJ-U:l*++(\,;+-&n5(e?<<0H?*?#gg^HSXt-MV:9UeTVp6Q0LFfL*5==@6]-j]KgW:,@Ypm"n'j6FDh>`gY6?f0XZ]TCRl]XJk^f)nO60>D[74=71MXfLFUr5Dm$/TZ_l1s!gD-dm!<<"MiXd/pk;`&GtOYm&]8:;L2B#,'0V&D,$d">VPldQF\]0c&b6C99L06](g6n=I"6&>C.3]LKsN@/1('f>#L/IKI)G+9BkW7=r_E$(-T"JK0daC2c?b.l/th/GH3)ta(ZK>@d_K4aHBKfi]=VdOE"G-\;<TZr$ArPg1iS>K[%-1%[m+1*nGT&-GhLTR(!B(&]/D$HIp''J&!`=8.a2N+N*+5tXn'"Oa4EA34g)9.kKML\/!]Uh'.%5d/BJPqinnVXWr3R1:"fu?i'!!mVhIFD=,HX?f!c]p`f!;6=ZC8/b.NZ'GAjb6Q6h4!*M\@(Z`C3Vb.-8RUnO,!rSG8G^:tqaPIb?]a*uJ^e_2MK;30eAmb7l'^UfJpMu/d9q[rIUF^%?G*.>h))g<aN?CH:[J6t1I1:oorX4Qe5enl7B,8]BjgYuAX2o*t2dbQKdX&Vf-^3j3M$g:(I+R4;pot)3XX=Y7uBYg:T3q>pLO[Y)[%sAG<#QFfimC[c~>endstream
546 endobj
547 % 'R142': class PDFStream
548 142 0 obj
549 % page stream
550 << /Filter [ /ASCII85Decode
551 /FlateDecode ]
552- /Length 1850 >>
553+ /Length 1892 >>
554 stream
555-Gb!#\muQ0l&H.(+r=>Yo<OqDS?t6uO9r0,K-s+f\-:k+8qI.2JhI+p[H@8'XqS'61F\rW.(S]\*-SW0=]5QQM]NLTdpiVMpUD_J&5!=8[P3Ytp9WmjZeF1g[s750ujb:;bgCC1L\kYEP"IO7UnO(XDEFNOs=rI$e&XO=,@]5]"?GPKF?DBs'mf_.4@?!/K]L9Q-]2\)d.\jP3@i@rXM)^eE%@8nEN2/!rnZ>e9!W+]3@O<ffP5:(4+0#8Re`K>s1_qRd*-uPp<+/n!bf)9Ua=KsS3$]_cDD_=`Y=#L&Gpgj[aMuM?BU6Z\P)\NRPOTYe#ecWZ.)oRA)/lE7S,'O'T!b@jN`7Fs?<GX4NKg#2T#ksnj(t0F3*$G'.ErMao>M`q^c&G$0p4Al8S@%E)UgI`.2$h;le>kKD[E:4l6MuigCk:mi!m,Q<=JS9P54&$RREYl>85XEfXH?Yl/#I=j`li/Dk5InD;P"=i?slM'%T;?TE\B9f8RWgG4bm>2hS0'pM["t3NWX9lSu#MdS4F+Fi\A#;Xb*9%EM8?J[8iG(:94TZJQKhhQ"XFfeP2(c2('fZFPe7e*T@fZg@lC8!UX"L:#mb#8Ps+p&9qMPK4e5f5!Er"a&RNo>C+Gb\0R2MNa"(.fpRj`Z4$\n=puVD'THN'A4)k0M*/)e7X&$Tb2??E7l4n`A-]jh:`UCZ[8Ca'3;8mQgE_YfoL\gIltW/E_\L32hQ:M%/UJOc\L8)#"7kCd`AIkA/Y@E10GS^c4:ub8N1l*\XS;?V9$14Hr!P#KSRYN"Lf!60J*9^i@I[$)P!,ti(L1EoX6Lh&J5%@5uX>)`$M+>Oi%;*L,6B+b]Zb/=dnR6D&M)\X8UOb2B$5L.i`=NE=Ystm8ThF"&`N'du;EtT1Nl'_ap2,mL?>mDkl`mS8Gl=p4M;4)NP+(XRk/+pM^V]?`^-1Lq5PD5J$J[n(l6lO8tIbd/h[(SQT\`k"M^MM$0!D>X0;\&?Em%+<E$=]1c@L=OnJol<o0=F"S:$KYNrpAYj[('VXnHFX8r>OYMe/;_T&fH#4?I%%l0oRW"'jNKqt8&IDR>-j.\3PQKugH70I(Lu6[>O5oKk,Fkc5_\:MPG:TJoK.tN60(cuB:t."+QIA4K#V%*ej5fG(<)/ErKq*2gJ=<%L;taEDb6Am!._>T.pir>C<lhR'gs3i+mQ\D:Y0\K,_8BP6`.m8_d27UQU+A]7WZ]<?KLR)1?'pD/bL8:&[M7Q2g[;E*iA,Esed%_7WOK63U<BH^%+]Q,2)N0$mg8KC*S>g<1rPVFSH+#B$JN2G9?+q^gMIbD4e@RC7O&=0GmGik9_'&YKr+QVJ[4r#])[UMaAR_XXm8*CWR>4pD0@Ho0=B#]g9r"W'7.2q^F3]0<c%4-+uP6k<&F6P'SW+s/',1*Ko%m-/'OQoYL7Ztk:UT8+49)GEXd5qXbn:G539rRPco,?[l]bV,rPl$J7*&TUYsl)7F,b@UZ4PPk]so>4VU'*CRq0_W=Z[<G.C4W1U6.9rVUN,j[!!RpNn<=DPofWpau'K)cZ%jc@A]kIDYh^k4c?1*<1cg3<2=N_Sm3er2B^1SE"AKq"3Nk'tU"nn=Y6QetM0@HbN?7qi;g5.];)`eWn%1o)@7fa#l_k'iS)B4C)5"F'lnQ#$dqU6[5gdYF(r&^GX-<,RX"c[C2`b8C;q?\O8Sa?+#*W*Yk%A%A6g.rd3t3s.)<^4_f1A=pc4P]osuY\me2`HFNNAN`#9<8FDr'RI/U3Vq#Ihmb9FLNE?T0oW;doEu$Gs^7.GTh6j'%j]<=F7SSuiCDZ,6cXM3MDa?%lK!"$-W*$(?-/.t*3&t8Nr!.:B[5.~>endstream
556+Gb!#]D/\/e&H3^ns5?d^W&&OqojV.^ecP6iU)CTrCCPC'Z4F<2=_o?UQ)N@'YMXDchbl:SinA1sUp)HAN]]N"giKhqD>\JBs5T(%q2cZ4FNO2h(m>mu!=];+@X*4iiUk&oN9u>KlZAY?fFK_"o]3WB;T=!M$"ILf+\Ha#d^DNdals*?\gnjt8AbiG3Y\muOP^SI7JM^M9N@3)F4mR()F#Ec/QDRA74)0M:8F=(k47lZ1E+!*iV.LuIt"u7DSPL^pKa3EV'&kmY'4r,_aIK]<G>&M8Rmm[18<0dZFlE$jTV4o2&<DlE@EZ"Z&-uR-+9\I-n*+#.u2uM\kj60k#4!,0sXFB3fU)&VCjb)o<1NrV".]TlQIc?MkN$qA.k:R8CoO=oP2+5'PjC)?;GcGo?Up<2+O%S.[#$.%-cOm8l)CgA6c%bS)u<BMM">io7YYAHNJ!s9+YT)QS%Gq*)\N9o9p;3/`GU>!PB\F-E6T_P,rk8kM\8M0"dENCRIsOcZ$O2Q*6serHL]]$'#,#5P,S7Lr;/OoaZJTG2fXQF2C*0ep"]tKq$L[lA3i@8E"(rCP^c2/90;k%Ml:2`pgNY*-nNXU3qs1W%ODI`RrZaD0EC:'7kXdFCsmsRa&&(QHa=%l0]-h2e;'^HT#rPU`QFZ`Ncb+MubZrGWpF,a(Cm!!hY>7$M,rCPuO`Dne"<eQtjL#9p&SK_[b))=b+)pO\.`EEAZpMO#V0g`h:fLg`KsK3h6-[hs#E51$nprGi%6L4WnMN7jGdEU8mF\kP8pajF%",-g?Ap7de5hA-EfoanPE089gBF!-"-PLM;L9Pg%!tWkl>!&AH#[>d#Z1c%lK7'm-9nJ@GV:(cf`9@$o'DA@+-]=%0:Zb9j\OcZVS*m2pm\37f),mY#=:fF+^g8:esMk,=7)9PPe3N)U\7hW<GAAH6EL8)'o+m6M$U4hLl>roZR[nUfXt>tLN,YD0e&ki[j_0:kK19K".$+9sQ&@4F`?UelgLW)h3:%;*[\YTI8nqSCA`Q5kWZLO_:MiSB`V"[1d6do%&d4odl^ZaTn(eP%OZe-[D$7tWip.BWY^E:hQ^j;?aYQ_JAndj(=hn7Ltd"!"_!!F9M<EU.Pe?qHU;I'HocGO.^o->"a.Zc6W-ou*_3eF6BHIC6.1$`cMFV^p5P5`&0.&H8qCRR;<R=QrGDXM%$.UQM&pXdRn9l(f.D966*MK`lbtPTK88_nZZJ?UbQnLI&PeQUj/V*r>hFF=ip/<nQ1Z'Rn^6(+@;nG)iDo^JOLsSc'hkT`a?t96GYsHp%0&+?i,>g3`JF4)3Jp-73d1m_*!=iJ(fbCO6SH=6p]E)QAQK:lg<^MC^&EQ0>&%%g?,Q7;g3blLa(`nG"p^)5.kc4Qbpe\OghtI*12OefLbe.E_IGc=(8h[\#E6?U.X8p1+l+%_J$alf.c0^ig^^<6Qj2@j&os6qL_I+&NNY0!-*M4aYYl3:os(o"""qV`A$3*E??;;Xnb0AS(2QH:TCTI-KP>i?]u)QPkWH&K9DnLf=^3"ChVkR@q4_eUS7n[C@Y=g"-lR[e)q>=t5ltY-h+U']k*RQ()@:NqYG%npSYq+E%es9i/utfj=;5htsEBcZAim))uT0HL557p+!p/PaO2G%"`.8oon"<QFk#nL>fU<!8X5rKE?AuIWmm4[o!+[@#nW:#J\$Ve+?`&c]/!MHSg_Tpd5;%h4o0V+FWm!f@K8:AK6B3F1CBgG2V:1?NldgftRFY_'c^/^O>U;h`YdXmWm=J0:E2,BYBO5:'Y5rcS!N-NJp^ToiQ+#hO#=j?)R"4\i4Jjej_,Y%N8==Rl-Q0&RRhtr+oQbNI/.&RSh,s*Ns,#/Nuhlm1"hW#_u^"M6PToXU?ap?LZ(^l1F%$b^\TP~>endstream
557 endobj
558 % 'R143': class PDFStream
559 143 0 obj
560 % page stream
561 << /Filter [ /ASCII85Decode
562 /FlateDecode ]
563- /Length 1284 >>
564+ /Length 1362 >>
565 stream
566-Gb!#]hf"uT&:V+Ls'bbCW`)@9r.^F3O@30XC3n#[Y57.E2%4(9f]AF<Nr.FP(Lnu@orp`lMIT.7YWK2Kc@"LXQnVNiB)Os:!Np))p:Ud0"g\>*a)GF0$\-F@UOU</ZanWt^is'o)MEY[1EQL7-SXL'-W4E$7g']jVY-cp3?G.+c+OQ2J6B#`\.Im""9&*4-8uek9DD]MfAaLe&cR%VZgTSp;]G`!5IR,^@<Jtp#(,D0U%.r3EJSm>jiA^0PVX_aTPQX'BQq@7%;.@#5eUW#?nFo(T9P]hQU"T)B&@8Qe)pN4Uru`_094t#:(=D-A%"<Q5$mFk_8%478!\BOO?Blpi;$EW#RLt/QOnQ,.g37ta[)d0$m-c0aq^SN5-RDpfQf?BV6kn5(CqfC2@sk/<k3ej8="hBS5?)4PrdQAP9bb@po8aJY!6=8D'?U=q"drl*NONp%A.m:jUWD72k7jbU0u^2WUKjaW(M`C!4(F1TF!;)!?&),.BH?:)Nh+X'MK-u,[FieWBG^6LX[rcHL-APpN/C;<&@Y17cgLUX.2</,('&CB6]B.gq`>!`krISlNQ+^q0*C[le:.sr!`AQiSYXS$*flf,q?bF7mO;KQ_<p;1d$E55Kb)2O??;%]EEA$r,=n6hVh?J)3t*cq5-=tNoK$jW'ns^LYJRPm7&G#_.!):9$[KmeY<=3_B#7?,^B4Om@]6_.FKmPh<=cGrH0-YhHH+7,V)m0D'0U)c!W`/"r]`QUniYc-oe"3^$j.[74%V?I)Ms]:;AnZVFR_5Q,Si`Dbl9U"5kY-j]DgD'h[]aduYtE"[H"87YIn.7@B%E7aQqcik)cC?>iWQDTBieTtX#A<F`=oe70)*]00\Kp^"9u*[:JCeDI]\aR0r80mi-QYprtS%uM%kfF#jjS(!\D)1B:PJR!e%au,H`8u+!_MbI[rcZ?s4[;eu_=%DmWF2]c;pF#Vt+.g,Er2f.nI9iF/?qJm3pFNdD@m#-T=n[r*Ck&^sX<%i<);pklhpCYN9*Ik4`Surhl>54;0Z-2G>*Vnlb#!5gHTsbAR/0)89Y2tW3SN$4PJm*"7!iZ0k@dXklW)hO]h0Q-'Ci;66p#.P6aic9n[R0!iJE(YHV!2dJ-:"-l?h]0_7ET"on*?N@8fBMY]c':Ss]4'nAD,=<$"`I@)7Q0,n%5oqZpO_6%LRJi.`VSSZ-=J[d+sZ+mM(P$l_W)jJJkJ.'&'Ud"c6b_m\]sZ6BP*Z45!\Ve_<(E.;7lf-$Z_DZS?6`C/T)<!)o4jY.bS"<?N83W~>endstream
567+Gb!#]hf#8Z&:V+Ls'bb#`MlbXo%TH+OIUX.e)dV%imYU%AIX88JV>^L*;?Z*/B2Ce2T?ke8q+k_G%]rI^7"eIJP"b#q&AGr(CU$"4Tf<4+pR0H%P06kpVh7Ff6"m`C]+6\a"sf)*mgA?jMrd-E?TD+'Ll//o'+)//sWL%KJqVf@fad_%i.0nn0--o![H%rB'3!U4@BLbFeq@n405)-[g.JB#bhANEM=S=Hqai(.S7SdIYLh<W[<or+]bMF\:qmt0]TCs,qMoq&Hrll>7=MClqZkcrqoP[2D^l;&Xf<jfC?Asj*@!]We.DhIP%aG%);5>bril_JEG/P$SZL2U*.7g3_,mR8dbZbP(_H3l$bQbAd"kp!;%"7$u<u.RotGJHj9M?VqJO9;G$c]"/`+eh43oR`s[:4m-C&+NK'"^>Q'c",=Sd1$83[q]++t6?r2Tj`ja:54T`U)$;_%\^]t#h\H8aD%d_PfjNMG&U_Ts=Guqh&"(<@Q3nG),=U#L[SdPGRQE]a'Z/dqEYWjbp*\lcbOBuS=qG:;I]ROCM:HZsF7Sg+0Knp4,_%#Q*9Af%`e.q9&c+!EhdMPBG!(Bbg'"CH2dZA*YVI1BBBhn+OgGBtdf1R$KpNu6grTV[3WR?T?>H0Su[EA<_-&UUZ-j4]..+b$a:ZLsQPj>jXe+n>)E7[#F-hn;C@IE>BrY&bO-rrkB:Nh7rRW"nC4+Va30)pMbd"=H@ce_!4GME3DD'pr9RAK224l>Jt6RNr#J4]A=GZY'&dXK0r0K@^8WH<MIm.l/L[%helk+O@"7rN_V3ZSqE(22t+5Og[R*<#)mbX5CZr3g<=Q%5?,C7q7H<Pg9])eB%A>M^IB^h'Y?C4*h$-7<2lOMIS*l_;ZKM!<C;iQhK`cY+<!+A*q;qL8ZP(a9"-Nh7I2pLI,IZC)<sTrhpZPO5?5r>7Ns\o25YC.u((g6JA?4eV0`+[`@4:%ipUJ(ksiG/qYDRLeVs>uNZ/#NYtK[bP9;"-Zf3S>CG>/Ke]!8\%Sr6:AsO^<DC17@nQ4d>`Li?(KC3g+.?7rHM5tkN=5=W'9P<]K\$h*c\"@cTTGi+H2AC>AQtR41n_%q#E]B4rc*j?dS)'.fptV(X^9nP\gX<hPd07#dm>0P,`s&UNnK6"Z4NkpVf:M>WnT&b^L5rPZc%gV^/sE8$(mY6?s[plqPRKH.*OWml5Pskj@jn5_>jhp@Ml@5ajVA2DDI_j'_922`rhU>N!i^$mp&%03Auf?1K;3?[[S\(o'J25,7&"eW.`[cZ["bHcTe0l?5XbEO@7]$EADD\D=h@Ze1^b2+S4[AK-rmCtB`Oi;/j-.j0INo/NU%V4YV%s*kV@9IKi?M[Fas~>endstream
568 endobj
569 % 'R144': class PDFStream
570 144 0 obj
571 % page stream
572 << /Filter [ /ASCII85Decode
573 /FlateDecode ]
574- /Length 1582 >>
575+ /Length 1552 >>
576 stream
577-Gb!#]?#S^l'Rc%\J%..s8;g_hr'dH1aK@GTW7anV6&I-8<J,]/;s^c54:\("^3@SaL27VZ"c5X(8FYE<3To2.K+38*[a"7h"*d%^?a"=N*>g)1]9Wi">PL2C>^YjBfW/Y;&-C1aqVa-(24]YtmNj3jba;9Fh_WA8(ObnRS9?O+@'ab/K,)6O,7ag.g-M\;^4l!b.rpI;W6.pbVKa_d<0E1(q!o%eJ&CJ_'>kpLL#M_WVem:LFVN\E'L6"[-ErT5(jAVHP9,'[4FQ:qRaj&U+eR'0q!to]@6'q@Sj@Mc^?$H=3Zh7#QLHtFE?hV4bA_e;r1RbWD4TG?Z"r9QG'fnM6qAl^i_HR/!YH)A4a?D2Z3PlEO72qWnDX7nHe9A]+22BsL[!+<n<fs.C=uQ6A'_V4hL3KLm]=UID\(J6eA\]I6hg5QiqJ(Hcs1MQ*)Ucm<Op6('X'oPS`U;<8[7&W#qlS<"8Bji''7f"$NpY_0,<OS,Y]8o6qfgfJD4T)SKj$Z>%gHEUV']kBbs)u2eW`W'-Lg>3'Y[\m-kuOfBWrBTXe!#%g@m\.T%Vg_hoCfkFf5#0K=X72YD<uc/G5tnV63LYHI2_i(.&f.9GDN+)'&N>\A9kLK^%!P2klps)-,7iU@h_G7YfLQgJJ3=!F*pZ>%QFaq,OHODX7+&t.1-H'7@^N6+)!!G[?c`6%^4]E9Lb]ird3@PVm5(qiZE#NpU\X;+kZHgK5,@b:q0@)jpT1H](1g;+4S#X<!BV8g-\$I0er-:A:jYadZ<n2Nc9.&+?ej;_YR"u"Ru="%^,Q,\?Ep`cD:E#$V?jq8o(/j\SAn6(`).oN*D'7#ol+>IA2:d(dn:_.Ck(KF@2_'.2T"*pX$ECoWGl$1@.?R1*$\;hc"^t$U)g8lJ_\R^kelR\*BZJ;[`<ak3rB']iKS&Q$d,kLBi=NS#R-IEgfaYO+#T=_8Xl'(uoCU.[`E`jLQeLW?mq\F#*[?KK%mDC(04>)kg'3lrF1g'40%lo2CW#^M_I7PApI1u;V%ZN;Vl7PG[J[IL7L-pWZBGHob"D4=)2tBF(+gJ*Wf]Y>pW<JJBO61asbS8M_.4@gkcF!h^H:39?O44QE)e*+K@L*uu;gcHh8*kJ$4gHl_03'p("9.D:-/,mR7>_Z7cb.\i&X69m&CVIJP&*`uS'_En.3V:pO:`dtkm]G%8&_:P]I-n]K/+NUDMJ(>MGU(jcWo8jjdK7*P4iF4H8[lkb]mV;#ZWo'U!'rS8)%_<BnE4_$@8B]LpbarKFNE*X/ETrR)Cr$\Oe]STj!cs+U,hU#H!/i&s=W.<nIM,GI+P8T[KcnnS<!^gJJ"/Yb/o)7mXbAAM_Tr/\arIJ*smR2M5i([hSu`JDE.Un@hNX2$pW&&G!%8Uf%+S\?O\J-/ibpE)A:K9&H:8.RiH#YP5?hRAZgHD;r<Pc,U@tYl!Qm#cIJ0i^H1b"$q"jVPLe1OW'1iAJ;Sb^O`SU:eMMM`gtA4eSa9Qr.4$Lg5s<DasNEl1s;U;6ran8K(E'Q5GE>9\gGY:Es@pD(iubXV=:_Jcj@gfDsh:tX*\+Ya+'@7F>!OrN8Ur$~>endstream
578+Gb!#]D/\/e&H3`ds5C[#E&L(iAA*7R5GU`##"tGe0b=aI0[S7ijs!YP7E+eGrJm-(`GK,(Y(\l%![ecP*Zgr#mZ+_a8DglO*G#4h-h-Gu%CQA&"Dl\1@<)hG-bZi>]eb$6C_/qkH.FYhLU<q&p=$.^,aTBI$KG>;=mp0?*gQ?R)&]e?5-,;B)*.1/eFl9.pGMSo^1'd//5iXJr=[Ri^`F@hms1uM"#-oC+J1=:o_c1>R/@DWT+.eb^&d@+/SAEu,Cb=sfL@ddM]C_=W\P9G.@pnqQ/lC<4l6^dnLXFunQAIbHlJZ*U14]cs8S.?5PD2JB[M*lZEf/@&W8/Z.9VD;A)N.9rm\?nUW:1EpEs]+6Xn0'2e(#DLmWE,^s`9a"8Jq0Iktp$L[Wpne$]@-N;WWgg):nO'+1mC9lr/aFH,;)Vd*VF>TA*?_KHKW@F0SjriiDIA*4O_f*d0TC2U.'<uILfKnqD2I*#tLQ7\6gSc+EBZF3/H2WFji6-;h(GlgQi".4o/VZsXMP8bK=Cc=[JEZ=,Z3gj.h1)fOUg^Y01LSq&\hJdQDRd5]:#F[_EF]YdQ0+s!0F^/p=d4&b2l]"!Qg*RkZ[5iVG5[=$tjOJCm*ON1DB_bpP;bj!b*KA)[kj/frk>?K>Ut.hRJck/@QK!98U.$](dbGH>msot*7qJ"-PV11d4FbG>HiPca/J*e!fo<m4?ik[T$$r/0N19u>Y7Bc(+#&B8Pq;Y3p7X&TcM2o-m.eD9_?6[<QJ=0Hn=:=r._I?139858;SrelkIY`D?_@B5;-jQLN\Mga0/p!`P`*1H@mEfb,,&7^'eLQj&gN[E5ij-X8PLlh;G+1uH(QH,0k4Hb4K3'l%;euqWhcG@6__$ujGDUNP2;o#Gg;1R,^u`&7Zg@%C@-FZ<fs"Z1<IX\QH)*jD:qm((`LtW4ed5N32-l(4Sq<Cnu[F61i5="-D:4GbBf`Igt0.bX2Z9KFaL;-H.giZ@/$XCI`(fX$p'@U-+ed;V26Pb:%Bna&e!5Fpt:G@_:BEC0BCJJVbCB-LbZ+g#Kl*=E@"cjZPm5+HMSbf'GM2'b)hUSP<-*ZQKHSI?5PK;FIEoN91.!a"g`MAKJ\b>$a^kq](4Mc3pij?M!9Gqj%0^$c5]&Kfo-jIo.<UWE^bk=&E(mIdZY9-<DcSi0j5jUSB/.3"('B0BS1ho;SngX1.-Fg9IcV-PZIgWbbsXYORH!XCK1+lMeg"2k>dJ:4dhn59qEsR]J0o7._Q^n_mj8JgM#Y^L8LsXHD-X\[FFCLS,>.?T(WW1Cj[2I<O.U=@U0U5!l[\8k/;$JP"1g=2upj?F0HQZBiN"F[<D,Ck'Q#.2u?_t^DD!,=>nX054Y2=q.GU&e/,04JpLQ.hH&l.SH;t"Lj)t=BQX:99_]-hq)Djep<\2WiA;Wg4S'XS&2]q>U$-tqWX%gXc/@UT$9hrd'hh#"="MZu]0k?D8"RJ46Q-mmRp!<TXGVl@:sGqN4a_BT,AQu=bJalPB4O#R0t7-h$?o\aFg'a#k$#g8]%&'Jr3(8R]sE1hK\sO]~>endstream
579 endobj
580 % 'R145': class PDFStream
581 145 0 obj
582 % page stream
583 << /Filter [ /ASCII85Decode
584 /FlateDecode ]
585- /Length 1651 >>
586+ /Length 1696 >>
587 stream
588-Gb!kugMYb8&:HLqJ!`D6YmZ*t8Pu9%jM>gL,_2AoZ%0J(-s#D*g3C0Oln7ZR?f0N_V)gQ_<[C^1D:k/"R2qj)F63lG_N;K!s#[CaSkn=sQQ_"o9M5X]_$HnSn7$]ko^V])m&j&=8<Y;9As82A3Bm<8;Ic\J`N7&<P%f)e2"[."q=,%#>hp3W+in%pd0_=5DLp%1IfUqDI@6t8`=hM=/$KBCBYg>uHmTD(A*_-dP3t/k>T4'^OhiJ?5JZn-TB)X%j>e+_d:;bfY1$(Y9s_VJ=Ac_m<\LXP%#T'*!cLpE^u?_'J==aQ9iDMZ#+*Zm.#HQR^MV274IL#>AX!DHGL8N'$:?crTM*]6kn(2FUKBjcUnokZNL]lK;_VKr"&&uCB7S01@n#!)!OIN=U8_S0"9sS&/QT8e(=uF7&`2KeL2/WQ.^P@lC?>mXFt)Vde*%A(&rY#QNO."RLmtq/ptWQJQFgI@`fjf;]7#-V,*`86nXs&\S(Uogjo"ssEuN.K)"/H(>ThL5,BG[PKHm&kf`Al#D4s/,E"nbs]p5XecC)=VAcSG-YT1Gck5DVp+$.LhH9=iR:7+&0r=2$+/,@*r5ZC=X-nQuLKg3*d708@gK'@k"'uBr&"e7'jQRa5hY"JGkY"u2rT>DWFnlmMb6Pm*a\HJ`:e4q7r'KE"JL9ldGY8H]Yqk<GB^0.EA<\l96/69&3qgc65>gc345(<+qZ:7":_TD83':9M[ZBqS2]Z^<I%W.u;n]5sOo6g>A!-1=b9%;)4!^mq]Q7q%Z:(q?n(Ke3]]EG2be0LX(@Lnp&C_$Thc"gJ?-Wbm1&qhNj%m_9N.\Y\a,<&\gK./fEYZiBjp^lMK#hahmda$q8g@C>Y'E^t*.=4o0-0*h(U6@g6%F86XS>:ENFF'`Jj.%&]U..Y#U;kk-.`NR!Sl\J"f]aV.G=2U*krEm614=N;^#"r*!0sTeDD'2].,9I%R9FRAJtLjS0&H3:0"TZ<OO"`OQ\sa@.k6!a2/V)<W#NuEK%-llK]N\82C$Q)k&&k5dooYT)hWX/$Ji^YV[ndYo3Or/?j\+)Ole4WZ>N@jAkW1i8XlTOs887g%cc49qHDLT@+6a$<h@E5_burL\KiC]FckOHkFE"K>1_5GUs%;O4sP]i?@4!)EL,sBoK1=_J&uu+L:_8EB>dg)o4tICe<\_iZVZW0aBlcD<-Qb"$1t\30Tq.G26_/<N.EKtJU@jk!@?U>WeD<aK(4%^3S-gIa["A^bIbd?>oNIGc,m>6#B$/s]l\5TNE$_n9NpKQ583^Ac-Z#$(<FR_dFP(=TX,namK-CS4eRQ,n5s&D]3>cVnSkD'lg0BolGbBLC`g[]d?A.+*e\TlP'o<fa%r#KkTHs*'^`e![56Hf?jO5dm'1mS_T<RS4n_*JLZ<J,!Vr>rfO5E[6.oqe55/%T_/<)!a^4'=4_nC0m8^h>`p"Z1?5RNf!$6aB9-<>.,P)DF2K1<#_^uf$mU;OY%\8Uji>GATqt)+Sq<ss'peO^q,1M*o'!4>^\X-eE5s"6OUf+(S=fo'E?o'dSHk#PKV"msOGX(i6]19am(mB7E15>KW"IfS\Oi]GdRcQKhddBVgmIK(d>!We?6'V4bh(\q3?S!%*[,BS$Eq2k/\kt+Q^O#'^I.TAS53ub~>endstream
589+Gb!ku;/b2I&:P.Os)<<%l3rDZag*1qkX1fHBS!80&d*Og0[S7i@O%!b8_*K_rJm-/->d6=SrEnU"#Q#i*KT*uqsHQ!LCsL[mf0WqGWCC`?i/ad0[%9C]b"f=n7m,oo]c.ln#hW`Lr7:AP%d8W*$>-,TeMh5@`Df!_%\sp)S&MkiqS<2Y4!<"0_HWW<O>.&M-V:p'"bpZ\pnX>=NLbb">7M)#_nf]29[!A65oT!bn^SZWTL/Ocs<3bVT_eCp(:oOHjupA\h7(XQ3rS("WG`91nU*?Z8"4jPeol5\^C[],J8.1]AYuhg[j(l_T2(i"EoQDa-5t9S7)mYb?bLM<n@G5ANkb[5@Z\VK3ujLmIaa`%H.Lm0A]9Of-e=MbqYZIG2ag(^#4[aS7\09S.O$oBn:B50Sa+4cjN45kRDQV.$t`S""R$TeA+MQYbGo98TaMYCMK6?J3bM\K2l24KALet?K.l;.lm^.@"r]`c(Y2T<q]?DKbcs,0\]?-'Mf3(gt[Y#QZal2GJ2d",;7c%Rroe00QTAgdXp(1:^s>?XGu4KEIG,UNH!l'HUf;4OXYX=3U-jd600qL!c[or-s82CR:=A6@U7G3';$/!eJHZ7+oJ0$]GU=81J,TIB8P"*'._a#^uonjSf%Tc.`iI&JO3E4PH@\-TU<ffasbZCe3HY-Vi#TX8dK=7ddHCHE..9sQKZJpORe,YBOc&`;Iuf.87Yi^Jgq[6cd/.kfNW9L>"WqD<YH`1cSE_qZ82H9WS(V+PA'gf_pcdIon[Z>^K4HDf&VZoW[?\"RX<@H^-pEuTcGm`ko:eJ/V"[9NWKs%ZiH4XN2;5Vh.\((q@"nO!RG&lX@YO2`?$kVdfTk$f5F*4?Yg$48.[+6p_<@?17B7L+1]+[*-BKrJ__N?:7d&"L<0p[U)+8"R69A/*g2V$8EhsV5:U*S?Wjc,kHa&\Mi*cVVh8$2,Uco:D+N1?*LE_5[YKb1?ISKM8JjO;jQ)?"!%C(3NmD>+c^`U6ech^e/Q^\"1E;Gd+EY1I\QQhr4u6Moi0c%*f5Ha($I_MaGj=`c`Viid[!dV=dD@%tc,rX\C6<%Jo'C5MVX6@F,pg/Xr7Y-62GQA_Coj7Q3_BU_,Q]Q3embfI7^m5(HN9;;DCYM+N<u(.Q@5[7FU\MLAdPke9Wf>#<.)Lc);1F;oKGM*>]A<+So5fYXI"#HBuJ9UgS'Ve"-C5rXT#]!8&7Anh'm?opAA+9)O2I(5o4^7,C<-`TNhgc,gc!$^do77f>,[(VDVU=$fkJn%k,7(<m=G.SV>B(P&o&J25T8;j6&=[>K:>0leI%SVdqG4>\R\Y`W%9eZ2L;[Fi!3RGR=U0Z=S.MW#k/$&ik;ibjulP7u-S9hp/hq%_BJuYGUXXhB@#g(@`Q,e"\;6+F4[G.0pICS/smt#3.(>SV#c2eu>4V*X'AoLW:J5LV]VNnCZdj"1CEcFqTo:aaic6ir^\K%G5<RW^#,FWk7Utp8o.uCTkFOQbsqk$G,Et3uEL'@.i6mH/4:`K;oC9#KtWim5Xs'@7a^ZIUjAoHq*/1b8>jrEo1F2lYeOrXVM-Q:V3JmM[hAEQHG`(3LjEgKhKX(H4qaa%Xm[2E9)AnGS8hlTj3P>c+VB;Tpp>PdMqa:[j-`Qq/2(i?p[%4Lg@OY]b7L9//TY>?t>m,3!gL.fKgsB^Y(Ue+8l9V:!F+~>endstream
590 endobj
591 % 'R146': class PDFStream
592 146 0 obj
593 % page stream
594 << /Filter [ /ASCII85Decode
595 /FlateDecode ]
596- /Length 2264 >>
597+ /Length 2319 >>
598 stream
599-Gau`TD/\/e&H3^ns5?d^E&+5X/N^Di/d'Or70=60ep?NaoF!6J2B,4e8Lg>+lh;AJ3DnhT9:'*;l:;V7GC8iGTa'#e^OcDZ$DJ=mqW[['"u4@X)N:C&c/-mLg&BiprOkKQG;?#:nT!'NSkQD$J+&.#,;X0DiLERpKG"*.I6Z75p@f\KYgF%WBi[L80hkgMPb6j]!T?X^7`q<hWVfDSMbaRYk1QZMB88>@9X>hS$,><%@apIuLKZDPDp4Sjc1lBWC.`VH(UA/".:&*ZL93JKhi.=i)LViE5/7Al.@L0.1^<nlr;WNH4unY#O,c]/S]]LaLa0K1AU4K#l>.gtj72Wtc2fDI.EDE'>\6VHXAMPSAZ>>K,pLZH8ktS4$Y>kcKFr.$-(U12!fAmN:$)D(Dg]6\7aanl^`QQcWPnWI\(($Fn>^SBh.oE?0(X4-s-?1(LBk[k%p8)]Wc`i7lWg$qe"o/nN4A#qM0U^<gj$5k,*g0>c:j4q;AAMV@*r\,&.a+X^aFd,e,Ct,N_Y<>Y<)$nd3'@biCmg^OD_$r.`A0jU`<Cg>(rNO2j:'d(XhagThhCV8\6:]><sJL@X%;I`X-e23hE,0T4R#nY4d)`V$Ur9dY/:`1;LtGC+C/8p`08[pt7'@*A%MH(_Hrmb3PWl@MfCZ7$EiISYK`*StuF+,9k'*;92]CQ`m)-ch.X]2.*[=b%t%]RhKWMH^-3^hFAlrnZje0f]0C7<oHp=^"4KL[4!1;GjmVN=tC[sQ-,+",Qkeu.uT1I#8X&.9_g5C@@L)(A0lqbeB0GP//-\hDYC`*HQ@>_`W95Xg28bN-`r[a=o.:]2.fs65\e4E)s$4Ck]_9hEF_&b`?tdUATT5X@sE';$!ifefZLaH.k0GR>S`lH5A9V<N>"/#3gZRW+Q]ki*[7eR!]!a'k)Dkg<OU&h3YV]Tgt)[F7#&`U)='2LEp:+-"A=C%?AmT*4:9<qg,dZiX(qDu(D8IgN:?O6=H<HH?=\n4QmN3paQ;45Sfo)b(:D8?4CH<19&fV^II,3\l^CiU%en&q%E'972`\it([;>3$@"(G8l/eCKRkd$&cE#US.^j%BP1^e_>Zo8O;oDp#89-jr(`\?;@Sj1'A/UVl8h^4</<W]`Fk`qSHllX%a,`gdjM6n8LSRSMR@s*KRWco;[#Lunn',#Hflf*4iKXZ$rZQ\`CkXoo;$S[+e24J:4.4dpaT@JXmk=BW;ND_h6OS@,<;B?QK[;gRn@cbM;kWPqQ'u?laY`O32j@c!^s1NF3UE&G5F>:5&De,dDfHoZU.q(d;RCN%-f]*QZF;pjHa"O[12d0)+-+3echYrS_2m2mor%Wd8Fp-=5%la-HK#CeO#PBJf.5X21)=meotrf&>!ec?*l)p797Qjo)#,?j6tpu'cPJLom)&X9bcn'ict`8KjoJ*co.k[[(.a\WoPGGhtmEnT#?]2K3m]W>5I9VR/:;0:*pK!_Lq)_oC:f7)bAH'YaHFZ0&N[,g,=1V*&kJrA^DM]*"sq8UV#g/H_8[!Y8VhG?@X<o"JJT[!f[8/h#qW_<oA$#%DPi+cTWAtCG73`)H9QWmW]Ar#.-kXS'-Phq@]Pqm[b:5S7aK=nO#hFWgTD`:U66ZE*bf/?tOJ\O$**U"?NCYQ<+s(a?+L/,CfGRrJ`ncLX]6VLIV5?kLs`Ta>hgN[\GEsIcT)(>6B8dikF`@jAO%6EL4#X[SG[?3/Gqb4ob)(_3DaebM*6j'h:2Tnk,CYl_>9cdDq"2(sh`0^f<cF)N@[u^%A^^k]%S!\-ls7!8Yf*J\NbTQ+'?,4P^(t<^<5\DAK/g;I@Q\;">3LRtgK@"V1!'f`oS>Y<BOrr9Fg+90HMI-Rmd]A%63)fN+NZat$nb7X)b4Nd]=Jj=Kro-9GE]jPpA[<!o\QG!-`#S<@\J&$REcdJfs3'ut1uTrk@&17Fud-A=f$q@h=)c?RDopQBUVH*\k*n<`2f?^#55)a57%,VZYZS]X6_'5=R&lNl@.T/OVP-jV(WX7Hd#&!8BF:N\,h:#uPM_hWVLk#f4XCo.Dj2aLQoG/(rur;\@cW<:'DO-Cb6FQ%TB[FN.X)H!PSVH_P1#]8KC4'9MPo=)j:0q7=E)@,VL8*BMO*f&qjrl\g,IWrGuAJ3JQj<X@.-q!7&ZuL$'SB`b4l+Q^s-M"%t)llJB4lbMk\1>IA)7c,))^8t]3O8&cFRuB*18o-F=$ams0T%5a>Vh\pLQ95r$ADtTHL*jA*F(:LNMg.NSG)^V!MqFtJ,~>endstream
600+Gau`T@;jm[')`jos'\a^i8fu7D:u1bp2WE%[+GH!??YYRh?!RA99d[j,./[2YOC*#)cC^N`ec@^0$Zm+9-T//2`#@n2528nNP]m?&\V>o&+<"F8nh/LBTc&&nWDZ[NfSWR4rUh=B60N4T-qPP`>irZO8a0:ARTC$]U/H%Yi>Fk(l$bpnIZ1Qo>X^$k-V(k_MmWi^mqSmd`F/j2c`$2CIufi91c?XV7`'>kqcL7/ZnM7Y=RlI16J^7G8TScBZao*%objKGcIlf;Z#O>(11bFfAQYS%sBWE-L#Sq0\gO']Y=Ka-^OucpHe!5%s[jE`6#=[I/<,B0@KH&o)3P*I%h)3->P*t++OA1k:M%%qQq3:@5@cp_"\$S>bP^-hk;d<3)A]:Il+%odIWS!+<&<p<GWlkB69njIKk"bi\2jGq=B4@<(:r3hEAA":h@H^Psn['`n[5eb#7B_%9^5>c:^g?'-'H#'ng&GhX-2Xs+e;Xk=954D'TGc;&W@Zk+`tT%734je)"sIXU,\X\UD%KVrR=='B*=%**B*+!YEH5ngC3o)03[)^V![7o$b9BCFO:<h;uL3\C.,:*^l&A#GZB'3!2>JXBuGJ`H!`'5G*'XQBP0$I3b3&;'l1pjA^sTn=]mc)WqfX_U6TY6E_T8Fp)QqZ^,@-Ll'b);lJ%GhK"0Xc16e:Hp?,CQ<!!ZT";5%?FOa1AJu@V>B.:^EOJKrA]kB&7YY=\("Q\`@MfCb6sGl^I/mjRJYNKiCEhn?<QSJP?Z*,<=dfe_CUn"XPhdq-@Esg#maXei]T66(j1;4Uf]/OuDS`[9o<=6'eOm_;nDJ.e[9@ot.[Rh;:^m9/A!R*DhcP`($5KRSK5G'@.r-%"QBT'B;J3;)h!TH#pFbtsN$GWY[G,Fi:>2dL[LUn$C5d*OJD?"k2TXRBd'&7[kKNFmO&&H(g6u2Kcg[7c#&Da5@kX1sDkodc8m1herM6OtG#$E4Qr4:I6H]%3H&/b4$eS9Y=#U01>e.E[gIMV:Gi/^@7)mD:=m'uZQ-qJ_6r.=FhM]gu4:((Bj#iaLf+$_K.Z'\g<WrFK]LN%G?rH#K>a#oiluML]Y7OH7#B$iAN0s/I9q7h]N.W'Re'LQ,huVN.Kt)p,Y,9k>9&7?MLm9krJf:bQ#(]5VqA7@q8U/7K)hFt'`uE5F3CDF/#4rZ;4)+:W[8:m=?s@McRPH6f,O`,X?hGc>0)5%I31YW3I)/IjL_TTXg4gt.k_HqI=<Q$lE#U)cp]0Ru./o)\8;!s%Du!9^Zbb*Y3#t4jp`*o@\l?CRG]>65q4#P*])DT&jEa!\d:rGO'V3O4F>$!g[0bkUe'3W2.`g*j0[A*c.^S#`-TItTo:>9cKfL+A9$D`'ZnbOU<*Te7Tsjm-DHu6-<"-TWf2T96p2YpMHtWP'9l%S!>as*BgEZk?X-M,3Jd#BT8+G0gC$=3C+hZZ7]'bjm*]YZnMa%[<E:tX^I=k#]5K8(uOa`M4H:3!a+]a`,mh'D@ROFXED)Ri@*.ORbCcn287ih61'[G)jn!c<;$]=T06?k?ehKjQ3q$,5g0Q!+VMOTZ!9@kK9L@aP(Wm#)aa_^fiHC-h7&)H1\IFXc*oE#_@&-u!b#A=gulS`Kn^O_siB_X_g^A<4Ln"HP/C/@oi]]2<%%;:a:2kHr#9.k^j\U,)gE'_0j_N,`1X(HNt2osN)_g)8^_91n++*e`a$$8bV4c]rSaA;"LBAqGiol'b[I)ppCo4ZWl9kiscM2[)!A3W,T$[3YNHuO^&n$qfj,amp73::hTe_\,hDiPJ&l_)!Z@^%*`I/2+irhRY!9&:DSpLEh"1&A!e4>plc.V]\1Kgm#G]-r(J+8S/%)Eig2omlJs\u8uei\pS-A=;n;E%`=eUGe%Y%&GUg%Oh./^eI1M[fWIgbj5u(OiILZ9E#D25IN\$*X4(F$=ea&LY,q'ilkV8PsKW3OcEr!O5qMYo!US@.2;=UD,^k?cut$Yhjop84:cBV44E/anWh,^"JKVr)E-<Ed]S75(5<LO0$j<YHQ=Z(,3\/3'G)q>>J:d$_R4\L*_G:+UV/-#PV_QoYhK<.:LCQI5;!L9DUF\1W?*isgn!_0!L_(DJqf?Z`l_0UfBfAcKX]?2eoeaO`q9@5JPuf,%k]:u:7*O'niO%/2%@=O_jPDmPRt3!L[7qWiP"??7`4`P1@<q%hW*Ns9!aG6fM4`MT\\=(s%t?3lM:V],/Zl*H/J8-fomQhi8aEChhDRu9!M'5,0Vo;AGcn4hL/$X/jG4l.lpJH8NI7Ag3Y,ol7JCKZ/?<*k<-Dq3OrblR*NJ#3?94?#?!$8JH~>endstream
601 endobj
602 % 'R147': class PDFStream
603 147 0 obj
604 % page stream
605 << /Filter [ /ASCII85Decode
606 /FlateDecode ]
607- /Length 519 >>
608+ /Length 596 >>
609 stream
610-Gatn"995Pr'SZ9Pr.hVXPZ1Qt'-:b/XjjA9ZCk,GFchXcQOFnMe99Qf^TU"fMTf!DNKGc3ja5:niL2!1%j1PO"$RKFs-\Lp-u/7-74=Js<;><ghrDb`WB_BB/.e4g4hgY;f2O9V8Sb<JV3\h3N(<Q\pRL0@NsdXmU2pen`83cGhj9`/0N>k[_!H@tDr6h[<SE`/S\8&e8la7BPeAFB[kWQE\KUm@]!=>R?RXckW8I$j7KEm(8fR\`NR)%l<^emeP]EEM[VJr#6Z%5P9=K(%^O2IrN*5dNQ::@HEiW?H:oSKiO\<tX/hLRUdr/:YV_NG3P#m^?<kWA8h'nE`IsWf/,`A(8]f`I=DKQJ86ttEfr?6%O\YpE9FYk,=#KCAg!"8:(]E$o)r$UW@Lc!9bcjmlp%SGKP>iS3N'j"@uVS8k*oV=PU3(k$,Eiu*+NE348cq:nh[K^?U*b9O@2ePb]_4D`P42g*0L$:"0XL7hPAf(kfR(/sPBXGpQ,/W]lQc&Rs!I54Zg&~>endstream
611+Gatn#?Z2Df'ZJslp^[%0;DNA9-=C5"?+"Bro"\EYocYsu>S7gVRI.*#\"?$NMQBMrUk48QAY8SSE-*ORp86Y%DZDt6nF8"4l9eSR%7gKP'Y\+\o>c";IW#of'SaPaPLuIHSTh'M;Q>HjK13otG9*mAWYVaI"mN>uM'6Z95m[!]5Mj+M@0H9RY_9PR^7&((p!&PiZ]W8=]Rn2(0[&/EdhoCJOM1*jI_FYG4Q6n5RBU=skSU7`Pq]/Pa<&fU!'_aFRg!h2F0-VAR&(LFXU?:KO0G;d1d2Yk]uC,T"R(h!r96R$CT6[K%L[;[i"\eh7.jYrKXt>14S2q$=^%,E,_#=lU!@qAhb6rjqIB$:>cJ<ml0pa+Y0Uo0,SW"@2e\C2Ptamj<Je\2HldpFi@Vb\8L]@mb0;)jm=2a87nAEEq/d[eB\#cUhkO/Z7"8(uD(`*s/K=&ClBU(F;eZ<_l_]hpQq9I4aG208G(m4-f!:R`9_f[2e*h76,q9Thp8*,6"-4'Q$/)S<l836>-Z.,QVHmualZp\F'jhq0M4Hfc*Glqk-cD',\c#\@G=RD%/KA7YkqM>&;QC(Po&#ddlhghpb\BE~>endstream
612 endobj
613 % 'R148': class PDFStream
614 148 0 obj
615 % page stream
616 << /Filter [ /ASCII85Decode
617 /FlateDecode ]
618- /Length 1887 >>
619+ /Length 2070 >>
620 stream
621-Gb!#\D/Yn7&H6"8s'aF@'[jl5n/I4Q8pRDjl<7JrB3fYC^FZVA[(t,G,u4I<bq.d\kJ^/1<>S/kJ_caIkBV5_((X[JGih*1!D]Q^C>sg-___C4i!a#i&`-9T5PtHXRFdB<#;@3D:(SBL36+.uC#6uFcH4JNa;Of&JCi6eI%Tc<RKVOPAD&g^3<r4J;Fm@`d)j]I%Uf,JL\]1K93#EBU2Oknc'.BbkcGf$d/Gg#)Zb9N!O`Is6M4$RY9n\e>dIlQV_qbU$6$qrM*ePU:r&a&nrQKU$03;519P#q8>?@X<%m`)Mdr]-R\fj!["'o,k.C[p`)(&>?^I%`6-*XJP8k%>bHc(4QRmb]EC^J)931%+FBXu5)DRe?694Gsqc5ier;13m)d:63+pJPhiC"k';K_agUTJjq>Jo\%gVHC7qkG).0c7>$-SXbVo->n!>GVom-=`]V.bS%aAX4*QLbbhA%No<JB2Gh&.gNe-Ls>;3jEg;&BI%15Z?DrdYk:m*Tfc7DnG1n>Z$Z3/h`i*J/i`D6Yl[6:"JoZEBc]Vc71P2^&n``DV'rC'8P"NYRBFG9R1e^.b,Ugr%narj@?kH9%:"QnH))2"!>H-YT76XH$@ZQs%JI427>cq9'qYqd+'H+W+I$PiT^'?>PGtJp7?>hGe.JgdA%>_V4\2Tir(pT8p&`9O)?0"inp8E6bQX3shX*c8'B-iO_N?T5c#C:73O9nkR2m8a"L-k@m5t;W]qaFfpD\FJVjFbb%A4?Ko8j*^`'"PQ70O+IH^XdQ^78>4&#07$ol9R!fR#<n@1YDNSO2t??_(&M1[C382CrsArE3[_`tQr>[o$l$K%1[l!;(oA!U(VONdiF2-=aLTBsa`dAM3`mb#tGS:%#oi`$/JqU.Ym=kEn*lS8,51M>)_W$'C=4X&@G62WQgtDk4FKPMBO3SXc4ASt3P;ZgLhAEF\.l">D%*,C++Cl"PK)Q^ek8]uSIQRpf?;Qs$THRnRE!X#sTj.V`X:-da>7#%geD7];S>)$FdfL<p'GIbp%kYEi94<dE02)i`m<j`Rbj>)Hn22-'pXhuh+u<B8*69Z%o]@2MG@Qf^5,'S<qdoHrT).Se/$',cG.P'dF]g1CN2BING=7qn"5aE`S4In3TQ1XX@&hnUc+/hN_*`2k#8Yq-P]*j76Zc'pX4p$V8pk&5`mYd2kCnndp^4P6/b0n2uel<ZX0XZ%/Za1aM1Oh%T-d,@1YZbNtF=Z]3Y#Tq1'=/hu&Jrb_iR>&_?Z4rPC;>L_.SLo4j5e!(8Pq:o<V5kK"Br03U`!\+0a9Z/_e/aIu5:!bJ;@7]&C-_Tk0jraF3Y2W,'f**LdFCgMTl`Ek#[4DBEn_/Ta\Pi7cHl!&^SrTa\Ia'=2f7[T(WLE<`ZFNYRXA6Lh`k(YrF+S$rK;K=UnF0&$d2&j>JD981n?]o.*Aa.q3VO%,Q),n]MR86++%5Nnct4oNp_\gXA7/cbK3Ffg-DPd/.[t$YU!*'g:@*"JF;CVbPtVAc;SI^,<hl?e[$\CIiDADGk?7/4?>nlK0-pGb]P5DB=3ie,o1lu8/5J=JVe5oP/:<Yob@k>"I8*up?ae/"?[4%h),qt*lQ=WW7FUgDML+u4<JSpPGUNE:%H<!a%^>dc6Q+oO03@@h_q,Eq)`JnN?%k8Ba>:`'sa*b_0D<+25\A[RDrW?TIAI$ZUR^T4\oW$lO[[R/MQ/:EjpnP"SF&1]'bdUq9Oo,s*k`$0I5J58%W7WjslO.LkIH\N,:VK+1l`;@U<6?^VZ\"*EQ_m`eT=lW^2]slDtCA(E`/-S7$Q$#^&jcAe-Sh+-))NFW9XbY&;"R+sTPD\To!V_pHGVf@X2?mUbn^RP-npSC*/<O%(AF"hfNQ],QZ_kKj,0iMCZ;~>endstream
622+GauHLCN%rc'`D@2s5C+H@Af;h;=Q/&>p)o-[TJH!SZuXS^JGP[X-H)<PiCc]mp>9ffl?@(lXm&K-'F&H5'RT0"qH*Mq;756``%+F@DH-8c@L-*/keLG]BSp"5Ft)LA`(<8#$kgOLSmKZA"%?RX-%?pN!OjDn%(l6Sd+,aK_'LF"?%N9a*cD=g.J/=AJ+\'..lF7VVeVI>BXfJge53XSM,Y1RD+9u-88<o_u+?`A=E_&$+Hig_tE]`"IN[M2E]aCAZ2;m(jq`^4A7SN8FkCH$KN19)<?q,YZce\&k&*=nN@BaaKmQ-ZWkKrUqqF%'&Z=]BuI@41tNL6<K?$1+AcWM)g_q2,KR9C0S+r;.<`U#dkhD[SqSrIG1HIRX8>9Yriho[YRKe^FS>pTp15M7DT'HbDAQn,U<u'egWgu*@t`MAdObMS!#+iF4_"IE`B6i@]fJOLE>8KDa]2u1O&;8q^lQ"VfR]PsZpDQ=Tl'QS+>BQ0K8\$_Y;%q.)-$brq)_ePMQ)F()16]o2RjQqs8L8tku(n[I%Gk$E^==fpG3Ds>fdhi\>HL\d&B_1Lb"ic(%\N"_]paQ%R8)<!?F^rk]h@iAJK4LI1q(,BaeAj_2%:<:Gqqd\KZA:5Z?)6AAo>u_b]''C%)f<OK1E]buH05:$e"E``+/Z)T\aPe1f2^o0\k!B0mh#8lj/TJNiQ`V._!"C*C>;1'@/m5hok2Zk?E5(3QpkhnFMsbMe%.C=[:%Kf<d'GA'"&1HTL!N^okH`h)eM14Q/=VCEC4(le%Pl2Jl)Cio"b9jt=*&5+$P?]-oMd46s>0QMNRRdNHqXAF]AL_jMa%.>?YL>XE6VT\e:?/q:&=QlFkYO'?]YBRhXna6(^'3%>=O_bN"*S3+7!(dP4XLA[AYl7_@>rD-lVaB2%,Qd'"lqOPK:pYD20)920_B"_PKip-DT^H@cADeqLg_V$s%Eu&pij)J!(C@4H-itr+g$JJBD#D(U4NbW)V5--S?gE^:TO9-2/33![P#r(BqW5m[PmPa0%i05Qfksg6?X>0YPW#Un='Y9BQ*i+.^!4ESV&@8b=t7l>^,8Eu[Kp]ome#o7@qS;G\OT^:iAE&>'^e:8GU*tRP]-&I'qhW*=7]e4=6RO3Z30:7B`;V^p6+d61;!Qb?1^G<PUU[u,7Bf?*;uHs\"a7EM6NYo2Y1n/JSb*<#J+T4]@2OIF&^7LW@9))-kJ<c>7*7.Ci`E-\Y%unV[8P\/26OMoX!hY`V7e/ShH?A)ACO)Q3iQ\nBP@m(<P9gU\"*Ipu:9:_)aNo_]%\8*0:ck-kTQ8*`nC1,t)2W>(0>^oPaii138u2A266L<N8;V$J2"];D/Z2,MoBs7HVrl!AVZN:m/E&CpLpU'a\GG%UYG62iot2SJ8&j7O#`ET[rTEdno3^MXQ^@E5]<Mq0k%kq7G#6S'n(t1/P#)L*Os.W*LKGl;'JX9_(ID@>pmGBg>IDSC]3%fO=kc]3!Eb18#h#XN,3\SE*9FS&S:4?Y=<CBPp#9L+(OtfmF_JgI!@No9>roc-rS%rP;n"ZJIsg<_7oW[O=>AUDE7Bk2?dF7u8=5W+`)b9ba^4)a,k'<75q!;ni`-@gVTJFOub4a@4pqW>K&qknaPS-PUXS+C^]]ZSiT1U'Pd5*TikX2=',OQ2taM-^)2n'<h;,Snp3":RecV@,1cP%_F7bi+K+4f-SE56$g_#rUgKf5LnL'OXg#><fb[5eofU-bFdc;g,?KR0293_5U76YnKW5(?1-Y@S"ol:F]"Ceib6HY!OQrSQD6Q=bs4jpo4d7PIY,dl]_ijneR_:l;d[a^hoREYiuW6kd%Qg9qN#b6)qs,=cMA`j>W&]r4HZaBn8TR"^60*:>8L3F\Rr4P=NVBB0FmW#^>>==\\C0oPGiXI-uC32=4Y7Z/C5iKH^%*sO*Om@l,[)HR(J.E!0:(7\Z%%G@^b`nW3Kdt^kKVhBsIT_i-'O;L\%R-Gda7)^&j-KTc9c=DV%)>p\L?rS(DG"YL<b&.:t1cb[TAtT@iSI+I2C>piBptGDIQF:YTq(Re@KPPFX[;7`4h1rr=,UZ[D~>endstream
623 endobj
624 % 'R149': class PDFStream
625 149 0 obj
626 % page stream
627 << /Filter [ /ASCII85Decode
628 /FlateDecode ]
629- /Length 1977 >>
630+ /Length 2035 >>
631 stream
632-Gb!#\@;jmY&H*Xms5?d^YS3t(,hoUeTHBW(.uJITQ5U]sGmGgTZIML?7S7g9?b]*7G3lAoCJP,""L0LTa5aelHZsSR_67YR7leuIPeR+4-.eo+6LN2Ade#-)R\$/MFaiI2A&eV0]tj>o8Uu$1cb?rP4:s>]<Q3u;-JA3_@tr/%q&'TYhK&ei`\oC2Qt&g@Sg(B@4[VG*Mc`imRH1BB87\H\"H1ZZ.RED>2l(jfdgn:KUjaq*rkb@,VF<q4</$5j`E^NlXAVp^%s1D6Wg:W\aQTrt^!4o,5>G4tMMPKV)u5NUI!2b4XV(Bj?_Fn24#duiLGT&NOjQ?:0i'3+0q\-lqbgAt!K0Q&,@4>ccIM:@]2j.R^pSqF`5iC0e3=VAhcRjoU0&rS;K-=ZN$;<@%;`PO%(MEj&BcAVJuall#%YR]\*)#Qnl<#r5?u76!lsjPCZnlloB5K"1DZ2H,B)^\?b#PHT:E$'R.KTSQK]*>NQ5eb5D]<[4['a6rl0jlYb1Rr!T^":f?r3,gZ7pVSFd%rgZ]E1KuuM<%qkip7EV@k+:t,WHiF0jSFQ-]TcJrXYCXc#MfR.<`??X!'CR3tlkkW-Ghb#LAZ9;0D"XY*6^/bs;62_!X<0GF:]U-<cNjDo&>\9`>M=DX3(N5.GH0U6S$#m[$SY]&l1Xe87Fsd&rhEo/)h#+oLPG)cdp/*`Y:QaM.k-1J1hkGH9I4u3X/K3@;P8n;\b]WOV4U/``/k>/1c+h^Z]d\4*jJ'THZhJ?"/fX`'B+_YgUl']=,>MF#e?]_WD1-qQ^-.t8/*/VKVTF<+Wd&@ZbGM*24'gL<X@IkA[g]Cb]qe$?BhY]iJ9A#_F*f$"2@LGK8.g;XY^ZP+juBI,"8ZjCA24cK)W4\Tm3u-^WXgtjZt"Y-g5ODF>k22TZ!rl<5QH?Z[@PdTK\Q\$b'90<A2Re6b%@gBQD;q!V:sGX;'7<3E[\pMR4>@9_$'a/>J8pYhGXg:QXfg;7b&?;MIgR;XJ];SB4?]*s>@^10p[_oj`hb!i`KaHE*75rA?_WOpBI<=97YU0o^jlBZ2iR(53WamN7Y8F9WVAjLH\Sh6l5sZio3?8@VR=6NCq+&X^%)kN^an?X@>Lk:2P%VG'Ni/g2Dn70Y"`i"E*KDh//)^g8WkZor$(qa)iVF:hZS'0T9a;d)?=ZWEMaArX#?76P!cN1qA,ZY/q>EV>?eoe_*VZGO%9Z>c%H/;f+>iV;!"DR[tBPuum1MD0!Al6=[2c/'u4V[K8e4!XEY`4D:%hIC]^kN.:3#4RAlJJopX]=*`M$L1.O3:3H>m<@>1[1IHr;ZW!hnJJ8dLLlc:.@3`JC>Ydf&!^\;YNMQQ]SAR">2[@l(h_F0j,9q\;F#,!aeL[a,PZIY-JHUgK\1B*S(MD<R1Q$!K/O@D?)bNZYX>8<m?8li[2LKc-&9"M)c)JA^OcD!fA(85ZDpB;S$#G/lKcN"Mj,>*^#biL>%(>QD^)tZB<p>dJ(10(n"Rb7&>kS24Sp-(e$aQ#%knGf.#ebSUjI*lL<1Y/U#`/g'S#WTbLAg0o@t"t'u3O[s0Kd(a"PDdZU:VC(;pjW6D`5TGe;e$Qg_(02*5bn`DiI'-rY[iNr?\?j)6P=lPePMQTamedeB?"m0L9hVu<mZ1'gb\i0o&B<0ae:/UiSD0WKhaauF*"7WJAZ46?a5_ps9!4Q-t`GW_6g7ZQ)bT;o;DKDN(-_&=Q>p@[IKeGTTR)\*4!$7Af!>\f]B&ZN/DF3j\;PGf8(;&A,Q3m13pBp*CXd4Ps42u*g!(T(3XauaZ(nKmPb]#-/Rn'j[P@`lKks0]Z;67iJ%@NXi(7qe:MpAqgb3I^]\L[R;<NBJ1U)GS7oO;_EA]O`8"]QllR4@,N97!l?@cJ(^)BM\Pg^McIX)]9%N/.J:?@>P%&<Um5S@QeeMp,S,FJaJGVV<2)Rn+Yu8!n[-oF/!/V\Ud0f\=Y=@cHlIjknAe9~>endstream
633+Gb!#\gMYb8&:HLqIi&;:,T@.b;E(U@*obrde4j1<BMh_tYU#PJ,Eg7:P*XY%n(AFu95Lk6q9UCCASO4eHY2E1R<?Wf?e>2tAjf]6qXL[\Y"+\CgqMUBaYgc"S=b3m5BH.u,G.GXJaN5B+7G_lrGX!,/7ccCP".H)ZL]lm/=!R51Dk5CHe:MV12JWe?eb>Jn(6'KGYFf%L%KuYZthk]^:Th?r,b5g0/U3r%fH0o%t2LlT'CsoDk.^c3\caJ=5!e^S?VtG,:WjO$;qWln3!H,4=N;\Y>oV`;P'6KE>Q<>h/=C4f81t[*ccmuC[$U\'3`:nn*(Dd>->&MhuUK.H!/6o!M-mG!\Pq[jc]3T05@/U&EU:RRpHYR/X(QOF0R!UA4ar)`m\h9']qrOKH\J%3CWVo.*5%a1Fo\#'eJE(dDn@T;5JN5K+]PWZo+&RN%9d.\E;F9*KS?^j?GeIN^b>S.[3MTJ?W*95ZT3Urk`B.8T/]K9Y?MT4W"hAMP?UC8laHX&hJcYPK1\P/N2FmP>oUK0+gZR8f]7K74(HkM#;4c9@?6+?tK,k;K&m`g>.G2>%d7."DW7&*#-_73BAmQFC[QMU0L3D$8+[[0:Qt3'Vg4D[f&,Mk''jHA:#Sf3AOg?_kbag(X9Cc;W("g7P'lOEiq;a)NY8T\36l'QEBFNrTQA'jZD&?Z20LB3Idat^:+q,GJ)f(pq]I;;uDT@0@Nmu5\)uXdr$E,_cAdHg<Be_&$&Ao?RK`^b7-HlkdSgsF-V&l(/2>]n=)j\,7m#Y*rZ\#E!K1BL>tNuHjrIJ+j3!+k)E1smRaM51),.dfJ67!M.Z0tof`UJ'I!]XX:#1mmsmY(colj7l^ploo`r0RC$W?R%_B=G:=VI9djt&aF"g_=FmEScX'bl$feD->rj5[\Rd-Kn9U!hA/?S[d.3[G;]\`qSSJ"978V&@7EqNUTV8!<eM'XHQWH[]BAg`3FmBAr#43.5KIW+!s_hm<pkM+>O5$oIBN=kaXD,QjP1Fl)"o:a7o\1DbE$\rt?*_s>18(LA.6aHjPhNZjA\7NZIOaCNF>/1a+eht:m)u&)44D6,pfh*Ii)'\GR`DU7#XlFkh:=0$95U]rVjR;Y[Z"sPPG_-F7:NsLg#tfRZLJes+50=BA%f.tAZga>^C&,V.Bu6]jJgMS=+#$J5^e-nHb"5O:<2A=mAst)2@k$5J_E.+LGCiLQMUJPi.:p$=+E\Y7cQ/RppqHd\5WhgVqSrZD"B&gKobbJdn#u!/O?AnJ`H"L.RV=%374YOWZdpr(/ud'*OMXPSM<u:<)6],Gk"6d-!O*G1?lm4Wfj4X$MNmF3jh#NYKI#Oi+qdad5Z.Y9YnI&upd-plR+*kaR(X7q7ScDgOk#*_1W;(TQHp'-*R+G&.B;&@CD:nVRiSP>LpLS:XeY+o+%qh-P(fZZ@ppcr"NP_=XjACtJ`GQ6#Qq!7b!THPp-C2nR2a-#>H'+ck?\M+_!/5Pb;lG7%=$.[5ReEgWi\U\K)SX6[[l$`rLSA3k+YHmaruoK^4pCJ@%"u1asE763qVX\I4<kKlPX@Ln)4Q\kNh*]Ch%G)0<-K/!P)&2&!JsZiST5\[$A%OfM"5nfP$JJ&;tjF7tMa_C<np!o&A'&dc6P%9/11WGT&M\NU*3UA'c/Y`\kB/PHmMuS#K(WlKcNb6jaKd0"L/@<[]HY9aI,!]8Ml.]c?]KeEhUJfY<)Ri'3e2Sd*YeGl8.,ohT7\)e%1$\6Qp^&bo1CoO*QkGfs"8W+E,UK"(llYs!IG\bc.Khf*bS1u!Ua,+bj2>T%Ih[<_T,l;Fqjf=,DhAjVmq>]S?kp5Qht'Z\PXZoK@\,CQ2/E?)g"dG<3SV/F(f)$DAkE-8m/Wlis\MkAu4N1*Da,)RJP7PVC94[<IodCmdFqVKdJO%/0@Z\/G%Fj6W3/>/=gn*-.Y+Ncf/BK#S@f!E8=3#E^jON'c4!]s*X'LGV]JK`567e65tmeX&E#%#XL7`J@)/>Z,IH[3>@%u99[`9_LHMpug_3Ad;!r<!SFIgH~>endstream
634 endobj
635 % 'R150': class PDFStream
636 150 0 obj
637 % page stream
638 << /Filter [ /ASCII85Decode
639 /FlateDecode ]
640- /Length 1724 >>
641+ /Length 1704 >>
642 stream
643-Gb!#\D/\/e&H3^ns5@!dW)FtA-sJ@]4uHJ!AFk[0oe7(6:f,Tn<[3GN8]Ar'rJm-&`6%qO5f&lhJJD+r7h;5=mS40qqITA=;?35IiU&W-k.u9LCu>_04G*=f_h5.J#Agq/N$.b@a,Pfch/di1j/'\nO9O5Sdn;=hiIPd2b1Y_SD9,a4S-[+<"n3Zjqa]dp"?iEM'W7&RU;TW!@6Qi'oB(@]Wl`Xa7kjoDj#7alT20D7>fUW<UE?RfK^1l9;;Hhq@gU8IQSX:6T%Bn`/&@n3%`S%160FKVnJbnM38$k-F.Jsc1+'\45Uqr.^f#6EM%Z&==ZMrkD1rQ1I4'=a,5?U\";,E&cPKt5#hl>#-PLM9n&^1-g+.2"$Wj9B=Xr?o+VO<5f2[hR-uDCM;<!mfH\)D!TY3J^@:NYAGc\S2pRu(HC>#0f2semWcZ60&>b:oal1Zur$b;f7J*=;l-&XZ9_-@dcXtYQ0Hrsp*:?PQU9]#n);kci`6@[nsrX<.KV'40f&[&Ek/#X2#-d*%<%__Ni=Wap&_,oR&=70\7</!o`F%D*CP)H#l2M?ZhPGNfHMDj#IA!Kf5nC$d_"8hrYl2)ee$Ve^Ok7JGMKAd:ioH[I(lC>miT#FGKA-FmBgN.;D[TA9lcLDKuV]]5fYGSLmfjKs,-N8XY?a3"F@T%i41u^7N@O=e!j]$eBL86!8/=$0$[Fg;7iEnT!SnABKR'\utl]bEu;63%3A(HOXoX,AjO\/t"Y#g`l.sQJ3cRpc!Mh9:E24U$T^g]8MUSiWIVGPZA,kL(XQ(hG&9@(CN!iRB7^oaPd9*CjCA0r>(W>]q57CosZBo)tt.'655o(IiEljfb_6g5Q1e>W#8\'$?.+mW%tp7S:*RFpe-8NO/q*2_,.@i"j!(M'4]W7u=f6&48b@g,r/c_n0+i_X90eD#iE7rJ2+@A`s=OT43@3^ZUsi>N>cUdN$-_3pF#j!?<5$^j%+ebqpsBj_nEN_HSmD;C%l[EL6dVf+Q53@PbR+]G10ap!s1eY:``<)*Ee%<[se8@e(Ng0!/'_^7d/RV0/dOuJ`P#3#jKM9OC[a].?3=BGs+A3m1N<%D!dZ$&a^LuTgo-)aFt/=)V@F0+M'6C6;XLpR$I@`lG;5@Hi+QCes1hh.Jh1-Eeo6UkOs2.a,B4<n!d]g9q.a*B8scWX:%l+J!l18X/JmX#,9PKD4WZ'og^X4q*W[4'7i+)h7QKY1X+f@_dM^jgo1.)eO>f*V+u\'%P1\a=C/)T(otaAh`LSht\nbMi!E1q6gPr6!FTXC40qhQTqJs!912.]H@PZ5dQpfi3"Wn`Jms<"cOc'Lb]O,-%SfXrtH4/'@@%43Xp%f5I99*kD#h0Mm(Jn-'$=rA2IZHX0C2c_c8I*W"r_N4D8)B%4T_i550@96,+94I6Ek7@hbe&%J:HXk_2(lTYIO1IZ7MU\Jd<(d2SGN+br12+M1JC-&6AfZ7u??31-u0XV@8GS7j)H=hn+cZL?%1M2\H40[/537A&7.cX7#qkrC>;It?-EfmN^E)BFbF43O_L'=JGQ6s)-HKOm-,%L@*0'5X\6cKW'S/MV3QZ7_Aajl^I4/0R*;X`(+fN7@ph$`l\JO0maiNR;8$J2oAs1?G^b(_?;/<dJ-r5%1kDr;$+5?QfQD7g*R`t]=sdeCXRasQ]M[9*ID&Sl'(>5g11O))#5Lt[Qu%/k@8l!9aO\F2S,BK/-L(Q!3*XT~>endstream
644+Gb!#\D/\/e&H3^ns5@!dW)FtAhBd*4encdmAOVo2(^_)c.-Y9CO[Oo!l=Re[7nU5UFR`"t$qYt7MFcU!8'a?2UB<FQ3p(?a!PFi9lO*q;(FD.%^?*8n&q6;i+5IqZ3W7SYL+!<Y4!)F!kP48].tK\s'iPIG.jip=O_oi1g$oY+kcA5q0ha&(&4!>KO7iGtN6Y'C-(ORiMk<aPnd-YH9[#`9$0sU;IqVq3L9VJ:JYUK*PBe;p2::Z_Q'd-^+KuG+YuZs$8/;cDWo5i68(,<A'P7EO5)#eKEJ\nX"@>t<RNi)=c]DU37i;uLdhBEn6[*f[Q8D'>/IQ\c4gDH1X:ndr?lT:IA=,_^W/<Gk@[9\X'$GZKZ@d2PZ/S,JGi9"L"3.76RR>*D[N[Vt.X2D#M5$S9:U\+Gj(L]oI7je!O,Yi6/b^-e&O_E;_+lo:Ou2%cE;JkMm37`Ul1!NH-2KSA.<"Ws!nECX9aZ;\P[RIfPt&)#MAmS=e")`InI&dX;]Ca@\3u,(7PKi5Qft#/m$T.cll@_)-X\-WT>3_6^\;ru+RktTHNr@%$/Dk"@UE!Brc><h^`G^kFm^geJ*[^1R+J9?;+k;-RoGTAWO=5f3-k>"@bD5=)F&dgmOno3r/NgY+$+H!MSn*QliF5pX(ni`s7lBd*i6"-"lE>65/Mt_gQ4*pd&uBGU/5q-5,S)X<bFgaCq+f;.f:/J[8K:ng`fu>'f3hu%^K>d5^.WIed$#7n7;i[/,+%tA:nU48k=fFY3[MB$)lK.=UI]9BMkTZRk3IBM\h(_@!<.<hUB<38;DS@&Q==Y0eB$8LcQ&!<65cR/.sJpU&bqnonD.]*E>4;9729J>7eN`<n#mbCcJ]fnG\'$[oalg0r_uS\mu,3I)^:X`i(F%"d4TgZXiS:'kgcE*WOOhdo:HDBm<gi)3'`j>.7**>KIM(/9jg`dUUPp.agrr0@/n=\H23&@P`B<B;W#`(f&3:.3K9A2"ZT7T&+(22fd`3&KJoD[Y-HHk:PoKN+JW>^;%k$=\FqG9jek`J1kYI'<JqJ@4/\TGX1M/a&FJ;FL94C4_i%Ce@bTRH!@1YpM9t\Z;c<IXms[fn-c;<6Kt7_a(="XT*AP-hRmR!(5G#M:VE;9fC]XR+HC=X*g-K[75dM%11:MfJYYZX$c/6nC6K\TR>&^_4oFLsE_HpH9D;?IMUp?V[&[VIkQO+XOHcPG8@Za&DCHAm[RQ1$>uEZ`d!M_AO3iXflY$sGCm&mr$l(9bW?n`d]*7tB'PF/]\fj'e9>3(q7`g6K'e!.bRa'Qd.3hU"Qjos!Jn39d.P.imdh^Zp=$.qSj\=%7oN,-,MZ.pQaVsMNDo6j_C,/[cX\"_AqAm[UbQKZ88]k'Z2i9OJ*PJuDF[kiKc$KJidcnlQ[[Kq;X(_lAMH>,dHX+?V/oEW2DEhuXmJ$u;TaWHc?R=c0@JC8B7u%GgiOd-(Yf31jK`6%+*?BW#LL3'qdMd:Ji!jGm^D:rb>A?o6<[+Xi\t,@+]K,cuD2Hc_&P8AT'@2E4\V0#bXsq9Sm4d?>?2luAL+9uOcqoa>/_DKL?Sf\AdsFK63Mq"eL\+qBLg5bUI<.o07dE,'Q`G=0CZQtK:,`O%Y@d[]XH17Agg"?a49aCb%1.h_YcekB]?'rEECF`ZB=X.-WW-<3+#[T=Z"&K]DU$F44M&s0S``1]BfJ<Q(BI9<&c~>endstream
645 endobj
646 % 'R151': class PDFStream
647 151 0 obj
648 % page stream
649 << /Filter [ /ASCII85Decode
650 /FlateDecode ]
651- /Length 1800 >>
652+ /Length 1711 >>
653 stream
654-Gatm<hf%7-&:P.Os5E[Ug"BWLqI*UrYQ/Of@KfXPCL$5F09gRe\PT(O;K9CbIRhPHmC'H8f*N#,13n*Apt^.<ntAjo^AFD^!3[bhqp#F2JB85taGXGH%rWiI=.c\"r:Sc@%&:YSlc8%Qp0:u'r(uBHPrUW)ZNjO:l`7a(>0a=TaIqGcn7%dGjBqtm[3+/LpX"=5R+Ca=$WWXBQJAOOH?fUVIphiJoDR9"m\@K4SEesl)ul[]s3I&N<C5pO&1diJ&O;6%@#5b?#n2DOrsL)&n-An,X\91fF+MB,$jL$[0p$p717UX2ZK8Ho;9X?J1AT/doVMdD^[DV-N?]Da6>P;?$8RlI3<@&,<t_kh\XZH6NeT9IrG<CD^H-IM?25`2i:^GMbd/?LJO-cU)Gfk@6WrLhS?pso_0U)[='>4@NI2\aE9P8&;4L1B2i>o)-'ge=6E6h.+rK^`T<-8T$7_%g:TZ@)UV.Mi7q+sHS;Y<.4r=HoTC/?2=<G/+@2m67_Z_t=2&HL]^+/6g+='Qi^a(4c@=kEHN27kUBM^L`KB87SbZIWpC%H+DhqK]ZI@HnAKclc7>?H^bCrHMXbk"/oAR:pp)@POY3R5-`Jf,B'ItsgT+I.=?XF0/(!%SBc9=h$\od75\B#,Ga7[n%VhI%*)-(ch!rC>rBi,?!K>kT:2,lb7@$*f"U:*+).mQcA9M(%1t)gl]JGN'?.QD;?1COTTiWj)9F?a:McO'!c2N<+Gph"'BUdQ9q_Wtu.!-ceBS0gcNM)(ip+A@$r'm&dtK0oJpU/>43Y6<1mWYImo!N5>r0^""d%AKPZsV?BL`!@BlJkWtmo7W"SP(rVcB!(8EH,aD.UD,fpG[tlC;"`]CNpUS$"j)INH"Z>2s<Tq5cBt)GFfa:=_T.]bk6(t*Z5WHo(EjfTLrgb'jaUbj1EtLZr#msD^OhIR2gE;?mj4!gN(m<]+riHsJ?T.1<&?QOch]EAEeDH#R6PZ8%F4C+p4LYYcd;Vb2,P?$B%DRhB`%"FIb-iZs)G.,@L.d])4=Bs1!C@g#<@,VdRSCEnm3nV4l!eu!_8N/gIORggS?=aW7k6um@BIA7eEr)<N[6)gP<D2,N'\6b9.i$.e:8l_<OF7I:J[4MU_FNR:0E.4WTtL;V5?I>4YmRHo970tk)"k71c=^$j@pY7e`M*ErSYP%DjacaDZ2jM+a#(I'_Vp-'(2'S+3ITCT.?-T236q^C:IJQ:@DIq_.+-Dl:.pU<N`fMalU?c",pk2W4bsQG4_q]=C6UW.(H-\[l)BNb0X!(dEOPB:V3_C3iD$YL@*cA-TJ$r*/-]I_*DgO6R%>]9.&-@8.<NTDMej;dnYR(&7)R`3rA^2pjt(orN`6X_/TVCq]?8C7DOu^"82Xjjll?R.Vd8-*-25'oZDWcK`g[42D84<T_b`E[7KQ=[\W)p'KBf8E`Lj\@:pOHfVo1FWCkboe>9pu3Q[<1UW/%arh@D]/Pk*Fiu<R"p!hG^(GnP.<49/T>I&"PCH=j8IPdY-nWFkiFeEl[e`Z?/.!NV49B'W?4]9IdV,)8@A"3(i=gP-7Z.eH)24cFjosCM^;.F,%N=AaSk1Zb#&KEHncgI3Lf5l.[B?p[0:iEU:Q1=P^Yh?ase<BZ]ZD-s%&d"'\I'q*]@o%'`T('@=*5I=g[@5t#gV'<i_=,!;PelJcjUQj@ZQ+tV3Cb(W2K'Aie\cb/LbiKB!P)ulB6P%XhKV!smb?BpjIiQL+;W>Km2D+pB><;gdl\Cl_8ob_583Ork:<e*`.i/IFC$#)HP2'?*?))arW<S:[iP~>endstream
655+Gb!#\?#SIU'R^LRs)@_:e_(q]P-#75:JK62):B[$?0oPG5Y5$8(Pu*Zb&6q=G:D4Nh(8,uWRqj9M.MkEnD&(L8/k%jCKKt%#&l_XX*6JS%a5Qi-e8E4\+"QaIeJ#8AoG]c!Vig5NIkk0F3`+G]dke!7E2^Spl6*Ur+o=A/JdM^[,?,afE3XS=[j0S#`O>MI(k<NHls]Q1+G'oRV=AX-s^esQsX+6ljoJ3?X`a&)2u\YE__<CC/DEq.,Lan.Cd.krJ`B!>Ifji\ACR@r*qeoa0d7lK!9ma\ZeSip[u%`/\,QX_=K\f+<F&hJ&fHCM/\Nd/G(M%_*G65k07ZAo^`Hn_77RJ'G\^1(5,KQZWmh[!"m3`kUZZgJCinW<#V:SaDTS.f!o>Q@5BCo3b*G1+*bd@oHu(u#&c/5ikl']=^K0LD<YA]>ei3d%p2s$lqCY7kfl6p7uRbf1-$F)9U#:k&at\Gs$O_N[b#$-2Dc+ar=<TbpR`G,rR9[/?N7jQ%2KU-m4>c]IC^8&:0B*+Zn.lK!2L=2.3X4t.)EcRP5kfI48Nb;`cajJ1c!KQ/5g:Sl2%;Np&qK++_"p"e1o4X'BaJ^IKe!KiuO*!0/bsOVJP-,\9\rfjYdm`^gPO!`_(MiTdV]#Q*IB6c=ZPgPB$EB,L91[VSOm8*`&*E)bGD=!Xg+`+d,0S&@Ab$4Y,Oa#tdh0h]0Vn9b/q"B-JKYSXH]h7+"uAc*eQ0FuV["SoW(QJX/R[.jIgN$UU9$^]Xh#AgreLeP1TgTE`RC9h8AUdqSA1N?<$Ce%DPUjXJTiRDK:V@S<""_*#n>1s2j$;diE>-GqQ>&!68peP?aB)MAfkUrjEb.8X#DYU2SO=)W\+TU3=McegoBnchh]]ASUDVZ03B(ArpL=VX(*!m*V8HpGp7Q)VAP7_OBbobp\,ZOQ\A5Lkdd5d1YIIWimf$<cMG+*sh"-bCt]_,YPAhiP8tp`S,DU@d!tP*Sb_3iOi'8GNT%acOP78?K^I@u[ogANs]KJP]!BV?Xd4ZK=@fa_9+4U,Vn+`US_PXuVUW&\r?]"%1.piTOB=)[FhU.f`.6XsqOae72A)A9]tjLBonSM:_a^Ge"i]hr.tjb#b_cXlk=A-/p=%?AIRZbG7t](a:HODI^+Un=e1^0hj^!/m8S/g;t(D7h!9Y5>'&->>tP'-2UR;6_3SXgL`+5BZ!sFI6/upj1J\J5YeGqidYFh.cC*<:9Z>CE,*(.bb<6YRkj@;Pt&pJOO1fjP$(9=b5d26TufoiRqsu)fN5dS&#/1`_Lbo*CA9fe>ZKn9-H"5e[#D98_2>PQ"/Rsm@TkEF";E@[AWF"W,*m!JW2$+jc1/e:G4A%d.3Vb)bE3ukj,mj"F=';GkO)+QlSMBu>bJ6FQN_<m86'N\&WOgo-[VW<JoQ2?.sB9P@dej_Hb\).X&rBs=JCVMH0c<Ip3q!A]m"l6*ub2WFl\Ej=nNP1E*7.TJalhC[FZRjNkXd!2@_D_;m*(N4USMg)/>EKH*2]^*upK+h503)J"^Ft.6XdiVumr/9h1VU4'^Ke"XZ\ZmV^a*!*&g)&;'2M`qTIjm8k+OA(l6O&aaD<U%\smrUZqVe3`:%]?A(CG;jK%$(Wrpe,)f,c(6m.C[/Iei>Mss##lK&/:*tR\%d`t/T5N'12n6`L46PYk#i$5%r=6,FXpd@P>GDm1J)[NraO>qIeFS"HPA7~>endstream
656 endobj
657 % 'R152': class PDFStream
658 152 0 obj
659 % page stream
660 << /Filter [ /ASCII85Decode
661 /FlateDecode ]
662- /Length 2062 >>
663+ /Length 1761 >>
664 stream
665-Gb!;dIrF=9&H+gk^;K01.ceN.R%L5jOcm>O3pCt5?"d$!OK-9+lj[a6j'@Ge:Z%SJ0b=u-cpVU^.06b:oChRqRi,IEi3-qrqD#eI#gS/W\4mf7_/28N(k%."UZ8-(j!2$<g[h)ioUN)9pMeIKd8*g]T;jGS`phoDAaK2j@@(TbnIZ[EmW1O)p)LFZUQ6I@jMGt#nk]GdEDL"b"/E?E]CYW8d/;Hdpq7Qs:50t:1TjNnV]2\Fp+5)7k-&!nh3R(a(Nold,@U"V@h/8Jr.p2?>glqQl]AE2-`2n7Kabu!5OZP>mJ!0kF7HWK'qbdWNbaK'5l#\a&==%Z!GsTSKIbIlLZ,Y3k)7\$jDeA-ZBp;`heBhF%GrsM3;@bg2h;AkHtO/-#ZP[AD*oFJQmcg)YBL*7[%AH&H\j21/-Eo]30abh01i;Fo4.N/P"$$]Pc8q[i;klbcD?8>,r?'N/rb*'q&PeEKf7Z<NNLlZIN7h<WQ>!h-"#bjiS!.I9(k'kE"<;R^=.LpWc&l@#cZ0YOL,.s.hb,%0q!)%:%U7VG<B$&XOEr?;C7P$)5i_K+:LpZJ7ig$^@:r=K;L'A$nu0UgNgAjf6r@?,d+&#OPT00%[+'r$/'1a'pLH5+m'KbL)WHUR)]/OipUI7m2RAUY"'6*;;)CK)ApK2]ED_8*!d)*&nI+m"5hP=MXWUW"q6u@g6otpScM2/=_OiIYU%$URQO74o:d0%;XL$p"pDKdOhr'R%C&Op\r1]mCEARX1Z.AamW6]c@G\c3$=VE"+-iN\9UOsp`kK'"A&:DkL0hU8[sJ@Yia-eiRh'nhY["goW*(kj'Mj3L6e\(5,jf<#hFB+'9*(IN71i!^m3luA`m]*<ThRqT2A<e;Yd,G)a-(e"(@=rPl]h9U.P+GqKj2Dd8X[bPkc5>>[A\$S.(qeF1"#FECc>P$&:Gl<qOjk=nd_$o?9T`@Sc/u9m=VaSaHbL)#A6C7LGAA0"9u8mVb"F1'1[q:_^6o;lg&B>/D&H^($(NB5d1]lh-NPImF/Dr'5.?\N"u'A8!19?G,-g,(uC%4gf=n];lmDua<W]Lf8G=#d]C\[nu^J`)do`:K"Cqf19;c<QRpo4,0b76Sh]6!bW\5MSm3fq!-E[Ah)5@_E$q$+bDT`D\%kP4Ld7ti/']W)C_i$blljVuJ7A]Tl71^o?*>"jZ:4VBU:ld0^d=PblS.KL2N=]_jqI'Yb%SGV5kns?_4N34Qn:QK_B:u22i"pt&ZP#"AO0>P=1DuR#+!bYD:TQZ2<k\Ne7\N.]6jEqHjYMB3J?27TuJrj5FL?f0L*>V)m4Ur_]3#]'%[uS@\ke7iN%&t+AjQk(,Ep^5V-8[e+NL\^1]W/hZ=LRXVSTuCJVK2KUUQ3r<F5CGJ-6:G9V]qN`g\$%XGKLoXapAaRbuG@$n3d@slR<&uit^WfMm[UaYfA(1C+b"UntbO17F7JHNZR=qkR"NJ+JUpeFNb%_aFS5o&8,6-ki)0`_IN'WTA>B\HcO`X'$kL/A5ojhOd^Ti?\*__Pg#g<$A!ZAGsB)0"A)15`\EnSAB9&;YW5SJK.'^T8HWDZ0G^\`;=8:GW_ef#rMgQ+$2PT#IZ[/Jm%4NnW0Zilu*B!^nMZZmq4Z9Ut@'V0(Kg"sh6k\Yb;s$!OA:K*Ec:`ORZud'?VlU]^?]F<N05*1Mjg+U+^F;,X':pi(jkS[)%f[RX>2/Am++[r/D;6qY*/2*jDBfXduDq<QiEC*Ip6:tr?T.#ehqnhc]=PSMCb&Z<jNd1H*h1r8tNd4*WA)cAJp>q7@UCHD)kMV$^tGs`Yu8r9l?WpjIE9=l(HaQ[lR"G\N5f>:n5qeqiS.%J8WEUE>VqVtsp^(0lkW#V&&rh*D=>SHslS[QP9F]b_]4S%`A":/GVMTS<)72VG``j5Kt+"r'Kn<P>J>tWGrYQ\p^If%o*IeUL@s1KcOqW/N%Vu\le;D`i7'=bRKK\&$A)0Mb@f%5)SRr,(\m;t:(Ckrp.8.:"d$TF"iL$*J/LnW:63R+/'<'HLb^#?$V\PBVL^I,53Y0\Bd=qAmfa%-.0X_)@P~>endstream
666+Gb!;dhf%LD&:T\)s']4`8B(D/%G4oSUu\\X:-+ro$WU2`Qc1$4/cJ&KlO`pEG@k\c8-0Ki4Hq7EQee(_De?_O>oUBIB:JW<"h5Vk`u>t6#KAR(HWCZshr*,Vq:Y`BR9e/3I.6u\X6U:E>'#/ddqsZB]L[b-(uC-:S=arKe06q<,Ct$5_t%6+P(Gmm/DoXRDp\KR#c6Ghmn:k+/3[@Tphq#LD"R`+>]kPCZ^bN*gHO9H@'/;?<e$I6W+25aTQ<ZC*'n=)TiV)]Q0Atj=HMmJ&;sY55[g<sSuL#hcF-D8KF1*_df6>1Ko&,(?lUE8;!>3X#r2mO1.3NEP"K4Mo,8Ja/jX1mJndf55=o"3$L)-lXWSB7;_;+k=Q";O/6B1b#kB_qZ"-GB8ec$3Q[t/oRQY&UQ.;u3WaUpt:nS1.bTWU0=RS2@27$J%WN?Y%P<j#\#6erO6c_&]6maD>\?5^b+uhbDcXmULFa88Sqgf>)@[3;6C0Wr::G/*t:Sq;553b_OF^6=#C=RVgb<B?oF2AjieMRQhh2C,t$TBj#\2h'2J&:i4<q":RPr4:U!u$HR[_cS+W?\H2K/*`\(C(T*m9,'Om;WB8,C:g*/;Gnib*5R2S="F;D*WI(%!u[`D[oEBVMbeHK.qCCT[;LKr)lQb=]lO,#ss0*PNba)O:oel8LR#lj\!]]m5:t(llJs,#D&k-X91q%\k'o\6Ql'7rpd8*)^HcjTZEH;Zg?SZ,`[Ti%GdmmU?..5+#&8!pj'cAYM1u!*ZrE-EN1e/6E)<gdJ#abN0NY!'M_#2n1%C%OHPEm:g?,m.T!M[i'AV7RV:^.83TjiWNGOV:pqg0)-$r;8]B5%\tVO-jmY?3\Y_trPSP0j2S\Y:S`@@M9JY2*;o!R3r^dgtrrCgHh038HFjG-870JlhqCJu2+R4CP,VlTPDI[%-]eW0!ha:Mrnk9E\p2DTdGAm[/4Z.bfV:)$I<GX]C_-L,QWfZJp$Da7HUYi+eoLlN6Q>2M_;T1YAKGLA/7ddFK^J[p17Ed=bCAQST#FslchLUCGf&gOUFC6R4Nk,IDjk.Vod+]@^[sJ0,*^kdfq1:Cgjl1=bbo3Rc)Z<GOiXAVU[+u"9N^X`6">\"t'h3!,W9r;WO6=2DRn-@m-[\9hF[L*RV>^d+["iAa()Y,\1dDWh^*$HOata8@^*[8IP:GZ*o9k<HlZdns3puJXU5t>$lD1HA3%(5dh``FT@=Me,rNj2LXNL6=_8dL`gLH4Y_k:;nJm_Bme4SfO&lTBndIm%LWTU_=4=h.nB#.+br9bocms!Y-m+D1OTae8n!?^ZrY2c%H7Z]juP\2J$3DO>kA6N_3]pj\Nd]E'j_&'689*5Ft2rsYsL?7](7/K?I6H'l`Hb&.hQLcS&XfF;^5g!<\D%!"f#:U:q^A89?@i4eO"3C.RK3<hhahfcd4Y-pKl.A87H6+81f@uRN9p,F<S,4.r,9f1:G$p.YPK$j@bGin<A2LhDP_%[ln5ip_.TRZJWQ@9u&&M60R+ZSL(L^7uT3S#p(`?-tm<NpJd-Xs-lHC>?&!,l=j8qfG98HF9VC$0-C!@aa0L)9<>H.dg,HN$H,]4!Q-#-j>,01S$b*%.gJORY:0U1n,0B(W0f%fDu@!Bk4T!Q/SHf@-5!H2'^KZS_n&oiMO'2uEPr<bc.L'<ds;peBApP;\$KDo7_``A6Xp^7\X7C4?dX#/F&64/.][2dL`WlGa^gX>3Y[P\nhq[B7]Q6_(:Ha[WJ5Pl8SHBCo~>endstream
667 endobj
668 % 'R153': class PDFStream
669 153 0 obj
670 % page stream
671 << /Filter [ /ASCII85Decode
672 /FlateDecode ]
673- /Length 2007 >>
674+ /Length 2136 >>
675 stream
676-Gau`T?#SIU'R^LRs);>"3/+A9Z6e0+qN,=6)P@JDe6O0Y+eU.8@O%"m8B(+JrU-NCcQr4S\X89ZQ;$ijSpTnaPrra?5L9=gF+=c'G^&+tkJL[9?J"S]i%oa#*$<uY+*l,`W!?02\F!V;LNAK:I_%0-=Htm&L*tTSAB.2W41(Lt+5qh.,)4j)6&ksIkgB5i])E,?KTC[1a`XR(B4o5K@T44/D!<]u,g3ai^bV$+_r"fMadn+N\GdhN0S3l\D/JX+iT\[d0_c-12\u/V:S;pdY.lW3YID:gX^aRg&n"NIFC91VE'h'1^aQum^f6[8$nE^\BL&*BnbIaj4Xd_;;KoUZRN'+fHTQ&CdJ'1_H#5K&*)"28<04&gb.0nW6:oPFQ(/7Y\&&FJJ_N77)07BXWTgWt/6#[;<);0<p)!_O]ZecRIL4;C1h!o/Q=$HN4C_Os(#X#3fKhm_m4Zm0+HK:-^Ihkg5N%;B&nb`"/^:W,oC_D'g"#$@0CSr=bB`^ADRrag^:1jb45n#4Bh&F#k;b7Ccdfq'R7^5B`!(?>'(l/$20sL:Jg`[QXj.f`$EDs;Oko:.6@XKurW"R^d/dNqbr5PDf@iMWVfPB:r?CeVj,d?1&T=dcidmFB]EDJ`j[d["Tss(QH3ZCXF-^BRPjs5j9=o7994_dHKE,3f`1Wt=2c-13R_WsOSW[m??"1D&fQ`22H4`SmGL=<?Oi#FA6EB1$.Lh,S1GNo?l;=$c49cbnh1aaFDriIJ1;8>!.?L4;/=cUNanTU=-Hln<Q&M\9/1lS(_U]-Z$!Nf6IrdlB>ha^%aSK?nZ>TEP*=C7!O3J-ao7_E/[L0smb6RGh)5jKV*hA]T'o>MQP`&+J*0G`WQQlH?DsVKf5Noh]!50e.J_raCoR^==Guj-/H9pV._WS9],1`;0V#T"@0+Ek/W=;BbP@6AVX^EqbW*R[@@T.IF>7b9u.BSJS#E3Sn!^ISJ:no7MBR&3tQ3`,bVj2&oSuu8#\/7JH90U1>4>c@Oh^a\Wr$.2h=o%.F%KdoF]\3#]J$QmtnYTQL2JfYWWSI]DfQ:eKDW1lhUCMt<$&iK#R;SCh]]=1(JC3HR#HJhM0B6OEYpq%QEUd`miY6")_HlDJ:%gEO:5k8Em:$1PW52MqZ/m]Vc*[aKYrt$)DW[P?R`1pdRM3mR4Y+p(:j)J@Po!t0Da?G<iQfrh,\eUC`/B$U_6M6eN9=HfSL;o*d[s97Pu/isWiUERPb;`H=P6J5HGgsUfi1"J)aKolSn0ccNR#XSb[Q21KM4dm;SYt#;d>W;Ul,qBVQ;1*B'i`<f<FOn'j,'.2n[WLXQ^]tV(q5%,f6nk]7u<F86)TT3GXjMVuO%`('Eegii2V;1hq4!rB(s7,@bl99Kk/t&qEVJ'X;S[,]8iRY2X``?2Tsh"97W0LfM=PPa,?cY<+VS?>&NI>>>VlErBX!m08Ee:"RES8[9X9R(isX!b"Gr@*RZZ)[`0=67ljecr6nse5/_&1L(bF9!>D%Ei7*.,2'ck\12K;2FEI+YGX)GV)@AqJX&Q%RTr0*'Yu,-X>'%/?&n?+\^N$8/mPOZ:P:>U2PW/1-)IiUQE)77'I*ZH>]\47HP+^*![?UIg5K2d/^ULI,[lXT6iD[JpMDu"68^2pJXQdjNl=qu[W""1k3'<M)pPT1ZhW@I3=PciIaaO1:lb_XBSNWo:RjoD%[IH0XUqE]/C%O6W9:piL#+/a:O$P24_rlkf;B1;#Y@Dl44=8MZHh-tG]3@FBWDme5\Cp*!hBTFMpc49[[qg4%C_NmI41j!<.u-5`aSn+`taK5<;F[)C]96UIQKpR/)'p'M'FX-X^.@ZgFbYss6!Gs4kn6M$"M$)`!8"'cI#D4aV:@U_7mSLJCh4_DuKL4gQ_c$%oL)K.i76QDQMfGAg9:I^-iiuZ1_bAAumMh]7/B!LI&Ga`gUV:`Jk3?heekrZB!_Q)p'8m40B[YQ(!%;Hs)BhpH1ACmDGr`E_W.[#rX[Na%-.0[!4*#~>endstream
677+Gb!#\D,91O&H7^.Ii,;0U9$[qqVIM4^qOcC["gX)hL;u+OH[26_6L>Oe!Kt)2rc/8V,4UI?0R6"RWL[`bVLpGfS9\1q<ia"!5'Djl%KXs'8C#dg\!H55JsDXiPE"@"2C)foqC"%e/S?P+4hJRr,S@uZ-Eto/W[&;`XWLt:,JF[*hYiLBqsO?@=e\EcmSd?HN"=1^e_nh&5')"W+NOZHZ.f9\nlKdmML]Q0RW1Or3:gJh5E8V`R3s'Jb7NEN+tsPUr,=RatbKS!b4$[-DTVg0RS?Rj4b6F>@bnFOb(u>5*AMR.pu2sGcEPM=\tG/W0>[:9>R#X]kE_k[7!NqjA/$Wi93)qp%BUMcarT>U#1?NJ;]@4I&=4T5U&K!pH5eeB!F66Qn`'EL`$:Git03mI,IjB^).nWY^f<bdTD1"%UV69F3:=SGuS3Y3I4j86CJ3;@l7LEClDm`JZ/nfDHSC8*(O!F,S9RDEXub%AkZWhBjn7,UrEJXkuGZA1#es.7&L<2b73Yi0Q:d?!]gW5J6#a3H-Ul;eWa\^`gKSfg5A'Ya!WK"&D<sA92\o-0#DcE0]Jhd/S#1h,*b0''l"*iV^?")\U/$VEa5%PWX,:p)d:NSRqHD+MMK&%X:s)7oaL*#oe?V\"dO-4M+.h+CNu^)Q3l9#O7u=B[!O<_F&f!@$lpppmQu+C,mHgDaQEU9Wat'\[uH)]eg%U'UUBY8`[HmhM8D&WA&&Ea8]j@me:pjD=ib9plNR*'K@Gip[p"[QQCND'ijC^`hU'T);K<:GNI_Bc]c")r.6<mVRAlr4g_'"iA%A,GH1>`NH[gMAl"m3QK/oGR%?sb?17;XI&`tQ=!fgR+K>gI'1V_4'KFkR_/1neF9ObV6=Z51:oA[@^DmZ="DU99.lJ9-2Bkl!GMQS`u?^t2/L!;Xd4b`.\9c6jS/3gb`o^F&B_W%%]_?qX5f>bBTYP%Q`&'aML*?3`@D='HCYkV.K^1msn7(A;VAY9]*P$+l).R1k^*FH:ha8M'tNO=5F]//+9&Du="W.n%-<L2?kh06W#=o-P%YL@6iG+H=.;<?5C6&-[pR:Z3[g#ETd:]-Q)WR-0@$-m]NNV;eNr$"9G>SA^D_KHjOK?!=N])VD9pH#p!ktYm103;N,YD/Z5T)J=@Sf8b`YN89dgXnYtpO?po[l\s'cP8/P:\;#'-<J/`kuC2VNSS[J-SXP(J&5<MVc:>U,N"V(%KHG^;mcDW4a,A`[c'spgIZ)Or-c$#><tbj89/F`M//QiiQ6o$Sp7tVD97$W2VW4o\pJ@m+./9L4F@YkmH-T:C,qC&&HjiP),:SD'IZaOi4+)e'#1ikoUgla5gPG7a5\835+@3(g(_1E).0J,_Cf5dX,tKBd=O0)E&C#3$B@C2*uo\#*+pEUYMi18*aV:dDsd@R_G#i>aplnmKp[p9.:V>jP^?)XZ-L"m\+&2"i"Z?F-^(\$;'`oe(U%tT6'LT;fA/=5r*K+$IYTbk<THKjASN:8Mc1Ran;:79`7?GlDA8dfMW<r'AB*VnLM.r&_mg&^1QAr'"8ci!,OlEY@lLS,o+Ti%;ZI(r6T90V"!oTrQ:8Z"n4@[ehknskj&1DL.mCdo9M>?3I;\O"5:;jfENd/!d%Hm)$brTe_nf^MV-:2`Wj0sVF+Po)F;VRm5]6(>24t0^GT(IiauRc)pmQ`\ip).rNa5HOYq7>+<*kOQ$_=%o-=0>l>$;%u.!IcC"C"]3.qDn1i0[X/)Q]+h\[>kVp8H&81b+_Q_T:**7,R6@K*4N#"$O)l'2Y:j\2X"5L^"0jiR0B'ET//Xi]`]KDhD5;F^S[L9<)NlB8(Q1'XT.uO8LH&!tJ2JB$+>!!--;oPQbBGSWgsYKbb7+'o<K#!@'I[;(_`;%l&s]/58,omFg8I?ki]8);U0PSs^5BXMU-iipMXWXh_)JUFO\PAt`CmRHQ8_hJF++%jb#6cX*$a?K'4b['P_A))='\VG7+D*DsbhHW'&U^O1uQeQptdD@?As]A%1'2nP.I8$<64_4]FgZ%^\Fh"L6*"`Sp=#rd6j8ZfieeW3b?S*g'FgZbm,=PI<#j?^r*LF;jr@G*;7-.$A7lHPpL<5+Q8]4S+sa7DmSc+qWI26kNn4E28L&,l`aVd"l~>endstream
678 endobj
679 % 'R154': class PDFStream
680 154 0 obj
681 % page stream
682 << /Filter [ /ASCII85Decode
683 /FlateDecode ]
684- /Length 1789 >>
685+ /Length 1870 >>
686 stream
687-Gb!#\?#SFf'Rc%,s)>Hq.We*bgDC$XqN,7*W`ujQ[d<]6dV:H<9X-`kAmBpgqqq.l(e@1:o-(+\;#gdGSNFmTgj?1+o'm[/f-DTPkgSj85X@s>&I":5;85V&rR6tbe!"0bD6$C5YjKEs:)dtD:O^#YHmD_3N8_ZiVV(-imk.W#dh;jhXUEhs[QHt'YXaW*G)Nf\[QE!MDS7BbF#m6?IR\?GB#:M\h$(&ZHH$RmL#t`83F.Fq2.'8]1\H5@qc>$?oI!mb)Y-i9\712j$W?aq2Ft@dQ,k+T-;7hi"F8=7l4s,VT4rWA(Z(E8/0Bas]Sc'M?N0s'DgIb:#8AqkCF'Xs26M:'-R4K2bjLRt]O32Jo43aI]N#LNhOe06(Greu^A.M7_6VuV2o2h7%f(p8MTp'SR\upMQZ"AJO#nB.hfo)i]M@D4h7KZJP(k_@17jsJ-#F>m\9V5J7Q^1XUVi1u.K:NW8CRr^g'U@:mn[T3dIH47ipfU?.C`WMP'<Q=9+4noKr"t)K]r1tBZoG5c#6=B)Y2Ip%NHd,aM0eIWY:G^8*&'/b-\$=aQ1dLjFV*["ZOdf3hQlaD-L,V!?AN^#n;Qi"=9[++rV1G(T($P!\d`XiNaqdp)mS^MU[G`K8&:V"]>O0oc%?BOUAG!17dBAU`?oo]j<=3Hng_,>Z]+Vff>_\D<5KKd\Oo!TZM)GD70s')Gc:BP14LDcJc7*RFK)g[j:/Mr9B7#"3S\[A]tc`Y7tdVe.^PP"UJkqRuS4=mYWjO,sQ4`O:".f,Po;9WJiV5V5Iclb[,<CiN$c!`g*Tt@1I+ogs?>C5i0%*',iC0W'3f5J:b-AYWXo&ko*\LB0AF6oTmeJ[\=]\:hqQEVh>(;OJdY];jWe=fiCeBA]ph.j[c$tUN`V)Q<384#N()kAWR:aPndmZ1#&@Yg@>/jmJ-'+C'FM#@>F:?8IWH!/J'c!K,ika&6u"dR?F.4f+;&QDK]&dSP'[p:q%1Up-&Sf'a<P.h,[+&pP%Qd9Zu-H<$Te(*bH7`kQrf?k(ZY'BP`2f?dQ>!/4W^[1]YV(a&2r1US%?=61er$l_<,pASTFJ_WF:A/=gLdf0l1l3.T6!?pg4N5h6f7W6g','0%SqN<6l_qu4Ke)mKXP#QS66rsH5CD%n5>D[ShOQY:/@m@P;Vn)9m^(LSIMWcL4#J.;O*fVSPeSZm1NfMuc6GF<WO[T;&YWfq4@No%-,\hV#ZnZ/MSGGnMM*$)A<*D2bSlMT#k'fMN,Tm;?@I%SFGUVf"V<^FoHn@FPJ19s!E&u1oT1T:d6VMAXKnN0YjJ_Z!`]A[cr/X+'rjc@jb.[-M=goKU]D]YFpAk_1MkU3ntAT'nBR\RUf3i5l10aoWaTB:0cs0OYO<d[<C3+dtWM9eo`TCP@?H>ii^Y>2jkFW4V<3-Yq5$)73NW[Z-X=<oD)QLES4BS?7Uk@lKMCdEagEFY+`#20?8P3T&"S'@1f.:Ku_3DZsQ5p]^bm5aYT8(,sZk%5m?q`.JXAas]XgVid7aPOCc##K[Z6aRmd1O'q3_n`+P<mia$VI`i7RC_QSaBErAnPL)E]B'(Si%n._H*[+qM0d9C1+Ci769EY;/:7[q,Vj3Wet<R'oSce)V/fg#LZIID*/86\2Mni!AUJA;^H;e9JV\X]hnY4kO5\",6hgm'ZpJ0.ljNlgp;,Pi9_WXXrJj)2&]tCgg;E+b<_$TZFlI#G).V]5>)'jV:YBt;87(_s*2kW-_HMXF(MW][PWj!O't-sO@eY,em;e2BBFp6M9rBB="7m+?IK~>endstream
688+Gb!#\?#SIU'R_X]s):hCLbj:U,g3Ju?k5u_?sSC/9>1#;09gQiZ_9dJU_<R^mujssgMLKAE4<hQ4tQ<ro%\9s%iKmnYJC+\8q;g3]Y4^q#[p[t&:"kHY2S4#jbnUp^'L$s*@*=p@P:<-$&rqcBNVL!e:UU)_8)(YI?dVC)p<FY21^e)R8cY[e.Xt;17;W1A]e[GLX?nV&M?Rq8t"94h7KGS>nVXun"!GU^)(^`ZC5GWW??b2i.X(of2i&FD#D4ECl4cf=W:\@"s[QRG\+\Q">_r%(jBe6/2O4iUD][kY1Ni[-JF(kKfLqGY-,8TiPA&OMP+a=n?C3MPHbHsQIUjV//CLo=/aMAZO3gc=)cJ"QaI%!.%$P+=Hu5s/#0]j%P#C:Zn*:$X,Y&=Y%N><J-c6g.Q)*3Vo5Gh,;@7ja+B',0L^].E_h5KaFN#!ld3;e6qnd<69_VQ@+VO8roLGS-oRRc$tT2<1TF\'#p.67q7*M[iP2/rK2)@%^)G!Ys,g&@&[2tRAB&#+6]62`VEWW6g4K%-$VG2fl%PXgE,N[d;GXkh27R:Pj1GbXY"S%).rft9AgapU[%cM([15p3NG?5'Qk>N%>_]18H/Q6$!g/:(PSLj]SB/!qRB$S>f.Bb-G&4E*!+%WW@.&TJ@c](-7APMnZ+K=:g<m>]$rT)5)T\BHiJ,FHpcXb5:pSjnpt6rne5^+jXP+9O740^X`F@WU>FEk4r$*\tRWt__j%`#p,dY(X^1;E;9.7gCm:h[UKI:"'V-mKE"eYE?8PUn?.(5ntO/&IHG`n\#DS2ei_O6PtB-7RPN+"OR@NY6$AI,[jcB)L4VU5@#VN'0f8E,YFajX?qmBE:S\1SMgJp\^'?5"FN9Z*pGkdSup\4YCldJ*3m%tDLoW`c!sc]+)*C+D?K\lJg9Ep?W0Wb-kB@s1AgG*Q\F5O.^dQ-Z=A)/T1hgsIO-I4XebpI*>u^DEN2`Vn^#RG/*:amSY!/s5?!Z"Y:"d4g#5SI#eKrgS.[QKjL?>apIll](h6M&MjXb=m31EAkQh=i_5;OqJ:j!G9->^CAm1:P+eR^fgdlR)V;!7EP-iQt.=1XM+K8E&8kXmO>V;:okWID$[0$`gRho!9mr%f=/6gHYR-OTRHtojartU1K[TcJ];S;)eO^Dd*@;O)24W(p5Y6H]faQ,aKF3JBQ@5(7_o\2nT<5`OueWK*I\B`8^2,@2?[<;hk#s[KT$lrA!VXke\S\FY/u7]"/qP+@HLbIpkfHQ)h-EK6Rpe7aRaedRoG6'JC8XhesMrI(4K?1LiLZfl=%'&'b(ikN6(n3al/>>?*pd\5!k>@!qr(Z.+ZHX3P3;J^oq^#[MRd!&R*XM5K3"%L>(*Q#7Hla7G0.;V.F5C3JVS-QYGn(FkQ0gHbK29OKf+46*df5N$N!g<+5:oII6[]CX8&;k`Hs2#I<U4k]R6K@<bD:Hm*$D#C7lUL<uGJ2c#n0\I8]BX4n!An4.G%@5Ks;gM5sATf-#8BfY\<&1#:6L+%?LMmd]E0\SNFO@<M-:V,l(%Z^ok5"GY2V[7n2C9*81C;JC&\&)0gRG.6m/cN"&guV6_X#%&Tb'>,qN#bluCD=5s"b,(trQTmtYu@q6"Mg9"/%Gh!UDR\BV^;[hM71EIrtGmULOV@t!JCACS^XhQ(e!9!/j96E'8/jq]@r8*+fCkmWtdP-p>gg(?L0KuouS3flmD^Lg%U88Q2a5,oH`k!B+Y*@^#La*HN\o3N"8uknJa7m65U,d9r2NtcE4]_-[,l8Dr/A`(9"<"Ckgd`*JKV7N;N-gN32u&cuhtGIE*[=6)nPZTG^`r5O<[S^dVG@-fEJ)>ToZ#j4IYK\63_9om/:J=Z!d=nLp>'KDY~>endstream
689 endobj
690 % 'R155': class PDFStream
691 155 0 obj
692 % page stream
693 << /Filter [ /ASCII85Decode
694 /FlateDecode ]
695- /Length 2417 >>
696+ /Length 2486 >>
697 stream
698-Gau`UD/\/e&H6"/s5AK:Lg)j=-2D[P$aaV2"A$-UEOPsi5>Vu(F-/kUUmh,:muEXnfM1?bE3Q39@Z%f[hECVgOnPK(5JDQc3PbM0]UJ]T#;AfemsBJMS\`A"o4QsP5P+3OUG30H'<a?dN,ai*e[)I/iqYAEd*2+%i/`WL(hPc8*Pn+RNp6-QFKVIOJnne\*h4.ifa8o5Q0)eGJOj2q.q"6%</E.<`<(MeEiMDT8@TFnin0'WK.%.0.>t_@<[;Y/$M+=2s1mtIFGtlNEQnkY;O+]%J3gi4,3C"H87c5:#I>^H4esS2D0W#\QWBPs$3S!IZ/X!s<q$fi9gt1`AX."J5aFm\_ASIA`FC-X5beAk?S`EM+nX\s`RP=P^3pA50;UF)J*I0qBIc;AiQ[@+hHJgL1Oig:UoDCtjMP0M]^n)Iot."_Yg;h)HEOT*<jt]d2[aN#//R")1Wr>sY5&BPI(^6aP(-!>aCs96KnJ1HGojW]0gh:Z=`W#fYF7TmG/\U)5t_WJN=rgd[UQpK15.6F<KS]$kV`cREcoS5$5LO9TmBn?EI0O(MN$9i[c1GU\Y]'hBf:qC3]jmf%D`bQ_K!fFF;(2l)c;P1.Ss,].cmJDnJXS>82$Gd3H<)_bF(b/C_)h('X9&hk-WGr?C=8B97^62*-8sM3e,O_DZII:.s#TmLp^HB^h75X,`4qkCY@9q\P,C@G_2Zj6N$-R[:+?;0g!CG=?Wo_ej,dMNf6Pjm!FnZg.4/'7l#-/&Vaj@#%l5BW$8_K<fj+>QS'>rActT7bh-Y>;j'Vs&-ZfE"O#lCDO@1mRrPW'COt]j&>l,qU<8kgrh0$J_p)(%A\-iKned*]!eSqU0+),a%:hepY-i'Z^/gl'80Tr9D@Oe3,t$7V4F.#$s#t`^$poQP*<+lR_'LW(;&>6fO@C_DhFhAiR71"[_&85^5aI4n_)\XiUGHf38#<#mOHD@VldI0X.LkN>rS\E!ALZl]B9>]LL/5+::1-5(+`g>3cZ2@ICXMfZZH>lh,O+s!6&.4\^u[%9s42,'>l4osd8lF\%\,(Q&JGg8,HZ3'j*KiJjqp_o=n^BS!p/'rb/c7UG$XYU@2Z\)@$HUQ-Ejge*dDaYe?$E)(8CAC-PJ,h9Ne6<[t_nlRAtL!@icD?N'[^6or\"sS7XNgPFHsjbC!'!0qTsk[%"=65'P[>Ve$q2Lg>/g-jVDtdNOe]b60>!*IiJu""0h>/Oq6$Xm4^,\r9.\7_IZYYVQYi*1sFY'!hmc)n3e&Z1).)&b37!0tT-@\QCBl69!2iK\'c@_dZQ+<CS$>*[1NFR]QasD'nB2W\.@QR1OA2K6Xh"-_3'Kp^5@Ng];C:Am^,U;.)_Q2/RA1V>oBNhl?Fg^)&X!ro\@AEMGNl##EO4@X$?%*]19SYZ^i:ScTOaTqqQs9D+V-rl"-kWu(Yn4.;1T#88\OEKt$#gRV7H5i8\:j6^H3I;aA7m@Ro_CS555^ic_HM,eGK)g]@"m\fbo9F]c/NgLESKWTd5a<e5;i]BYd`5n=],$>e`]u7gJFV[`&s/=_C?s:tS$4/k1b;B7Nn3W=S\[V'i;^oPopdFs?P4igqNV:JS^>?Khrckf"o^?l`R8(ai,+>dU]L+-R$\/+PY^bTKiEc5ji0a)V!sK7*(q-)bFBtn8j8HCp7c*nH5j4Z[*Id4-l[Jm6bJSc_4s1:lJCs:d#oL+-G+HH%M"os.+MA^<O*+/V)'=s7DK3p9b;$X,&rsm.iVE\+),BlqmR&sEUNq4mQ\9u]eBhK+6530(0m+E-J]qNr:`ioq-J^R0pKJFtU=)6\:OhKZKl*D&kc<VR"nt2fO_RT"O?GR@\:sc[UuUh`BZm(*jFH<<dlk,eG+"W(OLhh?[\%_g/sm(@a8=\aS)Hr44hs-UTsT(/qGM3,!;G5(mQCS^f8e=XKnJ!<*o-"XiS]g)?!$_H'q=Lq4=^;^lri40fgbt\1&QJ&#JDK-oYtm#U-7u!,CeafQS5PFPFWFA#R?,qp2r%"^f-H&-[\#Z?#t?,EgKGn-YF"c:VcLgA4_][qE2=;28.rl3W?9Pc_'u.5j"M`kPI;n/q=I'jH"K*d!l,nDD"s3;UPFAk`EITBLh!CnE.^g`ca^Ijc;sKX!sH1)B6SedpA\lR>AMqI\jkqHo2Au'qJSV<OU.i5F=4j'1PL0?/Hf!]\smD6+;88SsA5MJYL:3ZH(h>gDaIG91?=POCE-8,Y5T"CurJLc0`1RQ*>sOj\j%_X6W_.Yj)%AS_#'\$%]_F_L[_X+*]>WQ;&=mh?#5),u"Yoc[JG!1geYccnPmS[^os7<HSCc`ZfYOIL6lRjbalE7Ykr`mUPuK)%MCj1,cu[\r')q?a7S)OMY_7P:_PU&:2168ufoe\D5FGN.#V(Zr]Ckb;i1JE4!#eGlI%oYgcaY~>endstream
699+Gb!#]rGUFK'E1-[reDG!$ulVE[J]D$.F=qd&KpK3-Jl?8;t5I&.%?,?W[*kR)"t`5Ng+'9+*NgX^fnO1.Iup%h")MHM@Ua*n(Z/:"*cbYf;Ch-?'ltspUraacf)c`J+)_&SmT__NF=X\Gb+A8N,/.]^;!K,OXak\nG%Sa[_LG!;q5]6%h7+UH:.2A0[7t^#fbq59]+0i'squfZ&HhakCsitF3mC5Hkm\C_Xr&>^9TKkpKe]miA-@qCX+uf,?Ol#*5"HUj(?AB*>l-t0;L?P$b]Mm*rj-f/V&!=qQsHYBOrqO;gp*QqiUZff3O6o5lgiQ@fX.n$Dqe2klPm>T[Z(.Q7m.=>k']dV(/;';!-B?]Zn4G(<g_Qo_QnY:8`qcYT@#m'8T(Vi=iTtms\ugq=1),[G`?Z#)>EZbgUOtHc,"NoJg#-V9<g;oYru3-"A_Ce\G-K[p_#T5$p@3A+AN4V'Ro;kn8V$6Z%K*nZ/)<:f/WD-p`oV?UfZAliW$/[lM`ODb&MRA8W$Ba'?;S>^\.k_^C8`T@ebg!(t_Nd"#NZLmVu)1?1(K3EIapWl8PF9Jp35J7:rlJE#-$9G+L-r:SQV6&*/Ga?[]73p`0p9LX$3(+5i-PiKV:"&*5D/ONWt'GZV.$qo]`jHKsd+)^6Cf?+`X.[KU/WNOj3gOWR;k13q[((bL9&4r:A873T6^s_1(:t-S:5/TK5^l=4SIUiTL<TJn8KLNCpU<,"19k,9?.hpU6,dOGWogPS"V21FW=rbm"q<B,SG[WO3C@We^p`;h\,L[RK/!sIWEW`TiZ+;&eTb'_n":!ELTYdqr_:OjN"h]-P#"1p;Jee:CBOa7ui-=@O\+CKDJjX;r8N[d/n!BVteo0d(Dj0purTnr8c?1kglGcEgAB)kCb=&r:N%*3+rdPJhRlc(OJPje$'1rMGlZjPait3fLP@?*8FhL;_Y.7l%LWF/8KQ,@?/351\>WFJ/=RfKP=_JJua::h-V%^G<FW._Z"2m<k^rAK0du%gq6u.h.DOm>gj+`ZP$95@+-Ml.YkK.<Mo0jChN(g4@FZ<RQLW[`O:6RJXA@J)O8jfY3=H2lB'J+C`K9fRaTiI+U'HC\#@grq&b7,R4ZngZDZm+ng+n8WlS$Qrt`/5`OJ]DEM.Wb-8)q9UR"m5.WG@LM=10tSNBH7qR*8'Fb-aB)BUCLl#;BerK+p'=G8q\M,nl&;LZ:qiW#ce6TFHNlJP,;cLW$-3R*XgE2h(V?g<cL?e=$4?E8qf_(=d_%q^?>9GiF[.8`7N?``%\;+/"3a5Md.*@"0'Xl8lK9doX4ZTAJ2NcEZ8+abSaFjda8`<s4b@O@?;+lAahpcU2\(lIF*_$'.b@SWqQk$LJ1&aYMl"khd_oWRDCnCon.='bQju?\s/mF2!`U*I$=gm<IO[r>a\7]nl]L3WSs&ZKE$=1i)4/8L<jm,UJ'(d;i8^lV]b6ePsI['MW&<4KiIO.e"8:CJThq]fkL^djt)Rl'%J4dGo,L]jooLY`I]<2i])L4CeA8PQqb1FG_EG_S/rN(0hpc3G*N;m=,NHc)eU<E*sS-XEI>o,c.`sjNi/o<FW'f??q;_HY[$(Q?eVJ,URL!!P95C,A.\shkoBn%N<(X&80`<.R4CQ?!?E2*Jk+==1d6BeF:QU7nrU1("i<^)XgV.jE](d63"^=G0(YirKpe^):trK3gY(Q%F';K#C$_V+0Wgb1bmdQ09$<T'a,l]N$*r"#,Ld=rT=Z<c3DW8ifQD=APsnB#!s.EG;GK9j/d\A8+lEj/p7_>'X<'A/MP@Z91>Q_GHBZI2>>-S)L.&M]X6bgQE$<taLYWnlQIhdZ]`"%YBl/4#pKU3\'R7c;JY>#K55`njN]/hU_Oc;OOGg/)`!o4o6s)0pKsEOWp/2p6UU,%Dr("fP$-J.VQWVVPk*X.=-dOY9bIs=!23e<q`_S.8#L`U3B;>E9#@BB-HaQrTa08Lp`&oS=;`5"e,a#5,l\qI.pr?_I>]Q&keq"g>RM[q-4h<8rZ>jA*h+;O?fA@k\?$!OoL[JjRDn,%TLV4^oTpcO:HYF[YD5(<KY_=:WroDu+cD]L`n$#2C!6sL50O&Pe-dS^V2o)9=Im.qG;FB$(a/@E"J,FmSFB^>j&l&mUr<`\^FG&C:F_ti]FPEa1Nc+K@PP46#rL0RL[X!0C<l5^n\=9]Hf:!U#HZ<;CL&+h$a.$ETq>J,>Msi,X[O67@8fC;bfFHYS>ES5oT$R/OOdk?)Tt.s#;PCL3meTh!DZH9enH[sEA66S2ZeWso5([!YlM.tBgXXDP9<iq/;8$#2hEKU^IcVK^0u3=@'JLGS)rQ1]Ght>[rYiLPYHDg(LJL&0(R,uXB)dJ2XoEjUid91/;120S&1Z(uZOku"SA?LI\Dhc+>W'4#]&2n%PMooZDI`'n/%l0?=EMf"CIW@-flsJP(gttJ*Ec%c=:/,F^:NsnIY\gOCj4[G5`=:Thq9jQn,3]:U/S;~>endstream
700 endobj
701 % 'R156': class PDFStream
702 156 0 obj
703 % page stream
704 << /Filter [ /ASCII85Decode
705 /FlateDecode ]
706- /Length 1781 >>
707+ /Length 1735 >>
708 stream
709-Gb!#\D/\/e&H3^ns5D=BQnu70.*Jp/!<nX`!BOaoQ?akcp^8ZN1)iea81Le:lZ].8a)M_Bb$8>"0l38j4$IuYSi[O'nX%n[-jM`&_!sDcikZl@i]B=t0&YdNnDO$0J2D%3+cO(\$,U\<HO^R8]TOfX18e<^pkh[iGi7;P1-I`bK<'DG"E3@ojW&]-+>b];-Sulj):JqYU&n?#LaPi_MZmbpZ\iBM:l+XV:,D&=-=:3P1RS1`i6M]TQ*)Bbb:9,=H/?I_+j-`]Yi&XgRbfanSOZR+Om%!]0/Eg/>umnh7;Il!8i%C'4*^A7g]#s:Y2d*3J1LDBnc]k1*"D3o/b"IpFYF#l59E0Z##<ec+r:Y/#+sjAHq\K69;"0um4">II42+CHM#D+0S8iIEP$r[#hF!3h5=tj&.jbub#tF;k+VjP,qm^2dI&\ThspDp`Wpj/fCui[JRIj>YMe\%#b4f3+Bd1[*@RMGfb.t$At1:uQ[4[je12GVeF!<lIeRC<a:pB+g<,Yr\3"-6"&k#&+3*^!R0U_H)&W\"k91Thj)GeNoHYr@e/=f;)4ro<'7$F"VSG5T551KT]j/KU`jWa/'Zk;6go&G7B;5<`Y.7kJI4?F^Ht@1%R%P;U&CCnSaeVAf;(6c191\cD5DC860p(pTf];o$@bN?eki)DkmL^R&`:KUU8$Sl4/1/$F9I_@;a:;$f]S4F7'hM`_\;:?hFW?l=lGH<:Qq;[h;jm3N%noK/pj+$sTmiZ!:e]%V`A2p5Z\ecETqJG!0;,S/'rddWB*?5hhg<UE8.)b2M/8>K+aZpcdpA8qk[qXGRiZ#6D_,CIiQ""R@q3i4j.gZXJ8n$*8u/EmAIWSH;mIDc.SS"R(nLr^7GhJ-0MF8)<[DP9cDE>0&E\Xl/m2ZqGG6@c9esf#1(H7X26)IT8rDE,&7m:)f?DsXa*Q[]]&'l42D4AeBsGQHOmK$-.>o9?p&"LP[i%^($NV"NdYHt'j73kqlBRAg4aOKknS/0gbEnU[KDUTB\!rXHK[1SE>O%bT2O*_re[nMN.4Wd3MVV[QTp"5ih$*X5r1ZUg$RuPU5*7[7$R'HbJ;Ft=Rn$O\*e.(L2*4DKh9`Ml^2T\g=Z6m.(9lV+D\/#ur=e0IG(M)m3[oT-e#\?[<t^Ms5VGcBg.?sL(L2%*o-LWqMIWr#m4kTDQHE&CX.EQpljL8E&b_o#(69cb`?!^AVLA]O@89N[>=at1W&o&4mlmiqlqq@qXU#-aoH?f,bR=]OHai]r(P8f,FYhqqfDPq"jf2-e+[o;['"g:U&q#HMXhJd.LW1Y;CsX*S4Ftd]'4-WY(QQ(>8Lluj[LG>;Z_e0SDrc%Rn+-P0=^rGToX>bd_bkV)[oBHT=Bb_Q,1_?un%EHshfC16iO$B"$!?-U)br4Vdn1"<`;^&e0L5k`pEK6P-ZV\=SZ`]RJg7PpHEmL0,mg*iMFjT'4ItdA1Tq@ZOR.Udrk6J!Q;B"8Y&"Jrh;c'K0HW0u;4)1HXYUO)3I-)\A[li2GrG'/D>YP:)"02M,#R,MBktlQ)/pf&W:l%mmN=WAO3(oB5NCuWG3[`%[[eKfo%166cg$N.'sR^B@'_m-<=r/d6\O]&0%\%u):3VAfK0H6MT#g77[J9T6J%='U[qMCWj:uEL4)fY!92_q[,1'sm=rfH#GZ;16jFamFDFLi"eEKOeL.k=$'Pcjl)*^)h*08(*"7IT2BJ)+:t=ohk.R]V2m#[^6Z:n-,AX9hQGHo=I!HlTK"sM0YYPUP=(i3CrN/H)iPE8A602h~>endstream
710+Gau`Tmr-r=&H*Xms21Pd0P>>>8X<n4!s0`P!u/hfXE.5Qn/#9&,W:mcOAoKRYMYK5n&0C>3EQn2YpA0HTAI8*Op<W=HM0-D!Nq/rIdM^L__;0GDupm5_#**Tao1I\2nQL?6U(u"2]foIk4I`T>=gUo9;4:<Di#a;-a(-^k,0RDE5&IkJJ5r*`!h'M9nM#F^Oa\7?jcCa5Y`gZ#m\cH6;OQU"@\/@$KhhPhdH5cXlcfW"U2'h+'Oc<W$biR#Oj+;)/qmi;+FKTFWk7bIO$3[Sc,k+&jLJij$>Kd<!#s[1aT7\d7dN4Zt*0#3nmqpk;q#<!E%p/*XYFp#bCbj#:,2?_^W2>&Bi<6P.a+KdGZ'n"X&-iAJt4]g[1D.?Jd"f^Q).l9ZD?dd#k[N;KFU:3#asNqP=7_nbh+5XltunD)g@Mj)HMSDb8CS/I6SU%%M!hDGWcqTY-#f(9![BD!E0D$7X@:AYh^rBbZho8OfbF:LQSe%X_;6L%,k!5p;Sj/m+k1ol`*I`1@6[\#DEL[L`r._qD_g<kiXK'`:]><YBjELNb\Z_Q\N7V^&-(dbm\r3RnJ6U&e8(+k[P:0``k6gb><DQt]d]!ZHuaBo#F')Vmpk+73?9e.7DleqA#QRbUd8K-aDDOm.'^:H=-_?</ZJ2pka(1aOT`K/Z$-mCn#73j/A"\AX`WY<[qR(g%TM_@NMe]0dG18%_FbhJ\%jjUdih:B3^G5,N,0;uf8O]&S'I9A*ru28F)ifGp$S>7e:gf_u6n6Dc/3f%AoVXuXDVYG\rs<+ak2JtmK*)#%@Q2V4?@`o$JE-&>m#.`Z0ocl4OZpeOqQ;c,HAnWu:*i3*QZ4.Kaf!1tu'do4bo.P][Zk*CNHMBWN:%\095\^R/(/,=a?bZWEaUG;j0qhGYG?/:H#ofd]sIK/dD&09(-Sq]b_XPjp.<adB+P%nM4Vugl\10>iceLbY_6a]Zfdn!a]$^maDG+g0:B2obH:)<>AhLA&qct9:ZGWEqE"5s[m9L;!'2'0P@S6!0Q^c)H2/D#?FBI&jH>`!9[kk12mCXbqc8F@fuiUCOjgd]<__QRhFV^@uq'4>k9J4W0`8tq.kAH?`46ag,>3_[g?...;q75#1S"=DoSe]9YWZPlM5K\<%O,b5+WQ"Z#4O;(<a9Z#>d`YD@KUaYUFU992ZRbIO[>AH68lHRsniRE=A(-AT3ac?@fdraEG0.nk8)<WT*!6)h@_X)4&n.VkV.ij+]p1V"s[fO^pkCi&N]-W>]=HkGVgB5EAoZdtn7iIAtaE)I!Q\h:%YINZP@X!I8%DU*q4<_!cs"=T1/mop_A8Db4>'p0=!M?Km8TI>lrUkHV1s'ok\?USOQ9B0E*^2gUG^R$&J:?,F9RsfcSn:8aCMLj\KS!2t1[O]^d//Q+Z_@)[elPf3.#k5S(DQb(UN1s-.*CP[Unr=/S'f`h^bcbDkh/@m`^\i77(R`SrU:P.Bjd(03@*?p1LB,`o2Q!l[d%J?3H+'kaQg<4UQ?ZK>79:n<=lm]Lt:Fmk<m^>O#`lXB_)?f$Vu"25$mjg001Y$BCKU$R_8^3hD&A\Zs@/Sci*S\9]F,)\K;hjZ+cm<r`LQ>#or;9e/i(,hkKu=GGm$sq`aWWZf)g$i4NRTj+`NOo(E05U)B41A$:Vn=WR9g1Pin]4iWomJSN2#aEc<Jp=`Lm5*DZ#okgMX0b/]:jmlp-M'Dg.D6r#,7-MT/RtfCUIfV9pcKG~>endstream
711 endobj
712 % 'R157': class PDFStream
713 157 0 obj
714 % page stream
715 << /Filter [ /ASCII85Decode
716 /FlateDecode ]
717- /Length 1752 >>
718+ /Length 1650 >>
719 stream
720-Gau0DCN%rc'`B'qs5ADEjp\8iLF(."3Zr,tTNdjrNNllAJUj&hA1eMVP#PWZfC+lOHVGI`8qI1p:m^@:H[$Y)_4tApr_G%pZOskLbm-I`;%A'4mDJ,hhN*\X4s(mBbI)s*##XH-aY9E$NfSY!P*jk,@Tm8b`?[N/o'B7W*$:;/J%^W,^o3t:,"R[k`4Wj8?A:IND#S'rK6T?CboN`&aMoTG:13]IN./&4rq[^k^?5];1&/j/`*aC77,:B7>\GZbK#F'FKgKiX(iW=7n:fd\n?EaI4U4Fc^@`L3S[sm"$mN1<.9/Bp8tR':r]qlf0D#2T=ha(=h2s"PC-j2r2JrkD%=3m>@-0iJ`h7@.`fb%bO(QN&9E6g0%mBAYXRRubP>2uG:g`OI.(a")Wc@J=>B/Z3QhSC6NI.CSXA57BoL*fN!gJurXRXEm0]KUU_Oj'r.9KB<8k%gMQgY;Y&]X52qZJCOVmY#+KG""HV>11/G_;%*mhQjZe.E.B/p$N'q1o6-NcQaQ(W^2ac`^1cFI?Jle0lh"&9n\"L+1G/Ai?P"1ai[b3l.8jV;Q*kVaT.4Y3AUL37e)%_u0A6A4j[@UBmu"k=jn:VS]R\gj3hY@3nuCc_[mG)@2BKn<4@2.aX5R%*Pqr:LTYQ[O*%0N#/phC`#B)"7<fT`>K9W1GfG)@'QZEbHAj6XdY*4/CffulR,8Zq0(#Fg4X-*efgLYK<W$i+/\;5$)SdR4&!.73_[?7:fCRI$mTM`+0d!R&3]u@HRZ]04i+A?r4A\95m..A.pi!:3bVu:XkN4-#`$;-'C:SdQ*Si&USf*$0R:Zcp&[VjShZr[-3Ejh)JO8)_WVj>faDcJJ&Xm"TF,%t+.*,s0ce2LCMuHY6h"CM2h<Z2$![$Op<[E5>"hn8VG(MHg:F*<$`?Ij=]_4:.n_rWin'Fk#FM`i?j4EWVg4!cXer8<<n*9K;[nW?'=IIhBn=hn'W/:Ze7'=<T9p4t-C`G$Bu88ne0Uf/!CjF22-/LC(:?FoCM7E:LI*36jW"u<Au4b''Q?croF<el-AP9G>u1IN`Wn!!;NO+a#BkAi\s>_i,DJ*8%#,%tB4Z^1%>0jYaLEF<1`&mB.$.+6*TYVK+oQZ"k8R%<CHi+'Kh#@n05Ok!B'72+75L*:b%Cnr:rFq*_m/aK1^"1fkA)Rp*;#o2:h@pMUhs/h!MuKs.4l(kO$oA_)KM0&RVZfEA\Omh)@4:7f(d#'gYW^&mH/9E13"qpZH8%>XQto8p_;I=pRV3<--=6>.AlG0`kB?[^^878Zf^q[HbQhM>tC1XqB;&"/o+"UG!j;bE2K`Wn#9MHO^?gbOT24=q%'09]9S5.Bs>#c2R`%Aj<eIp-FH^r#;X9;*IL.^9`RU^n]^Jp6IosNmKpsUP9"_B=[pnHaZ=Y)>2sFV!cD,>C[iW`W[S4[<MPC">7.2n3aUL")0c<bSMbKj=[QPb].HJ*-e$(4NR_jEC=7]RWasX*A+5E>7O1lOpZimA_08/9PC#6q[R@ZY9j)GE\(%&,hE(:\]$K-c,tbRX38QCfZ-MS2V+[L69j3[q+%TN7c?V^XPEg+4^V8CqH$uIOCgN].-5,bf8kkOOp/,X(VS*-B_>!:JBX#&Mh+EQWJ<K0&b#;X5IDQk]c519uVcOtu'BU]?UcWY=f$jSjmgeA+hR+N/NKR#kP#"c@5%EgtS^VF#@^5Oq(8?C/#i/lr/M01;iHf.?+S"8I[UYrcjiX+kE4G'f*$>+aKtH$X~>endstream
721+Gb!#]D/\/e&H3^ns5C[#EsGLk]AsG"YVZa7,0dF5^bEQ2B^'&CPpr&qP.JDWG>rB+l"\1h!mEq5b9D5X4ZqSj4E0Q2Ze'!sE&NF%(ERfb9FL>V-\U_1r'!8,q0[MJh2b9.8>=1Fdn*/Q:/?>K<`mjd-&f\<=t"B:inC)@EI'qZDWc9o3%7O&,U%`'"f-Nq$)?0Eer\KdZU/AZ.;K7DW)>6[Y?o';+.3%<1&UhVN6l_F@pul/'[^D)5bB#(W+C^iOiFC<h[(S\N*d(Tn09;C(.SoH9h.=&pFncq;*&)^?GZbM?_k'</9)%+7LIbT16n4g<B57Kj0-a^6*Lu/?hj@O7]SRg.XZj.>:?K6`"/L\Bb9a<.,[cUW.*5mQ&DKL6bYn4OKqJl4U1gn;!+._Hio@OJ9^7t)Ql#2=\G4*\#*CR[%Nsbe8aiNK@ppmd`'c4Cm9.s:E90t*iH**\#9_&)QqAZ/3r1WVBg<pK*[V@%hgHX0,J8QXEN*m^[E7oI_N##6IR=h<IKW0k&hniTf+#M#e8S+p0g4(Z8^[7\9P%mR4Z&(LaN,k<nPM`ZX3B;,>-DEc1<%s\_-gWr.Xo[2VO*u229C$'#h]Wf%EVe.1Inc(@ln]20iDHZ4%6.!q$?N(d?I?NB;l/K5Wkm3@9+<7%V1&e)N%U+B:k0ZoMd5r^NT;0>;Ul'a2RHn+Xqec"^!!eTTh,]+qZj()[(m2iMKF1fb<nDNT^e(D;NYDrS?`Z$PZM5'MS?`oKP@Pus`/`d)XCs$JP/Ai$[kD2BAC2To`2&LQIuNjq"_d:?YZgJW$tU`ARnL(T1!OH-h0)hC)TqgH9";:a\p6i,`tI(8U[5.8t-.+Z`=Y<a'9l!JKgW)f`_cIMP*Za(u.X^ra\%4]6'F0HXm[M^\do9p`C_cRRr5l^\H;f=X21niHg1PZI;U3K5dHGeg"WmjG_1R".JoNn1['R>.7,2/F:BeXuuA:[;"GG1C>S6r8p6'/TiU[NV3@it#KDNr5d@<eA&TYK<&V"\*CP1<!b5Nu$p%:;X&Bod;9P7HHR1Sd>Q,r;:)p9Us146_TK<+mpM:Xl.Cl_LGTU&;K=]g17B8'n#%HN?2**p$QQ*BFiKLSJK&)n/=c2EVT.Udp9m9a$o_DWI0@j!?hqZ5;FGmST*h7,b3<Nio2.4Gf,Y]a4kds&=H^&"JrA2H@"p2K*q_*,q31jqU5;M7Y8e:MG!gB-aM"QAbMaU\"TL@^-IPK\=Fil+Y`5<7l_9>CN6a/MTo5E!E[R6Xs0?>dq]IlkNTp26Ek3hB;2TP>RKrg&[S(.*AS_Ft@s#K#Z0a`<I(bKrHu'bLO2`Ue='hkb%9^^VQ]Wa4FVUDqB5(0igloB/>:_]P(4o,(pmdqZ[-9!One<;"%eVZo$j?-?W!2S%@"?KHrTLURrq+EBVo`9)6*^#@=IYKDFogG$1-dE*BUqCWspY,6QY=$\p`S/N=hc<Sd"BiU*:pb!K*^aH4>V[0,td=]8HE80<PiVD4mLmCIa^IJ3>"!1mt5+8FTW#7p/OnKF;o>),[-2Yq+acBhuM^KnU,O'&&AR6=1,*m>,md$_gLr-42k]kbo<efsuZ3^6k;[Z\=Ied<UnS5j$"])SmaRn'c3DILSoVdlQ.1Q0*1M:-?hnh7++KF.~>endstream
722 endobj
723 % 'R158': class PDFStream
724 158 0 obj
725 % page stream
726 << /Filter [ /ASCII85Decode
727 /FlateDecode ]
728- /Length 1567 >>
729+ /Length 1645 >>
730 stream
731-Gau0DD/\E'&H7^.J!_lh8OXWsJmVEP;K=$_X!<r8:/rPb[+GJjnI)h<c8DWmh`JFS!e^Z.P+[?AZSSr65!/A;9k_qteF-fQE7K`M)\YmQqI;3"_h%f"\F.sahs*(?DX7,F%U?pE"/!T_CHpWp*9TFq;IXag331Y7g6>Cu20-2DBDQ#E"+sjV'Z:)\`UF=DKkQ#54,#cWBe84D\P"tW,01`n#`RW]4f=>iHbp%V0gd!/9SaAGrr`4,5lEWF7XOZ2]BmO?c9ZnLp)%G+%9$oaPbMMS&\1Y6:@h#lE#>IYiNPli;^SBZiHFhY=WU>sM=Hsm&o<.*o,7L#H-7X'RR]eugIDU8*VS8fTA;Vn;gn=hN%\)]aOf9,[CcdCVo<K$f%LOX'E:]K8&YUEXWU"a=e*<nn]A:q"PF3T.BqHrkaui%2anq^lt8W*:F7K#S7b1#'%<@D?qJQFkQQNrV$ImHSTSQF/;jeW#tc@TAP6RQo%V_epLY8^/0QEEp*e2emW4>YiHL<L/IW@Ws*DRZh_b6u);5/27`E[H>BWIq"r9X[L;7?TKSVdL_9)N@,[AZ/*L_ZK0!j3_,8=F=<SWH;ZX9C;#T6C)N1U[@9]?2c^+G5)j=HP-dq`0Bp$NZN8Y0@IdU%<;cZ%_O+-*Yb):](b6:?>8[B^>e*ts37,3H24lqYa0%^0bsEM8YuLe>iPS@X&E;8n>h!8=8jU4@N(Rl`EG!rHs9<WV4'pi"*kC2c/(IlL*q_Qgn,j,BbK9N$5ap^gN@;f5=&P'kYl6GL;DZO&$I@s=BEI5mRo@s'dMEI=dBR,]:6hn=iJJ-/JX'/S/Bb'm6-:*Ai-FKV:c^f>s1[QgE[04DJh<`BYf1O.5L]`g7K(:Sl1.2>*m$%9'#Z^11`F^&@Qe42C/Cd30jg-#[5M3-P%4m-<iZa`>bM3t:1+;R]N[:/EUUMV&@T>5Din`P`T"c5bOBCspB8LMNXXbA;4Mko-]nZ-b1W>gG,Whg]*OG[OqZ9*?dr;]/m(4@'9@9\jkQMLMp5es$iaoOh\e>Z\ha]'Rp4.k(9LRe=AHn/=),abC(6+ILD.l]l>rYV%h,9m5WLIFg8W2,K9S/U>DA9SsK&TW%J+QJgsFUgHg/!bO8F?PF13j%[XZ(*&7m!`cXPAY;6QZ9U'.]2#cMCO2OK0iOtLEq=:kk9,EU18sV91i&nGtFZ?nbMY4iC+h/:O`HSU3K#&q:24B%((jHE4-[,?XVhYj/sZ.[TbKN^'V*R7*7ic.#Xp(;.k7C:j(bTe*bCO]XN+L[^o[@,+LE2Z6J\G+NF8.c>39Wm+F.P:?TkQ[dd'0G$ZQ6Q]k:H64MS'?Wnu?D$J`t@i`t1.^JeaYM,:#>=UND$3H1]9$in.NatA-GtRSCfA8VS;IJ=e:?V!&@:sn;DGHf#0bAc-8mLjk#=SN$c6eeJP<!FK>](jTB7Uj%jmK%6NI.2W>^g90\@h\@mW"2]3l<g!XGh<R`sCJ/]C(;e*sil(8N]mH'kT"EA<Sku=W)MAU/F$9gP4g(:\3HVkcMh0I+*%?FjtPUPWSG,Wchn#:p9g.38%I&~>endstream
732+Gau0DD,91]&H7^.J!_lh6PXut8Sj1U.WGWl]A@NAU7t8BU:!-Z>jSk:G9,W!GBTM[SBL!t5nLjXl^;CWH$3fN%bUF6R.n)jpb7AF(CiDW$r_+k<Y'qWiI#lpnEo_\RBI&dkde.`LP(]V3B[*$8mkh[JglDq'bfs'^c"j)jR@[.0(*dIn@ZJ(V@.DW5cB*a<iB;G(s&*+9L-NA-;\aX`&K_^E!Eaf*Pq50)#aU5\+:-RZNMnga8ClF"Msj9-"K-`lNCYG3?HPJlZA]F&U^h^Yg+gs;c2,0l,$80e7mLD>u.ZPCYkUcB.ZnkTjud!Rt+h3-,`aBYRC4;A#77)_@2.B#W8fD#_`G$ROT$0_':]YThM/G#gm/*er5HeX<gh>W/Mqq8>\.k#PSKY73@k$AdMV^'M-3;*8<m6<nK0ORNt;WPpfQ=DA6,MjD`:_<Uub.aEg1?Q,ZA:!nOR["fc:)[*6<?'P12*#csmV"UL?\UthD('c*'D`f;NC:cU&#KY_T8eVAL's8*/E?k(15$La;3jsXEcU]ECqZQpEL]6#4^BKVl]PUhLeQJjK.P,2=*)DcGuj=5J/^MoKY36NZCW1taaboTV\@nt\:fCTjKY5<<d)FX^??&8*8j!or*NE7M8b0Vq1P)"kGUGo#<&E/kuaK_fs'QMFZC*<Iu+;lO:e31+LN)*K?p/\jcI*SDt@<#.%bY=LqNlUIPT3#Sd2=f4rlI+N>X+hL_i[4Qgn!'crfOJ"_rDIYn2-9g@`da'pDd@$f*D_a^C3?YjlLH-Gcj?d$7MRWb`@-dZ7mi<<C,X[iTV&Lk0'_oDhZuo=X;+PP@1l7#J?o=9rT.2:(]`S&EB-<R)c5KuPKX!W#(9EYS?\T_AGf2o!*kkX4Mm]lOY7L8P5=os<RpMAiP&=B#$jN;7I@Q7W^`Ug$FH'f*Jo&VF=g!Q-Q>?r"0-VCK(/[aMUf;0,fZt;<^N>TC.\]N$161Z;U&6%U!fpTVQI!(Mq)EaJT&*&cB6f;%80q$nK"\)HMe%J[GY"7%"s9>+_gH`FiU.e5f-clQ-HOZrr*p`.kd-t*Ehp&rM@,k'jZb(!\h.r$96(tZPeT5m'#;PLhJidNc`qAr[Q_ra+=DE't%T5MV<^ALU;)?)Ae\"pN@@-286!9#uteYK^"6-r`\0LX/:73`g@^Tqs/GVA'`3sB$b()3<I1-&4E6A9.-/h6ej<$on,3%dnACIW>4ek>0hQ?>.oYIdh^PuQ09ZIplacK4(iI+#'J[>VPfIqq/X."XPIrloFS=UXYU7?VDcU.87Niah&YRNaZhYAD0.a's$cJr=T0ZGbZJ3#&4tqN:S"*>`([Wt3on8&hJC'qBlqhNXl]aGlHjhC(mp\,#4L;b+=Q<mf@15;].(neoj<1eOE?.m`W9P#VGjnTP(a+K)3=NDKDB[k^==cA$;=<3:i0d`H,233@qJ1N:'5#Ef*,0J7Qs]VC4N(SbqSK#N3c^p8M_O_3G:(JKP#66r3t.4J[Iotjp@)=]U1'/mc+&f1REY#_-kV8NuWAHZ(f^qB,8>JeOR-h'WDbaX`=!dh*&5[%K*rt[NUThS4-JM7=*Cc=FA.9/L.pu4<GgVke!GJ#0,*hZQ*jd^>.)?I%RA)pPbFhZ:LmlQ([+*i."$*r,h~>endstream
733 endobj
734 % 'R159': class PDFStream
735 159 0 obj
736 % page stream
737 << /Filter [ /ASCII85Decode
738 /FlateDecode ]
739- /Length 1852 >>
740+ /Length 1576 >>
741 stream
742-Gau0DD/\/e&H3^ns5C[#Es>,H-!?Q2/T"[a6eZ+R\"T2`JX0u;S)-V4l.fX\4%as;>"^an'khHN\iW*'Gk]uJE:FIFJ&aRbb:25Z@DG!m/q=+#!7Q:>4h\N'p[WpDCW@$G7jH'6-5!t5H1Ae)&rTZLg_c/9E5aI`>e<t3QPX=SrLP*_'>ZLq%qCF:5t'W!@A&:Q<<3Cb!k8GOPUo^o"U*G69Vm<*i!Or1#`Y;inF#,Wh;-='I'-lR2b\_,1&h"pbeSA6A&ECI;3(@F"FLie!3,DjY<HAcZ[inF@WqG(E"jjF_@s_R38lgD8q[d+Q\>FM!*tF`/u2#VN221:K<np>d,7Mu)H@04%G:"S9!s\&Yi(qHTAA2Ni>oGPM9_,k`jNA;X'ZY2b/,_,@2VPpo+OpS:lp,V-l69W!cj0SW$i#u;PCmaY'kIQZEa-4>g(9WBB"n.eJ"Y(fEoiY;#)N(P)2G+OB]7Lb;')s6B/odQ*l2N4l?qu?k[=&7h<WWGfS]t:9="2B]P/6-Zh;,T$W3t1[f9*bWh]FrK+O[c]rbALW='@*DbN:nDN53a%J6(A*O,5,Epp(Z5A18KEFG[r:EJ&LEK:W*0)oIO!f0:aPQMnoE6_(:<Mh7!%Ta^/M8n^.uTC%5'6rant.(0(M"eT?Wqu7T^fI#$1%`9T:@]Ga(9f.agB>B&N+RaTl`76LDN'?H<.[L2h5<7d%,-cmTHs5LIO;o-5%e8><I"Ko.m;)"$lR$;@]2]T4>R(UYmUM?(ih%H1`l-JnXcb"Ddh_lhUcpG"u)caaoaH/7?cN5A;V\UG(j1!?2*0\F/=+7c?/M9+)A'48eB^-",meroi7^Ts'a/i>B3@jDH%fG%BU:/bWIhYS2+o2]PPXrf`6:?O-Q,P7uG\+"5uaDX&.$mG7.2`?1^K57aP4*lk!1HJ?+jWOZa&DUqEn2H\q%k=K,e&286lD)1ebs49.[(0SiQ+ZPM2d?aR&'8g`NGdkBBcur<XO9R(3h!aiN2CM0gb.,_c@B<(9dHn`f4/(5KiaKtYSQ3GCm'@AJD"#3U;jnhsp6bKsTY/D-)&2,2pAi!eK(Fo>[bo,TnS+IF9EQJ-_E80MjB4(5&P6M,ke2(E*A6V`3&tJGIt\oNL2ECER#kG,Nl.W>ZO#2Cr!l2#cSQ9nc'ZGlf*#P%)bS-s09WE9oGTndCi/K4h`B[uAs9q'0,D'FcI8#U1b:@:(\"7PKXM<5A@b/larg/&i\*-:g"=XQokL3?bt`P&!@?H!%AE;ef.e>Ccm[5;<**TR8Rq(''Y"@6VCP3&i$M[%9$+,m#!R:?QuqS^fVSu1&9[-)PI<C+@L?->mK\s@4tbQRe@:]9/2fXA!R]>.'8@chR7N=l0s[b$>&OT-o`QA'\VqZ-ccku`Z_O)c)r&ppH,^s?W%b-gZD,Er^c!1LR!+%hg9%M9<p2O47:ehd$Q`f1"RFkEQCYP2/.T03-(r+4\6X25hqI#SqF!Y'!Q8eEipGe"4!$hrMjW<Uh5NB7';C*7qN)/#X@=#m[=a]@AXtGt.U07!)u?q!f%f%AGC,qJ656erQRKhc0*+.HE]CEGX;^JWh2eFs0'[g:'^l!E5qTK_dt+CfTZPF'L<8!k=-Ck1ilVgRhU46Yp]itj7'-GO<@nm$'o?c%4St"$XqU2j]1iokmQm*G#<j&'/O]\inB@-9O3":]`L&4rktK^"8M`AQRK`&nfa$ZnJ[;g,2t,PnZ%r.KbtWH5Z/qrWAa]@6DBI`P#F[g_<:7AqGMWh6n!f!*E8QDU2DRI?1-*C:k7s'X60dhU.2pO7K$:KPoGqjd/[`?)n8Zd@(GR9GWQP[NQNn^UnFbEF/hd2/2p<[b~>endstream
743+GauHL?#T!t&:I(.5KlbH;M!m$2gM?DDePqIiASB2LT'iRZ.HpR5H)9VMH9JdGBRi-8Vh47.$5-ua#h=sZSQ6[J;QQZrcTN:cZ?V1,=")Qq`kS/JGDA+4R`%Dme96aCHGpnVP6+]#OgpOIX"DOT;3(\S9YW%V>Zu86do&MLC98n%`O!EKF(=k`;5MhHk-=pQcFKp(R`PaK8bN`d#[t]lK/H9J&2%Q$0(]g3%REuN)O`[(6!+Lb+[IC;"FK,$sjcEBAcY4@$:ca$MZE038p),8\Dqtq"O%;]0JS!r<+$`_(+BIAMgLna:Jqk*"A:X"_9l_`;CKdQH)ulVXK\hct\4B&J9,q9\F33^qF3nQq$EbFS`\6n,68!/?\h8RW3;=O[thF'GCGu%?hF=8%8Ag,>U%^]R,P$*S%qsq(V(4@D4Ji,&VXh5E?Sr`r_:%7WT:06L&tMeD$p,U+8tDjmGCHd;@&$-B3)[,4ugLKk>rSga#44iGhoV]7K5=H8<$[HE)[3NlMsji/b3K(*hUO4/P]l:pg7R.:Z=pcXV>[0kQD@01CkZ"kc&6lR.A8Ot=N;,cgG?p!@3YoqNXA&GV?hR2bo%mR>5pO?n]\jG+o>]ZNj7DAXo/A8qcE=m15OB&__5ii;taFE.EDKf%g'])BmGMH\Jl94FH!GaX5jX*gY@m-A3oF1/qPX#VDqe0@o6"gf$l/e-L)>cJf3L1?c\83^]7H"C\.GRS:PD+0CJ-Q_a[)_cn]Z:SJa)))0sQt%`ABK\hSSA$3d\Vf+aa>!#1"l1`)GHrA:U=B?#[+"^'NepQ[FL:*rZTEH@[X:ou8#:"SgEEq@6O4C'^onI0h6H&Q(jD6kX@0[N;ijhjTM&uhR#Z(WlrG:1R)>)R%8F<pRl#WH8<E9'(T>oi=<n=S.0phYL:\I1?kZD'F3]C)-8?8]?6g>@.*"22lVNY[lnF\]P*47<[3l+S8(L4d2En/XpmO8lRNiF3X5kMKG?u+s>QGE%8&@:Q]75M4DMa)u(?Gm?606Z%JWWT!RY@?eD*M#`VlIZo#<5Sl%$hV!$Z@?8k`+5E5__PDW`fd$F3G$5.q?F=<V4h[Me9$QD#Tf/g7c"$W#gTE_="b*U1+dk7C-p,_s$#_S*A"poH0g<s&kt$lekgu;"8,3;g3VRHaf+O[6stq.7)I+fpZR8oTkj+I#,Dk3MFE"Mm"Q"4?7unhlO`da8iEdJOM=EPs,=>;&[FeicJkND<NQa]:kajROBJ*LQ;8:c5)$l!AAFO&^KIc,o(5SnR6V)[>fS'A1kTsG(l?+4T&u=0^rBq.&I(m*=$_LZ__O)!s!A(F/=9@a1qC!L+Y"ZCk[IdAai=0%24AM(V#(1ccU*Q;pPu@D!O2/h;Uhn6!:)M$-H&-:<ZG&NsI5aMXqCJT92\5l@CI:Tl5=UYnuP>5(dbScF',d6`W=rf7Bmkls8A:]N8Ln)VF)ee0,ZNAEtN&pN-_6*e&[D@Q7t5/?2?EmPZmh)-`t\\4.t"#jG4nK-b&tjdNb6FEOfYS7aGYkm0sW=#=-a<;\D&fg.78+c9jQ""BZ"!E[3RlHM[`^\8h5\O'p~>endstream
744 endobj
745 % 'R160': class PDFStream
746 160 0 obj
747 % page stream
748 << /Filter [ /ASCII85Decode
749 /FlateDecode ]
750- /Length 1611 >>
751+ /Length 1810 >>
752 stream
753-Gau0DlYkcP&H@d/s"If[P)?buJ2(bZ;GrZVgEW%38>f!LBX%fp`Xcs29eNI:^NXi1KNECI+Tb>"4#?c'h`TI"f_"?ocS,C0m(fgV%QH(_#2n"4)K`^/<Ms*u?7n6:fgYsaf=0P.):4gml).a:K1mOa.?&/4@-*Pg7)cB8,)*@G:&qHO[!_'_A>B6W[LlVm2GjMR3e\i;necr>C6T#9.(LV"TLK1oPHeSSB.9bfEet@6U`V>dh6uV<`7)b&-d_Z*3kp2o=)=olqe`]I6kO-JYnXp7ClI@d#r3S4;/2X7BFE2QYpeo1WcTEUI]it_Os?)o;=#qbDJ'P'n;nB"VCK\eru(gU#u@86LJOjmOhlSJ3*TQ[H]HbMf>0Daa6N!P7DCKp;M?gM;I&m([dY&$_A1j>m,Jj[W%IWJ4o1gR#l5IE#oT')(e#8t\[mq"nj[jr(oSfmO$"GcLt5V/(O/\\,J_0,>Tbt7En'Dl(;Cc#i<Uc(E7U)T$8TiF"Yr-W7J&OBPc.dP\Z3F!=fOsRl2d;t,=^OeX^uc;3mG^GZL4a7C]6[+0HV36KI@P03*od<=B?%Y)oFHL?Ah>4k[-H'lTA3N\q+7PBWZg(S4PC8JWqGdk;TMSAH49@#g4A@8YjBU-g/6&DYeg@+_NMqajN\)#&oo;oF.>q@QG1P\bscW3]i@%4#ELFd&F'E\\=ZX&Is=hWEYK%%h,XQpZ-.k'=F]Uq1h#iq/\2i$49opAi7%A_X'3[1/])iSk]iAWc3d2gnn%PJq[sOH\#Z1muEOPmfK>Vq"P<AIQr2_Wa)?!.uXiJ!CG:.6\K8@"QDhnH!/hg<o#pO($rkm,.ApL?K6"imR0J[,B<f59;b/YkL=R]HfDVlo629!MN4ng*-U@]QL9E9L4R,p[:DrG[0M<pETP;!/h5!+Fqm%uSi]q;'j=htoU=Xq>i$R'U3l<`R+DTRkO20a(;Kr_]]$in@erYK"G(7/d[>j8!4NJT^@qYNH4J[=[A#fMWs.rpX#GQ@g>YT+,!?)@?IE*F`m"$<TPb^mo^oC9?;C)TC\JMk4bRW1CY(bI2Tnah0bI@?*TX<D^G_$VE4CII'Reh!4A>Q,@<#%0,_=EomIW4_Eo#;5(5I0?,U%XXh6cL6UmjE0h%Q7:Ql'^bhQMD/TeMJ?%a8=m+/@W&oD[3hKPmV'#7(X):=UmA'CFFqJ%R"$KY(+WT!NZ:0L_[$[1aGPLgg!oA@e%j#08@>'<4A&IA@M*!4sW5h6;qWB6OD4i'Q^Mcp:oVRR`=>#B@_m[6Ifa`Y#!4DJY8ppAL4.K4H?0!],Ner'Q#Am#AdpX!-Vd#jlufZ09Q.B-f]:VHH3WH0P.niSh`q*)AeM$P=K/=amWOCB5ZS"_nt[g+P//?r5GWX-$TtBs/CW$BUQ-,$JG>Wp#Y[;5jB]P%a`(_;>#o\ukE:KEt(AT;uXGSC(ek60m)"7IG!E7B<i)MsY=:&$e<:D"AdmSNXtrLh">V7^H5C#">k=LLWB7Ipmc8\G[*/E.BchKM.)mL"/&iAi9Ou^T9d>*AQka1%4FLjd:a_Cq-8d/M'[r14d%&=`2,jRf4spq^#H!*BegXT@7Sqat7<Q#?E_ljjO1W9JcP~>endstream
754+Gau0DCN%rc'`B'qs5ADEQ4Ap%amX$dO=oqIY"c7R=>:qK5tTZ`(VN:9:;(#L6csRgf6-F'9oqcJann'ln=E8XjPr=@^Z1jJ`JAtj'i5IiBL5#*ld4iI]c<T7r,[/s/CsM"eF*0>3#E.0kOdiI)o\"=jh_j0DM/Y#-b`fbdaJjH>j_t(eFC.WO%)."oP%]]%(q.6E@.uMb`mrKa/h-e,#(MKFF.V1cLc$XY\m;^k*\o@L:!>i,/l&MMs;1>rhe'RFJ_&NMZg5hM7qYV<)0BF9ne"M8K1[MVH0c]U(LYlZB2W<Uc&`!N5F"b:8q]2Z8lWe=.,RLeg(]Rn/pgu(h$rXO=1aA21*OFcGo1eYUYa\]LCEfQL)c*QPpI#MA$U@)bFLAMV.?nRF4c>2="6Z&uI+?)X/)Ae7GaRM#qW=U[oYCr4iiaP[pD=YT5P<XmL%C41!KoJkW+@ZA<(',9t^]KjujG=hrT4ebR@F/I+0`(TNp[R,MYF*Q94\lce=<Hk]M52+SODU'DWh1_pFPK%^cdfc/unZmZdfr[)N4U(k^1@P25"?Gp!;==Ui1><sc)D-qP&H7qEX7[8*W?2;)qCY"0@[U!Irr-7I3D0U(/"4(=k,(*[_'Mk:;QK)@a*$&[n[&nFIk7K6*IlTgoe>>56V/8AGd!ER[ek@K+CK:aQ/9>.8PUu7dSq1'2W2c/?`>(d!,0I>"jElLgF-fH"k\a?[n`Zb,C<?^.&t(2,n%kta7EgdO[\dM"Pap"*9K(,A3TXgMB./"a2\k9sJGV$;'/c:]$W_lf2Q9C2;'P4:hs5li`SE1O62#L*H%klS@;X#!,<"q@)imFNN5mM4kW0WC(K'HL_n?Msn&bdr04#3,@FC9sIV3a'\ru;@Z_R"XI_OI[)*R$Yj:h,jlf%@hMA4B?'PHV[gJKL\hQY."Tf#0R6Nm&Nb?,BF4;BY3ehsBJB0pMadbRSb(;R`@Za`Bkg034`p>4`<#Ru='H.=#r'm_n^mp?"!.c[M'T4M"1B<SBTA8I*llL3T/fj"h?/GspOVDE?jIt?WeWDS"DC1SD]cg,=mD7K!(Q2GG+=Jq/o0e4JF7sC\56Z3IdmQf[NS6j`QOM;s+#-A?.O.aJ'Jl!V`*m_$n2N<jbH/ine"p`NEJs388Fsd0mi`HPg;PL\M(IT?;:?M2<@P3rSX]#/gKikdq?KYFqoZ7H8(!>sA:tk+HSe-q1/JKk-3*tq*B,CGt#][)/%AMZ_7BnGr8`JN/DHV,\agI(Z;k2;S0?)2LNM?t`NQqIl0Gk4i*$][A)jDD]-QGGbSdlj]Qo(n%]+>ST!brIT;fINnLq.7Nqnq^nNZYVL`<DMg&=$R@4EV`7`ASro?jECeU_93,KDgpSHH5XO&0Ml[3"QQn>">pk;)jjY.'=]7Ce)4hi<-7<45iM!IdX[Y<:f^SR;VbS)>'!Qo&3\.l?OL]IX!u)+%9uT*"jkB.97Zi>Uosh?!FnEcoL"oJ1VW1^HnJu_0-8:3XiBg+$O8>h>s(/`LUB_Fp\4Ug-%QY=h"D?qR4;c:*0`#eS.6Zmp6!*LQMIP_nihHc2%TR9]X'jK3jH5K4$eKLYqo7oGN,>C;/V%F.(5Q:@t4OQkQ<][C+a3m[IuNnnd;C2o+0(grI][;bZoi58[Qfom9IB.Mp5(M&U:*0Znh;d0>!dZ]B)$aiBjBIRsFrYTZ-aSUKE'"6Wl#dH/VgqS3ca@>ZuXI;O0Um!-ES\$p'=3?+BB]M(e<=K4c:LMQ^sOeVBY&>,K(@G;1ecI1^[N';.S$3u.6lN,=La*G5#(]@+=Pr,&'r!2;Zldl~>endstream
755 endobj
756 % 'R161': class PDFStream
757 161 0 obj
758 % page stream
759 << /Filter [ /ASCII85Decode
760 /FlateDecode ]
761- /Length 1637 >>
762+ /Length 1522 >>
763 stream
764-Gaua@?#S^l'Sc(=p^cPb&uiZkCh&s";JC>(dT/r*DTG7GH82i5if3>6a!MD#qVQX3C]]:.2AWYf8q;k5?66lE@g2uqrXebWNr_F=Tg'kh%%,=k=IKEB/,48@DZ+7X828\8_6Ih$E/-&Pdr,+@&T#`]9XBZ]'.R\-V5p;!d;IorS*N`eL7/S#(mf3WPq0A5.i7FI4W9=Z!J"MF(SI?2lm\_i)*B_K(sk,c1hIOXr=7;Ko>,IS*;n@f.JNQ=`?s!6@hn;PoguiLID%$D!]Gg]P.TIO-Y:\QG4D82"0j_q!O[oC=3q)n<[*(p8HDO/bs[pM+ABT6EQf*+].NZ'JEuP#B[jf30:/RMbrm#?cR_Aml[#@Cf?s6jJ<\Rl_F9j.RSiSjY6naI@iQQpQ,LQ3MUCNK8u`3@EZ<]s]jM7N`^Cdn%)P$#9BM$$&7\Ql$<)aWS9iS:S?$1gM%tYGLWhB$MjHu*djUK"la)N?:LKW(E*br]Cdcl^kLVi<*bqu+_p]PX<Dl*E.6`ORJO(h%8LoNe`YM6uiV#rCY"Z=Mi3eC<1h'rP<BWYNGBeKZI@h(#@R>_K6S.H'Qt6djJ;hAQNO.at!D?YuLS+ZhX[S27CNQZ<,GL?$>i/#'_=2\:=52rS2P`j%EZs#lGX'e)n^6s4:=nQ8lAbXo\i_C.4oYP\nhG8q#N=bb7*(QEKGr=t2i>r$bj,>RI'$X()4[C!:f;599;r4kf2(9RCk0W>C!1'V`EKMYq6N[YQ9.&n[SGm/;>=2nW!b%D4-mYh:mOIDRBV+2?p`"n`FU79FcEVJ.+^1eck0>G&N!Y'!5\Mo<oPfmPP,(8o$3*S8n@bOnjrAnMo%="!9F'_ll9?3IuO'G_hK\(kmH0sSP(IA7[u7OXRK/jn?[6.Pcg0n%am'$)0ckIQbAZ#7R+uh"4@?.eFc^*VX'hi?7D'IdZ2)B\<r;%b2SKJX*3]LB2l$Bd%K3sK4:`Qlk[RS$A[0)Dlq$ABB_WkEW<@mIA9*;=pN$k9;HHMCh'peMVb"TQD>YgqeV[sgYH)*Re'6YJ("_K3bs,]E=f'##\9uIZop1[s/HNd,-.6j"\mGq[O&qt5nU8PGIt?MWh!*(;T!3FESpNDXHRT/\A*o@:Th:)Jn>`.]0WR$jH8u3]N=b=ZdJ:#WSYJ,ThWm-HVSlke61(_f!Q"gN3f$)jnjK(MiV>rKkZ&hcnJ6(SnPK?E[)3M^81KpqcmIWM<etHrcj.6PX:0NQg]uTX<mOUA4o?a0!^:Z=ql;:175Dd([GW:C;p2).'DdP4BNWZX@"FsEPh]AhCJVWq2]a+:8&%?lB,M4\Z<;_"Dc]<&OkJR#<'CZG.R*.!TEQhQ*IO!%W:@HKVmui(I8l4F0b[@DUVLJ=ind)O,pM$E$FEN$c3CO6gNZ'*jAo"jb*iIl</<5m*b*8oR@0"Dg5/_QA;X8]OUuf#[L(Ar^[p'#]in-d<O5>jLFrTq:X"Bp)'[t"[g0VI@GG$R9T,c)K2?Khh7@^FS/@aZ2#GO8!RS71G$gs:`SngA<sg$*djK*JT(,3$FT84UReG;_pX;5^tt\n0@N4uns7dTUl2oXP'lBNYWdemJ^Ne^R>U__\D:B4E/A2]l8V>:1;OiJX8(sI6bE"Ef$C&`~>endstream
765+Gau`T?#S^l'R`L25MVStU]Q>A\+<F1>8jJ@fVTV]+Y%mWm")\:#<O!8U=K8;hAI7@J_7uZ.Zko=m`[gX553ni-8<G(UAk$E^lL:]]dH'eQn<lVRL-;*pj(HZIHgJs&aQsb=I(jg4Vu`BHf$u,[S1s?Kj__Ajg<naX&-OqpMe%+3l;0HKis?P*,oHj=+5UK!G>lZP76RU5=uS)b\nVuR=Kg*+^IF)-K=+kAq.Y`HNiR+'0PDZdkAZrhSZUYi;gRn[KQ;86_eH]aB5ehJtRM1`;Jc#)Mr?Gk4P+0&!@WYeDJ1q&QFEt!h%tTZC9ZM_]WI6^,dF\OCr#h\%aMmns8@\e1kEZQKE@j'a:YK=DX=/0&Cnle0`YB68$Hk<[sF&[??F1B_GSDo(<QJY7.:(8;LZXa\XN2?5Or%/ta5^_8"=Bh^&'GkQfHX#Zm^M/Yi4t5_[8Zo5)3AD4gqEmm+3AmN?%dP2tgBaTrV*,NrUQg"-dd#K;E(NS.1mo\2[GdpMWXq.hShrrn8O"ljr<*&!\Dn.4&jjsh^APH-[@2]4S(08ApKk&87GjaoGeo4T"h0&XBW/@18W<h"JcC0&cKiEa3oF1idjH%U`'!C)R+?MOFti4FX+oQE"#I=A>RVmi$gN@F]147S&D)_sic%&Oe6RA7&Mcgb#QR-D#G>.'<Cf`S#8B8"cn/CPcEAECMR%g.Q_+,:/TE!b3dq;F*I>#ZJq)+4a*I2G;rX6Pps_f3$q*%PaVka(E7jO`F\Z"mN<#Ki6:kgHGGRel]2QQ=a73E5_N1/%gT@ADB/O[6"0ktVIeMc-0:ls=PZO<L?*hFQO:./h:J%g.QnTXJ;V?IAgAM?B6^2Vi=S@g3?-!TmLB)Qgqki2j]',&4ZGS'/llN@p1hM/:7hkg_q7[f_DhE-tKZUEL_FED:e0_?U6S<4\C/*CAL=KMZ.sr(?M84^/>G$"'aQC:G9D"U4QD\s.r&kscKW^GL]l0,r'CMAr/%X!_TIFjR6(\OdM7_fc:*%'(C=?k#uEB3qoQqe:Wk8JK9X,Kb"#coP.dE*Ac(C.[A@=mZO3q2s4U@C80S^?5Y`jj&_F8EBOqq8i-LMo&/$!-8*A3f!\+O)a#.cu:;:?(ii0=B[:1h<a-s=m2h^q<>J=9i]:s#C*!8)([2uQek?'d5tK\5__P:n[KJK+W\WSA'uJ?kc9^[in;p'rg7'GTsr=G)M?e]mP^cu^a9PL@:)N[h86YPduek=5NHe`ZT>kO_Q>_iio@aNGC5X_>>'k1@X_@b+R8i?/[Fs>QFH#S&9ka-6M&#/?Z@%gl3IH#Z]<0u#5G5[YUF+KdYFK0>0X=*O;:3n$,,HRDQ$<.Fd.2ei&^T3r,gFgU\7"k[=!dP-LXr'@ocCW%3T0RFC!ce><b[<khp^)_\LCL@r%WUnN[o[iUI`Z,Yns[]C4_0#HLSTe3)KkO8%RIO,,Eq-sT$G=feV&8lnNP,^JOH+iRi_D:9N5;t4,r:Ihs;ls@+P+*!Ytb9QE\VX`fCU#5_XieKH5~>endstream
766 endobj
767 % 'R162': class PDFStream
768 162 0 obj
769 % page stream
770 << /Filter [ /ASCII85Decode
771 /FlateDecode ]
772- /Length 1622 >>
773+ /Length 1650 >>
774 stream
775-Gb!SmgMZ%0&:G(NJ!cQH:1:YuXIIu,+\cFIZ+7BV>4fceZp`Yb,Z5p;47:^E87)ug)egl`5dq&-985DGSiJnh6TNN4J&d!b3P]Pfr%rB.E?Up*j)mJ?DrE$,4o+F9`7[6l7M,EFV]5:R*-6Gs_ar4TO?(^WVB[;,kt0Jj.VGY,BQ-&YM4bMJSDt#$6tV%lgttHaL*n1A$4&%3)4uJAk),?"*9'1+rmA=Hq^X=i?7.e`M_;MJa'H=9n%4_1.8ZVW<M?T%?P#)4-2+saFe],Dr^oW@La]YF12VYGo&nbcHbjFH=L:9/p$)p_D6E=qb,25ac'9]cQ^=3M9f0iD$=a8o51B*2Y<+rJ\IuEFh`k`J/rLo`(qpH&9Q8>[oUJ5tOtrq?_h=J_c7#E>$V@D4o>C;0la98mRMQk<0Q*``]85dh_=`,p%.4,i,%:S3_[(6d'rC0q>`gSTTV?--PEKMA\2?J=<;Y3ghCG\&F?8K,1`(0iDD>I^H?;=F?O#-V)h<a\m0-i+/kH[ZBHt.q(ee(%iJa/Ya\#JS;Nd:OHu>W@qZS7qV;tk5BaT[H0'^%p`cJ#-))H=lRmTX]1kS3c"m$/JU1'Xf1n\;#6mrd]1:M!Q-PCoAlI!gIp^3<te_(%C3/*VGd4r3G)jD'n<froT(EaJmg)8HX1W"AUQp+Hi<s2,6D8Q):fe(:(?4iaP2a\71Qe&=8Wm%iMVRGr842JO+qgi*!-6$D)E/F>!<b-'H?f$8[Cd3I9?Jf\>of%Qj$L8#sS>D=[Q7`\TimF*;0YG*0^V%0EC&;F$Y!B8,Xm2=V:_S=3EXnGkm`s4hUQ;DHOeS]f]BDDFk^B8-2N4TYR8Wg9C4i4r0Z@-b\mX[0$b$o.+R$>UK6Q,1@[HP?/HXMBh"\P9%9,1QW7]AZ;bWhU\>@G_*=BL<n?)RG$3\ms`\^$reB!sg)`8GT%2R*`dHa*+95^Lm=cGt(i]:s?e\]]CO'+S%,t5$+*mW#&#]`T@VFIOkIP2*?-f[9>5B*+QPD\J&7'],i3Te*9)dr.R<8d3F6a&d%>6tB]\c.?F44/OD)112rOd334+1Bn5(!.@BgaG4\4>qo1%3'HdDa7ar&-Kt:0UWW'.eC)?ZZTCF8*uabG-"7a<gr=e"2r\iSEL81R9l5ukh:^42D"#"T>R,o=4[t_^%Ar^9'93/Pm?+2Wf]RoQ=Q0+)Pim8>mg!]n#KPr92QfQbiV^f!9C:!7K-\1@Z,E,&N=N!("H+r(;:S4'#K*sfA4THVauLrOCPQA$7lQ>Ki>(RN"L_.Rmq&FmjbUs?&+tda`qrBkk#f>e6;"3Ot=X*7C-\KBq;1g-H0lma;`b<)C3m;(m^=!CDbbj(5-7KYZ/q-f,lD!T="a`p^L-g45eS'FQQT6CHlUi("cDKn(ns2gnPo1227j[+T'_fL"[d6/Qlh&dC6)6%$!`6p$B<^mIo[a)]ca7>^aV/oC%6je=seS<)i(:I1+E>8D(BOme.[:M]"ht_L?u/=e)G`M&&GC>;CcQd1BOG.@'%kkG@DZUHR5poE.>1[iql5N(c8MRt)t9"\BcWCsNAocb)h&3V^Zu2mel/^Lcn[D_;iQo,o`B1cDbK7VEArmpD!-e!#7]reP^p~>endstream
776+Gb!Sm?#SIU'R^LRs);>".YFEeZG*t'%quYd`mVe@SN"7/&oFn986)CSGe\]oPb#b;,$0L#ZuZ4O;U!>%F"T*VBcAW$Zh8[8"+6KPqlpU="1&0`Y3Egi$8,u37ph=<m*0a,&-C06X`+t`S)^8NVBoN(1+,uJA4fI7Ht;KFQHS;5%(L.5oYCrEQ=CF+KW9Z$h-Y_1;H]>+&gAcd$6itS8ND<+E1%4*nN&]3=Vhr=J_:j,rMgJ.r;r4!R8-g[efuM[(DG^WTaO[n,,:mc,!,P%]mn'Yh;1_#r<'r5HpJEc!1YZuA1J!;P1?qVs!K?um!US6buTr*aF=9eoc#B8$A]_$mba'me6h1f_H)I";9FjAc&Bol,$@_`Qg6timd^8.fsEGROjl&&H3kn)9trX#PZDcrj1F'ef\g4jhpM)sDYGUCqn<qk7:M%U.2Nk,5U,2KVd'i<""IG/^5Ph@@<bQA=k-9'aGX6MS&hNY>#%Xhh2=$+J@OdgDbIZN'uJbLdkKuL_qonka6>e8^5&VQWIqZ(Tae$N.7l_hX21++;eN>R5=nVR"fH\r["@^;h`lhOaQ];dXV<Ze9eXMKTpZSc0/T!HFZu^*b*NeU:?1(mBja-dhPmiB3\LcN:QO,,]548HZ@N(O<*,=Fm3m\oe-ZR'S2kHAWMDU'Hpt'VM"Tq=$UZR9]<@ORXL#.5/OlAlGibnf:tHdX_A;I^c+,72QY2frbUA@X/\r-0Hn!NCf@haIF$Okp?,!Y>a;E(o1grZWO=>UJ%PXeQekPGWU_TF>>&P_QKns@u0/CHW)2\8?FR:Q\M^rJ%if8"2+rADr9Tcf,;-,*[3QX#j'gkoef.9Q=,<BPJ40IVXQ)rGF1#X3g0$8<I0TPH((;KmG\AR5)&lDp+[f7X+M.9^[<HsW[=Kmb$4/-WUCZYT>P,sr<\Yf)Vn$"O`)qo!-aOR'NO$fG6%"5>ePHna,)-tVuf6+g%S7,>)bS)N:=>>m]//<;tl=uHE&tcMq:A%3R)Xb`$g`^TfRfH;10`"mfYcOe3(!1/G!3r8pm\.0n'#k0ljLYcj'o=D?D*n2FiYH&rc\Y'=g,+cq?L#$HXm/S\mAW5g%M,hjhjN1WquSn3,k`(1G`?4PXKCUUqk#.g]B$ODp:1nt7mA/h<[g^KSLuk1Zg$jn4Lr&955TS]V<sJlnHpc>O03eD.dYXAEdQXpm!.F/-m$pN;<n+V>htX13NJBOWs56F@$9/J4<3c1IY8_pK,(NG*CNLAB(SAYL/dX==R\e.D?:)E]-WXl=!muM^/VA:;K9J1U=.6K`OHqOHdG+4c:FJ*Z]g0XF:>98c,7@h@=(//+"7P;>R$E_fe\$!lCNt5&)Rl1Sr[B]\7C;`E*WF#rA<0C!=o#:B^cLNZE5rk-(!LDI+S?0.\lD+4]fXls1,7kgEO1h$N#@+_>^DNl&C/MpNrM0+Oj#@R-K'lQJ"E+KR2,&&]F!?@.3;N.6>_n@XqQoa,*@FT#ntbo?@llIEM&+kc+T$4T?^"rEI)LCeOe/i,!llG_RG^+;g*,=cI*R:\k(eMTk$q3^M)uTV\sVcU0p4XnHWWht)&%ll8>Z<R2$chk?6_*eZI8gJ+^g4D/=gJW@*_QGMaT^)V82mAj.m=8+JhLu>l%$lY.erWT#lLt;~>endstream
777 endobj
778 % 'R163': class PDFStream
779 163 0 obj
780 % page stream
781 << /Filter [ /ASCII85Decode
782 /FlateDecode ]
783- /Length 2297 >>
784+ /Length 2152 >>
785 stream
786-Gb!#]D,]1[')kW@s.MAO=*CaZ#0F&f`<VQfKN^pZi)FUgI$GUC@s\t_UWeZ>b-0^#7t-)Dprl(\-3Z-!;>8Pco^pTQ!nt]P^jhDCU)-2NHQ>oodVqN=]@j(?)4_1[G<YK`"S9=?54pt-k'm?'O*>bkr\6*IU.m,-POUmTZ+I@2\!lRL%LauHCNZW0VdToC4mKA+56$""ohdm$'^M\gA`eYE3[<sLb,1rscY<.Z%KGZIr;$k]p3ngQ(<6=d7HZQ9_Ojq*.$l8\ecNeujm8p`AMP,d5Q!7!Yg[Fg%1!:6S))+4`5l1#=Y\<+ibFRhQH#k*T"[73V_bl?V!^OHg&M)9eEmLq-gsNfN1;B`Ufjpta+%Vgg)s51WO.eWDKktWIKFCJ_=i/eOW,h,EKU`rpW>*Z\e[lB3GhsUm?@AQW!S+DZhId@?7*Nm\o]-SKo&U2aHS\pH)2_a8!n<!.JpgGP;qbj2CY2Ln-LR`A`RaBfp!kT?LR>ZK0/K"$HD6jJ[a93csm<-YPV-up:()lFVJ"r>U%247#d[go!Qc5RZukRm_'+n0@Wo@(Q#d,iu992?F\.?chHTj2e8KZ%L)%P%67-,'1r""d\(\<-:/LqOqd._rejR1C^H-9?m3ok&RNkAD:3-QMDu314?Ol:VO!5XR-TqcZr&t>SbrODYu6s&2DI6uI!0i.S:7?o9N&"H<?kqLr]j"W'(Z3V>Bj3e4tb*0$a_oQ26(GAdmO9'$ZhVK/-#+%`JXntCQs]siFD*Pc4^B1.\d@*_S2/80U[m#i`>#3+:Y+ojGH'^[R&*\`02\_4B(rmRG@K8N9[f$=l*g*f,D$RTPfB3I;R?57mV[/hQ;Qq:,s@X$sO2+ZrR^6Mjj:qV3;7f#NTCd,XCH_,WDI)lbHmELPJfJ_Dmh"ndDO1nbeS&`Z1R7.Vr<M5iD.U;6M.G<@>eY(.\br;aV57l(FiO_9C[[F-gT2Kp?Y1Aho;*MZ*r/#M7aU%m%Bo/5fK!\i4p!LehiL48A&il&=?`E;S)Vpsm"tp)^JeXLb,g_=^;I2\EBZ2gB$]*C73Ke36&:Xb6Tt2Mt1`PIN%6>e&H6$<mDZp,W!Q'Qi%Z(k5-$$u2e;q6iC^c,0/)oET-^n))%!)-=1$D.H8:\`M[q>W>?\5a*D`2';$mB%8kl=q":*W.Kcs>[,=8*'8S$[OagH>XQ.aWhTdTbZ$EoWQ_.M3,QOj,c4&l1WpQ17BmRFNMS:CfI\nO'Wba^BGO+F2"+t4)oS$ZT62IP@j\%)\RWL,0p]hG=>uGCZo)4,F/,p9:h*I&<-McO!cJdiPs4&sQKCD(as;.6S[*9mK\dOpYK3=L7,3E,;8?74(^"GC8QL85b2Le#+^GS=08:PQ9@KXsf6iKcY+,Ke^/#<ugo=&BpI/1%&7Uc;]Wc2aj8^dTmFZ4*bP11P&&XTh91Vl+fUn`d*PaP"9iL0a[\ebGc=t]eZd7sG`(ZJ#(-f8%ip?Fl9O/%$r$>a-npVH+e]*H5eZ`uVil-]1J,f<CiYC;f(LOrR?";O;Cs3-3EUjJYU5q5i2"HOU#8a<,L8XLs?p2OFF$CVc-Q%J8P?R%gi4%\"p[?[hZC/jVkpl1p$dH`Z[H&=j<mI0e]_M'bqt&!<IY6T/lQFU]gFB*FOI023/nh#DIik9nc;'Z85$T/D3B=/lhR\rI;Z;O(m\WL%-b4YLZ_$>qb>g*,6h]Kk?Q!d5YK@jF.S6[pV/a:nXQ^Mj'Y3Zf&Q#L-:.]KAS1@Nf5X+#&<k58JPl1"o1ZK!=G;RdJ]n5<,`Hc\r_57hd5%J&Kr":&7A5_40rNLiK2p1,>5mV["a@,hQOkJ7/NdBY2C4_5"NK6k0n;rLsa8O<;/b(9:1bXdBr63XgW3_U-9Oq@?mh='sC9:nA2=XIEa!M-Cn1aD$HR-;m-Lo,9s#gSCaommc(!%1).'D/J#m#o0f4EMYQ=Jsqh&F8X+NShZ\aC]C1^;(ppIp_&eM(IqK4]aKd`ABBd50YWB`\Ucb@bplP([).X%4KIcj3MW,AVYcaYQUs3h'<O.4NkRBb8u"25*na?A03OJj=)`>s\%k>%3f?6#Q#o?&YT9LnLq$-_<]T23@>Z#G'%QX7?``]:(Z>pTq(>F@A`qJmX)EW"pm.,H"8H0$\erc1b>qDe=gt)WW+IDDbu&rSm3oo?`)Lptn2eMr-Ut*H*U,hSDKX;K9eN$_Lm@@SFgp;nA&(^g7rln%@HdgWb@gVgI1<D)k!<F&LVLA<l>'0i+b^U,DCb9CoQE/oUOmqa%RCp&>ih]aX\'g7:<Fe*bMRCm#2D~>endstream
787+Gb!#]gJZcs&:LI6J*;=5ZIs7<9>8KOPm7R+W,V9YW,/crLTr_F-V,.11VtPI^YL,-(_^l4ROXI[[R[+\dqAM,44(dXNr=GE!UTXOrm1\d"b-YMX53pX":k@SNLS0%B=?FXK%Fnl)r9m6hQsc_HVa0o<"Up@#<es:k!m7+<TD=5'^1cBl<Wm(<7$@Pam[[P'<$?gRFZ<g%ono4+lgI::>$cN4'UWm#QG;Bi3,Wf>drQm'nauSIq0;1n/fI!=#'e4&K4%GR7n@f6>!MKeY%n$)6c(#@:1S%&2Z>-dWQ,5":ikol$<B#?<+d*a!6`QJKt7n)B+`k*/o]`Y#uo=JH6X0(m#aX1qOLm37g#&EW(/4)IC+h[c8LC!?XV#fX,#94<4%'Sj/+XG&qeMBQcuJ$O>(_`Y,6hV@ejuZc$UROH0=ko.[gph-E)O;oOoiL)R:#-GhD[0U(2Q,;-tLZ]q(WZeg!1r3X&98'I-p]egQ@9Ek1<]7c&RF*1R'W*M=scLr.i=Q(`s$"UgZB3FX<NRmCoqQsJfg4@KcW6m\>&H^p8k#ihome5rF\WdO8O6!M+O1*YDh(dM'+78dq/#:RGX%6o`./&>A^IUo]"nhO'#\c2'+e^6?-VTe6;W+R+]]DbBJ046035\Y(PU*1*(:%\ed9'mZ/P&ce/@=B9?qCjBa!o"`;FI[pN13kW]t,_tT:;/0]L&(+hJ5%YHY$IHJtuTdVG#aBeaBLplb8aTQF"T$qc#<,(INLY.U,5sgNcXP]l$^fk7oak/n?]o/G#(f[eCPXE3n$,LN0Y.G`u)e*[u>`Lnd\&1`!m"MMY@`'='ne'SC]b4-Zu^UC=6@pP82'L2%ud1uo#u*[,O4SU2HhH.jW,mLo]RWDs$iiZuL[lj&;PAgTnK%U2:1e@tiPVZf+KNp^j0PXH,?,"#XkitsT3L^j1*%N%+Tn=dX&*Ta0kX%>eJ%Q6PAWSqB`A5mq7ZG-S3^rL/iP4,CN;e(.sJ5]h&32'O*/n4`\MLQ&A4qlJMk!L3u;0jB\6fhX(`=@on!^m29Q5)GQ"fONt-lPV%**XRnEKdDi#C1@5EJB("`=\IOVaqdM9@(O,fA+ZU4/I""s63T8f0#Np'i\qpW'R<cH$ug2K1h5W0CQ`rTo@&6]]_7hfFQbEjCVMLInM(J=:<4(AkBcf%kO6V9[<f.\TiAKShakF*:Q%S('h0A3ZX<-p8Dq7W;mC*nJJC"6X7`/N'7tI!SsZ*9a&"Zi2VB<Ag3)D=Q7u9Gu0,"[`eT?rZ!4%[lA+eNWZJk`[$fsW$e,P51#-$^4Y<lV)*-H"BS?(ld+^2b?JKRR!1tjLuFDo>RcOTUde!Ml"IZ/QeGN6_su=1-k[PTA"Zd7AgU/"BXhthlup%Pl2Q5J1PIhh7MIF-XCe&pot8SUC=[8"P^sLjB.$UI#`]QmSbXBc&CI8b;&\2JO4\]Y`?<*&iR;;U*#Ph+;KL"@\C7m!AK&^no't"S'f4ci,)-aJo9_%_B+6gYZ*@c[7$C$A1"EQH#2H(4gs'?p&lcaoU+$SN'Q85LnO&HFT/IQfNsXtR`U*_e(B^gVJi+2_EF#jF4&PPadqO>X'QZ@bH$WNnc/mO5hb*EG35ce\C)Kn)@Ng+sS6t%6%ogCtBIX>`)Q$+MZnMS6mN>S5lIpe^J+pgplBS+@<Qb(T;n4USB\7J7$ouo`k1KL(=YV,=7EY*ngLmNR6;,:@?n9gKo@)Q]IrKCa"XmuY:QA$NW#D(`,2s)DNDha,d3KB7T@S.>'3V-1oT?f"PMIGtFj$#R+[?4Rl6WB*)2)g(_0r/;]rQ)/^78Qsj#r%e`t,dtJ8uqBZNabVI)_)s`@LEm^S^\\`UT@GI.dlu'+?Sd:2r>2!(g1Q7N^lCooIDEk(qHj8.of\n2I>Bj0k66'[JA#[9Rt:a.r7TbKjNmE:.jNU=!d/N#3aqYt!V>g>LoXh:(6&6)if-Eqe&!:+l'&8:lZ])pCaJ7D.R6[^V\!o=<u<(2Q;UW7Zi`PsD#u_g(XGq8,q&h#<,W6n.h"%(H!<@kOoI(ZU#=YQpr8H=77C@0>0L*Q&%&Tps?8#7GabgfAj8e*]>_nW41G3>+6_7PC2H''G]r6V[c$[omo<.quF-_W:l*DASf1NdW0`[Id9>Nj&n7_resgg&M'b~>endstream
788 endobj
789 % 'R164': class PDFStream
790 164 0 obj
791 % page stream
792 << /Filter [ /ASCII85Decode
793 /FlateDecode ]
794- /Length 2300 >>
795+ /Length 2382 >>
796 stream
797-Gb!#]D/\/g')ipps']<nDOlK^>4QHVk_CF+H3VgMCTDf/=;M,m;)U@tW/st`UZd3B)9OU(S#n>Lmr$K18S.1TLX3VP3:W]&IsguJ8cd4)G^8P++$c3Dht3?K?9pe<5.Wm@o%.Y=?0JY!?G1^>`HR?'r\;h`;*&:>np&)04$K[VV0[T<KRj'QL=_,570>.*&q62HIg+Ai-SX`WK9dT1:\.]PC%XtpbjYin4mAM&p`"lN3Z:52`M?Z2Ju:Bo]3?bULK(/$9L5bS,3>5(<i?FceKUJY:VKOJBR.ie99;P45-60bX)"!j]n6$%YPn2'ddHrn)Rj'i]0W=l%N0M:fu5oqM]6,%eN?pe8iH::R!C`*g@10&"D@5cA[$WWR]<lZr!OEM0kiKa^W-Jdm0??0Zek+nq`?PtF1hW"dTgg#=UYTm(4LOU"cenO6")`:<>n8;21'n8fj(k2!LA5B*k^WZJl^)rE5o9-2KZ#"+fB"+YCTtuR'@KmN$2d`"#KKdLXF6s;"+WmRk7>Q@!>;;4Hb&1Tec71&QqIL>Au%R$d7cLAW4EiB]_b+;h^],Gr7N"GQ+X2239:m:8)9-ajK5k#K(gVr:32CT_">r*U.TKM!.=24:#p3Wj$bWTqm<ZJ8h$oYS<oaJ&VJC>bg2N;NcDbraf'H=7m@/N_'g-[;6<h04p0MgIT"_LhHf^`*-o,l=D(UC?WLL_GWor^*k-j,kk9l@YY?PKR]Q=X=Ae9Ea6cZ9p'eLs2^_bh5Xf-3HPpfl\qs?3pS0ZaJi(5:9.3rBWG%cRf69kX.37;:r*=#cSbJ4QOmQ$L<D)'r'oq1cRU3?]J':D4fL^NkQQ5"*l.CN5!clkL>S^i!!g8o-l_YO[$oqO?4$RUKD?QP_Z28$A'="b.V+8J25C]9K%g?,kTS+X4^!D>6rkTN]irVe>[2nPA`sOQKs<L+Ko*=(/E<`a,"iVJ?7n4W_cNIH/OV/-R)f-AfL!WB+p\W[#?`4PUJo<d+"W+O\6'Bh-rhOHcAlE/,0,12TMSdRcM0#la;i_r>`L3ZkE0-b+q--R"54QB<%<uMe,\$!3CnV>AIYmCdJfNS-mVZf$ASH?j'>]q87HU2kpr%1_6;jQ"1bC$g/TUjN!(Wd]\^sQR_k3bKd<1X9,`Fg[88pHRWL5P:=Ts*X@Nt:"6%Qm#li_9\&5]RlOa&P[IBn4p;^fb2X\K@c1Q&2J*kXHs2*N7P7Z%:>N!nRGgW-WqQF=H%;.@5:;Rh5B7oM/0F@V$&+IEcnBJTE_uX0T6[3hR\j)d>_]e"L&U96bhd'R*?ud@br9X=g9b&//\$o6?=G@?4LcV_EQH(A%,sUi[5?le54Lqj[r;##.4ahW`ZX4)6onbcRVGsHAjD%YXLR?,N%Y0Yc?e&ps?(AN=UIGQ%=(@gp(30;QaSI5m3PQsUrX.\2T:X;FoBDgnn*?s97(CaCm+2QLl<utF;EBOVF*0VqZuO.VY/!0FXF9s;:?bnRghK#9DuLZ3Yrb2:4X%l&`St<].:f>feW!Gg]b4b'I_]_c8HKk>/B]JCE4L!`+>mGlh;9Q3/c&m/$g'q>+0_r3C0k<'PsJJ4BqI/?e(,]2$cI_DES.K]<=3Q3=[GH?P\Sj&@Y74RA^!BeRA[#a`U?4mgMFLp"!8-9Y\A6`9'u=n3#*>`s1kN6D;SpP[(?"7h.X/+=j"K`KYTfkh0uHf<ho]0!&s316PeVK'di-dFu93FS_J,\6075jDqmXjYtLD;-ZB#_X7VMn0S9\@&4pJmkO%X_K4aknRGpiPi=Ug!iO=7FDo]?'^;pQuNTZBYJ_rV8b0WlJ.8&)/cQPgVmcf9a&ldkV%UBcWT*BbBq&G-SIe-l%oZ-6M?.$=KqoZjVA'o#Z.hdp9UV":68q=p\lPaVP2\RCrk&a(g68B!fTO9mpg,cMrrF's:Q4c!!1HX6K1:ENN)F(`'K2F'&CeHU;KJT'4Q.$<oeIm<Bfn+!J=VgNL+JHZkkSA^JW&YX'P%TN(@@<R`GdYLdfaS!O$^T'-qmnlCbjpj^pZ8!j67iY7FgI,LjkZ;^Ph>!!,E##,gVFZ*0^!W=L0>(/ZJaLq5O4&_Ua]SA+2CJ`5a*(SWnk]2RBUctLhQpbo$m'XM+&=7@E+7^@)3_?A4d_Q[S\7;Xk[46*3[9>:o!['2Z61L\mKqD^ot@WIfu6JIbZa/$(uoPF'$K1??PW*iJPn<Cc$Ys:H1C"H4]uJhJNNln$Lnc5K%f.;dbJccCu79IfPXsQMpBV'O!f?$T\c3rCk)hJZXGLn81)aG?.1hLj.]/2@[\srrYjT,?=~>endstream
798+Gb!#]D,]1[')nK&r.cn)h8O1J@JS`niWBaU\;F[t/T,duS>+$OaIYcI-o3*,09uROh'9Z7$[BeiC/Y-<Uf$kBcZDD-/Nfui5L4c_$,EMN8*:q<<U_7&l>@X?$g@D)hgB_H``oQ^[@u,a\<V68NR-6]'miTuhS)8XlZHMQgc"p6>&6Ko%(>Ep$Rf_\)P..<_k`N0?mIF^73W/]#k6.#!-0[>)43F^mtATjiG\_9_<!cQ!;ukKs-!WZZi,1QX^6"JCM<_b.NV0H0Oo>eA;WMP[B`*PG_e3;&Hm0CkaU\0A42$2O27;*F<A>DKV@+=l`\:s4C+.K.Nt$BSfhsq#ap9&$Mg)0]F;]Y\BV]b;&HfL#T_%j$/p***/g%ga#oo\q/NIHMje7UiO8c8C79!X)o-fo7^3XfnW=FEKgPKXm%977X'll(iI9S78Pc\gqWRlBcr4^s@=3>g6B,5q/TPfPhF<bQO)&-";EU/c`,+_Y@d9uGn0Eo[be\Tf3j5]X-m^XmA%jIc)srDWSn"GEI$0&A4O1I2^b*KXCBHU6L;P0fgi/NdphEpT\`+l&$Usf#DR/'-nB7?"pku``SB=dD#$k[V1u8af)'qr]8n8,G>'q>^l"3Qn(*\dT/2ImB3*nqE3("qbeqB.f/=,NoMi`QF)hff5jp"3V9:5l\"a1MI"rRedfSl"t"u=;^g^nt.Vc.Aa_>coXcNJ</Moa+Ii!s>pc>60-Uq1Q^V]3sgE,X2/+lrcS!CGtu:adA%WKr?NA,=7lfb#@aM`L4t(<OT[Un!3&gaV*><qZ.&q-mOQ\@GZ12$G.tSWnRQ@-_*TfP%WuYFYPd`(%H:HF`s[KMY]E8l9n^.9!sEOD=[cMRe4'lCH4QcJpQ+;oY'aG=h_'_Gk;scQU,AHdt0.=`&Ahr@OCdF%dN)OpmTf9*[inPO6st(LU[N13PpMeYHCn22WF6AN!I<RfcYr(Z+af5qAg*3+5FVS,E/;%Rk)ZbUVJ6KcoCe6FPAtV,QD.>adYc5%cCTKhDmAQ3j?7jt<1G'[J!7N$^%oj0=urXXn!\COn"`c!eI&dK$(EEP4Q]Ihc!A,SHGBW1gqEoQeWb+JPq]^+<>idoc_:Q?`4gMr5pgP!Z:Y#7<Hc":0nl1rI%h'gH1.6`0A.JqB/%3VjI@01tiUr[j$s=GYS^iKOpuCT81l&^4[7[Rg1t<^VhoV-N5R6GN%A$Bq8s>F%1UXcVP/4YtS`C\SDFQS<QGB.iiEQp#W)WnXod\dlSW`g2^WeWj.qPUKEW-*/*Mb:.@7Is&!*E2O'R/o\OiiBL:Hd%F=Wjj"S?U\)RlN_#_e`G^rm1,qN0^h7upYiYikQ0ufm`qfeti-!GigA"`Q:$0-,@J\a4k%FGnIIp'd%Dse>HQu7DC>8#lN11eikT\.`:U1D&^fh@ZoI;T?EA:K58WApjKuVQ)#T`CoAgs''*(1D_(Bs+8G;^KDQ=A'JIUR'O_%S&,)G=DTo%7&("W_ht+jA`]P-@\QOg)R*0XM@2r2*4*dQErgD,cWZdQq,u<cl=`_.![(]Q=s'?Y%)p+Q:BBZ7@_eYpdV'5lIJV0p10]LWpeIp\!oj<nKrPnUf1JQLY5E`=9:6]h@-@%KRf+MITu[B4[OKOj4>#fOHOAoXAQY<JVA.H-gh+lA0/?8!3Iqk"gBo5PF$ai)B*mLOZ$6T(W$<kQFXM4m7C**/o44?!?e<I(C6nE8'%`*f^G;^%&W,*r;4B!lMk,5?qL[?[dO1h]'.W(G5n6Y'OSnn8dI)e`H\bB^?66BQnu]8%A-Tr#GRnqj(#R:+st*hqHf;<Rg<kd8[k_7.$tD(Zc;pl'utJcW\Tj&SAnKfA,sk\1XOd>K\@h;g'c=9ciBF>@IX&g$H4Hk47lg2B-4"0XDbh/7noaa*HCf!R(7@Omj/(cTCs(Gl&I+AJ>H?\s3.C6<%5),Qsr1aA]/*6*@RHa'4+?&m5qsQMo*pIhTe$m)JcZN:)m=m*>>e-Y1lA(bBit69)bb_F(,E-Ul[[mr;#L5_):SZCIS>j321lf4+N%),.HGk@$[6M!Q&WW`[Pe^3\\C3i&=jGdVtF$\X2u33:LM.lk&_/0^eq87cU'YsG2:1?<XYo+\U4p7:36GnI11C%&T#d"+n`]3+XX[3)(lGg5rRWrd.qB$mE]F4U%'[3+@uTNCIG=gt$Ogf!Y)"W3$9+5q'EVa2_7c+cG`CMp:dVS@33DHA5f[Q%U(rGs9K-RN4*@r<EFRF\P<F>%A..T-AP@fIoU?2mX[T%@!X>+JD#`TXojZJ3*$;`GZg@DjC\;psU?%duPda)gZ*)pO-r*`,A1gK(NVmMe_*c`:(pJO['0<a4/'l<4VV#JR3TcYYT-X!R(C81tVAbt%Yc[r6^#WIZBt~>endstream
799 endobj
800 % 'R165': class PDFStream
801 165 0 obj
802 % page stream
803 << /Filter [ /ASCII85Decode
804 /FlateDecode ]
805- /Length 1977 >>
806+ /Length 1804 >>
807 stream
808-Gb!#\Iqou`&H+hTmk>FcV^8hBmb7""Q#QBLVA'*V2<N%I+NV08XEmrg-#J&/p,=5lBB"/OZZ'PEn8>&LkfoSU,DFLaDs714-,:T)\@;khN*n>kYS2+dE"*loV^F](:Vt*'?4+A`2e],f'^)!Xr,SS.8El:?bOZ[Mg$))_%Fkue-YRHZ02*N[@8Pqj4\0:<Pb,);lmoQ1Q3J0C4"n)]F)F8Q^[o[`L;A'N]Q$.5q94gn4,=AhUV65m]Br&47prm4\'Bc@Zb+i(m9`$A#+amA\3#l]Eg9WNQ^1dJ,bgudI(4O:hi4i\,`RBE^0nsr[?01[YTJFlh[S$6*e>RG%qjp\#QT=0$<,3I9_8!P4u-Z$iPk"#1B1=kN252iS/H;Jr?0c"bhoFpQ%>>0k/]#3?kjO&P\LPKbSRtoXp)@J1W4.pj;Ip.^hG.Jmrp-oS4YX06*ohNBD<26rYKqhis,=dJ3g4bf62Vdm=#JTrUb&'CEA+G)BV`5g70XGZ1"dEX*bO88&$Z\Xh'b^-L'L=`0>!TQ>V(06Yg*r1E*<c#Gi2m-p1+,_N_(r%P0I:Fi8,Tk#d-g2I]cs'nh]MV3;W,6&F]*U8oT(q:h17</-#B_&V!>bT8bQ3LBLkRim`/WitOc^gJ]%#dZNILZ'6@mtDJLrdO<j48ij+i?(jWNG2$oO#D#uQ"%p'4'P$:H^cL%$T8D#0at"l=&p">gk$>Dd:0sqWUd(I:Y^3_8N0o;k)YjM&S3NI#rS`uUW=$Q;bb@g-e<qbH%mu+jT0t@q2D&/RQhalJtE.^:FRO88Atopb+,Y3PoNYtRP;aC6&'EtKNp01ac)%9nbC+P^i8YIZK)!S&nAt%Sl,,h:??"tR2%M92],p6,oPaRpVi,'p6e^\FN"aqWU-!C;(>fNB<3]">"<7\QM;]V5nL]/NC99n-r6([&)=o!lh7*l"JFmqUl(].Eu53on7@D?g^A2VY05/$f/m6:O>NM'D0J\E$#8OkP,tI42=;b<=u[_b*\J4tE5P][hk<bre+,S7@6V7?rmAd6N)`m=O=BFmZS71L)Z!;]CX1Ak&WOS^U*Z%&;e>"^:uhlNEbadoCE0))5'XeYUu`/2hCocrUcFWW&J:a=)bPK56mP"MLBB5EOASg@p]19",sV=,Xkb-pU'=VifI"g$/M%hVr9io=/Yb@@PGbNmCL8(%%A1($2W;+jE`YlF2Mj3X9t'gsLC+d'VU(pVS.4_R#s2H!>+o&Y=luaDe>kRkM>+B34RKYpVOCmkPssB'<'[";FZ;f]F;.J'(,8n7B1br.H%MlL,QJKnV?o$`TD($Y&tpg)2pW\9b$D8<3E+T6;9[S7-T7>P8m-G"W^84lU7dC]eu'A7'?GmiR8nS4()3ao9Gi6HPfbXOqUcu>mRKkQds9+S>1Z=!Hr8+YA\Vu7cfiBgUjUZQ`tJ*,7Gj?d+5Wr;K\Z#*mhBij?E;;HjrM1)g@8`V)s6o$NG;cFU@8Gjg'\.WE5,BGK@&fpf"=$`_Hq6s%PQ9/1Nope>-N]gDc.>'Lo;^I'6Q6#4t7a5abGlr[)Iu+dIqdN'LoXFK]bAUH8(sN=I.OO*P*q:fJ@U(M1u8s1MAipE7u+beBX?*+=/g[hmm&26/ftr1&LK.\S1j/M`o"V64H.1*W=!8$.h%S`4TjS*;iR7E<<1$8e;'GXBK^0Gl5Z1rpk_'St&rl5OZMb#[+8m#pQk*XXi?_+T2mtWtVUFJ*NQh-&3NOj4tMI=3_hmBY0@f)r9ZE`c0Ihd:]]3nNs2]m-6!i>VA0:FEX^_UX)9&.J6Q5(ThPt20Brk5ktUjE"XXMCjfoJ<aGEeXrDL,VaJo+Q<*-lK\kOD`t5]8c$6V.(Z0bJ(I>7^pYpg5@Ri^3Rqjp8G;l/Q.j&23@n(@)hO*,U3^H!p-JLGecEDoT'T^l4@EXK!.u/RS$/Gma[%=V2GZV]Jelkoh#"_.*$1::@lio%.VtX`NE-h(.bH,p_~>endstream
809+Gb!#\D/\/u%/q:js+)RPfEjZ/P4drPrK(S":`pU\g/p'P5]E#aOW*KFkY?-rmmiu1f=4kPWE9cUZ"+otHUp=jScpJ?>5E0)"8k?6Me`\O)^[:ANo@e7#!PdW:S(<WX@CbO^is)%$q:9#3Bd3"[cDF*k"I3Fh6N37SsW]gHoO8TL"=D$&\oY^""j_P5G70YkXRai<%)'F*icidjA4>,n?77ap=gHY^;Ar9qs`2F2]U;NO*/>I<dshuIbaTb!DsG03>[RPZk+?[R>Qd3Zbp\5Y2OJ[7O?FV;+OfdiVidIGU(fG\jk\YiYm\4%(sA:4t1s_#-PX_j(W/(6S`6KADlH.^^;<E9?3]4nl\hiN(o9_SJkBX1+kjs]=>9gl$cr,<Q961Gj0snmDemD5P4[;r[MDUU2e*_#el(Wc&seA"AD3+dlblW#qA5+U]HgTSV:#EK<WEPXCOZ!L]J_sVUJ.W3EZ.5a%)Mp.KN]5*;DHm15Iqh<J`&&!A)EO3V643n1n!;KY.P0=lcN/`_)315^S'F>Y&*&U6l_D@\l;%O/OI#R!?FH/4OMCY6;kKdXE(GH]grTQXgkU`&Cp*p<7KN;\VMC<r/<0_S)-t[3A#tJZCNKB,T;n`sLp"B6RubEnm'*B^1]-(U,;;#ap38DX1%dW`#-K`1M<Ub]:C$%2NA/LFJF$#RP,URFa,8J;n09/M5bn5FsV@<p4`cICN<`h`dVe^L+%6pAnMm^L@s"G/O!6Vp0j-@*U/0K_ti^*;auhm%1Fd46Z/ff>I\KWMoE^"T`E6((P:r'QeSM"9)+Hb`L)3XKIq8As,on/07X,do/nO350H]Ag!:uN;[Sl:W#%`5%9MQJjTYjYu7TiVS1\B:&.Z.k(qcLPj%EAQb=N/*PXc/-_sX=;([kim[HbDU"Nj(eHfu`<@on,mTX?-*RjAZ&Sti'M]"1u@a*A2%#0?-()k#_Dfp<S/m0LE$Gi'F,$<+q9hY-;:]+Z%kN@otW0LbFY'58^,/J@1O^iNYr[oA:O>/AmKj0[W.O"qmf5$)Zp0P_M?,L.)*Ra-a(0#qRF]*k?L4nrTNfOSm@0LacYQp)Lru,qn-IbttgM>Wpe)=3f0H`[oc`sHt^H-\>5>G_E/gp"R_j#4nT>F*5Iq`WGq#X5&*'[?3\MAd$!q,NVVnTo1]O?"oK)SPU)mt3]9!d,EDRMQ/fB.Y+c,NM-0@WOWcY8'rb%aD+knBVL,1#aiWjmUfD*DHBJ;qB-.5G4j<`h++.]I@u+fUIS9lR6_0:?4h+@J\2WE>XiKV#D%*aa.40U/-e]S?tn,VaH^f?&VN/?%`6BkH%g/L1N;d[ZQlW:i['1A/L3=LqCgit/00;90,%J1K3>hlS+[7nksGQ%i_[CQ!j'E]P6PE*0^JHi-`K!RQK2(Kn]"!Q6F!n-9=ckSNfBfiF`rn.dl6(:?`9,8ANQ%IW9k*AEY>K3iRj$_9huLPoaX>&;_(C:&h:HM($ZF<a%$lGkrG3,DZ!6j'tpSOOd"d'T*BC"&M7`?\=G]*5!/=bXt$'_;EO5#[BnCD<a\D'!OEl"Pftp&2h9^bf]`4X*5WAO;DQqVIoP>_`EcBJ?3)p!a$=@840)Y-.^H[9mp'Fnej7I\H(kBnd)7+0?DlH>fL.*a(m[^=OA4F;Zn^P.N?hk$%)RIi^M?p7\4!_2!i&^'2!4GMjDEI2i+3W3/CmMq(2mEl4bnH2@n3o,&-AKNhEjZ.cH'A)t2W[Z7IgKMm2PLE(Zn;Bfl!<kU!'fc:<2?YaE5AMDuHAI$jsH2=s8>Id1^3+))i)GX*-"Xd/VU&~>endstream
810 endobj
811 % 'R166': class PDFStream
812 166 0 obj
813 % page stream
814 << /Filter [ /ASCII85Decode
815 /FlateDecode ]
816- /Length 2416 >>
817+ /Length 2211 >>
818 stream
819-Gatm<CQI5[(&^>3r.g1Z$@<Op`U\?kBRk1_Z^Yf8U`$Z;&.]P`6s5Hp;B_krm]Z)iP[BlGlg;mr[O%'&LPP','N,bIU&U'lU;'IfeP/SCO/<5;K4$snp[iWTIeNI4/DQ1):M;j1#2RDO"EVl7rqsUT`7S=ZV2RVE/'cJPI]-PBT>=pF>9fN^1rfYbR]u_s?b`N4FXEWR\)5AEUD(%c#q,+9QSeY-di\MQs*OfScjb<!!XL/8"QLh\2rla%8BYgDnp;g./7\N'X]%\fBunH&ZC3Q18k13O='DF:/pJFHD\rmhN$H2H//)4.Z<j*<bh>g(8V`gp8jMd*.JS75H%`i7)iRN\efR%DhR/J(P+/kI0&`3Z+Gu-6E`hQS'm]n0<C17H8kOcZN_haI)?uBAQJ4'\RK'?>Qnrpa8S$"SOrI-4dl%/qj=l'0/;P^N'gPXF;-LfYPE$9@iDXI[)/k)cZ'7c")N@L9NMF&e(r3dm86aUj-B"_fe2WM'DDVbtpP,S'GN7XYC<R<j#@T+j)OW-Xbp,D[:a[5s.H/H?#j[OHGD@F.qC#MC&T!u?ZX.mffUpQZL?i]mg_8+2H:J8+NaFKo^QbII=2!(*IS<TM9pRLc3W.3lI,fma)l8@$<:Bri3t?=HToD4pN5JMB&+]$LK),m$*:ra)DC.o`N+WNfg/]!/QC4*FR@4@,&sFh$<K^_YeP0s<Tq.[_b2b]&&!?L1qa:;X[#B=kT_Bj#^WNWcJeF)C!(/7eM?9Sq-s[Xge=t5SDk%HO*oZXTbaZs6/X:Kk=cl@:<<<&5<a]nT]3Xl":i!3LZnaOW5pZ\40sV&.V33UpNCkat2o[f/kLm@L3uh?fdo>;)4<&*FaYS/7"oV)paM`+_PQH/d'NH=@o3![sd*1*hqI[])EO*)V!,7kte"02^Z>/>SQ_q<4pi0]U0[?XX(1(a^b%(pJ-@#kYQ;1T!j'"\m[</RZ*OoB-^FuRAB*j?@\Id*4(k#QXER*9cDB2o[\4et02$a:'J%;N#A9)\6,7!_ZP@OO>O_`P!L11fr\^[GlfB2:/Qd<PdO'aT41HTTAcYlsYZSj=T_iO,FpkIei'42a>VVf-L*>H!iH\4i1nQJ^b9mL't:gTAmW!U'JLFg+ce65m@F^0!pe#:\3k9\1D=cN`)-mI?<W2fgi,#_,CK;qoq0Alup8kOM>2k\ml<i4"^Dr\aQ2.ED(qp<uMX4?m84"(TJ@`*s9\%M.qEYEb#WJ(<I(nu7Idrda!VhRk3Vt4$I<FN*t?`7&;@R'OTg2D-N:k3SET9n5p:tdB#>_J5=74CGhQ"mik&8o`<`sV?/X?5:<>ubj>G)0EJ=oqEO:q(*M_P8t48u:8E::P-!`=qaM,KN*=,#(u]lH7(3oiMZ]n$r)G"8SGR6%^ouRO2@UIXNWqWeI+:R9#),LY]QaL)m)\^%8Tqj)362d!"'th<rZf6c5dp5AY!%Un-'W7eQ`ATuk?gX#G:>#%>tn?%[CjgMZ?NM:(EL6n[e4\*?3KR+qB7T\GOF-aN6^#B$oiOF9&"$#71K]dM+e:930;jhT#alZ\is/ttmK%G>\l`[>nIe%<M4?(8tdC%3uA4>3<#H,N5HnDgZ+MQQc%C1#I)EPbj8LfDT7_?G"0[.X+XG<b!CpA\k2hmqetGA"t="W0R[q3[GbLU2/F8\]9,V#%^O5CVn,As`8#r!6;&CGr4_j)KmY_:pp#9No>)boA)1.5s5qV9iQ`#t1/bgEhNc-E"7Yo&oVUn%H7!2auFPf4b1sar=-di#IeQ:3lfp',A?#>pDfN&92lF\:50Gi*8XXi^1?Km/"3+r>So%IALF5C@FLZDp]lr;PE5W;he&qkH52qbNd7#?'$jb=2'j=D7W`A,`9;(C"YJN($[^<!r*Z8oUI^f6tV'3<siWgBXo"4S;d`jQ)<1rY*+GtaYqB5RQ`NI)FW4J+gai2]W]b0^TK*La?]1GTs'lT:[JTiOjU=2AVH]+We4TQj/B7!\$5I]'+Ph.5K7<3ImT&,/Ub0k=&I[*`J''(qI),+iG?L;nL!ifI^)h\h%'ecR<DpCBI!eX28l^;]2*WujccjJ"50"JmNUej._2j1*"Qs:Ts^k5TtYMJMu0R)+O_-'g&cU'o6^mMg>M3fAQcn`l5&gb3%rl2s%k98b18i^"[1rE_JoP3&CI<CD^+JtKH13Jnp?J7NL(:J9/,7"EX>gteSQqKB0hbW.URSIg+kpc&n>Up7G(Z,%?!;2nO-^;H<dZXqh4B$ooPikb5"eK_p#9bBNUanmuK<4riL,]n]8H[mVUhf+1U^J8)pYN3YoPQOet)B^DCs;oAL^<PR3!Op('k>bT7mc?&aT6VN"(FbO9RUR:rB+NTb]Mbo;id>qZ!@Z+%*NQdKY[Xkk<37O)fFHstk1^oc9tEc9EKIeI,A&rkf~>endstream
820+Gau0Dmr-r=&H*Xms2-"q@&G\X99sF+6T]C,ZN^]^Y4^?VFYV5UA[.OmQ)*F9^Y^'rT1NP/JX7-<A;bY-O7+.Y'LEW9L$j.G#P_d3c`]\A,8fMR`^($.>Bi4j5PonY(9['G-8=f\K5P^pi0s8D?Tr.p.m7Oro'?J-m/3sNDUm5-1CUd"(FB\=0UcL++XE9pU$GorJ)n&h&f=_g/=9UC%LZ\QGAX!P/E7W/>0Wbhl;#]+=u'Tt#qfZY%7\Y`aM/eSN4VAt/C*YfAq(n7`cFtaX_O>`P)nA.*+/\k0`U(rl:F*,_]\e);klYr==?<gKEN%of,UlDKdP(bI3)esE0GpWV%ds]`n4$d`^(0bV+PCA@\snRk\7g`NTKaA=I2=<,tp;&bt@o:JkTjL>,@S#J[1Yh+Uk7`I$GCF%P7bPDm!&9/R'jS-AJ=O0?^2Mm'ER6NA,MkAU1<YP5hbB:$KRM4%S?EDf;J+['qMr<[]uJO"+AH#TL6uE#$<h.u,i7Khn>lF"XR^!lcFgl1jg'N.)`T:.g<#p3gf8#`XquS2^!Mp7B4?UN4+(+=q8]jNT$MQQ<'")Nbbg@R=['e9?cQ9su5+NbksE2R<;;'noL*e=Cth1I0LO$V)]$f`XSH"j8S35)G#nneJN=&\.2@6tp;V=-/RoLPkCl&2^PS)fq+Ur`+!U%=Ck[$*XC)oOk-MDq70<ZZ=(YiI1&?]c]>+SmTSk:LH%M$UQ$T?6WIp6<`jm%1SL4>0*(BL[2Z=G_3%]aqN\DM&j!XYc^i3B&#;WbW?*0bdd(#fpO2[pVSAOl4)tWcWIf&E/`+;JqOa?NtOtU&P]-oG^(11SBbO81YVVKWRQkBO\bEtFE['OC_?O`Xfc089U\Qq4o29K'B5km9P,f\!::_MaiUK?4.m\6TWBa>$n_2RI`iTM>PjJg$/_u[h,@Lk09N_.lt[ng0uX^$WA`,\:?hGT^m&;3=L8Q#o=1UIjpnkk9HVT'm5lPeaj>5,F.f5mM2.uk#M.ukjjn&l0^Acp=Od\b"0-AhAj_EnrN"t<"mb1\nm3iLd:RfEU5O;RD2A>dPSJt]9FE2FUpf':0P@+rU,%0aUY?p#U[:&/4e[cs,WT,E?oko4_cAQk*a`-346?0q]7I&fIsbu.n$X3[]>n!jj-oSJ$jE(LWZDK<D$6#U^:G4TJ>$CmNjX8%Y[5aB^)S'@ooYI1;iG_'c?dCtPZ&SDqg&A,Yn!FXT`3l&DLX-)p#>IcSMr"?\?cl`RJVVY<J22J/Z?Lf."R\=CedZDP\MVd?5RNFI_SBLO+;mN9)nfM_*O^_XC4J#o1E_$Z:RlM8RV'r10'0:YY4ch3a++KcW+#4r#Ue%80X9u["IH'.Gu4"/(Y)i;pf-cd&a7/PR\DNWo0'91[()9f[dYr**u:N;6r"kd\p:XVGLG!n4kQs`D*8iT8c-P,,R2$B.[(SKh!k?nZI?jn_C(rPe1>q!S':9pQJ/+Rk;t+H90s/+:S78_G/nd:^Z-8-4W01BeQA&d7fk5qeADOEG+fNMF_UCFrR@@WiW*sh^;-c_*<+[=3;@GZdDIH"V/ue;rnNuBA<d[AuHK>i=]dcf)!C/](pbG4kr[]aO=9S'k@)W7b]q@e%Tt/A'Ji;!A9KgAE1WtD=ch_W?NRgaJ1otoE0=P%8Q-M`(j@Z-_Er%j#/?-`K08V0DtV3rbS;U8I3a`E%EkT'L2R$.`Z/Dd6`EHQ$#.4WJ\d%j:XsD%%_cL1U*"?OB-YGh-ob@C>>dTQ?!thCL=LdV3oY7U6u]U^S'8,_7A?X)luOL<L<>!bE%]tQ/$2HZ&P%2gHW$n)m6T'^GPgUH,l7%k?Ybt,7>*jAA</oY6:eu[`doAHE'RDl21*Vel8O7TsbKDnIn=$`_U<W,Zn?M#T$dB&8=F;@[!g+3+->i,\I2GMCgomVG1?Y;&ckpQHg%9MG?+L!NiB/@Q7DX/`</1(.t/CJ,:JNLgGY.bVq-Y7??+Uq1`\ZGY%i!nPFg"#kgWuI/.eaX*"e5]2YmBHjRDlTCk9"k\b16r<5FQ_"sq3?T2=KL?\/^H"*$5OXR?8GYcXkmKVItQ$Y[NK<XZJO%8N&j#`M^N*pn<)KN'0g)o-JHHRZ)lGF&hB0#6MVL)t<cK[BHK<%:fYTIBD32SSI<Ad-Nh[LcXk0U<#6U0i>dEk<cI9+4_]j+EdSiNI+g(er2".^-GEpo^\r9QYKm&]I~>endstream
821 endobj
822 % 'R167': class PDFStream
823 167 0 obj
824 % page stream
825 << /Filter [ /ASCII85Decode
826 /FlateDecode ]
827- /Length 2097 >>
828+ /Length 2372 >>
829 stream
830-Gau0DCN%rc'`B'qs5AF[ljg%2q4/!Ecu$l?+PX3P6T<N65YI?\L*AL<MOXS@*E%b:WT,gLQ3;bTo%n_<mZWO-Mr-Ml:C<ibVY&k)VRT.FN8d-95gsd8R3!FIF*J6THcHd<%u6_DjCeU__h5-F%*u:0QubC'@"o[CFMh.c3';`.G\*X+TkON06^i8u'E@lug*t?]WD35dPet]!r\5U?`IrUh;O9n<C#seP"g=QTLk"s5<MEEc(<<Q"AWt^3fun"brBShM!o2[N,9FhaLEhg,?t)rB*cGP;%FLnlQCOh_iTu_03!1aROlRcjEbWX]/E)nJ_BubA<&3KM6n[Ye$"G"?XPSF/]q#JmpP1>T(JH4sZ.@AI3ccPt0e)dYVqs1%;p);eS1@7d5SnM>MAm1gQGVe>G&B,AmF*'7+opUPKaMETCr=C.6=>JJ/i^YI7E$&?3AHdsA\!)XjB<i,\Li(N16DPK>igKQKq-8=2T"R0Xb#22=#))(j>G1B,s^i,Ae(-&:qUDbT2)GAW2Ljmd5ZcT-+DO.<YfR\f`2E#aMf?YG$R.+#j\lkkY/0q!:U1tTPH/aP(E$n"l-pkX_hea&[j1A*;Ys\"_EsM*!gOa$5:4EK_$a77LmlG:]g1-f0muCJ3]pj+5PYOL+Nb8i*(WG93QrAU;BJXk)[$3jEk/M!R"&p^eC82U>Z_ANi:GO-k[t9agGKhHF9/,Xe.R^jK1<qD+2tC7au1[ia^c74^/6,He7Z[jWMor+&VX?Q@8f41G-QB/B#"K`&fR;bhD#dZHh0RDH2n7:X"(Me+(C+13MOHo-TNtD0W%>PAK*<@c")Kc`CO@`G)O/gb*\P8U_&aV^P"_KGu?-WYJ$pdEYqc"4%PJ54&ssZ_WDU.#>Kg65W6@8r6Qt!`jZ7rmDMo7Zl+l?OT7*Aft0O#g`>moBR./.:a2I?W(KX6+]lD$NFBc:POnoGFlU(E!$%8oM'sRe3'j]G:+I7SFfCR^XM@N/R1JTg\V?RYWq>F*`:!sXP`SCU(rQF"814_T>mh0p`K[/rBRs3239JL9df"3@rlT'De6ulO8gI%=%FdI$Lrm$RNP=miju/%KMbF+a!]Y"C8+=jhg7#TnYjo`dK!]JBnthonhK+"a"V9FFqJ-gprr_%(rbe\rpm;`N>DSB[.s@3bb@j?7JrpbTc`bCW;CQD7SfOIM(T//!B"<:QM7Z4Ij?Q)\C93SbF-['b<6XB7qdr\_ZcuJcF6'Z6c0.G](2sCUK!URi+%QlPe/H;Y.NHS1e"+fL2Y4$(CDGNIZ+Ss$`]^2M2tS"*akWIB2JumDQgd:XeF"n)g&c/0m'VMh#C#Nmq9s)gXu5R<aXW]G?\M:"_^YTk_pRZ1h_g@iERrIIeJQ4rtBnlnpAQ*DpWu53M0"5aNQ?2fT;@m7E<()aH+<SGB01W&g7oRL.F&S<CYYRjL49moiNc-a6OS4C8s_-&nE4ZFZ#L*dG(?NQ&7)S<[a8V0JcXsa'bHU.:H:]Uijp1k$h3`GX\q1a]8^;?n8C)6_LV7.7["39_rgTaZ3]6V)F*I`'9!/V?2#G;7IOKHE`-S>B4%G_L@b$7t*,s1!bCMHAe-g)2"lY7nN"YaT9M>,%LeQ+<QuQa!:c\;$7$/$USr>I!<s1Nh6%B>1<3rWm.W91<8ejqfpb?Gh+&)8%m49qrimB'k6UWT?g)1Y,oK7n]%OM.Y$%Q\;5f(N8k]:I%VWhKYlRtGC.ATc8Ug6H;.bqGFNsbpYf=WPi#q]lhaJR^MiiEn;2nmb'jdIotI[)oFih$.TZ8,hB+tpepN5,Vmu'C3;ouJ?J"rJO*VIZ8%gtj&8Z<(\8C[nhOQe!A;7-ZHDW<^bO)C%WMoGbOg(78r-2s+*bA$dj&79V^Q4hY^7Rm7UF2eUEb>4q)eI<6a[4'q=Q'^I'UKfKWD`RO%sq05-U(NPM!A<lrg#SG-f>D3Fd->tb)a.r#n$.^qJ]_b-eGtU,I_)tgnXDe;'"Dqg&=->0@&7@?=05]\sIDh8U9VSYou9o%6@"SiFlH9eeJAEBoYr/aVJ)Q<,FXuV$\+b[!Ui+WVK<;Rk7jX8_b2C_AtC6\U[0)@;[*S%M/O@gR"`9~>endstream
831+Gatm<CN%re(B#9ss5@E&$bHL2NGQXY$;;8h9Y6d^m%W6\[oh-G5tdH]7Nu-$Wg!8OF"ScnOn3=?o\kQN?Cq$Rk?^3H6i;q]CJkfDI7c0M`YA/]RSc2+L,;&k2q.`=YPWZdoB^]gj.iC5E,n(WRf0q7^9]RN[M7TAoUW3qJ+#'RC)?bo0Gna%LaFr1Z,%#Hf`$Q=T2R\6)(hXKc%Z+p;P1R(G@bUEUWdEODc+[Rdg,Q$S@s1?Ju2mgqK"ppT3Yj"d;_#=;.)*uMPGW[D;</)?M_fZ7tM*04;f7nY*V/N!mlbe6Z/nJV7@j#gbj@EB'E;%XJ@\$[`)mA,dLOIk5S`(T@^8RmlK;#V^r2(ku$Wn<)uSKO7D2q`HlB'pLt<^p?;4n7I)D2Slo!TPtPV8+m.0-c/umb-rDE`duc-U(B%=8`2)trm+8_Vr4Q/#?:o-9ZE[p$!YLUh:+J8AcFWBpKB(*Goe3-P4q9W[(HX8,&ZVieRoQ6R36'_Bc,hC>X_";g*#ARN1s"FJcsIIn.rkBHAEhf&N=S%,r-ImPGs-N1/,-TU$ElY>YJ$HKPPif8+!*oM-WKjZ_bPWP3V'^II;:l`$Ejc1//"cDD\'bL+%=([NPq[Ac<OE.P>r]jL%9!oW2\>mnP,r+'Yn35)NH2mkQru$#Q9"d'EA`4$q*]@R-)/?V9mX^Z;i&RqqgRU^]0@,h=F7:OK@X]q;4.Z[9'(NY,O,;')H5)-a5q#j.4t$j9uYG4KTm*7X$sdSH]hWZ;nLej`A_==\;D0V!_.W*l4B<!j"4^2NL[8'a:b/ATPK+175[iS)ZZ*C=?F>/#WhmL]^^24o=>X:q2%<&d..26fKpg#.-<@;i/oI.pp-ARX_PgL1QXX\-1,.LUaIf=<=8MV-hU_i"8LMAX2=.;ar^KoA-6_:<a/g"eW-I=QOC%W\W"#VD>h"n0uu!h.X@%b.4m\ju%<2P!"-8'gB-2d_A`m%P]o-VbHounZYY(?(6]el5KeZ"YaBm$"p>A^c+ZQZ]G/>m]KMdZn/&00@BntR`sYAQ8@FO3mI=oW^Z?t(&We?6<BLa^;1o"'%d8%jUPh>-Bo/)68,iBQ^(<n-+ngcV6Cq'N>b*=,YD--Mhk7nMClfEelrnKou%5`CE%6/(@75"\AXJ*S!E"Cf9+`79Zu/F>X]0eH8PEef)D?%E:-q&;i7W:NS*#-4aLKY\e[F(V,R2+dWnN?#*?p(bT_%VGc(b:e3%is^q#`iOs:=h:":#1!Y-K=2&XN>%%!Z3JLN!V>>Hs3q+^?UgMW3@=ULuc=i!j-=RHZd93*h0SOJuFNX87.8<ArKoKmTcL#R9dgaV/H4;@i^^gKJ_s-WFO/7R:RVN_(a(R8+D"%ZS;_I*n;gcuA\geoIK;b9[o%r<3GU0+'ipq1]+d"]#!K+s]n&tn@r1R)&p*[,:b*D4$U<3HU7_Yes%8KLe%Aqr5p(LY(=*$l*\on_e`H3'N"FU\?(5RL1*b>'2lmRl)?abf;i6\C88<@R(7(DJp2CnM3$3P>p>SHOFCn<$;p9MO8,cmA`9OBu71.A&nS9$(Qa4*X>t7TLrOls^o*1N%)ul.3+-(e;po'b%'@DUrrU.(_d<H?T7#Clr3#)B@Tu`.%OsL95(?^$&>b]j?&*nXVb[&+'qslk&'b_k!mr+-3k3rOO4#""%VBAidYR$`4E%T5,KHG<7,fC*$BDR2%W,q6o0Cgau6XH!prpD%u$HG09].^K)=EUH>mC=.,c?R<D0YK+Vd$8^\u/GK%5*jI$0T+R8=As3\[r8@:?+(5'E<%)LIC2sT>Cr-B%8'PeJf?L8dD[U(n*!oBM"rBfsaJeTC8pc"k<)dK0#dl)FE`oCb'bi>QZk>Ere96T-$6J`doShs4!1J;10K%TRgi,F4H#=]a^!h>$si']bTT%`h:G\V*8a2]cdr1Nre&:\'n_UK1_%k<Ic0m$HbWpUL#Mh2e<o%25V$n;,@US&s[I52I>)is.TjslKd`\?_EDUH?5n=BMB*^As^N>jMNKJ=J6"]JGr?qp2!B59+F\VBr7Y+t/D]&=o2MD*>0=grW,.cY$ads1M[;&T&%]>pX%AeU25VSNkuA$:_XF,%ib5srO[fYWaShb.%CDgXOC8Gc,Yg[96Ji`&_mN5@O)L0:rK@+:AJ<3B%(f-uac(heLSR.]5$PoJBl)@lStE..!Wromn;01k?$p!^t,]iJLQBl;O1Nu-05m]kGlP0m[>G8JPAQG\c="8(UBj'dH9e)?9KNr-nIUE7KfpO*ULF"sSVG@tS%),?_.hbDQY<Y,)Fk]h2+C>3D.)nB_/a%4Ej2i[$IkI=hudSV+RFW;qif*_B$g8dGpUX9A?H5*B^q[OBUGeE&nmI0u[k<0,s~>endstream
832 endobj
833 % 'R168': class PDFStream
834 168 0 obj
835 % page stream
836 << /Filter [ /ASCII85Decode
837 /FlateDecode ]
838- /Length 1896 >>
839+ /Length 1841 >>
840 stream
841-Gb!#]D/Yn7&H3_"s'\mk<)P`p?u0eYHq9_bbphr>'&WB"EO$?^bgsSXh8QPolYgrdgq%?=#9d@daTfC>qs6,Fo7d?qr--@t>QDF*^tDos*#BqN31fNRj9FI7NfQ@E+$&YlIK9@dB_R.!J9-a3I_-=Oje<kidH$T!EdZ@q6cJEe#R*E9ErrQJQk[&^%tS%0d.]J,OfHQ*OOdtOMM'&"j?+d""JUF03!6-N4GQmtJq@HWhM`1KeY9uZ;">5sS3ULKnsZ/cj<I?)(uToCJDKPGmSgCb2pd?7ckDj7Rd93LB\e=h06aVe%W/C2h?8gR+k_H^p)4JOHV>pI!`WIe'Q/(]Er,L.;`\Mi?&71nP/SoX?G)XYpTZLEK;WJf=`FL[T0M;r<R()&gI6]2(b^_2IKV<S.1((,>&o`*&[T'A,sGHePlY5g+]q'B1K(BON?]54"*3]/!>Q=Z7h^k1aFX[$,iZ4`R$Td:i_$K]&O+Q60U;u!.J7BPA0kE!)/kJ_i[H!GR\mjE:m=WDS1d0/1hQ!0Pr%44=4tUWolf]XClS]q\$:>gICH43=qX7mBOr+Qq0QGr]o)K7Vq]e_jrR\PLP3];D+$12N^4d^iQ5sSK7P%bc,b#nB(V67&m@t9^1B<QO8`iH-dK4pf6Ke"g2E^k*b:M[1,R*.J\.sa:pJ>'?X'j&#Ur*I!Bpce8bei-aP#tRDW`_=HQDuUAFA=<m.udiMX'gV3uS=`0&:,FZBW`>*e8'e-=3@!V^1+>6&*,*Z--ZH`J'b0a]T<]HeB6rT5Ms1T;nU:+pZcFJpbh$MT"cmj-S[/0JR5Qb'/P<SPObK29#`a@TJ&Xada7i%ab)_4OMZOLI[YR,BI#kqE<nQ%s)Z.*6_3n7;P2YT9e8W_6@EnbiCqc1g*g8Zkg?S<9Krd;P0OUKYiq$1jQgaV+Y]QTY06^@qU_4n63d&:j_^pVq^k9H[CkZ:.qp57icn]^ctO*AoVl$VpqEpHFW7ZJeH$kbS+_8<)<Ogd)$9M=.\IM$6FLIp,hup]V=L%'9"BgP9;DN<M;F!*^/CNarkZ8FOmQc)>P;"jt0JO<`6KIN7uV%d/=^-jMAY#fIn1U:s.,.V$FELomh,]`k9@"fCsXFEX/0/*h'B0='p:HLS0CPo3Z]#J?hIn8+q+YlF/0M&*IgKXeq)5HI@psa"9p"mL@A4>Ej\#af,DK9NB*n[%s</<a_jn\W73?Dio5d)aWs!+#f]kVJfkboK9%K3cE^Y3Tp!4P+h;;6"Y!Z'$iME]4h;Ye]$2eirtQa<E#lCY\=VY8l[Ojc?-7AjD7lF`9(NP7YG5j:?C.F<`Q2!j<#$UGq,dqd,\00I9NaPp,/3U@J<_T?H[^"[A7N-CI"/&0IY4f#d#W&B5$taN)3UaIJ-[E(.LLp.pe^%g\]OuPE_N5LK9@?a?7t`!Mc+?7a<c!EMfd%S72u!Ni0J7Ve=I6OkU"59WnUS-Wlj(:0+s^6Ll!1\C!X[18=m].uIFAh9$m;;*&(-gFTo:K!5Wrl\$p\:0GOc]"=NmN*7K^4,nI5[DU_s67ELM4Sm]_npokRj0_Di+$\,U8I7,no7dc,IQ:5OAcq$Yh)]`NmJc/ECZ?UJ2mbl/h!m(iY"a$Y>3P\FFaaN,OdO^W-98t9mIc7Xo6q3K\u;3kp\47B[)aO8kOESHTU9>3[4^Pe<*W$2iL.Q7G"uZ9$^u%@JY!?(JhTbB1g>;O"Q.+7^I:V;(q]N,=CJDt?1&pl0\N9eqL=G9c6)BFRs,\OUs-KhE$*qEHiq60_&okM-j[f'UKS$a,_Cs/CUg,g3gF`t$1uJYch6YpBK4_3+cMAM6oHAJ+R>uRqj*>L=a@-l!f!)b\A"*4I[7nMelltLfV=Sn[[:'4FWYPSs)-;)I.SLa[G@P~>endstream
842+Gb!#\D,91]&H7^.J!_m+!j[3Yo4D0G&fbkeU3H6cg.G(n2YK2b_d<4`fAY.bhjM^s"Gi7Dr_O/gZ$0e$5Po]fM*5P2Y@g);']=?=n#eeBHl0f[FkdH8DW#PSGjt+i^g!o-#LMp_h,\J-@*ITG&%@G:R7`l%4M#*]*?MTS;DgX#^kBlj0*!q]6&HER&5[q.rkF$Hh[S.UT](jn1Mlskpi?RjY:qrE`IEA;^XI6%II"@Cjh'j?,9B4>V('l=,0[9jLIXRoQLD6YDPtA=#JgTGm\m>o1Z>!d&onC!QiTD4C'KCQ3b173jrf5s#S]4OP4JsuFcdMK(]oQ@`a*%l%PjE,iY<Eu5a3"YKS(s2>g#Z379$Jos5b\aX*OL\CTSmkdnE0<(/%/,>R3-</;?(H+q2$5@`fJiK#o.p1,GtoF<;2WiaX,XhV'H!VL[^/?m6pL!XDgA@@YVG8-.k8F(p9k.VPDp`=.J5"*AjKQPEu!r;HNeCO=cCcH$;2_kU6-L$4hk>Fg6gdK'SBp_T)I?fZ0L9`beKJ@?X\0>lZ_SaX2(=uAOBn$<GuYSf15[`Q8<l0\N#H%_^aa;_G"Pe'-)rUnnSA;/,5"%'1LokU61A-gH]Thsc0%h/gSocbZa?/'8N(ukJh/N(i37lZ"D\(s51bL6<$]Wu_[<V2'c\r0W-T!";j\=Bb/CTh&U=^8orjeTB!rHld!gHOQQboEXtUTIbhp%B3Zk(\A"+_\L$plWeCMmkf-W0Ms:aQQga1,I=qAh9LCNZ=a&OmphN._$-JOdoa_7.Y9FFFnt4ZVY_?_?jT_D!VJ7Osa?M<KHPGJL<7p'5WcA**(n"GsW-VpIQ,E-cfF66RUm(R@L^o'%F$A/N46Znf0)$!&SM*%*V#jJ]X!7D-6Q5Z!o-e,EcTOFu_8pa@noo3t"uQ'YGE4Vs^E$-PS1gc'tiJq>L8'^R7%"_a;bL-MHREk3NE>ZO0BgUG98-LZGl;f6Skd@rBTAG^:N"S<Cq5&!,IIBa:b4S]D0s%&*8Z,SB8b64>'%$nYP^Z4tBB4n.-7VU1R+EKP9uB-)bp5_d9PM$P1q]2Ht^M^tZ#VWeKiV7Ej[BS<N<AI9I3#cAZr!f>;C.qs)?`S;J:,smDW#Zm31P,Mi+N_a79#3:VSqSOr)]IZX[8"dC@iYd#2p+3Zf4l)-&c=X7aF)/`(rFM9j\7C>p@<4bs:HrE2CEID;]fQ&SYURtWAte$=7SGA7p!Xn0)b.Gkak=\TFiq`%Jh0r$d,>]toM=,3[W:A/)#g!bq8a$12_l$O-<uKW`]E?;+3u)Hhg)M(ZUJP?NXP?S@_%5#fp'1^]e445m8aCOY`61T]4]`fLWr[.n"_3.Uk2h'bZQ)X/C9D0JZKne4@"V@/1dD9I_UIt-tPiCH)Aga^PNd:Rp4S0<U^%^5?301Jd3]:6%?sRr1[jWE.4d&#:A.>7X<ZH,sME"'fZ^lN335S-Mu<>32#`@&HNQtiK9sWA6ssU^P*Zm0R";QcMY%!bkBlgWQ:&8"?!YuU$qcc_(<WF5#^WNRoB4h7+TC%,;_O:7[)GBf@c=f5#>QEW4CS*03Ou8^8kSQ::jhZqGK!#_Pnq&s.mZ;9Ae?X,'7f8"@po(DD%!?:iUe5'kS&e'?["!"r4Sq]^i_\s.MfPS<0iL^%qksj]pZ;_73!],(rBaV8Q5@eC[5_clmQ#M5DUtloX\pGV/e&gg@brIo`N:6Qc-0lGmqi0:XB[%3*.:m59:M0iqV_qgrJ.*P^X+oX_a/*6RD7fZ;%B%_<M9CjSDlp,n2%='kZk'Y8bJp%pYri`lP/CUO)UF*g(Im`nkD-#;+L]sqc94STF[ND+^~>endstream
843 endobj
844 % 'R169': class PDFStream
845 169 0 obj
846 % page stream
847 << /Filter [ /ASCII85Decode
848 /FlateDecode ]
849- /Length 1384 >>
850+ /Length 1769 >>
851 stream
852-Gb!$G95iiK&:j3Rr#b'!fEkO-P,sETn0.0W5_*\0DN*u%5X7o*bsi=GP"sU,oc6qr@rJ\NCrk6WLb-8p_iHUDOW54sT4@:\!V#CpI^sX;EFGGi1Ub=X^P1S.rSBd;T!Rf'7M,F14c1QuNp6:eRL,F&;%TR;3[97KHR%!>/GhREkj7H9,FB9,JIdm/+6i>J$r`UGaR>Hph%r1ZkB&F08O9JCM8dGh$^gr'o1PjtTDqi#4L3dQ'lft=-K1XF3&-2Q-gQAMMC?J;O@l`t\[Zli%G/)0BAcW8<ZmC%[(*cPLg&UjRB`8W\[6M,Y)BpC&uX7j]Cr+2f:rqhld8[6qK?4.QpuM1lfZh>E(5$?j*)W5pib0?%KKh[0'#.7*RLNKC$F&FheZ6K_Bt)/j5&c)CkCSi-Y]n^-FJ1ARO6VP=XKHg%C6eCmi:e!B0bYaa'3gN6LDFD@FjGpXc-NJGhYFbUJ]Zl:ro&(SJ[g`Yna.j)S%G5rJCCmienn5*QJu<MCPNJ<R0*'W9@;oA\:ulkch*0mb#;(.`g5V=PE2<Ic.qq&E&Ve%R\$M3KXrW`:EFC9@Oc@YA"@Jcg1/+^B1gB-n#QNchS5"3C=c!GQo"j)ng@*XD#JV%1l'Tq+-4h`3ONRBQUGYlpMiuL76ab)R#L"BYe&Rjc*"CNUFloh%tXuP_tbU9n>i';;4#8>&g5Y-HQA:1*Mofk<s=;kbeAS[%D7dQB3*;Ot<Tfl#,5IF\q&L0]siGi?AFT";d.476\'e1Kd/ZK]t9<IJ?SC=BT%J`nu>ICq^H8IFJJqD".>^D3CcS+Xss*;)';bS<J%U+F">H;Pmtr(s7ftGjq9ol+3f/_ro$F#M6%MY0bs#p3)!XPa*-TBQ6/2dt.:cApPp'RN45"]j=[mgMY'XC\`t<g8*(%cE;Mprl&JEV7K-o>RYbqWnt2'E+$*nAQjl>bsl0c$S/q?!KDVtZOot5]ij*`n43[,EDE@0eQ]^U,,$.@"q@)7lPsB2jFNVAY3ZaQV\Mj*5Qo'd7rkQtr)Es$&_h+*'ND2ZC;9'!DU`7ofqdcM#pdbOlgjW*W@^NKi<a4o(N^[l>eeH=Z9_@bZY%UB@=1D=GQnRoQ^Qhs#5L^uc3\2jpDf\pQYBaCTftd!K#*:=8DML@+m:\$gW-NU#>;Lgn4uU3c9T841*LF(m%TAGTg,Zeic)U*E*PH!kR>LC*PC7g*tqH)AJk>Q%,jV/k)jDcV!6Kb\jHPq*T@5,jtj5sr68k^\+p<B-U)WLX\%og36Uft8[ND-$s0bSpe3In0]/c)UA%-<h6B*Lr8:C@SZM!"`jbOVj>sFtD9$aG?V">G]FA?Sph6XEBI%H\Ek"2ubDdK'#gE1>R:V*cn]g6d774ia+%u)-jT~>endstream
853+Gb!#\D/\/e&H3^ns5?d^YWF7j--NT!^`TkZ/IH#Wep-S;Gq^Y)QJ#*/8lBZb?b[gs.rh%\Z_7AA&4q725()e>];#Tor:B8rScSaDJb->lGWne:i!!uuP:Ll63Bd1aHK&f<%O2f##&Z(476'H%jL8nr(ID_%CRSKA8PW'-[]<(t:Jd]ccf%>Ia`)h46q2W9b#cqakQ4.<o,5Z6RA;+e/>m7:bt1Bq9I+`8d@KOF="e"Q"X^ug4Fd;4.Hn>ATocpc`\cJiKX2%W`4X<-Y)-a7#Gi`ie*5'S0`6J@[*K.QZ-;Qr&pG<D,rZjapuX.$h+bGB/[+>lmBL4lAq^F@/6j=%@%;h1nFssR5hTP\,C=c'Kqj2<4WemSGWdkLrP2hT<FOr/DX6[/<Z$RHg\5#p$;'\uHHFYfVr.-Rb><toM2agR5MWu8N@9+)O"2@\&9h*JdEDdWFDa*A0td]B`9eFFU@&#BL8l)Sq5q8_B`>V^V9!&M'H'd;Y,"ZOY\ih][4YdVT<EoA#\RjH'3E9IS4LoeS>u2LX=2Y4aFAc;1I^CG:!Uu<B>n%-7D:S*%@'VOMQ`^QFA[&\W'JV$faA;=mQ2Ri[/(S>-u=RN\CYM_;lsFZ8iq!9]k2\M;UA'O'k8SrPt!]?<TDSL<_G>X6:s*FZ((06a=.[;8(0Rt]*(h2`7/0iJE=QQ,1&T".O6W';m9G'M455KX@S?W#o&W\DWK?3ej'diAlbIY<F4Wq"a0QD9b8=oh!?n)8`upLm#JfTqEesXm>C[s"*T/QR;fojpbDC4L42j;QkRaq5$3j1TPj#ri^)CHDY<`'$3#'e'"K*Q2eq$Lei^Xl$6aDUj0;[+C/7*NM5$>1NfEiWGN/;YbAkjZKZ7RamPXRf$ek6_QYQ`C%$PI7(9E*S.)fZN;[)T8P-XOi_US]-j'3j<MCPQjp-qZZT3XRg>5$2u]/MrWT`]LlQ]9!%%"gGYnU\[cisOmsLkARJDHZNJ*aZ0FP8e_90\ONIE(&4/^*aEe7mrgGK9&\^':]cI,Lie;H9#KXKMc6Q>Z5aF@bmL5[-"-$hcA5i[R0:$gBtt`B%a;'1_7(lDUa2\7!/;7)X&1R]frCr^u&0#>f<QA,>.*Y.?2Ti[Ik!aoV3Y*fClc>&!$utS#hf&ZTWM,'5JXk-C1)0Z]W,@&M`]0:`+Foq[(!ibL>mR@='qRjG.S5N2&E(]_7ltB1fXBBVrg>Qtb<tD4oH%%=\Q]i^\I@r^C6X`T^+5)$YU0j*52[ErEha?1W&gEKu`MDkC1\]LVp>pa`iSJ)Ig"!a]rB'O8`OmZPif-PI+MYg=K#H.ZJS?5M+%EYuEF(!J\5-5.%#PN?Y$R<DTW3ErS%nsEq<X:/Ts1:LEII`QuQ7E84ZG%i^c5A;J<ZPD0'D&=>:QKJL6de,fUR,qd05YSIe=Z=@[-49fp5Cbc`S.r!a7,OmF2Mj<*I^1S"RXkc"8ZA_PgG\ZXWUO0.oGQ\:+VULq`INVTnu?,cN@Ej$j6N-XF7bMT=IEU6`HTAEet7a<Dt8S%`k*KfVHo>m9XEh<=`ZllEJNJUj,cAH.:FV\Nm00,UZ7On/#M/"`k$e@f;4dHCaOk>(2,?,(8@YEg&!Z&'Jd"ZLWFWW%BbJGpJtiYW;GNGlijf3]q0[\2a\[AUJ8a[`mam"mGa#AE,kgt510V"BHB5ac\'Vr+1S(b&FR]>Cl=Jo>tGI)N2q>J7n?t2]Q&iI$uiuW6RukLa5LWC/jJp^0XTFVG*Zp.#QsON7DnB3J)-5qP5~>endstream
854 endobj
855 % 'R170': class PDFStream
856 170 0 obj
857 % page stream
858 << /Filter [ /ASCII85Decode
859 /FlateDecode ]
860- /Length 1465 >>
861+ /Length 1614 >>
862 stream
863-Gb!#\>AN7g'Ri"959(G2S732u@S&3E+`00BOD`L+]2+/:Q:BF^P"(iWg$uiGR?;kiFsCN3\d=$\SiPD@^@-;_R,G/br^Jo`Df`G"Z,(TkSq-32*mAQ]j*Wh2)@l+GD%K#fSQ_4r(?1qEi2:of'/"="'TMR<+N)%6//>5E!"JAifcaH@b]ECf5c>]VqY:mr3I>?A-k<*3CDKiF.><87>X;+bb2Z-^rsSFj9d"r!MT,)rYrnS%S:I[=fn&j;FVA4Rg?gLR(^XAdTe`p\1:FR@,\&Q+>Y$OiYATkBa!g+jQ-gCf]FMoh/a"OHNb*H3Ukjk`@8-nu[]ERs;AG=']T>r])T-S'=Cj%+Bskq>c[<q%g7l\Q[-;:<^Lor,\?6PGjiqE4Tl'W(!Fmi635dqZE`slc$NX-3/Bm,Em4`qF$@>Den0b(>-n<bV,\`R'T,3hGKpXpW:Pe?2?3iJL+L4KOgkh?h*N)!qh>mkFTK=-?`PHZYF@Tg?31'nYG<!%hi"'@t23#A6XJ0VL_)nP#[cUN3q.:N,.?hOc;FG#VP80!`X[A5T8Qh:pL5SPR,WRbtNGj*=p7s^[/q?-L]Z_e,X"n3d$D`1_X@P&rog(**8VPlY6#s>!'_$]@KPOJkh@"n>KqJufK0?H5PR(hh7*u_cgZrK!/^tQ)8LrbRqFko:^I$u?`!#WpPUq-6W\iFB&qNI?gcR&m!`.%T4'2;Q^)f[X_m0\)lC9;.Mre[61p.K7NEMeTVH[)(7eb=l6347T-4s96@9>7]/:d%12N@qm@Oe=T^$$Yj/8<$n[Q!_Yn-tgkd3_self-<onO^-8XNaU@?E2Wcf^oO)h<A3BAK]`ti-f'E,HYhGflPJ9(-Ko<n/Wq7U"G9Lk!?L"*0+dICT0L7a#t:.92:rDkg8"g_Vu>e1>TAI+imWO92g1BK2!`@UCtM\Ci;V9Jleue#WgD"UoKU=[,VUSj;>-@AQ=]a3s5Nq(P5*`2epOgq3'Z2"U0rk)sj(<OtEd-&X0)d9qT)?)7nJ85.S!UA?q+W6*!8]_&3m=^Hf@/)%t<uKhjST[cHnJ5r.nZ"P<$\;!Wo&>W_;4c?FfY`9hQ#X.f&$e\$kdS1m'@C?[a,-h,tY"Zp^W1S&XnBE(594KnL_[!.=YjR);Ns#c$$7e=?^s.AB"N-P$NG4Ze^:U1k%8ulWiEY]Z%BJXB)r%6%U0Q3F^$'(;.]?7?OL5XGJ9$21$0tr_p^,Qh\m,t+L\Q8uBR+*2C&&nk;pg?9fM(1HF-X.?2HYe`j/Kh9qmm32/Ne?`u&A2[<rU]"NIB$rm[@`;t&&F5]6]HZs5Ct%4eCZL/T"n`OCL(b2\ZL!tGI9r$!XAgteZD/^UG(b3hi]9jhg^521r3l+gO3o7BXd/Lf$'c_V`%;K!G&ShEUZIn3]9mcT'^i*%TC<G',XBe]*o`UHo_&cd+;>6L,;EpBG%_e8/d58rrA;!h9#~>endstream
864+Gb!#\>>O9='Rm78s)9gCMLrF5\MR$CG[Qk()JOAM*@dX1Xk^j/]d.U%SX09P4a,786O7EQ5b`"tcfI6\chSP"HMD9F^L7K=`s=<dCp4os`F+%Y#G^bWFjt:l[p+$`FqB0gF=f-_#.USeqX%V9R#@1W7AG2R8A!D.9?"9o6A)=e2XYXn`>!_/+OD_B/'o=uJ3U1?,7]>)?:]qq+Vt`MJ7YQo`j;_HEu=i\UPj0+r],379r;k=[rbMAs.UqaGN.uc$m2AA`PTs-DTX2MI4!7Zk6IJ,"'3912"&#^+C1#+<-LbHN]VPq:6t"qZZQ"6[*A%,A!08k8m$iJfpH!5r0@A?,,TD``Bh`s<*Nd+"='+`9(Okhd_(0"6;"O0+@^@5^k=/I'.&^K&VJ&]Kejj'!_FYm>d-m>:lSU<isVD*Uf>T`A?@EIK)]mgo0Hd[9l&Sf?!pt-raEVf)XI=A*D)I)HZAS_(nY0K*J<fa6.6ZUIiZHKlc,KS6c?kdV3re6P6rJ%DJJij(uEX)*?>Jmj:[AS(gPC-4ol)cY^%%0(C]l*3:slGPWV,>rF"9JQ*iT9*TT@;oEY?WF?BR4I]ka^hZZA9LT[^I_Ws-nj9^oeHREKll`"?ta@Jp=iNW3OTj@A=p'KGa3P=3i5.n]2%.2I^fLKbEIjRQU\4b?S,&k^l<J*TpDb`l'Cqmb.AM;8@Q<`o>Ml;aOs2M%<Ur;#m3.jpVc[4ofg7LOT?7t[Je=bO_.QZc!RWG/819hHMZ0!<?&Q)fS;@-[d3Rs-"b.JplHZ:$[@QU%mo%Y(:#GhTq5e0>fMjMKcLf#.,:.Qta,+'n^;+@MUI<BZDM`V?-GYC_Yg_>X\9ait"RidYt,P'7"iVL@s["LcR?M2L.\h;t8h9R2j>W4X:R+SY$LT!f%nX?fQ"?blW:EUjMnA#ofT0Yh(KAdD"7*1'clr%mC4d)V6DhDGI"9`6;N]?3%(e-;.JQ5DVNSuI4b!Nc'@OSOnVCoB'dXrga6I#$L0@[RIG&B(.0-ndUMX--&4"K0%1\ehm).o_ZkXh";TpAuGqC52Rn;K\iCM%*Pp[6n#+:G9%(!_V3<_*pqEj<9&@FE$G65+(P4B$a)`e&!)>jRin^(343T:j9MlnaJ`/9kpD.\>t,\@K4QY1B"'DMH_o,mdu/.9!_liMjh2<$jj[ZT8Cd2_U>IY"*8_XfhC2BdI8DLbWHAgglOe/8,er5t1$,K)d[)+X>+_`)FYlBQ?_G?mRD@UJ'X2CA3P/<`._&7pmF([&_Y;V92WC3l1.#\n8>#SS-^U^gt:QN$@A+.f[:m01sKAF?qs(@D+.i5&K%3kcQ'V<HWEICf2Cc>06*9,tL>!AuRW>iu0I0$(mG)L1Y3/C*n0[SH2#Hjt2TCicqrl'oc`?\JlkaK`'R-!$N/1L'fkSb?WpUE2S;H8$rMD4tn6t]$aYRRYn]PAG88A(QUeQL1X$fr0,AQW#\\:1Ed]lE23MGh@I5#%.er#=hPj4E\q_h_!6=R]'K8NK)Id!^s2g:pdns@BGU"Ao<$giWfWq3pNLK@LjkH),Y-jWl&Ln-oPBl+;Wo?(SUn%F4\O^Aa-RIlQLC<P#0+hL>/Y9)8OL,_5Q13T:]~>endstream
865 endobj
866 % 'R171': class PDFStream
867 171 0 obj
868 % page stream
869 << /Filter [ /ASCII85Decode
870 /FlateDecode ]
871- /Length 1175 >>
872+ /Length 1187 >>
873 stream
874-Gb!#]@;hVr'`B(%s5?RG:J.OB@Y:qRoKKoH/Q/E_bPIs2pS$#G^`dN%>2/;1rV@B=CX]:l<$7;qBq)n$Q_SV_NrafIIo-(b(BFK:iG=>N@9@FJq2Q!O$[BFXcYhl$e/V+!:dQ.gL!6,ETDc;u@T0:Y)^CL\=+!2QlU+Z5T@nh[(P]h8?!%(.XK'UHs"@dM0'?EUIlu$iDG'Tq"P-pgrMIU5r!_;'*S_GLZ!Z/U&3JlT^hjGgERi3OHqYN0YY,5u9#LpE<@#n>LoZ4Fq<%>;lD0%:j>oTa2S@ro)Qjj]KVXQNKoh%YXH]B;b%,g@EjUfK,RtcSNO@-qG8U](lEA;A(^YfnqWo&Y9V4sp\;\D)9a:t-oiL>"e+%/c]V*##4(VjsVu`[m_AkiN/fi^q1];;p6pdHf9.j._S-K\d+mnj.4:k+TE6Un)J5/Op!)LEcM,+@ub^2e2oAct"X/_,A*Ai"IImq(&L_'7,eIoG,VdPk<bijcf:uYXbh=>Uo4QVtg1Ac>HmZ)LJfRPUN)?V.cf3bf#bJgCY6Q7s[0%[.s&?PrXQH\L!$F+FV(7+qtR@HcBSjgq1OkX5>UR`uVF7c1TP?ff4o^KL&&j?`M9lH:J<EVRd;(/+%j#a_F-GaL%XS-71o>,"T<<Dl0`RWgrPq"""ja/D"l.1A6D%/"eU:_44B?._Ni1)s/LT=Cl?gt=bU.[hek70LeYEf_DK-ug.fB3)D(Uei0*J*$jh'k`)O-("u8Xu-Yam<;Jn>JF&7,j>:^dQWAYRr'n=(8e*ig(#J"72O-PpM9K&FH/p$I&%sI+2N&,>a&G&]2[;PF:9V&Mc('D7Q\Gm*Z>0;ogOM$qAn625F@?=6>S[Rhgr[\r.TQn.^%o31qMWQ*"='F7CQZ-gGZ^Nd!k['XA,?kQmL/P-X2l<buK4]]`U]0ud.2@-k02*4ViA/?3miW!.n3'O2GO2M16Q[.Kn3'R3P1?0&=(9Xj!Afh->nKs4-2kp4=@Vr5)kL#[H]D'_"8Sd'gPIgWp5lFe)F7NpntQ18?ZNm(H#0Yt)se.343q^CD8.)eHhn6Y)iHZ<3W=>+n%J$7/V;J_"!1-X?]5!%H=^(U\r337,(lNOt[Y'Kr)V[#ZO4`YV%YQ09W"k't[o2uS'*aiDg;cllR^St(2[NZ:Oa[O*pp(N_$<6t~>endstream
875+Gb!#\?#SIU'R_pus);>"3.mo\UdRcXp94u^&0P]#e1:7N(J:E5XnkRZW_N?U9.Kp7;JS%$e2D,1+$A`WqV7i=,&m2o[GOO^nAbs?-3t0;f`I8uGVHa\^LkC"_f1-,pBDcD^@/R?'^@Ej_(Sa'(UYZZ;EUL*_1i'$]iAU\JHeL]%OZp4W<mqX%=VuNDd`3M_5)bMC<8oIhHe"b5FDE'ZMsf[fQ/(gQPbDqk$Xg,5,r?gl_GtTV3oEk$D\;[Q-CrmLOjloZSm<[YEU[_j6@:.)Eo67?7a)=Ga3<c`>CG=QsY$4#.Y62)\\pR;aVee#q\g1I9l@RipcSSM#'cm^+q+5r<:oS%)o&HX5^BW#h2BC`H_M.&DCKP*CBOoFg*hfH_2AB&/6(iHXm&alnaDMXN4>;C&s6i8k]jCBOE6/WM!Q_ZE3YN94o96q6^1Y5E]T*'6/A6!PdmI^9<5?=R6`Iltk%Fe';nr\lc98qkoABKk0Ge2UUpe>4dPr"o&/I0Krh\DoqZ<HQa%sfcKPjR?,]3NSP'VptdHYZ<'']j=G]+8+qB$,CaBOQ#tW2HPYK%Kg4B4^#1HSdIZaPj/7%MG@\KVrH7mF/]:?N\mo293R!NdMll#C"I0!:no*jNWETW6pXc-f+cn*3JNn%X1#(8KB1>FJcbUt8%BTG;0!?e)f`,n_ifeG&8j^DD3b>c=0KBB5,]7;O.!,3u.:Y!5X#jAL1hU_2J0SOP/s"6Z%\aWHB!4]PVVX<m-MAXANqoa^4[*"h3AiLbl:;$IqCD-WK"-6+2NQ4>O*,@O\WX!eR'p=?\^&M<=N5AuAGU\n*tLku,)\("N.GC2Lb0hJE^9`^L@ObB]#7F=^^saFoY$i)>R(J.rDhBX=m-r@frcZHFn_i9e#)%V@X&mt7GHgIkcL#)W(Vq@$9>3Ipr]t-<M5WtVGCs[k(?Y_'<,<&`e'$p#H"5U=^4'Th.0.^Wn&"j4D"JFVk"EHe7+tce\ad%onq:9l#]K&&S/5tNg:6NeiT$$PNq&[)\!p88&L?lHk%`"(`38Ye?5Pl74hS(qjV>6pS3Sj6+\4uf=TEl'ENq2>+(pn)VqeiHc'=fI<l?HI)1M>,4@keN:sL=7+A.3(jgrIZAJ$QnsO'9+Or:>C,&_?Y8\f.Zq.6="ao+c_P*8OD)XmeQDm=VT=gOJ$jYYjYe/jA~>endstream
876 endobj
877 % 'R172': class PDFStream
878 172 0 obj
879 % page stream
880 << /Filter [ /ASCII85Decode
881 /FlateDecode ]
882- /Length 1016 >>
883+ /Length 1030 >>
884 stream
885-Gb!$H?#/1K'Sc&Yq%)Y#OGr1%ZK.)'D.A2a#$m^V>m,ag.u@>3c6S[Xs*fi0[nYVr[YU:a#^3Gu3IWr6V,p.ERkLdkdh:Tf*'Sa=J2#4!J;?^'5(bN[n`]^lKH@:U@YcH*r&BPX4lar%$d%"c/=G'O]3pe]7t,lcgl+`M?uoZdJeu>;1`7KnpBfjXq$\U.M5VPtd[QC-c#d7u:g3!jZ^=KrrX7lWlPb5b.YIL;mTYGG=9Ujh!mE%PCY1D)'n!!(4O%$6Qmc:BcQH_d/Z.^OlbV'q"2KM906Dq;1T<7d1gJ8`)3eBEX6^6g&ujS5KaIG3s%b)&;?%\TV'NV2qOUD3LG8)P]ad"ueA#^%3>`)lY.8ou5jt,r[.d$$p2=4A9JGbhU0X.BWiRI)@n(V-&O.1cd*`%Y&6a3hMYOO=;HC*fOs1]I<-q&2MJ[SW*u[R8:g=oJ#E#Q.'<5H/024\a\Oa9r1EB=*%7+ZA&3(6T)f[I0>Hpl29U_%PQi5n8*-P#Tj$fYd#i\MU^k)8=Cq.OrBBi6*8/r.+K1Qb:d,69.3nJQkNC.A7"@XYj3)J[jcC9a)AoZFR&Pe(Rb/>-ae#Dp$_E9_]("M]tmkYVBEHtf<K-]^=^aMB(KcmhnC9=%i(7!n8ehBC#iR1KY%0<jjB<<0)S7d94jFC?W1C#V<Ka2CKOc*I]hjekM=+`'*f]f*f`57UYKlU-jO-^Sc(c2J>647S[8nV)-/SC,3aL"\m%VjtI*8h)RS6=H<QF)s@*jUC&KgBb[`OE']SY7%+oE?aLm3,(QI+dbhTZG!+FiI=Eqf;OT$OSI*R0,"Y_Lm!MdWYhf^qtpg@"KrR='$`P-K\q'[M=g@iPeP&-a'RQ'KUj;_@ccG@-X((JUp_6,f._UP%Qd"$rOA-2lS0kHrim&@k7>!nI7+?h43Z%TA<3qnWJugLG<<[UL5UUaB,$P<]cURZctcIEM*&8Jh2K4^r'"il/BAYXq#L>(DgL^D\gl+/keZSr8ODY4SfEnmZS"~>endstream
886+Gb!$H?#/1K'Sc&Yq%!_M+=Y:9AB>q,gVsGM%(\>5]*JPY<YDUES4W"Srqe-^Z6a?(gEL*%+P=LkkP4$"Q!PD\Dn`1L9hU"\;g@mG!Q$Nr![8\:kla1DLP,'5!SUfu`=Po3q/I%:0uLinCWVp./=G'O]4R38#C_*#>R^obi-noBJeu>31`7Kn[gD']q#j0nOf0D'def18c#d7u:g3!j2&hTbq@0;<FU_]LPsKd.G:g`4;[#=e!mE%P93?5+bsmR,b=fpDB!_"B]RoDRQSQlB/n"2LOt3\2f7p7pH@Q:s??goe\]E<Ic:+V`C<pXA35.FV9pea1rr5g3(j0cS[SW3#;BKDZ";>%?7QOu1]q$1jTr<>$2UY_aOVN88ehcT9G+Gc_#eN%"""5"/n(cJjekDNgHRsc6]Fg&Dog+.CJfQ9/*_TLNbN[G,1lD.&\hq>8<-O+olO9L5l@\<K+E/I74!r9SU.ZoF?<:8S*#/-5F/^7kdp,gDXrf\3%#O".kUq\nGIkDK<I2`^h0^D'l%AU@6JP/9g@-q372M@839c(f''!/c8ahRa]18Q/\]5)@U^poS`"iQ[O](S(*n`AjLb,Ws!tNhtV)<9I'T-.:q0)mG0Y(rd%:\;H*&,2E-ER^j;3dF-B$R?@4b>5$gA-$P`57fto6;rXr0h[U/%P,3+r=K`>=DDHXW!O>**X7;#CJiGLXsO:9.!WS1nU7f>]PsIeR^bXeAAFMJ.l&[Zpm%Li_EH;`Dbg,4WIhFL+.8V-u@kr*3erbbZ\d?00Ph?7Y;<]kB;;2.'i>Y*RHo'"Do(_Kbb`T!?GWXg02rcq#IT%UVOah3FILkr7aFR]e@TH_ei9Lr;(\J![oZsb:iE<HlIsh9d-[A=qmR;;pqC<r59YRIZ"gU#5)17]RP]WO<VOQm@AdL1qMY89'Q^e^t\0NE3ipA%RV=s-CB$L8AjI)ZAqedKid=C;"okW9CL(_i\615be.-u9;"96E)]?]rE$f%;6K:5,7NnY89L56'@@da\S2ljIKM(uT&]~>endstream
887 endobj
888 % 'R173': class PDFStream
889 173 0 obj
890 % page stream
891 << /Filter [ /ASCII85Decode
892 /FlateDecode ]
893- /Length 1017 >>
894+ /Length 981 >>
895 stream
896-Gb!$HhliJ&'Z]**r#a5-&mYp@L%=9<D9J4rEJ_<f@1O]^@T@TF\@-"]s8<;IVK^dk1m4Ph!<_L)4un!Nhh&Yo?W@'&"i-T1?G/jZ0I0jf^>hR9LNgjboPH]Wk@;C86:)YNMBdPpGk>GgfX;It<JkW/<7(0VXUc/YnONn$cLV*V,"N'3+bZdd&68UKQn0VtKM@jU$cWo]=iirZOn%7J3ecWF,VSI%55e?5mlIso)=F[XaE85j59%%b4lr0'XU_(!QP7L3m0ks+fF0Z;dH1#gq3!FOquMmFXqUFr7NP[#dCb$?JgH50'E*D36%liDXYCS[Ki3$EE7(.2.%&_TRi1E86FKc!K'rTm"!rQ1pM_XZ!u7!$d^iZ.KX+W$?I6BFHN8Xpp[0mB;AN7ik"+9H#gu@Tgk56jO>+DZ\;a[KO>%Z+jH9N;+LrjDQd;CB#(j6T$1YnV#VPY[*X)3?jf.+F2[YFs+Kr`VHB;4a'C;eED&iI%)M5!cU"=psC'o6`R.rh:]VK#gHGB5#*eLKi^>FREC*pSE9#:/U+q8l%a$UD<?[ImhMlM0S7Jp7B+\L.(8Y0qAbA(FKP3uEk+"rY0TW_[4@Dl@F-pbDfWF@@uO9rp*-G)tK?>/<@H@S@6]N?\S,CeY5GJ6]D<9TDQQYLSfV]SW25$sOmiQQUUK.RM"0q7J8Y1b^!K.Pg2mEskE_M*+tUGDLUd5X+kE+M2Z#qRWq0qH(*kf,\'0Hq9%XTq=eKh)"fUUReJCe0pm?TuaOe`\NTQX>\']GZTE:;O@-AZ_Mdk+uU#1CT-m*80_k!JM:iXHg[]5K^Y_LVUc[ot\DQY[=8cDcc6s-8Q#"/6l9f:lpAI1PTq`[Ub'1[4l1$`tHp?/.?j@@aln#Rh/BeW8E9djupdS\e%6]\,`(BEmG5l:ij4&f8C/Yhb;=^TeF^bZ1#U3$*Ico3^ulr:7eRR*nLXc5%m#u)2+V;T:^3/&F;D:X<X;9bMi%mY%i%aJpLFqcEbe/JWM5q%HGi3_'Xuj~>endstream
897+Gb!$H;/b/B&BE[jp^[$RM,l$_*SX0Z[RlrFW=Q)R,8)cJ5dnU>N[q6hIO6?m[*tOI=:7YJT]GP9EW5k7"@6^mW-uo@J57&qs+15ZaL6Ui5Tm[kce3F2CH=bZF5mC48qSfh'6DE?nnt/>[T4-p>&4sZn`_<8:K>$k`!#G0M\lR'A<k7J6ZPk^*8fYiCcR\:D!Lql&lNdVe.N\%$FsBtgd(Q8ZJ2gBDf<c@@=X-!&O'8^0<5*EfSD+qL"IqhN@;8WfPo*%2]r$)"f;;<!=TYHm.rCC=Z$#@O;lGg*L5ZY"U[n:OSjSV/4%/m[4db6F/:OpbeXE`NKju`_].20*K#SqY*I;8k'Oq:Q]Po%.uoDpDd<l50H/fS<ZHH=2l0X<Xcs6U'c+f!crc`G%iX1gflL^KG$$#nKFJ<Kj"[JaA_;XhG$+%p=O*"GTd1\3hU3hCTXQ:"6WXgfaV\!CL62_+4Y_5g1!cO+H='l6QR'Zi1mc.C5Ku'^'`)gB^^urp6$EVYrcIn-lMR/D^\(!63X4gp`g:q6hW>sOJsSi8-;)`A88j_PGd?1.r\j%*#u/a.2i8WgRKlI7_5pcg*OoijNHg-l#]]?L*e7W'UXg7&jW%c#JfNS"oo\1^_4C6eEk,O]M;Z=gTm7ct*"6"H,3O;M0aB#+;M(m#:\+Q4E\M/iTtJr\H_XsRS*#8nkhsaf9MA6<PD\!PT[^fE?(V4V*UK/YK:u*W>,[e`jHcj;FhJp[@*1Sc+V&[s%hi)I[1[)Z1d-12E\M#FGT[4rB'8\tMYOjt9%Bs-P-U09f#N?DC&$!=J5GIfaf`r;Bmj+-Y00<c/t8#>Yqc?6&i(8_FkUbPMaRbCHWpVs2au$_`Yd^\#FP.iHZ?!L^>j#(\G-F*?)mMCB3,a?Js9,U)+1ed9"keX@L^T"qS;]pk4^qJ,+gW_2T,qNNWL30O\VO6nGOQ_EMR!DrQD.aZ7llAdT9coVNX4UXGUi~>endstream
898 endobj
899 % 'R174': class PDFStream
900 174 0 obj
901 % page stream
902 << /Filter [ /ASCII85Decode
903 /FlateDecode ]
904- /Length 991 >>
905+ /Length 962 >>
906 stream
907-Gb!$Hd;%Di'Sc&YH%uK3OI"g-Z6\2:gVsGM%(\&-]*K+i<YDUESB:')^AVS$?CSCQ[YU:a#YqUa:-O\fSR4_ARl>(GP60\@'&J"&J1rN5J;?^'\U]aal/_#LJe%O0&VQBpIM>:ab]NFP6A\F9$Egd-0=^#jM;R*g[aU'>fT$=VGS)J71IDFF4[E%s?bgJ8P9m#9E`37C\^!eRPua=.Y0P=#q#crG9b(O&Ud9A=%o'tAQN]Ot!mE/0)q].uk2L-Zb%*B17)#(AjFrsgau*Os]mVme9Kb-41<B3W.l,X],T4p43.8$8R!R0[a20#W]P]g9<4=325?C1N;RK?l9F=qJTb(5C\"]&sA&BhM!?[2R=)TIY)gO$Yhsr8MEFhJFM!E/9/--\r`X]4\1q\-]@hCKHI+qPu0>"1Xi>C(2`n5k=hG_gi^)^6,1^qDI^6E%2inK'a1fsO`@-1jkX/ZgD$-+1*1^Hi)_B3f)<Uft1_@3T#l6(VOi?aDVP8!Ef#;Ve0AL6cEU8nnt'TGC[8JjG6eVt.)UYZ,[62A^*cWQ\D$0te?-C)q2k=4JdLb'^fJ]M^aR8plX.hBJd(^--AB6&<L4[?:(f-$*oTW^Xl@F"`Cr^l]L%I!_Bd))P<J3ki8=`5_/NG\%u40]>)KB<.A[d[kAZ'7\JcCeo<('a0u=E&(ba806_q?5cu_N[&g_CW?%?RAQLU=qWn?(#lQTbc5'!M$sBP4aV%a9qSP(lU'%R0,.WKdCfP7>G=[HZj]j.(!r'%_(X5Z`n!NYRh2#ef2eR^"o7+o^)*E?t%k2:dPp%Y*2cDMY]>(jBG`qdrU<`P8:G;Ds.P!B3M82#O%\YmIRa5S<sG67rr-kg[gR5dtJXUeesiXB:!(7._XbUG^&Zq0#^:.+VXB"oRkNo'/*s^*QLuNN1@)b4Bk0qZek<7RW"7=aLdiNlXKr0#9FAE8;H)Cpi\Jqh.\RolkD=`>aU=4fqUb@e&bsrNg9t~>endstream
908+Gb!$H@>gU/(rtMMqAgUoKAJSXM+N[#DAsN'3k4!nYnmX8WbLdrYtOGlqt<[r3nbOZ25crr'O0jd`ubhAr@%g*^/=is'EE&]Gl7XD_@S@$&W]1>L\L=\nma^Hqu;Bj6:sD58)3MgS\2VdE`qZo<0^.\Kbi-o?iO-0VA!1<fe6akEJP"763qtJ!8i3s_sDQD8k@-9>=_bN.Ou7$8nVm]HZ9)V2i(hk4ad7,%H;`ECE*910'I9k?sfm<_H)(djY(bCXG+)/DeDQ%b=gK)?<k<9(t7=UVB-TU)ru?^0K)h*PuonWG+7Zf@1i2-o:o_6Fe@M#BWA/FG8M=>=SHMNJ.>$(kP&dRV@pI$*h>s.e[7Du;8Bb=o`0q)l9<;hAb7UaLCLLFe^mT<>JNdXe\8[<Frt,1qkcV'4@&fkH"l?WGhA-lD]fJ/&@Ib]!MXb*DpA,P%O<#]Y0nF0+BR/]V7F63;Gi8t2<sR-:_4^9S5MQg+ANk(A[-$K$PpVT(_W'd6&u?K#YWcH+Z(+TjX_QcJ3;XDg#t2*QmbhQ1WeQg$jfS.MY*OFHST1XP>(%C"t#/#0a)C0*Am+.(3=D`pjFNt/p.7Bc]hDj,o"cEZ'$L1KFVHL!$CL!@ScU5p3qgMP7<$G4)!91e?HV,jIg#];o+TKIQc3ggH4C)-8ki@k29MC#[r'ee3UqU^_8]KfEi?VdfV=J&?u-s&GlqUeu&bIa?dW<T*,ihB\7#0PVRZ/D#uA`r+XL'=dhqdMgHBi7TSoi0aBWV!"j44ZI=UbQ'ldh1Cjg4ghZs=a?dqnL#S]-aELIfrorq+bsM,_G89D@,(Tnq58D#Z1Qd=_64@;_"ErJONSKc0RYq?^\c)jnE[eCqM**>;YW'D:M\p$G20<+K(CMnB(1=S/NC^e<MsnP-l=&fQM6Hu;!tU00V>Y<mHoYAGG>Z1YIFG-$jk<`<arVQ[9IG;i[KDPg~>endstream
909 endobj
910 % 'R175': class PDFStream
911 175 0 obj
912 % page stream
913 << /Filter [ /ASCII85Decode
914 /FlateDecode ]
915- /Length 1810 >>
916+ /Length 1647 >>
917 stream
918-Gb!#]CMt+O'`B(%s5@jk'kES'R=TXFrR=jeW=mTj>GU(I8<K;pi5T8&D,2V\^=Sq],`Mk)THt*O1\SB"a7n]3LE?HkmPW5ihMpL=XUfj\iu.UoDZJf0r&$Z&qg*_Rf43hDi\:"NaY:Okk@_Qe.lrkD-cXO"Sg\W.eoO4/r;6s(RsFr<]EH57>)4?,"qpfY"PlXN8B>=Fk#<1,QkZ3Q@U_O3]S,ek)#rPSr::S]6-fr4V9s']KMP_Nra^*TRMm>jWMgt]4m?_(B9UN.f80X(2`Lh$r14]F?B5haq#3ODP,a]*$9/\ua=G?2emqObkn=Ln0DYY@M%Y;f\)"'F;+,(m%"1B+Wi/IfDKO$W+^;pBUA_e##i^O:r][tpS5MHV\J,S=Jgc:gFKoa;DkJ4V^J:dNmI/FmcmJ8VpYVOLTd%BRdn"!+mNbL[5(ssr%YH"ei3bCrRFNrM:)M$LOHIF/3'p)PeBs"!o@.oc!7@(g9qt"%$<]C]P;S?'c]mWt;grNl]X^b@-*\4)@aJ,^ONMMtof/Fe/!=sm[bfdDp"4.7Z]`dM%"9BT^h='58A)HU5Cm8075(h#>PR\@jf-HQ(^ZhlhMlu*YJ;u"I&7,)$>C8T_&ZC6AH=#"jsAU($b-BBH$,8$(Laj^klRb@]XsDAL6E5'X9o;.J6<Eas4r[;@"mfcp5Nf82.A!S.g;>]MS0FrWS7b?K5,b@#NGuA3>GL*hVp%"a\kQ,")N]G[`64LcC*%`A7gCZ3aUtVQpD*e9;^(-/niB5LI+S6H5\`sK>6e'QV=lWG:aF?;\W+Y;QQ)as"h9Q!Zc-\8?pP*\0?PS$Le>OGYRR26T53pn,_i,ZF;&^p^;!e,ts04l-uMe$bHm"_m0s\lZ)&8ZTP-'6TDfsH^T'>QAQQe,YNb3=-/_MUP*?4>Jk.+=M"XEP`ONJM/(scNE_QEZ]H'#KQCBt#J"sUZjP+*IVi:JGHHlW4Ag/9.iKa?A:IV.T3Tsj`+f"%?F'Zd0o^8>D0!)O(p__k7Fu.jBr.h0bg>gun[9NO9PIFBYcItEk?GIA>0Dq1qGNV!2hs_&[.r2c/QA8sS82a#%@M?Fl9$*CcEaWe/rA]cNGt3"L9R:b&&Q-(OmC`[EQ&Vp8sC*X>+i?u<7ZnD0ZhuGZsb_"*1[C'%V$p1Zt!(kWTc;9aNeLnSPs%4KD..-;ema.YaGSZ:;:3'fLU']6H>,S3903fG5?@K8Sa+WH+pa>oCT;<*j4t;jh^cS/LiR@2Yq7U62Ob:pT@G^%M)eOqH,?\f4VKpN7%AI>oNh5\4e!RMD7Zqn#VNl7_aGgcK[R5e,f#oVY;][]e2U4r.8eCDW$Ec>^U"+_("N:6=Q4aQ)RNMY-:HJ8_HRK/oerH.pWLfYY+.<HsD'P#&%iE,&XN`&PXje``ebgRlQQZj302\-27ftVg/+N9]n!2NJ%JWa^XRX,n#HSb0,atN*WNiWe<S]9Hd>gV>1E/Agt-6*pCoQNKPNVY*qc01k72Um1SkRfKY(2<R=O%E3?M")5lrskU$Q>Vf7S%HG^sIUT-A_Rh5R<E!ds>59:m)`8l5r-;&G5MLIBAL%CEKp5\XlC84AQ;jDfV$BM7cTQc'B]$W.[8*XBL#/:rq18DEq<7Nq5/t.(-%D-e3]BeXXQJ&=GL-=k>EHG<Nn:[3hON$ABi"lQ;h^A%n*;=kJd!V=e@4Mg1*Y,516^->emR08`;g<Zh!BrD;<&^L0Ae-SB&#1h)MXfc,!9eH,ORs+u^a=l9/D&5@EX2d6G[cG-?fUY?M6.oj]dRpI9q7JqHcucUB8_N9ZQH?*_e]~>endstream
919+Gb!#]D/\Dn&H7^.J!d9YK!*aj]SG@AhWZMl7!61KUq;nR.[(^4D.6Gu=dFPeA!6n@d6^[)UFulccckFiO(USkL*?QMju"akI\4F+XUV]@P<%9ejhYI9InmSGVf'PX`eG(Y^2FIU;1pj`cEHtocFG?Z;Dbp3Joj(A1K5p:*HYE<\H,eE9F?^i6DO]OqXYR#dlufRn@1"t;ab2eJQ*h'Ms9=L9YS@(K>I'O.i@-iEgji^DGg2T;#pS@F:Ka.8PUAePR-n@m7Wno#J`krVjH""a5cr\G6YG,6Rui0(1(Z62(],3j:EoZaL@oDT9^V*Ru?uB=ptp93!k3!dVXOKheoUL@l^56;.NP1Jo:lj:mLV4+?=>d>ehqQj4MV!HTX;<;sT/E-5_L#OE^YcdpCm:$6JYWEnl-7_seXDY9,akV-^^.ECTLGBu]naF%F!YlaE.+V'87>SS/4X6%hAAOr^)\1A6K@$cuLI8ZQl[L^,Sjc6;Y&U"_oj72GGf;6ek@+,F#=e;!.Ic6;:qT%?<O78=[Q\=g?EjH1@#7d#kH4`!mM5LIV2K)"k$L#A\+8Y.ZZ\BZL#P/Y6Mm>a[!OE'+?KF[Al5=uJ6F/%k#3i%A5R*$c;a:1pYfNKE<5G:k785@8J).0Y8NMCrLGn!Cjjj-5<-Zj2WE9!J8X<#R1X-V['C?uTp\+cf?)4f-\25')#6ZB,GSEPVIXp'!#':QA)fm31N=!-jji5e-VQ"tpqa4\:RHGP986eS.CE-3+NmHKEa0^&nUj?hs=B'%^i>*C-8'C4r7WQ+W>Ss26`J`%7K)g@LP#NF"=gC]B2.sQ./<bfN:1lloJ6#l[GF#X*;]L!t(i[\#J_mi=<J3+qrb9`)R>Ei5O0An&d-oMn5l6<=X/5FU"`ndO\An[.+eTse1A"`=i&-(LG#I$\dMsNNj:eL@+E%GX4Q;]ohj>8bf_<8%*?>75$V6HUd+8`MG"d5[TU/qNO*8Tfs%l:f<R"SJ:;S:McH3;5&7X-C=4@;KdI=^f^nL/pGD8BS*QE*\s3U^`Z#Y\'N3K(.?1Ajr?>a?eFKcnQ<U2X6:1F1lj2WH+6G88pQAAKXp[tn@OfXei%k+'>J#W/G/:+u6%YRL,diR*r<#'*`Y1s+*M^;bMV1uVI:&&/a%WUSpdiY$#@;d7;s^_g/;\.!E'+/NQ^ftc>TQXnQF5tphh-e1R8^#(Z!F,XJFQM"P.j46Ab[*;p>0^U+]5m;aa=\TRSn./O*k6gr?g/Q7+@d,UXa3iJM<9p&l=Oi?ZqEl.UqSPE/;Jd2:D[>1QCNmH4QT[.t'eaW5*"(eJlX)/>];fn+O_02[8@3W@;*)ipUYijl&WQBDag2-DM#C4#83]F0X?48YN%(L^81dSZWB3#8["tk>alrEIgLQo;<'Lo@HRMI]6+"1$_5m0i[b85MU;hQcJ+,jq<[&oqT*'Yj^>[qr43^S.4[$AhJtmk'q8Z*!42JS<[glsjXIiUn_Vfi7KJ!d)Qab&[ZsWEGkR<@!12%'te)>Y<!qZ)B$hhqp^#IOKY3Z<!*=1s@!lO[qS#eh$1Ut!q"J>!YpV,rVCX;OP;;_]*I6=PM+NrH$`/c=:I4&hE\Z1erpl9,MU%))fbMgXN=SgY^"QgScM/oerk_Cf<%Gf<Z6_jQ/~>endstream
920 endobj
921 % 'R176': class PDFStream
922 176 0 obj
923 % page stream
924 << /Filter [ /ASCII85Decode
925 /FlateDecode ]
926- /Length 727 >>
927+ /Length 1164 >>
928 stream
929-Gb!#YgMYJ*&:KW#Ii)/e,q(O_?[/>2+]:S&oj_=Zp,I&-Hd1uUV16g9';LdY/lIcL-ba/)k3SMBB5Om:Yk:"p!%q2pHY%is5[&d,R3&/Fpll\l+3)CYNX[3=IG_E+32.7"oI:GTEmZS;YXk-h`lQRq`R5T#_BI26^l0CQW'Ube?QeX+k:g5$>7Lh_f+#0GWJ\/-Q)NEu@PWN,(=G,[_tRdt4NhhAKjjpLiBKa3oI7!IJJ-LB/?pfDPBZm)354Xj!$5t"%*ll1LRLd@'IcoGT7.>@Vt4gso^.A*(BW#b-%Qd7SKMFJb(3^s]S$Zl\9PZ:S2VI,M&iR6M5..AGc9+!^8,-!n/@IN=69Los66u;)R`$o"kg.#jo.7Dmcc;dW2Y/='50:uRR4oMFcG9\K2X2MD;O.jP$6d4Vt]uD;Z"\#88\f;,&sS_#g&iFOl1J-Mn.8ckseVZ'\<G/$he(P>r+N'G:ien$2#sjVQ6-%JOQtp5)MKbIL1`D=PeN]XH(B4'Zf^&1G(hKcY6RhQ@)$l/%-/A$-7E<qZ2B,)=;0HiVo]]gk.RI?BIf!Ur&0g([NkUgs`[R=hSepnJm5=BO.ho^!SmY2S2m7F<HOOn>P"7)ETS$S7V1RRDCbH.'Us92t]qQkBLSYpqbE!6Kb:MB%BrdEh*fR4&XCBP'0dWhF'6Z40Ih$3n*e.%6%'t3K\._5u4D%ol7`K8S*BF)N<&slD,A8~>endstream
930+Gb!#\D/Yn7&H6Rhs'ZW+:/5rnbWEOWc/#4UjAp09QV.7_^g_3a]6&8Q2ZLM/@OFq"RMTD3[Z%J"B-*Y4H"OjH3PK@:9hU#;)#h7X_0-sH_=fDji[+LE:FDd4'754H(d[B_ei[,(\7Ret@jPhAA4a/*fnr<US]o?XE\j8Z62SKR'gZ*!"!=8kIT6>R_CVHB<(&2Sdr0Oqe%!(@7!c>Vr9"^P:Ct8p&DfW=iQWsP0+'deJ.Xu!Z(>q9R7MNJjdKj03%-?rhlJJ,_f1"H)i]f+$_e>?&OfbY-1Wkr5rcY=;W%aDV;U@!PuU,8L.Wl5P(GTCOmnY#/I5\<KAKKS"eLkg`DR7Ic'5LD0^I$nn.fl0!Xp[@<1-/Ym_.BgT&Is!8AY_2)'6\Fp9mS^ic1j<#A\ZZ'N.<Aa&d2G%5#A?>3n"LSs&Bd(1'09a9e&d<3gWC`/rD6hHQla%H^\F=tj`iF`o-S_`/Q=cP.u%^C\J75rgB.>D`ZWDaf*5?uSV2n\DP&XS2fIPagbD.BQ:r62tCY!u#a&`*trCifG0t7/0X+5=<I=_@Q&5RFt18/'6qI8oiLb8:3YgT:KV&`,kcfBIb;sJ$4ukhQ/\Fs%GQX/%0L'5s6,&)HJm0%Gi9K;c-7JCAJlpCmsIgd-P?"n-h!AC1O5N7ID$-<`5)4&]K<t)Gr"N61d5EXlm</&6_X?e_P>uF/.VYB0F9U;.lB_ZHHeC/d=-nS1O'+^1m?K!G3Au=b`FE\;-aXOi)kjb:XnPAL0=AUWb?2<0rac4Q"(qQgcB(rk!VCBAV,i6fC^=Od)lpf+\^.SZOo;mdL;#6]%'PgD0?$$8bBJNi2>,8@9BFkbZ$h[F\kP<H"gRUhOtT\!V+Yq*\.u%[fR9%9f,49F+C'oEI/*<phrIisOf_;nVQARQel>o=GZ_mXW#5I\F@HJ:?7Hd;A(^b4o7$d;nCP]'Z]3\DaA"\us[j@O*(qOdlR46j).Y.go^%lf()R7jT"06lQk932!$iU#HH/Z]l/`ilL:*bX3'\m(%CtiZ'#5*4Z@r#T&DR.!.BE5V"#NOsKO3FTW_!:*o!N4Z7_qg2fAl&bs1@)q*@e87E;b!OYQ3h&U+RYn>i;hQ'A-1SSYFTs;!)YCP@T^7<9QK"t'h`_0U=GRO)[7Dj6<*V6\5f)~>endstream
931 endobj
932 % 'R177': class PDFStream
933 177 0 obj
934 % page stream
935 << /Filter [ /ASCII85Decode
936 /FlateDecode ]
937- /Length 1059 >>
938+ /Length 1051 >>
939 stream
940-Gasan>Ap#k'Rl+-s)9#_.BQLf2L"#Th2SjCG*OuP^.&;hN4XUsm7BA=^;n#o)qkWURUP]03EHOj004KH/\q6'(,lpUK7!hZn,g[LiQqGmiplSk:@H1/_u]Oo,YddPn.uuAde2]*!mj(WSo,.$!DOOT@h()aSfcui!dOrNbJ"cu-,78/hSG!Imbs(KP")G]rfY8N]mU"Y=30:9]9@;2dc]RQ($8#Ka*,=+heB>n]&hM#lAfXD$M?_PdtjU=ocq,K(QFkn(aLJ8i\Y#U\lEkW#Ud"C9&XXAk5#BjmDN;t<E"q[0LFuTOp).HP*te!%7jQVnpdA-BDtq-U4SY2/LW2dg$o8mXhK\@6D[:q%I5_OcmWCJa*s]Q-U*\EI.T][+"7kR8p6\ZH7dKn\*%!s'lpb2(tmHDC=G$m)I^9]FLFPt(DJ*ZArL=QI_eamm1l]VOb9?'!^?i>)_j!n$ksSP#r"ROUPtuK]W8IO=r">!lCcqoYL^?n)^s=N[mFT/KXG#t2rtrMeb2N\4FeC-Q!8Y*,kS`&EZc_ncnP(?/>OroqEpO;<cjX3G7k>l1C'B:0V\eEY^<[;A\h$-5K-#P>s47;*)L?1KF.6CkJF#6.khUk$L#tq)!SnX%0\\XGJsC1#`\KPo[4^nHpekTM6e>IJoHbB^?&&k<d_6g1(t\e#2j6QTq=@#Z!(Ed!;8-(ZI&M'&^IZ!,A\>[L`L&U0SfVQVCf$?.mu61\7:s0%aKX)s-#bi72td,EK`_Ajg>,iT\gKgqdp>gE6dSffT:d5/-n#nCiHMfLM&QioKKujK5f`fX)Q;)&o,f#4k2$:XQOc/MIE<Rg*&o6cW4&8T63=ZOq@dW`WfkdaHU[-5El3F[;1?\U+s/@Y6ClT@=2Al@Q5&@fi2(C()qKES(VNrXs6(h<[4Mtb[sq"dRp%-=T1q]8'nV#*f%;@\A>m,_k(AM/U+Q3@Kph@N`uuP!m5LR\%I7Qh+-6uPEfYAj(/jY?6"aJ.E69Z4,;CH&uJ+P6HFP8NKDVq#4>8X)6V%/_CZT7M\el1`][#Agr&6mGK:4N8H~>endstream
941+Gasan>Ar7S'RgRSs)9#?+<=@JV!`R#ecouR%G@KC24u3uAh/uN8LO2Gn"D;iZD\ch(q(uEQZJugn=nrUh#mRU_W$:OAPfO[7R71=/USs"0-2c"kk&b]5oS,nbOQ(fN.6u[0@O66+94Q4ioqNS(spLe1$6k=)MBO\,u?L=[2]CE)Yji.n.'pIpE';L:XVk;i1mYSS*aE.^HhTF]K84<-2f^XkJG(]$.rS:06]me[->,BU:K<=cNjsn]P3JoeAa2"c%=0?]m=b#gB%pW(nk[VD#<Ys$/Y#[>oiRcJ-%Dkk^ns$M(s`R(ubuq=,HdS0S_H6kU4cnb30nROf_TqK>Hb)U3=oIg0V[CB-'*Nh>Z&Vke`1;A;_"IO<R*8%%r_to?aWD3`cR3A^_c70<LM>KiP%CH.<3?bbDF,HFfadWOuWG@-K1Zb3bj1KdduNI2;T,@+gB^iO_@;&Xi\-M`<.V%_u)NI5&6qb3GaBT=NPB@;V]Eo>(`c_%P%1U#4@8W-(<IR0We1\>m%5i(9;]?fXaQ6D/<1k!_sNnb$5?RpIM`SNhr8Kq/=jpR''SA_8q1b_kVlbb&C>*S&H1Ak,ghO(#p'd^_'"c3]F4G64"X"tP+(Y+ahjo8\(q=CI<*S6hX/9i";Y+DDE6724(1hY4\K^km!tB4d;?g^&9Z1%[8W];nui$\06+SZE5ac@VD8nHh)`)oPL/0UfoYF444CbRL:M#M_,[!CneoC&!<Ih2/T"ET8F#!QSCP:;a:h@/nImX5P@/G[s/S6Am6AR('nk<Y*N*N1!%\Y=@Kd2brC`P;T^6#rC*]L2>dcXfHH;T\;+he'D>ZRicc:4->X,3lVA45KT/_4[555qK6S)m:%cZ")eA,eT#tCO(((J)qd)NRgpB^-+hiF*3U#=3*$]rLWj@3.d85(;_3E8%O5Z@(Q[V3?ef&HPB"LFrI-h2#:Y9^cZf6q2Zh.l8@Q6`jkV<>:Qq&BkgO++`^-'5aZ7B@??7/^m3G@U[YL6(!S]n8cT8R#,A"A)P6CVe4K_p/R2GZXJ)MG$0>7MiF>OX~>endstream
942 endobj
943 xref
944 0 178
945@@ -2370,72 +2370,72 @@
946 0000044494 00000 n
947 0000044648 00000 n
948 0000045280 00000 n
949-0000046611 00000 n
950-0000047980 00000 n
951-0000050352 00000 n
952-0000052637 00000 n
953-0000054973 00000 n
954-0000057465 00000 n
955-0000059951 00000 n
956-0000062442 00000 n
957-0000064606 00000 n
958-0000067088 00000 n
959-0000068843 00000 n
960-0000070655 00000 n
961-0000072771 00000 n
962-0000074026 00000 n
963-0000076740 00000 n
964-0000078806 00000 n
965-0000081192 00000 n
966-0000083287 00000 n
967-0000084769 00000 n
968-0000085270 00000 n
969-0000086527 00000 n
970-0000088686 00000 n
971-0000090927 00000 n
972-0000092922 00000 n
973-0000094351 00000 n
974-0000096078 00000 n
975-0000097874 00000 n
976-0000100283 00000 n
977-0000100946 00000 n
978-0000102978 00000 n
979-0000105100 00000 n
980-0000106969 00000 n
981-0000108914 00000 n
982-0000111121 00000 n
983-0000113273 00000 n
984-0000115207 00000 n
985-0000117769 00000 n
986-0000119695 00000 n
987-0000121592 00000 n
988-0000123304 00000 n
989-0000125301 00000 n
990-0000127057 00000 n
991-0000128839 00000 n
992-0000130606 00000 n
993-0000133048 00000 n
994-0000135493 00000 n
995-0000137615 00000 n
996-0000140176 00000 n
997-0000142418 00000 n
998-0000144459 00000 n
999-0000145988 00000 n
1000-0000147598 00000 n
1001-0000148918 00000 n
1002-0000150079 00000 n
1003-0000151241 00000 n
1004-0000152376 00000 n
1005-0000154331 00000 n
1006-0000155202 00000 n
1007+0000046601 00000 n
1008+0000047970 00000 n
1009+0000050342 00000 n
1010+0000052614 00000 n
1011+0000054936 00000 n
1012+0000057401 00000 n
1013+0000059842 00000 n
1014+0000062312 00000 n
1015+0000064483 00000 n
1016+0000066913 00000 n
1017+0000068677 00000 n
1018+0000070669 00000 n
1019+0000072785 00000 n
1020+0000074102 00000 n
1021+0000076816 00000 n
1022+0000078882 00000 n
1023+0000081268 00000 n
1024+0000083363 00000 n
1025+0000084845 00000 n
1026+0000085346 00000 n
1027+0000086603 00000 n
1028+0000088729 00000 n
1029+0000090985 00000 n
1030+0000093022 00000 n
1031+0000094529 00000 n
1032+0000096226 00000 n
1033+0000098067 00000 n
1034+0000100531 00000 n
1035+0000101271 00000 n
1036+0000103486 00000 n
1037+0000105666 00000 n
1038+0000107515 00000 n
1039+0000109371 00000 n
1040+0000111277 00000 n
1041+0000113558 00000 n
1042+0000115573 00000 n
1043+0000118204 00000 n
1044+0000120084 00000 n
1045+0000121879 00000 n
1046+0000123669 00000 n
1047+0000125390 00000 n
1048+0000127345 00000 n
1049+0000129012 00000 n
1050+0000130807 00000 n
1051+0000133104 00000 n
1052+0000135631 00000 n
1053+0000137580 00000 n
1054+0000139936 00000 n
1055+0000142453 00000 n
1056+0000144439 00000 n
1057+0000146353 00000 n
1058+0000148112 00000 n
1059+0000149444 00000 n
1060+0000150619 00000 n
1061+0000151744 00000 n
1062+0000152850 00000 n
1063+0000154642 00000 n
1064+0000155951 00000 n
1065 trailer
1066 << /ID
1067 % ReportLab generated PDF document -- digest (http://www.reportlab.com)
1068- [(\242\252\270\340f0b\216\324\353o\343\364\370\200\353) (\242\252\270\340f0b\216\324\353o\343\364\370\200\353)]
1069+ [(c\0243\337\031,U\034\302\260}\304\003\260!\242) (c\0243\337\031,U\034\302\260}\304\003\260!\242)]
1070
1071 /Info 71 0 R
1072 /Root 70 0 R
1073 /Size 178 >>
1074 startxref
1075-156378
1076+157119
1077 %%EOF
1078
1079=== modified file 'docs/userguide/app_demos.py'
1080--- docs/userguide/app_demos.py 2009-02-22 14:19:44 +0000
1081+++ docs/userguide/app_demos.py 2013-04-14 00:48:45 +0000
1082@@ -1,4 +1,4 @@
1083-#Copyright ReportLab Europe Ltd. 2000-2004
1084+#Copyright ReportLab Europe Ltd. 2000-2012
1085 #see license.txt for license details
1086 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/app_demos.py
1087 from tools.docco.rl_doc_utils import *
1088
1089=== modified file 'docs/userguide/ch1_intro.py'
1090--- docs/userguide/ch1_intro.py 2010-12-06 12:45:44 +0000
1091+++ docs/userguide/ch1_intro.py 2013-04-14 00:48:45 +0000
1092@@ -1,6 +1,6 @@
1093-#Copyright ReportLab Europe Ltd. 2000-2004
1094+#Copyright ReportLab Europe Ltd. 2000-2012
1095 #see license.txt for license details
1096-__version__ = '$Id: ch1_intro.py 3790 2010-09-29 14:20:28Z tim $'
1097+__version__ = '$Id: ch1_intro.py 3960 2012-09-27 15:22:33Z guillaume $'
1098 from tools.docco.rl_doc_utils import *
1099 from reportlab.platypus.tableofcontents import TableOfContents
1100 from datetime import datetime
1101@@ -181,6 +181,7 @@
1102 disc("""Many people have contributed to ReportLab. We would like to thank in particular
1103 (in alphabetical order):
1104 Albertas Agejevas,
1105+Alex Buck,
1106 Andre Reitz,
1107 Andrew Mercer,
1108 Benjamin Dumke,
1109@@ -189,13 +190,16 @@
1110 Chris Lee,
1111 Christian Jacobs,
1112 Dinu Gherman,
1113-Eric Johnson,
1114+Eric Johnson,
1115+Felix Labrecque,
1116 Gary Poster,
1117 Germán M. Bravo,
1118+Guillaume Francois,
1119 Hans Brand,
1120 Henning Vonbargen,
1121 Hosam Aly,
1122-Ian Stevens,
1123+Ian Stevens,
1124+James Martin-Collar,
1125 Jeff Bauer,
1126 Jerome Alet,
1127 Jerry Casiano,
1128@@ -210,6 +214,7 @@
1129 Moshe Wagner,
1130 Nate Silva,
1131 Paul McNett,
1132+Peter Johnson,
1133 PJACock,
1134 Publio da Costa Melo,
1135 Randolph Bentson,
1136@@ -240,16 +245,26 @@
1137 heading3("A note on available versions")
1138 disc("""Our website ^http://www.reportlab.com/^ will always have up-to-date
1139 information on setups and installations. The latest version of the ReportLab library can be found at
1140-^http://www.reportlab.com/software/opensource/rl-toolkit/download/^. Older versions can be found at ^http://www.reportlab.com/ftp/^.
1141- Each successive version is stored in both zip
1142+^http://www.reportlab.com/software/opensource/rl-toolkit/download/^.
1143+Older versions can be found at ^http://www.reportlab.com/ftp/^.
1144+""")
1145+disc("""Each successive version is stored in both zip
1146 and tgz format, but the contents are identical apart from line endings.
1147 Versions are numbered: $ReportLab_<major_version>_<minor_version>.zip$,
1148-$ReportLab_<major_version>_<minor_version>.tgz$ and so on.
1149-The latest stable version is $reportlab2.5$ (.zip or .tgz),
1150+$ReportLab_<major_version>_<minor_version>.tgz$ and so on.
1151+""")
1152+disc("""
1153+The latest stable version is $reportlab2.6$ (.zip or .tgz).
1154 Daily snapshots of the trunk are available as
1155 $reportlab-daily-unix.tar.gz$ or $reportlab-daily-win32.zip$.
1156- Finally, from version 2.4 onwards, there is also a Windows installer
1157-available for Python versions 2.4 - 2.7, named $ReportLab-2.x.win32-py2.x.exe$
1158+""")
1159+disc("""Finally, from version 2.4 onwards, there is also a Windows installer
1160+available for Python versions 2.5 - 2.7, named $ReportLab-2.x.win32-py2.x.exe$
1161+""")
1162+
1163+pencilnote()
1164+disc("""We plan to drop the support of Python 2.5 in our next release.
1165+We advise you to move to Python 2.6 or 2.7.
1166 """)
1167
1168 heading3("Installation on Windows")
1169@@ -257,8 +272,8 @@
1170 restartList()
1171
1172 list("""First, install Python from $http://www.python.org/.$
1173-Reportlab 2.x works with Python 2.4 upwards but we recommend to use
1174-the latest stable version of Python 2.5 or 2.6.
1175+Reportlab 2.x works with Python 2.5 upwards but we recommend to use
1176+the latest stable version of Python 2.7.
1177 After installing, you should be able to run the
1178 'Python (command line)' option from the Start Menu.
1179 """)
1180@@ -304,8 +319,10 @@
1181
1182 heading3("Installation instructions for Unix")
1183 disc("""
1184-
1185+Many Linux distributions already include or can deliver a ReportLab distribution, although this may be a few months behind our own releases. On Ubuntu, simply use ^sudo apt-get install python-reportlab^. In addition, we support the Python packaging mechanisms so you can use ^easy_install reportlab^ in most Python environments.
1186 """)
1187+disc("""
1188+If you want to install the latest version of our code, or to install your own reportlab to go with our commercial distribution, you can install from source as follows:""")
1189
1190 restartList()
1191 list("""First, install Python. On a large number of Unix and Linux distributions, Python is already installed,
1192@@ -397,8 +414,6 @@
1193 bullet("""allowtableBoundsErrors: set to 0 to force an error on very large Platypus table elements""")
1194 bullet("""emptyTableAction: Controls behaviour for empty tables, can be 'error' (default), 'indicate' or 'ignore'.""")
1195
1196-
1197-
1198 heading2("Learning More About Python")
1199
1200 disc("""
1201@@ -440,7 +455,7 @@
1202
1203 bullet("""<b>Dive Into Python</b>.
1204 A free Python tutorial for experienced programmers.
1205-$http://diveintopython.org/$
1206+$http://www.diveintopython.net/$
1207 """)
1208
1209
1210@@ -466,44 +481,49 @@
1211 target dates.
1212 """)
1213
1214-heading2("What's New in ReportLab 2.4")
1215-disc("""Many new features have been added and numerous bugs have been fixed, a big
1216-thanks goes to the community for their help in reporting bugs and providing patches.
1217-Thanks to everybody who has contributed to the open-source toolkit in the run-up to the 2.4 release,
1218+heading2("What's New in ReportLab 2.6")
1219+disc("""This is a minor release focusing mainly on improved documentation. There are a
1220+number of minor enhancements, and a larger number of previous-undocumented
1221+enhancements which we have documented better.""")
1222+
1223+disc("""A big thanks goes to the community for their help in reporting bugs and providing patches.
1224+Thanks to everybody who has contributed to the open-source toolkit in the run-up to the 2.6 release,
1225 whether by reporting bugs, sending patches, or contributing to the reportlab-users mailing list.
1226-Thanks especially to the following people: PJACock, Hans Brand, Ian Stevens, Yoann Roman, Hosam Aly
1227-Randolph Bentson, Volker Haas, Simon King, Henning Vonbargen, Michael Egorov, Mike Folwell and
1228-Roberto Alsina.
1229-This page documents what has changed since version 2.3.""")
1230-
1231-disc('Reportlab 2.4 is installable with easy_install. You must have installed a compatible C compiler and the dependencies such as Freetype and PIL.')
1232-
1233-heading4('PDF')
1234-bullet("""Canvas automatic cropmarks.""")
1235-bullet("""RGB alpha colours - colours can now be transparent with an alpha value.""")
1236-bullet("""CMYK overPrint - physical colour mix in the printer - similar to RGB alpha but
1237- used in professional printing.""")
1238-bullet("""Colours module has a fade function that returns a list of different shades made
1239- up of one base colour.""")
1240-bullet("""Unicode font file names are now accepted.""")
1241-bullet("""Lots of improvements and verbosity to error messages and the way they are handled.
1242-Font size can now be specified in pixels.""")
1243-
1244-heading4('Platypus')
1245-bullet("""Added support for heading styles h4-h6.""")
1246-bullet("""Improved support for onDraw and SimpleIndex.""")
1247-bullet("""Add support for index tableStyle.""")
1248-bullet("""Added an alphabetic grouping indexing class.""")
1249-bullet("""Added support for multi-level and alphabetical indexes.""")
1250-bullet("""Added support for an unlimited number of TOC levels with default styles.""")
1251-bullet("""Index entries can now be clickable.""")
1252-
1253-heading4('Graphics')
1254-bullet("""Chart axes values can be reversible.""")
1255-bullet("""Labels on chart axes can now be drawn above or below the axes (hi or low).""")
1256-bullet("""A per swatch callout is now allowed in the legend.""")
1257-bullet("""A new anchoring mode for string 'numeric' that align numerical strings by their decimal place.""")
1258-bullet("""Drawing has a resized method now to change the size dynamically.""")
1259+Thanks especially to the following people: Alex Buck, Felix Labrecque,
1260+Peter Johnson, James Martin-Collar and Guillaume Francois.
1261+This page documents what has changed since version 2.5.""")
1262+
1263+disc('Reportlab 2.6 is installable with easy_install. You must have installed a compatible C compiler and the dependencies such as Freetype and PIL.')
1264+
1265+heading4('General changes')
1266+bullet("""Manuals have been reformatted with more pleasing code snippets and tables of
1267+contents, and reviewed and expanded.""")
1268+
1269+heading4('Flowing documents (Platypus)')
1270+bullet("""Added support for HTML-style list objects.""")
1271+bullet("""Added flexible mechanism for drawing bullets.""")
1272+bullet("""Allowed XPreformatted objects to use Asian line wrapping.""")
1273+bullet("""Added an 'autoNextPageTemplate' attribute to PageTemplates. For example you
1274+can now set up a 'chapter first page template' which will always be followed
1275+by a 'continuation template' on the next page break, saving the programmer from
1276+having to issue control flow commands in the story.""")
1277+bullet("""Added a TopPadder flowable, which will 'wrap' another Flowable and move it
1278+to the bottom of the current page.""")
1279+bullet("""More helpful error messages when large tables cannot be rendered.""")
1280+bullet("""Documentation for images within text (test_032_images).""")
1281+bullet("""Trailing dots for use on contents pages.""")
1282+
1283+heading4('Charts and graphics')
1284+bullet("""Support for UPCA bar codes.""")
1285+bullet("""We now have a semi-intelligent system for labelling pie charts with
1286+callout lines. Thanks to James Martin-Collar, a maths student at Warwick
1287+University, who did this as his summer internship.""")
1288+bullet("""Axes - added startOffset and endOffset properties; allowed for axis
1289+background annotations.""")
1290+bullet("""Bar charts - allow more control of z Index (i.e. drawing order of axes and
1291+lines)""")
1292+bullet("""Pie charts - fixed bugs in 3d appearance.""")
1293+bullet("""SVG output back end has seen some bugs fixed and now outputs resizeable SVG.""")
1294
1295 # Noteworthy bug fixes Section #######################
1296 #heading3("Noteworthy bug fixes")
1297
1298=== modified file 'docs/userguide/ch2_graphics.py'
1299--- docs/userguide/ch2_graphics.py 2010-12-06 12:45:44 +0000
1300+++ docs/userguide/ch2_graphics.py 2013-04-14 00:48:45 +0000
1301@@ -1,4 +1,4 @@
1302-#Copyright ReportLab Europe Ltd. 2000-2004
1303+#Copyright ReportLab Europe Ltd. 2000-2012
1304 #see license.txt for license details
1305 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch2_graphics.py
1306 from tools.docco.rl_doc_utils import *
1307@@ -1227,28 +1227,27 @@
1308 heading2("Further Reading: The ReportLab Graphics Library")
1309
1310 disc("""
1311-So far the graphics we have seen was created on a fairly low level.
1312+So far the graphics we have seen were created on a fairly low level.
1313 It should be noted, though, that there is another way of creating
1314-much more sophisticated graphics using the emerging dedicated
1315+much more sophisticated graphics using the dedicated
1316 high-level <i>ReportLab Graphics Library</i>.
1317 """)
1318
1319 disc("""
1320 It can be used to produce high-quality, platform-independant,
1321 reusable graphics for different output formats (vector and bitmap)
1322-like PDF, EPS and soon others like SVG.
1323+like PDF, EPS, SVG, JPG and PNG.
1324 """)
1325
1326 disc("""
1327-A thorough description of its philsophy and features is beyond the
1328-scope of this general user guide and the reader is recommended to
1329-continue with the <i>"ReportLab Graphics Guide"</i>.
1330-There she will find information about the existing components and
1331+A more thorough description of its philsophy and features is
1332+now covered in Chapter 11 of this document, <i>Graphics</i>, which
1333+contains information about the existing components and
1334 how to create customized ones.
1335 """)
1336
1337 disc("""
1338-Also, the graphics guide contains a presentation of an emerging
1339+Chapter 11 also contains details of the ReportLab
1340 charting package and its components (labels, axes, legends and
1341 different types of charts like bar, line and pie charts) that
1342 builds directly on the graphics library.
1343
1344=== modified file 'docs/userguide/ch2a_fonts.py'
1345--- docs/userguide/ch2a_fonts.py 2008-10-19 23:16:31 +0000
1346+++ docs/userguide/ch2a_fonts.py 2013-04-14 00:48:45 +0000
1347@@ -1,4 +1,4 @@
1348-#Copyright ReportLab Europe Ltd. 2000-2004
1349+#Copyright ReportLab Europe Ltd. 2000-2012
1350 #see license.txt for license details
1351 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch2a_fonts.py
1352 from tools.docco.rl_doc_utils import *
1353
1354=== modified file 'docs/userguide/ch3_pdffeatures.py'
1355--- docs/userguide/ch3_pdffeatures.py 2009-02-22 14:19:44 +0000
1356+++ docs/userguide/ch3_pdffeatures.py 2013-04-14 00:48:45 +0000
1357@@ -1,4 +1,4 @@
1358-#Copyright ReportLab Europe Ltd. 2000-2004
1359+#Copyright ReportLab Europe Ltd. 2000-2012
1360 #see license.txt for license details
1361 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch3_pdffeatures.py
1362 from tools.docco.rl_doc_utils import *
1363
1364=== modified file 'docs/userguide/ch4_platypus_concepts.py'
1365--- docs/userguide/ch4_platypus_concepts.py 2009-02-22 14:19:44 +0000
1366+++ docs/userguide/ch4_platypus_concepts.py 2013-04-14 00:48:45 +0000
1367@@ -1,4 +1,4 @@
1368-#Copyright ReportLab Europe Ltd. 2000-2004
1369+#Copyright ReportLab Europe Ltd. 2000-2012
1370 #see license.txt for license details
1371 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch4_platypus_concepts.py
1372 from tools.docco.rl_doc_utils import *
1373
1374=== modified file 'docs/userguide/ch5_paragraphs.py'
1375--- docs/userguide/ch5_paragraphs.py 2010-12-06 12:45:44 +0000
1376+++ docs/userguide/ch5_paragraphs.py 2013-04-14 00:48:45 +0000
1377@@ -1,4 +1,4 @@
1378-#Copyright ReportLab Europe Ltd. 2000-2004
1379+#Copyright ReportLab Europe Ltd. 2000-2012
1380 #see license.txt for license details
1381 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch5_paragraphs.py
1382 from tools.docco.rl_doc_utils import *
1383
1384=== modified file 'docs/userguide/ch6_tables.py'
1385--- docs/userguide/ch6_tables.py 2010-12-06 12:45:44 +0000
1386+++ docs/userguide/ch6_tables.py 2013-04-14 00:48:45 +0000
1387@@ -1,8 +1,8 @@
1388-#Copyright ReportLab Europe Ltd. 2000-2004
1389+#Copyright ReportLab Europe Ltd. 2000-2012
1390 #see license.txt for license details
1391 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch6_tables.py
1392 from tools.docco.rl_doc_utils import *
1393-from reportlab.platypus import Image
1394+from reportlab.platypus import Image,ListFlowable, ListItem
1395 import reportlab
1396
1397 heading1("Tables and TableStyles")
1398@@ -397,16 +397,41 @@
1399 """)
1400
1401 heading1("""Other Useful $Flowables$""")
1402-heading2("""$Preformatted(text, style, bulletText = None, dedent=0)$""")
1403+heading2("""$Preformatted(text, style, bulletText=None, dedent=0, maxLineLength=None, splitChars=None, newLineChars=None)$""")
1404 disc("""
1405 Creates a preformatted paragraph which does no wrapping, line splitting or other manipulations.
1406 No $XML$ style tags are taken account of in the text.
1407 If dedent is non zero $dedent$ common leading
1408 spaces will be removed from the front of each line.
1409 """)
1410-heading2("""$XPreformatted(text, style, bulletText = None, dedent=0, frags=None)$""")
1411-disc("""
1412-This is a non rearranging form of the $Paragraph$ class; $XML$ tags are allowed in
1413+heading3("Defining a maximum line length")
1414+disc("""
1415+You can use the property $maxLineLength$ to define a maximum line length. If a line length exceeds this maximum value, the line will be automatically splitted.
1416+""")
1417+disc("""
1418+The line will be split on any single character defined in $splitChars$. If no value is provided for this property, the line will be split on any of the following standard characters: space, colon, full stop, semi-colon, coma, hyphen, forward slash, back slash, left parenthesis, left square bracket and left curly brace
1419+""")
1420+disc("""
1421+Characters can be automatically inserted at the beginning of each line that has been created. You can set the property $newLineChars$ to the characters you want to use.
1422+""")
1423+EmbeddedCode("""
1424+from reportlab.lib.styles import getSampleStyleSheet
1425+stylesheet=getSampleStyleSheet()
1426+normalStyle = stylesheet['Code']
1427+text='''
1428+class XPreformatted(Paragraph):
1429+ def __init__(self, text, style, bulletText = None, frags=None, caseSensitive=1):
1430+ self.caseSensitive = caseSensitive
1431+ if maximumLineLength and text:
1432+ text = self.stopLine(text, maximumLineLength, splitCharacters)
1433+ cleaner = lambda text, dedent=dedent: string.join(_dedenter(text or '',dedent),'')
1434+ self._setup(text, style, bulletText, frags, cleaner)
1435+'''
1436+t=Preformatted(text,normalStyle,maxLineLength=60, newLineChars='> ')
1437+""")
1438+heading2("""$XPreformatted(text, style, bulletText=None, dedent=0, frags=None)$""")
1439+disc("""
1440+This is a non rearranging form of the $Paragraph$ class; XML tags are allowed in
1441 $text$ and have the same meanings as for the $Paragraph$ class.
1442 As for $Preformatted$, if dedent is non zero $dedent$ common leading
1443 spaces will be removed from the front of each line.
1444@@ -414,7 +439,7 @@
1445 EmbeddedCode("""
1446 from reportlab.lib.styles import getSampleStyleSheet
1447 stylesheet=getSampleStyleSheet()
1448-normalStyle = stylesheet['Normal']
1449+normalStyle = stylesheet['Code']
1450 text='''
1451
1452 This is a non rearranging form of the <b>Paragraph</b> class;
1453@@ -429,6 +454,7 @@
1454 '''
1455 t=XPreformatted(text,normalStyle,dedent=3)
1456 """)
1457+
1458 heading2("""$Image(filename, width=None, height=None)$""")
1459 disc("""Create a flowable which will contain the image defined by the data in file $filename$.
1460 The default <b>PDF</b> image type <i>jpeg</i> is supported and if the <b>PIL</b> extension to <b>Python</b>
1461@@ -437,7 +463,7 @@
1462 not specified (or specified as $None$) then the corresponding pixel dimension of the image is assumed
1463 to be in <i>points</i> and used.
1464 """)
1465-I=os.path.join(os.path.dirname(reportlab.__file__),'docs','images','lj8100.jpg')
1466+I="../images/lj8100.jpg"
1467 eg("""
1468 Image("lj8100.jpg")
1469 """,after=0.1)
1470@@ -655,3 +681,43 @@
1471 disc("""
1472 This indexes the terms "comma (,)", "," and "...".
1473 """)
1474+
1475+heading2("""$ListFlowable(),ListItem()$""")
1476+disc("""
1477+Use these classes to make ordered and unordered lists. Lists can be nested.
1478+""")
1479+
1480+disc("""
1481+$ListFlowable()$ will create an ordered list, which can contain any flowable. The class has a number of parameters to change font, colour, size, style and position of list numbers, or of bullets in unordered lists. The type of numbering can also be set to use lower or upper case letters ('A,B,C' etc.) or Roman numerals (capitals or lowercase) using the bulletType property. To change the list to an unordered type, set bulletType='bullet'.
1482+""")
1483+
1484+disc("""
1485+Items within a $ListFlowable()$ list can be changed from their default appearance by wrapping them in a $ListItem()$ class and setting its properties.
1486+""")
1487+
1488+disc("""
1489+The following will create an ordered list, and set the third item to an unordered sublist.
1490+""")
1491+
1492+EmbeddedCode("""
1493+from reportlab.platypus import ListFlowable, ListItem
1494+from reportlab.lib.styles import getSampleStyleSheet
1495+styles = getSampleStyleSheet()
1496+style = styles["Normal"]
1497+t = ListFlowable(
1498+[
1499+Paragraph("Item no.1", style),
1500+ListItem(Paragraph("Item no. 2", style),bulletColor="green",value=7),
1501+ListFlowable(
1502+ [
1503+ Paragraph("sublist item 1", style),
1504+ ListItem(Paragraph('sublist item 2', style),bulletColor='red',value='square')
1505+ ],
1506+ bulletType='bullet',
1507+ start='square',
1508+ ),
1509+Paragraph("Item no.4", style),
1510+],
1511+bulletType='i'
1512+)
1513+ """)
1514
1515=== modified file 'docs/userguide/ch7_custom.py'
1516--- docs/userguide/ch7_custom.py 2008-10-19 23:16:31 +0000
1517+++ docs/userguide/ch7_custom.py 2013-04-14 00:48:45 +0000
1518@@ -1,4 +1,4 @@
1519-#Copyright ReportLab Europe Ltd. 2000-2004
1520+#Copyright ReportLab Europe Ltd. 2000-2012
1521 #see license.txt for license details
1522 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/ch7_custom.py
1523 from tools.docco.rl_doc_utils import *
1524
1525=== modified file 'docs/userguide/genuserguide.py'
1526--- docs/userguide/genuserguide.py 2009-02-22 14:19:44 +0000
1527+++ docs/userguide/genuserguide.py 2013-04-14 00:48:45 +0000
1528@@ -1,8 +1,8 @@
1529 #!/bin/env python
1530-#Copyright ReportLab Europe Ltd. 2000-2004
1531+#Copyright ReportLab Europe Ltd. 2000-2012
1532 #see license.txt for license details
1533 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/docs/userguide/genuserguide.py
1534-__version__=''' $Id: genuserguide.py 3376 2009-01-19 12:05:41Z jonas $ '''
1535+__version__=''' $Id: genuserguide.py 3959 2012-09-27 14:39:39Z robin $ '''
1536 __doc__ = """
1537 This module contains the script for building the user guide.
1538 """
1539
1540=== modified file 'docs/userguide/graph_charts.py'
1541--- docs/userguide/graph_charts.py 2010-02-16 23:32:55 +0000
1542+++ docs/userguide/graph_charts.py 2013-04-14 00:48:45 +0000
1543@@ -1,6 +1,6 @@
1544-#Copyright ReportLab Europe Ltd. 2000-2008
1545+#Copyright ReportLab Europe Ltd. 2000-2012
1546 #see license.txt for license details
1547-__version__=''' $Id: graph_charts.py 3563 2009-10-01 10:52:36Z damian $ '''
1548+__version__=''' $Id: graph_charts.py 3959 2012-09-27 14:39:39Z robin $ '''
1549 from tools.docco.rl_doc_utils import *
1550 from reportlab.graphics.shapes import *
1551
1552@@ -133,7 +133,7 @@
1553 properties.""")
1554
1555
1556-heading3("Labels")
1557+heading2("Labels")
1558
1559 disc("""
1560 A label is a string of text attached to some chart element.
1561@@ -246,7 +246,7 @@
1562
1563
1564
1565-heading3("Axes")
1566+heading2("Axes")
1567
1568 disc("""
1569 We identify two basic kinds of axes - <i>Value</i> and <i>Category</i>
1570@@ -576,7 +576,7 @@
1571 caption("""Table <seq template="%(Chapter)s-%(Table+)s"/> - Axes joining properties""")
1572
1573
1574-heading3("Bar Charts")
1575+heading2("Bar Charts")
1576
1577 disc("""
1578 This describes our current $VerticalBarChart$ class, which uses the
1579@@ -687,9 +687,6 @@
1580 ["fillColor", """Defaults to None. This will fill the plot rectangle with
1581 a solid color. (Note that we could implement dashArray etc.
1582 as for any other solid shape)"""],
1583- ["barLabelFormat", """This is a format string or function used for displaying
1584-labels above each bar. They are positioned automatically
1585-above the bar for positive values and below for negative ones."""],
1586 ["useAbsolute", """Defaults to 0. If 1, the three properties below are
1587 absolute values in points (which means you can make a chart
1588 where the bars stick out from the plot rectangle); if 0,
1589@@ -704,8 +701,9 @@
1590 group. If you wanted a little gap between green and red bars in
1591 the example above, you would make this non-zero."""],
1592 ["barLabelFormat", """Defaults to None. As with the YValueAxis, if you supply
1593-a function or format string then labels will be drawn next
1594-to each bar showing the numeric value."""],
1595+a function or format string then labels will be drawn next to each bar
1596+showing the numeric value. They are positioned automatically
1597+above the bar for positive values and below for negative ones."""],
1598 ["barLabels", """A collection of labels used to format all bar labels. Since
1599 this is a two-dimensional array, you may explicitly format the
1600 third label of the second series using this syntax:
1601@@ -865,7 +863,7 @@
1602 ##title, subTitle Not implemented yet. These would be label-like objects whose text could be set directly and which would appear in sensible locations. For now, you can just place extra strings on the drawing.
1603
1604
1605-heading3("Line Charts")
1606+heading2("Line Charts")
1607
1608 disc("""
1609 We consider "Line Charts" to be essentially the same as
1610@@ -943,10 +941,42 @@
1611
1612
1613 disc("")
1614-todo("Add properties table.")
1615-
1616-
1617-heading3("Line Plots")
1618+
1619+data=[["Property","Meaning"],
1620+ ["data", "Data to be plotted, list of (lists of) numbers."],
1621+ ["x, y, width, height", """Bounding box of the line chart.
1622+Note that x and y do NOT specify the centre but the bottom left corner"""],
1623+ ["valueAxis", """The value axis, which may be formatted as described previously."""],
1624+ ["categoryAxis", """The category axis, which may be formatted as described previously."""],
1625+ ["strokeColor", """Defaults to None. This will draw a border around the plot rectangle,
1626+which may be useful in debugging. Axes will overwrite this."""],
1627+ ["fillColor", """Defaults to None. This will fill the plot rectangle with a solid color."""],
1628+ ["lines.strokeColor", """Color of the line."""],
1629+ ["lines.strokeWidth", """Width of the line."""],
1630+ ["lineLabels", """A collection of labels used to format all line labels. Since
1631+this is a two-dimensional array, you may explicitly format the
1632+third label of the second line using this syntax:
1633+ chart.lineLabels[(1,2)].fontSize = 12"""],
1634+ ["lineLabelFormat", """Defaults to None. As with the YValueAxis, if you supply
1635+a function or format string then labels will be drawn next
1636+to each line showing the numeric value. You can also set it
1637+to 'values' to display the values explicity defined in lineLabelArray."""],
1638+ ["lineLabelArray", """Explicit array of line label values, must match size of data if present.
1639+These labels values will be displayed only if the property
1640+lineLabelFormat above is set to 'values'."""]]
1641+t=Table(data, colWidths=(100,330))
1642+t.setStyle(TableStyle([
1643+ ('FONT',(0,0),(-1,0),'Times-Bold',10,12),
1644+ ('FONT',(0,1),(0,-1),'Courier',8,8),
1645+ ('FONT',(1,1),(1,-1),'Times-Roman',10,12),
1646+ ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
1647+ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
1648+ ('BOX', (0,0), (-1,-1), 0.25, colors.black),
1649+ ]))
1650+getStory().append(t)
1651+caption("""Table <seq template="%(Chapter)s-%(Table+)s"/> - HorizontalLineChart properties""")
1652+
1653+heading2("Line Plots")
1654
1655 disc("""
1656 Below we show a more complex example of a Line Plot that
1657@@ -1024,22 +1054,56 @@
1658
1659
1660 disc("")
1661-todo("Add properties table.")
1662-
1663-
1664-
1665-heading3("Pie Charts")
1666+
1667+data=[["Property","Meaning"],
1668+ ["data", "Data to be plotted, list of (lists of) numbers."],
1669+ ["x, y, width, height", """Bounding box of the line chart.
1670+Note that x and y do NOT specify the centre but the bottom left corner"""],
1671+ ["xValueAxis", """The vertical value axis, which may be formatted as described previously."""],
1672+ ["yValueAxis", """The horizontal value axis, which may be formatted as described previously."""],
1673+ ["strokeColor", """Defaults to None. This will draw a border around the plot rectangle,
1674+which may be useful in debugging. Axes will overwrite this."""],
1675+ ["strokeWidth", """Defaults to None. Width of the border around the plot rectangle."""],
1676+ ["fillColor", """Defaults to None. This will fill the plot rectangle with a solid color."""],
1677+ ["lines.strokeColor", """Color of the line."""],
1678+ ["lines.strokeWidth", """Width of the line."""],
1679+ ["lines.symbol", """Marker used for each point.
1680+You can create a new marker using the function makeMarker().
1681+For example to use a circle, the function call would be makeMarker('Circle')"""],
1682+ ["lineLabels", """A collection of labels used to format all line labels. Since
1683+this is a two-dimensional array, you may explicitly format the
1684+third label of the second line using this syntax:
1685+ chart.lineLabels[(1,2)].fontSize = 12"""],
1686+ ["lineLabelFormat", """Defaults to None. As with the YValueAxis, if you supply
1687+a function or format string then labels will be drawn next
1688+to each line showing the numeric value. You can also set it
1689+to 'values' to display the values explicity defined in lineLabelArray."""],
1690+ ["lineLabelArray", """Explicit array of line label values, must match size of data if present.
1691+These labels values will be displayed only if the property
1692+lineLabelFormat above is set to 'values'."""]]
1693+t=Table(data, colWidths=(100,330))
1694+t.setStyle(TableStyle([
1695+ ('FONT',(0,0),(-1,0),'Times-Bold',10,12),
1696+ ('FONT',(0,1),(0,-1),'Courier',8,8),
1697+ ('FONT',(1,1),(1,-1),'Times-Roman',10,12),
1698+ ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
1699+ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
1700+ ('BOX', (0,0), (-1,-1), 0.25, colors.black),
1701+ ]))
1702+getStory().append(t)
1703+caption("""Table <seq template="%(Chapter)s-%(Table+)s"/> - LinePlot properties""")
1704+
1705+
1706+
1707+
1708+heading2("Pie Charts")
1709
1710 disc("""
1711-We've already seen a pie chart example above.
1712-This is provisional but seems to do most things.
1713-At the very least we need to change the name.
1714-For completeness we will cover it here.
1715+As usual, we will start with an example:
1716 """)
1717
1718 eg("""
1719 from reportlab.graphics.charts.piecharts import Pie
1720-
1721 d = Drawing(200, 100)
1722
1723 pc = Pie()
1724@@ -1056,19 +1120,18 @@
1725 pc.slices[3].strokeDashArray = [2,2]
1726 pc.slices[3].labelRadius = 1.75
1727 pc.slices[3].fontColor = colors.red
1728-
1729 d.add(pc)
1730 """)
1731
1732 from reportlab.graphics.charts.piecharts import Pie
1733
1734-d = Drawing(200, 100)
1735+d = Drawing(400, 200)
1736
1737 pc = Pie()
1738-pc.x = 65
1739-pc.y = 15
1740-pc.width = 70
1741-pc.height = 70
1742+pc.x = 125
1743+pc.y = 25
1744+pc.width = 150
1745+pc.height = 150
1746 pc.data = [10,20,30,40,50,60]
1747 pc.labels = ['a','b','c','d','e','f']
1748
1749@@ -1076,7 +1139,7 @@
1750 pc.slices[3].popout = 10
1751 pc.slices[3].strokeWidth = 2
1752 pc.slices[3].strokeDashArray = [2,2]
1753-pc.slices[3].labelRadius = 1.75
1754+pc.slices[3].labelRadius = 1.25
1755 pc.slices[3].fontColor = colors.red
1756
1757 d.add(pc)
1758@@ -1087,36 +1150,154 @@
1759 Properties are covered below.
1760 The pie has a 'wedges' collection and we document wedge properties
1761 in the same table.
1762-This was invented before we finished the $Label$ class and will
1763-probably be reworked to use such labels shortly.
1764-""")
1765-
1766-disc("")
1767-todo("Add properties table.")
1768-
1769-##Property Value
1770-##data a list or tuple of numbers
1771-##x, y, width, height Bounding box of the pie. Note that x and y do NOT specify the centre but the bottom left corner, and that width and height do not have to be equal; pies may be elliptical and wedges will be drawn correctly.
1772-##labels None, or a list of strings. Make it None if you don't want labels around the edge of the pie. Since it is impossible to know the size of slices, we generally discourage placing labels in or around pies; it is much better to put them in a legend alongside.
1773-##startAngle Where is the start angle of the first pie slice? The default is '90' which is twelve o'clock.
1774-##direction Which direction do slices progress in? The default is 'clockwise'.
1775-##wedges Collection of wedges. This lets you customise each wedge, or individual ones. See below
1776-##wedges.strokeWidth Border width for wedge
1777-##wedges.strokeColor Border color
1778-##wedges.strokeDashArray Solid or dashed line configuration for
1779-##wedges.popout How far out should the slice(s) stick from the centre of
1780-##the pie? default is zero.
1781-##wedges.fontName
1782-##wedges.fontSize
1783-##wedges.fontColor Used for text labels
1784-##wedges.labelRadius This controls the anchor point for a text label. It
1785-##is a fraction of the radius; 0.7 will place the text inside the pie,
1786-##1.2 will place it slightly outside. (note that if we add labels, we
1787-##will keep this to specify their anchor point)
1788-##
1789-
1790-
1791-heading3("Legends")
1792+""")
1793+
1794+disc("")
1795+
1796+data=[["Property", "Meaning"],
1797+ ["data", "A list or tuple of numbers"],
1798+ ["x, y, width, height", """Bounding box of the pie.
1799+Note that x and y do NOT specify the centre but the bottom left
1800+corner, and that width and height do not have to be equal;
1801+pies may be elliptical and wedges will be drawn correctly."""],
1802+ ["labels", """None, or a list of strings.
1803+Make it None if you don't want labels around the edge of the pie.
1804+Since it is impossible to know the size of slices, we generally
1805+discourage placing labels in or around pies; it is much better
1806+to put them in a legend alongside."""],
1807+ ["startAngle", """Where is the start angle of the first pie slice?
1808+The default is '90' which is twelve o'clock."""],
1809+ ["direction", """Which direction do slices progress in?
1810+The default is 'clockwise'."""],
1811+ ["sideLabels", """This creates a chart with the labels in two columns,
1812+one on either side."""],
1813+ ["sideLabelsOffset", """This is a fraction of the width of the pie that defines the horizontal
1814+distance between the pie and the columns of labels."""],
1815+ ["simpleLabels", """Default is 1. Set to 0 to enable the use of customizable labels
1816+and of properties prefixed by label_ in the collection slices."""],
1817+ ["wedges", """Collection of wedges.
1818+This lets you customise each wedge, or individual ones. See below"""],
1819+ ["wedges.strokeWidth", "Border width for wedge"],
1820+ ["wedges.strokeColor", "Border color"],
1821+ ["wedges.strokeDashArray", "Solid or dashed line configuration"],
1822+ ["wedges.popout", """How far out should the slice(s) stick from the centre of the pie?
1823+Default is zero."""],
1824+ ["wedges.fontName", "Name of the label font"],
1825+ ["wedges.fontSize", "Size of the label font"],
1826+ ["wedges.fontColor", "Color of the label text"],
1827+ ["wedges.labelRadius", """This controls the anchor point for a text label.
1828+It is a fraction of the radius; 0.7 will place the text inside the
1829+pie, 1.2 will place it slightly outside. (note that if we add labels,
1830+we will keep this to specify their anchor point)"""]]
1831+t=Table(data, colWidths=(130,300))
1832+t.setStyle(TableStyle([
1833+ ('FONT',(0,0),(-1,0),'Times-Bold',10,12),
1834+ ('FONT',(0,1),(0,-1),'Courier',8,8),
1835+ ('FONT',(1,1),(1,-1),'Times-Roman',10,12),
1836+ ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
1837+ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
1838+ ('BOX', (0,0), (-1,-1), 0.25, colors.black),
1839+ ]))
1840+getStory().append(t)
1841+caption("""Table <seq template="%(Chapter)s-%(Table+)s"/> - Pie properties""")
1842+
1843+heading3("Customizing Labels")
1844+
1845+disc("""
1846+Each slide label can be customized individually by changing
1847+the properties prefixed by $label_$ in the collection $wedges$.
1848+For example $pc.slices[2].label_angle = 10$ changes the angle
1849+of the third label.
1850+""")
1851+
1852+disc("""
1853+Before being able to use these customization properties, you need
1854+to disable simple labels with: $pc.simplesLabels = 0$
1855+""")
1856+
1857+disc("")
1858+
1859+data=[["Property", "Meaning"],
1860+ ["label_dx", """X Offset of the label"""],
1861+ ["label_dy", """Y Offset of the label"""],
1862+ ["label_angle", """Angle of the label, default (0) is horizontal, 90 is vertical,
1863+180 is upside down"""],
1864+ ["label_boxAnchor", """Anchoring point of the label"""],
1865+ ["label_boxStrokeColor", """Border color for the label box"""],
1866+ ["label_boxStrokeWidth", """Border width for the label box"""],
1867+ ["label_boxFillColor", """Filling color of the label box"""],
1868+ ["label_strokeColor", """Border color for the label text"""],
1869+ ["label_strokeWidth", """Border width for the label text"""],
1870+ ["label_text", """Text of the label"""],
1871+ ["label_width", """Width of the label"""],
1872+ ["label_maxWidth", """Maximum width the label can grow to"""],
1873+ ["label_height", """Height of the label"""],
1874+ ["label_textAnchor", """Maximum height the label can grow to"""],
1875+ ["label_visible", """True if the label is to be drawn"""],
1876+ ["label_topPadding", """Padding at top of box"""],
1877+ ["label_leftPadding", """Padding at left of box"""],
1878+ ["label_rightPadding", """Padding at right of box"""],
1879+ ["label_bottomPadding", """Padding at bottom of box"""],
1880+ ["label_simple_pointer", """Set to 1 for simple pointers"""],
1881+ ["label_pointer_strokeColor", """Color of indicator line"""],
1882+ ["label_pointer_strokeWidth", """Width of indicator line"""]]
1883+t=Table(data, colWidths=(130,300))
1884+t.setStyle(TableStyle([
1885+ ('FONT',(0,0),(-1,0),'Times-Bold',10,12),
1886+ ('FONT',(0,1),(0,-1),'Courier',8,8),
1887+ ('FONT',(1,1),(1,-1),'Times-Roman',10,12),
1888+ ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
1889+ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
1890+ ('BOX', (0,0), (-1,-1), 0.25, colors.black),
1891+ ]))
1892+getStory().append(t)
1893+caption("""Table <seq template="%(Chapter)s-%(Table+)s"/> - Pie.wedges label customization properties""")
1894+
1895+heading3("Side Labels")
1896+
1897+disc("""
1898+If the sideLabels attribute is set to true, then the labels of
1899+the slices are placed in two columns, one on either side of the
1900+pie and the start angle of the pie will be set automatically.
1901+The anchor of the right hand column is set to 'start' and the
1902+anchor of the left hand column is set to 'end'.
1903+The distance from the edge of the pie from the edge of either
1904+column is decided by the sideLabelsOffset attribute, which is
1905+a fraction of the width of the pie.
1906+If xradius is changed, the pie can overlap the labels, and so
1907+we advise leaving xradius as None.
1908+There is an example below.
1909+""")
1910+
1911+from reportlab.graphics.charts.piecharts import sample5, sample7, sample8
1912+drawing5 = sample5()
1913+draw(drawing5, 'An example of a piechart with sideLabels =1')
1914+
1915+disc("""
1916+If you have sideLabels set to True, then some of the attributes
1917+become redundant, such as pointerLabelMode.
1918+Also sideLabelsOffset only changes the piechart if sideLabels is
1919+set to true.
1920+""")
1921+
1922+heading4("Some issues")
1923+
1924+disc("""
1925+The pointers can cross if there are too many slices.
1926+""")
1927+
1928+drawing7 = sample7()
1929+draw(drawing7, 'An example of pointers crossing')
1930+
1931+disc("""
1932+Also the labels can overlap despite checkLabelOverlap if they
1933+correspond to slices that are not adjacent.
1934+""")
1935+
1936+drawing8 = sample8()
1937+draw(drawing8, 'An example of labels overlapping')
1938+
1939+heading2("Legends")
1940
1941 disc("""
1942 Various preliminary legend classes can be found but need a
1943@@ -1162,7 +1343,7 @@
1944 Nevertheless, here is a list of things that are under way:
1945 """)
1946
1947-list("""
1948+bullet("""
1949 Color specification - right now the chart has an undocumented property
1950 $defaultColors$, which provides a list of colors to cycle through,
1951 such that each data series gets its own color.
1952@@ -1175,7 +1356,7 @@
1953 be visible itself.
1954 """)
1955
1956-list("""
1957+bullet("""
1958 Additional chart types - when the current design will have become
1959 more stable, we expect to add variants of bar charts to deal with
1960 percentile bars as well as the side-by-side variant seen here.
1961
1962=== modified file 'docs/userguide/graph_concepts.py'
1963--- docs/userguide/graph_concepts.py 2009-02-22 14:19:44 +0000
1964+++ docs/userguide/graph_concepts.py 2013-04-14 00:48:45 +0000
1965@@ -1,6 +1,6 @@
1966-#Copyright ReportLab Europe Ltd. 2000-2008
1967+#Copyright ReportLab Europe Ltd. 2000-2012
1968 #see license.txt for license details
1969-__version__=''' $Id: graph_concepts.py 3401 2009-01-23 17:41:45Z jonas $ '''
1970+__version__=''' $Id: graph_concepts.py 3959 2012-09-27 14:39:39Z robin $ '''
1971 from tools.docco.rl_doc_utils import *
1972
1973 heading2("General Concepts")
1974
1975=== modified file 'docs/userguide/graph_intro.py'
1976--- docs/userguide/graph_intro.py 2009-02-22 14:19:44 +0000
1977+++ docs/userguide/graph_intro.py 2013-04-14 00:48:45 +0000
1978@@ -1,6 +1,6 @@
1979-#Copyright ReportLab Europe Ltd. 2000-2008
1980+#Copyright ReportLab Europe Ltd. 2000-2012
1981 #see license.txt for license details
1982-__version__=''' $Id: graph_intro.py 3375 2009-01-16 18:23:19Z jonas $ '''
1983+__version__=''' $Id: graph_intro.py 3959 2012-09-27 14:39:39Z robin $ '''
1984 from tools.docco.rl_doc_utils import *
1985
1986 heading1("Graphics")
1987
1988=== modified file 'docs/userguide/graph_shapes.py'
1989--- docs/userguide/graph_shapes.py 2009-02-22 14:19:44 +0000
1990+++ docs/userguide/graph_shapes.py 2013-04-14 00:48:45 +0000
1991@@ -1,6 +1,6 @@
1992-#Copyright ReportLab Europe Ltd. 2000-2009
1993+#Copyright ReportLab Europe Ltd. 2000-2012
1994 #see license.txt for license details
1995-__version__='''$Id: graph_shapes.py 3375 2009-01-16 18:23:19Z jonas $'''
1996+__version__='''$Id: graph_shapes.py 3959 2012-09-27 14:39:39Z robin $'''
1997 from tools.docco.rl_doc_utils import *
1998 from reportlab.graphics.shapes import *
1999
2000
2001=== modified file 'docs/userguide/graph_widgets.py'
2002--- docs/userguide/graph_widgets.py 2009-02-22 14:19:44 +0000
2003+++ docs/userguide/graph_widgets.py 2013-04-14 00:48:45 +0000
2004@@ -1,6 +1,6 @@
2005-#Copyright ReportLab Europe Ltd. 2000-2008
2006+#Copyright ReportLab Europe Ltd. 2000-2012
2007 #see license.txt for license details
2008-__version__=''' $Id: graph_widgets.py 3375 2009-01-16 18:23:19Z jonas $ '''
2009+__version__=''' $Id: graph_widgets.py 3959 2012-09-27 14:39:39Z robin $ '''
2010 from tools.docco.rl_doc_utils import *
2011 from reportlab.graphics.shapes import *
2012 from reportlab.graphics.widgets import signsandsymbols
2013
2014=== modified file 'setup.py'
2015--- setup.py 2010-12-06 12:45:44 +0000
2016+++ setup.py 2013-04-14 00:48:45 +0000
2017@@ -1,6 +1,6 @@
2018-#Copyright ReportLab Europe Ltd. 2000-2008
2019+#Copyright ReportLab Europe Ltd. 2000-2012
2020 #see license.txt for license details
2021-__version__=''' $Id: setup.py 3730 2010-06-16 11:56:53Z rgbecker $ '''
2022+__version__=''' $Id: setup.py 3963 2012-09-27 16:14:06Z rgbecker $ '''
2023 import os, sys, glob, ConfigParser, shutil
2024 platform = sys.platform
2025 pjoin = os.path.join
2026@@ -209,10 +209,10 @@
2027 'fonts/_eb_____.pfb',
2028 'fonts/_ei_____.pfb',
2029 'fonts/_er_____.pfb',
2030- 'fonts/Sy______.pfb',
2031- 'fonts/Zd______.pfb',
2032- 'fonts/Zx______.pfb',
2033- 'fonts/Zy______.pfb',
2034+ 'fonts/sy______.pfb',
2035+ 'fonts/zd______.pfb',
2036+ 'fonts/zx______.pfb',
2037+ 'fonts/zy______.pfb',
2038 ]
2039
2040 def get_fonts(PACKAGE_DIR, reportlab_files):
2041@@ -224,7 +224,7 @@
2042 try:
2043 #infoline("Downloading standard T1 font curves")
2044
2045- #remotehandle = urllib2.urlopen("http://www.reportlab.com/ftp/fonts/pfbfer.zip")
2046+ #remotehandle = urllib2.urlopen("http://www.reportlab.com/ftp/pfbfer-20070710.zip")
2047 #zipdata = StringIO.StringIO(remotehandle.read())
2048 #remotehandle.close()
2049 archive = zipfile.ZipFile(zipdata)
2050@@ -417,7 +417,7 @@
2051 setup(
2052 name="reportlab",
2053 version=get_version(),
2054- license="BSD license (see license.txt for details), Copyright (c) 2000-2010, ReportLab Inc.",
2055+ license="BSD license (see license.txt for details), Copyright (c) 2000-2012, ReportLab Inc.",
2056 description="The Reportlab Toolkit",
2057 long_description="""The ReportLab Toolkit. An Open Source Python library for generating PDFs and graphics.""",
2058
2059
2060=== modified file 'src/reportlab/__init__.py'
2061--- src/reportlab/__init__.py 2010-12-06 12:45:44 +0000
2062+++ src/reportlab/__init__.py 2013-04-14 00:48:45 +0000
2063@@ -1,21 +1,25 @@
2064-#Copyright ReportLab Europe Ltd. 2000-2004
2065+#Copyright ReportLab Europe Ltd. 2000-2012
2066 #see license.txt for license details
2067 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/__init__.py
2068-__version__=''' $Id: __init__.py 3788 2010-09-29 10:44:00Z rgbecker $ '''
2069+__version__=''' $Id: __init__.py 3959 2012-09-27 14:39:39Z robin $ '''
2070 __doc__="""The Reportlab PDF generation library."""
2071-Version = "2.5"
2072+Version = "2.6"
2073
2074 import sys
2075
2076-if sys.version_info[0:2] < (2, 4):
2077- warning = """The trunk of reportlab requires Python 2.4 or higher.
2078+if sys.version_info[0:2] < (2, 5):
2079+ warning = """The trunk of reportlab currently requires Python 2.5 or higher.
2080
2081 Python 2.3 users may still use ReportLab 2.4 or any other bugfixes
2082- derived from it. Python 2.2 and below need to use released versions
2083- beginning with 1.x (e.g. 1.21), or snapshots or checkouts from
2084- our 'version1' branch.
2085+ derived from it, and Python 2.4 users may use ReportLab 2.5.
2086+ Python 2.2 and below need to use released versions beginning with
2087+ 1.x (e.g. 1.21), or snapshots or checkouts from our 'version1' branch.
2088+
2089+ Our current plan is to remove Python 2.5 compatibility on our next release,
2090+ allowing us to use the 2to3 tool and work on Python 3.0 compatibility.
2091+ If you have a choice, Python 2.7.x is best long term version to use.
2092 """
2093- raise ImportError("reportlab needs Python 2.4 or higher", warning)
2094+ raise ImportError("reportlab needs Python 2.5 or higher", warning)
2095
2096 def getStory(context):
2097 "This is a helper for our old autogenerated documentation system"
2098
2099=== modified file 'src/reportlab/graphics/__init__.py'
2100--- src/reportlab/graphics/__init__.py 2009-02-22 14:19:44 +0000
2101+++ src/reportlab/graphics/__init__.py 2013-04-14 00:48:45 +0000
2102@@ -1,6 +1,6 @@
2103-#Copyright ReportLab Europe Ltd. 2000-2004
2104+#Copyright ReportLab Europe Ltd. 2000-2012
2105 #see license.txt for license details
2106 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/__init__.py
2107-__version__=''' $Id: __init__.py 3345 2008-12-12 17:55:22Z damian $ '''
2108+__version__=''' $Id: __init__.py 3959 2012-09-27 14:39:39Z robin $ '''
2109 __doc__='''Framework for reusable object graphics, in PDF or bitmap form'''
2110
2111
2112=== modified file 'src/reportlab/graphics/barcode/__init__.py'
2113--- src/reportlab/graphics/barcode/__init__.py 2010-12-06 12:45:44 +0000
2114+++ src/reportlab/graphics/barcode/__init__.py 2013-04-14 00:48:45 +0000
2115@@ -42,7 +42,7 @@
2116 BarcodePOSTNET, BarcodeUSPS_4State
2117
2118 #newer codes will typically get their own module
2119- from eanbc import Ean13BarcodeWidget, Ean8BarcodeWidget
2120+ from eanbc import Ean13BarcodeWidget, Ean8BarcodeWidget, UPCA
2121 from qr import QrCodeWidget
2122
2123
2124@@ -64,6 +64,7 @@
2125 BarcodeUSPS_4State,
2126 Ean13BarcodeWidget,
2127 Ean8BarcodeWidget,
2128+ UPCA,
2129 QrCodeWidget,
2130 ):
2131 codeName = widget.codeName
2132
2133=== modified file 'src/reportlab/graphics/barcode/eanbc.py'
2134--- src/reportlab/graphics/barcode/eanbc.py 2010-12-06 12:45:44 +0000
2135+++ src/reportlab/graphics/barcode/eanbc.py 2013-04-14 00:48:45 +0000
2136@@ -113,15 +113,16 @@
2137 else:
2138 manufacturerCodes[int(k)] = v
2139
2140-class isEan13String(Validator):
2141- def test(self,x):
2142- return type(x) is str and len(x)<=12 and len([c for c in x if c in "0123456789"])==12
2143-isEan13String = isEan13String()
2144+def nDigits(n):
2145+ class _ndigits(Validator):
2146+ def test(self,x):
2147+ return type(x) is str and len(x)<=n and len([c for c in x if c in "0123456789"])==n
2148+ return _ndigits()
2149
2150 class Ean13BarcodeWidget(PlotArea):
2151 codeName = "EAN13"
2152 _attrMap = AttrMap(BASE=PlotArea,
2153- value = AttrMapValue(isEan13String, desc='the number'),
2154+ value = AttrMapValue(nDigits(12), desc='the number'),
2155 fontName = AttrMapValue(isString, desc='fontName'),
2156 fontSize = AttrMapValue(isNumber, desc='font size'),
2157 x = AttrMapValue(isNumber, desc='x-coord'),
2158@@ -295,15 +296,10 @@
2159 return chr(z+((10-(iSum%10))%10))
2160 _checkdigit=classmethod(_checkdigit)
2161
2162-class isEan8String(Validator):
2163- def test(self,x):
2164- return type(x) is str and len(x)<=7 and len([c for c in x if c in "0123456789"])==7
2165-isEan8String = isEan8String()
2166-
2167 class Ean8BarcodeWidget(Ean13BarcodeWidget):
2168 codeName = "EAN8"
2169 _attrMap = AttrMap(BASE=Ean13BarcodeWidget,
2170- value = AttrMapValue(isEan8String, desc='the number'),
2171+ value = AttrMapValue(nDigits(7), desc='the number'),
2172 )
2173 _start_right = 4 #for ean-13 left = [0:7] right=[7:13]
2174 _nbars = 85
2175@@ -339,3 +335,14 @@
2176 x = (59.5-9+self._lquiet)*barWidth
2177 c = s[4:]
2178 gAdd(String(x,y,c,fontName=fontName,fontSize=fontSize,fillColor=textColor,textAnchor='middle'))
2179+
2180+class UPCA(Ean13BarcodeWidget):
2181+ codeName = "UPCA"
2182+ _attrMap = AttrMap(BASE=Ean13BarcodeWidget,
2183+ value = AttrMapValue(nDigits(11), desc='the number'),
2184+ )
2185+ _start_right = 6
2186+ _digits = 11
2187+ _0csw = 3
2188+ _1csw = 1
2189+ _nbars = 1+7*11+2*3+5
2190
2191=== modified file 'src/reportlab/graphics/barcode/test.py'
2192--- src/reportlab/graphics/barcode/test.py 2008-10-19 23:16:31 +0000
2193+++ src/reportlab/graphics/barcode/test.py 2013-04-14 00:48:45 +0000
2194@@ -63,6 +63,10 @@
2195 story.append(bcd)
2196 story.append(Paragraph('EAN8', styleN))
2197 bcd = createBarcodeDrawing('EAN8', value='1234567')
2198+ story.append(bcd)
2199+ story.append(Paragraph('UPCA', styleN))
2200+ bcd = createBarcodeDrawing('UPCA', value='03600029145')
2201+ story.append(bcd)
2202 story.append(Paragraph('USPS_4State', styleN))
2203 bcd = createBarcodeDrawing('USPS_4State', value='01234567094987654321',routing='01234567891')
2204 story.append(bcd)
2205
2206=== modified file 'src/reportlab/graphics/barcode/usps4s.py'
2207--- src/reportlab/graphics/barcode/usps4s.py 2008-10-19 23:16:31 +0000
2208+++ src/reportlab/graphics/barcode/usps4s.py 2013-04-14 00:48:45 +0000
2209@@ -1,6 +1,6 @@
2210-#copyright ReportLab Inc. 2000-2006
2211+#copyright ReportLab Inc. 2000-2012
2212 #see license.txt for license details
2213-__version__=''' $Id: usps4s.py 2966 2006-08-31 15:20:29Z rgbecker $ '''
2214+__version__=''' $Id: usps4s.py 3959 2012-09-27 14:39:39Z robin $ '''
2215 __all__ = ('USPS_4State',)
2216
2217 from reportlab.lib.colors import black
2218
2219=== modified file 'src/reportlab/graphics/barcode/widgets.py'
2220--- src/reportlab/graphics/barcode/widgets.py 2010-12-06 12:45:44 +0000
2221+++ src/reportlab/graphics/barcode/widgets.py 2013-04-14 00:48:45 +0000
2222@@ -1,6 +1,6 @@
2223-#copyright ReportLab Europe Limited. 2000-2006
2224+#copyright ReportLab Europe Limited. 2000-2012
2225 #see license.txt for license details
2226-__version__=''' $Id: widgets.py 3764 2010-09-06 13:24:45Z juraj $ '''
2227+__version__=''' $Id: widgets.py 3959 2012-09-27 14:39:39Z robin $ '''
2228 __all__= (
2229 'BarcodeI2of5',
2230 'BarcodeCode128',
2231
2232=== modified file 'src/reportlab/graphics/charts/__init__.py'
2233--- src/reportlab/graphics/charts/__init__.py 2009-02-22 14:19:44 +0000
2234+++ src/reportlab/graphics/charts/__init__.py 2013-04-14 00:48:45 +0000
2235@@ -1,5 +1,5 @@
2236-#Copyright ReportLab Europe Ltd. 2000-2004
2237+#Copyright ReportLab Europe Ltd. 2000-2012
2238 #see license.txt for license details
2239 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/__init__.py
2240-__version__=''' $Id: __init__.py 3345 2008-12-12 17:55:22Z damian $ '''
2241+__version__=''' $Id: __init__.py 3959 2012-09-27 14:39:39Z robin $ '''
2242 __doc__='''Business charts'''
2243
2244=== modified file 'src/reportlab/graphics/charts/areas.py'
2245--- src/reportlab/graphics/charts/areas.py 2010-02-16 23:32:55 +0000
2246+++ src/reportlab/graphics/charts/areas.py 2013-04-14 00:48:45 +0000
2247@@ -1,8 +1,8 @@
2248-#Copyright ReportLab Europe Ltd. 2000-2004
2249+#Copyright ReportLab Europe Ltd. 2000-2012
2250 #see license.txt for license details
2251 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/areas.py
2252
2253-__version__=''' $Id: areas.py 3602 2009-11-26 16:25:50Z meitham $ '''
2254+__version__=''' $Id: areas.py 3959 2012-09-27 14:39:39Z robin $ '''
2255 __doc__='''This module defines a Area mixin classes'''
2256
2257 from reportlab.lib.validators import isNumber, isColor, isColorOrNone, isNoneOrShape
2258
2259=== modified file 'src/reportlab/graphics/charts/axes.py'
2260--- src/reportlab/graphics/charts/axes.py 2010-12-06 12:45:44 +0000
2261+++ src/reportlab/graphics/charts/axes.py 2013-04-14 00:48:45 +0000
2262@@ -1,6 +1,6 @@
2263-#Copyright ReportLab Europe Ltd. 2000-2010
2264+#Copyright ReportLab Europe Ltd. 2000-2012
2265 #see license.txt for license details
2266-__version__=''' $Id: axes.py 3748 2010-07-27 09:36:33Z rgbecker $ '''
2267+__version__=''' $Id: axes.py 3959 2012-09-27 14:39:39Z robin $ '''
2268 __doc__="""Collection of axes for charts.
2269
2270 The current collection comprises axes for charts using cartesian
2271@@ -37,10 +37,12 @@
2272 isNormalDate
2273 from reportlab.lib.attrmap import *
2274 from reportlab.lib import normalDate
2275-from reportlab.graphics.shapes import Drawing, Line, PolyLine, Group, STATE_DEFAULTS, _textBoxLimits, _rotatedBoxLimits
2276+from reportlab.graphics.shapes import Drawing, Line, PolyLine, Rect, Group, STATE_DEFAULTS, _textBoxLimits, _rotatedBoxLimits
2277 from reportlab.graphics.widgetbase import Widget, TypedPropertyCollection
2278 from reportlab.graphics.charts.textlabels import Label
2279 from reportlab.graphics.charts.utils import nextRoundNumber
2280+from reportlab.graphics.widgets.grids import ShadedRect
2281+from reportlab.lib.colors import Color
2282 import copy
2283
2284
2285@@ -76,8 +78,8 @@
2286 class AxisLineAnnotation:
2287 '''Create a grid like line using the given user value to draw the line
2288 kwds may contain
2289- startOffset offset from the default grid start position
2290- endOffset offset from the default grid end position
2291+ startOffset if true v is offset from the default grid start position
2292+ endOffset if true v is offset from the default grid end position
2293 scaleValue True/not given --> scale the value
2294 otherwise use the absolute value
2295 lo lowest coordinate to draw default 0
2296@@ -93,10 +95,14 @@
2297 def __call__(self,axis):
2298 kwds = self._kwds.copy()
2299 scaleValue = kwds.pop('scaleValue',True)
2300+ endOffset = kwds.pop('endOffset',False)
2301+ startOffset = kwds.pop('endOffset',False)
2302 if axis.isYAxis:
2303 offs = axis._x
2304+ d0 = axis._y
2305 else:
2306 offs = axis._y
2307+ d0 = axis._x
2308 s = kwds.pop('start',None)
2309 e = kwds.pop('end',None)
2310 if s is None or e is None:
2311@@ -109,15 +115,19 @@
2312 else:
2313 if s is None: s = 0
2314 if e is None: e = 0
2315- hi = kwds.pop('hi',axis._length)
2316- lo = kwds.pop('lo',0)
2317+ hi = kwds.pop('hi',axis._length)+d0
2318+ lo = kwds.pop('lo',0)+d0
2319 lo,hi=min(lo,hi),max(lo,hi)
2320 drawAtLimit = kwds.pop('drawAtLimit',False)
2321+ oaglp = axis._get_line_pos
2322 if not scaleValue:
2323- oaglp = axis._get_line_pos
2324 axis._get_line_pos = lambda x: x
2325 try:
2326 v = self._v
2327+ if endOffset:
2328+ v = v + hi
2329+ elif startOffset:
2330+ v = v + lo
2331 func = axis._getLineFunc(s-offs,e-offs,kwds.pop('parent',None))
2332 if not hasattr(axis,'_tickValues'):
2333 axis._pseudo_configure()
2334@@ -133,10 +143,78 @@
2335 for k,v in kwds.iteritems():
2336 setattr(L,k,v)
2337 finally:
2338- if not scaleValue:
2339- axis._get_line_pos = oaglp
2340+ axis._get_line_pos = oaglp
2341 return L
2342
2343+class AxisBackgroundAnnotation:
2344+ '''Create a set of coloured bars on the background of a chart using axis ticks as the bar borders
2345+ colors is a set of colors to use for the background bars. A colour of None is just a skip.
2346+ Special effects if you pass a rect or Shaded rect instead.
2347+ '''
2348+ def __init__(self,colors,**kwds):
2349+ self._colors = colors
2350+ self._kwds = kwds
2351+
2352+ def __call__(self,axis):
2353+ colors = self._colors
2354+ if not colors: return
2355+ kwds = self._kwds.copy()
2356+ isYAxis = axis.isYAxis
2357+ if isYAxis:
2358+ offs = axis._x
2359+ d0 = axis._y
2360+ else:
2361+ offs = axis._y
2362+ d0 = axis._x
2363+ s = kwds.pop('start',None)
2364+ e = kwds.pop('end',None)
2365+ if s is None or e is None:
2366+ dim = getattr(getattr(axis,'joinAxis',None),'getGridDims',None)
2367+ if dim and hasattr(dim,'__call__'):
2368+ dim = dim()
2369+ if dim:
2370+ if s is None: s = dim[0]
2371+ if e is None: e = dim[1]
2372+ else:
2373+ if s is None: s = 0
2374+ if e is None: e = 0
2375+ if not hasattr(axis,'_tickValues'):
2376+ axis._pseudo_configure()
2377+ tv = getattr(axis,'_tickValues',None)
2378+ if not tv: return
2379+ G = Group()
2380+ ncolors = len(colors)
2381+ v0 = axis._get_line_pos(tv[0])
2382+ for i in xrange(1,len(tv)):
2383+ v1 = axis._get_line_pos(tv[i])
2384+ c = colors[(i-1)%ncolors]
2385+ if c:
2386+ if isYAxis:
2387+ y = v0
2388+ x = s
2389+ height = v1-v0
2390+ width = e-s
2391+ else:
2392+ x = v0
2393+ y = s
2394+ width = v1-v0
2395+ height = e-s
2396+ if isinstance(c,Color):
2397+ r = Rect(x,y,width,height,fillColor=c,strokeColor=None)
2398+ elif isinstance(c,Rect):
2399+ r = Rect(x,y,width,height)
2400+ for k in c.__dict__:
2401+ if k not in ('x','y','width','height'):
2402+ setattr(r,k,getattr(c,k))
2403+ elif isinstance(c,ShadedRect):
2404+ r = ShadedRect(x=x,y=y,width=width,height=height)
2405+ for k in c.__dict__:
2406+ if k not in ('x','y','width','height'):
2407+ setattr(r,k,getattr(c,k))
2408+ G.add(r)
2409+ v0 = v1
2410+ return G
2411+
2412 class TickLU:
2413 '''lookup special cases for tick values'''
2414 def __init__(self,*T,**kwds):
2415@@ -375,6 +453,7 @@
2416 annotations = AttrMapValue(None,desc='list of annotations'),
2417 loLLen = AttrMapValue(isNumber, desc='extra line length before start of the axis'),
2418 hiLLen = AttrMapValue(isNumber, desc='extra line length after end of the axis'),
2419+ skipGrid = AttrMapValue(OneOf('none','top','both','bottom'),"grid lines to skip top bottom both none"),
2420 )
2421
2422 def __init__(self):
2423@@ -612,31 +691,24 @@
2424
2425 def joinToAxis(self, yAxis, mode='bottom', pos=None):
2426 "Join with y-axis using some mode."
2427-
2428 _assertYAxis(yAxis)
2429 if mode == 'bottom':
2430- self._x = yAxis._x
2431 self._y = yAxis._y
2432 elif mode == 'top':
2433- self._x = yAxis._x
2434 self._y = yAxis._y + yAxis._length
2435 elif mode == 'value':
2436- self._x = yAxis._x
2437 self._y = yAxis.scale(pos)
2438 elif mode == 'points':
2439- self._x = yAxis._x
2440 self._y = pos
2441
2442 def _joinToAxis(self):
2443 ja = self.joinAxis
2444 if ja:
2445 jam = self.joinAxisMode
2446- jap = self.joinAxisPos
2447- jta = self.joinToAxis
2448 if jam in ('bottom', 'top'):
2449- jta(ja, mode=jam)
2450+ self.joinToAxis(ja, mode=jam)
2451 elif jam in ('value', 'points'):
2452- jta(ja, mode=jam, pos=jap)
2453+ self.joinToAxis(ja, mode=jam, pos=self.joinAxisPos)
2454
2455 def scale(self, idx):
2456 """returns the x position and width in drawing units of the slice"""
2457@@ -726,30 +798,23 @@
2458 "Join with x-axis using some mode."
2459
2460 _assertXAxis(xAxis)
2461-
2462 if mode == 'left':
2463 self._x = xAxis._x * 1.0
2464- self._y = xAxis._y * 1.0
2465 elif mode == 'right':
2466 self._x = (xAxis._x + xAxis._length) * 1.0
2467- self._y = xAxis._y * 1.0
2468 elif mode == 'value':
2469 self._x = xAxis.scale(pos) * 1.0
2470- self._y = xAxis._y * 1.0
2471 elif mode == 'points':
2472 self._x = pos * 1.0
2473- self._y = xAxis._y * 1.0
2474
2475 def _joinToAxis(self):
2476 ja = self.joinAxis
2477 if ja:
2478 jam = self.joinAxisMode
2479- jap = self.joinAxisPos
2480- jta = self.joinToAxis
2481 if jam in ('left', 'right'):
2482- jta(ja, mode=jam)
2483+ self.joinToAxis(ja, mode=jam)
2484 elif jam in ('value', 'points'):
2485- jta(ja, mode=jam, pos=jap)
2486+ self.joinToAxis(ja, mode=jam, pos=self.joinAxisPos)
2487
2488 def scale(self, idx):
2489 "Returns the y position and width in drawing units of the slice."
2490@@ -872,6 +937,7 @@
2491 subGridStart = AttrMapValue(isNumberOrNone, desc='Start of grid lines wrt axis origin'),
2492 subGridEnd = AttrMapValue(isNumberOrNone, desc='End of grid lines wrt axis origin'),
2493 keepTickLabelsInside = AttrMapValue(isBoolean, desc='Ensure tick labels do not project beyond bounds of axis if true'),
2494+ skipGrid = AttrMapValue(OneOf('none','top','both','bottom'),"grid lines to skip top bottom both none"),
2495 )
2496
2497 def __init__(self,**kw):
2498@@ -1377,28 +1443,22 @@
2499 "Join with y-axis using some mode."
2500 _assertYAxis(yAxis)
2501 if mode == 'bottom':
2502- self._x = yAxis._x * 1.0
2503 self._y = yAxis._y * 1.0
2504 elif mode == 'top':
2505- self._x = yAxis._x * 1.0
2506 self._y = (yAxis._y + yAxis._length) * 1.0
2507 elif mode == 'value':
2508- self._x = yAxis._x * 1.0
2509 self._y = yAxis.scale(pos) * 1.0
2510 elif mode == 'points':
2511- self._x = yAxis._x * 1.0
2512 self._y = pos * 1.0
2513
2514 def _joinToAxis(self):
2515 ja = self.joinAxis
2516 if ja:
2517- jam = self.joinAxisMode
2518- jap = self.joinAxisPos
2519- jta = self.joinToAxis
2520+ jam = self.joinAxisMode or 'bottom'
2521 if jam in ('bottom', 'top'):
2522- jta(ja, mode=jam)
2523+ self.joinToAxis(ja, mode=jam)
2524 elif jam in ('value', 'points'):
2525- jta(ja, mode=jam, pos=jap)
2526+ self.joinToAxis(ja, mode=jam, pos=self.joinAxisPos)
2527
2528 def makeAxis(self):
2529 g = Group()
2530@@ -1485,6 +1545,7 @@
2531 dailyFreq = AttrMapValue(isBoolean, desc='True if we are to assume daily data to be ticked at end of month.'),
2532 specifiedTickDates = AttrMapValue(NoneOr(SequenceOf(isNormalDate)), desc='Actual tick values to use; no calculations done'),
2533 specialTickClear = AttrMapValue(isBoolean, desc='clear rather than delete close ticks when forced first/end dates'),
2534+ skipGrid = AttrMapValue(OneOf('none','top','both','bottom'),"grid lines to skip top bottom both none"),
2535 )
2536
2537 _valueClass = normalDate.ND
2538@@ -1755,27 +1816,21 @@
2539 _assertXAxis(xAxis)
2540 if mode == 'left':
2541 self._x = xAxis._x * 1.0
2542- self._y = xAxis._y * 1.0
2543 elif mode == 'right':
2544 self._x = (xAxis._x + xAxis._length) * 1.0
2545- self._y = xAxis._y * 1.0
2546 elif mode == 'value':
2547 self._x = xAxis.scale(pos) * 1.0
2548- self._y = xAxis._y * 1.0
2549 elif mode == 'points':
2550 self._x = pos * 1.0
2551- self._y = xAxis._y * 1.0
2552
2553 def _joinToAxis(self):
2554 ja = self.joinAxis
2555 if ja:
2556 jam = self.joinAxisMode
2557- jap = self.joinAxisPos
2558- jta = self.joinToAxis
2559 if jam in ('left', 'right'):
2560- jta(ja, mode=jam)
2561+ self.joinToAxis(ja, mode=jam)
2562 elif jam in ('value', 'points'):
2563- jta(ja, mode=jam, pos=jap)
2564+ self.joinToAxis(ja, mode=jam, pos=self.joinAxisPos)
2565
2566 def makeAxis(self):
2567 g = Group()
2568
2569=== modified file 'src/reportlab/graphics/charts/barcharts.py'
2570--- src/reportlab/graphics/charts/barcharts.py 2010-12-06 12:45:44 +0000
2571+++ src/reportlab/graphics/charts/barcharts.py 2013-04-14 00:48:45 +0000
2572@@ -1,7 +1,7 @@
2573-#Copyright ReportLab Europe Ltd. 2000-2004
2574+#Copyright ReportLab Europe Ltd. 2000-2012
2575 #see license.txt for license details
2576 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/barcharts.py
2577-__version__=''' $Id: barcharts.py 3761 2010-09-02 14:40:46Z damian $ '''
2578+__version__=''' $Id: barcharts.py 3959 2012-09-27 14:39:39Z robin $ '''
2579 __doc__="""This module defines a variety of Bar Chart components.
2580
2581 The basic flavors are stacked and side-by-side, available in horizontal and
2582@@ -49,7 +49,7 @@
2583 "Abstract base class, unusable by itself."
2584
2585 _attrMap = AttrMap(BASE=PlotArea,
2586- useAbsolute = AttrMapValue(EitherOr((isBoolean,EitherOr((isString,isNumber)))), desc='Flag to use absolute spacing values; use string of gsb for finer control\n(g=groupSpacing,s=barSpacing,b=barWidth). ',advancedUsage=1),
2587+ useAbsolute = AttrMapValue(EitherOr((isBoolean,EitherOr((isString,isNumber)))), desc='Flag to use absolute spacing values; use string of gsb for finer control\n(g=groupSpacing,s=barSpacing,b=barWidth).',advancedUsage=1),
2588 barWidth = AttrMapValue(isNumber, desc='The width of an individual bar.'),
2589 groupSpacing = AttrMapValue(isNumber, desc='Width between groups of bars.'),
2590 barSpacing = AttrMapValue(isNumber, desc='Width between individual bars.'),
2591@@ -67,6 +67,16 @@
2592 categoryLabelBarSize = AttrMapValue(isNumber, desc='width to leave for a category label to go between categories.'),
2593 categoryLabelBarOrder = AttrMapValue(OneOf('first','last','auto'), desc='where any label bar should appear first/last'),
2594 barRecord = AttrMapValue(None, desc='callable(bar,label=labelText,value=value,**kwds) to record bar information', advancedUsage=1),
2595+ zIndexOverrides = AttrMapValue(isStringOrNone, desc='''None (the default ie use old z ordering scheme) or a ',' separated list of key=value (int/float) for new zIndex ordering. If used defaults are
2596+ background=0,
2597+ categoryAxis=1,
2598+ valueAxis=2,
2599+ bars=3,
2600+ barLabels=4,
2601+ categoryAxisGrid=5,
2602+ valueAxisGrid=6,
2603+ annotations=7'''),
2604+ categoryNALabel = AttrMapValue(NoneOrInstanceOfNA_Label, desc='Label to use for a group of N/A values.',advancedUsage=1),
2605 )
2606
2607 def makeSwatchSample(self, rowNo, x, y, width, height):
2608@@ -144,8 +154,8 @@
2609 self.bars[0].fillColor = colors.red
2610 self.bars[1].fillColor = colors.green
2611 self.bars[2].fillColor = colors.blue
2612- self.naLabel = None #NA_Label()
2613-
2614+ self.naLabel = self.categoryNALabel = None
2615+ self.zIndexOverrides = None
2616
2617 def demo(self):
2618 """Shows basic use of a bar chart"""
2619@@ -194,17 +204,68 @@
2620 cA.configure(self._configureData)
2621 self.calcBarPositions()
2622 g = Group()
2623- g.add(self.makeBackground())
2624- cAdgl = getattr(cA,'drawGridLast',False)
2625- vAdgl = getattr(vA,'drawGridLast',False)
2626- if not cAdgl: cA.makeGrid(g,parent=self, dim=vA.getGridDims)
2627- if not vAdgl: vA.makeGrid(g,parent=self, dim=cA.getGridDims)
2628- g.add(self.makeBars())
2629- g.add(cA)
2630- g.add(vA)
2631- if cAdgl: cA.makeGrid(g,parent=self, dim=vA.getGridDims)
2632- if vAdgl: vA.makeGrid(g,parent=self, dim=cA.getGridDims)
2633- for a in getattr(self,'annotations',()): g.add(a(self,cA.scale,vA.scale))
2634+
2635+ zIndex = getattr(self,'zIndexOverrides',None)
2636+ if not zIndex:
2637+ g.add(self.makeBackground())
2638+ cAdgl = getattr(cA,'drawGridLast',False)
2639+ vAdgl = getattr(vA,'drawGridLast',False)
2640+ if not cAdgl: cA.makeGrid(g,parent=self, dim=vA.getGridDims)
2641+ if not vAdgl: vA.makeGrid(g,parent=self, dim=cA.getGridDims)
2642+ g.add(self.makeBars())
2643+ g.add(cA)
2644+ g.add(vA)
2645+ if cAdgl: cA.makeGrid(g,parent=self, dim=vA.getGridDims)
2646+ if vAdgl: vA.makeGrid(g,parent=self, dim=cA.getGridDims)
2647+ for a in getattr(self,'annotations',()): g.add(a(self,cA.scale,vA.scale))
2648+ else:
2649+ Z=dict(
2650+ background=0,
2651+ categoryAxis=1,
2652+ valueAxis=2,
2653+ bars=3,
2654+ barLabels=4,
2655+ categoryAxisGrid=5,
2656+ valueAxisGrid=6,
2657+ annotations=7,
2658+ )
2659+ for z in zIndex.strip().split(','):
2660+ z = z.strip()
2661+ if not z: continue
2662+ try:
2663+ k,v=z.split('=')
2664+ except:
2665+ raise ValueError('Badly formatted zIndex clause %r in %r\nallowed variables are\n%s' % (z,zIndex,'\n'.join(['%s=%r'% (k,Z[k]) for k in sorted(Z.keys())])))
2666+ if k not in Z:
2667+ raise ValueError('Unknown zIndex variable %r in %r\nallowed variables are\n%s' % (k,Z,'\n'.join(['%s=%r'% (k,Z[k]) for k in sorted(Z.keys())])))
2668+ try:
2669+ v = eval(v,{}) #only constants allowed
2670+ assert isinstance(v,(float,int))
2671+ except:
2672+ raise ValueError('Bad zIndex value %r in clause %r of zIndex\nallowed variables are\n%s' % (v,z,zIndex,'\n'.join(['%s=%r'% (k,Z[k]) for k in sorted(Z.keys())])))
2673+ Z[k] = v
2674+ Z = [(v,k) for k,v in Z.iteritems()]
2675+ Z.sort()
2676+ b = self.makeBars()
2677+ bl = b.contents.pop(-1)
2678+ for v,k in Z:
2679+ if k=='background':
2680+ g.add(self.makeBackground())
2681+ elif k=='categoryAxis':
2682+ g.add(cA)
2683+ elif k=='categoryAxisGrid':
2684+ cA.makeGrid(g,parent=self, dim=vA.getGridDims)
2685+ elif k=='valueAxis':
2686+ g.add(vA)
2687+ elif k=='valueAxisGrid':
2688+ vA.makeGrid(g,parent=self, dim=cA.getGridDims)
2689+ elif k=='bars':
2690+ g.add(b)
2691+ elif k=='barLabels':
2692+ g.add(bl)
2693+ elif k=='annotations':
2694+ for a in getattr(self,'annotations',()): g.add(a(self,cA.scale,vA.scale))
2695+
2696 del self._configureData
2697 return g
2698
2699@@ -398,16 +459,16 @@
2700 if text:
2701 self._addLabel(text, self.barLabels[(rowNo, colNo)], g, rowNo, colNo, x, y, width, height)
2702
2703- def _addNABarLabel(self, g, rowNo, colNo, x, y, width, height):
2704- na = self.naLabel
2705+ def _addNABarLabel(self, g, rowNo, colNo, x, y, width, height, calcOnly=False, na=None):
2706+ if na is None: na = self.naLabel
2707 if na and na.text:
2708 na = copy.copy(na)
2709 v = self.valueAxis._valueMax<=0 and -1e-8 or 1e-8
2710 if width is None: width = v
2711 if height is None: height = v
2712- self._addLabel(na.text, na, g, rowNo, colNo, x, y, width, height)
2713+ return self._addLabel(na.text, na, g, rowNo, colNo, x, y, width, height, calcOnly=calcOnly)
2714
2715- def _addLabel(self, text, label, g, rowNo, colNo, x, y, width, height):
2716+ def _addLabel(self, text, label, g, rowNo, colNo, x, y, width, height, calcOnly=False):
2717 if label.visible:
2718 labelWidth = stringWidth(text, label.fontName, label.fontSize)
2719 flipXY = self._flipXY
2720@@ -447,6 +508,7 @@
2721 dx = 0
2722 else:
2723 dy = dx = 0
2724+ if calcOnly: return x0+dx, y0+dy
2725 label.setOrigin(x0+dx, y0+dy)
2726 label.setText(text)
2727 sC, sW = label.lineStrokeColor, label.lineStrokeWidth
2728@@ -471,16 +533,41 @@
2729 lenData = len(self.data)
2730 bars = self.bars
2731 br = getattr(self,'barRecord',None)
2732+ BP = self._barPositions
2733+
2734+ catNAL = self.categoryNALabel
2735+ catNNA = {}
2736+ if catNAL:
2737+ CBL = []
2738+ rowNoL = lenData - 1
2739+ #find all the categories that have at least one value
2740+ for rowNo in xrange(lenData):
2741+ row = BP[rowNo]
2742+ for colNo in xrange(len(row)):
2743+ x, y, width, height = row[colNo]
2744+ if None not in (width,height):
2745+ catNNA[colNo] = 1
2746+
2747 for rowNo in xrange(lenData):
2748- row = self._barPositions[rowNo]
2749+ row = BP[rowNo]
2750 styleCount = len(bars)
2751 styleIdx = rowNo % styleCount
2752 rowStyle = bars[styleIdx]
2753- for colNo in range(len(row)):
2754+ for colNo in xrange(len(row)):
2755 style = (styleIdx,colNo) in bars and bars[(styleIdx,colNo)] or rowStyle
2756- (x, y, width, height) = row[colNo]
2757+ x, y, width, height = row[colNo]
2758 if None in (width,height):
2759- self._addNABarLabel(lg,rowNo,colNo,x,y,width,height)
2760+ if colNo in catNNA:
2761+ self._addNABarLabel(lg,rowNo,colNo,x,y,width,height)
2762+ elif catNAL and colNo not in CBL:
2763+ r0 = self._addNABarLabel(lg,rowNo,colNo,x,y,width,height,True,catNAL)
2764+ if r0:
2765+ x, y, width, height = BP[rowNoL][colNo]
2766+ r1 = self._addNABarLabel(lg,rowNoL,colNo,x,y,width,height,True,catNAL)
2767+ x = (r0[0]+r1[0])/2.0
2768+ y = (r0[1]+r1[1])/2.0
2769+ self._addNABarLabel(lg,rowNoL,colNo,x,y,width,height,na=catNAL)
2770+ CBL.append(colNo)
2771 continue
2772
2773 # Draw a rectangular symbol for each data item,
2774
2775=== modified file 'src/reportlab/graphics/charts/doughnut.py'
2776--- src/reportlab/graphics/charts/doughnut.py 2010-12-06 12:45:44 +0000
2777+++ src/reportlab/graphics/charts/doughnut.py 2013-04-14 00:48:45 +0000
2778@@ -1,9 +1,9 @@
2779-#Copyright ReportLab Europe Ltd. 2000-2004
2780+#Copyright ReportLab Europe Ltd. 2000-2012
2781 #see license.txt for license details
2782 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/doughnut.py
2783 # doughnut chart
2784
2785-__version__=''' $Id: doughnut.py 3785 2010-09-28 16:41:27Z rgbecker $ '''
2786+__version__=''' $Id: doughnut.py 3959 2012-09-27 14:39:39Z robin $ '''
2787 __doc__="""Doughnut chart
2788
2789 Produces a circular chart like the doughnut charts produced by Excel.
2790@@ -27,7 +27,7 @@
2791 from reportlab.graphics.shapes import Group, Drawing, Line, Rect, Polygon, Ellipse, \
2792 Wedge, String, SolidShape, UserNode, STATE_DEFAULTS
2793 from reportlab.graphics.widgetbase import Widget, TypedPropertyCollection, PropHolder
2794-from reportlab.graphics.charts.piecharts import AbstractPieChart, WedgeProperties, _addWedgeLabel
2795+from reportlab.graphics.charts.piecharts import AbstractPieChart, WedgeProperties, _addWedgeLabel, fixLabelOverlaps
2796 from reportlab.graphics.charts.textlabels import Label
2797 from reportlab.graphics.widgets.markers import Marker
2798
2799@@ -54,6 +54,9 @@
2800 direction = AttrMapValue(OneOf('clockwise', 'anticlockwise'), desc="'clockwise' or 'anticlockwise'"),
2801 slices = AttrMapValue(None, desc="collection of sector descriptor objects"),
2802 simpleLabels = AttrMapValue(isBoolean, desc="If true(default) use String not super duper WedgeLabel"),
2803+ # advanced usage
2804+ checkLabelOverlap = AttrMapValue(isBoolean, desc="If true check and attempt to fix\n standard label overlaps(default off)",advancedUsage=1),
2805+ sideLabels = AttrMapValue(isBoolean, desc="If true attempt to make chart with labels along side and pointers", advancedUsage=1)
2806 )
2807
2808 def __init__(self):
2809@@ -66,13 +69,19 @@
2810 self.startAngle = 90
2811 self.direction = "clockwise"
2812 self.simpleLabels = 1
2813+ self.checkLabelOverlap = 0
2814+ self.sideLabels = 0
2815
2816 self.slices = TypedPropertyCollection(SectorProperties)
2817 self.slices[0].fillColor = colors.darkcyan
2818 self.slices[1].fillColor = colors.blueviolet
2819 self.slices[2].fillColor = colors.blue
2820 self.slices[3].fillColor = colors.cyan
2821-
2822+ self.slices[4].fillColor = colors.pink
2823+ self.slices[5].fillColor = colors.magenta
2824+ self.slices[6].fillColor = colors.yellow
2825+
2826+
2827 def demo(self):
2828 d = Drawing(200, 100)
2829
2830@@ -121,8 +130,12 @@
2831 normData = self.normalizeData(self.data)
2832 n = len(normData)
2833 self._seriesCount = n
2834-
2835+
2836 #labels
2837+ checkLabelOverlap = self.checkLabelOverlap
2838+ L = []
2839+ L_add = L.append
2840+
2841 if self.labels is None:
2842 labels = []
2843 if type(n) not in (ListType,TupleType):
2844@@ -157,7 +170,7 @@
2845 whichWay = -1
2846
2847 g = Group()
2848-
2849+
2850 startAngle = self.startAngle #% 360
2851 styleCount = len(self.slices)
2852 if type(self.data[0]) in (ListType, TupleType):
2853@@ -203,14 +216,23 @@
2854
2855 g.add(theSector)
2856
2857- text = self.getSeriesName(i,'')
2858- if text:
2859- averageAngle = (a1+a2)/2.0
2860- aveAngleRadians = averageAngle*pi/180.0
2861- labelRadius = sectorStyle.labelRadius
2862- labelX = centerx + (0.5 * self.width * cos(aveAngleRadians) * labelRadius)
2863- labelY = centery + (0.5 * self.height * sin(aveAngleRadians) * labelRadius)
2864- g.add(_addWedgeLabel(self,text,averageAngle,labelX,labelY,sectorStyle))
2865+ if sn == 0:
2866+ text = self.getSeriesName(i,'')
2867+ if text:
2868+ averageAngle = (a1+a2)/2.0
2869+ aveAngleRadians = averageAngle*pi/180.0
2870+ labelRadius = sectorStyle.labelRadius
2871+ rx = xradius*labelRadius
2872+ ry = yradius*labelRadius
2873+ labelX = centerx + (0.5 * self.width * cos(aveAngleRadians) * labelRadius)
2874+ labelY = centery + (0.5 * self.height * sin(aveAngleRadians) * labelRadius)
2875+ l = _addWedgeLabel(self,text,averageAngle,labelX,labelY,sectorStyle)
2876+ if checkLabelOverlap:
2877+ l._origdata = { 'x': labelX, 'y':labelY, 'angle': averageAngle,
2878+ 'rx': rx, 'ry':ry, 'cx':cx, 'cy':cy,
2879+ 'bounds': l.getBounds(),
2880+ }
2881+ L_add(l)
2882
2883 else:
2884 #single series doughnut
2885@@ -261,18 +283,23 @@
2886 labelRadius = sectorStyle.labelRadius
2887 labelX = centerx + (0.5 * self.width * cos(aveAngleRadians) * labelRadius)
2888 labelY = centery + (0.5 * self.height * sin(aveAngleRadians) * labelRadius)
2889-
2890- theLabel = String(labelX, labelY, labels[i])
2891- theLabel.textAnchor = "middle"
2892- theLabel.fontSize = sectorStyle.fontSize
2893- theLabel.fontName = sectorStyle.fontName
2894- theLabel.fillColor = sectorStyle.fontColor
2895-
2896- g.add(theLabel)
2897-
2898-
2899+ rx = xradius*labelRadius
2900+ ry = yradius*labelRadius
2901+ l = _addWedgeLabel(self,labels[i],averageAngle,labelX,labelY,sectorStyle)
2902+ if checkLabelOverlap:
2903+ l._origdata = { 'x': labelX, 'y':labelY, 'angle': averageAngle,
2904+ 'rx': rx, 'ry':ry, 'cx':cx, 'cy':cy,
2905+ 'bounds': l.getBounds(),
2906+ }
2907+ L_add(l)
2908+
2909+ if checkLabelOverlap and L:
2910+ fixLabelOverlaps(L)
2911+
2912+ for l in L: g.add(l)
2913+
2914 return g
2915-
2916+
2917 def draw(self):
2918 g = Group()
2919 g.add(self.makeSectors())
2920@@ -336,6 +363,23 @@
2921
2922 return d
2923
2924+def sample4():
2925+ "Make a more complex demo with Label Overlap fixing"
2926+
2927+ d = Drawing(400, 400)
2928+ dn = Doughnut()
2929+ dn.x = 50
2930+ dn.y = 50
2931+ dn.width = 300
2932+ dn.height = 300
2933+ dn.data = [[10,20,30,40,50,60], [10,20,30,40]]
2934+ dn.labels = ['a','b','c','d','e','f']
2935+ dn.checkLabelOverlap = True
2936+
2937+ d.add(dn)
2938+
2939+ return d
2940+
2941 if __name__=='__main__':
2942
2943 from reportlab.graphics.renderPDF import drawToFile
2944
2945=== modified file 'src/reportlab/graphics/charts/legends.py'
2946--- src/reportlab/graphics/charts/legends.py 2010-12-06 12:45:44 +0000
2947+++ src/reportlab/graphics/charts/legends.py 2013-04-14 00:48:45 +0000
2948@@ -1,8 +1,8 @@
2949-#Copyright ReportLab Europe Ltd. 2000-2004
2950+#Copyright ReportLab Europe Ltd. 2000-2012
2951 #see license.txt for license details
2952 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/legends.py
2953
2954-__version__=''' $Id: legends.py 3723 2010-06-08 15:46:32Z juraj $ '''
2955+__version__=''' $Id: legends.py 3959 2012-09-27 14:39:39Z robin $ '''
2956 __doc__="""This will be a collection of legends to be used with charts."""
2957
2958 import copy, operator
2959
2960=== modified file 'src/reportlab/graphics/charts/linecharts.py'
2961--- src/reportlab/graphics/charts/linecharts.py 2010-12-06 12:45:44 +0000
2962+++ src/reportlab/graphics/charts/linecharts.py 2013-04-14 00:48:45 +0000
2963@@ -1,8 +1,8 @@
2964-#Copyright ReportLab Europe Ltd. 2000-2004
2965+#Copyright ReportLab Europe Ltd. 2000-2012
2966 #see license.txt for license details
2967 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/linecharts.py
2968
2969-__version__=''' $Id: linecharts.py 3662 2010-02-09 11:23:58Z rgbecker $ '''
2970+__version__=''' $Id: linecharts.py 3959 2012-09-27 14:39:39Z robin $ '''
2971 __doc__="""This modules defines a very preliminary Line Chart example."""
2972
2973 from reportlab.lib import colors
2974
2975=== modified file 'src/reportlab/graphics/charts/lineplots.py'
2976--- src/reportlab/graphics/charts/lineplots.py 2010-12-06 12:45:44 +0000
2977+++ src/reportlab/graphics/charts/lineplots.py 2013-04-14 00:48:45 +0000
2978@@ -1,8 +1,8 @@
2979-#Copyright ReportLab Europe Ltd. 2000-2004
2980+#Copyright ReportLab Europe Ltd. 2000-2012
2981 #see license.txt for license details
2982 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/lineplots.py
2983
2984-__version__=''' $Id: lineplots.py 3735 2010-07-01 12:24:52Z rgbecker $ '''
2985+__version__=''' $Id: lineplots.py 3959 2012-09-27 14:39:39Z robin $ '''
2986 __doc__="""This module defines a very preliminary Line Plot example."""
2987
2988 import string, time
2989@@ -213,7 +213,10 @@
2990 else:
2991 labelText = labelFmt % labelValue
2992 elif hasattr(labelFmt,'__call__'):
2993- labelText = labelFmt(labelValue)
2994+ if not hasattr(labelFmt,'__labelFmtEX__'):
2995+ labelText = labelFmt(labelValue)
2996+ else:
2997+ labelText = labelFmt(self,rowNo,colNo,x,y)
2998 else:
2999 raise ValueError("Unknown formatter type %s, expected string or function"%labelFmt)
3000
3001@@ -298,10 +301,18 @@
3002 uSymbol = None
3003
3004 if uSymbol:
3005- j = -1
3006- if bubblePlot: drow = self.data[rowNo]
3007- for xy in row:
3008- j += 1
3009+ if bubblePlot: drow = self.data[rowNo]
3010+ for j,xy in enumerate(row):
3011+ symbol = uSymbol2Symbol(uSymbol,xy[0],xy[1],rowColor)
3012+ if symbol:
3013+ if bubblePlot:
3014+ symbol.size = bubbleR*(drow[j][2]/bubbleMax)**0.5
3015+ g.add(symbol)
3016+ else:
3017+ if bubblePlot: drow = self.data[rowNo]
3018+ for j,xy in enumerate(row):
3019+ usymbol = getattr(self.lines[rowNo,j],'symbol',None)
3020+ if not usymbol: continue
3021 symbol = uSymbol2Symbol(uSymbol,xy[0],xy[1],rowColor)
3022 if symbol:
3023 if bubblePlot:
3024@@ -348,13 +359,27 @@
3025 if self.behindAxes:
3026 self._lineG = Group()
3027 g.add(self._lineG)
3028+ xA._joinToAxis()
3029+ yA._joinToAxis()
3030+ xAex = xA.visibleAxis and [xA._y] or []
3031+ yAex = yA.visibleAxis and [yA._x] or []
3032+ skipGrid = getattr(xA,'skipGrid','none')
3033+ if skipGrid!=None:
3034+ if skipGrid in ('both','top'):
3035+ yAex.append(xA._x+xA._length)
3036+ if skipGrid in ('both','bottom'):
3037+ yAex.append(xA._x)
3038+ skipGrid = getattr(yA,'skipGrid','none')
3039+ if skipGrid!=None:
3040+ if skipGrid in ('both','top'):
3041+ xAex.append(yA._y+yA._length)
3042+ if skipGrid in ('both','bottom'):
3043+ xAex.append(yA._y)
3044 if self.gridFirst:
3045- xA.makeGrid(g,parent=self,dim=yA.getGridDims)
3046- yA.makeGrid(g,parent=self,dim=xA.getGridDims)
3047+ xA.makeGrid(g,parent=self,dim=yA.getGridDims,exclude=yAex)
3048+ yA.makeGrid(g,parent=self,dim=xA.getGridDims,exclude=xAex)
3049 g.add(xA.draw())
3050 g.add(yA.draw())
3051- xAex = xA.visibleAxis and (xA._y,) or ()
3052- yAex = yA.visibleAxis and (yA._x,) or ()
3053 if not self.gridFirst:
3054 xAdgl = getattr(xA,'drawGridLast',False)
3055 yAdgl = getattr(yA,'drawGridLast',False)
3056@@ -801,7 +826,6 @@
3057 height = AttrMapValue(isNumber, desc="Height of the area inside the axes"),
3058 outerBorderOn = AttrMapValue(isBoolean, desc="Is there an outer border (continuation of axes)"),
3059 outerBorderColor = AttrMapValue(isColorOrNone, desc="Color of outer border (if any)"),
3060- background = AttrMapValue(isColorOrNone, desc="Background color (if any)"),
3061 labelOffset = AttrMapValue(isNumber, desc="Space between label and Axis (or other labels)",advancedUsage=1),
3062 axisTickLengths = AttrMapValue(isNumber, desc="Lenth of the ticks on both axes"),
3063 axisStrokeWidth = AttrMapValue(isNumber, desc="Stroke width for both axes"),
3064@@ -853,7 +877,6 @@
3065
3066 #values for lineplot
3067 self.joinedLines = 0
3068- self.fillColor = self.background
3069
3070 self.leftPadding=5
3071 self.rightPadding=10
3072
3073=== modified file 'src/reportlab/graphics/charts/markers.py'
3074--- src/reportlab/graphics/charts/markers.py 2009-02-22 14:19:44 +0000
3075+++ src/reportlab/graphics/charts/markers.py 2013-04-14 00:48:45 +0000
3076@@ -1,8 +1,8 @@
3077-#Copyright ReportLab Europe Ltd. 2000-2004
3078+#Copyright ReportLab Europe Ltd. 2000-2012
3079 #see license.txt for license details
3080 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/markers.py
3081
3082-__version__=''' $Id: markers.py 3345 2008-12-12 17:55:22Z damian $ '''
3083+__version__=''' $Id: markers.py 3959 2012-09-27 14:39:39Z robin $ '''
3084 __doc__="""This modules defines a collection of markers used in charts.
3085
3086 The make* functions return a simple shape or a widget as for
3087
3088=== modified file 'src/reportlab/graphics/charts/piecharts.py'
3089--- src/reportlab/graphics/charts/piecharts.py 2010-12-06 12:45:44 +0000
3090+++ src/reportlab/graphics/charts/piecharts.py 2013-04-14 00:48:45 +0000
3091@@ -1,4 +1,4 @@
3092-#Copyright ReportLab Europe Ltd. 2000-2004
3093+#Copyright ReportLab Europe Ltd. 2000-2012
3094 #see license.txt for license details
3095 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/piecharts.py
3096 # experimental pie chart script. Two types of pie - one is a monolithic
3097@@ -6,7 +6,7 @@
3098 #a wedges collection whic lets you customize the group or every individual
3099 #wedge.
3100
3101-__version__=''' $Id: piecharts.py 3744 2010-07-19 10:48:38Z rgbecker $ '''
3102+__version__=''' $Id: piecharts.py 3959 2012-09-27 14:39:39Z robin $ '''
3103 __doc__="""Basic Pie Chart class.
3104
3105 This permits you to customize and pop out individual wedges;
3106@@ -31,10 +31,14 @@
3107 from reportlab.graphics.widgetbase import Widget, TypedPropertyCollection, PropHolder
3108 from reportlab.graphics.charts.areas import PlotArea
3109 from reportlab.graphics.charts.legends import _objStr
3110-from textlabels import Label
3111+from reportlab.graphics.charts.textlabels import Label
3112
3113 _ANGLE2BOXANCHOR={0:'w', 45:'sw', 90:'s', 135:'se', 180:'e', 225:'ne', 270:'n', 315: 'nw', -45: 'nw'}
3114 _ANGLE2RBOXANCHOR={0:'e', 45:'ne', 90:'n', 135:'nw', 180:'w', 225:'sw', 270:'s', 315: 'se', -45: 'se'}
3115+
3116+_ANGLELO = 1e-7
3117+_ANGLEHI = 360.0 - _ANGLELO
3118+
3119 class WedgeLabel(Label):
3120 def _checkDXY(self,ba):
3121 pass
3122@@ -59,46 +63,46 @@
3123 format method.
3124 """
3125 _attrMap = AttrMap(
3126- strokeWidth = AttrMapValue(isNumber,desc=''),
3127- fillColor = AttrMapValue(isColorOrNone,desc=''),
3128- strokeColor = AttrMapValue(isColorOrNone,desc=''),
3129- strokeDashArray = AttrMapValue(isListOfNumbersOrNone,desc=''),
3130+ strokeWidth = AttrMapValue(isNumber,desc='Width of the wedge border'),
3131+ fillColor = AttrMapValue(isColorOrNone,desc='Filling color of the wedge'),
3132+ strokeColor = AttrMapValue(isColorOrNone,desc='Color of the wedge border'),
3133+ strokeDashArray = AttrMapValue(isListOfNumbersOrNone,desc='Style of the wedge border, expressed as a list of lengths of alternating dashes and blanks'),
3134 strokeLineCap = AttrMapValue(OneOf(0,1,2),desc="Line cap 0=butt, 1=round & 2=square"),
3135 strokeLineJoin = AttrMapValue(OneOf(0,1,2),desc="Line join 0=miter, 1=round & 2=bevel"),
3136- strokeMiterLimit = AttrMapValue(isNumber,desc='miter limit control miter line joins'),
3137- popout = AttrMapValue(isNumber,desc="how far of centre a wedge to pop."),
3138- fontName = AttrMapValue(isString,desc=''),
3139- fontSize = AttrMapValue(isNumber,desc=''),
3140- fontColor = AttrMapValue(isColorOrNone,desc=''),
3141- labelRadius = AttrMapValue(isNumber,desc=''),
3142- label_dx = AttrMapValue(isNumber,desc=''),
3143- label_dy = AttrMapValue(isNumber,desc=''),
3144- label_angle = AttrMapValue(isNumber,desc=''),
3145- label_boxAnchor = AttrMapValue(isBoxAnchor,desc=''),
3146- label_boxStrokeColor = AttrMapValue(isColorOrNone,desc=''),
3147- label_boxStrokeWidth = AttrMapValue(isNumber,desc=''),
3148- label_boxFillColor = AttrMapValue(isColorOrNone,desc=''),
3149- label_strokeColor = AttrMapValue(isColorOrNone,desc=''),
3150- label_strokeWidth = AttrMapValue(isNumber,desc=''),
3151- label_text = AttrMapValue(isStringOrNone,desc=''),
3152+ strokeMiterLimit = AttrMapValue(isNumber,desc='Miter limit control miter line joins'),
3153+ popout = AttrMapValue(isNumber,desc="How far of centre a wedge to pop"),
3154+ fontName = AttrMapValue(isString,desc='Name of the font of the label text'),
3155+ fontSize = AttrMapValue(isNumber,desc='Size of the font of the label text in points'),
3156+ fontColor = AttrMapValue(isColorOrNone,desc='Color of the font of the label text'),
3157+ labelRadius = AttrMapValue(isNumber,desc='Distance between the center of the label box and the center of the pie, expressed in times the radius of the pie'),
3158+ label_dx = AttrMapValue(isNumber,desc='X Offset of the label'),
3159+ label_dy = AttrMapValue(isNumber,desc='Y Offset of the label'),
3160+ label_angle = AttrMapValue(isNumber,desc='Angle of the label, default (0) is horizontal, 90 is vertical, 180 is upside down'),
3161+ label_boxAnchor = AttrMapValue(isBoxAnchor,desc='Anchoring point of the label'),
3162+ label_boxStrokeColor = AttrMapValue(isColorOrNone,desc='Border color for the label box'),
3163+ label_boxStrokeWidth = AttrMapValue(isNumber,desc='Border width for the label box'),
3164+ label_boxFillColor = AttrMapValue(isColorOrNone,desc='Filling color of the label box'),
3165+ label_strokeColor = AttrMapValue(isColorOrNone,desc='Border color for the label text'),
3166+ label_strokeWidth = AttrMapValue(isNumber,desc='Border width for the label text'),
3167+ label_text = AttrMapValue(isStringOrNone,desc='Text of the label'),
3168 label_leading = AttrMapValue(isNumberOrNone,desc=''),
3169- label_width = AttrMapValue(isNumberOrNone,desc=''),
3170- label_maxWidth = AttrMapValue(isNumberOrNone,desc=''),
3171- label_height = AttrMapValue(isNumberOrNone,desc=''),
3172- label_textAnchor = AttrMapValue(isTextAnchor,desc=''),
3173+ label_width = AttrMapValue(isNumberOrNone,desc='Width of the label'),
3174+ label_maxWidth = AttrMapValue(isNumberOrNone,desc='Maximum width the label can grow to'),
3175+ label_height = AttrMapValue(isNumberOrNone,desc='Height of the label'),
3176+ label_textAnchor = AttrMapValue(isTextAnchor,desc='Maximum height the label can grow to'),
3177 label_visible = AttrMapValue(isBoolean,desc="True if the label is to be drawn"),
3178- label_topPadding = AttrMapValue(isNumber,'padding at top of box'),
3179- label_leftPadding = AttrMapValue(isNumber,'padding at left of box'),
3180- label_rightPadding = AttrMapValue(isNumber,'padding at right of box'),
3181- label_bottomPadding = AttrMapValue(isNumber,'padding at bottom of box'),
3182- label_simple_pointer = AttrMapValue(isBoolean,'set to True for simple pointers'),
3183+ label_topPadding = AttrMapValue(isNumber,'Padding at top of box'),
3184+ label_leftPadding = AttrMapValue(isNumber,'Padding at left of box'),
3185+ label_rightPadding = AttrMapValue(isNumber,'Padding at right of box'),
3186+ label_bottomPadding = AttrMapValue(isNumber,'Padding at bottom of box'),
3187+ label_simple_pointer = AttrMapValue(isBoolean,'Set to True for simple pointers'),
3188 label_pointer_strokeColor = AttrMapValue(isColorOrNone,desc='Color of indicator line'),
3189 label_pointer_strokeWidth = AttrMapValue(isNumber,desc='StrokeWidth of indicator line'),
3190- label_pointer_elbowLength = AttrMapValue(isNumber,desc='length of final indicator line segment'),
3191+ label_pointer_elbowLength = AttrMapValue(isNumber,desc='Length of final indicator line segment'),
3192 label_pointer_edgePad = AttrMapValue(isNumber,desc='pad between pointer label and box'),
3193 label_pointer_piePad = AttrMapValue(isNumber,desc='pad between pointer label and pie'),
3194 swatchMarker = AttrMapValue(NoneOr(isSymbol), desc="None or makeMarker('Diamond') ...",advancedUsage=1),
3195- visible = AttrMapValue(isBoolean,'set to false to skip displaying'),
3196+ visible = AttrMapValue(isBoolean,'Set to false to skip displaying'),
3197 )
3198
3199 def __init__(self):
3200@@ -138,7 +142,13 @@
3201 # now draw a label
3202 if self.simpleLabels:
3203 theLabel = String(labelX, labelY, text)
3204- theLabel.textAnchor = "middle"
3205+ if not self.sideLabels:
3206+ theLabel.textAnchor = "middle"
3207+ else:
3208+ if (abs(angle) < 90 ) or (angle >270 and angle<450) or (-450< angle <-270):
3209+ theLabel.textAnchor = "start"
3210+ else:
3211+ theLabel.textAnchor = "end"
3212 theLabel._pmv = angle
3213 theLabel._simple_pointer = 0
3214 else:
3215@@ -147,9 +157,23 @@
3216 theLabel.x = labelX
3217 theLabel.y = labelY
3218 theLabel.dx = wedgeStyle.label_dx
3219- theLabel.dy = wedgeStyle.label_dy
3220+ if not self.sideLabels:
3221+ theLabel.dy = wedgeStyle.label_dy
3222+ theLabel.boxAnchor = wedgeStyle.label_boxAnchor
3223+ else:
3224+ if wedgeStyle.fontSize is None:
3225+ sideLabels_dy = self.fontSize / 2.5
3226+ else:
3227+ sideLabels_dy = wedgeStyle.fontSize / 2.5
3228+ if wedgeStyle.label_dy is None:
3229+ theLabel.dy = sideLabels_dy
3230+ else:
3231+ theLabel.dy = wedgeStyle.label_dy + sideLabels_dy
3232+ if (abs(angle) < 90 ) or (angle >270 and angle<450) or (-450< angle <-270):
3233+ theLabel.boxAnchor = 'w'
3234+ else:
3235+ theLabel.boxAnchor = 'e'
3236 theLabel.angle = wedgeStyle.label_angle
3237- theLabel.boxAnchor = wedgeStyle.label_boxAnchor
3238 theLabel.boxStrokeColor = wedgeStyle.label_boxStrokeColor
3239 theLabel.boxStrokeWidth = wedgeStyle.label_boxStrokeWidth
3240 theLabel.boxFillColor = wedgeStyle.label_boxFillColor
3241@@ -210,7 +234,7 @@
3242 return text
3243
3244 def boundsOverlap(P,Q):
3245- return not(P[0]>Q[2]-1e-2 or Q[0]>P[2]-1e-2 or P[1]>Q[3]-1e-2 or Q[1]>P[3]-1e-2)
3246+ return not(P[0]>Q[2]-1e-2 or Q[0]>P[2]-1e-2 or P[1]>(0.5*(Q[1]+Q[3]))-1e-2 or Q[1]>(0.5*(P[1]+P[3]))-1e-2)
3247
3248 def _findOverlapRun(B,i,wrap):
3249 '''find overlap run containing B[i]'''
3250@@ -237,7 +261,7 @@
3251 if len(R)>1: return R
3252 return None
3253
3254-def fixLabelOverlaps(L):
3255+def fixLabelOverlaps(L, sideLabels=False):
3256 nL = len(L)
3257 if nL<2: return
3258 B = [l._origdata['bounds'] for l in L]
3259@@ -246,40 +270,69 @@
3260 iter = 0
3261 mult = 1.
3262
3263- while iter<30:
3264- R = findOverlapRun(B)
3265- if not R: break
3266- nR = len(R)
3267- if nR==nL: break
3268- if not [r for r in RP if r in R]:
3269- mult = 1.0
3270- da = 0
3271- r0 = R[0]
3272- rL = R[-1]
3273- bi = B[r0]
3274- taa = aa = _360(L[r0]._pmv)
3275- for r in R[1:]:
3276- b = B[r]
3277- da = max(da,min(b[3]-bi[1],bi[3]-b[1]))
3278- bi = b
3279- aa += L[r]._pmv
3280- aa = aa/float(nR)
3281- utaa = abs(L[rL]._pmv-taa)
3282- ntaa = _360(utaa)
3283- da *= mult*(nR-1)/ntaa
3284-
3285- for r in R:
3286- l = L[r]
3287- orig = l._origdata
3288- angle = l._pmv = _360(l._pmv+da*(_360(l._pmv)-aa))
3289- rad = angle/_180_pi
3290- l.x = orig['cx'] + orig['rx']*cos(rad)
3291- l.y = orig['cy'] + orig['ry']*sin(rad)
3292- B[r] = l.getBounds()
3293- RP = R
3294- mult *= 1.05
3295- iter += 1
3296-
3297+ if not sideLabels:
3298+ while iter<30:
3299+ R = findOverlapRun(B)
3300+ if not R: break
3301+ nR = len(R)
3302+ if nR==nL: break
3303+ if not [r for r in RP if r in R]:
3304+ mult = 1.0
3305+ da = 0
3306+ r0 = R[0]
3307+ rL = R[-1]
3308+ bi = B[r0]
3309+ taa = aa = _360(L[r0]._pmv)
3310+ for r in R[1:]:
3311+ b = B[r]
3312+ da = max(da,min(b[3]-bi[1],bi[3]-b[1]))
3313+ bi = b
3314+ aa += L[r]._pmv
3315+ aa = aa/float(nR)
3316+ utaa = abs(L[rL]._pmv-taa)
3317+ ntaa = _360(utaa)
3318+ da *= mult*(nR-1)/ntaa
3319+
3320+ for r in R:
3321+ l = L[r]
3322+ orig = l._origdata
3323+ angle = l._pmv = _360(l._pmv+da*(_360(l._pmv)-aa))
3324+ rad = angle/_180_pi
3325+ l.x = orig['cx'] + orig['rx']*cos(rad)
3326+ l.y = orig['cy'] + orig['ry']*sin(rad)
3327+ B[r] = l.getBounds()
3328+ RP = R
3329+ mult *= 1.05
3330+ iter += 1
3331+
3332+ else:
3333+ while iter<30:
3334+ R = findOverlapRun(B)
3335+ if not R: break
3336+ nR = len(R)
3337+ if nR == nL: break
3338+ l1 = L[-1]
3339+ orig1 = l1._origdata
3340+ bounds1 = orig1['bounds']
3341+ for i,r in enumerate(R):
3342+ l = L[r]
3343+ orig = l._origdata
3344+ bounds = orig['bounds']
3345+ diff1 = 0
3346+ diff2 = 0
3347+ if not i == nR-1:
3348+ if not bounds == bounds1:
3349+ if bounds[3]>bounds1[1] and bounds1[1]<bounds[1]:
3350+ diff1 = bounds[3]-bounds1[1]
3351+ if bounds1[3]>bounds[1] and bounds[1]<bounds1[1]:
3352+ diff2 = bounds1[3]-bounds[1]
3353+ if diff1 > diff2:
3354+ l.y +=0.5*(bounds1[3]-bounds1[1])
3355+ elif diff2 >= diff1:
3356+ l.y -= 0.5*(bounds1[3]-bounds1[1])
3357+ B[r] = l.getBounds()
3358+ iter += 1
3359+
3360 def intervalIntersection(A,B):
3361 x,y = max(min(A),min(B)),min(max(A),max(B))
3362 if x>=y: return None
3363@@ -415,6 +468,31 @@
3364 mul = -1
3365 return G, mlr[0], mlr[1], mel
3366
3367+def theta0(data, direction):
3368+ fac = (2*pi)/sum(data)
3369+ rads = [d*fac for d in data]
3370+
3371+ r0 = 0
3372+ hrads = []
3373+ for r in rads:
3374+ hrads.append(r0+r*0.5)
3375+ r0 += r
3376+
3377+ vstar = len(data)*1e6
3378+ rstar = 0
3379+ delta = pi/36.0
3380+ for i in xrange(36):
3381+ r = i*delta
3382+ v = sum([abs(sin(r+a)) for a in hrads])
3383+ if v < vstar:
3384+ if direction == 'clockwise':
3385+ rstar=-r
3386+ else:
3387+ rstar=r
3388+ vstar = v
3389+ return rstar*180/pi
3390+
3391+
3392 class AngleData(float):
3393 '''use this to carry the data along with the angle'''
3394 def __new__(cls,angle,data):
3395@@ -424,12 +502,12 @@
3396
3397 class Pie(AbstractPieChart):
3398 _attrMap = AttrMap(BASE=AbstractPieChart,
3399- data = AttrMapValue(isListOfNumbers, desc='list of numbers defining wedge sizes; need not sum to 1'),
3400- labels = AttrMapValue(isListOfStringsOrNone, desc="optional list of labels to use for each data point"),
3401- startAngle = AttrMapValue(isNumber, desc="angle of first slice; like the compass, 0 is due North"),
3402+ data = AttrMapValue(isListOfNumbers, desc='List of numbers defining wedge sizes; need not sum to 1'),
3403+ labels = AttrMapValue(isListOfStringsOrNone, desc="Optional list of labels to use for each data point"),
3404+ startAngle = AttrMapValue(isNumber, desc="Angle of first slice; 0 is due East"),
3405 direction = AttrMapValue(OneOf('clockwise', 'anticlockwise'), desc="'clockwise' or 'anticlockwise'"),
3406- slices = AttrMapValue(None, desc="collection of wedge descriptor objects"),
3407- simpleLabels = AttrMapValue(isBoolean, desc="If true(default) use String not super duper WedgeLabel",advancedUsage=1),
3408+ slices = AttrMapValue(None, desc="Collection of wedge descriptor objects"),
3409+ simpleLabels = AttrMapValue(isBoolean, desc="If true(default) use a simple String not an advanced WedgeLabel. A WedgeLabel is customisable using the properties prefixed label_ in the collection slices."),
3410 other_threshold = AttrMapValue(isNumber, desc='A value for doing threshholding, not used yet.',advancedUsage=1),
3411 checkLabelOverlap = AttrMapValue(isBoolean, desc="If true check and attempt to fix\n standard label overlaps(default off)",advancedUsage=1),
3412 pointerLabelMode = AttrMapValue(OneOf(None,'LeftRight','LeftAndRight'), desc='',advancedUsage=1),
3413@@ -438,6 +516,8 @@
3414 xradius = AttrMapValue(isNumberOrNone, desc="X direction Radius"),
3415 yradius = AttrMapValue(isNumberOrNone, desc="Y direction Radius"),
3416 wedgeRecord = AttrMapValue(None, desc="callable(wedge,*args,**kwds)",advancedUsage=1),
3417+ sideLabels = AttrMapValue(isBoolean, desc="If true attempt to make piechart with labels along side and pointers"),
3418+ sideLabelsOffset = AttrMapValue(isNumber, desc="The fraction of the pie width that the labels are situated at from the edges of the pie"),
3419 )
3420 other_threshold=None
3421
3422@@ -457,6 +537,8 @@
3423 self.sameRadii = False
3424 self.orderMode = 'fixed'
3425 self.xradius = self.yradius = None
3426+ self.sideLabels = 0
3427+ self.sideLabelsOffset = 0.1
3428
3429 self.slices = TypedPropertyCollection(WedgeProperties)
3430 self.slices[0].fillColor = colors.darkcyan
3431@@ -586,10 +668,14 @@
3432
3433 def makeAngles(self):
3434 wr = getattr(self,'wedgeRecord',None)
3435- startAngle = self.startAngle % 360
3436+ if self.sideLabels:
3437+ startAngle = theta0(self.data, self.direction)
3438+ self.slices.label_visible = 1
3439+ else:
3440+ startAngle = self.startAngle % 360
3441 whichWay = self.direction == "clockwise" and -1 or 1
3442 D = [a for a in enumerate(self.normalizeData(keepData=wr))]
3443- if self.orderMode=='alternate':
3444+ if self.orderMode=='alternate' and not self.sideLabels:
3445 W = [a for a in D if abs(a[1])>=1e-5]
3446 W.sort(_arcCF)
3447 T = [[],[]]
3448@@ -608,7 +694,7 @@
3449 a = A.append
3450 for i, angle in D:
3451 endAngle = (startAngle + (angle * whichWay))
3452- if abs(angle)>=1e-5:
3453+ if abs(angle)>=_ANGLELO:
3454 if startAngle >= endAngle:
3455 aa = endAngle,startAngle
3456 else:
3457@@ -623,6 +709,15 @@
3458
3459 def makeWedges(self):
3460 angles = self.makeAngles()
3461+ #Checking to see whether there are too many wedges packed in too small a space
3462+ halfAngles = []
3463+ for i,(a1,a2) in angles:
3464+ if a2 is None:
3465+ halfAngle = a1
3466+ else:
3467+ halfAngle = 0.5*(a2+a1)
3468+ halfAngles.append(halfAngle)
3469+ sideLabels = self.sideLabels
3470 n = len(angles)
3471 labels = _fixLabels(self.labels,n)
3472 wr = getattr(self,'wedgeRecord',None)
3473@@ -631,6 +726,8 @@
3474 styleCount = len(self.slices)
3475
3476 plMode = self.pointerLabelMode
3477+ if sideLabels:
3478+ plMode = None
3479 if plMode:
3480 checkLabelOverlap = False
3481 PL=self.makePointerLabels(angles,plMode)
3482@@ -662,6 +759,7 @@
3483 #all having the default style
3484 wedgeStyle = self.slices[i%styleCount]
3485 if not wedgeStyle.visible: continue
3486+ aa = abs(a2-a1)
3487
3488 # is it a popout?
3489 cx, cy = centerx, centery
3490@@ -672,15 +770,15 @@
3491 aveAngleRadians = averageAngle/_180_pi
3492 cosAA = cos(aveAngleRadians)
3493 sinAA = sin(aveAngleRadians)
3494- if popout:
3495+ if popout and aa<_ANGLEHI:
3496 # pop out the wedge
3497 cx = centerx + popout*cosAA
3498 cy = centery + popout*sinAA
3499
3500- if n > 1:
3501+ if aa>=_ANGLEHI:
3502+ theWedge = Ellipse(cx, cy, xradius, yradius)
3503+ else:
3504 theWedge = Wedge(cx, cy, xradius, a1, a2, yradius=yradius)
3505- elif n==1:
3506- theWedge = Ellipse(cx, cy, xradius, yradius)
3507
3508 theWedge.fillColor = wedgeStyle.fillColor
3509 theWedge.strokeColor = wedgeStyle.strokeColor
3510@@ -695,48 +793,101 @@
3511 if wr:
3512 wr(theWedge,value=a1._data,label=text)
3513 if wedgeStyle.label_visible:
3514- if text:
3515- labelRadius = wedgeStyle.labelRadius
3516- rx = xradius*labelRadius
3517- ry = yradius*labelRadius
3518- labelX = cx + rx*cosAA
3519- labelY = cy + ry*sinAA
3520- l = _addWedgeLabel(self,text,averageAngle,labelX,labelY,wedgeStyle)
3521- L_add(l)
3522- if not plMode and l._simple_pointer:
3523- l._aax = cx+xradius*cosAA
3524- l._aay = cy+yradius*sinAA
3525- if checkLabelOverlap:
3526- l._origdata = { 'x': labelX, 'y':labelY, 'angle': averageAngle,
3527- 'rx': rx, 'ry':ry, 'cx':cx, 'cy':cy,
3528- 'bounds': l.getBounds(),
3529- }
3530- elif plMode and PL_data:
3531- l = PL_data[i]
3532- if l:
3533- data = l._origdata
3534- sinM = data['smid']
3535- cosM = data['cmid']
3536- lX = cx + xradius*cosM
3537- lY = cy + yradius*sinM
3538- lpel = wedgeStyle.label_pointer_elbowLength
3539- lXi = lX + lpel*cosM
3540- lYi = lY + lpel*sinM
3541- L_add(PolyLine((lX,lY,lXi,lYi,l.x,l.y),
3542- strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3543- strokeColor=wedgeStyle.label_pointer_strokeColor))
3544- L_add(l)
3545-
3546+ if not sideLabels:
3547+ if text:
3548+ labelRadius = wedgeStyle.labelRadius
3549+ rx = xradius*labelRadius
3550+ ry = yradius*labelRadius
3551+ labelX = cx + rx*cosAA
3552+ labelY = cy + ry*sinAA
3553+ l = _addWedgeLabel(self,text,averageAngle,labelX,labelY,wedgeStyle)
3554+ L_add(l)
3555+ if not plMode and l._simple_pointer:
3556+ l._aax = cx+xradius*cosAA
3557+ l._aay = cy+yradius*sinAA
3558+ if checkLabelOverlap:
3559+ l._origdata = { 'x': labelX, 'y':labelY, 'angle': averageAngle,
3560+ 'rx': rx, 'ry':ry, 'cx':cx, 'cy':cy,
3561+ 'bounds': l.getBounds(),
3562+ }
3563+ elif plMode and PL_data:
3564+ l = PL_data[i]
3565+ if l:
3566+ data = l._origdata
3567+ sinM = data['smid']
3568+ cosM = data['cmid']
3569+ lX = cx + xradius*cosM
3570+ lY = cy + yradius*sinM
3571+ lpel = wedgeStyle.label_pointer_elbowLength
3572+ lXi = lX + lpel*cosM
3573+ lYi = lY + lpel*sinM
3574+ L_add(PolyLine((lX,lY,lXi,lYi,l.x,l.y),
3575+ strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3576+ strokeColor=wedgeStyle.label_pointer_strokeColor))
3577+ L_add(l)
3578+ else:
3579+ if text:
3580+ slices_popout = self.slices.popout
3581+ m=0
3582+ for n, angle in angles:
3583+ if self.slices[n].fillColor:
3584+ m += 1
3585+ else:
3586+ r = n%m
3587+ self.slices[n].fillColor = self.slices[r].fillColor
3588+ self.slices[n].popout = self.slices[r].popout
3589+ for j in range(0,m-1):
3590+ if self.slices[j].popout > slices_popout:
3591+ slices_popout = self.slices[j].popout
3592+ labelRadius = wedgeStyle.labelRadius
3593+ ry = yradius*labelRadius
3594+ if (abs(averageAngle) < 90 ) or (averageAngle >270 and averageAngle <450) or (-450<
3595+ averageAngle <-270):
3596+ labelX = (1+self.sideLabelsOffset)*self.width + self.x + slices_popout
3597+ rx = 0
3598+ else:
3599+ labelX = self.x - (self.sideLabelsOffset)*self.width - slices_popout
3600+ rx = 0
3601+ labelY = cy + ry*sinAA
3602+ l = _addWedgeLabel(self,text,averageAngle,labelX,labelY,wedgeStyle)
3603+ L_add(l)
3604+ if not plMode:
3605+ l._aax = cx+xradius*cosAA
3606+ l._aay = cy+yradius*sinAA
3607+ if checkLabelOverlap:
3608+ l._origdata = { 'x': labelX, 'y':labelY, 'angle': averageAngle,
3609+ 'rx': rx, 'ry':ry, 'cx':cx, 'cy':cy,
3610+ 'bounds': l.getBounds(),
3611+ }
3612+ x1,y1,x2,y2 = l.getBounds()
3613+
3614 if checkLabelOverlap and L:
3615- fixLabelOverlaps(L)
3616+ fixLabelOverlaps(L, sideLabels)
3617 for l in L: g_add(l)
3618
3619 if not plMode:
3620 for l in L:
3621- if l._simple_pointer:
3622+ if l._simple_pointer and not sideLabels:
3623 g_add(Line(l.x,l.y,l._aax,l._aay,
3624 strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3625 strokeColor=wedgeStyle.label_pointer_strokeColor))
3626+ elif sideLabels:
3627+ x1,y1,x2,y2 = l.getBounds()
3628+ #add pointers
3629+ if l.x == (1+self.sideLabelsOffset)*self.width + self.x:
3630+ g_add(Line(l._aax,l._aay,0.5*(l._aax+l.x),l.y+(0.25*(y2-y1)),
3631+ strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3632+ strokeColor=wedgeStyle.label_pointer_strokeColor))
3633+ g_add(Line(0.5*(l._aax+l.x),l.y+(0.25*(y2-y1)),l.x,l.y+(0.25*(y2-y1)),
3634+ strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3635+ strokeColor=wedgeStyle.label_pointer_strokeColor))
3636+ else:
3637+ g_add(Line(l._aax,l._aay,0.5*(l._aax+l.x),l.y+(0.25*(y2-y1)),
3638+ strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3639+ strokeColor=wedgeStyle.label_pointer_strokeColor))
3640+ g_add(Line(0.5*(l._aax+l.x),l.y+(0.25*(y2-y1)),l.x,l.y+(0.25*(y2-y1)),
3641+ strokeWidth=wedgeStyle.label_pointer_strokeWidth,
3642+ strokeColor=wedgeStyle.label_pointer_strokeColor))
3643
3644 return g
3645
3646@@ -899,7 +1050,7 @@
3647 drawing.add(self.draw())
3648 return drawing
3649
3650-from utils3d import _getShaded, _2rad, _360, _pi_2, _2pi, _180_pi
3651+from reportlab.graphics.charts.utils3d import _getShaded, _2rad, _360, _pi_2, _2pi, _180_pi
3652 class Wedge3dProperties(PropHolder):
3653 """This holds descriptive information about the wedges in a pie chart.
3654
3655@@ -979,6 +1130,7 @@
3656 self.lo = lo
3657 self.hi = hi
3658 self.mid = (lo+hi)*0.5
3659+ self.not360 = abs(hi-lo) < _ANGLEHI
3660
3661 def __str__(self):
3662 return '_SL3D(%.2f,%.2f)' % (self.lo,self.hi)
3663@@ -995,7 +1147,7 @@
3664 angle_3d = 180
3665
3666 def _popout(self,i):
3667- return self.slices[i].popout or 0
3668+ return self._sl3d[i].not360 and self.slices[i].popout or 0
3669
3670 def CX(self, i,d ):
3671 return self._cx+(d and self._xdepth_3d or 0)+self._popout(i)*cos(_2rad(self._sl3d[i].mid))
3672@@ -1045,8 +1197,9 @@
3673 _3d_angle = self.angle_3d
3674 _3dva = self._3dva = _360(_3d_angle+90)
3675 a0 = _2rad(_3dva)
3676- self._xdepth_3d = cos(a0)*self.depth_3d
3677- self._ydepth_3d = sin(a0)*self.depth_3d
3678+ depth_3d = self.depth_3d
3679+ self._xdepth_3d = cos(a0)*depth_3d
3680+ self._ydepth_3d = sin(a0)*depth_3d
3681 self._cx = self.x+self.width/2.0
3682 self._cy = self.y+(self.height - self._ydepth_3d)/2.0
3683 radiusx = radiusy = self._cx-self.x
3684@@ -1098,7 +1251,8 @@
3685 sl = _sl3d[i]
3686 lo = angle0 = sl.lo
3687 hi = angle1 = sl.hi
3688- if abs(hi-lo)<=1e-7: continue
3689+ aa = abs(hi-lo)
3690+ if aa<_ANGLELO: continue
3691 fillColor = _getShaded(style.fillColor,style.fillColorShaded,style.shading)
3692 strokeColor = _getShaded(style.strokeColor,style.strokeColorShaded,style.shading) or fillColor
3693 strokeWidth = style.strokeWidth
3694@@ -1106,31 +1260,39 @@
3695 cy0 = CY(i,0)
3696 cx1 = CX(i,1)
3697 cy1 = CY(i,1)
3698- #background shaded pie bottom
3699- g.add(Wedge(cx1,cy1,radiusx, lo, hi,yradius=radiusy,
3700- strokeColor=strokeColor,strokeWidth=strokeWidth,fillColor=fillColor,
3701- strokeLineJoin=1))
3702- #connect to top
3703- if lo < a0 < hi: angle0 = a0
3704- if lo < a1 < hi: angle1 = a1
3705- p = ArcPath(strokeColor=strokeColor, fillColor=fillColor,strokeWidth=strokeWidth,strokeLineJoin=1)
3706- p.addArc(cx1,cy1,radiusx,angle0,angle1,yradius=radiusy,moveTo=1)
3707- p.lineTo(OX(i,angle1,0),OY(i,angle1,0))
3708- p.addArc(cx0,cy0,radiusx,angle0,angle1,yradius=radiusy,reverse=1)
3709- p.closePath()
3710- if angle0<=_3dva and angle1>=_3dva:
3711- rd = 0
3712- else:
3713- rd = min(rad_dist(angle0),rad_dist(angle1))
3714- S.append((rd,p))
3715- _fillSide(S,i,lo,strokeColor,strokeWidth,fillColor)
3716- _fillSide(S,i,hi,strokeColor,strokeWidth,fillColor)
3717+ if depth_3d:
3718+ #background shaded pie bottom
3719+ g.add(Wedge(cx1,cy1,radiusx, lo, hi,yradius=radiusy,
3720+ strokeColor=strokeColor,strokeWidth=strokeWidth,fillColor=fillColor,
3721+ strokeLineJoin=1))
3722+ #connect to top
3723+ if lo < a0 < hi: angle0 = a0
3724+ if lo < a1 < hi: angle1 = a1
3725+ p = ArcPath(strokeColor=strokeColor, fillColor=fillColor,strokeWidth=strokeWidth,strokeLineJoin=1)
3726+ p.addArc(cx1,cy1,radiusx,angle0,angle1,yradius=radiusy,moveTo=1)
3727+ p.lineTo(OX(i,angle1,0),OY(i,angle1,0))
3728+ p.addArc(cx0,cy0,radiusx,angle0,angle1,yradius=radiusy,reverse=1)
3729+ p.closePath()
3730+ if angle0<=_3dva and angle1>=_3dva:
3731+ rd = 0
3732+ else:
3733+ rd = min(rad_dist(angle0),rad_dist(angle1))
3734+ S.append((rd,p))
3735+ _fillSide(S,i,lo,strokeColor,strokeWidth,fillColor)
3736+ _fillSide(S,i,hi,strokeColor,strokeWidth,fillColor)
3737
3738 #bright shaded top
3739 fillColor = style.fillColor
3740 strokeColor = style.strokeColor or fillColor
3741 T.append(Wedge(cx0,cy0,radiusx,lo,hi,yradius=radiusy,
3742 strokeColor=strokeColor,strokeWidth=strokeWidth,fillColor=fillColor,strokeLineJoin=1))
3743+ if aa>=_ANGLEHI:
3744+ theWedge = Ellipse(cx0, cy0, radiusx, radiusy,
3745+ strokeColor=strokeColor,strokeWidth=strokeWidth,fillColor=fillColor,strokeLineJoin=1)
3746+ else:
3747+ theWedge = Wedge(cx0,cy0,radiusx,lo,hi,yradius=radiusy,
3748+ strokeColor=strokeColor,strokeWidth=strokeWidth,fillColor=fillColor,strokeLineJoin=1)
3749+ T.append(theWedge)
3750
3751 text = labels[i]
3752 if style.label_visible and text:
3753@@ -1152,7 +1314,7 @@
3754
3755 S.sort(lambda a,b: -cmp(a[0],b[0]))
3756 if checkLabelOverlap and L:
3757- fixLabelOverlaps(L)
3758+ fixLabelOverlaps(L,sideLabels)
3759 for x in ([s[1] for s in S]+T+L):
3760 g.add(x)
3761 return g
3762@@ -1329,3 +1491,175 @@
3763 d.add(pc)
3764
3765 return d
3766+
3767+def sample5():
3768+ "Make a pie with side labels."
3769+
3770+ d = Drawing(400, 200)
3771+
3772+ pc = Pie()
3773+ pc.x = 125
3774+ pc.y = 25
3775+
3776+ pc.data = [7, 1, 1, 1, 1, 2]
3777+ pc.labels = ['example1', 'example2', 'example3', 'example4', 'example5', 'example6']
3778+ pc.sideLabels = 1
3779+
3780+ pc.width = 150
3781+ pc.height = 150
3782+ pc.slices.strokeWidth=1#0.5
3783+ pc.slices[0].fillColor = colors.steelblue
3784+ pc.slices[1].fillColor = colors.thistle
3785+ pc.slices[2].fillColor = colors.cornflower
3786+ pc.slices[3].fillColor = colors.lightsteelblue
3787+ pc.slices[4].fillColor = colors.aquamarine
3788+ pc.slices[5].fillColor = colors.cadetblue
3789+
3790+ d.add(pc)
3791+
3792+ return d
3793+
3794+def sample6():
3795+
3796+ "Illustrates the pie moving to leave space for the left labels"
3797+
3798+ d = Drawing(400, 200)
3799+
3800+ pc = Pie()
3801+ "The x value of the pie chart is 0"
3802+ pc.x = 0
3803+ pc.y = 25
3804+
3805+ pc.data = [74, 1, 1, 1, 1, 22]
3806+ pc.labels = ['example1', 'example2', 'example3', 'example4', 'example5', 'example6']
3807+ pc.sideLabels = 1
3808+
3809+ pc.width = 150
3810+ pc.height = 150
3811+ pc.slices.strokeWidth=1#0.5
3812+ pc.slices[0].fillColor = colors.steelblue
3813+ pc.slices[1].fillColor = colors.thistle
3814+ pc.slices[2].fillColor = colors.cornflower
3815+ pc.slices[3].fillColor = colors.lightsteelblue
3816+ pc.slices[4].fillColor = colors.aquamarine
3817+ pc.slices[5].fillColor = colors.cadetblue
3818+
3819+ l = Line(0,0,0,200)
3820+
3821+ d.add(pc)
3822+ d.add(l)
3823+
3824+ return d
3825+
3826+def sample7():
3827+
3828+ "Case with overlapping pointers"
3829+
3830+ d = Drawing(400, 200)
3831+
3832+ pc = Pie()
3833+ pc.y = 50
3834+ pc.x = 150
3835+ pc.width = 100
3836+ pc.height = 100
3837+
3838+ pc.data = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
3839+ pc.labels = ['example1', 'example2', 'example3', 'example4', 'example5', 'example6', 'example7',
3840+ 'example8', 'example9', 'example10', 'example11', 'example12', 'example13', 'example14',
3841+ 'example15', 'example16', 'example17', 'example18', 'example19', 'example20', 'example21',
3842+ 'example22', 'example23', 'example24', 'example25', 'example26', 'example27', 'example28']
3843+ pc.sideLabels = 1
3844+ pc.checkLabelOverlap = 1
3845+ pc.simpleLabels = 0
3846+
3847+
3848+ pc.slices.strokeWidth=1#0.5
3849+ pc.slices[0].fillColor = colors.steelblue
3850+ pc.slices[1].fillColor = colors.thistle
3851+ pc.slices[2].fillColor = colors.cornflower
3852+ pc.slices[3].fillColor = colors.lightsteelblue
3853+ pc.slices[4].fillColor = colors.aquamarine
3854+ pc.slices[5].fillColor = colors.cadetblue
3855+
3856+ d.add(pc)
3857+
3858+ return d
3859+
3860+def sample8():
3861+
3862+ "Case with overlapping labels"
3863+ "Labels overlap if they do not belong to adjacent pie slices due to nature of checkLabelOverlap"
3864+
3865+ d = Drawing(400, 200)
3866+
3867+ pc = Pie()
3868+ pc.y = 50
3869+ pc.x = 150
3870+ pc.width = 100
3871+ pc.height = 100
3872+
3873+ pc.data = [1, 1, 1, 1, 1, 30, 50, 1, 1, 1, 1, 1, 1, 40,20,10]
3874+ pc.labels = ['example1', 'example2', 'example3', 'example4', 'example5', 'example6', 'example7',
3875+ 'example8', 'example9', 'example10', 'example11', 'example12', 'example13', 'example14',
3876+ 'example15', 'example16']
3877+ pc.sideLabels = 1
3878+ pc.checkLabelOverlap = 1
3879+
3880+ pc.slices.strokeWidth=1#0.5
3881+ pc.slices[0].fillColor = colors.steelblue
3882+ pc.slices[1].fillColor = colors.thistle
3883+ pc.slices[2].fillColor = colors.cornflower
3884+ pc.slices[3].fillColor = colors.lightsteelblue
3885+ pc.slices[4].fillColor = colors.aquamarine
3886+ pc.slices[5].fillColor = colors.cadetblue
3887+
3888+ d.add(pc)
3889+
3890+ return d
3891+
3892+def sample9():
3893+
3894+ "Case with overlapping labels"
3895+ "Labels overlap if they do not belong to adjacent pies due to nature of checkLabelOverlap"
3896+
3897+ d = Drawing(400, 200)
3898+
3899+ pc = Pie()
3900+ pc.x = 125
3901+ pc.y = 50
3902+
3903+ pc.data = [41, 20, 40, 15, 20, 30, 50, 15, 25, 35, 25, 20, 30, 40, 20, 30]
3904+ pc.labels = ['example1', 'example2', 'example3', 'example4', 'example5', 'example6', 'example7',
3905+ 'example8', 'example9', 'example10', 'example11', 'example12', 'example13', 'example14',
3906+ 'example15', 'example16']
3907+ pc.sideLabels = 1
3908+ pc.checkLabelOverlap = 1
3909+
3910+ pc.width = 100
3911+ pc.height = 100
3912+ pc.slices.strokeWidth=1#0.5
3913+ pc.slices[0].fillColor = colors.steelblue
3914+ pc.slices[1].fillColor = colors.thistle
3915+ pc.slices[2].fillColor = colors.cornflower
3916+ pc.slices[3].fillColor = colors.lightsteelblue
3917+ pc.slices[4].fillColor = colors.aquamarine
3918+ pc.slices[5].fillColor = colors.cadetblue
3919+
3920+ d.add(pc)
3921+
3922+ return d
3923+
3924+
3925+
3926+if __name__=='__main__':
3927+ """Normally nobody will execute this
3928+
3929+ It's helpful for reportlab developers to put a 'main' block in to execute
3930+ the most recently edited feature.
3931+ """
3932+ drawing = sample7()
3933+ from reportlab.graphics import renderPDF
3934+ renderPDF.drawToFile(drawing, 'side_labelled_pie.pdf', 'Side Labelled Pie')
3935+
3936+
3937+
3938
3939=== modified file 'src/reportlab/graphics/charts/textlabels.py'
3940--- src/reportlab/graphics/charts/textlabels.py 2010-12-06 12:45:44 +0000
3941+++ src/reportlab/graphics/charts/textlabels.py 2013-04-14 00:48:45 +0000
3942@@ -1,7 +1,7 @@
3943-#Copyright ReportLab Europe Ltd. 2000-2004
3944+#Copyright ReportLab Europe Ltd. 2000-2012
3945 #see license.txt for license details
3946 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/textlabels.py
3947-__version__=''' $Id: textlabels.py 3702 2010-04-14 17:13:41Z rgbecker $ '''
3948+__version__=''' $Id: textlabels.py 3959 2012-09-27 14:39:39Z robin $ '''
3949 import string
3950
3951 from reportlab.lib import colors
3952
3953=== modified file 'src/reportlab/graphics/charts/utils.py'
3954--- src/reportlab/graphics/charts/utils.py 2010-12-06 12:45:44 +0000
3955+++ src/reportlab/graphics/charts/utils.py 2013-04-14 00:48:45 +0000
3956@@ -1,13 +1,17 @@
3957-#Copyright ReportLab Europe Ltd. 2000-2004
3958+#Copyright ReportLab Europe Ltd. 2000-2012
3959 #see license.txt for license details
3960 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/charts/utils.py
3961
3962-__version__=''' $Id: utils.py 3746 2010-07-21 10:32:55Z rgbecker $ '''
3963+__version__=''' $Id: utils.py 3959 2012-09-27 14:39:39Z robin $ '''
3964 __doc__="Utilities used here and there."
3965 from time import mktime, gmtime, strftime
3966+from math import log10, pi, floor, sin, cos, sqrt, hypot
3967+import weakref
3968+from reportlab.graphics.shapes import transformPoint, transformPoints, inverse, Ellipse, Group, String, Path
3969+from reportlab.lib.utils import flatten
3970+from reportlab.pdfbase.pdfmetrics import stringWidth
3971
3972 ### Dinu's stuff used in some line plots (likely to vansih).
3973-
3974 def mkTimeTuple(timeString):
3975 "Convert a 'dd/mm/yyyy' formatted string to a tuple for use in the time module."
3976
3977@@ -17,23 +21,17 @@
3978
3979 return tuple(list)
3980
3981-
3982 def str2seconds(timeString):
3983 "Convert a number of seconds since the epoch into a date string."
3984
3985 return mktime(mkTimeTuple(timeString))
3986
3987-
3988 def seconds2str(seconds):
3989 "Convert a date string into the number of seconds since the epoch."
3990
3991 return strftime('%Y-%m-%d', gmtime(seconds))
3992
3993-
3994 ### Aaron's rounding function for making nice values on axes.
3995-
3996-from math import log10
3997-
3998 def nextRoundNumber(x):
3999 """Return the first 'nice round number' greater than or equal to x
4000
4001@@ -72,15 +70,8 @@
4002 else:
4003 return base * 10.0
4004
4005-
4006-### Robin's stuff from rgb_ticks.
4007-
4008-from math import log10, floor
4009-
4010 _intervals=(.1, .2, .25, .5)
4011 _j_max=len(_intervals)-1
4012-
4013-
4014 def find_interval(lo,hi,I=5):
4015 'determine tick parameters for range [lo, hi] using I intervals'
4016
4017@@ -128,7 +119,6 @@
4018 b = b*10
4019 return n, x, ss, lo - n + x - hi
4020
4021-
4022 def find_good_grid(lower,upper,n=(4,5,6,7,8,9), grid=None):
4023 if grid:
4024 t = divmod(lower,grid)[0] * grid
4025@@ -149,7 +139,6 @@
4026 w=z[3]
4027 return t, hi, grid
4028
4029-
4030 def ticks(lower, upper, n=(4,5,6,7,8,9), split=1, percent=0, grid=None, labelVOffset=0):
4031 '''
4032 return tick positions and labels for range lower<=x<=upper
4033@@ -223,9 +212,6 @@
4034 def pairMaverage(data,n=6):
4035 return [(x[0],s) for x,s in zip(data, maverage([x[1] for x in data],n))]
4036
4037-import weakref
4038-from reportlab.graphics.shapes import transformPoint, transformPoints, inverse, Ellipse
4039-from reportlab.lib.utils import flatten
4040 class DrawTimeCollector(object):
4041 '''
4042 generic mechanism for collecting information about nodes at the time they are about to be drawn
4043@@ -311,3 +297,66 @@
4044 pprint.pprint(self._info,f)
4045 finally:
4046 f.close()
4047+
4048+def xyDist( (x0,y0),(x1,y1) ):
4049+ '''return distance between two points'''
4050+ return hypot((x1-x0),(y1-y0))
4051+
4052+def lineSegmentIntersect(
4053+ (x00,y00),(x01,y01),
4054+ (x10,y10),(x11,y11)
4055+ ):
4056+ p = x00,y00
4057+ r = x01-x00,y01-y00
4058+
4059+
4060+ q = x10,y10
4061+ s = x11-x10,y11-y10
4062+
4063+ rs = float(r[0]*s[1]-r[1]*s[0])
4064+ qp = q[0]-p[0],q[1]-p[1]
4065+
4066+ qpr = qp[0]*r[1]-qp[1]*r[0]
4067+ qps = qp[0]*s[1]-qp[1]*s[0]
4068+
4069+ if abs(rs)<1e-8:
4070+ if abs(qpr)<1e-8: return 'collinear'
4071+ return None
4072+
4073+ t = qps/rs
4074+ u = qpr/rs
4075+
4076+ if 0<=t<=1 and 0<=u<=1:
4077+ return p[0]+t*r[0], p[1]+t*r[1]
4078+
4079+def makeCircularString(x, y, radius, angle, text, fontName, fontSize, inside=0, G=None,textAnchor='start'):
4080+ '''make a group with circular text in it'''
4081+ if not G: G = Group()
4082+
4083+ angle %= 360
4084+ pi180 = pi/180
4085+ phi = angle*pi180
4086+ width = stringWidth(text, fontName, fontSize)
4087+ sig = inside and -1 or 1
4088+ hsig = sig*0.5
4089+ sig90 = sig*90
4090+
4091+ if textAnchor!='start':
4092+ if textAnchor=='middle':
4093+ phi += sig*(0.5*width)/radius
4094+ elif textAnchor=='end':
4095+ phi += sig*float(width)/radius
4096+ elif textAnchor=='numeric':
4097+ phi += sig*float(numericXShift(textAnchor,text,width,fontName,fontSize,None))/radius
4098+
4099+ for letter in text:
4100+ width = stringWidth(letter, fontName, fontSize)
4101+ beta = float(width)/radius
4102+ h = Group()
4103+ h.add(String(0, 0, letter, fontName=fontName,fontSize=fontSize,textAnchor="start"))
4104+ h.translate(x+cos(phi)*radius,y+sin(phi)*radius) #translate to radius and angle
4105+ h.rotate((phi-hsig*beta)/pi180-sig90) # rotate as needed
4106+ G.add(h) #add to main group
4107+ phi -= sig*beta #increment
4108+
4109+ return G
4110
4111=== modified file 'src/reportlab/graphics/renderPDF.py'
4112--- src/reportlab/graphics/renderPDF.py 2010-12-06 12:45:44 +0000
4113+++ src/reportlab/graphics/renderPDF.py 2013-04-14 00:48:45 +0000
4114@@ -1,9 +1,9 @@
4115-#Copyright ReportLab Europe Ltd. 2000-2004
4116+#Copyright ReportLab Europe Ltd. 2000-2012
4117 #see license.txt for license details
4118 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/renderPDF.py
4119 # renderPDF - draws Drawings onto a canvas
4120
4121-__version__=''' $Id: renderPDF.py 3751 2010-07-30 09:28:28Z rgbecker $ '''
4122+__version__=''' $Id: renderPDF.py 3959 2012-09-27 14:39:39Z robin $ '''
4123 __doc__="""Render Drawing objects within others PDFs or standalone
4124
4125 Usage::
4126@@ -78,10 +78,11 @@
4127 )
4128
4129 def drawImage(self, image):
4130+ path = image.path
4131 # currently not implemented in other renderers
4132- if image.path and os.path.exists(image.path):
4133+ if path and (hasattr(path,'mode') or os.path.exists(image.path)):
4134 self._canvas.drawInlineImage(
4135- image.path,
4136+ path,
4137 image.x, image.y,
4138 image.width, image.height
4139 )
4140@@ -217,7 +218,12 @@
4141 # self._canvas.setDash(array=value)
4142 elif key == 'strokeDashArray':
4143 if value:
4144- self._canvas.setDash(value)
4145+ if isinstance(value,(list,tuple)) and len(value)==2 and isinstance(value[1],(tuple,list)):
4146+ phase = value[0]
4147+ value = value[1]
4148+ else:
4149+ phase = 0
4150+ self._canvas.setDash(value,phase)
4151 else:
4152 self._canvas.setDash()
4153 elif key == 'fillColor':
4154
4155=== modified file 'src/reportlab/graphics/renderPM.py'
4156--- src/reportlab/graphics/renderPM.py 2010-12-06 12:45:44 +0000
4157+++ src/reportlab/graphics/renderPM.py 2013-04-14 00:48:45 +0000
4158@@ -1,7 +1,7 @@
4159-#Copyright ReportLab Europe Ltd. 2000-2004
4160+#Copyright ReportLab Europe Ltd. 2000-2012
4161 #see license.txt for license details
4162 #history www.reportlab.co.uk/rl-cgi/viewcvs.cgi/rlextra/graphics/Csrc/renderPM/renderP.py
4163-__version__=''' $Id: renderPM.py 3704 2010-04-15 13:41:32Z rgbecker $ '''
4164+__version__=''' $Id: renderPM.py 3959 2012-09-27 14:39:39Z robin $ '''
4165 __doc__="""Render drawing objects in common bitmap formats
4166
4167 Usage::
4168@@ -78,7 +78,13 @@
4169 self._canvas.lineCap = s['strokeLineCap']
4170 self._canvas.lineJoin = s['strokeLineJoin']
4171 da = s['strokeDashArray']
4172- da = da and (0,da) or None
4173+ if not da:
4174+ da = None
4175+ else:
4176+ if not isinstance(da,(list,tuple)):
4177+ da = da,
4178+ if len(da)!=2 or not isinstance(da[1],(list,tuple)):
4179+ da = 0, da #assume phase of 0
4180 self._canvas.dashArray = da
4181 alpha = s['fillOpacity']
4182 if alpha is not None:
4183@@ -117,19 +123,22 @@
4184 self._canvas.line(line.x1,line.y1,line.x2,line.y2)
4185
4186 def drawImage(self, image):
4187- if image.path and os.path.exists(image.path):
4188- if type(image.path) is type(''):
4189- im = _getImage().open(image.path).convert('RGB')
4190- else:
4191- im = image.path.convert('RGB')
4192- srcW, srcH = im.size
4193- dstW, dstH = image.width, image.height
4194- if dstW is None: dstW = srcW
4195- if dstH is None: dstH = srcH
4196- self._canvas._aapixbuf(
4197- image.x, image.y, dstW, dstH,
4198- im.tostring(), srcW, srcH, 3,
4199- )
4200+ path = image.path
4201+ if isinstance(path,basestring):
4202+ if not (path and os.path.isfile(path)): return
4203+ im = _getImage().open(path).convert('RGB')
4204+ elif hasattr(path,'convert'):
4205+ im = path.convert('RGB')
4206+ else:
4207+ return
4208+ srcW, srcH = im.size
4209+ dstW, dstH = image.width, image.height
4210+ if dstW is None: dstW = srcW
4211+ if dstH is None: dstH = srcH
4212+ self._canvas._aapixbuf(
4213+ image.x, image.y, dstW, dstH,
4214+ im.tostring(), srcW, srcH, 3,
4215+ )
4216
4217 def drawCircle(self, circle):
4218 c = self._canvas
4219@@ -658,7 +667,7 @@
4220
4221 save = drawToFile
4222
4223-def test():
4224+def test(verbose=True):
4225 def ext(x):
4226 if x=='tiff': x='tif'
4227 return x
4228@@ -719,7 +728,7 @@
4229 html.append('<a href="%s">python source</a><br>\n' % filename)
4230 elif k=='svg':
4231 html.append('<a href="%s">SVG</a><br>\n' % filename)
4232- print 'wrote',fullpath
4233+ if verbose: print 'wrote',fullpath
4234 except AttributeError:
4235 print 'Problem drawing %s file'%k
4236 raise
4237@@ -731,7 +740,7 @@
4238 if sys.platform=='mac':
4239 from reportlab.lib.utils import markfilename
4240 markfilename(htmlFileName,ext='HTML')
4241- print 'wrote %s' % htmlFileName
4242+ if verbose: print 'wrote %s' % htmlFileName
4243
4244 if __name__=='__main__':
4245 test()
4246
4247=== modified file 'src/reportlab/graphics/renderPS.py'
4248--- src/reportlab/graphics/renderPS.py 2010-12-06 12:45:44 +0000
4249+++ src/reportlab/graphics/renderPS.py 2013-04-14 00:48:45 +0000
4250@@ -1,7 +1,7 @@
4251-#Copyright ReportLab Europe Ltd. 2000-2004
4252+#Copyright ReportLab Europe Ltd. 2000-2012
4253 #see license.txt for license details
4254 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/renderPS.py
4255-__version__=''' $Id: renderPS.py 3695 2010-04-06 16:16:27Z rgbecker $ '''
4256+__version__=''' $Id: renderPS.py 3959 2012-09-27 14:39:39Z robin $ '''
4257 __doc__="""Render drawing objects in Postscript"""
4258
4259 import string, types
4260@@ -186,9 +186,9 @@
4261 """Two notations. pass two numbers, or an array and phase"""
4262 # copied and modified from reportlab.canvas
4263 psoperation = "setdash"
4264- if type(array) == types.IntType or type(array) == types.FloatType:
4265+ if isinstance(array,(float,int)):
4266 self.code_append('[%s %s] 0 %s' % (array, phase, psoperation))
4267- elif type(array) == types.ListType or type(array) == types.TupleType:
4268+ elif isinstance(array,(tuple,list)):
4269 assert phase >= 0, "phase is a length in user space"
4270 textarray = string.join(map(str, array))
4271 self.code_append('[%s] %s %s' % (textarray, phase, psoperation))
4272@@ -833,7 +833,12 @@
4273 self._canvas.setLineJoin(value)
4274 elif key == 'strokeDashArray':
4275 if value:
4276- self._canvas.setDash(value)
4277+ if isinstance(value,(list,tuple)) and len(value)==2 and isinstance(value[1],(tuple,list)):
4278+ phase = value[0]
4279+ value = value[1]
4280+ else:
4281+ phase = 0
4282+ self._canvas.setDash(value,phase)
4283 else:
4284 self._canvas.setDash()
4285 ## elif key == 'stroke_opacity':
4286
4287=== modified file 'src/reportlab/graphics/renderSVG.py'
4288--- src/reportlab/graphics/renderSVG.py 2010-12-06 12:45:44 +0000
4289+++ src/reportlab/graphics/renderSVG.py 2013-04-14 00:48:45 +0000
4290@@ -95,8 +95,9 @@
4291
4292 ### classes ###
4293 class SVGCanvas:
4294- def __init__(self, size=(300,300)):
4295- self.verbose = 0
4296+ def __init__(self, size=(300,300), encoding='utf-8', verbose=0):
4297+ self.verbose = verbose
4298+ self.encoding = encoding
4299 self.width, self.height = self.size = size
4300 # self.height = size[1]
4301 self.code = []
4302@@ -126,11 +127,16 @@
4303 self.svg = self.doc.documentElement
4304 self.svg.setAttribute("width", str(size[0]))
4305 self.svg.setAttribute("height", str(self.height))
4306+ self.svg.setAttribute("preserveAspectRatio", "xMinYMin meet")
4307+ self.svg.setAttribute("viewBox", "0 0 %d %d" % (self.width, self.height))
4308
4309 #these suggested by Tim Roberts, as updated by peter@maubp.freeserve.co.uk
4310 self.svg.setAttribute("xmlns", "http://www.w3.org/2000/svg")
4311 self.svg.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink")
4312 self.svg.setAttribute("version", "1.0")
4313+
4314+
4315+
4316 #self.svg.setAttribute("baseProfile", "full") #disliked in V 1.0
4317 title = self.doc.createElement('title')
4318 text = self.doc.createTextNode('...')
4319@@ -163,12 +169,12 @@
4320 self.currGroup = self.groupTree
4321
4322 def save(self, fn=None):
4323- if isinstance(fn,str):
4324+ if type(fn) in types.StringTypes:
4325 f = open(fn, 'w')
4326 else:
4327 f = fn
4328
4329- f.write(self.doc.toprettyxml(indent=" "))
4330+ f.write(self.doc.toprettyxml(indent=" ",encoding=self.encoding))
4331
4332 if f is not fn:
4333 f.close()
4334@@ -253,9 +259,9 @@
4335 def setDash(self, array=[], phase=0):
4336 """Two notations. Pass two numbers, or an array and phase."""
4337
4338- if type(array) in (types.IntType, types.FloatType):
4339+ if isinstance(array,(float,int)):
4340 self.style['stroke-dasharray'] = ', '.join(map(str, ([array, phase])))
4341- elif type(array) in (types.ListType, types.TupleType) and len(array) > 0:
4342+ elif isinstance(array,(tuple,list)) and len(array) > 0:
4343 assert phase >= 0, "phase is a length in user space"
4344 self.style['stroke-dasharray'] = ', '.join(map(str, (array+[phase])))
4345
4346@@ -754,7 +760,12 @@
4347 self._canvas.setLineJoin(value)
4348 elif key == 'strokeDashArray':
4349 if value:
4350- self._canvas.setDash(value)
4351+ if isinstance(value,(list,tuple)) and len(value)==2 and isinstance(value[1],(tuple,list)):
4352+ phase = value[0]
4353+ value = value[1]
4354+ else:
4355+ phase = 0
4356+ self._canvas.setDash(value,phase)
4357 else:
4358 self._canvas.setDash()
4359 elif key == 'fillColor':
4360
4361=== modified file 'src/reportlab/graphics/renderbase.py'
4362--- src/reportlab/graphics/renderbase.py 2010-12-06 12:45:44 +0000
4363+++ src/reportlab/graphics/renderbase.py 2013-04-14 00:48:45 +0000
4364@@ -1,4 +1,4 @@
4365-#Copyright ReportLab Europe Ltd. 2000-2004
4366+#Copyright ReportLab Europe Ltd. 2000-2012
4367 #see license.txt for license details
4368 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/renderbase.py
4369
4370
4371=== modified file 'src/reportlab/graphics/shapes.py'
4372--- src/reportlab/graphics/shapes.py 2010-12-06 12:45:44 +0000
4373+++ src/reportlab/graphics/shapes.py 2013-04-14 00:48:45 +0000
4374@@ -1,12 +1,12 @@
4375-#Copyright ReportLab Europe Ltd. 2000-2004
4376+#Copyright ReportLab Europe Ltd. 2000-2012
4377 #see license.txt for license details
4378 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/shapes.py
4379
4380-__version__=''' $Id: shapes.py 3751 2010-07-30 09:28:28Z rgbecker $ '''
4381+__version__=''' $Id: shapes.py 3959 2012-09-27 14:39:39Z robin $ '''
4382 __doc__='''Core of the graphics library - defines Drawing and Shapes'''
4383
4384 import string, os, sys
4385-from math import pi, cos, sin, tan
4386+from math import pi, cos, sin, tan, sqrt
4387 from types import FloatType, IntType, ListType, TupleType, StringType, InstanceType
4388 from pprint import pprint
4389
4390@@ -210,6 +210,59 @@
4391 yMax = y2
4392 return (xMin, yMin, xMax, yMax)
4393
4394+def _getBezierExtrema(y0,y1,y2,y3):
4395+ '''
4396+ this is used to find if a curveTo path operator has extrema in its range
4397+ The curveTo operator is defined by the points y0, y1, y2, y3
4398+
4399+ B(t):=(1-t)^3*y0+3*(1-t)^2*t*y1+3*(1-t)*t^2*y2+t^3*y3
4400+ :=t^3*(y3-3*y2+3*y1-y0)+t^2*(3*y2-6*y1+3*y0)+t*(3*y1-3*y0)+y0
4401+ and is a cubic bezier curve.
4402+
4403+ The differential is a quadratic
4404+ t^2*(3*y3-9*y2+9*y1-3*y0)+t*(6*y2-12*y1+6*y0)+3*y1-3*y0
4405+
4406+ The extrema must be at real roots, r, of the above which lie in 0<=r<=1
4407+
4408+ The quadratic coefficients are
4409+ a=3*y3-9*y2+9*y1-3*y0 b=6*y2-12*y1+6*y0 c=3*y1-3*y0
4410+ or
4411+ a=y3-3*y2+3*y1-y0 b=2*y2-4*y1+2*y0 c=y1-y0 (remove common factor of 3)
4412+ or
4413+ a=y3-3*(y2-y1)-y0 b=2*(y2-2*y1+y0) c=y1-y0
4414+
4415+ The returned value is [y0,x1,x2,y3] where if found x1, x2 are any extremals that were found;
4416+ there can be 0, 1 or 2 extremals
4417+ '''
4418+ a=y3-3*(y2-y1)-y0
4419+ b=2*(y2-2*y1+y0)
4420+ c=y1-y0
4421+ Y = [y0] #the set of points
4422+
4423+ #standard method to find roots of quadratic
4424+ d = b*b - 4*a*c
4425+ if d>=0:
4426+ d = sqrt(d)
4427+ if b<0: d = -d
4428+ q = -0.5*(b+d)
4429+ R = []
4430+ try:
4431+ R.append(q/a)
4432+ except:
4433+ pass
4434+ try:
4435+ R.append(c/q)
4436+ except:
4437+ pass
4438+ b *= 1.5
4439+ c *= 3
4440+ for t in R:
4441+ if 0<=t<=1:
4442+ #real root in range evaluate spline there and add to X
4443+ Y.append(t*(t*(t*a+b)+c)+y0)
4444+ Y.append(y3)
4445+ return Y
4446+
4447 def getPathBounds(points):
4448 n = len(points)
4449 f = lambda i,p = points: p[i]
4450@@ -918,7 +971,7 @@
4451 if op == _CLOSEPATH:
4452 hadClosePath = hadClosePath + 1
4453 if op == _MOVETO:
4454- hadMoveTo = hadMoveTo + 1
4455+ hadMoveTo += 1
4456 return hadMoveTo == hadClosePath
4457
4458 class Path(SolidShape):
4459@@ -962,7 +1015,32 @@
4460 self.operators.append(_CLOSEPATH)
4461
4462 def getBounds(self):
4463- return getPathBounds(self.points)
4464+ points = self.points
4465+ try: #in case this complex algorithm is not yet ready :)
4466+ X = []
4467+ aX = X.append
4468+ eX = X.extend
4469+ Y=[]
4470+ aY = Y.append
4471+ eY = Y.extend
4472+ i = 0
4473+ for op in self.operators:
4474+ nArgs = _PATH_OP_ARG_COUNT[op]
4475+ j = i + nArgs
4476+ if nArgs==2:
4477+ #either moveTo or lineT0
4478+ aX(points[i])
4479+ aY(points[i+1])
4480+ elif nArgs==6:
4481+ #curveTo
4482+ x1,x2,x3 = points[i:j:2]
4483+ eX(_getBezierExtrema(X[-1],x1,x2,x3))
4484+ y1,y2,y3 = points[i+1:j:2]
4485+ eY(_getBezierExtrema(Y[-1],y1,y2,y3))
4486+ i = j
4487+ return min(X),min(Y),max(X),max(Y)
4488+ except:
4489+ return getPathBounds(points)
4490
4491 EmptyClipPath=Path() #special path
4492
4493
4494=== modified file 'src/reportlab/graphics/testdrawings.py'
4495--- src/reportlab/graphics/testdrawings.py 2009-02-22 14:19:44 +0000
4496+++ src/reportlab/graphics/testdrawings.py 2013-04-14 00:48:45 +0000
4497@@ -1,5 +1,5 @@
4498 #!/bin/env python
4499-#Copyright ReportLab Europe Ltd. 2000-2004
4500+#Copyright ReportLab Europe Ltd. 2000-2012
4501 #see license.txt for license details
4502 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/testdrawings.py
4503 __version__=''' $Id $ '''
4504
4505=== modified file 'src/reportlab/graphics/testshapes.py'
4506--- src/reportlab/graphics/testshapes.py 2010-12-06 12:45:44 +0000
4507+++ src/reportlab/graphics/testshapes.py 2013-04-14 00:48:45 +0000
4508@@ -1,5 +1,5 @@
4509 #!/bin/env python
4510-#Copyright ReportLab Europe Ltd. 2000-2004
4511+#Copyright ReportLab Europe Ltd. 2000-2012
4512 #see license.txt for license details
4513 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/testshapes.py
4514
4515@@ -60,7 +60,11 @@
4516 F.append(name)
4517 except:
4518 pass
4519-_setup()
4520+ return F
4521+
4522+for f in _setup():
4523+ if f not in _FONTS:
4524+ _FONTS.append(f)
4525
4526 #########################################################
4527 #
4528@@ -439,8 +443,8 @@
4529 String(10, y, text, fontName=fontName, fontSize = fontSize)))
4530 y -= 5
4531 return maxx, h-y+gap, D
4532- maxx, maxy, D = drawit(F)
4533- if maxx>400 or maxy>200: _,_,D = drawit(F,maxx,maxy)
4534+ maxx, maxy, D = drawit(_FONTS)
4535+ if maxx>400 or maxy>200: _,_,D = drawit(_FONTS,maxx,maxy)
4536 return D
4537
4538 ##def getDrawing14():
4539
4540=== modified file 'src/reportlab/graphics/widgetbase.py'
4541--- src/reportlab/graphics/widgetbase.py 2010-12-06 12:45:44 +0000
4542+++ src/reportlab/graphics/widgetbase.py 2013-04-14 00:48:45 +0000
4543@@ -1,7 +1,7 @@
4544-#Copyright ReportLab Europe Ltd. 2000-2004
4545+#Copyright ReportLab Europe Ltd. 2000-2012
4546 #see license.txt for license details
4547 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgetbase.py
4548-__version__=''' $Id: widgetbase.py 3742 2010-07-06 16:19:30Z rgbecker $ '''
4549+__version__=''' $Id: widgetbase.py 3959 2012-09-27 14:39:39Z robin $ '''
4550 __doc__='''Base class for user-defined graphical widgets'''
4551
4552 import string
4553
4554=== modified file 'src/reportlab/graphics/widgets/__init__.py'
4555--- src/reportlab/graphics/widgets/__init__.py 2009-02-22 14:19:44 +0000
4556+++ src/reportlab/graphics/widgets/__init__.py 2013-04-14 00:48:45 +0000
4557@@ -1,5 +1,5 @@
4558-#Copyright ReportLab Europe Ltd. 2000-2004
4559+#Copyright ReportLab Europe Ltd. 2000-2012
4560 #see license.txt for license details
4561 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgets/__init__.py
4562-__version__=''' $Id: __init__.py 3345 2008-12-12 17:55:22Z damian $ '''
4563+__version__=''' $Id: __init__.py 3959 2012-09-27 14:39:39Z robin $ '''
4564 __doc__='''Some non-chart widgets'''
4565
4566=== modified file 'src/reportlab/graphics/widgets/grids.py'
4567--- src/reportlab/graphics/widgets/grids.py 2010-12-06 12:45:44 +0000
4568+++ src/reportlab/graphics/widgets/grids.py 2013-04-14 00:48:45 +0000
4569@@ -1,7 +1,7 @@
4570-#Copyright ReportLab Europe Ltd. 2000-2004
4571+#Copyright ReportLab Europe Ltd. 2000-2012
4572 #see license.txt for license details
4573 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgets/grids.py
4574-__version__=''' $Id: grids.py 3660 2010-02-08 18:17:33Z damian $ '''
4575+__version__=''' $Id: grids.py 3959 2012-09-27 14:39:39Z robin $ '''
4576
4577 from reportlab.lib import colors
4578 from reportlab.lib.validators import isNumber, isColorOrNone, isBoolean, isListOfNumbers, OneOf, isListOfColors, isNumberOrNone
4579@@ -424,7 +424,13 @@
4580
4581 def centroid(P):
4582 '''compute average point of a set of points'''
4583- return reduce(lambda x,y, fn=float(len(P)): (x[0]+y[0]/fn,x[1]+y[1]/fn),P,(0,0))
4584+ cx = 0
4585+ cy = 0
4586+ for x,y in P:
4587+ cx+=x
4588+ cy+=y
4589+ n = float(len(P))
4590+ return cx/n, cy/n
4591
4592 def rotatedEnclosingRect(P, angle, rect):
4593 '''
4594@@ -485,10 +491,17 @@
4595 path.isClipPath = 1
4596 g = Group()
4597 g.add(path)
4598- rect = ShadedRect(strokeWidth=0,strokeColor=None)
4599+ angle = self.angle
4600+ orientation = 'vertical'
4601+ if angle==180:
4602+ angle = 0
4603+ elif angle in (90,270):
4604+ orientation ='horizontal'
4605+ angle = 0
4606+ rect = ShadedRect(strokeWidth=0,strokeColor=None,orientation=orientation)
4607 for k in 'fillColorStart', 'fillColorEnd', 'numShades', 'cylinderMode':
4608 setattr(rect,k,getattr(self,k))
4609- g.add(rotatedEnclosingRect(P, self.angle, rect))
4610+ g.add(rotatedEnclosingRect(P, angle, rect))
4611 g.add(EmptyClipPath)
4612 path = path.copy()
4613 path.isClipPath = 0
4614
4615=== modified file 'src/reportlab/graphics/widgets/markers.py'
4616--- src/reportlab/graphics/widgets/markers.py 2010-12-06 12:45:44 +0000
4617+++ src/reportlab/graphics/widgets/markers.py 2013-04-14 00:48:45 +0000
4618@@ -1,8 +1,8 @@
4619-#Copyright ReportLab Europe Ltd. 2000-2004
4620+#Copyright ReportLab Europe Ltd. 2000-2012
4621 #see license.txt for license details
4622 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgets/markers.py
4623
4624-__version__=''' $Id: markers.py 3660 2010-02-08 18:17:33Z damian $ '''
4625+__version__=''' $Id: markers.py 3959 2012-09-27 14:39:39Z robin $ '''
4626 __doc__="""This modules defines a collection of markers used in charts.
4627 """
4628
4629
4630=== modified file 'src/reportlab/graphics/widgets/signsandsymbols.py'
4631--- src/reportlab/graphics/widgets/signsandsymbols.py 2010-02-16 23:32:55 +0000
4632+++ src/reportlab/graphics/widgets/signsandsymbols.py 2013-04-14 00:48:45 +0000
4633@@ -1,11 +1,11 @@
4634-#Copyright ReportLab Europe Ltd. 2000-2004
4635+#Copyright ReportLab Europe Ltd. 2000-2012
4636 #see license.txt for license details
4637 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgets/signsandsymbols.py
4638 # signsandsymbols.py
4639 # A collection of new widgets
4640 # author: John Precedo (johnp@reportlab.com)
4641
4642-__version__=''' $Id: signsandsymbols.py 3632 2010-01-14 10:25:06Z rgbecker $ '''
4643+__version__=''' $Id: signsandsymbols.py 3959 2012-09-27 14:39:39Z robin $ '''
4644 __doc__="""This file is a collection of widgets to produce some common signs and symbols.
4645
4646 Widgets include:
4647
4648=== modified file 'src/reportlab/graphics/widgets/table.py'
4649--- src/reportlab/graphics/widgets/table.py 2010-02-16 23:32:55 +0000
4650+++ src/reportlab/graphics/widgets/table.py 2013-04-14 00:48:45 +0000
4651@@ -1,8 +1,8 @@
4652 #!/usr/bin/env python
4653-#Copyright ReportLab Europe Ltd. 2000-2004
4654+#Copyright ReportLab Europe Ltd. 2000-2012
4655 #see license.txt for license details
4656 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/graphics/widgets/grids.py
4657-__version__=''' $Id: table.py 3559 2009-09-22 11:27:25Z meitham $ '''
4658+__version__=''' $Id: table.py 3959 2012-09-27 14:39:39Z robin $ '''
4659
4660 from reportlab.graphics.widgetbase import Widget
4661 from reportlab.graphics.charts.textlabels import Label
4662
4663=== modified file 'src/reportlab/lib/PyFontify.py'
4664--- src/reportlab/lib/PyFontify.py 2010-12-06 12:45:44 +0000
4665+++ src/reportlab/lib/PyFontify.py 2013-04-14 00:48:45 +0000
4666@@ -1,6 +1,6 @@
4667-#Copyright ReportLab Europe Ltd. 2000-2008
4668+#Copyright ReportLab Europe Ltd. 2000-2012
4669 #see license.txt for license details
4670-__version__=''' $Id: PyFontify.py 3660 2010-02-08 18:17:33Z damian $ '''
4671+__version__=''' $Id: PyFontify.py 3959 2012-09-27 14:39:39Z robin $ '''
4672 __doc__="""
4673 Module to analyze Python source code; for syntax coloring tools.
4674
4675
4676=== modified file 'src/reportlab/lib/__init__.py'
4677--- src/reportlab/lib/__init__.py 2010-12-06 12:45:44 +0000
4678+++ src/reportlab/lib/__init__.py 2013-04-14 00:48:45 +0000
4679@@ -1,7 +1,7 @@
4680 #!/bin/env python
4681-#Copyright ReportLab Europe Ltd. 2000-2004
4682+#Copyright ReportLab Europe Ltd. 2000-2012
4683 #see license.txt for license details
4684 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/__init__.py
4685-__version__=''' $Id: __init__.py 3660 2010-02-08 18:17:33Z damian $ '''
4686+__version__=''' $Id: __init__.py 3959 2012-09-27 14:39:39Z robin $ '''
4687 import os
4688 RL_DEBUG = 'RL_DEBUG' in os.environ
4689
4690=== modified file 'src/reportlab/lib/abag.py'
4691--- src/reportlab/lib/abag.py 2010-02-16 23:32:55 +0000
4692+++ src/reportlab/lib/abag.py 2013-04-14 00:48:45 +0000
4693@@ -1,7 +1,7 @@
4694-#Copyright ReportLab Europe Ltd. 2000-2010
4695+#Copyright ReportLab Europe Ltd. 2000-2012
4696 #see license.txt for license details
4697 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/abag.py
4698-__version__=''' $Id: abag.py 3623 2009-12-17 16:18:34Z andy $ '''
4699+__version__=''' $Id: abag.py 3959 2012-09-27 14:39:39Z robin $ '''
4700 __doc__='''Data structure to hold a collection of attributes, used by styles.'''
4701 class ABag:
4702 """
4703
4704=== modified file 'src/reportlab/lib/arciv.py'
4705--- src/reportlab/lib/arciv.py 2009-02-22 14:19:44 +0000
4706+++ src/reportlab/lib/arciv.py 2013-04-14 00:48:45 +0000
4707@@ -1,9 +1,9 @@
4708-#copyright ReportLab Europe Limited. 2000-2006
4709+#copyright ReportLab Europe Limited. 2000-2012
4710 #see license.txt for license details
4711 '''
4712 Arciv Stream ciphering
4713 '''
4714-__version__=''' $Id: arciv.py 3386 2009-01-22 14:21:27Z rgbecker $ '''
4715+__version__=''' $Id: arciv.py 3959 2012-09-27 14:39:39Z robin $ '''
4716 from types import StringType
4717 class ArcIV:
4718 '''
4719
4720=== modified file 'src/reportlab/lib/attrmap.py'
4721--- src/reportlab/lib/attrmap.py 2010-12-06 12:45:44 +0000
4722+++ src/reportlab/lib/attrmap.py 2013-04-14 00:48:45 +0000
4723@@ -1,7 +1,7 @@
4724-#Copyright ReportLab Europe Ltd. 2000-2004
4725+#Copyright ReportLab Europe Ltd. 2000-2012
4726 #see license.txt for license details
4727 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/attrmap.py
4728-__version__=''' $Id: attrmap.py 3660 2010-02-08 18:17:33Z damian $ '''
4729+__version__=''' $Id: attrmap.py 3959 2012-09-27 14:39:39Z robin $ '''
4730 __doc__='''Framework for objects whose assignments are checked. Used by graphics.
4731
4732 We developed reportlab/graphics prior to Python 2 and metaclasses. For the
4733
4734=== modified file 'src/reportlab/lib/boxstuff.py'
4735--- src/reportlab/lib/boxstuff.py 2009-02-22 14:19:44 +0000
4736+++ src/reportlab/lib/boxstuff.py 2013-04-14 00:48:45 +0000
4737@@ -1,6 +1,6 @@
4738-#Copyright ReportLab Europe Ltd. 2000-2006
4739+#Copyright ReportLab Europe Ltd. 2000-2012
4740 #see license.txt for license details
4741-__version__=''' $Id: boxstuff.py 3408 2009-01-28 12:25:33Z rptlab $ '''
4742+__version__=''' $Id: boxstuff.py 3959 2012-09-27 14:39:39Z robin $ '''
4743 __doc__='''Utility functions to position and resize boxes within boxes'''
4744
4745 def aspectRatioFix(preserve,anchor,x,y,width,height,imWidth,imHeight):
4746
4747=== modified file 'src/reportlab/lib/codecharts.py'
4748--- src/reportlab/lib/codecharts.py 2009-02-22 14:19:44 +0000
4749+++ src/reportlab/lib/codecharts.py 2013-04-14 00:48:45 +0000
4750@@ -1,4 +1,4 @@
4751-#Copyright ReportLab Europe Ltd. 2000-2004
4752+#Copyright ReportLab Europe Ltd. 2000-2012
4753 #see license.txt for license details
4754 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/codecharts.py
4755 #$Header $
4756
4757=== modified file 'src/reportlab/lib/colors.py'
4758--- src/reportlab/lib/colors.py 2010-12-06 12:45:44 +0000
4759+++ src/reportlab/lib/colors.py 2013-04-14 00:48:45 +0000
4760@@ -1,7 +1,7 @@
4761-#Copyright ReportLab Europe Ltd. 2000-2010
4762+#Copyright ReportLab Europe Ltd. 2000-2012
4763 #see license.txt for license details
4764 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/colors.py
4765-__version__=''' $Id: colors.py 3780 2010-09-17 13:40:59Z rgbecker $ '''
4766+__version__=''' $Id: colors.py 3959 2012-09-27 14:39:39Z robin $ '''
4767 __doc__='''Defines standard colour-handling classes and colour names.
4768
4769 We define standard classes to hold colours in two models: RGB and CMYK.
4770@@ -12,8 +12,34 @@
4771 - pre-built colours used in ReportLab's branding
4772
4773 - various conversion and construction functions
4774+
4775+These tests are here because doctest cannot find them otherwise.
4776+>>> toColor('rgb(128,0,0)')==toColor('rgb(50%,0%,0%)')
4777+True
4778+>>> toColor('rgb(50%,0%,0%)')!=Color(0.5,0,0,1)
4779+True
4780+>>> toColor('hsl(0,100%,50%)')==toColor('rgb(255,0,0)')
4781+True
4782+>>> toColor('hsl(-120,100%,50%)')==toColor('rgb(0,0,255)')
4783+True
4784+>>> toColor('hsl(120,100%,50%)')==toColor('rgb(0,255,0)')
4785+True
4786+>>> toColor('rgba( 255,0,0,0.5)')==Color(1,0,0,0.5)
4787+True
4788+>>> toColor('cmyk(1,0,0,0 )')==CMYKColor(1,0,0,0)
4789+True
4790+>>> toColor('pcmyk( 100 , 0 , 0 , 0 )')==PCMYKColor(100,0,0,0)
4791+True
4792+>>> toColor('cmyka(1,0,0,0,0.5)')==CMYKColor(1,0,0,0,alpha=0.5)
4793+True
4794+>>> toColor('pcmyka(100,0,0,0,0.5)')==PCMYKColor(100,0,0,0,alpha=0.5)
4795+True
4796+>>> toColor('pcmyka(100,0,0,0)')
4797+Traceback (most recent call last):
4798+ ....
4799+ValueError: css color 'pcmyka(100,0,0,0)' has wrong number of components
4800 '''
4801-import math
4802+import math, re
4803 from reportlab.lib.utils import fp_str
4804
4805 class Color:
4806@@ -70,6 +96,14 @@
4807 def hexvala(self):
4808 return '0x%02x%02x%02x%02x' % self.bitmap_rgba()
4809
4810+ def int_rgb(self):
4811+ v = self.bitmap_rgb()
4812+ return v[0]<<16|v[1]<<8|v[2]
4813+
4814+ def int_rgba(self):
4815+ v = self.bitmap_rgba()
4816+ return int((v[0]<<24|v[1]<<16|v[2]<<8|v[3])&0xffffff)
4817+
4818 _cKwds='red green blue alpha'.split()
4819 def cKwds(self):
4820 for k in self._cKwds:
4821@@ -706,6 +740,8 @@
4822 m1 = l*2-m2
4823 return hue2rgb(m1, m2, h+1./3),hue2rgb(m1, m2, h),hue2rgb(m1, m2, h-1./3)
4824
4825+import re
4826+_re_css = re.compile(r'^\s*(pcmyk|cmyk|rgb|hsl)(a|)\s*\(\s*([^)]*)\)\s*$')
4827 class cssParse:
4828 def pcVal(self,v):
4829 v = v.strip()
4830@@ -746,32 +782,16 @@
4831 except:
4832 raise ValueError('bad %s argument value %r in css color %r' % (n,v,self.s))
4833
4834+ _n_c = dict(pcmyk=(4,100,True,False),cmyk=(4,1,True,False),hsl=(3,1,False,True),rgb=(3,1,False,False))
4835+
4836 def __call__(self,s):
4837- s = s.strip()
4838- hsl = s.startswith('hsl')
4839- rgb = s.startswith('rgb')
4840- cmyk = s.startswith('cmyk')
4841- c = 1
4842- if hsl: n = 3
4843- if rgb: n = 3
4844- if cmyk:
4845- n = 4
4846- else:
4847- cmyk = s.startswith('pcmyk')
4848- if cmyk:
4849- n = 5
4850- c = 100
4851- if not (rgb or hsl or cmyk): return None
4852+ n = _re_css.match(s)
4853+ if not n: return
4854 self.s = s
4855- n = s[n:]
4856- ha = n.startswith('a')
4857- n = n[(ha and 1 or 0):].strip()
4858- if not n.startswith('(') or not n.endswith(')'):
4859- raise ValueError('improperly formatted css style color %r' % s)
4860- n = n[1:-1].split(',') #strip parens and split on comma
4861- a = len(n)
4862- b = cmyk and 4 or 3
4863- if ha and a!=(b+1) or not ha and a!=b:
4864+ b,c,cmyk,hsl = self._n_c[n.group(1)]
4865+ ha = n.group(2)
4866+ n = n.group(3).split(',') #strip parens and split on comma
4867+ if len(n)!=(b+(ha and 1 or 0)):
4868 raise ValueError('css color %r has wrong number of components' % s)
4869 if ha:
4870 n,a = n[:b],self.alphaVal(n[b],c)
4871@@ -805,26 +825,6 @@
4872
4873 def __call__(self,arg,default=None):
4874 '''try to map an arbitrary arg to a color instance
4875- >>> toColor('rgb(128,0,0)')==toColor('rgb(50%,0%,0%)')
4876- True
4877- >>> toColor('rgb(50%,0%,0%)')!=Color(0.5,0,0,1)
4878- True
4879- >>> toColor('hsl(0,100%,50%)')==toColor('rgb(255,0,0)')
4880- True
4881- >>> toColor('hsl(-120,100%,50%)')==toColor('rgb(0,0,255)')
4882- True
4883- >>> toColor('hsl(120,100%,50%)')==toColor('rgb(0,255,0)')
4884- True
4885- >>> toColor('rgba(255,0,0,0.5)')==Color(1,0,0,0.5)
4886- True
4887- >>> toColor('cmyk(1,0,0,0)')==CMYKColor(1,0,0,0)
4888- True
4889- >>> toColor('pcmyk(100,0,0,0)')==PCMYKColor(100,0,0,0)
4890- True
4891- >>> toColor('cmyka(1,0,0,0,0.5)')==CMYKColor(1,0,0,0,alpha=0.5)
4892- True
4893- >>> toColor('pcmyka(100,0,0,0,0.5)')==PCMYKColor(100,0,0,0,alpha=0.5)
4894- True
4895 '''
4896 if isinstance(arg,Color): return arg
4897 if isinstance(arg,(tuple,list)):
4898@@ -914,7 +914,6 @@
4899 else: b = black
4900 return linearlyInterpolatedColor(b, c, 0, 1, f)
4901
4902-
4903 def fade(aSpotColor, percentages):
4904 """Waters down spot colors and returns a list of new ones
4905
4906
4907=== modified file 'src/reportlab/lib/corp.py'
4908--- src/reportlab/lib/corp.py 2010-12-06 12:45:44 +0000
4909+++ src/reportlab/lib/corp.py 2013-04-14 00:48:45 +0000
4910@@ -1,7 +1,7 @@
4911 #!/bin/env python
4912-#Copyright ReportLab Europe Ltd. 2000-2004
4913+#Copyright ReportLab Europe Ltd. 2000-2012
4914 #see license.txt for license details
4915-__version__=''' $Id: corp.py 3786 2010-09-29 09:51:54Z rgbecker $ '''
4916+__version__=''' $Id: corp.py 3959 2012-09-27 14:39:39Z robin $ '''
4917 __doc__="""Generate ReportLab logo in a variety of sizes and formats.
4918
4919
4920
4921=== modified file 'src/reportlab/lib/enums.py'
4922--- src/reportlab/lib/enums.py 2009-02-22 14:19:44 +0000
4923+++ src/reportlab/lib/enums.py 2013-04-14 00:48:45 +0000
4924@@ -1,7 +1,7 @@
4925-#Copyright ReportLab Europe Ltd. 2000-2004
4926+#Copyright ReportLab Europe Ltd. 2000-2012
4927 #see license.txt for license details
4928 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/enums.py
4929-__version__=''' $Id: enums.py 3342 2008-12-12 15:55:34Z andy $ '''
4930+__version__=''' $Id: enums.py 3959 2012-09-27 14:39:39Z robin $ '''
4931 __doc__="""
4932 Container for constants. Hardly used!
4933 """
4934
4935=== modified file 'src/reportlab/lib/extformat.py'
4936--- src/reportlab/lib/extformat.py 2010-12-06 12:45:44 +0000
4937+++ src/reportlab/lib/extformat.py 2013-04-14 00:48:45 +0000
4938@@ -1,6 +1,6 @@
4939-#Copyright ReportLab Europe Ltd. 2000-2010
4940+#Copyright ReportLab Europe Ltd. 2000-2012
4941 #see license.txt for license details
4942-__version__='''$Id: extformat.py 3665 2010-02-09 15:55:45Z rgbecker $'''
4943+__version__='''$Id: extformat.py 3959 2012-09-27 14:39:39Z robin $'''
4944 __doc__='''Apparently not used anywhere, purpose unknown!'''
4945 from tokenize import tokenprog
4946 import sys
4947
4948=== modified file 'src/reportlab/lib/fontfinder.py'
4949--- src/reportlab/lib/fontfinder.py 2010-12-06 12:45:44 +0000
4950+++ src/reportlab/lib/fontfinder.py 2013-04-14 00:48:45 +0000
4951@@ -1,6 +1,6 @@
4952-#Copyright ReportLab Europe Ltd. 2000-2007
4953+#Copyright ReportLab Europe Ltd. 2000-2012
4954 #see license.txt for license details
4955-__version__=''' $Id: fontfinder.py 3660 2010-02-08 18:17:33Z damian $ '''
4956+__version__=''' $Id: fontfinder.py 3959 2012-09-27 14:39:39Z robin $ '''
4957
4958 #modification of users/robin/ttflist.py.
4959 __doc__="""This provides some general-purpose tools for finding fonts.
4960
4961=== modified file 'src/reportlab/lib/fonts.py'
4962--- src/reportlab/lib/fonts.py 2010-12-06 12:45:44 +0000
4963+++ src/reportlab/lib/fonts.py 2013-04-14 00:48:45 +0000
4964@@ -1,8 +1,8 @@
4965 #!/bin/env python
4966-#Copyright ReportLab Europe Ltd. 2000-2004
4967+#Copyright ReportLab Europe Ltd. 2000-2012
4968 #see license.txt for license details
4969 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/fonts.py
4970-__version__=''' $Id: fonts.py 3702 2010-04-14 17:13:41Z rgbecker $ '''
4971+__version__=''' $Id: fonts.py 3959 2012-09-27 14:39:39Z robin $ '''
4972 __doc__='''Utilities to associate bold and italic versions of fonts into families
4973
4974 Bold, italic and plain fonts are usually implemented in separate disk files;
4975
4976=== modified file 'src/reportlab/lib/formatters.py'
4977--- src/reportlab/lib/formatters.py 2008-10-19 23:16:31 +0000
4978+++ src/reportlab/lib/formatters.py 2013-04-14 00:48:45 +0000
4979@@ -1,9 +1,9 @@
4980 #!/bin/env python
4981-#Copyright ReportLab Europe Ltd. 2000-2004
4982+#Copyright ReportLab Europe Ltd. 2000-2012
4983 #see license.txt for license details
4984 #history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/lib/formatters.py
4985 __all__=('Formatter','DecimalFormatter')
4986-__version__=''' $Id: formatters.py 3155 2007-10-05 10:55:52Z rgbecker $ '''
4987+__version__=''' $Id: formatters.py 3959 2012-09-27 14:39:39Z robin $ '''
4988 __doc__="""
4989 These help format numbers and dates in a user friendly way.
4990 Used by the graphics framework.
4991
4992=== modified file 'src/reportlab/lib/geomutils.py'
4993--- src/reportlab/lib/geomutils.py 2009-02-22 14:19:44 +0000
4994+++ src/reportlab/lib/geomutils.py 2013-04-14 00:48:45 +0000
4995@@ -1,6 +1,6 @@
4996-#Copyright ReportLab Europe Ltd. 2000-2006
4997+#Copyright ReportLab Europe Ltd. 2000-2012
4998 #see license.txt for license details
4999-__version__=''' $Id: geomutils.py 3355 2009-01-08 14:58:44Z jonas $ '''
5000+__version__=''' $Id: geomutils.py 3959 2012-09-27 14:39:39Z robin $ '''
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: