You can subscribe to this list here.
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(27) |
Jun
(63) |
Jul
(17) |
Aug
(58) |
Sep
(7) |
Oct
(9) |
Nov
(3) |
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 |
Jan
(16) |
Feb
(5) |
Mar
(8) |
Apr
(3) |
May
(9) |
Jun
(7) |
Jul
(11) |
Aug
(1) |
Sep
(5) |
Oct
(33) |
Nov
(21) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(43) |
Mar
(36) |
Apr
(22) |
May
(69) |
Jun
(76) |
Jul
(66) |
Aug
(53) |
Sep
(39) |
Oct
(62) |
Nov
(28) |
Dec
(16) |
2015 |
Jan
(7) |
Feb
(2) |
Mar
(51) |
Apr
(97) |
May
(58) |
Jun
(20) |
Jul
(8) |
Aug
(5) |
Sep
(5) |
Oct
(27) |
Nov
(28) |
Dec
(43) |
2016 |
Jan
(17) |
Feb
(4) |
Mar
(12) |
Apr
(5) |
May
(15) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <nik...@us...> - 2016-01-11 14:48:00
|
Revision: 2463 http://sourceforge.net/p/jsbml/code/2463 Author: niko-rodrigue Date: 2016-01-11 14:47:58 +0000 (Mon, 11 Jan 2016) Log Message: ----------- sorting the input files to have them in the right order compared to the input Modified Paths: -------------- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java Modified: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java =================================================================== --- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:38:00 UTC (rev 2462) +++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:47:58 UTC (rev 2463) @@ -26,6 +26,7 @@ import java.io.FileFilter; import java.nio.file.Files; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -72,6 +73,8 @@ files = new File[1]; files[0] = argsAsFile; } + + Arrays.sort(files); long init = Calendar.getInstance().getTimeInMillis(); List<String> differences = new ArrayList<String>(); @@ -83,7 +86,6 @@ for (File file : files) { String fileName = file.getAbsolutePath(); - // read the mathml, infix math input and expected output. byte[] encoded = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2016-01-11 14:38:03
|
Revision: 2462 http://sourceforge.net/p/jsbml/code/2462 Author: niko-rodrigue Date: 2016-01-11 14:38:00 +0000 (Mon, 11 Jan 2016) Log Message: ----------- modified the output produce by the infix formula reading/writing test class Modified Paths: -------------- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java Modified: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java =================================================================== --- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-10 16:05:51 UTC (rev 2461) +++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2016-01-11 14:38:00 UTC (rev 2462) @@ -25,7 +25,9 @@ import java.io.File; import java.io.FileFilter; import java.nio.file.Files; +import java.util.ArrayList; import java.util.Calendar; +import java.util.List; import org.sbml.jsbml.ASTNode; import org.sbml.jsbml.xml.XMLNode; @@ -72,7 +74,11 @@ } long init = Calendar.getInstance().getTimeInMillis(); + List<String> differences = new ArrayList<String>(); + List<String> difference2s = new ArrayList<String>(); int nbEquals = 0; + int nbEqualsIgnoreSpace = 0; + int nbTests = 0; for (File file : files) { @@ -98,6 +104,8 @@ continue; } + nbTests++; + for (int i = 0; i < 2; i++) { XMLNode xmlNode = astNode.getSemanticsAnnotation(i); @@ -122,13 +130,28 @@ System.out.println("Infix input = '" + infixInput + "'"); System.out.println("Infix output = '" + infixOutput + "'"); - System.out.println("Infix expected output = '" + infixExpectedOutput + "'"); + System.out.print("Infix expected output = '" + infixExpectedOutput + "'"); + boolean different = true; + if (infixOutput != null && infixOutput.equals(infixExpectedOutput)) { nbEquals++; - System.out.println("#########################################################"); + System.out.print(" ###"); + different = false; } - + if (infixOutput != null && infixOutput.replace(" ", "").equals(infixExpectedOutput.replace(" ", ""))) { + nbEqualsIgnoreSpace++; + System.out.println(" @@@"); + different = false; + } + System.out.println("\n"); + + if (different) { + differences.add("input= '" + infixInput + "', output = '" + infixOutput + "' (expected output = '" + infixExpectedOutput + "')"); + } + if (different && (infixInput.indexOf("%") == -1) && (infixExpectedOutput.indexOf("arc") == -1)) { + difference2s.add("input= '" + infixInput + "', output = '" + infixOutput + "' (expected output = '" + infixExpectedOutput + "')"); + } } catch (Exception e) { @@ -138,7 +161,9 @@ } - System.out.println("Nb test where we have the same output = " + nbEquals); + System.out.println("Nb tests where we have the same output without considering spaces = " + nbEqualsIgnoreSpace + " / " + nbTests + + " (" + (nbTests - nbEqualsIgnoreSpace) + " failed tests)"); + System.out.println("Nb tests where we have the same output, including spaces = " + nbEquals + " (nb tests = " + nbTests + ")"); long end = Calendar.getInstance().getTimeInMillis(); long nbSecondes = (end - init)/1000; @@ -148,5 +173,18 @@ } else { System.out.println("It took " + nbSecondes + " secondes."); } + + if (differences.size() > 0) { + System.out.println("\n\n List of differences: \n"); + + for (String difference : differences) { + System.out.println(difference); + } + } + + if (difference2s.size() > 0) { + System.out.println("\n\nNb tests where we don't have the same output (excluding modulo and trigonometric operators) = " + difference2s.size() + + " (nb tests = " + nbTests + ")"); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2016-01-10 16:05:54
|
Revision: 2461 http://sourceforge.net/p/jsbml/code/2461 Author: andreas-draeger Date: 2016-01-10 16:05:51 +0000 (Sun, 10 Jan 2016) Log Message: ----------- * Improved an error message. * Added convenient functions to Curve in Layout and to Group in Groups. * Added static function parseMathML in ASTNode as requested by Jason Zwolak. * Removed Java 8 dependency in TestSemanticsMathML because JSBML should be compatible with Java 6 for now. * Added a type hierarchy graph for Multi. Modified Paths: -------------- trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml trunk/core/src/org/sbml/jsbml/ASTNode.java trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java Added Paths: ----------- trunk/extensions/multi/doc/img/type_hierarchy.pdf Modified: trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml =================================================================== --- trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/core/resources/org/sbml/jsbml/resources/cfg/Messages.xml 2016-01-10 16:05:51 UTC (rev 2461) @@ -34,7 +34,7 @@ <entry key="SBMLCoreParser.instanciationError">The element ''{0}'' could not be instanciated as a Java object!</entry> <entry key="SBMLCoreParser.namespaceIgnored">Namespace ignored on ''{0}''! {1} = {2}</entry> - <entry key="SBMLCoreParser.reactionWithoutParticipantsError">The reaction ''{0}'' does not contain any reactants or products.</entry> + <entry key="SBMLCoreParser.reactionWithoutParticipantsError">The reaction ''{0}'' does neither contain any reactants nor products.</entry> <entry key="SBMLCoreParser.unknownAttributeOnElement">Could not recognize the attribute ''{0}'' on the element {1}. Please check the specification for SBML.</entry> <entry key="SBMLCoreParser.unknownElement">The element ''{0}'' is not recognized.</entry> <entry key="SBMLCoreParser.unknownReferenceError1">No {0} matches the {1} ''{2}'' of {3} ''{4}''.</entry> Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2016-01-10 16:05:51 UTC (rev 2461) @@ -374,10 +374,12 @@ */ TIMES, /** - * MathML markup can be combined with other markup languages, and these mixing constructions are realized by the semantic - * annotation elements. The semantic annotation elements provide an important tool for making associations between - * alternate representations of an expression, and for associating semantic properties and other attributions with - * a MathML expression. + * MathML markup can be combined with other markup languages, and these + * mixing constructions are realized by the semantic annotation elements. + * The semantic annotation elements provide an important tool for making + * associations between alternate representations of an expression, and for + * associating semantic properties and other attributions with a MathML + * expression. */ SEMANTICS, /** @@ -1091,6 +1093,15 @@ } /** + * @param mathML a {@link String} in MathML format. + * @return An {@link ASTNode} representation of the given MathML {@link String}. + * @see #readMathMLFromString(String) + */ + public static ASTNode parseMathML(String mathML) { + return readMathMLFromString(mathML); + } + + /** * Creates a piecewise {@link ASTNode}. * * <p>At least one {@link ASTNode} must be given @@ -1402,8 +1413,8 @@ * XMLNode that will hold the content of the 'semantics' mathML element. */ private List<XMLNode> semanticsAnnotationList; - - + + /** * Tells if the type attribute of the cn element was set and we need to * write it back or if it is set to the default (REAL). @@ -1504,7 +1515,7 @@ className = astNode.className; encoding = astNode.encoding; style = astNode.style; - + if (astNode.getChildCount() > 0) { for (ASTNode child : astNode.listOfNodes) { ASTNode c = child.clone(); @@ -1512,10 +1523,10 @@ listOfNodes.add(c); } } - + if (astNode.semanticsAnnotationList != null) { semanticsAnnotationList = new ArrayList<XMLNode>(); - + for (XMLNode semanticsAnnotation : astNode.semanticsAnnotationList) { semanticsAnnotationList.add(semanticsAnnotation.clone()); } @@ -2294,7 +2305,7 @@ if (equal && isSetUnits()) { equal &= getUnits().equals(ast.getUnits()); } - + // TODO - semanticsAnnotationList not part of equals or hashcode ? } return equal; @@ -2379,7 +2390,7 @@ @Override public TreeNode getChildAt(int i) { return getChild(i); - + // TODO - add semantics XMLNode ?? } @@ -2389,8 +2400,8 @@ @Override public int getChildCount() { return listOfNodes == null ? 0 : listOfNodes.size(); - - // TODO - add semantics XMLNode ?? + + // TODO - add semantics XMLNode ?? } /** @@ -2836,7 +2847,7 @@ } // TODO - semanticsAnnotationList not part of equals or hashcode ? - + return hashCode; } @@ -3152,7 +3163,7 @@ || type == Type.RELATIONAL_LT || type == Type.RELATIONAL_NEQ; } - + /** * Return true if this node contain some semantics annotations. * @@ -3162,8 +3173,8 @@ public boolean isSemantics() { return getNumSemanticsAnnotations() > 0; } - - + + /** * @return */ @@ -4403,7 +4414,8 @@ } /** - * Adds the given {@link XMLNode} as a MathML <code><semantics></code> element to this {@link ASTNode}. + * Adds the given {@link XMLNode} as a MathML {@code <semantics>} + * element to this {@link ASTNode}. * * <p> * The {@code <semantics>} element is a MathML 2.0 construct @@ -4427,12 +4439,12 @@ if (semanticsAnnotationList == null) { semanticsAnnotationList = new ArrayList<XMLNode>(); } - + semanticsAnnotationList.add(semanticsAnnotation); - + return semanticsAnnotation; } - + /** * Gets the number of <em>semantic annotation</em> elements inside this node. * @@ -4450,7 +4462,7 @@ * * @return the number of annotations of this {@link ASTNode}. * @see ASTNode#addSemanticsAnnotation(XMLNode semanticsAnnotation) - */ + */ public int getNumSemanticsAnnotations() { if (semanticsAnnotationList == null) { return 0; @@ -4479,7 +4491,7 @@ * {@link ASTNode#getNumSemanticsAnnotations()} * <code>- 1</code> or n < 0). * @see ASTNode#addSemanticsAnnotation(XMLNode sAnnotation) - */ + */ public XMLNode getSemanticsAnnotation(int n) { if (semanticsAnnotationList == null || n < 0 || (n > (getNumSemanticsAnnotations() -1))) { return null; @@ -4487,7 +4499,7 @@ return semanticsAnnotationList.get(n); } - + /** * Returns the list of semantics annotations of this node. * @@ -4496,8 +4508,8 @@ public List<XMLNode> getListOfSemanticsAnnotations() { return semanticsAnnotationList; } - + // TODO - removeSemanticsAnnotation // TODO - unsetsemanticsAnnotation - + } Modified: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java =================================================================== --- trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2016-01-10 16:05:51 UTC (rev 2461) @@ -19,7 +19,27 @@ * and also available online as <http://sbml.org/Software/JSBML/License>. * ---------------------------------------------------------------------------- */ - +/* + * $Id$ + * $URL$ + * ---------------------------------------------------------------------------- + * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML> + * for the latest version of JSBML and more information about SBML. + * + * Copyright (C) 2009-2015 jointly by the following organizations: + * 1. The University of Tuebingen, Germany + * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK + * 3. The California Institute of Technology, Pasadena, CA, USA + * 4. The University of California, San Diego, La Jolla, CA, USA + * 5. The Babraham Institute, Cambridge, UK + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. A copy of the license agreement is provided + * in the file named "LICENSE.txt" included with this software distribution + * and also available online as <http://sbml.org/Software/JSBML/License>. + * ---------------------------------------------------------------------------- + */ package org.sbml.jsbml.test; import javax.xml.stream.XMLStreamException; @@ -29,10 +49,19 @@ import org.sbml.jsbml.SBMLException; import org.sbml.jsbml.SBMLWriter; - +/** + * + * @author Nicolas Rodriguez + * @version $Rev$ + * @since 1.1 + */ public class TestSemanticsMathML { - public static void main(String[] args) + /** + * + * @param args + */ + public static void main(String[] args) { String mathml = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">" + " <semantics>" @@ -45,25 +74,28 @@ ASTNode node = ASTNode.readMathMLFromString(mathml); - + System.out.println("nb semantic annotations = " + node.getNumSemanticsAnnotations()); - + System.out.println(node.toMathML()); - + SBMLDocument doc = new SBMLDocument(3, 1); - + doc.createModel().createReaction().createKineticLaw().setMath(node); - + try { System.out.println(new SBMLWriter().writeSBMLToString(doc)); - } catch (SBMLException | XMLStreamException e) { - e.printStackTrace(); + } catch (SBMLException exc) { + exc.printStackTrace(); + } catch (XMLStreamException exc) { + exc.printStackTrace(); } - + int n = doc.checkConsistency(); - + if (n > 0) { doc.printErrors(System.out); } } + } Modified: trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java =================================================================== --- trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/extensions/groups/src/org/sbml/jsbml/ext/groups/Group.java 2016-01-10 16:05:51 UTC (rev 2461) @@ -28,7 +28,9 @@ import org.sbml.jsbml.AbstractNamedSBase; import org.sbml.jsbml.ListOf; +import org.sbml.jsbml.NamedSBase; import org.sbml.jsbml.SBMLException; +import org.sbml.jsbml.SBase; import org.sbml.jsbml.UniqueNamedSBase; /** @@ -42,13 +44,13 @@ /** * This is a collection of possible values for the {@code kind} attribute within - * a {@link Group}. + * a {@link Group}. * */ public enum Kind { /** - * The group represents a class, and its members have an <i>is-a</i> relationship to the group. For example, the - * group could represent a type of molecule such as ATP, and the members could be species located in different + * The group represents a class, and its members have an <i>is-a</i> relationship to the group. For example, the + * group could represent a type of molecule such as ATP, and the members could be species located in different * compartments, thereby establishing that the species are pools of the same molecule in different locations. */ classification, @@ -59,9 +61,9 @@ */ partonomy, /** - * The grouping is merely a collection for convenience, without an implied relationship between the members. + * The grouping is merely a collection for convenience, without an implied relationship between the members. * For example, the group could be used to collect together multiple disparate components of a model—species, - * reactions, events—involved in a particular phenotype, and apply a common annotation rather than having to + * reactions, events—involved in a particular phenotype, and apply a common annotation rather than having to * copy the same annotation to each component individually. */ collection @@ -85,7 +87,7 @@ /** * */ -// removed as unsupported but could be added again in the future private ListOfMemberConstraint listOfMemberConstraints = null; + // removed as unsupported but could be added again in the future private ListOfMemberConstraint listOfMemberConstraints = null; /** * @@ -109,10 +111,10 @@ setKind(group.getKind()); } - // removed as unsupported but could be added again in the future + // removed as unsupported but could be added again in the future // if (group.isSetListOfMemberConstraints()) { -// setListOfMemberConstraints(group.getListOfMemberConstraints().clone()); -// } + // setListOfMemberConstraints(group.getListOfMemberConstraints().clone()); + // } } /** @@ -172,7 +174,9 @@ */ public Member createMemberWithIdRef(String id, String idRef) { Member m = new Member(); - m.setId(id); + if (id != null) { + m.setId(id); + } m.setIdRef(idRef); addMember(m); return m; @@ -187,12 +191,49 @@ */ public Member createMemberWithMetaIdRef(String id, String metaIdRef) { Member m = new Member(); - m.setId(id); + if (id != null) { + m.setId(id); + } m.setMetaIdRef(metaIdRef); addMember(m); return m; } + /** + * @param sbase + * the element that should be referenced as a new member of this + * {@link Group}. + * @return the newly created {@link Member} or {@code null} if the given + * {@link SBase} neither has a metaId nor an id. + * @see #createMember(String, SBase) + */ + public Member creteMember(SBase sbase) { + return createMember(null, sbase); + } + + /** + * @param id + * the identifier to be set for the new {@link Member}, can be + * {@code null}. + * @param sbase + * the element that should be referenced as a new member of this + * {@link Group}. + * @return the newly created {@link Member} or {@code null} if the given + * {@link SBase} neither has a metaId nor an id. + */ + public Member createMember(String id, SBase sbase) { + if (sbase instanceof NamedSBase) { + NamedSBase nsb = (NamedSBase) sbase; + if (nsb.isSetId()) { + return createMemberWithIdRef(id, nsb.getId()); + } + } + if (sbase.isSetMetaId()) { + return createMemberWithMetaIdRef(id, sbase.getMetaId()); + } + return null; + } + /* (non-Javadoc) * @see org.sbml.jsbml.AbstractSBase#getChildAt(int) */ @@ -219,13 +260,13 @@ position++; } - // removed as unsupported but could be added again in the future -// if (isSetListOfMemberConstraints()) { -// if (position == index) { -// return getListOfMemberConstraints(); -// } -// position++; -// } + // removed as unsupported but could be added again in the future + // if (isSetListOfMemberConstraints()) { + // if (position == index) { + // return getListOfMemberConstraints(); + // } + // position++; + // } throw new IndexOutOfBoundsException(MessageFormat.format( resourceBundle.getString("IndexExceedsBoundsException"), index, @@ -243,10 +284,10 @@ if (isSetListOfMembers()) { childCount++; } - // removed as unsupported but could be added again in the future -// if (isSetListOfMemberConstraints()) { -// childCount++; -// } + // removed as unsupported but could be added again in the future + // if (isSetListOfMemberConstraints()) { + // childCount++; + // } return childCount; } @@ -460,15 +501,15 @@ return isSetListOfMembers() ? getListOfMembers().size() : 0; } - // removed as unsupported but could be added again in the future -// /** -// * Returns the number of {@link MemberConstraint}s of this {@link Group}. -// * -// * @return the number of {@link MemberConstraint}s of this {@link Group}. -// */ -// public int getMemberConstraintCount() { -// return isSetListOfMemberConstraints() ? getListOfMemberConstraints().size() : 0; -// } + // removed as unsupported but could be added again in the future + // /** + // * Returns the number of {@link MemberConstraint}s of this {@link Group}. + // * + // * @return the number of {@link MemberConstraint}s of this {@link Group}. + // */ + // public int getMemberConstraintCount() { + // return isSetListOfMemberConstraints() ? getListOfMemberConstraints().size() : 0; + // } /** * Returns the number of {@link Member}s of this {@link Group}. @@ -480,16 +521,16 @@ return getMemberCount(); } - // removed as unsupported but could be added again in the future -// /** -// * Returns the number of {@link MemberConstraint}s of this {@link Group}. -// * -// * @return the number of {@link MemberConstraint}s of this {@link Group}. -// * @libsbml.deprecated same as {@link #getMemberConstraintCount()} -// */ -// public int getNumMemberConstraints() { -// return getMemberConstraintCount(); -// } + // removed as unsupported but could be added again in the future + // /** + // * Returns the number of {@link MemberConstraint}s of this {@link Group}. + // * + // * @return the number of {@link MemberConstraint}s of this {@link Group}. + // * @libsbml.deprecated same as {@link #getMemberConstraintCount()} + // */ + // public int getNumMemberConstraints() { + // return getMemberConstraintCount(); + // } /** * @@ -515,142 +556,142 @@ public boolean isSetKind() { return kind!=null; } - - -// -// /** -// * Returns {@code true}, if listOfMemberConstraints is not null. -// * -// * @return {@code true}, if listOfMemberConstraints is not null, -// * otherwise {@code false} -// */ -// public boolean isSetListOfMemberConstraints() { -// return listOfMemberConstraints != null; -// } -// -// /** -// * Returns the listOfMemberConstraints. Creates it if it is not already existing. -// * -// * @return the listOfMemberConstraints -// */ -// public ListOfMemberConstraint getListOfMemberConstraints() { -// if (!isSetListOfMemberConstraints()) { -// listOfMemberConstraints = new ListOfMemberConstraint(getLevel(), getVersion()); -// listOfMemberConstraints.setPackageVersion(-1); -// // changing the ListOf package name from 'core' to 'groups' -// listOfMemberConstraints.setPackageName(null); -// listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel); -// listOfMemberConstraints.setSBaseListType(ListOf.Type.other); -// registerChild(listOfMemberConstraints); -// } -// return listOfMemberConstraints; -// } -// -// /** -// * Sets the given {@code ListOf<MemberConstraint>}. If listOfMemberConstraints -// * was defined before and contains some elements, they are all unset. -// * -// * @param listOfMemberConstraints -// */ -// public void setListOfMemberConstraints(ListOfMemberConstraint listOfMemberConstraints) { -// unsetListOfMemberConstraints(); -// this.listOfMemberConstraints = listOfMemberConstraints; -// -// if (listOfMemberConstraints != null) { -// listOfMemberConstraints.setPackageVersion(-1); -// // changing the ListOf package name from 'core' to 'groups' -// listOfMemberConstraints.setPackageName(null); -// listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel); -// listOfMemberConstraints.setSBaseListType(ListOf.Type.other); -// -// registerChild(this.listOfMemberConstraints); -// } -// } -// -// /** -// * Returns {@code true}, if listOfMemberConstraints contain at least one element, -// * otherwise {@code false} -// * -// * @return {@code true}, if listOfMemberConstraints contain at least one element, -// * otherwise {@code false} -// */ -// public boolean unsetListOfMemberConstraints() { -// if (isSetListOfMemberConstraints()) { -// ListOf<MemberConstraint> oldMemberConstraints = listOfMemberConstraints; -// listOfMemberConstraints = null; -// oldMemberConstraints.fireNodeRemovedEvent(); -// return true; -// } -// return false; -// } -// -// /** -// * Adds a new {@link MemberConstraint} to the listOfMemberConstraints. -// * <p>The listOfMemberConstraints is initialized if necessary. -// * -// * @param memberConstraint the element to add to the list -// * @return true (as specified by {@link java.util.Collection#add}) -// */ -// public boolean addMemberConstraint(MemberConstraint memberConstraint) { -// return getListOfMemberConstraints().add(memberConstraint); -// } -// -// /** -// * Removes an element from the listOfMemberConstraints. -// * -// * @param memberConstraint the element to be removed from the list -// * @return true if the list contained the specified element -// * @see java.util.List#remove(Object) -// */ -// public boolean removeMemberConstraint(MemberConstraint memberConstraint) { -// if (isSetListOfMemberConstraints()) { -// return getListOfMemberConstraints().remove(memberConstraint); -// } -// return false; -// } -// -// /** -// * Removes an element from the listOfMemberConstraints at the given index. -// * -// * @param i the index where to remove the {@link MemberConstraint} -// * @throws IndexOutOfBoundsException if the listOf is not set or -// * if the index is out of bound (index < 0 || index > list.size) -// */ -// public void removeMemberConstraint(int i) { -// if (!isSetListOfMemberConstraints()) { -// throw new IndexOutOfBoundsException(Integer.toString(i)); -// } -// getListOfMemberConstraints().remove(i); -// } -// -// /** -// * @param id -// */ -// public void removeMemberConstraint(String id) { -// getListOfMemberConstraints().removeFirst(new NameFilter(id)); -// } -// -// /** -// * Creates a new MemberConstraint element and adds it to the ListOfMemberConstraints list -// * @return -// */ -// public MemberConstraint createMemberConstraint() { -// return createMemberConstraint(null); -// } -// -// /** -// * Creates a new {@link MemberConstraint} element and adds it to the ListOfMemberConstraints list -// * @param id -// * -// * @return a new {@link MemberConstraint} element -// */ -// public MemberConstraint createMemberConstraint(String id) { -// MemberConstraint MemberConstraint = new MemberConstraint(id, getLevel(), getVersion()); -// addMemberConstraint(MemberConstraint); -// return MemberConstraint; -// } + // + // /** + // * Returns {@code true}, if listOfMemberConstraints is not null. + // * + // * @return {@code true}, if listOfMemberConstraints is not null, + // * otherwise {@code false} + // */ + // public boolean isSetListOfMemberConstraints() { + // return listOfMemberConstraints != null; + // } + // + // /** + // * Returns the listOfMemberConstraints. Creates it if it is not already existing. + // * + // * @return the listOfMemberConstraints + // */ + // public ListOfMemberConstraint getListOfMemberConstraints() { + // if (!isSetListOfMemberConstraints()) { + // listOfMemberConstraints = new ListOfMemberConstraint(getLevel(), getVersion()); + // listOfMemberConstraints.setPackageVersion(-1); + // // changing the ListOf package name from 'core' to 'groups' + // listOfMemberConstraints.setPackageName(null); + // listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel); + // listOfMemberConstraints.setSBaseListType(ListOf.Type.other); + // registerChild(listOfMemberConstraints); + // } + // return listOfMemberConstraints; + // } + // + // /** + // * Sets the given {@code ListOf<MemberConstraint>}. If listOfMemberConstraints + // * was defined before and contains some elements, they are all unset. + // * + // * @param listOfMemberConstraints + // */ + // public void setListOfMemberConstraints(ListOfMemberConstraint listOfMemberConstraints) { + // unsetListOfMemberConstraints(); + // this.listOfMemberConstraints = listOfMemberConstraints; + // + // if (listOfMemberConstraints != null) { + // listOfMemberConstraints.setPackageVersion(-1); + // // changing the ListOf package name from 'core' to 'groups' + // listOfMemberConstraints.setPackageName(null); + // listOfMemberConstraints.setPackageName(GroupsConstants.shortLabel); + // listOfMemberConstraints.setSBaseListType(ListOf.Type.other); + // + // registerChild(this.listOfMemberConstraints); + // } + // } + // + // /** + // * Returns {@code true}, if listOfMemberConstraints contain at least one element, + // * otherwise {@code false} + // * + // * @return {@code true}, if listOfMemberConstraints contain at least one element, + // * otherwise {@code false} + // */ + // public boolean unsetListOfMemberConstraints() { + // if (isSetListOfMemberConstraints()) { + // ListOf<MemberConstraint> oldMemberConstraints = listOfMemberConstraints; + // listOfMemberConstraints = null; + // oldMemberConstraints.fireNodeRemovedEvent(); + // return true; + // } + // return false; + // } + // + // /** + // * Adds a new {@link MemberConstraint} to the listOfMemberConstraints. + // * <p>The listOfMemberConstraints is initialized if necessary. + // * + // * @param memberConstraint the element to add to the list + // * @return true (as specified by {@link java.util.Collection#add}) + // */ + // public boolean addMemberConstraint(MemberConstraint memberConstraint) { + // return getListOfMemberConstraints().add(memberConstraint); + // } + // + // /** + // * Removes an element from the listOfMemberConstraints. + // * + // * @param memberConstraint the element to be removed from the list + // * @return true if the list contained the specified element + // * @see java.util.List#remove(Object) + // */ + // public boolean removeMemberConstraint(MemberConstraint memberConstraint) { + // if (isSetListOfMemberConstraints()) { + // return getListOfMemberConstraints().remove(memberConstraint); + // } + // return false; + // } + // + // /** + // * Removes an element from the listOfMemberConstraints at the given index. + // * + // * @param i the index where to remove the {@link MemberConstraint} + // * @throws IndexOutOfBoundsException if the listOf is not set or + // * if the index is out of bound (index < 0 || index > list.size) + // */ + // public void removeMemberConstraint(int i) { + // if (!isSetListOfMemberConstraints()) { + // throw new IndexOutOfBoundsException(Integer.toString(i)); + // } + // getListOfMemberConstraints().remove(i); + // } + // + // /** + // * @param id + // */ + // public void removeMemberConstraint(String id) { + // getListOfMemberConstraints().removeFirst(new NameFilter(id)); + // } + // + // /** + // * Creates a new MemberConstraint element and adds it to the ListOfMemberConstraints list + // * @return + // */ + // public MemberConstraint createMemberConstraint() { + // return createMemberConstraint(null); + // } + // + // /** + // * Creates a new {@link MemberConstraint} element and adds it to the ListOfMemberConstraints list + // * @param id + // * + // * @return a new {@link MemberConstraint} element + // */ + // public MemberConstraint createMemberConstraint(String id) { + // MemberConstraint MemberConstraint = new MemberConstraint(id, getLevel(), getVersion()); + // addMemberConstraint(MemberConstraint); + // return MemberConstraint; + // } + + /* (non-Javadoc) * @see org.sbml.jsbml.element.SBase#readAttribute(String attributeName, String prefix, String value) */ @@ -714,7 +755,6 @@ // TODO - add methods to get/set/... the attribute from the ListOfMemberConstraint - @Override public boolean getAllowsChildren() { return true; @@ -728,11 +768,11 @@ final int prime = 31; int result = super.hashCode(); result = prime * result + ((kind == null) ? 0 : kind.hashCode()); - // removed as unsupported but could be added again in the future -// result = prime -// * result -// + ((listOfMemberConstraints == null) ? 0 -// : listOfMemberConstraints.hashCode()); + // removed as unsupported but could be added again in the future + // result = prime + // * result + // + ((listOfMemberConstraints == null) ? 0 + // : listOfMemberConstraints.hashCode()); result = prime * result + ((listOfMembers == null) ? 0 : listOfMembers.hashCode()); return result; @@ -756,14 +796,14 @@ if (kind != other.kind) { return false; } - // removed as unsupported but could be added again in the future -// if (listOfMemberConstraints == null) { -// if (other.listOfMemberConstraints != null) { -// return false; -// } -// } else if (!listOfMemberConstraints.equals(other.listOfMemberConstraints)) { -// return false; -// } + // removed as unsupported but could be added again in the future + // if (listOfMemberConstraints == null) { + // if (other.listOfMemberConstraints != null) { + // return false; + // } + // } else if (!listOfMemberConstraints.equals(other.listOfMemberConstraints)) { + // return false; + // } if (listOfMembers == null) { if (other.listOfMembers != null) { return false; Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Curve.java 2016-01-10 16:05:51 UTC (rev 2461) @@ -123,8 +123,22 @@ } /** - * Creates a new {@link CubicBezier} instance, adds it to this {@link Curve} and returns it. * + * @param start + * @param end + * @return + */ + public LineSegment createLineSegment(Point start, Point end) { + LineSegment cs = createLineSegment(); + cs.setStart(start); + cs.setEnd(end); + return cs; + } + + /** + * Creates a new {@link CubicBezier} instance, adds it to this {@link Curve}. + * and returns it. + * * @return the new {@link CubicBezier} instance */ public CubicBezier createCubicBezier() { @@ -133,6 +147,22 @@ return cs; } + /** + * + * @param start + * @param basePoint1 + * @param basePoint2 + * @param end + * @return + */ + public CubicBezier createCubicBezier(Point start, Point basePoint1, Point basePoint2, Point end) { + CubicBezier cs = createCubicBezier(); + cs.setStart(start); + cs.setBasePoint1(basePoint1); + cs.setBasePoint2(basePoint2); + cs.setEnd(end); + return cs; + } /* (non-Javadoc) * @see org.sbml.jsbml.AbstractNamedSBase#equals(java.lang.Object) Added: trunk/extensions/multi/doc/img/type_hierarchy.pdf =================================================================== (Binary files differ) Index: trunk/extensions/multi/doc/img/type_hierarchy.pdf =================================================================== --- trunk/extensions/multi/doc/img/type_hierarchy.pdf 2015-12-18 16:01:20 UTC (rev 2460) +++ trunk/extensions/multi/doc/img/type_hierarchy.pdf 2016-01-10 16:05:51 UTC (rev 2461) Property changes on: trunk/extensions/multi/doc/img/type_hierarchy.pdf ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/pdf \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-18 16:01:23
|
Revision: 2460 http://sourceforge.net/p/jsbml/code/2460 Author: niko-rodrigue Date: 2015-12-18 16:01:20 +0000 (Fri, 18 Dec 2015) Log Message: ----------- added a test class to test the expected infix outputs developed by Lucian Added Paths: ----------- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java Added: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java =================================================================== --- trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java (rev 0) +++ trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java 2015-12-18 16:01:20 UTC (rev 2460) @@ -0,0 +1,152 @@ +/* + * $Id$ + * $URL$ + * ---------------------------------------------------------------------------- + * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML> + * for the latest version of JSBML and more information about SBML. + * + * Copyright (C) 2009-2014 jointly by the following organizations: + * 1. The University of Tuebingen, Germany + * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK + * 3. The California Institute of Technology, Pasadena, CA, USA + * 4. The University of California, San Diego, La Jolla, CA, USA + * 5. The Babraham Institute, Cambridge, UK + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. A copy of the license agreement is provided + * in the file named "LICENSE.txt" included with this software distribution + * and also available online as <http://sbml.org/Software/JSBML/License>. + * ---------------------------------------------------------------------------- + */ + +package org.sbml.jsbml.test; + +import java.io.File; +import java.io.FileFilter; +import java.nio.file.Files; +import java.util.Calendar; + +import org.sbml.jsbml.ASTNode; +import org.sbml.jsbml.xml.XMLNode; + + +public class TestInfixReadingWriting { + + + public static void main(String[] args) { + + if (args.length < 1) { + System.out.println( + "Usage: java org.sbml.jsbml.test.TestInfixReadingWriting folder|file"); + System.exit(0); + } + + // this JOptionPane is added here to be able to start visualVM profiling + // before the reading or writing is started. + // JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green."); + + File argsAsFile = new File(args[0]); + File[] files = null; + + if (argsAsFile.isDirectory()) + { + files = argsAsFile.listFiles(new FileFilter() { + + @Override + public boolean accept(File pathname) + { + if (pathname.getName().endsWith(".xml")) + { + return true; + } + + return false; + } + }); + } + else + { + files = new File[1]; + files[0] = argsAsFile; + } + + long init = Calendar.getInstance().getTimeInMillis(); + int nbEquals = 0; + + for (File file : files) + { + String fileName = file.getAbsolutePath(); + + // read the mathml, infix math input and expected output. + + byte[] encoded = null; + String mathMLString = null; + String infixInput = null; + String infixExpectedOutput = null; + + try + { + encoded = Files.readAllBytes(file.toPath()); + mathMLString = new String(encoded, "UTF-8"); + + ASTNode astNode = ASTNode.readMathMLFromString(mathMLString); + String infixOutput = astNode.toFormula(); + + if (astNode.getNumSemanticsAnnotations() != 2) { + System.out.println("!!!!!!!!!! ERROR: for file '" + fileName + "' we found " + astNode.getNumSemanticsAnnotations() + " semantics annotations !"); + continue; + } + + for (int i = 0; i < 2; i++) + { + XMLNode xmlNode = astNode.getSemanticsAnnotation(i); + String encoding = ""; + + if (xmlNode.getName().equals("annotation") && xmlNode.hasAttr("encoding")) + { + encoding = xmlNode.getAttrValue("encoding"); + + if (encoding.equals("infix-input")) + { + infixInput = xmlNode.getChild(0).getCharacters(); + } + else if (encoding.equals("infix-output")) + { + infixExpectedOutput = xmlNode.getChild(0).getCharacters(); + } + } + } + + // compare the different output + + System.out.println("Infix input = '" + infixInput + "'"); + System.out.println("Infix output = '" + infixOutput + "'"); + System.out.println("Infix expected output = '" + infixExpectedOutput + "'"); + + if (infixOutput != null && infixOutput.equals(infixExpectedOutput)) { + nbEquals++; + System.out.println("#########################################################"); + } + + } + catch (Exception e) + { + System.out.println(fileName); + e.printStackTrace(); + } + + } + + System.out.println("Nb test where we have the same output = " + nbEquals); + + long end = Calendar.getInstance().getTimeInMillis(); + long nbSecondes = (end - init)/1000; + + if (nbSecondes > 120) { + System.out.println("It took " + nbSecondes/60 + " minutes."); + } else { + System.out.println("It took " + nbSecondes + " secondes."); + } + } +} Property changes on: trunk/core/test/org/sbml/jsbml/test/TestInfixReadingWriting.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Rev URL \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-18 15:12:03
|
Revision: 2459 http://sourceforge.net/p/jsbml/code/2459 Author: niko-rodrigue Date: 2015-12-18 15:12:01 +0000 (Fri, 18 Dec 2015) Log Message: ----------- implemented the writting of the semantics mathML element for the top level ASTNode Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java Added Paths: ----------- trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java Modified: trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-17 14:53:38 UTC (rev 2458) +++ trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-18 15:12:01 UTC (rev 2459) @@ -39,6 +39,8 @@ import org.sbml.jsbml.SBMLException; import org.sbml.jsbml.SBase; import org.sbml.jsbml.util.StringTools; +import org.sbml.jsbml.xml.XMLNode; +import org.sbml.jsbml.xml.parsers.XMLNodeWriter; import com.ctc.wstx.stax.WstxOutputFactory; @@ -161,9 +163,27 @@ writer.writeCharacters("\n"); writer.setPrefix("math", ASTNode.URI_MATHML_DEFINITION); - + + // if an ASTNode.isSemantics we need to write the enclosing 'semantics' element !! + if (astNode.isSemantics()) { + writer.writeCharacters(compiler.indent); + compiler.indent += " "; + writer.writeStartElement("semantics"); + writer.writeCharacters("\n"); + } + compiler.compile(astNode); + // writing the semantics annotation elements here to write them only for the top level element. + if (astNode.isSemantics()) { + + compiler.compileSemanticAnnotations(astNode); + + writer.writeCharacters(" "); + writer.writeEndElement(); + writer.writeCharacters("\n"); + } + writer.writeEndElement(); writer.writeEndDocument(); writer.close(); @@ -357,6 +377,9 @@ case VECTOR: compileVector(astNode); break; +// case SEMANTICS: +// compileSemantics(astNode); +// break; default: // UNKNOWN: logger.warn("!!!!! I don't know what to do with the node of type " + astNode.getType()); break; @@ -446,7 +469,7 @@ writer.writeCharacters(indent); writer.writeEmptyElement(ASTNode.URI_MATHML_DEFINITION, "exponentiale"); writer.writeCharacters("\n"); - + } catch (XMLStreamException e) { e.printStackTrace(); } @@ -1002,7 +1025,42 @@ } } + /** + * @param node + */ + public void compileSemanticAnnotations(ASTNode node) { + + try { + + if (node.getNumSemanticsAnnotations() > 0) + { + // TODO - use the current 'indent' value to initialize the XMLNodeWriter + XMLNodeWriter xmlNodeWriter = new XMLNodeWriter(writer, 0, 2, ' '); + + for (int i = 0; i < node.getNumSemanticsAnnotations(); i++) + { + XMLNode xmlNode = node.getSemanticsAnnotation(i); + + writer.writeCharacters(indent); + xmlNodeWriter.write(xmlNode); + writer.writeCharacters("\n"); + } + } + } catch (XMLStreamException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + +// private void compileSemantics(ASTNode astNode) { +// // would be needed for ASTNode2 may be ? +// } + + + /** * @param args */ public static void main(String[] args) { Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-17 14:53:38 UTC (rev 2458) +++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-18 15:12:01 UTC (rev 2459) @@ -886,12 +886,15 @@ // All the element should have a namespace. if (elementNamespace != null) { + // TODO - change the way we deal with notes, message and annotation and just use the context object ! If XMLNode, we use the 'anyXML' parser + // it will allow us to deal easily with unknowns XML elements. + parser = initializedParsers.get(elementNamespace); // if the current node is a notes or message element // and the matching ReadingParser is a XMLNodeReader, // we need to set the typeOfNotes variable of the // XMLNodeReader instance. - if (currentNode.getLocalPart().equals("notes") + if (currentNode.getLocalPart().equals("notes") || currentNode.getLocalPart().equals("message") || currentNode.getLocalPart().equals("annotation")) { Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-17 14:53:38 UTC (rev 2458) +++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-18 15:12:01 UTC (rev 2459) @@ -786,6 +786,7 @@ // Creating an SMOutputElement to be sure that the previous nested element tag is closed properly. SMNamespace mathMLNamespace = element.getNamespace(ASTNode.URI_MATHML_DEFINITION, ASTNode.URI_MATHML_PREFIX); SMOutputElement mathElement = element.addElement(mathMLNamespace, "math"); + MathMLXMLStreamCompiler compiler = new MathMLXMLStreamCompiler( writer, createIndentationString(indent + indentCount)); boolean isSBMLNamespaceNeeded = compiler.isSBMLNamespaceNeeded(m.getMath()); @@ -817,8 +818,27 @@ writer.writeCharacters(whitespaces); writer.writeCharacters("\n"); + ASTNode astNode = m.getMath(); + + // if an ASTNode.isSemantics we need to write the enclosing 'semantics' element !! + if (astNode.isSemantics()) { + writer.writeCharacters(whitespaces); + writer.writeStartElement("semantics"); + writer.writeCharacters("\n"); + } + compiler.compile(m.getMath()); + // writing the semantics annotation elements here to write them only for the top level element. + if (astNode.isSemantics()) { + + compiler.compileSemanticAnnotations(astNode); + + writer.writeCharacters(whitespaces); + writer.writeEndElement(); + writer.writeCharacters("\n"); + } + writer.writeCharacters(whitespaces); } } Added: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java =================================================================== --- trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java (rev 0) +++ trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java 2015-12-18 15:12:01 UTC (rev 2459) @@ -0,0 +1,69 @@ +/* + * $Id$ + * $URL$ + * ---------------------------------------------------------------------------- + * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML> + * for the latest version of JSBML and more information about SBML. + * + * Copyright (C) 2009-2014 jointly by the following organizations: + * 1. The University of Tuebingen, Germany + * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK + * 3. The California Institute of Technology, Pasadena, CA, USA + * 4. The University of California, San Diego, La Jolla, CA, USA + * 5. The Babraham Institute, Cambridge, UK + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. A copy of the license agreement is provided + * in the file named "LICENSE.txt" included with this software distribution + * and also available online as <http://sbml.org/Software/JSBML/License>. + * ---------------------------------------------------------------------------- + */ + +package org.sbml.jsbml.test; + +import javax.xml.stream.XMLStreamException; + +import org.sbml.jsbml.ASTNode; +import org.sbml.jsbml.SBMLDocument; +import org.sbml.jsbml.SBMLException; +import org.sbml.jsbml.SBMLWriter; + + +public class TestSemanticsMathML { + + public static void main(String[] args) + { + String mathml = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">" + + " <semantics>" + + " <exponentiale/>" + + " <annotation encoding=\"infix-input\">ExponentialE</annotation>" + + " <annotation encoding=\"infix-output\">exponentiale</annotation>" + + " <annotation-xml encoding=\"infix-output\">exponentiale</annotation-xml>" + + " </semantics>" + + "</math>"; + + + ASTNode node = ASTNode.readMathMLFromString(mathml); + + System.out.println("nb semantic annotations = " + node.getNumSemanticsAnnotations()); + + System.out.println(node.toMathML()); + + SBMLDocument doc = new SBMLDocument(3, 1); + + doc.createModel().createReaction().createKineticLaw().setMath(node); + + try { + System.out.println(new SBMLWriter().writeSBMLToString(doc)); + } catch (SBMLException | XMLStreamException e) { + e.printStackTrace(); + } + + int n = doc.checkConsistency(); + + if (n > 0) { + doc.printErrors(System.out); + } + } +} Property changes on: trunk/core/test/org/sbml/jsbml/test/TestSemanticsMathML.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Rev URL \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-17 14:53:41
|
Revision: 2458 http://sourceforge.net/p/jsbml/code/2458 Author: niko-rodrigue Date: 2015-12-17 14:53:38 +0000 (Thu, 17 Dec 2015) Log Message: ----------- modified a bit the reading of semantics mathml annotations to comply to the expected structure Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/ASTNode.java trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 15:04:43 UTC (rev 2457) +++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-17 14:53:38 UTC (rev 2458) @@ -374,6 +374,13 @@ */ TIMES, /** + * MathML markup can be combined with other markup languages, and these mixing constructions are realized by the semantic + * annotation elements. The semantic annotation elements provide an important tool for making associations between + * alternate representations of an expression, and for associating semantic properties and other attributions with + * a MathML expression. + */ + SEMANTICS, + /** * */ UNKNOWN, @@ -3145,7 +3152,19 @@ || type == Type.RELATIONAL_LT || type == Type.RELATIONAL_NEQ; } + /** + * Return true if this node contain some semantics annotations. + * + * @return true if this node contain some semantics annotations. + * @see #getNumSemanticsAnnotations() + */ + public boolean isSemantics() { + return getNumSemanticsAnnotations() > 0; + } + + + /** * @return */ public boolean isSetClassName() { Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 15:04:43 UTC (rev 2457) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-17 14:53:38 UTC (rev 2458) @@ -26,7 +26,6 @@ import java.util.List; import javax.swing.tree.TreeNode; -import javax.xml.stream.XMLStreamException; import org.apache.log4j.Logger; import org.mangosdk.spi.ProviderFor; @@ -273,29 +272,15 @@ } // if elementName.equals(semantics) add all child elements as semanticsAnnotation to the parent ASTNode ! - if (elementName.equals("semantics")) + if (elementName.equals("annotation") || elementName.equals("annotation-xml")) { TreeNode parentNode = xmlNode.getParent(); if (parentNode instanceof ASTNode) { - // we are at the end of the top level 'semantics' element. - // adding all child elements that are not empty as semanticAnnotation // TODO - keep the top level 'semantics' element if not empty. + // we are at the end of the annotation or annotation-xml elements. + ((ASTNode) parentNode).addSemanticsAnnotation(xmlNode); - for (XMLNode childNode : xmlNode.getChildElements(null, null)) - { - if (childNode.isText() && childNode.getCharacters().trim().length() == 0) { - continue; - } - ((ASTNode) parentNode).addSemanticsAnnotation(childNode); - -// try { -// System.out.println("MathMLStaxParser - processEndElement - semantic annotation = \n" + childNode.toXMLString()); -// } catch (XMLStreamException e) { -// e.printStackTrace(); -// } - } - // System.out.println("MathMLStaxParser - processEndElement - num semantic annotation = " + ((ASTNode) parentNode).getNumSemanticsAnnotations()); } @@ -321,7 +306,8 @@ // add other type of ASTNode in the test ?? if ((astNode.isFunction() || astNode.isOperator() || astNode.isRelational() || astNode.isLogical()) && !elementName.equals("apply") && !elementName.equals("piecewise") - && !elementName.equals("lamdba") && !astNode.getType().equals(ASTNode.Type.LAMBDA)) + && !elementName.equals("lamdba") && !astNode.getType().equals(ASTNode.Type.LAMBDA) + && !elementName.equals("semantics")) { if (logger.isDebugEnabled()) { logger.debug("processEndElement : stack stay the same. ASTNode type = " + astNode.getType()); @@ -381,7 +367,8 @@ if (elementName.equals("math") || elementName.equals("apply") || elementName.equals("sep") || elementName.equals("piece") || elementName.equals("otherwise") - || elementName.equals("bvar") || elementName.equals("degree") || elementName.equals("logbase")) + || elementName.equals("bvar") || elementName.equals("degree") || elementName.equals("logbase") + || elementName.equals("semantics")) { if (elementName.equals("apply")) { @@ -420,7 +407,7 @@ // System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType()); } - if (elementName.equals("semantics")) + if (elementName.equals("annotation") || elementName.equals("annotation-xml")) { // Creating a StartElement XMLNode !! XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces()); @@ -437,7 +424,7 @@ // if semantics, create a new XMLNode and return it. Set the ASTNode as the parent so that // we can add the semanticsAnnotation element in the #processEndElement method. - if (elementName.equals("semantics")) + if (elementName.equals("annotation") || elementName.equals("annotation-xml")) { // Creating a StartElement XMLNode !! XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-15 15:04:46
|
Revision: 2457 http://sourceforge.net/p/jsbml/code/2457 Author: niko-rodrigue Date: 2015-12-15 15:04:43 +0000 (Tue, 15 Dec 2015) Log Message: ----------- implement reading of mathML semantics annotations Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 11:58:07 UTC (rev 2456) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-15 15:04:43 UTC (rev 2457) @@ -26,6 +26,7 @@ import java.util.List; import javax.swing.tree.TreeNode; +import javax.xml.stream.XMLStreamException; import org.apache.log4j.Logger; import org.mangosdk.spi.ProviderFor; @@ -35,6 +36,10 @@ import org.sbml.jsbml.MathContainer; import org.sbml.jsbml.SBMLDocument; import org.sbml.jsbml.util.StringTools; +import org.sbml.jsbml.xml.XMLAttributes; +import org.sbml.jsbml.xml.XMLNamespaces; +import org.sbml.jsbml.xml.XMLNode; +import org.sbml.jsbml.xml.XMLTriple; /** * A MathMLStaxParser is used to parse the MathML expressions injected into a SBML @@ -66,7 +71,7 @@ * otherwise the XML version will appear at the beginning of the output. */ private boolean omitXMLDeclaration; - + /** * A {@link Logger} for this class. */ @@ -117,6 +122,13 @@ // Process the possible attributes. // the sbml:units attribute is handle by the SBMLCoreParser. + // We are inside a mathML 'semantics' element, everything is read into an XMLNode + if (contextObject instanceof XMLNode) { + XMLNode xmlNode = (XMLNode) contextObject; + xmlNode.addAttr(attributeName, value, uri, prefix); + return; + } + if (! (contextObject instanceof ASTNode)) { logger.debug("processAttribute : !!!!!!!!! context is not an ASTNode (" + contextObject.getClass()); @@ -162,6 +174,15 @@ logger.debug("processCharactersOf : element name = " + elementName + ", characters = " + characters); } + // We are inside a mathML 'semantics' element, everything is read into an XMLNode + if (contextObject instanceof XMLNode) { + XMLNode xmlNode = (XMLNode) contextObject; + + XMLNode textNode = new XMLNode(characters); + xmlNode.addChild(textNode); + return; + } + // Depending of the type of ASTNode, we need to do different things if (! (contextObject instanceof ASTNode)) { logger.debug("processCharactersOf : !!!!!!!!! context is not an ASTNode (" + @@ -243,6 +264,47 @@ logger.debug("processEndElement : element name = " + elementName); } + // We are inside a mathML 'semantics' element, everything is read into an XMLNode + if (contextObject instanceof XMLNode) { + XMLNode xmlNode = (XMLNode) contextObject; + + if (xmlNode.getChildCount() == 0) { + xmlNode.setEnd(); + } + + // if elementName.equals(semantics) add all child elements as semanticsAnnotation to the parent ASTNode ! + if (elementName.equals("semantics")) + { + TreeNode parentNode = xmlNode.getParent(); + + if (parentNode instanceof ASTNode) + { + // we are at the end of the top level 'semantics' element. + // adding all child elements that are not empty as semanticAnnotation // TODO - keep the top level 'semantics' element if not empty. + + for (XMLNode childNode : xmlNode.getChildElements(null, null)) + { + if (childNode.isText() && childNode.getCharacters().trim().length() == 0) { + continue; + } + ((ASTNode) parentNode).addSemanticsAnnotation(childNode); + +// try { +// System.out.println("MathMLStaxParser - processEndElement - semantic annotation = \n" + childNode.toXMLString()); +// } catch (XMLStreamException e) { +// e.printStackTrace(); +// } + } + + // System.out.println("MathMLStaxParser - processEndElement - num semantic annotation = " + ((ASTNode) parentNode).getNumSemanticsAnnotations()); + } + + } + + // always remove the XMLNode from the stack. + return true; + } + if (elementName.equals("sep")) { return false; } else if (contextObject instanceof MathContainer) { @@ -276,12 +338,29 @@ * @see org.sbml.jsbml.xml.ReadingParser#processNamespace(String elementName, String URI, String prefix, String localName, boolean hasAttributes, boolean isLastNamespace, Object contextObject) */ @Override - public void processNamespace(String elementName, String URI, String prefix, + public void processNamespace(String elementName, String uri, String prefix, String localName, boolean hasAttributes, boolean isLastNamespace, Object contextObject) { - // TODO + + if (contextObject instanceof XMLNode) { + XMLNode xmlNode = (XMLNode) contextObject; + + if (!xmlNode.isStart()) { + logger.debug(MessageFormat.format( + "processNamespace: context Object is not a start node! {0}", + contextObject)); + } + if (localName == null || localName.trim().length() == 0) { + localName = "xmlns"; + } + + xmlNode.addNamespace(uri, localName); + } + + // TODO - store namespaces on mathML elements ! + logger.debug("processNamespace called"); } @@ -306,7 +385,7 @@ { if (elementName.equals("apply")) { - lastElementWasApply = true; + lastElementWasApply = true; // TODO - write the booleans inside a user object to make the parser multi-thread safe ? } else { @@ -340,12 +419,46 @@ parentASTNode = mathContainer.getMath(); // System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType()); } + + if (elementName.equals("semantics")) + { + // Creating a StartElement XMLNode !! + XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces()); + xmlNode.setParent(parentASTNode); + + return xmlNode; + } + } else if (contextObject instanceof ASTNode) { parentASTNode = ((ASTNode) contextObject); mathContainer = parentASTNode.getParentSBMLObject(); // System.out.println("MathMLStaxParser: processStartElement parent type: " + parentASTNode.getType()); - } else { + + // if semantics, create a new XMLNode and return it. Set the ASTNode as the parent so that + // we can add the semanticsAnnotation element in the #processEndElement method. + if (elementName.equals("semantics")) + { + // Creating a StartElement XMLNode !! + XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces()); + xmlNode.setParent(parentASTNode); + + return xmlNode; + } + } + // We are inside a mathML 'semantics' element, everything is read into an XMLNode + else if (contextObject instanceof XMLNode) + { + // Creating a StartElement XMLNode !! + XMLNode xmlNode = new XMLNode(new XMLTriple(elementName, uri, prefix), new XMLAttributes(), new XMLNamespaces()); + XMLNode parentNode = (XMLNode) contextObject; + + parentNode.addChild(xmlNode); + + return xmlNode; + } + else + { // Should never happen logger.debug("processStartElement: !!!!!!!!!!! Should not have been here !!!!!!!!!!!"); logger.debug("processStartElement: contextObject.classname = " + contextObject.getClass().getName()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-15 11:58:09
|
Revision: 2456 http://sourceforge.net/p/jsbml/code/2456 Author: niko-rodrigue Date: 2015-12-15 11:58:07 +0000 (Tue, 15 Dec 2015) Log Message: ----------- added a field and some methods in ASTNode to handle the semantics annotations Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/ASTNode.java Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 11:56:29 UTC (rev 2455) +++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-15 11:58:07 UTC (rev 2456) @@ -48,6 +48,7 @@ import org.sbml.jsbml.util.compilers.MathMLXMLStreamCompiler; import org.sbml.jsbml.util.compilers.UnitsCompiler; import org.sbml.jsbml.util.filters.Filter; +import org.sbml.jsbml.xml.XMLNode; import org.sbml.jsbml.xml.stax.SBMLReader; /** @@ -1391,6 +1392,12 @@ private String encoding; /** + * XMLNode that will hold the content of the 'semantics' mathML element. + */ + private List<XMLNode> semanticsAnnotationList; + + + /** * Tells if the type attribute of the cn element was set and we need to * write it back or if it is set to the default (REAL). * @@ -1498,6 +1505,14 @@ listOfNodes.add(c); } } + + if (astNode.semanticsAnnotationList != null) { + semanticsAnnotationList = new ArrayList<XMLNode>(); + + for (XMLNode semanticsAnnotation : astNode.semanticsAnnotationList) { + semanticsAnnotationList.add(semanticsAnnotation.clone()); + } + } } /** @@ -2272,6 +2287,8 @@ if (equal && isSetUnits()) { equal &= getUnits().equals(ast.getUnits()); } + + // TODO - semanticsAnnotationList not part of equals or hashcode ? } return equal; } @@ -2355,6 +2372,8 @@ @Override public TreeNode getChildAt(int i) { return getChild(i); + + // TODO - add semantics XMLNode ?? } /* (non-Javadoc) @@ -2363,6 +2382,8 @@ @Override public int getChildCount() { return listOfNodes == null ? 0 : listOfNodes.size(); + + // TODO - add semantics XMLNode ?? } /** @@ -2803,6 +2824,12 @@ if (isSetClassName()) { hashCode += prime * getClassName().hashCode(); } + if (isSetUnits()) { + hashCode += prime * getUnits().hashCode(); + } + // TODO - semanticsAnnotationList not part of equals or hashcode ? + + return hashCode; } @@ -4356,4 +4383,102 @@ return tree; } + /** + * Adds the given {@link XMLNode} as a MathML <code><semantics></code> element to this {@link ASTNode}. + * + * <p> + * The {@code <semantics>} element is a MathML 2.0 construct + * that can be used to associate additional information with a MathML + * construct. The construct can be used to decorate a MathML expressions with + * a sequence of one or more {@code <annotation>} or + * {@code <annotation-xml>} elements. Each such element contains a + * pair of items; the first is a symbol that acts as an attribute or key, and + * the second is the value associated with the attribute or key. Please refer + * to the MathML 2.0 documentation, particularly the <a target="_blank" + * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section + * 5.2, Semantic Annotations</a> for more information about these constructs. + * + * @param semanticsAnnotation the annotation to add. + * @return the added {@link XMLNode}. + */ + public XMLNode addSemanticsAnnotation(XMLNode semanticsAnnotation) { + if (semanticsAnnotation == null) { + return null; + } + if (semanticsAnnotationList == null) { + semanticsAnnotationList = new ArrayList<XMLNode>(); + } + + semanticsAnnotationList.add(semanticsAnnotation); + + return semanticsAnnotation; + } + + /** + * Gets the number of <em>semantic annotation</em> elements inside this node. + * + * <p> + * The <code><semantics></code> element is a MathML 2.0 construct + * that can be used to associate additional information with a MathML + * construct. The construct can be used to decorate a MathML expressions with + * a sequence of one or more <code><annotation></code> or + * <code><annotation-xml></code> elements. Each such element contains a + * pair of items; the first is a symbol that acts as an attribute or key, and + * the second is the value associated with the attribute or key. Please refer + * to the MathML 2.0 documentation, particularly the <a target="_blank" + * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section + * 5.2, Semantic Annotations</a> for more information about these constructs. + * + * @return the number of annotations of this {@link ASTNode}. + * @see ASTNode#addSemanticsAnnotation(XMLNode semanticsAnnotation) + */ + public int getNumSemanticsAnnotations() { + if (semanticsAnnotationList == null) { + return 0; + } + + return semanticsAnnotationList.size(); + } + + /** + * Gets the nth <code><semantics></code> annotation of this node. + * + * <p> + * The <code><semantics></code> element is a MathML 2.0 construct + * that can be used to associate additional information with a MathML + * construct. The construct can be used to decorate a MathML expressions with + * a sequence of one or more <code><annotation></code> or + * <code><annotation-xml></code> elements. Each such element contains a + * pair of items; the first is a symbol that acts as an attribute or key, and + * the second is the value associated with the attribute or key. Please refer + * to the MathML 2.0 documentation, particularly the <a target="_blank" + * href="http://www.w3.org/TR/2007/WD-MathML3-20071005/chapter5.html#mixing.semantic.annotations">Section + * 5.2, Semantic Annotations</a> for more information about these constructs. + * + * @return the nth annotation of this {@link ASTNode}, or <code>null</code> if this node has + * no nth annotation (<code>n ></code> + * {@link ASTNode#getNumSemanticsAnnotations()} + * <code>- 1</code> or n < 0). + * @see ASTNode#addSemanticsAnnotation(XMLNode sAnnotation) + */ + public XMLNode getSemanticsAnnotation(int n) { + if (semanticsAnnotationList == null || n < 0 || (n > (getNumSemanticsAnnotations() -1))) { + return null; + } + + return semanticsAnnotationList.get(n); + } + + /** + * Returns the list of semantics annotations of this node. + * + * @return the list of semantics annotations of this node or null if no semantics annotation are present. + */ + public List<XMLNode> getListOfSemanticsAnnotations() { + return semanticsAnnotationList; + } + + // TODO - removeSemanticsAnnotation + // TODO - unsetsemanticsAnnotation + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-15 11:56:32
|
Revision: 2455 http://sourceforge.net/p/jsbml/code/2455 Author: niko-rodrigue Date: 2015-12-15 11:56:29 +0000 (Tue, 15 Dec 2015) Log Message: ----------- improved the TestSBMLDocumentClone class to test as well serialisation and de-serialisation of whole documents Modified Paths: -------------- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java Modified: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java =================================================================== --- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-11 16:09:34 UTC (rev 2454) +++ trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-15 11:56:29 UTC (rev 2455) @@ -22,14 +22,22 @@ package org.sbml.jsbml.test; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileFilter; import java.io.IOException; +import java.io.NotSerializableException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; +import java.util.Base64; import java.util.Calendar; import java.util.List; +import javax.swing.tree.TreeNode; import javax.xml.stream.XMLStreamException; import org.sbml.jsbml.SBMLDocument; @@ -39,6 +47,7 @@ import org.sbml.jsbml.util.filters.Filter; + /** * Test class used to check that jsbml SBMLDocument equals method return true when passed it's clone. * @@ -129,6 +138,26 @@ System.out.println(notEqualSBases); } + + + String docString = toSerializedString(doc); + SBMLDocument serializedDoc = (SBMLDocument) fromSerializedString(docString); + + boolean equalsSerialized = doc.equals(serializedDoc); + + // System.out.println("Equals serialized = " + equalsSerialized); + + if (!equalsSerialized) { + nbNotEquals++; + fileNotEquals.add(file); + + List<SBase> notEqualSBases = checkEquals(doc, serializedDoc, new ArrayList<SBase>()); + + System.out.println("SBases not equals after serialization: " + notEqualSBases); + } + + // TODO - write to String with SBMLWriter and compare again the result with equals !! + } catch (XMLStreamException e) { @@ -178,6 +207,38 @@ } } + /** + * @param sbase + * @param serializedSBase + * @param notEqualsList + * @return + */ + private static List<SBase> checkEquals(SBase sbase, SBase serializedSBase, ArrayList<SBase> notEqualsList) + { + if (!sbase.equals(serializedSBase)) { + notEqualsList.add(sbase); + } + + if (sbase.getChildCount() > 0) { + + for (int i = 0; i < sbase.getChildCount(); i++) { + TreeNode child = sbase.getChildAt(i); + + if (child instanceof SBase) { + checkEquals((SBase) child, (SBase) serializedSBase.getChildAt(i), notEqualsList); + } + } + } + + + return notEqualsList; + } + + /** + * @param argsAsFile + * @param filesList + * @return + */ private static List<File> findAllXMLFiles(File argsAsFile, List<File> filesList) { // System.out.println("Analyzing directory '" + argsAsFile.getAbsolutePath() + "'"); @@ -224,5 +285,29 @@ return filesList; } - + /** Read the object from Base64 string. */ + private static Object fromSerializedString(String s) throws IOException , ClassNotFoundException { + byte [] data = Base64.getDecoder().decode(s); + ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data)); + Object o = ois.readObject(); + ois.close(); + return o; + } + + /** Write the object to a Base64 string. */ + private static String toSerializedString(Serializable o) throws IOException { + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + + try { + oos.writeObject(o); + oos.close(); + return Base64.getEncoder().encodeToString(baos.toByteArray()); + + } catch (NotSerializableException e) { + System.out.println("ERROR !! current content of the serialization : \n" + new String(baos.toByteArray())); + throw e; + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 16:09:36
|
Revision: 2454 http://sourceforge.net/p/jsbml/code/2454 Author: niko-rodrigue Date: 2015-12-11 16:09:34 +0000 (Fri, 11 Dec 2015) Log Message: ----------- updated version in the ant build files Modified Paths: -------------- trunk/build.xml trunk/core/build.xml trunk/jsbml-build.properties Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2015-12-11 15:48:48 UTC (rev 2453) +++ trunk/build.xml 2015-12-11 16:09:34 UTC (rev 2454) @@ -46,8 +46,8 @@ <property name="Name" value="JSBML" /> <property name="name" value="jsbml" /> - <property name="version" value="1.1" /> - <property name="api.version" value="1.1" /> + <property name="version" value="1.2-SNAPSHOT" /> + <property name="api.version" value="1.2" /> <property name="year" value="${YEAR}" /> Modified: trunk/core/build.xml =================================================================== --- trunk/core/build.xml 2015-12-11 15:48:48 UTC (rev 2453) +++ trunk/core/build.xml 2015-12-11 16:09:34 UTC (rev 2454) @@ -43,8 +43,8 @@ <property name="Name" value="JSBML"/> <property name="name" value="jsbml"/> - <property name="version" value="1.1"/> - <property name="api.version" value="1.1"/> + <property name="version" value="1.2-SNAPSHOT"/> + <property name="api.version" value="1.2"/> <property name="year" value="${YEAR}"/> Modified: trunk/jsbml-build.properties =================================================================== --- trunk/jsbml-build.properties 2015-12-11 15:48:48 UTC (rev 2453) +++ trunk/jsbml-build.properties 2015-12-11 16:09:34 UTC (rev 2454) @@ -1,7 +1,7 @@ jsbml.Name=JSBML jsbml.name=jsbml -jsbml.version=1.1 -jsbml.api.version=1.1 +jsbml.version=1.2-SNAPSHOT +jsbml.api.version=1.2 jsbml.groupId=org.sbml.jsbml jsbml.artifactId=jsbml-parent This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 15:48:52
|
Revision: 2453 http://sourceforge.net/p/jsbml/code/2453 Author: niko-rodrigue Date: 2015-12-11 15:48:48 +0000 (Fri, 11 Dec 2015) Log Message: ----------- put most log4j Logger as transient (and static final) so that they do not prevent serialization + removed some unused ResourceBundle in the spatial package Modified Paths: -------------- trunk/NEWS.txt trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java trunk/core/src/org/sbml/jsbml/ListOf.java trunk/core/src/org/sbml/jsbml/Species.java trunk/core/src/org/sbml/jsbml/UnitDefinition.java trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java trunk/core/src/org/sbml/jsbml/util/CobraUtil.java trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java Modified: trunk/NEWS.txt =================================================================== --- trunk/NEWS.txt 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/NEWS.txt 2015-12-11 15:48:48 UTC (rev 2453) @@ -17,6 +17,16 @@ - The clone constructor for SBaseRef was not cloning properly it's child SBaseRef. + - The equals method of ASTNode was failing when one of the double values + was set to NaN. + + - Corrected several potential NullPointerExceptions that could occur + during the cloning of an SBMLDocument that contain plugins. + + - Corrected a potential NullPointerException in the + TreeNodeAdapter(Object, TreeNode) constructor. + + =========================================================================== Version 1.1 (09-12-2015) =========================================================================== Modified: trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java =================================================================== --- trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/AbstractMathContainer.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -49,7 +49,7 @@ /** * A logger for user-messages. */ - private static final Logger logger = Logger.getLogger(AbstractMathContainer.class); + private static final transient Logger logger = Logger.getLogger(AbstractMathContainer.class); /** * The math formula as an abstract syntax tree. Modified: trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -79,7 +79,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(AbstractTreeNode.class); + private static final transient Logger logger = Logger.getLogger(AbstractTreeNode.class); /** Modified: trunk/core/src/org/sbml/jsbml/ListOf.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ListOf.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/ListOf.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -261,7 +261,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(ListOf.class); + private static final transient Logger logger = Logger.getLogger(ListOf.class); /** * Helper method to initialize newly created lists. Modified: trunk/core/src/org/sbml/jsbml/Species.java =================================================================== --- trunk/core/src/org/sbml/jsbml/Species.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/Species.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -42,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(Species.class); + private static final transient Logger logger = Logger.getLogger(Species.class); /** * Generated serial version identifier. Modified: trunk/core/src/org/sbml/jsbml/UnitDefinition.java =================================================================== --- trunk/core/src/org/sbml/jsbml/UnitDefinition.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/UnitDefinition.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -63,7 +63,7 @@ /** * The logger for this class. */ - private static final Logger logger = Logger.getLogger(UnitDefinition.class); + private static final transient Logger logger = Logger.getLogger(UnitDefinition.class); /** * Generated serial version identifier. */ Modified: trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/ext/AbstractSBasePlugin.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -51,7 +51,7 @@ /** * */ - private Logger logger = Logger.getLogger(AbstractSBasePlugin.class); + private static final transient Logger logger = Logger.getLogger(AbstractSBasePlugin.class); /** * Modified: trunk/core/src/org/sbml/jsbml/util/CobraUtil.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/CobraUtil.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/util/CobraUtil.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -40,7 +40,7 @@ */ public class CobraUtil { - private static Logger logger = Logger.getLogger(CobraUtil.class); + private static final transient Logger logger = Logger.getLogger(CobraUtil.class); /** * Parses the notes of the given {@link SBase} element. Modified: trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -44,7 +44,7 @@ /** * A {@link Logger} for this class. */ - private static transient Logger logger; + private static final transient Logger logger = Logger.getLogger(SimpleTreeNodeChangeListener.class); /** * Creates an {@link TreeNodeChangeListener} that writes all events to the @@ -52,7 +52,6 @@ */ public SimpleTreeNodeChangeListener() { super(); - logger = Logger.getLogger(SimpleTreeNodeChangeListener.class); } /** Modified: trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/util/compilers/MathMLXMLStreamCompiler.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -64,7 +64,7 @@ /** * A {@link Logger} for this class. */ - private final Logger logger = Logger.getLogger(MathMLXMLStreamCompiler.class); + private static final transient Logger logger = Logger.getLogger(MathMLXMLStreamCompiler.class); /** * Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/AbstractReaderWriter.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -53,7 +53,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(AbstractReaderWriter.class); + private static final transient Logger logger = Logger.getLogger(AbstractReaderWriter.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.ReadingParser#processAttribute(String Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/MathMLStaxParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -70,7 +70,7 @@ /** * A {@link Logger} for this class. */ - private transient Logger logger = Logger.getLogger(MathMLStaxParser.class); + private static final transient Logger logger = Logger.getLogger(MathMLStaxParser.class); /** * Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/ParserManager.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -66,7 +66,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(ParserManager.class); + private static final transient Logger logger = Logger.getLogger(ParserManager.class); private String[] parserDefaults = {"org.sbml.jsbml.xml.parsers.UncertMLXMLNodeReader", "org.sbml.jsbml.xml.parsers.SBMLCoreParser", Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLRDFAnnotationParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -90,7 +90,7 @@ * Logger to be able to send informative, debug, warning or error messages. * */ - private Logger logger = Logger.getLogger(getClass()); + private static final transient Logger logger = Logger.getLogger(SBMLRDFAnnotationParser.class); @Override public XMLNode writeAnnotation(SBase contextObject, XMLNode xmlNode) Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/XMLNodeReader.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -60,7 +60,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(XMLNodeReader.class); + private static final transient Logger logger = Logger.getLogger(XMLNodeReader.class); /** * Modified: trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/stax/DateProcessor.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -48,7 +48,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(DateProcessor.class); + private static final transient Logger logger = Logger.getLogger(DateProcessor.class); static { instance = new DateProcessor(); Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLReader.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -119,7 +119,7 @@ /** * A {@link Logger} for this class. */ - private transient Logger logger = Logger.getLogger(SBMLReader.class); + private static final transient Logger logger = Logger.getLogger(SBMLReader.class); Modified: trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/stax/SBMLWriter.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -260,7 +260,7 @@ /** * A {@link Logger} for this class. */ - Logger logger = Logger.getLogger(SBMLWriter.class); + private static final transient Logger logger = Logger.getLogger(SBMLWriter.class); /** Modified: trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/core/src/org/sbml/jsbml/xml/stax/XMLLogger.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -36,7 +36,7 @@ /** * logger */ - private Logger logger = Logger.getLogger(XMLLogger.class); + private static final transient Logger logger = Logger.getLogger(XMLLogger.class); /** * Modified: trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java =================================================================== --- trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/arrays/src/org/sbml/jsbml/xml/parsers/ArraysParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -47,7 +47,7 @@ /** * A {@link Logger} for this class. */ - private final Logger logger = Logger.getLogger(ArraysParser.class); + private static final transient Logger logger = Logger.getLogger(ArraysParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.ReadingParser#getNamespaces() Modified: trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java =================================================================== --- trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/arrays/test/org/sbml/jsbml/ext/arrays/test/FlatteningTest.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -61,7 +61,7 @@ */ public class FlatteningTest { - private static Logger logger = Logger.getLogger(FlatteningTest.class); + private static final transient Logger logger = Logger.getLogger(FlatteningTest.class); @Test public void sizeZeroTest() { Modified: trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java =================================================================== --- trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/comp/src/org/sbml/jsbml/xml/parsers/CompParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -63,7 +63,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CompParser.class); + private static final transient Logger logger = Logger.getLogger(CompParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getNamespaceURI() Modified: trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java =================================================================== --- trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/DistribParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -80,7 +80,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(DistribParser.class); + private static final transient Logger logger = Logger.getLogger(DistribParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase) Modified: trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java =================================================================== --- trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/distrib/src/org/sbml/jsbml/xml/parsers/UncertMLXMLNodeReader.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -53,7 +53,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(UncertMLXMLNodeReader.class); + private static final transient Logger logger = Logger.getLogger(UncertMLXMLNodeReader.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.ReadingParser#processCharactersOf(String elementName, String characters, Object contextObject) Modified: trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java =================================================================== --- trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/dyn/src/org/sbml/jsbml/xml/parsers/DynParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -61,7 +61,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(DynParser.class); + private static final transient Logger logger = Logger.getLogger(DynParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.ReadingParser#getNamespaces() Modified: trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java =================================================================== --- trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/fbc/src/org/sbml/jsbml/xml/parsers/FBCParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -99,7 +99,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(FBCParser.class); + private static final transient Logger logger = Logger.getLogger(FBCParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase) Modified: trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java =================================================================== --- trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/groups/src/org/sbml/jsbml/xml/parsers/GroupsParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -53,7 +53,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(GroupsParser.class); + private static final transient Logger logger = Logger.getLogger(GroupsParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase) Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/BoundingBox.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -53,7 +53,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(BoundingBox.class); + private static final transient Logger logger = Logger.getLogger(BoundingBox.class); /** * Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/CurveSegment.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -116,7 +116,7 @@ /** * */ - private Logger logger = Logger.getLogger(CurveSegment.class); + private static final transient Logger logger = Logger.getLogger(CurveSegment.class); /** * Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Dimensions.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -60,7 +60,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(Dimensions.class); + private static final transient Logger logger = Logger.getLogger(Dimensions.class); /** * Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/GraphicalObject.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -60,7 +60,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(GraphicalObject.class); + private static final transient Logger logger = Logger.getLogger(GraphicalObject.class); /** * Modified: trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/ext/layout/Point.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -57,7 +57,7 @@ /** * A {@link Logger} for this class. */ - private static final Logger logger = Logger.getLogger(Point.class); + private static final transient Logger logger = Logger.getLogger(Point.class); /** * the x coordinate Modified: trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/L3LayoutParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -115,7 +115,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(L3LayoutParser.class); + private static final transient Logger logger = Logger.getLogger(L3LayoutParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase) Modified: trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java =================================================================== --- trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/layout/src/org/sbml/jsbml/xml/parsers/LayoutParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -80,7 +80,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(LayoutParser.class); + private static final transient Logger logger = Logger.getLogger(LayoutParser.class); /** * Modified: trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java =================================================================== --- trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/qual/src/org/sbml/jsbml/xml/parsers/QualParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -65,7 +65,7 @@ /** * */ - private Logger logger = Logger.getLogger(QualParser.class); + private static final transient Logger logger = Logger.getLogger(QualParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#getListOfSBMLElementsToWrite(Object sbase) Modified: trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java =================================================================== --- trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/render/src/org/sbml/jsbml/xml/parsers/RenderParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -64,7 +64,7 @@ /** * The logger for this RenderParser */ - private static final Logger logger = Logger.getLogger(RenderParser.class); + private static final transient Logger logger = Logger.getLogger(RenderParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getShortLabel() Modified: trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java =================================================================== --- trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/req/src/org/sbml/jsbml/xml/parsers/ReqParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -52,7 +52,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(ReqParser.class); + private static final transient Logger logger = Logger.getLogger(ReqParser.class); /* (non-Javadoc) * @see org.sbml.jsbml.xml.parsers.AbstractReaderWriter#getNamespaceURI() Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AbstractSpatialNamedSBase.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,14 +23,12 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import javax.swing.tree.TreeNode; import org.apache.log4j.Logger; import org.sbml.jsbml.AbstractSBase; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; /** * @author Alex Thomas @@ -44,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(AbstractSpatialNamedSBase.class); + private static final transient Logger logger = Logger.getLogger(AbstractSpatialNamedSBase.class); /** * Generated serial version identifier. @@ -59,11 +57,6 @@ /** * */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - - /** - * - */ public AbstractSpatialNamedSBase() { super(); initDefaults(); Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdjacentDomains.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; /** * @author Alex Thomas @@ -41,7 +39,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(AdjacentDomains.class); + private static final transient Logger logger = Logger.getLogger(AdjacentDomains.class); /** * @@ -51,12 +49,7 @@ * */ private String domain2; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * Generated serial version identifier. */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AdvectionCoefficient.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -40,7 +40,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(AdvectionCoefficient.class); + private static final transient Logger logger = Logger.getLogger(AdvectionCoefficient.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/AnalyticVolume.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,16 +23,11 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; -import java.util.regex.Pattern; import org.apache.log4j.Logger; import org.sbml.jsbml.AbstractMathContainer; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.SBMLException; -import org.sbml.jsbml.util.ResourceManager; import org.sbml.jsbml.util.StringTools; -import org.sbml.jsbml.util.TreeNodeChangeEvent; /** * @author Alex Thomas @@ -47,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(AnalyticVolume.class); + private static final transient Logger logger = Logger.getLogger(AnalyticVolume.class); /** * @@ -71,12 +66,7 @@ */ private static final long serialVersionUID = 1757917501241390228L; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Boundary.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; import org.sbml.jsbml.util.StringTools; /** @@ -42,7 +40,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(Boundary.class); + private static final transient Logger logger = Logger.getLogger(Boundary.class); /** * Generated serial version identifier. @@ -54,12 +52,7 @@ */ private Double value; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/BoundaryCondition.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.regex.Pattern; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.SBMLException; /** * @author Alex Thomas @@ -41,7 +39,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(BoundaryCondition.class); + private static final transient Logger logger = Logger.getLogger(BoundaryCondition.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGObject.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,13 +23,11 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import javax.swing.tree.TreeNode; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; import org.sbml.jsbml.util.StringTools; @@ -45,7 +43,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGObject.class); + private static final transient Logger logger = Logger.getLogger(CSGObject.class); /** * Generated serial version identifier. @@ -67,12 +65,7 @@ */ private CSGNode csgNode; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPrimitive.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; /** * @author Alex Thomas @@ -41,7 +39,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGPrimitive.class); + private static final transient Logger logger = Logger.getLogger(CSGPrimitive.class); /** * @@ -53,12 +51,7 @@ */ private PrimitiveKind primitiveType; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGPseudoPrimitive.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; /** * @author Alex Thomas @@ -41,7 +39,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGPseudoPrimitive.class); + private static final transient Logger logger = Logger.getLogger(CSGPseudoPrimitive.class); /** * @@ -53,12 +51,7 @@ */ private String csgObjectRef; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGRotation.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -41,7 +41,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGRotation.class); + private static final transient Logger logger = Logger.getLogger(CSGRotation.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGScale.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -42,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGScale.class); + private static final transient Logger logger = Logger.getLogger(CSGScale.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGSetOperator.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -46,7 +46,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGSetOperator.class); + private static final transient Logger logger = Logger.getLogger(CSGSetOperator.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CSGTranslation.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -41,7 +41,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CSGTranslation.class); + private static final transient Logger logger = Logger.getLogger(CSGTranslation.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CompartmentMapping.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -42,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CompartmentMapping.class); + private static final transient Logger logger = Logger.getLogger(CompartmentMapping.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateComponent.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -48,7 +48,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CoordinateComponent.class); + private static final transient Logger logger = Logger.getLogger(CoordinateComponent.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/CoordinateReference.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -44,7 +44,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(CoordinateReference.class); + private static final transient Logger logger = Logger.getLogger(CoordinateReference.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DiffusionCoefficient.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -26,7 +26,6 @@ import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.xml.parsers.SpatialParser; /** @@ -53,7 +52,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(DiffusionCoefficient.class); + private static final transient Logger logger = Logger.getLogger(DiffusionCoefficient.class); /** Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Domain.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -46,7 +46,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(Domain.class); + private static final transient Logger logger = Logger.getLogger(Domain.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/DomainType.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -42,7 +42,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(DomainType.class); + private static final transient Logger logger = Logger.getLogger(DomainType.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/Geometry.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -46,7 +46,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(Geometry.class); + private static final transient Logger logger = Logger.getLogger(Geometry.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/GeometryDefinition.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -40,7 +40,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(GeometryDefinition.class); + private static final transient Logger logger = Logger.getLogger(GeometryDefinition.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/InteriorPoint.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -44,7 +44,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(InteriorPoint.class); + private static final transient Logger logger = Logger.getLogger(InteriorPoint.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/OrdinalMapping.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -43,7 +43,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(OrdinalMapping.class); + private static final transient Logger logger = Logger.getLogger(OrdinalMapping.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParameterType.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -45,7 +45,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(ParameterType.class); + private static final transient Logger logger = Logger.getLogger(ParameterType.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/ParametricObject.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -41,7 +41,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(ParametricObject.class); + private static final transient Logger logger = Logger.getLogger(ParametricObject.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledField.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -46,7 +46,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SampledField.class); + private static final transient Logger logger = Logger.getLogger(SampledField.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledFieldGeometry.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -47,7 +47,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SampledFieldGeometry.class); + private static final transient Logger logger = Logger.getLogger(SampledFieldGeometry.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SampledVolume.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -23,11 +23,9 @@ import java.text.MessageFormat; import java.util.Map; -import java.util.ResourceBundle; import org.apache.log4j.Logger; import org.sbml.jsbml.PropertyUndefinedError; -import org.sbml.jsbml.util.ResourceManager; import org.sbml.jsbml.util.StringTools; /** @@ -43,7 +41,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SampledVolume.class); + private static final transient Logger logger = Logger.getLogger(SampledVolume.class); /** * Generated serial version identifier. @@ -67,12 +65,7 @@ */ private Double maxValue; - /** - * - */ - private static final ResourceBundle bundle = ResourceManager.getBundle("org.sbml.jsbml.ext.spatial.Messages"); - /** * */ Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialPoints.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -40,7 +40,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SpatialPoints.class); + private static final transient Logger logger = Logger.getLogger(SpatialPoints.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialReactionPlugin.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -44,7 +44,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SpatialReactionPlugin.class); + private static final transient Logger logger = Logger.getLogger(SpatialReactionPlugin.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/SpatialSymbolReference.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -39,7 +39,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SpatialSymbolReference.class); + private static final transient Logger logger = Logger.getLogger(SpatialSymbolReference.class); /** * Generated serial version identifier. Modified: trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/ext/spatial/TransformationComponent.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -43,7 +43,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(TransformationComponent.class); + private static final transient Logger logger = Logger.getLogger(TransformationComponent.class); /** * Modified: trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java =================================================================== --- trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java 2015-12-11 14:05:22 UTC (rev 2452) +++ trunk/extensions/spatial/src/org/sbml/jsbml/xml/parsers/SpatialParser.java 2015-12-11 15:48:48 UTC (rev 2453) @@ -60,7 +60,6 @@ import org.sbml.jsbml.ext.spatial.InteriorPoint; import org.sbml.jsbml.ext.spatial.ParametricGeometry; import org.sbml.jsbml.ext.spatial.ParametricObject; -import org.sbml.jsbml.ext.spatial.PolygonObject; import org.sbml.jsbml.ext.spatial.SampledField; import org.sbml.jsbml.ext.spatial.SampledFieldGeometry; import org.sbml.jsbml.ext.spatial.SampledVolume; @@ -89,7 +88,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(SpatialParser.class); + private static final transient Logger logger = Logger.getLogger(SpatialParser.class); /** * The name space of required elements. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 14:05:24
|
Revision: 2452 http://sourceforge.net/p/jsbml/code/2452 Author: niko-rodrigue Date: 2015-12-11 14:05:22 +0000 (Fri, 11 Dec 2015) Log Message: ----------- renamed the log4j Logger field to logger in SBMLCoreParser. Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:02:33 UTC (rev 2451) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:05:22 UTC (rev 2452) @@ -98,7 +98,7 @@ /** * Log4j logger */ - private static final transient Logger log4jLogger = Logger.getLogger(SBMLCoreParser.class); + private static final transient Logger logger = Logger.getLogger(SBMLCoreParser.class); /** * Localization support. @@ -158,8 +158,8 @@ Object contextObject) { - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "processing the attribute: ''{0}'' (value = {1}) on element ''{2}'' ({3}).", attributeName, value, elementName, contextObject)); } @@ -174,8 +174,8 @@ try { isAttributeRead = sbase.readAttribute(attributeName, prefix, value); } catch (Throwable exc) { - log4jLogger.error(exc.getMessage()); - log4jLogger.info("Attribute = " + attributeName + ", element = " + elementName); + logger.error(exc.getMessage()); + logger.info("Attribute = " + attributeName + ", element = " + elementName); } } // A SBMLCoreParser can modify a contextObject which is an instance of @@ -193,16 +193,16 @@ isAttributeRead = true; } catch (IllegalArgumentException e) { // TODO: Write from which element the error is coming from: astNode.getParentSBMLObject(); - log4jLogger.warn(e.getMessage()); + logger.warn(e.getMessage()); // Log the error to the ErrorLog object ?? } - log4jLogger.debug("SBMLCoreParser: processAttribute: adding an unit to an ASTNode"); + logger.debug("SBMLCoreParser: processAttribute: adding an unit to an ASTNode"); } if (!isAttributeRead) { // TODO: Here we should add a hint which SBML Level/Version combination is used. - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownAttributeOnElement"), // Level {2,number,integer} Version {3,number,integer} attributeName, elementName)); // Log the error to the ErrorLog object ?? @@ -225,8 +225,8 @@ if ((elementName != null) && elementName.equals("notes")) { } else if ((characters != null) && (characters.trim().length() != 0)) { - // log4jLogger.warn("The SBML core XML element should not have any content, everything should be stored as attribute."); - // log4jLogger.warn("The Characters are: @" + characters.trim() + "@"); + // logger.warn("The SBML core XML element should not have any content, everything should be stored as attribute."); + // logger.warn("The Characters are: @" + characters.trim() + "@"); } } @@ -236,51 +236,51 @@ @Override public void processEndDocument(SBMLDocument sbmlDocument) { - log4jLogger.debug("SBMLCoreParser: processEndDocument"); + logger.debug("SBMLCoreParser: processEndDocument"); if (sbmlDocument.isSetModel()) { Model model = sbmlDocument.getModel(); if (model.isSetAreaUnits() && !model.isSetAreaUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "areaUnitsID", model.getAreaUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetConversionFactor() && !model.isSetConversionFactorInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Parameter", "conversionFactorID", model.getConversionFactor(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetExtentUnits() && !model.isSetExtentUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "extentUnitsID", model.getExtentUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetLengthUnits() && !model.isSetLengthUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "lengthUnitsID", model.getLengthUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetSubstanceUnits() && !model.isSetSubstanceUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "substanceUnitsID", model.getSubstanceUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetTimeUnits() && !model.isSetTimeUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "timeUnitsID", model.getTimeUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); } if (model.isSetVolumeUnits() && !model.isSetVolumeUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "volumeUnitsID", model.getVolumeUnits(), model.getElementName(), SBMLtools.getIdOrName(model))); @@ -290,7 +290,7 @@ if (model.getLevel() == 1) { - log4jLogger.debug("Transformed SBMLLevel1Rule: processEndDocument: model is level 1"); + logger.debug("Transformed SBMLLevel1Rule: processEndDocument: model is level 1"); int i = 0; for (Rule rule : model.getListOfRules().clone()) { @@ -299,22 +299,22 @@ if (((SBMLLevel1Rule) rule).isScalar()) { realRule = ((SBMLLevel1Rule) rule).cloneAsAssignmentRule(); - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "Transformed SBMLLevel1Rule: {0} into AssignmentRule.", ((SBMLLevel1Rule) rule).getVariable())); } } else { realRule = ((SBMLLevel1Rule) rule).cloneAsRateRule(); - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "Transformed SBMLLevel1Rule: {0} into RateRule.", ((SBMLLevel1Rule) rule).getVariable())); } } - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "Transformed SBMLLevel1Rule: realRule = {0}", realRule)); } @@ -332,7 +332,7 @@ AssignmentRule assignmentRule = (AssignmentRule) rule; if (assignmentRule.isSetVariable() && !assignmentRule.isSetVariableInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError2"), "Symbol", "variableID", assignmentRule.getVariable(), assignmentRule.getElementName())); @@ -340,7 +340,7 @@ if (assignmentRule.isSetUnits() && !assignmentRule.isSetUnitsInstance() && assignmentRule.isParameter()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError2"), "UnitDefinition", "unitsID", assignmentRule.getUnits(), assignmentRule.getElementName())); @@ -349,7 +349,7 @@ RateRule rateRule = (RateRule) rule; if (rateRule.isSetVariable() && !rateRule.isSetVariableInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError3"), "Symbol", "variableID", rateRule.getVariable(), rateRule.getElementName())); @@ -362,20 +362,20 @@ Compartment compartment = model.getCompartment(i); if (compartment.isSetCompartmentType() && !compartment.isSetCompartmentTypeInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "CompartmentType", "compartmentTypeID", compartment.getCompartmentType(), compartment.getElementName(), SBMLtools.getIdOrName(compartment))); } if (compartment.isSetOutside() && !compartment.isSetOutsideInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Compartment", "outsideID", compartment.getOutside(), compartment.getElementName(), SBMLtools.getIdOrName(compartment))); } if (compartment.isSetUnits() && !compartment.isSetUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "unitsID", compartment.getUnits(), compartment.getElementName(), SBMLtools.getIdOrName(compartment))); @@ -387,7 +387,7 @@ Event event = model.getEvent(i); if (event.isSetTimeUnits() && !event.isSetTimeUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "timeUnitsID", event.getTimeUnits(), event.getElementName(), SBMLtools.getIdOrName(event))); @@ -401,7 +401,7 @@ if (eventAssignment.isSetVariable() && !eventAssignment.isSetVariableInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError4"), "Symbol", "variableID", eventAssignment.getVariable(), eventAssignment.getElementName(), event.getElementName(), @@ -418,7 +418,7 @@ if (initialAssignment.isSetVariable() && !initialAssignment.isSetVariableInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError5"), "Symbol", "symbolID", initialAssignment.getVariable(), @@ -431,7 +431,7 @@ Reaction reaction = model.getReaction(i); if (reaction.isSetCompartment() && !reaction.isSetCompartmentInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Compartment", "compartmentID", reaction.getCompartment(), reaction.getElementName(), SBMLtools.getIdOrName(reaction))); @@ -445,7 +445,7 @@ if (speciesReference.isSetSpecies() && !speciesReference.isSetSpeciesInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Species", "speciesID", speciesReference.getSpecies(), speciesReference.getElementName(), @@ -460,7 +460,7 @@ if (speciesReference.isSetSpecies() && !speciesReference.isSetSpeciesInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Species", "speciesID", speciesReference.getSpecies(), speciesReference.getElementName(), @@ -469,7 +469,7 @@ } } if (neitherReactantsNorProducts) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.reactionWithoutParticipantsError"), SBMLtools.getIdOrName(reaction))); } @@ -481,7 +481,7 @@ if (modifierSpeciesReference.isSetSpecies() && !modifierSpeciesReference .isSetSpeciesInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Species", "speciesID", modifierSpeciesReference.getSpecies(), @@ -493,7 +493,7 @@ KineticLaw kineticLaw = reaction.getKineticLaw(); if (kineticLaw.isSetTimeUnits() && !kineticLaw.isSetTimeUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError6"), "UnitDefinition", "timeUnitsID", kineticLaw.getTimeUnits(), kineticLaw.getElementName(), reaction.getElementName(), @@ -501,7 +501,7 @@ } if (kineticLaw.isSetSubstanceUnits() && !kineticLaw.isSetSubstanceUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError6"), "UnitDefinition", "substanceUnitsID", kineticLaw.getSubstanceUnits(), kineticLaw.getElementName(), @@ -513,7 +513,7 @@ .getLocalParameter(j); if (parameter.isSetUnits() && !parameter.isSetUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "unitsID", parameter.getUnits(), parameter.getElementName(), @@ -530,7 +530,7 @@ if (species.isSetSubstanceUnits() && !species.isSetSubstanceUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "subtsanceUnitsID", species.getSubstanceUnits(), species.getElementName(), @@ -538,28 +538,28 @@ } if (species.isSetSpeciesType() && !species.isSetSpeciesTypeInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "SpeciesType", "speciesTypeID", species.getSpeciesType(), species.getElementName(), SBMLtools.getIdOrName(species))); } if (species.isSetConversionFactor() && !species.isSetConversionFactorInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Parameter", "conversionFactorID", species.getConversionFactor(), species.getElementName(), SBMLtools.getIdOrName(species))); } if (species.isSetCompartment() && !species.isSetCompartmentInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "Compartment", "compartmentID", species.getCompartment(), species.getElementName(), SBMLtools.getIdOrName(species))); } if (species.isSetSpatialSizeUnits() && !species.isSetSpatialSizeUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "spatialSizeUnitsID", species.getSpatialSizeUnits(), species.getElementName(), @@ -572,7 +572,7 @@ Parameter parameter = model.getParameter(i); if (parameter.isSetUnits() && !parameter.isSetUnitsInstance()) { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownReferenceError1"), "UnitDefinition", "unitsID", parameter.getUnits(), parameter.getElementName(), SBMLtools.getIdOrName(parameter))); @@ -581,10 +581,10 @@ } } else { - log4jLogger.error("The Model element has not been created."); + logger.error("The Model element has not been created."); } - log4jLogger.debug("Starting to check the package version and namespace for all package elements"); + logger.debug("Starting to check the package version and namespace for all package elements"); // checks silently package version and namespace and try to fix any problems encountered. PackageUtil.checkPackages(sbmlDocument, true, true); } @@ -615,8 +615,8 @@ } else { sbase.addDeclaredNamespace(localName, URI); } - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "processNamespace: {0} = {1}", prefix, URI)); } @@ -630,15 +630,15 @@ } else { annotation.addDeclaredNamespace(localName, URI); } - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format( + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format( "processNamespace: {0} = {1}", prefix, URI)); } } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.namespaceIgnored"), elementName, localName, URI)); // TODO - store into the XMLNode for unknown things @@ -763,12 +763,12 @@ return listOfSpeciesTypes; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } @@ -938,7 +938,7 @@ return speciesType; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } @@ -955,7 +955,7 @@ return unit; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (list.getParentSBMLObject() instanceof Reaction) { @@ -979,7 +979,7 @@ return speciesReference; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (elementName.equals("specieReference") @@ -998,7 +998,7 @@ return speciesReference; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (elementName @@ -1011,7 +1011,7 @@ return modifierSpeciesReference; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (list.getParentSBMLObject() instanceof KineticLaw) { @@ -1038,7 +1038,7 @@ return localParameter; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (list.getParentSBMLObject() instanceof Event) { @@ -1053,11 +1053,11 @@ return eventAssignment; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (contextObject instanceof UnitDefinition) { @@ -1093,7 +1093,7 @@ return priority; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (contextObject instanceof Reaction) { @@ -1120,7 +1120,7 @@ return kineticLaw; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (contextObject instanceof SpeciesReference) { @@ -1132,7 +1132,7 @@ return stoichiometryMath; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (contextObject instanceof KineticLaw) { @@ -1153,7 +1153,7 @@ return listOfLocalParameters; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else if (contextObject instanceof Constraint) { @@ -1167,26 +1167,26 @@ return constraint; } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } else { - log4jLogger.warn(MessageFormat.format( + logger.warn(MessageFormat.format( bundle.getString("SBMLCoreParser.unknownElement"), elementName)); } } catch (InstantiationException exc) { - log4jLogger.error(MessageFormat.format( + logger.error(MessageFormat.format( bundle.getString("SBMLCoreParser.instanciationError"), elementName)); - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(exc.getMessage()); - log4jLogger.debug(exc.getStackTrace()); + if (logger.isDebugEnabled()) { + logger.debug(exc.getMessage()); + logger.debug(exc.getStackTrace()); } } catch (IllegalAccessException exc) { - log4jLogger.error(MessageFormat.format( + logger.error(MessageFormat.format( bundle.getString("SBMLCoreParser.instanciationError"), elementName)); - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(exc.getMessage()); - log4jLogger.debug(exc.getStackTrace()); + if (logger.isDebugEnabled()) { + logger.debug(exc.getMessage()); + logger.debug(exc.getStackTrace()); } } } @@ -1239,8 +1239,8 @@ if (sbmlElementToWrite instanceof SBase) { SBase sbase = (SBase) sbmlElementToWrite; - if (log4jLogger.isDebugEnabled()) { - log4jLogger.debug(MessageFormat.format("writeElement: {0}", sbase.getElementName())); + if (logger.isDebugEnabled()) { + logger.debug(MessageFormat.format("writeElement: {0}", sbase.getElementName())); } // dealing with level 1 rules This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 14:02:35
|
Revision: 2451 http://sourceforge.net/p/jsbml/code/2451 Author: niko-rodrigue Date: 2015-12-11 14:02:33 +0000 (Fri, 11 Dec 2015) Log Message: ----------- removed the XMLLogger field in SBMLCoreParser with its associated methods as it was never used Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java Modified: trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 13:51:54 UTC (rev 2450) +++ trunk/core/src/org/sbml/jsbml/xml/parsers/SBMLCoreParser.java 2015-12-11 14:02:33 UTC (rev 2451) @@ -71,7 +71,6 @@ import org.sbml.jsbml.xml.XMLNode; import org.sbml.jsbml.xml.XMLTriple; import org.sbml.jsbml.xml.stax.SBMLObjectForXML; -import org.sbml.jsbml.xml.stax.XMLLogger; /** * Parses the SBML core elements of an SBML file. It can read and write SBML @@ -97,11 +96,6 @@ private Map<String, Class<? extends Object>> sbmlCoreElements; /** - * The logger of this parser - */ - private XMLLogger logger; - - /** * Log4j logger */ private static final transient Logger log4jLogger = Logger.getLogger(SBMLCoreParser.class); @@ -148,13 +142,6 @@ } /** - * @return the logger - */ - public XMLLogger getLogger() { - return logger; - } - - /** * * @return the namespace URI of this parser. */ @@ -1223,14 +1210,6 @@ } } - /** - * @param logger - * the logger to set - */ - public void setLogger(XMLLogger logger) { - this.logger = logger; - } - /* (non-Javadoc) * @see org.sbml.jsbml.xml.WritingParser#writeAttributes(SBMLObjectForXML xmlObject, Object sbmlElementToWrite) */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 13:51:56
|
Revision: 2450 http://sourceforge.net/p/jsbml/code/2450 Author: niko-rodrigue Date: 2015-12-11 13:51:54 +0000 (Fri, 11 Dec 2015) Log Message: ----------- corrected the AbstractSBase.equals method to make sure to use '.equals' to compare the namespace attribute and not '==' as '==' can return false even when the two String are identicals, in some circumstances Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/AbstractSBase.java Modified: trunk/core/src/org/sbml/jsbml/AbstractSBase.java =================================================================== --- trunk/core/src/org/sbml/jsbml/AbstractSBase.java 2015-12-11 13:47:06 UTC (rev 2449) +++ trunk/core/src/org/sbml/jsbml/AbstractSBase.java 2015-12-11 13:51:54 UTC (rev 2450) @@ -84,7 +84,7 @@ /** * A logger for this class. */ - private static final Logger logger = Logger.getLogger(AbstractSBase.class); + private static final transient Logger logger = Logger.getLogger(AbstractSBase.class); /** * Generated serial version identifier. @@ -954,6 +954,7 @@ @Override public boolean equals(Object object) { boolean equals = super.equals(object); + if (equals) { /* * Casting will be no problem because the super class has just @@ -965,6 +966,7 @@ if (equals && sbase.isSetMetaId()) { equals &= sbase.getMetaId().equals(getMetaId()); } + /* * All child nodes are already checked by the recursive method in * AbstractTreeNode. We here have to check the following own items @@ -978,7 +980,8 @@ if (equals && sbase.isSetLevelAndVersion()) { equals &= sbase.getLevelAndVersion().equals(getLevelAndVersion()); } - equals &= sbase.getNamespace() == getNamespace(); + + equals &= getNamespace() != null ? getNamespace().equals(sbase.getNamespace()) : sbase.getNamespace() == null ; if (declaredNamespaces == null) { if (sbase.getDeclaredNamespaces() != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 13:47:09
|
Revision: 2449 http://sourceforge.net/p/jsbml/code/2449 Author: niko-rodrigue Date: 2015-12-11 13:47:06 +0000 (Fri, 11 Dec 2015) Log Message: ----------- corrected a potential NullPointerException in the TreeNodeAdapter(Object, TreeNode) constructor Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java 2015-12-11 13:43:13 UTC (rev 2448) +++ trunk/core/src/org/sbml/jsbml/util/TreeNodeAdapter.java 2015-12-11 13:47:06 UTC (rev 2449) @@ -87,9 +87,13 @@ super(); this.userObject = userObject; this.parent = parent; + if (parent instanceof TreeNodeWithChangeSupport) { - addAllChangeListeners(((TreeNodeWithChangeSupport) parent) - .getListOfTreeNodeChangeListeners()); + TreeNodeWithChangeSupport parentTreeNode = (TreeNodeWithChangeSupport) parent; + + if (parentTreeNode.getListOfTreeNodeChangeListeners() != null) { + addAllChangeListeners(parentTreeNode.getListOfTreeNodeChangeListeners()); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 13:43:16
|
Revision: 2448 http://sourceforge.net/p/jsbml/code/2448 Author: niko-rodrigue Date: 2015-12-11 13:43:13 +0000 (Fri, 11 Dec 2015) Log Message: ----------- corrected several potential NullPointerExceptions that could occur during the cloning of an SBMLDocument Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/SBMLDocument.java Modified: trunk/core/src/org/sbml/jsbml/SBMLDocument.java =================================================================== --- trunk/core/src/org/sbml/jsbml/SBMLDocument.java 2015-12-11 13:38:49 UTC (rev 2447) +++ trunk/core/src/org/sbml/jsbml/SBMLDocument.java 2015-12-11 13:43:13 UTC (rev 2448) @@ -117,7 +117,7 @@ /** * logger used to print messages */ - private transient Logger logger = Logger.getLogger(getClass()); + private static final transient Logger logger = Logger.getLogger(SBMLDocument.class); /** * Stores all the meta identifiers within this {@link SBMLDocument} to avoid @@ -489,7 +489,8 @@ } metaIds.put(sbase.getMetaId(), sbase); - if (logger.isDebugEnabled()) { + // logger can be null during cloning apparently + if (logger != null && logger.isDebugEnabled()) { logger.debug("SBMLDocument - #collectMetaIds - node = '" + sbase + "'"); } } @@ -513,6 +514,11 @@ * @return */ public boolean containsMetaId(String metaId) { + + if (mappingFromMetaId2SBase == null) { + mappingFromMetaId2SBase = new HashMap<String, SBase>(); + } + return mappingFromMetaId2SBase.containsKey(metaId); } @@ -1162,6 +1168,11 @@ * */ boolean registerMetaId(SBase sbase, boolean add) { + + if (mappingFromMetaId2SBase == null) { + mappingFromMetaId2SBase = new HashMap<String, SBase>(); + } + if (sbase.isSetMetaId()) { if (add) { // We should call checkMetaid if we want to throw IllegalArgumentException here when metaid already present This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 13:38:51
|
Revision: 2447 http://sourceforge.net/p/jsbml/code/2447 Author: niko-rodrigue Date: 2015-12-11 13:38:49 +0000 (Fri, 11 Dec 2015) Log Message: ----------- the ASTNode.equals method was failing when one of the double values was set to NaN. We should probably check all other equals methods for this problem Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/ASTNode.java Modified: trunk/core/src/org/sbml/jsbml/ASTNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-11 13:10:22 UTC (rev 2446) +++ trunk/core/src/org/sbml/jsbml/ASTNode.java 2015-12-11 13:38:49 UTC (rev 2447) @@ -2242,10 +2242,10 @@ && ast.getDenominator() == getDenominator(); } if ((ast.getType() == Type.REAL_E) && (type == Type.REAL_E)) { - equal &= ast.getMantissa() == getMantissa() + equal &= Double.isNaN(getMantissa()) ? Double.isNaN(ast.getMantissa()) : ast.getMantissa() == getMantissa() && ast.getExponent() == getExponent(); } else if (isReal() && ast.isReal()) { - equal &= ast.getReal() == getReal(); + equal &= Double.isNaN(getReal()) ? Double.isNaN(ast.getReal()) : ast.getReal() == getReal(); } equal &= isSetClassName() == ast.isSetClassName(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-11 13:10:25
|
Revision: 2446 http://sourceforge.net/p/jsbml/code/2446 Author: niko-rodrigue Date: 2015-12-11 13:10:22 +0000 (Fri, 11 Dec 2015) Log Message: ----------- corrected the MultiParser to properly write listOfSpeciesTypes and IntraSpeciesReaction Modified Paths: -------------- trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java Modified: trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java =================================================================== --- trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java 2015-12-10 15:51:11 UTC (rev 2445) +++ trunk/extensions/multi/src/org/sbml/jsbml/xml/parsers/MultiParser.java 2015-12-11 13:10:22 UTC (rev 2446) @@ -30,7 +30,9 @@ import org.apache.log4j.Logger; import org.mangosdk.spi.ProviderFor; +import org.sbml.jsbml.AbstractSBase; import org.sbml.jsbml.Compartment; +import org.sbml.jsbml.JSBML; import org.sbml.jsbml.ListOf; import org.sbml.jsbml.Model; import org.sbml.jsbml.SBMLDocument; @@ -39,6 +41,7 @@ import org.sbml.jsbml.Species; import org.sbml.jsbml.SpeciesReference; import org.sbml.jsbml.ext.SBasePlugin; +import org.sbml.jsbml.ext.multi.IntraSpeciesReaction; import org.sbml.jsbml.ext.multi.MultiCompartmentPlugin; import org.sbml.jsbml.ext.multi.MultiConstants; import org.sbml.jsbml.ext.multi.MultiModelPlugin; @@ -68,7 +71,7 @@ /** * A {@link Logger} for this class. */ - private Logger logger = Logger.getLogger(MultiParser.class); + private static final transient Logger logger = Logger.getLogger(MultiParser.class); /** * @@ -111,7 +114,20 @@ listOfElementsToWrite = super.getListOfSBMLElementsToWrite(treeNode); } - // TODO - IntraSpeciesReaction child + // IntraSpeciesReaction children + if (treeNode instanceof IntraSpeciesReaction) { + String sbmlNamespace = JSBML.getNamespaceFrom(((IntraSpeciesReaction) treeNode).getLevel(), ((IntraSpeciesReaction) treeNode).getVersion()); + + for (Object child : listOfElementsToWrite) { + if (child instanceof AbstractSBase && ((AbstractSBase) child).getNamespace() == null) { + AbstractSBase sbase = (AbstractSBase) child; + logger.debug("Found one suspect Model child: " + sbase.getElementName() + ". Setting the SBML namespace to it."); + sbase.setNamespace(sbmlNamespace); + } + } + } + + return listOfElementsToWrite; } @@ -257,6 +273,13 @@ { super.writeElement(xmlObject, sbmlElementToWrite); + // listOfBindingSiteSpeciesTypes if a BindingSpeciesType is the first element of the list of SpeciesTypes. + if (xmlObject.isSetName() && xmlObject.getName().equals("listOfBindingSiteSpeciesTypes")) { + xmlObject.setName(MultiConstants.listOfSpeciesTypes); + } + + // listOfIntraSpeciesReactions cannot happen as core ListOf don't depend on the first element for their name. + if (logger.isDebugEnabled()) { logger.debug("writeElement: " + sbmlElementToWrite.getClass().getSimpleName()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-10 15:51:13
|
Revision: 2445 http://sourceforge.net/p/jsbml/code/2445 Author: niko-rodrigue Date: 2015-12-10 15:51:11 +0000 (Thu, 10 Dec 2015) Log Message: ----------- added a class to test SBMLDocument.clone and .equals on the whole sbml-test-suite + corrected the clone constructor of SBaseRef that was not cloning it's child SBaseRef Modified Paths: -------------- trunk/NEWS.txt trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java Added Paths: ----------- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java Modified: trunk/NEWS.txt =================================================================== --- trunk/NEWS.txt 2015-12-10 15:08:42 UTC (rev 2444) +++ trunk/NEWS.txt 2015-12-10 15:51:11 UTC (rev 2445) @@ -12,10 +12,11 @@ - The whole SBMLDocument was not serializable, few classes were not implementing the Serializable class. This should be fixed now. Thanks - to Jens Thargor who reported the problem. + to Jens Einloft who reported the problem. + - The clone constructor for SBaseRef was not cloning properly it's child + SBaseRef. - =========================================================================== Version 1.1 (09-12-2015) =========================================================================== Added: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java =================================================================== --- trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java (rev 0) +++ trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java 2015-12-10 15:51:11 UTC (rev 2445) @@ -0,0 +1,228 @@ +/* + * $Id$ + * $URL$ + * ---------------------------------------------------------------------------- + * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML> + * for the latest version of JSBML and more information about SBML. + * + * Copyright (C) 2009-2015 jointly by the following organizations: + * 1. The University of Tuebingen, Germany + * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK + * 3. The California Institute of Technology, Pasadena, CA, USA + * 4. The University of California, San Diego, La Jolla, CA, USA + * 5. The Babraham Institute, Cambridge, UK + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. A copy of the license agreement is provided + * in the file named "LICENSE.txt" included with this software distribution + * and also available online as <http://sbml.org/Software/JSBML/License>. + * ---------------------------------------------------------------------------- + */ + +package org.sbml.jsbml.test; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; + +import javax.xml.stream.XMLStreamException; + +import org.sbml.jsbml.SBMLDocument; +import org.sbml.jsbml.SBMLException; +import org.sbml.jsbml.SBMLReader; +import org.sbml.jsbml.SBase; +import org.sbml.jsbml.util.filters.Filter; + + +/** + * Test class used to check that jsbml SBMLDocument equals method return true when passed it's clone. + * + * @author Nicolas Rodriguez + * @version $Rev$ + * @since 1.2 + */ +public class TestSBMLDocumentClone { + + public TestSBMLDocumentClone() { + } + + /** + * Checks that jsbml {@link SBMLDocument#equals(Object)} method return true against it's clone. + * + * <p>If passed a folder, it will look recursively for all xml files. Particularly setup to go through + * the sbml-test-suite folders and test all valid models there. + * + * @param args the file or folder to test + * @throws SBMLException + */ + public static void main(String[] args) throws SBMLException { + + if (args.length < 1) { + System.out.println("Usage: java org.sbml.jsbml.test.TestSBMLDocumentClone sbmlFileName|folder"); + System.exit(0); + } + + // this JOptionPane is added here to be able to start visualVM profiling + // before the reading or writing is started. + // JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green."); + + File argsAsFile = new File(args[0]); + List<File> files = null; + + if (argsAsFile.isDirectory()) + { + files = findAllXMLFiles(argsAsFile, new ArrayList<File>()); + } + else + { + files = new ArrayList<File>(); + files.add(argsAsFile); + } + + double globalInit = Calendar.getInstance().getTimeInMillis(); + double globalEnd = 0; + int nbNotEquals = 0; + List<File> fileNotEquals = new ArrayList<File>(); + + System.out.println("Going to test '" + files.size() + "' files !"); + + for (File file : files) + { + + double init = Calendar.getInstance().getTimeInMillis(); + // System.out.println(Calendar.getInstance().getTime()); + + String fileName = file.getAbsolutePath(); + + System.out.printf("Reading %s\n", fileName); + + try { + + SBMLDocument doc = new SBMLReader().readSBML(file, null); + + boolean equals = doc.equals(doc.clone()); + + if (!equals) { + nbNotEquals++; + fileNotEquals.add(file); + System.out.printf("Reading %s\n", fileName); + System.out.println(file.getAbsolutePath() + " is not equals to it's clone !!!!!!!!!!!!!!!!!!!!!!!!!!"); + + @SuppressWarnings("unchecked") + List<SBase> notEqualSBases = (List<SBase>) doc.filter(new Filter() { + + @Override + public boolean accepts(Object o) { + if (o instanceof SBase) { + SBase s = (SBase) o; + + return ! s.equals(s.clone()); + } + return false; + } + }); + + System.out.println(notEqualSBases); + } + } + catch (XMLStreamException e) + { + e.printStackTrace(); + } + catch (IOException e) + { + e.printStackTrace(); + } + catch (Exception e) + { + System.out.printf("Reading %s\n", fileName); + nbNotEquals++; + fileNotEquals.add(file); + e.printStackTrace(); + } + + // System.out.println(Calendar.getInstance().getTime()); + double end = Calendar.getInstance().getTimeInMillis(); + globalEnd = end; + double nbMilliseconds = end - init; + + if (files.size() == 1) + { + System.out.println((int)nbMilliseconds); + } + } + + if (nbNotEquals > 0) { + System.out.println("Found " + nbNotEquals + " documents not equals to their clone or failing to clone."); + + for (File file : fileNotEquals) { + System.out.println(file.getAbsolutePath()); + + } + } + + if (files.size() > 1) + { + double globalNbMilliseconds = globalEnd - globalInit; + double globalSeconds = globalNbMilliseconds / 1000; + + System.out.println("Reading and writing " + files.size() + " models took : " + globalSeconds + " seconds."); + System.out.println("Mean per model = " + globalSeconds / files.size() + " seconds (" + globalNbMilliseconds / files.size() + " ms)."); + + System.out.println((int)globalNbMilliseconds); + } + } + + private static List<File> findAllXMLFiles(File argsAsFile, List<File> filesList) + { + // System.out.println("Analyzing directory '" + argsAsFile.getAbsolutePath() + "'"); + + File[] xmlFiles = argsAsFile.listFiles(new FileFilter() { + + @Override + public boolean accept(File pathname) + { + if (pathname.getName().contains("-jsbml.xml") || pathname.getName().contains("fail") + || pathname.getName().contains("sedml")) + { + return false; + } + + if (pathname.getName().endsWith(".xml")) + { + return true; + } + + return false; + } + }); + + File[] directories = argsAsFile.listFiles(new FileFilter() { + + @Override + public boolean accept(File pathname) + { + return pathname.isDirectory(); + } + }); + + if (xmlFiles.length > 0) { + filesList.addAll(Arrays.asList(xmlFiles)); + } + + if (directories.length > 0) { + for(File directory : directories) { + findAllXMLFiles(directory, filesList); + } + } + + return filesList; + } + + +} Property changes on: trunk/examples/test/src/org/sbml/jsbml/test/TestSBMLDocumentClone.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Rev URL \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java =================================================================== --- trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java 2015-12-10 15:08:42 UTC (rev 2444) +++ trunk/extensions/comp/src/org/sbml/jsbml/ext/comp/SBaseRef.java 2015-12-10 15:51:11 UTC (rev 2445) @@ -126,7 +126,7 @@ setMetaIdRef(obj.getMetaIdRef()); } if (obj.isSetSBaseRef()) { - setSBaseRef(obj.getSBaseRef()); + setSBaseRef(obj.getSBaseRef().clone()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-10 15:08:44
|
Revision: 2444 http://sourceforge.net/p/jsbml/code/2444 Author: niko-rodrigue Date: 2015-12-10 15:08:42 +0000 (Thu, 10 Dec 2015) Log Message: ----------- we decided to put the list of listeners as transient in AbstractTreeNode so that they don't need to implements serializable Modified Paths: -------------- trunk/NEWS.txt trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java Modified: trunk/NEWS.txt =================================================================== --- trunk/NEWS.txt 2015-12-10 14:45:31 UTC (rev 2443) +++ trunk/NEWS.txt 2015-12-10 15:08:42 UTC (rev 2444) @@ -2,6 +2,21 @@ =========================================================================== +Version 1.2-X (XX-XX-2016) +=========================================================================== + + * New Features: + + + * Bug Fixes: + + - The whole SBMLDocument was not serializable, few classes were not + implementing the Serializable class. This should be fixed now. Thanks + to Jens Thargor who reported the problem. + + + +=========================================================================== Version 1.1 (09-12-2015) =========================================================================== Modified: trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java =================================================================== --- trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-10 14:45:31 UTC (rev 2443) +++ trunk/core/src/org/sbml/jsbml/AbstractTreeNode.java 2015-12-10 15:08:42 UTC (rev 2444) @@ -110,7 +110,7 @@ /** * {@link List} of listeners for this component */ - protected List<TreeNodeChangeListener> listOfListeners; + protected transient List<TreeNodeChangeListener> listOfListeners; /** * The parent element of this {@link Annotation}. Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443) +++ trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 15:08:42 UTC (rev 2444) @@ -22,7 +22,6 @@ package org.sbml.jsbml.util; import java.beans.PropertyChangeListener; -import java.io.Serializable; import javax.swing.tree.TreeNode; @@ -36,7 +35,7 @@ * @since 0.8 * @version $Rev$ */ -public interface TreeNodeChangeListener extends PropertyChangeListener, Serializable { +public interface TreeNodeChangeListener extends PropertyChangeListener { /** * The {@link TreeNode} passed to this method has just been added to the This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-10 14:45:33
|
Revision: 2443 http://sourceforge.net/p/jsbml/code/2443 Author: niko-rodrigue Date: 2015-12-10 14:45:31 +0000 (Thu, 10 Dec 2015) Log Message: ----------- making sure that the whole SBMLDocument is serializable. Few classes were missing and were not serializable before. Modified Paths: -------------- trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java Modified: trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-10 10:07:57 UTC (rev 2442) +++ trunk/core/src/org/sbml/jsbml/util/SimpleTreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443) @@ -22,6 +22,7 @@ package org.sbml.jsbml.util; import java.beans.PropertyChangeEvent; +import java.io.Serializable; import java.text.MessageFormat; import javax.swing.tree.TreeNode; @@ -38,12 +39,12 @@ * @since 0.8 * @version $Rev$ */ -public class SimpleTreeNodeChangeListener implements TreeNodeChangeListener { +public class SimpleTreeNodeChangeListener implements TreeNodeChangeListener, Serializable { /** * A {@link Logger} for this class. */ - private Logger logger; + private static transient Logger logger; /** * Creates an {@link TreeNodeChangeListener} that writes all events to the Modified: trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java =================================================================== --- trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 10:07:57 UTC (rev 2442) +++ trunk/core/src/org/sbml/jsbml/util/TreeNodeChangeListener.java 2015-12-10 14:45:31 UTC (rev 2443) @@ -22,6 +22,7 @@ package org.sbml.jsbml.util; import java.beans.PropertyChangeListener; +import java.io.Serializable; import javax.swing.tree.TreeNode; @@ -35,7 +36,7 @@ * @since 0.8 * @version $Rev$ */ -public interface TreeNodeChangeListener extends PropertyChangeListener { +public interface TreeNodeChangeListener extends PropertyChangeListener, Serializable { /** * The {@link TreeNode} passed to this method has just been added to the Modified: trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java 2015-12-10 10:07:57 UTC (rev 2442) +++ trunk/core/src/org/sbml/jsbml/xml/XMLAttributes.java 2015-12-10 14:45:31 UTC (rev 2443) @@ -21,6 +21,7 @@ */ package org.sbml.jsbml.xml; +import java.io.Serializable; import java.util.ArrayList; import org.sbml.jsbml.JSBML; @@ -39,7 +40,7 @@ * @since 0.8 * @version $Rev$ */ -public class XMLAttributes { +public class XMLAttributes implements Serializable { /** * Modified: trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java 2015-12-10 10:07:57 UTC (rev 2442) +++ trunk/core/src/org/sbml/jsbml/xml/XMLNamespaces.java 2015-12-10 14:45:31 UTC (rev 2443) @@ -21,6 +21,7 @@ */ package org.sbml.jsbml.xml; +import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Map; @@ -61,7 +62,7 @@ * @since 0.8 * @version $Rev$ */ -public class XMLNamespaces { +public class XMLNamespaces implements Serializable { /** * HashMap<Prefix, URI> Modified: trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java =================================================================== --- trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java 2015-12-10 10:07:57 UTC (rev 2442) +++ trunk/core/src/org/sbml/jsbml/xml/XMLTriple.java 2015-12-10 14:45:31 UTC (rev 2443) @@ -21,6 +21,7 @@ */ package org.sbml.jsbml.xml; +import java.io.Serializable; import java.text.MessageFormat; /** @@ -61,7 +62,7 @@ * @since 0.8 * @version $Rev$ */ -public class XMLTriple { +public class XMLTriple implements Serializable { /** * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-10 10:08:00
|
Revision: 2442 http://sourceforge.net/p/jsbml/code/2442 Author: niko-rodrigue Date: 2015-12-10 10:07:57 +0000 (Thu, 10 Dec 2015) Log Message: ----------- updated pom files to 1.2-SNAPSHOT Modified Paths: -------------- trunk/core/pom.xml trunk/dev/maven/pom.xml trunk/extensions/arrays/pom.xml trunk/extensions/comp/pom.xml trunk/extensions/distrib/pom.xml trunk/extensions/dyn/pom.xml trunk/extensions/fbc/pom.xml trunk/extensions/groups/pom.xml trunk/extensions/layout/pom.xml trunk/extensions/multi/pom.xml trunk/extensions/pom.xml trunk/extensions/qual/pom.xml trunk/extensions/render/pom.xml trunk/extensions/req/pom.xml trunk/extensions/spatial/pom.xml trunk/modules/android/pom.xml trunk/modules/celldesigner/pom.xml trunk/modules/compare/pom.xml trunk/modules/libSBMLcompat/pom.xml trunk/modules/libSBMLio/pom.xml trunk/modules/pom.xml trunk/modules/tidy/pom.xml trunk/pom.xml Property Changed: ---------------- trunk/modules/tidy/ Modified: trunk/core/pom.xml =================================================================== --- trunk/core/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/core/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -30,7 +30,7 @@ <parent> <groupId>org.sbml.jsbml</groupId> <artifactId>jsbml-parent</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> <!-- Modified: trunk/dev/maven/pom.xml =================================================================== --- trunk/dev/maven/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/dev/maven/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <groupId>org.sbml.jsbml</groupId> <artifactId>jsbml</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <packaging>jar</packaging> <properties> Modified: trunk/extensions/arrays/pom.xml =================================================================== --- trunk/extensions/arrays/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/arrays/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/comp/pom.xml =================================================================== --- trunk/extensions/comp/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/comp/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/distrib/pom.xml =================================================================== --- trunk/extensions/distrib/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/distrib/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/dyn/pom.xml =================================================================== --- trunk/extensions/dyn/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/dyn/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/fbc/pom.xml =================================================================== --- trunk/extensions/fbc/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/fbc/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/groups/pom.xml =================================================================== --- trunk/extensions/groups/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/groups/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/layout/pom.xml =================================================================== (Binary files differ) Modified: trunk/extensions/multi/pom.xml =================================================================== --- trunk/extensions/multi/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/multi/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/pom.xml =================================================================== --- trunk/extensions/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -32,7 +32,7 @@ <parent> <groupId>org.sbml.jsbml</groupId> <artifactId>jsbml-parent</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/qual/pom.xml =================================================================== --- trunk/extensions/qual/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/qual/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/render/pom.xml =================================================================== --- trunk/extensions/render/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/render/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> @@ -40,7 +40,7 @@ <dependency> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>jsbml-layout</artifactId> - <version>1.1-b1</version> + <version>${project.version}</version> </dependency> </dependencies> Modified: trunk/extensions/req/pom.xml =================================================================== --- trunk/extensions/req/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/req/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/extensions/spatial/pom.xml =================================================================== --- trunk/extensions/spatial/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/extensions/spatial/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.ext</groupId> <artifactId>ext</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Modified: trunk/modules/android/pom.xml =================================================================== --- trunk/modules/android/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/android/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1-b1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> Modified: trunk/modules/celldesigner/pom.xml =================================================================== --- trunk/modules/celldesigner/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/celldesigner/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -27,7 +27,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1-b1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> @@ -44,15 +44,15 @@ <dependency> <groupId>org</groupId> <artifactId>libsbmlj</artifactId> - <version>3.4.1</version> + <version>3.4.1</version> <!-- TODO: versions are not up to date --> </dependency> <dependency> <groupId>org</groupId> - <artifactId>sbmlj</artifactId> + <artifactId>sbmlj</artifactId> <!-- what is sbmlj ? --> <version>1.0.0</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: trunk/modules/compare/pom.xml =================================================================== --- trunk/modules/compare/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/compare/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -27,7 +27,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1-b1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> @@ -51,14 +51,6 @@ <artifactId>libsbmlj</artifactId> <version>5.0.0</version> </dependency> - <!-- - <dependency> - <groupId>org.sbml.jsbml</groupId> - <artifactId>jsbml-.8-rc1-with-dependencies</artifactId> - <version>0.8.0</version> - </dependency> - --> - </dependencies> </project> Modified: trunk/modules/libSBMLcompat/pom.xml =================================================================== --- trunk/modules/libSBMLcompat/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/libSBMLcompat/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1-b1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> Modified: trunk/modules/libSBMLio/pom.xml =================================================================== --- trunk/modules/libSBMLio/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/libSBMLio/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -27,7 +27,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1-b1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> @@ -42,4 +42,4 @@ <version>5.4.1</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: trunk/modules/pom.xml =================================================================== --- trunk/modules/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -33,7 +33,7 @@ <parent> <groupId>org.sbml.jsbml</groupId> <artifactId>jsbml-parent</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../</relativePath> </parent> Index: trunk/modules/tidy =================================================================== --- trunk/modules/tidy 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/tidy 2015-12-10 10:07:57 UTC (rev 2442) Property changes on: trunk/modules/tidy ___________________________________________________________________ Modified: svn:ignore ## -7,3 +7,4 ## .apt_generated .factorypath .settings +target Modified: trunk/modules/tidy/pom.xml =================================================================== --- trunk/modules/tidy/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/modules/tidy/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <parent> <groupId>org.sbml.jsbml.modules</groupId> <artifactId>modules</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2015-12-08 13:43:58 UTC (rev 2441) +++ trunk/pom.xml 2015-12-10 10:07:57 UTC (rev 2442) @@ -28,7 +28,7 @@ <groupId>org.sbml.jsbml</groupId> <artifactId>jsbml-parent</artifactId> - <version>1.1</version> + <version>1.2-SNAPSHOT</version> <packaging>pom</packaging> <name>JSBML</name> <inceptionYear>2009</inceptionYear> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-08 13:44:02
|
Revision: 2441 http://sourceforge.net/p/jsbml/code/2441 Author: niko-rodrigue Date: 2015-12-08 13:43:58 +0000 (Tue, 08 Dec 2015) Log Message: ----------- put back the escapeinside option for the listings, so that we can add some Latex code inside the exmaples as before Modified Paths: -------------- trunk/core/doc/user_guide/User_Guide.pdf trunk/core/doc/user_guide/User_Guide.tex Modified: trunk/core/doc/user_guide/User_Guide.pdf =================================================================== --- trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:10:33 UTC (rev 2440) +++ trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:43:58 UTC (rev 2441) @@ -25,7 +25,7 @@ endstream endobj 285 0 obj << -/Length 2690 +/Length 2691 /Filter /FlateDecode >> stream @@ -34,23 +34,28 @@ Хq\x9A\xA5\xC1\xCD2\xF85\xFC\xCDdvt\xB5t\xDDE3\x95\xE8\xF0-\xFD\xD8ӵ\xA2\xEB\xD2OR\x89 W\xF4\xA3\xAF\xB8\xA4\xD7t}E\xD7\xF7t\xBD\x8A~\xBB\xB9<\x93g-P}\xB2\xDA\xDEv\xC3F\xABU\xDE\xA8y\xDD\x9C@\x80!I\x80r\xBC\xCC\xC9ĝ,w\x91(B[v\xDE`!\xC3ݭ\xD2z}0\xD9k\xC9c\xA9\x81JL1-+Ͳ\xCA\xE7\xF3)c2𢖰\x95a⏑\xD4\xCD"\\xE0>\xF0\xA6\xF6\xCA?F\xD0`\xD1\xCC\xF0\xB4\x816m#\xFE5aG!\xE2|d\xC5\xE2\xF9r\xD2 -\xEBL\x8C\xADxY\xDB/\xAC\xF3\xE6Λ\x81.\xBB %Y\xE7\xF2h\xB3SJf\xCAdq\x9A`OA)\x83\xA6UX\xF2\xB0\xDA\xD8\xC6̩v\xDFu\xB6\xDCO(\xE8\xB1B\x8F\xB4Nn-Mc\x9Dd\xA7[+ɳv\xC7Q\xF0\xFAVe\xD9nҍ\xBAr\xACc҉\xC0\xC7\xC4\xE4c\xDFն\xB1\xE7\xB5_"\x9D"\xAF\x81\xA0\xDDۥ\xFDc\xDASYV<\xA5j\xA62P\x96\xC7 \xBE\x89 -@\xB6\xF4;\x82V\xB2\xDAW\xF0\xFBVMTB'\xDAz\xCAw*.\x9EVk \xE4\xE9x\x87o\xD0G5\xCAn\xD9y-)\xA4\x90O)\x84]\xA9\xC6 -Y.\xC6\xC4] ;\xA1-\xFE\x81\xF7\xF6>V\xFE(\xA7\xD4e\xE0\xFF\xB1:;\x99RfRCK!\xA10(H\xA84\xF7'p\xD7\x80EՖ\xB1aͬ\xE1\xE7\x9F#ڎ\xF2N\xB5.\xFBv7\x99s\xDCg\x85:M:i\xD0\xC5I\xC7\xF9\xF2 -$H7\xB4\xD7]\xE4\xEA:\xEC\xF7V\xA9$ʒ0f~\x8AT\x96u\x9B\xC9x84\xB1\x92iHp\x96S1.\xCF\xB46\xFC\xFF@E\x98\x88=Pm=1`tJ\\xF0%=\xCD\x81& -\xBB\xD1ߗ<\xC8K\xD1U\xDBm -P\xB1\xDC:\xA7\xE00\xDEZ\xEB\xD4\xF4\x9C\xF1\x96x\xB6uv\xE2"<]\xBD\xA7\xD7f\xD0\xF9\x8ET@S\xEF\xD8b7\xE0$t}\xCB\xFF\xBB}s\xDF\xE4Y\xF7\xF0`\xB0{\xD5G\x9D\xB0+\xD4t\xB6\xB3\x8B\x9E\x8C\x95|ȳ\xF0rl\xAD\xD8R\xAF)<\x9C`\xB9\xF4\xCA)\xF5\xE1v?-\xFFzq\xF59\x912D\xE16\x94"\xEB\x84p\xF0\x92\xE6Ҽ{\xB4\x8Bv\xB5\xDA\xD7<\x86\xB4\xE5Pvٓ+a5S\x8B\x9AF\x97\x95OM\x8A\x8BD\xB9\xA8\xEA\xEA\xA8,`\xF7aYoy\xA0^\xB9\xC0\xB2\xA3#@\xA5{[\x87\x80\xAE\xFC>]#Տ\xBA-.\xDDG\xA5H{:\xBD6\xC4:\xE1\xEAa\xB1u\xC9\xC45\xB15\xB2\xA7 x\xFC\x81e\x87\x9D\x86Ǭ\xF5\x86\x94\xEE\xBDa\xE5:*\xEE\xD9='Ӿ?\xBCg$\xAB\xCD\xD0\xC9g\x9E\xC8\]\xE2G\xD9 -@-\x8E\xEF:p\xB0\xDA\xF4\xCE\xE5ph\xC4\xCC\xC6\xC3\xE83E!\xEA\xC1\xE3\xC5K\xB7\xDA;\xDAI\xDDw\xD6%zc\x92!\x88\x86\x99μ\xB2j\xEC\xD2Ir\xC3\xF3\xC0c\xDB]\xB2\xC54\xDB=\x8A\xAD<\xCE4\x9C+\xB7\xF9\x89\x92\x815\x90\x9AJ\x85\xF7x/\xC7Ik1%H)\xFE1\x99JzYH\xFF)L\xEA\x9AE\xF9\x87\x94CZfL\xB9k\xFD\\xDF+\xF4\x87yn\xAC\\x96\xDB\xC3+\xC8\xFE\xCC\xF1\xA7ןn\xE3[\xE2\xE8Ót*\x91\xC4E\x91\xA2SZ\xC4B\x98 \xCBt,\x99L\x97ׯ\xDEG>\x932\x8E\xD0e\xD7U\xC0n`\xE0\xE4I(b\x81\x94 \x81 #K3\x947S\xB4i)K\xE1\xE8\xF9\xBA]\xECqu\xAB\xADӣ\xFC4\xFCe\xFCUlP\xB6)\xC2\xE4<\xE15NX\xD8f\xEE\xEF\xF8\xB9\xA4I"e#\xC07\xDAV\x9Aǩ\x80\xCD\xEB,N\x8Cb+^F\x82BT߁\xACv\x87\xB7ݰ\x87\xD1j\x95\x837j^\xF7\xA7\xE0GH\xA0/s2q'\xCB]$\x8AЖ\x9D7X\xC8pw\xAB\xB4^L\xF6Z\xF2X\xEAB\xA0\x93CL\xCB@\xC7J\xB3\xAC\xF2\xF9|ʘ\xBC\xA8%le\x98\xF8c$5F\xB3\xB8\xBC\xA9\xBD\xF2\x8F4X43<m\xA0M\xDBH\x87M\xD8Q\x888Y\xB1x\xBE\x9C\xB4\xC2\xC4:c+^\xD6\xF6뼹\xF3f\xA0\x83\xCBnBI\x96ƹ<\xDA씒\x992Y\x9C\xA6\xD8SPʠ\xA9@F\x96\xB0\xA3<\xAC6v\x841s\xAA\xDDw\x9D-\xF7Jz\xAC\xD0#\xAD\x93[K\xD3X'\xD9\xE9\xD6J\xF2\xAC\xDDq\xBC\xBEUY\xB6\x9Bt#\x84\xAE\xEB\x98t"\xF011\xF9X\xC7w\xB5m\xEC\xC6y\xED\x97H\xA7\xC8k \xE8_@\xF7vi\xFF\x98\xF6T\x96O\xA9\x9A\xA9\x94\xA5\xC51\x88o\xA2Ѓ-\xFD\x8E\xA0\x95\xAC\xF6\xFC\xBEUF\x95Љ\xB6\x9E\xA7\xD5\xC8y:\xDE\xE1\xF4Q\x8D\xB2[v@ +j5:T\x86U\xDF#Y\xD6S\x90B +)\xE4S +a\x97F\xAA\xB1B\x96\x8B1qW\xC2Nh\x8B?Dཽ\x8F\x95?\xCA)u\xF8\xAC\xCEN\xA6\x94\x99\xD4P\xC7R\x88D( +*\xCD\xFD ܵ`QA\xB5elEX3k\xF8\xF9\xE7Ȅ\xB6\xA3\xBCS\xAD˾\xDDM\xE6\xF7Y\xA1N\x93N\x9A\xC4tq\xD2q\xBE|\x85 \xD2 +\xEDu\xB9\xBA\xFB\xBDU*\x89\xB2$\x8Cق\x9F"\x95\x85e\xDDu\xEDf2@d\x9C<\x96Ptz\xFBi\xEF?hU\xFDI\x90\xF4\x94?%%\xDD\xE3<\xA7\xC0\x9F\xED\x90ܮ\\xF4\xFF)\xECZ\xE0\xF2\xF9V\xA5 gX\xEAj&\x82&\x89\x8DʞNp Xưd&`-\xB4\cFah\xFC?%\xF8!\x8Dc\x94\xD3\xF9Q%\xE2t}\xD5\xE3\xFF}O\x99\xBCݔ\x8EW\xE5\xEA6I$\xF3L@\\xF9\xF1\xAF\xD2\xC1 \xB1hNa +i\x82\xF6\xAE \xBDC\x9D\xC4͛\\x9Cr\xE1P\xDES\xE8>+Ԇ8\x8E\xBA~̕\xBD\xBF\xB18\xF8|\x90\xA0x\xB9\xE7Q\xB3\xF5\xAB:>x\xC7\xE6\x87.kI\xDB \xFD\xF4\xAF\xA983pf\xD3\xC7;^~\x85\xFA\x88\xDFG\xEC\xD8ao\xB0\xF5M刽gs\xE2\xD2}u.\xBFDYJ}\xDCh6\xF9\x8CYB\xEC]\xF8\xBBPF\xDF{ʴ\x8D=\xC2l\xCFP\xEB\xC0\xB2/};\xD0\xEC\xB0\x86T\x95\xA8\xF3\xD8%\x8E\xD8Eۃ\xA5\xFDQ\xB0J\xEE\xF9\x9E\xFBS:S\xD8\xD4}¾^T:{\xD8v\x86\x8A\xD4D\xAA\xAA\xCA\xC7\xEE\xF7\xBD=\x8DQ\xA8&p0\xBA#\x94\xB9\xCD\xE24\x9BkW\xFF\xAE\\x92\xF2!w +\x89\xEBWQ\xE2 +4\xEE\xDC\xC7f g\xD6kY\x83\xFEp\x84\x88O\xD2-\xBA#s\xF0E\xB8\xFC\x81S\xBF\xE7G\xC7C\x8E\x94t<i\xD7\xFC\x90*j\x89\xA9\xFE\x97\xEAg\xB6yE\x84&\x80\xF7\xE5ple\x82\xC7+\xA6\x89x\x9F\x84\xFFv\x96\x89p6/;\xBFl\xC9kV.p\xEB=\xCF\xF7(\xE3}Ny\xD7²r\xE3֓\xAC/h/\xB7\x944\xE9^\xD8 t\x84\xD7\xE2\x84;P\x9E\xA1ts\xB5\xD6:#\xFEZ_\xC6\xDCo\xC9\xCB\xC3\xBBÙ\xECk\xAD5\xA4Wr/\xA0X-ʚ\xC7P\xE5\xE0T\x87\xB4*\xB0\xE7+\xB4f\xAB\xA63\xB5hK\xF0x +t\xB9w\xE7gs}H8ܔC\x9DvP\x97\xFDx\x8A'\xBE7\xC1Wg3t\x80I\xEE\xE8tW\xAD\x89?dڌ\x88k\xA9a\xACd\x9C\xE5T\x8C\xB0\xA1\xCB3\xAD +\xFF?P&bT[O\x82\x97|\xC9DOE3D\xA0IîEF\xF4\xF7%\xF2Rt\xD5v[\xD4C,\xB7\xCE)8\x8C\xB7\xD6:5=\xE7E\xBC%\x9Em\x9D\x9D\xB8OW\xEF\xE9\xB54E>\x82#\xD0\xD4;\xB6\xD8 +x\x85G \x9DF\xDF\xF2\xFFn_\xF5\xE5\xDC7y\xD6=<\xEC^\xF5Q'\xEC +5\x9D\xED\xEC\xA2'c%\xF2,\xBC\x9BC+\xB6\xD4kE +'\xD8A.\xBDrJ=E\xB8\xDD\x80\xC0Ch\x80LX\xE2\x8B7\xCCm\xA7\xAB\x98ؑԅ\xC1T\xEERp\xE8\xE3\xCAIq۶\xB3#\x93\xDEa\xDA\xE8YZ\xB7\xF7\x84\xDBr\xC4\xF6l\xB4\x87\xA7+\x93\xBAfQ\xFE!吖\xD9S\xEEZ?\xD7\xF7 +\xFDa\x9E+\x97\xE5\xF60\xC0\x81\xE2\x899\xA3\xC7m\xB6#\xF3\xC6\x98$\xB7\xA7\x91"\xD5\x87\xCD\xFE(\xA3\x8C\xDA\xC3\xCBQ&\x89G/I=i]9\xA2\xAFh\x81>\x8E\xDCC\xBB\xA3\xFD\xBB:\xD7U\x94\xE2\x85\x83\xDF\xF68D\x89J\xA3\x98y\x89/\xA8\xDE\xF1\xFD\xD27\xF1\xAF\xB0\xE13\xA6\xDB\xFC\x86\xA3\xC1h8~|)B<>q]> +̻\xA1\xCB'\xD7vQ\xFEf\x94\xE0w\x9F\xBF\xB6\x81\\xFE4~\xF2\xF1-~\x960Дg\x99\xCA\xF9\xC5ؠ\x8Cgq\xD7\xF7\xDBݼ\xA9\xE3v\xB7\xBE\xB8nWX\xED\xE2|uq\x{197A53}\xD6_\xA4\x90\xF5L\xEE\xB5\xC4\xEE\x95[ab\xAD\xDD\xC9!M\xCF\xD9\xFF\xB2\xEA\xFBn\xF8DBn[\x8F_g|+\xB2\x88\xB5\xD2_\x83\x8A\xEE\xBE\xE9.~\xC7@\xF2Tb\x90c\x84S\x8E\xFA/\xC1\xC1\xA8. p\xF0#\x9D\x8F \xA7&h\xEB\x8C\xD0\xFC\xF5:Yh\xFE\x84{\xB8}\xD8\xFE\xC1ŻF\xAF\xDBg\xCE\xFC\xD2uΜ\xBFI- endstream endobj 283 0 obj << @@ -13568,37 +13573,35 @@ endstream endobj 672 0 obj << -/Length 4569 +/Length 4559 /Filter /FlateDecode >> stream -x\xDA\xED]m\x8F\xDB8\x92\xFE\x9E_\xE1\x8F2\xD3")\x91\xD2N`2\xB737\xC1̾L\xB2_nԶܭ\x89mym\xB9;\xBDX\xDCo\xBF*\xBE\x89rw\xA7%\x99>\x87 \x88\x9B\xA2\xA8b\xB1XO\xB1H\xA5\x98\xB0t\xBB\x9F\xFD\xB5w\xA1~~\xFB\xE9E\xAC\x9F\xD8\xFF\xAA@{ w1\xFF\x91r1\x91$\x8Bc9y\xBF\x9A\xF0\&҉L"\xA9\x98\xBC_N~\x8Fޕ\x8B\xA6\xAA\xB7\xD3\x93YD %ә`,\xFA\xEBUST\xDBj{\xADoۥN.\xEF\xED\xBB7\xBF\xFE2\xFD\xF8\xFEmOn\xE3.R -?R\xEA2\x9D(3\xFF1ˁ_\xCE\xE1\xE0w\xC6'"\x9F\xCCR(I5\xBB\xC0M\xC5c\xD2/\xDCߞ\xFBְo\x82\xFC.Ⱦ\xA6\x88N\xF0\xDC\xD2 \xC8\xF9\xF3\xFB\xFF\x84\xEC\xFEщd~hNd\xCA&\x8B\xCD\xCCM\x9AQ:\xE1\x84g`\xBC\xCA\xC9\xEA\xC5\xDFG\xD6\xD5\xCBX*V\xF0\x96\xFA9\xF6X\x9E\xFB\xFE\xFE1\x9E,\xE1\xDE[\xB4\xFDy6\xB9S%7\xF0_\xB3\xBB\x9E\xBCnO\xC8ɓ/=\xAE\x8E>\x9E\x92n<O \x94\xC4L<B"\xE5\xEC>?\x83\x89\x94C\xF3c:\\xE3\xC4\xFF\xB0;\xE2L\xA0:IcBaD3 -\x83\xC1,'"I\x9C\xBE%\xAB\xFBّ}\xBA\x81\xBA\xD3\xC0>\xBA3\x90\xE6\xF94\xEA\xD0m\xBE\xED\xFB3\xE0\x94$\xB0`[\xD5 (\xD9\xF1D{\xF9N\x98\xD6\xFFU\x81\xF6\xD2zz \x92\x84\xA4\xCB\xD0q\x89%\xF8y\x94\x9386\x8E\xEDm\x81\x98\x9Cd\xE0x\xC9\x89Q\xE8\xE06\xD6d^\xED\xCB]}\xA8\x9Az_\x95\x87ךf\xE9\x9FX\x988&\x89H\x82\xA6%0Ci\xF6L\xB7\xF9!X\xB0N\xB7CJv<\xD1&\x86\x91"\x95Z\xD3\xD9X\xC0\xB0\x94)\xE6\xFE<\xB8\x88<&\x8D\x96\x96j0\xB0%\xD9+ݶ\x84J`\xA1Z\xA5)\xD5\xD14/\x87\x91s\x83\x8BVp>'<\x97:w8\xA9\x96\xAF˫j\x86py5\x87\x8B\xF3\xC0\x92QB\x84\xA1\xD1Ғ -\x97\xA14\xFB\xE0\xA5\xDB\xFC\x90\x80 ,X\xA7\xDD!%;\x9E\xE81\x93%$\xB9V\xF6$f\xB6Ŧ|\xFD\xFE\xA6\x9C\xCER\x96F~\xF3\xB3N\xB4CΫ\xB9*r\x96$%)?\xF2\xB4d\xC3ai(\xCD>X\xEA6?$\x96֩}HɎ'zA,Ʉ$\xB8F\x8C Ha\xE9\xB8_\xBF\xBEi\x9Aݟ\xE6\xF3\xBB\xBB;c)\xE4\xF8i\xFE?\x9B\xE2\xB6\xDC\xCE7LMX\xEE<<\x81eY\xF0\x85\x8Fl8< +x\xDA\xED]_\x93\xDB6\x92\xF7\xA7\xD0#UeA@d\xE2rU\x9C\xDDd\xE3Jr\xB9\xD8\xF7r\x89\xEB\x8A#Q3\x8C%Q+Q3\x9E{\xD8Ͼ\xDD\xF8GP3\xE3!)\xE8\xCAu\xE5rY\x82`\xA3\xD1\xE8_\xA34Ș\xB0t\xBB\x9F\xFD\xB5w\xA1~~\xFF\xF1E\xAC\x9F\xD8\xFF\xAA@{ w1\xFF\x81r1\x91$\x8Bc9y\xBF\x9A\xF0\&҉L"\xA9\x98\xBC_N\xFE\x88ޕ\x8B\xA6\xAA\xB7\xD3\x93YD %ә`,\x{23EB9A8}\xB6\xD5\xF6Z\xDF(\xB6K\x9D8\\xDE\xDBwo~\xF9y\xFA\xE1\xFD۞\xDC\xC6\\xA4~\xA4\xD4e:9Pf\xFEC\x96\xBF\x9C\xC3#\xC0\xEF\x8C3ND>\x99\xA5P\x92jv\x81=\x9A\x8A\xC7\xFE\xA4\x9F\xB9'\xBE>\xF7\xB5a_\xF9\xFF\\x90}M\x9D\xE0?\xB8\xA5\x90\xF3\xF7\xF7/\xFE \xD91\xFC\xA3\xC9\xFCМȔM\x9B\x98\x9B4\xA3t\xC2 \xCF\xC0x\x95\x93Ջ\xFFYW/c\xA9X\xC1[\xEA\xE4t\xD8cy\xEE3\xF8LJx\xB2\x84{o\xD1\xF6\xE7\xD9\xE4N\x95\xDC\xC0\xCD\xEEz\xF2\xB8=m c$O>\xF7\xB8~8~\xF8xJ\xB8\xF1<\x81DP3\xF1\x89\x94\xB0\xFB\xFC&R͏\xE9p1\x8C\xFF\xC3n\xEC\x883\x81\xEA$\x8D \x85\xCDh4\xB3\x9C\x88$q\xFA2\x94\xAC\xEEgG\xF6\xE9\xEAjL\xFB\xE8\xCE@\x9A\x9F\xE5ӨC\xB7\xF9\xB6\xEF\xCF\x80S\x92\xC0\x82mU'\xA0d\xC7\xED\xE5;aZ\xFFW\xDAK\xEB\xE9\x81H\x92f,C\xC7Id$\x96\xE0\xE7QN\xE2\xD88N\xB4\xB7ybr\x92\x81\xE3%$F\xA1\x80\xDBX\x93y\xB5/w\xF5\xA1j\xEA}U^k\x9A=\xA4j``\xE2\x98$" \x98\x96l8\xC0\xA5\xD90\xDD\xE6\x87L`\xC1:\xDD)\xD9\xF1D/\x98F\x8ATjMgc\xC3R"\xA4x\x98\xFB\xF3\xE0"\xF2\x98d,4ZZ\xAA\xC1\xC02\x94d\xACt\xDB*\x81\x85j\x95:\xA4TGӼND\xCE .Z\xC1\xF9X\x9C\xF0\\xEA\xDC\xE1\xA4Z\xBE.\xAF\xAA\xC2\xE5\xD5.\xCEKF \x86FKK6\\x86\xD2샗n\xF3C&\xB0`\x9Dv\x87\x94\xECx\xA2\xC4L\x96\x90X\xE4Zٓ@\x98\xD9\x9B\xF2\xF5\xFB\x9Br:KY\xFD\xFD\xCDO:\xD19\xAF\xE6\xAA\xC8yX\x92\x94\xA4<\xFC\xC8Ӓ +\x87\xA5\xA14\xFB`\xA9\xDB\xFC\x90X +,X\xA7\xF6!%;\x9E\xE8\xB1$\x92\xE01\x82 +\x84\xA5\xE3~\xFD\xFA\xA6iv\xDF\xCC\xE7www\xC6"R,\xC8\xF1\xE3\xFC_\x9B\xE2\xB6\xDC\xCE7LMX\xEE<<\x81eY\xF0\x85\x8Fl8< \xA5\xD9O\xDD\xE6\x87\xC4S`\xC1:\xD5)\xD9\xF1D/\x88'\x91iwXD <\xED\xCBuY\xCA\xC3\xEBW嶸Z\x97\xCB\xD7\xCD\xFEX\xBE\x9A۫WsW\xE2<8\xA5\xA0\xABI\xF0e\x8Fl88 \xA5\xD9N\xDD懄S`\xC1:\xCD)\xD9\xF1D/\xA74%\x94g2\xD02\xC2<\xD8:B \xAD\xFF-\xD9p\xFA?\x94f\xFD\xEF6?\xA4\xFE\xACSՐ\x92O\xF4\xFA\x9F\xAA -\x84\xC5&\x82\x8Dƣ\x87\x8C\x8C\xE4\x80&;d,\xCB]\xB9]\x96\xDB\xC5\xF9#\xE5D\x88<8bZ\xB2\xE13\x94f\xC4t\x9B1\x81\xEB\x94;\xA4d\xC7\xBD b\xD0=\xCC ft0-Fb\xF1\x9F\xF3u\x9Fg_~\xFE\x99a=(<"\xEC6Z(\x89P\xB2\x95&3\x9AyG\xAE\xA7$C]N\xC9r\xE3\xC9\xFDZLY\xDDNY\x95\xE6\xE0u\xB5=4{<\xC7\xD5q\xEC\x83\xCEnjs\xFCz\xB9\xECf\xDC#\x85\xFA\xB8\xD7W\xBBzC>o\xD6dD\xD0Q\x91 -uК\x8A\x98P\xB85c \x893\xB9\xF77S\x95P\xF0\xA9<<L&Q\x95#p\xAF\x86\xA3$`\xF2\xA5\xEF\xDDUk\xCC3%\xD5\xFD-\xDC_\xAC\x8F\x98\\x96:\xFF\xBC8@>Мaz\xE9{l\x96\xA9r7U\x84ht<\x98\x8A}ڿ`\x9A\xB7%\x8Bŧ\xE2\xF9\xBA9 e2\x8F~Q|2\xD56؞ꠟA\xFEoJ\xBF\xBE\xCAT\xB3\xADMc\xB6\xBA\xF9\xF0\xB344\x9BXx\xAD(TI\xDE\xE5\xAC\xF1\xC4vʻ\x9A2\xFD]ݑ\xE7\xB9\xE1$\xA5\x82d)Hҿ)\xE0u\xEA\x9E)\x90\x93\xBEúT[sS\xFFٖw:Q[\xB1ۆiq\xAB\x{132F1D}\x82֭\xEB]\xB9|\xA9\xB3\xEE\xA7B?r\xF4\xE8Wk\xD5]\x97\x8Dי\xB6\x9BU\xD5\xD0\xFA\xE8\xF2S\xC5Uq\xEB\xBA\xFD\xBAu\xAD\xA9m\xB0Q\xBA?\x84η7\x8E\x8BM{\xA1~m\xF9\xFE\xF3\x8AW\xA5\xF5p\xB1\xB3Z\xB3\xD1\xF5|\x88cfu\x84 -=\xAB-9\xC9s\xF2\xCF@o5\xC5\xF7Ҙ\x86\xF6\xDBF皺1sW->\xE9L\xD72\x8D9\xBBU\xFA\xB94\x8F\x99g\xAA\xAE\xF6\x83f\x82\xD0y\x92w\x84\x8E\xF1q\xE8d\xF5\xB0j@u\xF08\xB8)7\xFA\xC2\xEFZ|\xECj\xAA:P\xA5\xEB\xAD_\x81\xD5\xC2S\c\x8A\x98D\xEEQ\x97\x98I\xF3\xC0\xDE\xF2}\xC0zҵA\x9A*R4cfz\xBD\xCFA\xA2\xB7 \xB8ש\xD70\xB3\xE5"3\xAA\xAE\xA3nՊh\xBD\xBF\x9E\xBF\xABW\xCD]\xB1/\xE7\xEA -\xF3e\xBD8\xCC\xC5\xDC\xFF\xFE\xA1ޮ\xAA\xEB\xE3\xBEh\x86\xCC"O\xACX'\xD4zJI\xC0n\xC7Ʉ\xC6$\x89\xE3\\x99D[j\xC6R\xB0\xE0\xC6 !\x94$ \xB18\x8E#u߾C%\xA8\x9B 텹U\xE8\xAB)\x8D\xA3\x9B\xEA\xB6\xD4uxA \xADX(\x91\xFC\xA0DG\xB2)Ѵ6X uן\x93\xB7\xACڎ\xAA\xAE\x8De\xAE\x8D}X\xD50\xC8)\xDCDf\x994\xF6N(C\xAC\xCAo\xAAuaJ6u\xBDS\xD5\xDB\xEF\xE1\xE2\xB7/Wk\x{133D70}\x85\xB1\xE5\xE7)e V5\xAD-\xBE\xB1,\xA8\xB6-g\xBBv\x8C\xB97*\xA7\xCD>\xA7Pe\xEEhK|\xB5G!J\x93+c+\x84\xC5&\x82\x8Dƣ\x87\x8C\x8C\xE4\x80&;d,\xCB]\xB9]\x96\xDB\xC5\xF9#\xE5D\x88<8bZ\xB2\xE13\x94f\xC4t\x9B1\x81\xEB\x94;\xA4d\xC7\xBD b\xD0=\xCC ft0+Fb\xF1+u\xB2\x9A\x8A\x98P\xB85c \x893\xB9\xF77S\x95P\xF0\xA9\xE6V\x98L\xA2*F\xE0^G+H\xC0lK\xAB֘gJ\xAA\xFB[\xB8\xBFX1\xB9,u\xFE_xq\x80|\xA09\xC3\xF4\xD25&\xF6\xD8,S\xE5n\xAA\xD1\xE8x0\xFB\xB4\xC64oK\x8B\x8F\xC55\xF2ts<\xCAd\xFD\xAC8\xF8h\xAAm\xB0=\xD5A?\x83\xFCߔ~}\x95\xA9f[\x9B\xC6lu\xF3\xE1gih6\xB1\xF0ZQ>\xA8\x92\xBC\xCBY\xE3\x89\xED\x843\x95w5e\xFA\xBA +\xBA#\xCFs\xC2IJ\xC9R\x90\xFE\xA4S\xC03\xEA\x98=<S /&}\x87u\xA9:\xB6\xE6\xA6\xFE\xB3-\xEFt\xA2\xB6b\xB7 +\xD3\xE2V\xE9ey;\xAD[r\xF9Rg\xDDO\x85~\xE4\xE8ѯ֪5"\xBA.\xAF3m7\xAB"\xAA\xA1\xF5\xD1姊\xAB\xE2\xD6u\xFBu+\xEAZS\xDB`\xA3t\x9Doo7\x9A\xF6B7\xFC\xDA\xF2/\xFC\xE7\xAFJ\xEB\xE1bg\xB5f\xA3\xEB\xF93\x8E\x99\xD56\xF4\xAC\xC4MN+\xE4$\xCF gF\xC8?\xBD\xD5_,`Hc\xDAWl\x9Dk\xEA\xC6\xCC]\xB5\xF8\xA83]T\xC84\xE6\xEC +Ta\xE8\xE7\xD2<f\x9E\xA9\xBA\xDA\x9A B\xE7I\xDE:\xC4ǡ\x93\xD5ê\xD5\xC1\xE3\xE0\xA6\xDC\xE8\xBFk\xEA@\x95\xAE\xB7~V[Lq\x8D](b.\xB9G]b&\xCD{\xCB\xF7\xEBUH\xD7i\xAATH\xD1h\x8C\x99\xE9\xF5\x89ނ\xE0j\\xA7^/\xC0T\x96\x8B̨\xBA\xB3UK\xA0\xF5\xFEz\xFE\xAE^5wž\x9C\xABWJ̗\xF5\xE20\xFF\x83n\xFF\xE7\xFBz\xBB\xAA\xAE\x8F\xFB\xA22\x8B<\xB1v`H\x9CP\xEB(%\xBB'\x93$\x8Esem\xA9K\xC1\x82'\x84P\x92\x80\xC4\xE28\x8ET\x98}\xFB\xDE\x95<\xA0n\x82\xB4\xE6V\xA1\xAF\xA64\x8En\xAA\xDBRW\xD4\xE1-\x80\xB4b\xA1DR\xF0\x83\xBA\xA6D\xD3\xDA`\x81\xD4].Lj;\xAA\xBA2X4\x96\xB96\xF6aU\xC0 \xA7p\x99e\xD2\xD8;\xA1\xB1*\xBF\xA9օ)\xD9\xD4-\xF4nLUo\xBF\x83\x8B\xDF?_\xAD\xD1\xCF\xD6\xC2\xC62\x94\x9F\xA6\x949$Xմ\xB6\xF8Ʋ\xA0ڶ\x9C\xED\xDA1\xE6\xDET\xA8\x9C6\xFB\x9CB\x95\xB9\xA3-\xF1\xD5\x85\(M\xAE\x8C\x80\x8C\x97\x8F+ \xBE\x8D.\xE8\xD7\xEB"1h-]ί\xE4* \xF2}\x8C\x9DY\xFE0\xE5@\xC9^\xB7\xD4\xFE\xE8m\x9D%L$Z\x9C\xA4+]\xD6{\xC9\xEF\xA4$CNvi}0\xD2.\xAC5u\x8D2\xC6\xC9aOw\x90\xD7\xED\xB1 \\xB0X\xD5tN\xC5V\xFD\xEF\x9F~3\x965Zuצh\x94\xD2=T$\x9Ee`O +ſ)ո\xB3\x98V\xDAZ\xA7\x8E\xB3\xDAm\xD9{M\xD7\xE1yni\xB4\xA9 \xE1jQoQ'\xCAmUn\x8F?3\xE29\xD7\xE7\xA8\xEDHa}\xAD\xA3\xE5f\x87\xC2\xC21\xBFk \xD3'$\xA7}\xAF\xED\xA9Se,\xEA\xA2uV\x80\xB2\xD3\xE5rom\xFB\xA6\xBCs\xFE\xA8r]f,K\xAC\xFDD\x8C|\xC5ܸ1\xCA\xFBh<\xBD]\xE9\xF4qk\xD0ʹc\x89ג\xC7t@Xm\xF6\xDD@\xF0O6\x9AV\xDD -NV\xF5z\xA9[\x91\x98ַ\xE6\xCA\x9A+KulJs\x85GҬq\xC0.i\xEC\xF3>k8\xC4X\xE4\x9BTA\xAEV\x83C\xE5\xA1\xEF\xB4\xFC\xBA=\xCB\xC1\xAE7\x810f\xC74\xF5\xA4(\x92sㆨڵ.\x81\x95-\xEEu\xE2\xAA\xD4?-\xCDE\xB7\x9D\xFDc\x8B:\xE2\xE2^\xAEC\xEB\xE3w\xBA\xBBZu\xE9FG\xEB$\x99\xC6\xD4\xFE\x9CGKk\xB7\xDBO%\x8C(\x8B\x9B\x8E\xCB\xE9 \xA5㛵f\xD2\xF9Ev\x9A\x9E\xB5Nz\x96@\xCF&\xE8T]\xF0U8վ\x9C\x9D췓x\x98@\x96\xAA\x8B\xBDAR\xBFJ -\xA7\x9B}YϹ8|2\xAC^48\x9A\xA9\xF7\xF7[\x93\xD8Y\xBFf\xCA\xE3\xE8\xB6Zvj\xD4E\x9C\xA9\xB5E5\xF1\xDE0iq\x86-VF\x87ɩ\x9B\xE1w%\xA7\xA38\xAF'\x8D\xEA\xFD\xC3e=\xEC̳\xF5\xAAc\xCD\xEDؕx\xB8`0\xB7\x92\xA6\x8F;s\xCD\xEA\x9F\xC1\xD7t\xDD\xDA8`4\x94TrH\x9B\xE1*;Q\x86\xDCj6\xB5\xE9\xE2\xB3e\xEBd\xC6k\xC8"\xADN\x992PVkCA7CF7\xD6G\xC1L\xB7\x91?m3\xCF&\xB6\xD3CHZ/\x92\xED\xE49X\xB5\xAE@v\xB2\x93\xC1tč\xCAy;\xA2\x83 -9q\xD58\x95\x84R,3\xBD\xF3\xD0\xA7\xDA?\xED\xCC\xFC\xA9\xF7\xBA8\x8F\xD1*\xE4_ﺸ\xC7\xE0\xA8uqs\x92yƺx -ϯ\x8B\x9F\xC1\x86],\x89\x8B\xBD*\x8D\xE5ƍ໌\xD9`ی\x83i\xF6\xD8g<i~\xC0\x8D\xC6Ђ\xB5\xAAT\xB2\xE3\x89^\xEE@ -\xCB=\x9E\x9F\xF5\xAA4I\xCA\xEC\xBA\xE2b\xA9_ơ]\xFE\x87q2gmӳ\x8C\xC2\xDF\xE0\xC1\x9E\xD9pJ\xB3\x82\xBA\xCD\x89\xA0\xC0\x82u\xCAR\xB2\xE3\x89^A\x9E&g\xBE;\xAD\x83 \xB5\x93*oE/t\xF6uJ\x98\xC4\xE8\x98\xE4\xEBuJ<G9%\xF8<xg8%=(<\xC1\x86Sᡒ\xB8\xE0f=\x85A\x80 0\xAE\xA0\xD297\xBB\xE0?(\xDD;y\xE9\xB9J\x9A5tH\xC1\xA4\xEC;\xB3?\xAF\x90 U\xE2\xBCW\xA1֥}szin\xBD)\xE6\xC1\xC3M\xA9\xD6]0y\xBFm\x8A\xCFgl\xE13\xA6\x98\xEFl\xE1\xFF\x99\xF0~DT\x99\xC9\xD9㻾\xB3 \xDB\xD4vb\x87\x932C\xC7\xCE)\xCA\xF5j֔j\xE6f&\x9E\xD5v\xE1v엥]í\xECJ\xE7\x8D\xCEh\xE7\xCA4z\xF9p\xD6\xBD\xEAv\xDF\xF7\xD0&\xCD\xF6\xB9J\xF6p\xAAg\xA6\xD2].\xD5T{m玱\xE1\xC6ֳۚ\xFF\x8D\xDE^\xEF?\xE9\x81i\xE8?\xFD\x8A\xEDK\xCB\xE08\xFB\xC2)\x98\xE4\xFC\xFB\xF2<\x85\xF6e<ξ\x95\xC4\xE5&=4#\x99~\xBC\xC0#\xCEeJ\xB3\x8F\xCB\xD6m~H\x97-\xB0`\x9Dꄔ\xECx\xA2t\xD9%R\x84\x9C\xF38\x8FM - -\xBD\xCD)E\xF9\x8A\xAD\xA9\xE3o\x9C1\xA5\xF8&\x9F\xB3\x8C\xE9\xF3z\xD3\xF1l\xB4\xCA;L\x97\xACd9I9\xE80nP\xC7浚\xBF\x81/\xE0<\xB5\xC6\xE8\xB7Uc\xB2@+\x8D\xB6\xDB\xD7S\x9A\xAA\x85\xF3\xE5\xA9;\xA7|\xBCў\xEEx\xE1&4%\xC2w\xE2\xB2\xEC\x8F\xD3\o2\x98\x88\xC1\xFBi\x96j7H\xCFLx\xEEP\x86\x81hvM\xDE\xE5\xC8v\xE5y\xD4˹Roa\x88\x8E\x89\xCFiw\xEA%\xEE\x83# -\xF55\xEB\xF9H\xB5M\xD0F-\xCAn\xA4O7\xD6E\xD1P\xBB\xA9zM\xFBv2r\xEE\xD2\xD2\xDB\xD2-lۭ\xE9\xFB\x90\xC2\xDB5\x90\xB8s\xFC\xA8[&\xB0\xBA\xC1>\x88\x9Fd\x99\xFCz\xAD\x88\xC7\xE0(3BE\xAE\xAC\xF6x3҃\xC2\xF3f\xE46\xAC,\x89\x8B\xF9d4\x84%\xC1\x8F\x87yd\x83\xF9d\x83i\xF6\xF0\xC9N\x9A\xD0'-X\xA7:!%;\x9E\xE8\xE5|2\x9A\xE6jK\xFDN\xD9ž\xBF9\xC5\xA9\xF8\x8A\xCDi\xCB\xE08s\x9Ar\xA7g\x99\xD3\xE7)\xF40\xA7\xE3\xD9h\xD5w\xA0$.閁l\x81\xAF M8v5\xF8\x87}Y4\xED\xA7\x8D\x93\x85\xDB\xCE\xCA_\x91v;\xB2!n׃\x90\xED8V\x95\xCF8\x83ֳ6f;\xB3mv\xC6!\xE5^ \x88O\xEB]\xBDLt\xA3\xB7sF\xE28; -\xDE6Q6$.kW\xC4$\x86ZX\x87\xAEXܴ\xDEX\xAD\xAC\xAFT8\x88\xFD\xA3u\xF6\xD0'۹\xA5\xB0\xCCE+\x9C\xFAn6\xCEA:\xF7Q\xC7@\xB4\x81\xB5e'\xF02]nY\xE9\x92,\xBA6լTT\x88;t\xE1\xFB\x8D2z7Ř\xC3+\x8C\xB9\xB5\x81I\xFA\xBC\xB7\xA9C[\x99\xE6\x96\xF7\x91Gi\xCC +鈛\xF1aq\xB3\xB6\xE7R\x8A\xEC\xD0\xFAx6\xA2\xC22O.2\xE0Ϟֱ!\xA8\x85z\xF3;\xCE,+NV\xF5z\xA9[\x91\x98ַ\xE6\xCA\x9A+KulJs\x85gЬq\xC0.i\xEC\xF3>k8\xC4X\xE4\x9B7RA\xAEV\x83C\xE5\xA1o\xB5\xFC\xBA=\xCB\xC1\xAE7\x810f\xC74\xF5\xA4(\x92sㆨڵ.\x81\x95-\xEEu\xE2\xAA\xD4\xFF\xB2O\xAC\xAC=\xE1\xE6P\x861\xDD:\xD4<j6\xD6sTos\xE8\x90\xC7\xD7uш\xAF \x98,3ѯSH\x97\x9F\xB0\x81/\xBB=\x84-\xF3{\x9Ak\xEFRw3~+ϯ\x8B\x9F\xC1\x86],\x89\x8B\xBD\x8D\xE5ƍ໌\xD9`ی\x83i\xF6\xD8g<i~\xC0\x8D\xC6Ђ\xB5\xAAT\xB2\xE3\x89^\xEE +\xCB=\x9E\x9F\xF5n4I\xCA\xEC\xBA\xE2b\xA9߾\xA1]~h\xEAY\xFB\xF2,\xA3\xF07x8\xA7G6d\x86\xD2\xEC\x99n\xF3CB&\xB0`\x9Dv\x87\x94\xECx\xA2\x84L\x86\xA1\xA5əoG\xEB@Fm\xBB\xA4\xCA=\xD1+\x9B}\xBD&1&\xF9r\xBD\x8F\xC1Q^>.\xC0^H +\xCF{!g\xB0\xE1Tx\xA8$.\xB8;O\xC1\xEA3\xC6T:\xE7f\xDB\xFB{\xA5{'\xAF5WI\xB3h)\x98\x85}k6\xE4\xF5\x8A\xA4J\x9C\x88\xE1\xB2Ӻ\xB4\xEFF/ͭ7\xC5\xC1<x\xB8)\xD5B&\xEF\xB7M\xF1\xE9\x8C={\xC6\xF3\x9D=\xFB_\x91 o\xA5GD\x95\x99\x8D=\xBE\xCD{0\xBB\xAEMmgr8\xF3wp\xEC$\xA2\\xAFfM\xA9\xA6jf\xA6Ymn\x8B~Y\xDAE\xDB\xCA.m\xDE\xE8\x8CvrL\xA3\x97\x97]\xEDƧڜn7zm\xD2엫\xB4a\xE7vf\xEE\xDC\xE5Rͭ\xD7v\xB2n\xBC\xBDh=\xDD\xDF\xE8\xFD\xF4\xFE\xB3\x98\x87\x81\xFE\xD3/ؾ\xB4\x8E\xB3/\x9C\x82I\xCEϱ/\xCFS\xE8a_Ƴ\xE1\xEC\xCBPI\n\x96C3\x92\x89\xE0<\xB2\xE1\\xB6\xA14\xFB\xB8l\xDD\xE6\x87t\xD9֩NHɎ'zA\x97\x8DQ"E\xC8I\x8E\xF3\xD8\xD4\xD0\xD0ۜRT\x91/ؚ:\xFE\xC6S\x8A\xEF\xEA9˘>O\xA1\x871\xCFF\xAB\xBC\xC3q\xC9HJ\x96\x93\x94\x83\xE3\x8Etl^\x9C\xF9;\xF8\xCESklD\xCEq[5&\xB4\xD2\xF8`\xBB}=\xA5\xA9Z)_\x9E\xBAs\xCA\xC7\xED\x89\xE1\xF6\x80_B3P"|!\xAE\xC3\xFE0\xCD\xF5\xAE\x82 \xBC\x9Ff\xA9v\x83\xA4\xF1̄\xE7eyf\xE1m\x8El\x97\xFA\x97G\xBD~+\xF5>\xC6䘀\x9Cvk^\xE2\xC67\xD2P\xDF뱞\x8FT\xFBm\x98\xA2\xEC\x86\xF6t\x83[ +\xB5}\xAA\xF7̴o'#\xE7\xEE!-\xBD\x92-\xDDJ\xB6ݫ\x90\xBE)\xBCm\x89[ŏ\xBAe\xAB쓁\xF8I\x96\xC9/x\x8E2#T\xE4\xCAj\x8F7#=(<oF\xCE`Ú\x91\xC1\x92\xB8\x98OFSAX\xFC<\x98G6\x98O6\x98f\x9F\xEC\xA4\xF9}\xB2Ђu\xAAR\xB2\xE3\x89^\xCE'\xA3i\xAE\xF6\xD0/\xE1\x94\xFDU\xEC\xFB\x9BS<\xA1\x90\x8A/\xB6\x8E3\xA7)'qz\x969}\x9EBs:\x9E\x8DV}J\xE2\x92n\xC8\xF8\x9AЄaW\x83\xBFߗE\xD3~,\xD08Y\xB8Ϭ\xFCi\xF7\xBF\xD1!\xE2v=\x88юcU\xF9\x8C3h=k\x83\xB4\xD3A\xDAf+R\xEE\x81\xF8\xB4>\xA2\xF1\xD0\xD5\xCBD7\;g$\x8E\xB3\xD3hm\xE6ac\xE0\xB2vELbl\x85u\xE8\x8A\xC5M\xEB\x8D\xD5\xFA\xC1\xFAJ\xC5د-Zg}\xB2\x9D[ +\xCB\x©\xEFf\xA4su\xD0CI[v"\xFD \xA3\xD1喕.\xB9\xC0\xA2kS\xCDJ\x85\x81\xB8S\xBE\xDF(\xA3wS2\xBC°\x90[\x89\xA4x\x9B\x8A1f\xB0\x95inyj\x94\xC6\xB2\x92\x8E\xB8(k{.\xA5\xE8\xC8\xAD'q"*\xF3$\xC2"\xFE\xEC\xF1sZ\xF8\xB16\x9F\xB0\xE3\xCC0\x83\xAE\xDAc1\xDA\xEF=9В>\xD57.\x9E\xD4_\xDC\\xDB\xE8K\xE8bbZ]D\xE4\xB6[\xA9\xFF\xA4\xA0\xE4\xD6VUl\xAA +h\xB6D\xFB\xBB\xDF\xBF\xF9\xF1︴\xFC\x8D-\x84 y|\xCEi\xC8\xE7 <?V\x8Cg\xA2}K\xE50)\xC4\xFF\xA7\xAC}\xFF\xD6mj\xBF+9I\xC1m 1;\xDC|\xFDt\xE6\xD7o\x97~\xE4WA>\xFD\xD8\xCF}\xFB\xF4\xB3\xD83\xAA\xCC\xBF\xDCȌO\xF9_0r\xC6j\xDFS\x8Eq\xB8\xE6q\xFD\xA8.\x8E\xEA\xB7R\xBFK[\x88\xC7\\x9DÈ\xD5X\xEF\x9Ex\xAB.ީ\xDF7\xEA\xF7\xF5\xFB\xB3 k\xE3\x97\xC1\xE4ϊ\xAF&YJ(u\xEF\xEA\xF9\x93'Ҕ\xEAp\x9Cfҕ\xFA\xFE\xA6\xD8\xE9\xEA\xDE\xFA\xFB\xDD?\x96M\xEB\x90<(\x97\xC4Q\xF3\xC4Rho\xF7\xEC\xF3\x92\x9D\xFC1c0ȱ\xE8\xB7)T\xA6\xC7b\xA9\xFE\xA3\xF8+\x92\xD5=?\xAA\x80\xA7\xF2o\xF2HW} endstream endobj 610 0 obj << @@ -13634,144 +13637,166 @@ endstream endobj 711 0 obj << -/Length 4897 +/Length 4902 /Filter /FlateDecode >> stream -x\xDA\xED\[\x8F\xDB8\x96~\xEF_᷑\x81\x94JE]f\x9F\xFA\x92\xF4n0=\xDD۩\xC5b\xD1\xDD*[v9\x91-\xAF%\xA7`~\xFC\x9EEJvU\xB9\,\x82 e]H\xEA\xF0\\xBFsH) -c3\x89\xFA?\xBB\xA5wB~\xFF\xF9\xBB\xE8bm\xF4\xC4\xFE\xA7\xEE\xEE\xFEp\xF3\xDD\xF5\xA5\xD3I\xE6Q\x94Mn]da\x9C\x9AIf\x920S\xE9\xE4f>\xF9#xWͺU\xB3\x99^\xC5Y\xA8P\x85ӫ4\x8E\x83_o\xBBr\xB5Ym\x96|\xA3\xDC\xCC\xF9`\xDF\xF6\xD7\xFB\xE1\x97L\xFF\xBAy{"\xB5Q'F\xC1\x9F,\xE36\x83+\xD0\xE6\xFAM^-\xC0\x95\xD77\xDF\xFD/\\xC6\xFBj\x92\xC5aR\xE4\xF0\x99an\xF2\xC9lMC\xC4a\xEE\xAA\xD3$\x99\xEC\xAA\xC9\xE2\xBB\xFF<i\xE4\xC1\xB0qQ\xF8\xC3\xFE\xF1W4\x99ý\xB7\xE8\xC5\xE1\x89\xF7\xD4r -\xFF\xF91\xF5\xE4\xDDѧ\xBC|\xCCG\xE94a\x92g\xE3\xE9'\xA9 -\xA38} \x8CN\xC1\xFD\xEB\x8B3\xD6\xE8"\xCC"uYΞ?\xE8I\xD1\x8F\xF9?5p\xA76\x96K\x92\xD0\xE4q\x8E\xA11\xCD\xC3(\x83H\xAE\x80&shT'-\xDBE\xB8\xA9\xBA\xEB\xED\xF5\xFB\xF6v]_\xE3\xB5\xEBn\xB7\xDF|\xE0\xF6\xFF\xFAS\xE9d\xBE\xDAm\xCAu\xF5/&\xE9\{\x8B-@T\x91;'4I -8\xAD\xF8\xD1\xC5\xF0\x85\xBE@\xA1\xCB N\x90m\xB3\xAE\xBA;\xD42(xtU\xB3l\x95\xD9jae\x9A -h\xBA_\xB5w!(\xA7\x82\xD3\xDC\xBF\x82\xCE\xE1\xC3gJ\xF8\x80\xD2S\xCAU\x85\xD493\xA9\xA2\xFB\xA2D\xD2!\xE1D5\xDC^\xEC,-k\x8F\xB5\xD2\xFE*6ح6`\xB7)͔\xE7C\x8F\xB1\xAA\xCE$\xF4V\xAC\x90\xE7yʂ\xE8\x89Gf\x83\xA8\xA3\xC4cv\x92B\xA49\xCFʩHW\x93\xA9\xACj\xA4\xDF\xD3\xC7\xE8\x81P\xC6\xC4h\xF8g\xC55y$\xB8Y"\xCB\xE6|<#~@˪\xEC\\xF7\x92{\xBD\xFD\xFEw\xBF;6\xD9\xFD\xB4\xD6U\xD9\xCA\xF0<Y\x95gwx'\xADD/\x811\xBD\xC84\x91,\xB7\xB5\xD2l#N\xED\xE9\xDA\xD8\xE4\xEA\xF1\x8Ed9\xC3QWM\xAF\xFC+wx&LK#\x97MI\xB0\xED\xE7?\xAB\xC0\xC1Oљ\x91<\xEE\xEB$T\xB1\xA8\xFA\xB9\xBF\xACNv\xBBT\x9D\xB3\xF6\xA3\x9DDž$e\x92B\xD2d -\xF8\xC6\xD3>\xD6&$4* -HI1xv}L\x95\xC4jqX\xA7W9k\xB6\xABJ@\xB3\xE0ke]\xB3\xE7\xF6u\x98] -<\xBFږ$\xBC\xF6\x99\x9B֫[`T\xF0\x8D~Ț\xDD2)\xCF\\x8C\xF7\x99,\x82\x9B\xF2\xB6*\xB0֪5\x8C\xDBrI\xDCyΰ\xD0=9\xB9\xC3i\xA2$>\xF4\xD6#\xB1\xAA\xE6v\xE2\xB7S`\xD7@T\x98'\xA0C-'\xE5|\xCEAx\xC7`\xC4\Pc=\xA4\xBF\xDD\xCD\x9F\xB4\x8E-!a\xB9\xDE^\xB7\xDB\xD5\xF5\xFD\xEA\xC3\xEA\xFA5\xF3Hbj{n\x88\xF7ٖ`\x8D-\xF1\xA5\x89\xD6\x80\xB8^\xB2k\xDD;\xAB\xF9\xC8\xD2\x8D8`+\xCF?$\x85\x8BHK@\xEAy\x9AN\x95k>\xEBXHX\xFC\xC7S,\xA6\xB8\x9C+6M\xC7\xEF\xF7\xBD\xEEK\xC7^\xED -\xF6 \xAC\x93\x98\xF0\xBE\xE2\xCE\xFD@v1y\x8C\x8D^ -Ac8\x98\xC3\xC1\xC7i\xC1-\xB0\xB4\xF5\xA0\xC1ȣ\x95;=hN\xA2w^\xC9\xCElmb\xEAǼ\xC4ڊ\xAA\xF5\xD6&\xA3\xA4\xAE\x84q\x84\x80\xCFN} =\xF9\x8F\xCF\xC4a\x92\x98\xB5\xF1\x83\xDEP\xC8\xF9\x8Fg\xD1a\xEA\x90I\xEA\xF0\xEB5\xAD\xAC9g\xA8\xB0\xB0\xFC\xA9\xAB6X\xE1m_\xF1\xC5u3\xDFr\xDC\xEF/\xE2\xA6\xE5z\xEBnᕏ\xA7\xCBU]\xDE"\xBE\xA8\xA5\xB8\xBC\xC0\xAB\x8F\xFC\xEDH\x8F\xA6$\x98\xA1&Q\xC6\x8A\x86*\xA1 -\x82\xB1>\x92H\xE7\x95\xC0-\xE7<#@yr\xBC\xEE\xA9 -F\xE3\xD4E&Tqzxg}>\x96(\xEC$\xB6\x86NRP\x91.;\xB0\xD2\xB0b=\xBD\xC2\xF9|\xA2xC\x83!\xAC\x87\xFC:\xEA`\xB4\xAC\xC0]b\x83\xC1\xBC\xBAB\x8E\xB5x\x86\xA4\x8F@7\xC8\xE9J\xC0D\xE6s2T\xBCu\xC5>4 -ڽ\xCDF\xB7\xE2a\xB9Yo\x84\x9E\xE5\x9C|r\xB9U\x82\xA4\xE6V\xBFa\x85\xABg\xCF[V\xED\xBFI\x88 \x961P\xCD\xC0)0\xE3\xFD^\xCAԹ\xC1I -\xC7>u֧x!W\\xE0\xA8\xFD<p\x9F\xE4y\x9A\x8E\xCCM"f1\x9A_>\xD6\xC48\xB2\xA1\xB5\x{DE2F}\x94"{]\xB2\xD2H\xD0gC\xE9\xE3,h?\xB0\xC4\xFE\xB7\xA9R\xF2\xF2@4{K{V -礤T\x92ͷ\xD7\x86'\x98\xC8\xF0\xB9|\x9A\xB0\x8Bu\xC8\xD6"\xF6\xD8 -\x9E!V\xFD\x82\x90_,u\xE3\x8D\xF0\x96 -\xB0?\xC0\xEBlԼXi\xCCZ\xCDptr{\xC4\xC6\xF4\xDAu\xCFp\xCDQ -\xBB3'\xCEI\xB8iݎ\xB0j\xC1\xEE\xBDKp,.\xB1ȉąI\xC8ç\xD3\xEB\x95D\xFC\xB2\x80\xA2Gq){\xA9\xAF\xF6(\xC1\xFD<\xF8q\xAAbP\xBA\xF1\x82\xF0v\x85\xE8{c\xDA\xA7\xD77m\xF0J\x8A$LM1d\x87ҧ\x97\xA7}ޚ( u>\xFC_\x92(\xD8\xED\x97\xADzڂ%\x90T\xB9\xDAp\xD9x\xDFJa\xD7W\x92\x90\xEF\xBDA\xF6\xA6\xC2\xECή\x83k\xD2~ry\xCCyZ\xF0\xA5\xE0\xE6\xF4\x90\xE7;Q`\xAAR\x8E;N;Rb\xC2l4\x90\xF3\x9B\xB82$H\xFF -,BW\xF3\xA5\xAD\xFD\xE23\xB6\xDBl\xD3/ݰ\xFDj?\xC1\xC9\xDCz\xA8\xB5P\xEF\xB2\xF6t\x95\xD7o\xB8\x8E\xE9\x95\xF2}\xEFV\x92^\xD9˺7nOZI\xEAHD,\xD9\xCA\xC6\xE1#q[\xE13An@ӽ\xE5\x84uq\xF0\xBA\x9C\xDDqXp-\x89\xAB\xBF~T\xF7\x96y\x89@!\x9D`GQ\xB4\xCFMl\xC1)\xC5jHA5 \xFF̬\xB6\x9F#Pf\x8F\xE8\xF4\xB4\x82n\x97KmyA\xDB\xD5ﶢ\xEA8y\xE4α\xF4\xCE`\xD1\xC8AU\xF6Ev\xBFcfQ-\xC2\xF8䫕uN˒)\xF1\xDAa^\xC5)NabIv۶T\xB7-\xB7\xF0\xE1A},\xFE\xA4i\xEC\xBAv-/xpe\xAFϿEGR -k{^h\xC4\x97\xACei\xC2\xF6\xF73\xA8[C[\xBD`\x94\xA3[\xBD\xE0\xFA\xFD]\xE5\x8A@\xA9\x97\xBA\xC3-h\xF5\x9CO\xEB\xD5i\xC4Nۀq\x953!\xC4w\xAE>\x86H\x8FW \xE8\xCEh\xCB\x9B\x8E\xBCS\xB8\x8Dq\xB2\xC1\xECH\xD5\x98f[\xB5\xFB咷"\xFE-3:\xFF\xF4 #<\xBD\xFAd\xD8\xFD\xD3\xCF\xE6ĥ^;x/E\xE5\xBCt~\xE1\xF7R\xBCa/\xF6^ʳ\xC7<ὔ\xD1\xF4/\xF8^ʥ۫\xCE%9{\xFE\xA0_\xEE\xBD-\xB5\xB1':?Y@\xFE2y\x9DQ\xD5p\xF0\x82ߣ\xFD\xD6iZ\x9ED\xB4\x9B\x81yb\x8F\xED\x9C\xF6e:\xCDք\xA3\xC2n5\xE9\xF3\xDC\xDBQzRz\xB9\x81\xE6\xB2\xF0\x83\xDB+\xE9Y\xF5\xFC\x95\x97M\xEE\xECsh\xBF_(L\xBD\x9D_'\xEC\x87NbH\xFA\xBD\x8E\xE5g\?<\x93\xAD8\x{15BACF}T\x95\xB6\xB5\xA4n/\x85\xA4\xDEF6:>\x98\x86\xE0\xCB:\x9B\xE5\xF3\x8F8 1\xD7\xFBz#\x9B#\xF0\xBC\xC8F\xBB\xDA\xCDK"\xDB\xD3#\x9C\xD9\xCE'\xA3\x8Fl\xCF\xE5ėK<TY\x94\xBEx\xE2ᆽ\\xE2\xF1\xDC1OI<\x86ӿd\xE2qa\xC6\xF6\xAAsIΞ?\xE8L<\x98W\x91^2\xF1\xB0/Ļt\xE1\xDAg~KBEIX\x98\xCB\xE7\xECn\xD8˙\xCEs\xC7<\xC5t\x86ӿ\xA4\xE9\\x98\xB1\xBD\x96_\x92\xB3\xE7\xFAM'\xCAh\x8D\xE5\x82ߒ(vYbeOF#\x91 - -d _/q\x9E\x87F\xA0\x96\xBD(\xCF~z\x84\xD0\xC8\xF9d8~&'\xBE`\x9E\xE3\xCB\xDA:\x9E\xC0\xE2H\xF2\xECI\xF53\xEC\xA7\xF2,\xA7ҸC\xD9\xC4g\xC3\xFF\x89\xB0&\xBCy\x98\xD9?\xE3\xD3ak\xF3\xFC\xAF!\xC6\xC0\x99ɕ\xE1ݳ߾\x87\xF8mb\xDF\xF0\x8D\x91O|\xF1\xB1\x8FĎ\xBF{\x85\xB1<~\xE6*h\xF2_\xE00\xB9t\xC9\xDB2\xF0\x85\xC6+%\xC1\xCFt\xB2\xA7\xBF+\xFA;\xB7\x8Dt\xA4iC#m\xD2s=\xDE\xD2\xC9;\xFA\xFB\xFD\xFD\x85\xFE\xDA=\xAF\xE0\xFCrH\xB5\xF1;\x8BInB\xA5\xDC\xCB\xEC:ɤՀb\xA04\xCF\xFAV?ޕ\xDB\xCEc\xED\xA7l\xF6_co;\xFC\xA8C\xC9\xE0\xCA=\xEE:\xF8\xA0\xED)\xDFQx\x8C\xB3\xF8\xC0q\xF0\xDBV.% -\xA6\xFCC\xF5V<\xBD\xECg+x\xDA\xED\[\x8F۸\x92~\x9F_\xE1\xB7#i\xB5H\x8A\xBA\x9C}\x9AK2\xBB\xC1\x993\xB3\x93>8X\xCC̃ږ\xDDNd\xCBk\xC9\xE9\xE4\xDFo\xDD(Q\xB2\xD3\xEDv\xBB\x81`i\xEBB\x96\x8Aź|U\xA4\x85\xDAN\xA2\xEE\xCFn\xE9\x9DП\xDF\xFE.\xBAX3q\xFF\xA9A +w\xB8\xF9\xEE\xFA\x8D2\xC9$ +\xB3(J'7\x8B\x89\xC9\xD3P'v\x92\xDA8LU2\xB9\x99O\xFEޕ\xB3vUo\xA6W:\xCD\xAApz\x95h\xFCz\xDB\xAB\xCDj\xB3\xE4\xC5f\xCE\xFB\xA6\xBB\xF6\xF6\xDD\xBF\xFCc\xFA\xD7\xCD\xDB\xB9\x8D28\xB1 +\xFE\xA4)\xB7\\x816\xD7o\xB2\xF85\xBA+\xB3\xCC\x85\xF8\_\xF7\xE5)\x8B\xA3\xDB\xA7L\xEB\x98GH\x82\xE9\xD2\xACD\xF9\xA9 \xD1V\xE5T\xE5\xC1+\xBCh\x82\xDB};\x9E7\xFB +O)+]V<\xB7\xCAM\xD9j\xE1\xE64\xF0t\xBFj\xEEBPN\xA7\x99 +~\x9DÇ\xCF\x942 +\xF0\x85\xA7\x94;4\xAA\xB962RI\xF7E1\x88\xA5CƉk\xB8\xBD\xD89^֞h\xA5\xFD;Tl\xB0[c\xC1n)\x8F\x87\xE3T\x9DY\xE8\xACX\xA1̳\x84'\xA2c\x85 +SŞ\xB0\xE3\xBD\xCC\xF3\xAC\x98\xCA\xEC2\x95U\x85<\xC0\xE3;\xFE\xE1=\xCE1 \xFEE\xBA"\x8F7ٜ\x8Fg$hYm߽\xE0^o\xBF\xFF\xDD\xEF\x8E\xCDB\xF6E\xBF\xAFUY4B\x9E),XT1I\xA6\xEE洛\xE8%\xA6\x9B2M\xE4\xAB\x8D\x8D4ۈS{\xBC48\xF9\x83z\xBC\xA3\xB9\x9C!\xD5U\xDD)\xBF\xC1\xC2%\x9E\x851\xF3R\xCB垧8\xD8v㟕\xE0\xE0\xA7\xE8\xCCh<\xE9\x9B8TZT}\x8B\xD2_\x96'\xBB]*N:\xFB1\xBDDžm\x92@\xCEhs!|\xE3ik\xB2\x95\xA4\xA4<\xBB>\xA6Jb\xB58,ӊ\xAB\x9C\xD5\xDBU)\xA0^\xD8s\xFB:̮\x82ϯ\xB6\xCD^\xFB\xCCM\xAB\xD5-* +\xF8FG\xB2b\xB7L\xCA3\xE3}\xE2\xE6\xC1Mq[ XjV\x81ƈm\xB1$\xE9<\x85,t\x8FO\xEEp\xDAT\x92:둈X\x96s7p\x88\xDB \x88k\xA0?*\xCCb\xD0!\x80J\x89\xC6\xF0\xFFA\xBA\x89\xB42\xFB(i\xA0P\xF0\xE4\xF2rB5}˞ʢ\x80\xE9\xB7Wd{\xE8\xB1\xEC\x85#\x9D\xCD\xE9\x97˾)韧!1\xEEiנ|\xE7" +\xD7\xF3\xD8Q\xA2(\xA9\x8Cb\xAB\x84A\x82\x9F\x85\xF4)\x8E\xA2\x9C4D\xD6,\xCD\xE0+'\xC5|\xCEAx\xE9\x981\xD4\xD8\xF9ov\xB3\x87m"+\xF58.\xD98\xA5l\x92\xEA\x90\xC5U4~R\xC4z\xA4 +\xDBF\xDC\xC4\xED~%x\x8CNQ\xA7(\xF0߽\xE2\xBC\xA4\x87`.M8V\xC0\x85\x9F\xC5 \xAC\x91jjB\xE2s߃3;\xA1֡\xB1]%\xCF'\xE0\xC7\xEA\xFDf\xE0\xE6\xE2/\xAB%Z\x81R"#>b<[ \xA4\xACs[27\x89dN8\x97*\xF1D\xAA!-MD\xA4\xFF\x9C\xF2\xC2*\xF8\x84Η\xA4z\x88 Ǜ\x92=\xB2\xEAH\x96~#T<\xFA-?\xB57\xF96G\xCA-\xDFk\xA5ό\xBB3:Bq,\x9D06\x91\xD6\xC0\xC3(\x84M\xEB\xB6\xEC\xC4W\xCD+\xEC^U5\xEA\xD6\xFD`H\xF4p\xBF?\x88\x8B +$>+\xBA\xE0\x9Bk\x8A@\xBCQ\xE61\x94\xC4a\xAC\x84\xA17\xD3\x98*\H\x87\x94ŁD\xCD~V,\x89\xB2ظ\xBC\xD8\xABK=\xEFzs{;\xC9(s6QCn~#w\xFCK\xB1)\x96\xE5\xEEE\xC0n\xB8\xDA\xE4\xB8\xED\xF0)\xB3\xAAh\x9A\x83\x9C\x9E\xEDe\xF6\xC1\x83<\xDBfP\x83`\xE4\xD1ȝ=N\xA2w^\xC9\xCE\mb\xEAǼ\xD8ي \xCA\xF5\xD6%\xA3\xA4} \xE3\x9F\xFB\xA9\xE8\xC2+F۫\x8B\xC9m\xA8trx\xA7]>\x96(\xECĮ\x86N\xB3\xA0"5 +\\x8E\xB02\xB0\xB4R/q<\x9F(\x81\xC4\xD0`롼'u@-\xCDq\x93܀\x98WWȰ\xCF\xF0\x81\xF4\xF8\x86y\xBA0\x91\xFA\x92\x83\xCCo]\xB2M\x82f\xEF\xB2ѭxXn\xD6\xC1\x84\xA7C'\x9F\n\x95 i\xB8\xD5oX\xE1*\xC0\x99\xC0\xF3\x96e\xF3"HdTS0C +\xCCx\xBF\x9Be\x9Ā\xE0$Eb\x9FZ\xE7S\xBC\x90+.p\xD4|8\x84O\xF2< MG\xC6&3\x8D/k\xA2\x8E\hmZ\xEE+\xE5ă\xC8^\xAC4\xF4\xD9P\xBA8\xDA"\x82i\xFF\xDBT) yY \x9A\xBD\xA5\x88=+D\x86sRR*I\x8A\xE6\xBB\xEB=\x86'\x98\xC8\xF09|\x9A +\xB0\x8Bs(\xD6\{bϠU\xB7 \xE4W\x80K\xDDx\xDER\xF6\xB8\xE2\x9Ć\x9Aw\x84\x95\xC1\xAC\xD5\xA9\x93\xDB#1~A\xAF\xFB\xEE)\xAE9\xAAaw\xC6\xE1\xE4\xA0\xC09\x894\x9D\xDBQ-\xB8\xC0\xBD\xEF\x87Kr\xA2\xE9\xC2$\xE4\x8A\xE1S\x81\xE9\xBF\xF3J2\xFD\xB2\x80S\x8F:\xD2/\xA4쩥\xBEڡ\x84\xE8g\xC1\x8FS\xA5A\xFD\xE9\xC6O\xA2\xEF\x8Dh\x9C^\xDFt\xC1+\xCE\xE30\xB1\xF9Pʜ^\x9E\xF6ek\xA384\xD9h\xE2\xFF\x92D\xC1\x8Dh\xBFD`\xE8\xAC\xD0\xD3,\x81$\xAA\x8F\xA15\x97\x8D\xF7\x8Dv}% \xF9\xDE/`*\xCC\xEE\xDC:Ȱ&\xED'\x97ǜ\xA7/Qn\xCE\x99\xE8}'N\x98\xAA\x84\x94\xE3\x8E\xD3Q\x8Am\x98\x8E\xF5~W\x86\xE9_\x81E\x98r\xBEt\xB5_|\xC6v[\x81m\xFA\xA5\xB6_\xE3\x87"8\x99;\xB5\xF6\x8A\xE0]֞\xB6\xF4\xFA +\xD71\xBDR\xBE/!\x92\xDDJ\xF2\xBDb\xD6){Qu\xC6\xED\xCDV\x9C\xD2^*.vq\xB6\xB2\xE9\x94\xF0\x99 7\xE0\xE9\xDEI¹\xBC.fwz\x80\x97\xF4\x9F\x88\xD4ۡH\x9CI<[o\xE9Z_nhɽ\x84\x92\x95\xC4(I\xFD\x85r%K\x88\xC8\xAC\xBDH\xE6\xE2H\xB7\x84\xF7\x9EV\x8Br\xDFǦ&\xAA|t|u\x85Ҝ.\x95s\xE5/_7u\xF9\x8B\xD4{\x9C\xD7}\xF1fV4\xA5xFK\x8B\xC3J\xCFܹ\x96OU;\x8D\x96ғ\x94U +\xEEY{\x95\x99w\xE8o\xDC\xD2:-\xBE\xC1\x92 Պ\x97\xFD\xCEp;\xAB\xE4\xB1X\x9F\xBE\xF3h 7\x83\xAB`I6\xA0\xF5f\xBCT\xB2\xC1\xA4Xߌ+V \xD8\xFDm\xE3\xD6\xFC6o\x9D&9\xBF\x9B'c\xAAz8\xF8\xD9y\xB3\xC2l\xEE)\xCBշ\x92 \x8F|\xA0\x95$I\xA5V\xBE\xB8T\xBA.\xC9\xCA\xC4\xC6\xE3\x99\xF6m\x93\xAD\xC3l?\x8F\xFD\x95\x8A\x92C\xDEU\x85i\x86 )\xE7\x98`\x97%\xAF\xBB\x9C\xE28\xEEW\xA3\xB5 +Y\xB7\x82l`\xB8 +\x89\xAB\xBF~T\xF7\x96y\x89A!\x9F`GQ4OMl\xC1)i5\xE4\xA0\xB0fVۍ\xB8S\x83GtzZAw˥\xAE\xBC`\xDC\xEAwSRu\x9C<rۋ\xF4\xCE'\xB0\xA8\xE5\xA0,\xBA" +\x90\xDD\xEFXXTK\x81\xF0>\xF9j\xE5܀\x83ӲdJ\xB2\xF6A\x98Wq\xD2 ,N\x8Fbۆ\xEA\xE0\x86\xA3\xE0\xA6y\xD4W +)\x9C\x97\xAB^ei\x9E\xB9\xF2VJ\xB7E\xB3j\xC9\xEFq\x9F\x8Eu\xA9\xB6\xD3\xE5R<}\xEC\xA5o\xBD\xB7\x89Q\\x85`\xC4\xE6\xA0BRKu\xA6\xA67\x88ƺoݦ\x81\xEDӋ$\xB1\x85\xA4;\xB1\xF2z\xA6.\xF9\xB3a\xA3,\xCC\xEChJ\xBC4\xC1Ic\xE4+\xB4MC\x95\x8B\xEA\xB10\x87+\xB7ǂ +\x99=\x98s\xFC'\xADB\xF8+'K\x9C'+V\xDE<\xF8R\xAD\\xAChe#\x95\xCD\xFB\x85\xEAc\xF1'I\xB4W\xE8\xDA5\xBC\xE0\xC1\x95\xBD.\xFFI(\xAC\xEDy\xA1\xCB^:>\\xB2\x96\xA5 \xB8\xDFϠn5m\xF5*G\xB7z\xC1\xF5\xFB\xBB\xB2/%^\xEA\xB78\xA0Us>\xADV\xA4;m\xC6Ū߹\xFA"9^\x81\xA0;\xA3-Kl:V\xF0N\xDEo\x8C\x93 +fG\xAA\xF6 \xB40uت\xD9/\x97\xBCE\xF1\xB0\xE6'\x85+\xC9+\xEE6\xFB\x99\x85u)\xC5-\xE0 +\xC5;{M˞60\xF8\x9B;\xD2L\xF1\x9B\xDB>u\xF16e\xEC`\x96!\x89\xCD\xC9\xF2+K\x84?7n\x91`P\xA4\xFDe\xBC\xFE\xA5\xFC;W\xA1\xB1#\x91\xE2@\xE7\xE1'ȟ7_֤T5<\x81\xE0\xF7h\xBFu\x83\x96\xC7\xEDf\xA0Fކ\xD8c;\xA7\xFD9\x9Df +k\xC2Qty\xEE\xED(=\x8A)\xBD\xDC@sY\xF8\xC1\xED\x95\xF4\xACj\xFE\xCA\xCB&w\xEE9\xB4\x82\xDF-&\xDEί\xF6C\xC7҇n\xAFc\xF1\xD7\xCF\xAB F\xDD\xE6\xEA#U\xA5\x83m-I\xBF\x97BRo+\xBF\x98\x86\xE0\xCB:\x9B\xE5\xD3\x87:\xFE\x8A_\xDC\xF4</\xB2Ѯv\xFB\x9C\xC8\xF68\x85"\xDB\xF9lt\x91\x{DA52}x\xB9\xC4CŐE\x99\x8B'=\xD9\xCB%O\xA5yJ\xE21\xFE%\x8F\xB6S\x9DKJ\xF6|\xA2/\x98x(0\xAF<\xB9d\xE21\x9Bs\xD2Ч\xD7~8\xF3S*\x8A\xC3\xDC^>g\xEF\xC9^\xCEt\x9EJ\xF3\xD3\xFF\x92\xA6sa\xC1vZ~IɞO\xF4M'Ji\x8D傟\xB2(v[YbeOF#\x91 +-d _/\xE9<\x8D@\xFF4}V\x9E\xFD8\x85\xD0\xC8\xF9l\xF4*\xFCDI\xBC`\x9E\xAD\xF1em\xA3'9\x888\x92<\xFBGR\xBD\xC3\xFB\xB1<\xABWiܡl\xF5\xD9\xF0\xC4b +\xA2I\xAFDf\xF6O\xF8r\xDA\xC5\xDA<\xFDc\x90c";\xB9\xB2\xBC{\xF6\xDB\xE7 \xBF +\xEC\xDB|\xE4#\x9F\x83|\xE8\xB9\xE3\xE4^al\x83_\xD9\xD2M\xFE\x93K\x97\xBC-_h\xBC2Q\xFCL'{\xFA\xBB\xA2\xBFs\xD7\xC8D\x8664\xD2&\xBD\xBE\xC7[:yG\xA0\xBF\xBF\xD0_\xB7\xE7\x9C_\xA96~'b1\xC9l\xA8T\xFF2\xBB\x89Si5\xE08\xCDҮՏwŶu\xC5X\xF7%ߟ\xFD\xD7؛?\xEAG\xF2\x85\xB8r\x8F;\x87\xBE\xE7{\xCAw\x92,~A\xF0\x80~\x9B\xC2Ê\xA5D\xC1\x84\xA8ފ\xA7\x97\xFDl endstream endobj 731 0 obj << -/Length 4590 +/Length 4608 /Filter /FlateDecode >> stream -x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A--\xFD4j\xA1\xC8,\x8FDK\xFAQ\xD2β,/Q\xAC\x83\xF89\xA8(\xF6c\xD9NG\xB4\x89\xFBe\xE8\xE1ʈ\xAA\xF9\xFE\xB2(\xD6|U|!\xB2\xAEKzlI\xD6H$\x90KE\xEE\x91 b#<YN\x82\xF7\xF0K\x9C\xF4z.\xC3uc\xA8G\xC4 -d\xB8#=\x84o\x86?\xA1W\xEF\xA8'\xF1\xED%\xF26\xB2|#\xA1iT\xC0\xBF\xA1\xE1\xFC-\xDF,\xAA\xD5ƞ --\xB0[@\xE2\xF2\xA6kDn\xB4S\xC4\xCCE;\xBE\xBF\xE5\x9Ben^O }*x\x9A\xA6\xE2֍%\xFEla\xB8 [k{"\xC3e_(\xC0$W\xD52R\xD3\xC2r\xEB\xDF暥<\xAC |d\xB4\xEB\xC2H)Do\xEA\xE07T\xBE1\xE3w\xC1K\xC9\xDA\xF3I\xEFڜ\xC3\xF8\xDB\xD7ёF\x87\xF1\xAAȹ\xC3)\xC3a\x94i\xA5\x88H\xEC=V\x9D\xCAq\x99\xBA˓\x8F ݟ\xC0\x8C:\xAD`i\x8F\xBB\x85]F -\xEA\xC1\xD9\xE5(\xF7E\xDE\xDE4\x8C\x82N\xE6\xA5D\xBD\xD9\xCAt\xE0}\xF9̇\xCDMÌNё\x86\xD1-\xEC\xAE\xC2\xE5\xA2j\x89\x88\xB4\xDEҀ\xC5c\xED \xA5}\xDCFT\xF8l+\xA2\xB9\x8B\xDFt\xD9 -\x89ޑ\xA5І\x91\xAE\xAC\xB0\xB7\x9B\xA9\xDA>P\xEB\x98%as\xB2\xBB -\xACVF=\xD9'>\xC9FX\xFC\xB3\xBE\-\xBF:\xF7x!\xAD\xFC^k&\xB7\xFB\xE9\x8F\xF5\xC22n]\xF3\xB6F \xE8\x8CgE\xDA\xC2#\x90 -\xF1\xA5|\xEFzu\xF1\xEC_\xCF:\xB4\xF9\xA0\xA3\xDAOd8[\xAC\xFCH\xA3W\xD4?\xA2\xDE\xB3\xABg\xB4\x8A\xC3w -\xF2`\xAC\x9ELS\xC0\xF7\x83Yϐ\xCDCآ[깂\xFF\xEEr\xF6\xA0\xDD_\xA0-\x89\x89\xA9\xA2bD\xC7R$N\xDCKF Q\x9F\x8A#?\xD6\xC6C\xF2\xE3L\xBC.\xBE\xC5?W\xE4\xE01\xF6@{on\xF2&\xC5IK\xB6B\x8Dr:\xF7\xF4wAj^k\x98(\x85n\xE3\x94 -r3\x81QC&[\xC6\xD6\xF0\x8E\xD9+0\xE03\xE9\x98a!ZL`ك=v\xCB˂\xC7\xD5V\x92\xB2\xDB,}3a\xB5^\xB8\xA3\xB6|Q\x90\xE1}c\xBA\\xCE߹;j~xv9 \xE1!y*~\x9E\xF3c\xBA.?\x99ѭm\xA21s\x8D\xEB\xE7\xCE\xF4\xBE\xD6])\xC3hUf\x84\x9B]Z㵘\xCChs\xF7$D_j\xE4Z\xE4k4s'\xB3\xE1\x94\xF4㴵\xE1J\xEB]\xAE;\xB4\xEF\xC84\xDE\xD3uY:\xCE#n*ׇ\x83\xD05\x84\xBE"\xB2Ւ\xAC\xC2՚\xEF\xE1-\x83=\xD7\xEFi\xBA\x8BΙw'\xF3Gx\xAD\xDFC\xFF\x86\x8B| \xE1\xFAvE~\xE0q"\x9F,\xF9\xF0\x91\xFF\xF8D\xFE\xF1`\xB4",&\x9E\xCE\xF0\xD4'1\xB9\xDDM;\x9D=v\xCE!Jt\xF9S*\xD1#\xB6%\x9D)1{\xFC\xA4O\xA8D\xD8Mix֟E/*\xFE\xBDi\x9AM\xFD\xC3\xF99<\xF01\xB8\xE5\xD7W\xFE\xBAh\xCE7\xE7\xE4{<Ƕ\xF3f\xBB[:7\xCC\xF9\xBF?\x880ꎶ\xF3D\xAD\x83\x85u-~\x92ދ _û#\xDC$m4>\xF8\xFE \xD15G<*\xBB)L\xEC\xE2\xB6"E5\xA7<\xD1*H)\xBB\xE2Am\xBB\xEF\xAB\xC8qOE\xEE\x85/l\xA8\x9DUd\xEA{Y5V?O\xF5.\xF6^\xACs\xFA.M\xFC\xA6\x97&\xF4\xC4i^B\xD3۟9\x83\x84"m\xC6H~\xF1\xA5X\xB8\xBF\xFE\xEB\x8A.0\xF5d徉\xC2\xA3\x98\x91} ;\xC6.\xCEH)\x8A\xA0(\xA6\xE28E\xE8</A\xF9Lꎢ\xB4\xFF\xAAl\x9Do3'\xD0I\xAB\xD3~\xA2TzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52}\xE8}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jCC8?\xB1\xA9\xC3\xC9a|g\x91\x91оH\xC5\xFFbK#\x95\xFA\x89\xD0\xFF\xD5=U4\xB5\xB7\N;-\x9Bɜq\x9C\xAA -\xF7ッ\xF4\x9Fʦ\xEA\xB4I@\xEC\xD0\xD0<\xB3u\x97X\xCF\x92j\xD7tIm\xE6\xCE\xFF\xEE\xACi\xED$\xF6\xDC\xAB\xB1Y\x86\xDD)'`\xBB\xE5\xEC,\x84\xC3\xDD\xE8\x81sL"\xBADٻ,l\xB6\xFC\x81 -\xFBGd\xFB\xA9nc\xC9am\xCFI\x89\xD1]\`\xB9\x84\x89e7qS\xE5\xAE\xF2\xDEf\xBF}\xED?m\x98><\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xA2-\xA6\xAC\xF1\x81u\xB9\xC1q\xB5fN\x98hv\xB1\xE5\xFD3a?Kt\x81P\xB49>\xEFv\x9B -\x92PP\xE2\xE0\xBEO\xB9\xE0\xD8*\x9B~V\xFC\xD9e\xC6Awh\xD8l\xABk\xDC\xE2-\xFE\xC9V\xF5=\xB3\xBC0\xD0\xD0\xCD/\xEF\xBA\xD0<pn<\xEB\xFE\x9D\xF5Z\xD4p\x836\xD4w\xBBp=-Ì\xF7S\x95\x8EQĿ\x8EL\xCAZ1\xDE\xFCb\xB9\xCC\xFB\xD9^#\xA1\x91\xF6u\xB2u\x98\xA4\x94\xD0v$\xD8\xFD]J\xFAZ\xC5=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88G\xB8ܼ\x8F&{\xD9\xDD\xCA3C\xE9g\xC1\xBC\x99\xD5j\x93m\x8B\xC7\xE3\xF5\9/\xCA%\xAC\xBE\xB8o}y\xD5b\x85'e\Օ\xC5\xC6e\xD1\xDC"Op\x96\\x9C\xD8s}\xAF\xE2\xC4-39\x92B4\x97\xF47H\xE1\xA7 c'\xE1\xA7i\xF6\x92i\xCD\xCDi\xFCЇ\xDB\xF2Ñ\x80\xEF\xF1\x83\xB4o\xB3\xACaW\xB1\xB2\xBC9\xAC\xA0ZV\x88\xBC -\xB0\x99\xB75\xDF\xC3\xD9^2GpdR\xA2Yܘ\xED\x8F\xF67:r7Zٍ\x8E\xBAS -F\xA0\xBC\xE3\xE7 ?\xF1]\x9F˼\x9D\xF0\x96e\xE9fc_\xBAXfu\xCDT\xA8<\xA0^|W.8\xBE\xE3\xEA1\xEDR#\xF8 -\xADk'\xDBQ\x9A|lһb:-\xCEۛ\x88\xDDvF\x96\xC4\xC6]]\xF4\xC6K.j\xD2`\x8E\xC1\x88\xB1\xB0\x{158485}$\xF2\xB0-z+\x93\xD1q%)\x88\xF5\xE7\xFAȠ!#e\xBC\x8C7H\xAB\xDA\xAC\xD8r+\x9D\xC4a\xEA5\xDC\x99\x9B\xFFx\x81\x80-\xB0x6k)?\xEF(\xB0*\xB2\xE6~\xD9\xA4~\xACL\xA2,\xDA%@\x94\xB4톁\xB7E\xBD[vG\xFF\xDF\xDF\xFE\xFCu\xB5:"?\xD4\xB5z8۸\xA6p`,0\xDDc_E\xC6\xCC\xF8\xC7< -\x8CJw\xA52&.hS\xC6!]\xF1\x83M\xC3U]\x90\x96\xA9\xB1\xD6YQ\xCE\xE0\xE2K/\x93x\x9D\xB9\xE5J6\xF9Ը\x95\xE8\xB6-\x9F\xC0 \xBF\x9B\xD8∽83\x99\x88\xA3B\x94\x91G/\xAA6\xE9\xA0 -)mX\xDB \xAB\xB1K\xD7\xC5\xD8\xA8L\x8F\xF5\x8D\xDD\xD7+M\x83`{\xC3;\xFD\x9D{\xC6߫/\xD9j\xF3\xF5Ҵ\xB0\xF3n\xC6"\x9D\xC9hQ\x9A\xE4\xE7V\x86p*\x99\xC2\xC0\xEC>U\xC3T\xA6x\xB7\xC7\xD4j\x8D\xF0\xC5\xE9\xB4y\xD9m\xE1@|\xAC+#l3ہ\x81b\xD5\xC1ARw -g\xE1\xDA\xD4-\xD5ܐ\x99\xB4\xF5b\xC3j&A\xC2f\xB3\x95^ɛIBo -\xC1N19;ׅ ^\xD4MfM\x93\xB6\x96\xEAB\xCA\xF8Ba\x9C\x8D-^\xB0+x\xDA\xED<]s\xDB8\x92\xEF\xF9z[\xAA*\xA6 \x80+7Z\xC0\x9F$\xE1>\xBD\xE8s\xFE6\xCD+M6;\xD3\xD0S0\xBA\x80\x9E\xD0\xE6\xA1\xFD\xC83\xF3c\x89\xFD \xE4\xFFsBUE\xE7oe\xCF\xD2И$&=#B\x9D\xE8ٙ\xCC\xC24U\xACgX\xB9\x91\x9E{_-oWE\x8D\xE0IAe\xA10\xDA\xE0\xC0(\xCCR9\x8B\xE0\x9F\x98%"Lc9K\xA2(\x8CM:\xBBX[ s \x99\x8B\xDB\xDDn.\xB2\xA0\xD8@[\xB3\xBA\xE7\xD6-\xDC\xEC\xE6&\xA8\xE6J_J\x98K\xB0\x84\x97\xC1\xB34\xA8˯|\x91/\x97e\xE9q\x85\xE3\xF3_\xC3uE\x83\xE0\xE2/U!Ud\xAA\x837\xF9\xE2\x86a콨}\xC9U\x917n\xECG\xB6\xAA_4y +>\x9Fa\x8F\xC1\x8B\xF2\xCF(\x92\xF8v\xB7\xADj\xEF\xADq\xF0z.dPnrz\xE5\xCC\xD9N\xF6\xCB\Ů. c\x9CQu&¨%\xA3\x9C\x994\x85MA1 \xAB+\xA9\x93\xA0\xB9\xC1\xF7\xE2u\xACiA~\xB8@\x82l\xF8\xFA\xD2v\xBAB\xC2ܺ\xF7,\xB9j.\x81&Qp\xE7:\xAF\xBD\xBCV\xF1mg\x87\x91\xB7\xB8\xD0\xFA\xD1r\xDFӛL\x92\xA7\xAA\x80ߴ\xFD\xF9J9\x98\x8D}\xB2)\x95\x85\xB0\xDC}X\x9F\xFE +\xD87\xF3cz<P\xF0\x8A\xAF\xDB\xEC\xF2|s㈀\x9D\xEE\x91Qn\xF9z\xE1H[]"\xDA\xFD%\xA9^JojmE\x811\xC0\x85*6\xB8Rw̰\xA9\xB9\x81(+\xE3\xB04{k +\x9D\x96N\x98WV\x90-8\xF1\xF7\x9A;"\xAE7_\xD7U\xC7\xDE۶\xA8\x96\xF6\x8Aq\xA6e\xAE\xB8\xE7\x99@*d1\xB3t\xFC\xE9\xE8?\x90BUS\xFC\xC4Mys\x88/I\xE9\xDA\xDE\xF4&Tz\x93\xB8\xF8iP6hK\x89\xE0\xA5\xEDM\xBC\x87\xBD\xEE\xED.\xF1\x91ـ\xFE\xB1\xAD\x94\x80*2F\xA5\xA4\x8A@\x8B\x890Ӛ\xD5WS.\xEFG\xE8ÞV\x93О\xC5+\xEE\xC8N\xE5\x9B\xE3\x8F +\xEA[\xEAIr{\x89r\x84\x8D\xAC\xDFHiZ\xD3\xBF\xE3\x9BE\xB5\xBD\xA1Ev\xC7H]\xDEt\x8D(\x8DD\xC2Rt\xCB\xF7w|\xB3Z\xDA\xD7J\x9F\xD3Tܺu̟/\xAC4Ac+Yp\xEDvd\xB8\xEC++\x910}<\x95\xBC\xDDo\x91\xF5\xAE\xED>\x8C?\x89{mi\xB4\xAF\x8B%w\xF8SJ5\x8C3\x9D\xA2\x89\x8D\xBD\x87ú39\x8EaSzR\xE06a\xFA\xF0\xB3 +Vn\xBB[\xB8i\xD4`\x9C]s\xEFQ\xE5\x9Dὥ@\xC3$\xE8t^Fܛ\xAFm^\x97/\xBC\xC9lfm\x8A\x8E5\xACm\xE1V.U\xCBDd}\xF0\x92F\xACSh-\xE22\xA2\xC1\xE7Z\x91\xFC(]l\xA8\xB0\xFA\xA6\xCBVI\xF4\xB6$p(\x85\xB1\x82t唽[L\xFD\xD8\xF2\x81Y\xC7" +\xA0=\x9EUYk\x88\x8F@.ė\xF2\xBC\xEB\xCDŋ\xBE\xE8\xC8\x82\x8D\x990\x95j\xB6X\xFA\xB1\xC1\xA8\x98\xA1\xA6\xDE\xB3\xAB\xFF9h\x87\xEF;8\xA0X=\x99e>\x82?E\xB3%<C1W\xB0Dw\xD4s +\xFF\xDD\xD5\xEC`\xBB?A\x96\x9A\x8F\x8D\xE7\xD1\xD1\xE1x +{L2BlXahe\xC8n; + +&`\x89\xF1\x948nW\xB2GQ\x94 +\x9D%\xA1H2\xC74\x92\xB4\xC8l\xEB\x8EeƂť\xF6\xC0~{\x82\xFC;\xC1\xA7\xD9g4\xCCG\xF1d\x86؛\xBE[\xFC\xE0\xB8dj\xC2:֙\x94\xB2\xC7M\xC4k\xFEO\xBA[\xFB\x92ġN%\xE9b\x93\x82\xEEx\xE7Qb]|1f{M0^\x90q\xBC c![#\xF0\xF3\xB2\x84\xDDC\x83\xEE\xED\xED\xDA`_̤͒I\xCB<\xB9\xCCt`\xA7\x93\x99\xB10\x87\xC8L\xFAS\xCA\xCCĄm\xD9{J\xCA\xF4\xF9dFg`\xE9Ȍ\xB9]N"3\x8B\xE5\xA1\xC0\xB1Bt\x87"N\xBF_+\xC4C\xF0(+ǫ\xC7\xC7?a\x85\x80\xF0\xB4r\x8F\xA4\xC4T\xA7b\xC4\xC7R\xA4\x97\x8CS\xE2>\x9D\xC4abl\x84\xE4\xE7\xB8x\xDD\xF9\xFF\Q\x80\xC7\xFA\x{DF7D}i(\x9A\x94\xA4-\xDB +=*\xE8ܳ\xDF\x99y\xADc\xA25\x86\x8D3vL(\xCCN +\xB98\xEC;\xC7;\xE1\xA8,\xE0\x80Ϥ\xE7\x86)\xF4\x98\xC0\xB3쎧\x8F\xAB-\xCC$\xE3\xB0'x\xFA`\xB5Y\xF8\xA3v|Q\x90\xE3}c\xBB\\xC2\xEF\xC25?\xBC?\x82\x82\x84\xF0\x90\xA2?_\xF2c\xBA.?\xDBѭo\xA60\x8E\x98\xFB\xCE\xF5K\xBD\xAF +WJ\xD5\xC3+{\sW\x91m\xBE\xA4\xD4 +ў͐zŃ\xDA\xD4\xEC\xBE\xEF$=\xAF\xA0wb\xE3\xB2\xD8+\xA0\xBE\x97U\xE3\\x92Գh\x93\xE0\xD5f\xE9N\xFBK{d՝\xA7t`^C\xD3\xFB_9i\x86"]\x92L\x87~\xF1\xB5X\xF8g\x9C\xFDץtTJ\xB4\xC0l\x9B\xB5\xFF&:Q\xF6D\xE5\xF0\xE066*\xB6c\xEA"D"H\xB9\xA0\xD3:\xB8\xD5|\xECOI \x9E\x97\xE0\xEF\x8C;?\xEE\x8E\xE3\xAC\xFF\xAA|\xB3\xDC!eN\xE0\x93\xF6x҄\xA9\xD6}\xF0\xE4d+\xED\xF2\xC76\xAB*_˗ܸ]y\xEDr\x8Dh\xF0\xE2s룃\xFA,]֞M\xF2\xE2/\xBA\xCDp\xC0O\x95\xCBNj\xF3\x9E8\x86c\xB2\x8B\xB9\xA8CMu\xDBty*m\xB2\xC6 +*\xFE\xBDu\xD1/\x97\xE9\xA6X\x8FM\xAC\xECv9\xCB-gg +6wk\xFA^\xCC1o\xEAu\xEF\xAAp9\xE7\xF2'έ\xECo\x91* 3\xD3Z\x94a\xED\xF6I\x89\xDA8\xC1r\x80e\xB8\xA9\x969\xCE\xF2\xDE\xE6κ\xFB\xBA\xBC\xA0\xDA\xBD:8\xA0J\xB3\xA4g\x9F\xC8ζ`3\xDFG6d\x9D\xC4]ʦ\xAA\xBFwk\xB8l8?"\xD12\xF8\x9D\xD3%\xBF\x89f\xE9G\xC9A\xE4m\xB9G\xD1\xF1\x8B\x8EJ +G\x97\xFD=a\xBF0+4%=\xD9\xCFt6\xC6\xFF61)Q\xC7`\xABղ\x9F\xE06k\x9BФ\xFBX\xAB4\xA3\xBE#\xD1\xD024:\xE9!\xFE\x8A ~i\xD7py\xDDi\xBB8wn\xF68\xA1\xBE\xFA\xAB\xDB\xEBr\xF3Т\xF7\xF2\xA9eD\xDA,\xF8\xCDjD\x941\xF8d\xB6\xFD\xA5<\xB3\x9C~f ̋Y\xAD\xB7\xF9\xAExZ0\xDE\xCE\xC1\xB3\xCC\xE5 +f_<4\xBFe\xD5R\x85\x812\xAD\xEA\xCAQ\xE3\xB2h\xEEP&810Iݾ\xBEWd\xE3W\xD6) +\xDD%\xB3' +R\x84\xE8\xD8I\xA4A\xC3n\x9A\xA9^^%9M\xFAx;y8\xF1=y\xA3\xF6mN4\xDC,\xD6N6bOt+ +q\x90\xE3\xD9 +,\xE6]\xCD\x{1F0DD7}\xCC\xC41l\x99t\xE8\xD2,n\xEC\xF2\xC7\xFB\xFB\xAD\xDDB\xC7ݮ#P\xDE\xF3sП\xF8\xAE/\xE5\xB2xǺt\xBBu/]\xAC\xF2\xBAf.\xD4p\xAF+TݩJ\xEEs\x99C\xDE +\x94\xD2\xE8 \x89\x98\x8E\xED\xB0\xDA\xD9W\x81\x94\xEF\xAA[\x94\xEC@\xABxA\x8Bi\xD2\xE0\xEF\xA88c\xD8d\obv\xD7Eo\xEB\xA27^\xFF rQ\xB0KB \xC1\xC2\xD6c\xAA4\xD28L\xC1\xB7\xE8\xCDL\xC6\xC7Uid\xA0nL܇\xF5\x89QCA\xCAy\xEF\x90Ws\xF4/ذ\xE5VډU4\xDC\x85\x9B\xFF\xFD+\x80*[\xAF\x86\xCBc\xCB\xD3F\xC4\xE2L +ּ쿶\xF00>6\x94\xA1\xDAd~\xA0D\xF7_p\x90Ǟ\xC1^\xB8\xB1\xA5Z57\xE46S\xBF\xD8rM\x9E\xCD q \xFCĥ\x97\xC4\xF2P\xA5 +,`6J\x9C\x80\xEE\xF9z\xDBe^0\xFC- \xBD\xC2[\x82xzXr+#\x9F\hA\xF1dǻ\xA7&>\x99\xCE+*\xA5\xF0@\xAF\xDAb\xDE֔\xB31\xDF\xF0\xC7klrSa+\xDA;\x87ե\xF9\xCEp[\xE5\xEER\xA0\xB2\x9ES\x88\xA9I\xFD\xF4\xA7s\x9F\x84\xFB\x8CΫ9~\xE10\xA9)]\xB5=\xD7\xD8r\xF7\xB2\xF6\xB2\xAE\xDA/\x8C\xA0\xAB\xF7\xD2/\x8A\xEF|\x95\xB4\xD2~\x90\xC7}\x96\xC8V!\xECO\xD0f=Q!\x86\xF3\xA8W\xE8i\xCF\xE8\xF6{V--~\xC7i\xA9CmN\xD2,OC\xA0Y\x8EG\xA3\xD5,# \xF1|\x8E\x90a2}M\xACv:[m,\xCC!\xB6Z\xFAS\xDAj\xB6\xE5\x9C)){<\xD0g\xB4Մ\x8D\xAB\x89\xFDק\xF3;\xFB\xEE\\xE6\xBB\xEB]\xBE\xBDa(\xBD\x96\xC1*\x9A\x92\xAD\xB3\xEFXGw\xA7\xA4a\xBC>\xA9\xCEv+N\xC2Ml%\xC4\xFE\xF7\xAA\xF8)6g纰\x87u\x93;פ-\x{397A043}\xA3 +:\xCA\xF8J\xC78[W\xAF2\xE0 endstream endobj 754 0 obj << -/Length 5786 +/Length 5804 /Filter /FlateDecode >> stream -x\xDA\xED<]\x8F\xDBƵ\xEF\xFEz\xBB\xAE\x97\xE1p\x86C2y\x8A\xDB87FS\xDC\xC6[E\xD2\xAE\xC4]\xB1+\x89\x8AHy\xBDE\xFC=_3R\xB2\xB3\xDAU\x81\xD40\xBC"\xE7{Μ9߇I\x9Cf\xB3\xC4\xFF\xD9\xDF/\xF4\xE7\xA7\xEF_%k\xA3g\xEE?5^\xA1\xF6\xCD\xF5\xAB\xAF\xDE*mgy\$I>\xBB\xBE\x9D\xE9<\x89\x8BB\xCF\xF2\xCCĹ\xB2\xB3\xEB\xE5\xEC\x97\xE8}\xBD\xE8\x9Bv;\xBFJ\xF3"Rqϯl\x9AF?\xEF\xE7W*\x8B\x9A\xBE\xD9\xDEq\xDD\xE3<M\xA2\xF6\xB0\xE7\xB7_\x93$\xDDw=\xBF\xBC{\xFF\xE6\xC7?\xF1c\xB5ۭ\x9BEEC\xFE\xFD\xFA\xDD7\x92\xF0\x92)\xF8\x93\xE7\xDCfTm\xBEz[\x94\xB0\xAD\xA1l\xE5*-\xE1]e\xD0T\xF1Vb\\xB2=\xF5\x93}\xA6\xCE\xFE'\xF6\xFB\x90/\xF0ȧ\xD2"\xA03\xC5L\xA5\xB1)\x94"B\xA3\xE2,ϐ\xDE\xE9$:T\xC7\xFB\xEAm\x9A\x98\xB0-\xB6\xFAˍ\xFE\xA7^\xAF[\xA6\x89?\xCF-P\xCE\xFDzɽ\xC6\xD82\xCEM\xE9z}=\xBF\xD2\xC6D\xFB1\xE1\xCD&\x84w\xA4\xF9\xF3ķ\x93\xB9\xCAY+\x9BY\x9C*\x89\xCB\xC2\xC0L\xC9L\xCD\xF2t\x96'*\xCEqO\x98\xF8\x87\xB9*#\xE4i\x{16BE4A}\x9A^tu\xF5\xDEp\xC8\xD7\\xF00\xB7Q\xCD -w{\xE4 uWo{\xE9 M-*G\xA8һ\xE5\xC5mv-\xF6\xAD\xFD"]㭌\xCCm\xDF\xCDuU\xE0\xB8*FZb=\xFDcd\xCF?\xAC\xD5⇒u\xA7d\xC0\x9C\xD1\xE2\xDF]\xEF\xEB\xFA\x9Ck4\xC5<7x\x99\xC5*\xD1\xE3\xC1\xEF\xF8\xCCvx\xE6\x80\xC0\xF0\xB3\xE6=\xD0A\xDC\xC0\xFB?\xF0D\x959#H\x9EGׄ\xB0]\xC0\xD0v+\x80\xAC?\xA6qw\x90\x87\xE1z} \xB0\xF6A\xFAZ\xC0F(R|\xA3\xABޝ6\x8B1\xB4\x81,8\xD6 \x94\xCB\xD5a|\xCE`\xCD7\xB2X<\xAE\xE2Q\xC3\xEB2E\xA6\xA1\xFB{,\xE5t\xAB\xA1"@\xA8\xFE5\xC9\xBAb+7γz\xCDmePj\xF9.\x89\xAA\xBEԟXO\xBD亓\x97i\xC3YTk\x82\xEC#7e\x906G\x9B\xC8xXlu\xEB\xC1\x98`\xB4Y\*\xC1\x81ź\xEA\xBA\xF3\xB5\xD4qm4R\xC3?:\x88\xBD-\x8E9\xD3qiSݭ\x9B\xF90\xB6\x8F\xF0\xB8(sZ\xB4s\xE4:\xC4~\xE0m\xD32\xD62n\xD5\xEB\xEA\xA6u\xF7\x99\xECka!*\x9B\x8E\x816p\xEC$6IR\xD2Ac\xB7q\xC4\xC91\xF6X\xC1\xCCI\x92D?\xD5\xD5ҳ\xE0\x8A\xE8<|h\xBAC\xB5n\xFE\xD4\xF0\xC0:\x81͂\xACPZ\xD2O\xA8Z*\xB5\x8E\xADO\x91\xF2h!9 \xD7 *0\xF6>Q7\xB0W\xC5Ixǒ.\x89b\xE0\xBFmܽ-lD\xBA`i\xB2\x95\xB7-\xDF{> -|\xF2\x97\xBEd\x88WwOg\xB3_\xA8\x9B !\xE0\xD5C\xC7\xF5\x8E\xE7\xC3\xF3\xBA\xE9'`-DbK\xE6l\xF0\xFAa\x94\x9E\xB1\xF3\x91+\xBAY΄\x80\x95,@?$_tc\x96\xFC\xFEk\x9A\xEA\xF3(\x8EI\x8Bؚ TIs\x98\xEBz&\xD5 \xCE-K@C7f< -\xAC\xD6\xCC\xDC; -\xC6P\x8F\xFA4HP -!\xFC\xF0K\x97\xED\x80wI#g\xA4\xDA|\xD3v\xCCa\xA51Q!\xF8\xBD\xA9\xF9\xF7\xCE]q\x82\xFF\x96\xFBz4)JF:D\xEE\xB0%\xC9Oz\xD3L<\xE0\x87\xE4\x92u\xB3\xE47/\xFF\xE10^\xC3ֲ\x96\xA6\x97\x87\xCE\xD1\xDF/\xBBGi\xB8a\xC8vD\xB9\xF54\xDB\xED\x98(\x84(\xA5\x87\xAEv\xBB\xE5\xB6'-\x99v\xEEuxUp\xEDD\x8C% \xFCe\xC9Mo=7\xDFp\x81c8ط#\xFD|\xBB\xACH&\r\xA1\xD3{\xF3s\xF5^\xADa\x9BY>\x86\xDA\xDB=r\xB0\x97i\x91\x86Q\xC3\xC1\xF9v\x89H\x9F\x9B\xE8\x879a -\x83h\x8BPh\xEFk\x93C&|\x9E\x92].D\xA3-\x90\xE7\xA1@\x96\xC79\xC0f\x92\xBB\xBA\xFFW\xEDs?\xBC\x98Mg``L\xA5\xA3Y\xDB\xED\xE8籠\xE6Q\x93m\H3.C6\xA2m\\x9C\xE2"\xDF\xF6\xC0U\xE3\x94\xCE\xDAɖ\xAE\xE6\xCC]\xA9,\x8D -\xDE\xCF`\xD6\xDFO\xBFU\xA4q\x81G\x8C\xFE_s\xA5FKnz;}\xB8%\xDD 2\x96"\xC22\xDB\xB9wp\x97\x80\xF9G\x91\xC6\xF3n\xB6\x8Ba(\xCFd\x94V~\xE7\xA1rQ\xC6YbG\xFBy\xFF\xA6\xEA.,\xA3,(\xAC\xF6\xD3\xE0Y\xE2\xED\x9Ch8p\xD6p1>\xCDN㩁S\xCA[\xF1\xD5 -\xEB"M/\xC4\x9FQ!\xB3Ya\x9F\x87o\xB9&\xE7\xE2hN4\x83\xFE\x8E\xEFb\ -@\xD4\xD9d\xFC\x86\x8DqD\xC5qբF\xE4 \x8D͈\xC6f#8<\xEFڮkn\x9C:$tA\xB0{w\xF39\xA2Mc5Y\xE0\x8B\xC1\xA1p^&P<{\xD9\xF0\x92\x89{yKc1\x91\xE8<Wæ\xBCY\xED\xB6%\xDAT\xE2\xD1v\x80\x92\xE7j{\xA6\xE8\xA6@\xCE4\x95a\xBDn\xA6A\x88\xDAN1\xBDBy\x90s\xF0\x87Qu[\x90d\xF1nͯ\xAC\x8E\xAE\xE7eIG\xAD\xEF\xEBڙ\xF0l\x98Ѡ\xEA\xD8-\xBAUK\x98\xD6\xD0\xFEv\x8C\xBBZ\xCA\xAA\xB6\xA0\x8F\xE3v\xA1A\xBBr3t\xD2\xE3\x96{LL\xC5P\x8Aѯ\xB9\x88]K'.}®+\x82\xD1 -\xA7 \xFA-㹝\xD9xqk\xB1\xB1\xC92\xF1\xA8\x9FC\xEF\xF3Y\xDB\xD9908c\xBD\xFFG\xF5\xA1Z̯2\xA0\xAEWd4\xDDU \x86\xD0\xFB\xBF~U\xDA\xF8\xB2M\xD8M\x8C=?\xC1\xB6~\x9F&\xD3KAbS\xF9\xC5/\xD80\xEC\xE5.عc>傍\xB7\xC9va\xC0\xFA\xBBpI\xC8>\xD0\xE3K-y5\xE9f\xA4\x97\xBB`Ϲ_On\xD2\x85\xD0\xFF\xBF\xB2\x8D_\xDF\xF3D螃\xCA\xF5\xD1\xE6\xF7Gx\x82h\xF3\xFCe\x98~ .\x95\xCDB螪"\xC8WI\xD1V\x90ؙQ\xB0o+\xF9*-\x93G,:N\x80B\xFF\xF6 -xxN\xB6\x96d<RU -\xCDs\x8EYץu\x8FP\xF5\xD5\x9Bt\xF6\xC7h\xF7_\xFC\xD8Wn\xF0\xABat\xA6\xC8p\xDF\xC2B`vpޤ\x8Ck\x98"\xBFm\xEE{\x9829F\xD0~-\xAE#R\xFAr\xAEs'm\\xCFl\xDDH\xD4i_\xEF\xF6\x85.&um,S\xB0\x8E\xE87>,\xDA\xED[\xB5d\xAC+\\x82\x98\xB5z\xE8\x8CGe\xC4\xE1-.\x85ߞ\x8F\x98\xFF\x839\xEA={\x9D\xA0j}\xDF5\\xDB"\xF8\xC8p\xE12\x81\xC4T\xA4-\xDA\xE6\xECj\xD6\xD6F\xE8Z\xA9\xB6\xBC\xCAX\xDE\xDE> -E\x98p\x9F\xE78\x9F -2q\xA1\x95]\xB9E)\x98 -+\xDAU{\x81+\x9C:\x8A:j\x8C\xDC%'\xF8\x9A\x97гJ8\xCD\xA8\xFA-Ri\xF4?i\x93h\xAA-K\xBF\xCBg\xF8\xB6\xC7E14\xF5\xA6\xDF\xF82\xEC\xDAdqj\xCA\xCFG\xB0cWP\x91\x9E\x86\xD5$]\xA6`\x9DM2ظ\xBE=\xF4;\xB7\x80\x9E\x9B=\xAC(ŋ\xC1M\xF8\xC8R\xA8\x8C\xFC\xD0\xFB(?\xE1\x84\xC3Sk -Z\x89\xACR\xAC\xB3x\xB2\x83pif'Lي\x9C#K(\xFA\xD9D\xDFU\xE4,\xAC$v\xD4C\x80#zͷSOzA\xE1\x92\xCB,\xAE\xD157\x9E-\x81,g\x8B\xFA\x91\x87s\xCB\xE8\xA2R\xED n\xAA\VC\xE7%\x95\xB8)\xD3!ut\xBD\xAEv]=n\xD3ö\xB5\xF7y\x8B\x93m\xFA\xDCBy\xF4A\xBA~\xE8\xC6\xFE\xA5\xD0S\xD5nF\xD1\xC3\xFD@)\xB5oܳ\xA5AD"ʦ"r1\xA5@\x98\xF4Li\xA0\xA5\x91\xE5\xFE<\xB7&"Q,\x9BC'\xB6\xFC\xEA\xEA\xE1\xB1Z.\x87\xB2f\xB6i\xA3\x86(@\xACq\x99:\xF8|:S\xBB\xB0F\x86\xF0\xBC\x97~\xACc\x92\x82\xD1$\x8Fs\S\xC0\xBA\x844\xCD2r\x90{BʋR\xE4\xD6*\xA0\xC6;\xC4w,A\xAA#y\xD4A\x98\xF5a*\xC8\xEA\xD4r\xE8\xDFzg,:9\x8C$\xCBJ\x84\x99&\x98A\xBB\xFB0\xD6D\x96\xD0\xFBΎ&v\x81\xDB1&N\xB4\xC9\xEE\xB0ߵ]}{r2K\xCD 3edDi\x89\xA1\xC7a\xBD>Q\xF0\xC65\x93\xD4|2a\xA8\xC6\xFD\xBApx\xAE\xAB\xAE! -Qji\xE01\xE2\x86\xED\xA9\xA5s\x80\xC7R\xBBS\\xE4\x84~\xBD\x8D\xB0.,t\xAEu\x8F\5?3\xB3\xA6\x8Fc\x94/\xBB\xA2\xC8slh\xC8\xC1ty -<\x8D\x9Bz/\xBDء\xB5,\x86\xEE\xCDq\xFC4пX\xA5\xA9K -EՂ\x919\xA6\xD1\xFF\xCE5\xC7\xF3\xE5\x80|;\xA7ݏ)\xE6\xA6%\xFE\xAD$\xBB\x9D\x90@\xB3(\xC0\xBD\xE7.\x9B\xA6\xB2m\x81\xAEw;\x87V>\xE82\x91$\xDF\xB8&\xA9\xDC\xF7c\xE7u2\xC9\xC0L\x9C \xC2Q]l,)\xC8 -4\xC4]m\x97bzKyO8HNK\x95}\xA90\xA9vR=2i\xBF \x88\xA9[Ϣ=\xB8`G\xFC\x92\xAB}\xB6@-)\xCCK(\xD9\xCF\xCF\xED(\xEEpd\x8E\xEE;\xEBL\xB0 -\xEAo\xAA\xE4|v\xA2ki\xB3\xD9(eDb\xD9ׁ%\xE38\xF1-\x95\x8B\x86\x84\xC0'\x90\x8C\xB2Sۀ9E\xF7g\x89L\xE2L/1k\x8EW\x9C+a^\x9EpLU\x90E\xE4\xEC\xAA0g\xD6ev\x81\xFAG9\x9Db\xBEh\xA7Q\xFF6:\x8CB-Y\xF6\xF4e>\xD04\xB5>v\xAE\xE9\x83Q*\xC9~U\x89\x9A/{\xA5\xB1\xB1\xE5x\xF9[\xCE=\xF5\xE9\xF4\x83\x87\xC7\xEE\x90\xC1A\xED\xEE\xD3zLۮO\xF1\x95\xA7\xB1NRn\x8B\xE1r%e]Dn\xA3\xF0\xFE\xD0\xD2(;:+P\xD0T_2\xA3\x95f\xDD#\xAD\xAD'3'\xC8Ӻ\xB9\xBA\xDA\xFA\xF8?\x8C\xDF\xF0;e\xAA\xD1.\x98|g\x98\xDAA\xE2\x9B\xDB\xB1t\xEA=\xB4>3\xF1#)hK6+ƻ\x8C=\x86\xE4A\x82\x900\xDB$\xD6F\xD2Q\xAE\x83\x83\x9EZ\xB9\xEC\x91S.\xE1\x82 \xC5\\xE9\xFA\xA3\x84"\xA76\xB0mZƍ\xBE\xDE\xEC\xBC}s\x84c\x8Bj?\xE4\xF3\xA6\xD6'?\xB8(\xA8o\xBD\xE9;\xB5\xA2\xCEӍ\xBEϠL\xEBR2\xE3\xF8\xB6݈ -\xE4\xA3%\xD9&Y -1\xAEb-\xECcl7\xBD\xBB\x99\x935v\xE1WB\xBA憃\xA8\x9A\xC0\xB4\xD7\xDEwF\xB3̘\xFFі@*?\x81\xB3\xE8T\xD7v\xAC\x9A,Z\xD6\xDE2,*\x96\x8A6 -\x82K\xC2\xC6D#\xAEɎ\x80B\xAD1b\xD5 7؉l3\xD2GrTq\xF3gj\xBE\xE5j\xD7\xFD6-nS\xB5\x84u\x83r\xE5B\xD79\xD2Z3-\xDE(\x85\xAE\xC8X\xF6\x8C\xFE\x9Ee\xC7D\x8E\xF2\xC9\xE3 UC\x95$ ʫ@5\xF4\xA6\xE6\xF1m$\xCA\xD8_\xD9 \x90\xBA\xA3\xA1w\xDDwע\x9F\x8B\xEB\xCA\xC7\xEB\xBBh\x8E,*\xF1֞\x82\x80\x97-2mq\xDFB\x9E\xE8\xBDl\x98\xAF\xD9\xE1L\xD14h]\xCEi\xF0I\xA1cn8\x81\xF2\x89\\xE1r\xD9\xC6T҅\xDD\xDAi\xD8m\x86\xDDZv\x8Bz\x8Bw\xB8\xD3\xE5\xC8[Ñ\xB7*\xFAn~Ļ\xAB\xC9k"ֲ\xC1+2QQsۀ\xCAH\xEEV6|\x83Ƈ\z\x97Q\xA0C\x91\xBF\xB2Y\xD6N\xB3=\xFA\xF2H\xE6\xA9\xE2i\xE1t\xECiᜠP\xC0\xF4n\x91\xCB}C\xF1\xECO\xCA\xC1LB\xE9\x9C_><\xF8\xE5{y_+x\xDA\xED<ێ\xDBF\x96\xEF\xFE +\xBD\xAD\x84u3\xAC\x8Bd\xF2\x94\xCC\xC4\xD9\x93\xC1N܋`\x90\xCC[b[K\xA2"Rn\xF7~\xFD\x9E[\x8B\x94l\xB7l\xB3\xC0\x86[d\xDD\xEBԩs?L\x9D\xCD\xD2\xF0\xE7\xF0:z\xA1??\xFF\xF0,\xBDZ3\xF3\xFF\xA9\xC1\xF0 +\xB5\xDF\xDD>\xFB\xEA\x852n\x96'E\x9A\xE6\xB3\xDB\xFB\x99\xC9Ӥ(\xCC,\xCFl\x92+7\xBB]\xCD~\x9D\xBF\xAA\x97}\xD3\xEE7:/\xE6*\xD1\xC9\xE2\xC6i=\xFF尸Qټ\xE9\x9B\xDDk\xAE{\\xE8t\xDE\xFC\xF6[\x9A\xEAC\xD7\xF3\xCB\xCBW\xDF\xFD\xF4~\xAC\xF6\xFBM\xB3\xACh\xC8ܾ|\xE2F\xD2^2\xF2\x9CیJ\xA0\xCDW/\x8A\xB6bt\x81\xAD\xDC\xE8^\xA0\xD1MMo%\xC1%\xBBs?\xD9\xEAܿc\xBF/+F{\xA9\xA4\xEB7YWP\xB2\x92\xB5T\xC3\x9B\x9A\x8Bp\xBB4\xD6\xF7\x8D\x8D\xFFdٕ+\xC0 ]0\x8CW\xED\xF2\xB8eX\xA5v\x86u\xF0\xF3J6\xA5\xE6\xFBM\xF5\xE87T\x8EP\xA5wNj\xDB\xEE[\xEC[\x87E\xFA\xC6;\x99۾\\x98|^\xBD\x85\xE3\xAA\xFDiY\x88\xF5\xF4\x8F\x91=\xFCp\xCE\x88J֭\xC8\x809\xA3ſ\xBC=\xD4\xF5%\xD7h\x8Ay~\xF02KTjƃ\xBF\xE63\xDB\xE3\x99\xC3φ\xF7@q\xEF\xFF\xC4U\x8C y>\xBF%\xEC\x80\xED\x86\xB6;d\xFD0\x8D\xBB\x807\x9B#\x81\xB5\xD2\xD76B\x91Z\xE0\xCB]\xF5\xFE\xB4Y\x8C\xA1 +dѱ\xE6+T-\xA5\x9Dg\xEBS\xA4<YH\xC85H\x82 +\x8C\xBDOԍ\xECUI߱\xB4\x80K\xA2\xF8/\xAF\xC0\x8Ax4\xD0dػ\xC27']\xB0\xB4Y\x84\xCA\xFB\x96\xEF=>\x85K_2ī\xD7Og\xB3_\xA9\x9B !\xE0\xD5C\xC7\xF5\x9E\xE7\xC3\xF3\xA6\xE9'`-DbK\xE6l\xF0\xFAv\x94\x9E\xB1\xF3\x91+\xBAY΄\x80\x95,@?$_tcV\xFC\xFE\x9B\xD6\xE62\x8Acu\x918;\x81*I`3`]\x9FHu\xA2s\xCBR\xD0ЭO\xAB\xB5\xF7\x80-\xF3\xF9/\xEBZ\xAE\xDA\xE8\xC0\xA8G}$(\x85~\xF8\xA5\xCBvĻd\x903Rm>\x88i{\xE6\xB0Ҙ\xA8\xFC\xDE\xD5\xFC\xFB\xDA_q\x82\xFF\x8E\xFB4)JF:D\xEE\xB0#\xC9Oz\xD3L<\xE0\x87\xE4\x92M\xB3\xE2\xB7 \xFF\xE10A\xC3ֲ\x96\xA6\x97\x87\xCEӏ\xD0/{@i\xB8a\xC8vD\xB94\xDB\xED\x99(\xC4(\xA5Ǯ\xF6\xBB\xE5\xB6g+\xED\x9BZ\xC0\xE4\x91 \x9F\xA7d\x97\xD1\xE8@g\xBF\xEC#9\xAB\x91\xABl+b\x9C \x9Al2~\xC3\xC68\xA2⸿jY#r\x90\xC6fEcs\x83\x9E\xF7m\xD75w^\xBA\x8F X\x8A\xBD\xBB\xF7J\xD0\xE5\xD1\xE9DM\xF8Y\x86\xE0X8/S(\x8F\xBDjx\xC9Ľ\x82\xA5\xB1\x98Ht\x9E\xEBaS\xC1\xACv\xDFm+\xF1h{@\xC9s\xB5\xBBP\x88tS gګʰA73 \xC4m\x8E\xA7\x98^\xA1<eC\xC89\xF8è\x80\xBA-H\xB2x\xB77\xCE\xCCoeIG\xAD\xDFԵ7\xE1\xB922\xA3Aթ!Zt\xEB\x960\xAD\xE7\xD7pW\xA1\xFD\xFD w\xB5\x94T]9@\xC7\xEDb\x83v\xE5g\xE8\xA4\xC7=\x{1D860A}\xA1&\xA3\x9Fs\xBB\x96\xCE\\xFA\x94]W\xA35NA\xF4:e\xA0\xAAlID\xE9i\x8D\x99\x86\xABC$\xE1\xC0\xB5d\xAF\x97o\xA6\xD6Wh\xD8\xF5\x9E\xEE\xEC\x89/1h +,\xF6[n \xD7g\xC3o\xD5>@\xAFY\xB2\x80\xC0UlqzM\x92\xFD\x82Q\xC7_\xB7Ǎ\xB76\xC1{\xB0QT4\xB0\x94V\xAFY\x92!\xF7V\xA6\xD8.\xC26Q>\xBENF\xA3]r\xFF\xD8\xD6J+g\xC1\xC8\xC1\xF3El\xF7r\x85 m\x81i\xA4 ҟ\x95{>G\xD2 :\\xF7\xBCt\xE3\x89\xDAå*f\x96\xB84?Y\xEDu\x84\xB2""\xFF \x8Cga\xE3\xB3W\xB3/\x96/\xB52\x84ɣ1wG`\x8BWX\xB066\xD1y1\$\xE6\x98\x93\xEC\xFCF\xE4\xF8\xAE\xAF\xF7\xE2\xF2\xACY2\xA3=\xBA0\x82r-\xAD\xE8\xEEoeX\xBC\x83\xC1\x95mU_oe\xC6\x8E\x99\xFF}Q*\xA2G$\xFE4\x88\xF4kq\x8EU\x9BNf\xDD\xD0\o9\x89\x85,o\xA8\xA9VSς\xCD\xF3$\xCD\xFA,6Dr\x93\xA1\xCAбK\x805w6kt\x92\xA1r\xEC6\xA0z\xD7B0Q/2\xFE\xA31\xA1\xDD5}{\x88\xDA{\x97\x83\xBF\xFF\xB8ʮ\xE3փd\x87\xF5O}@\xE3q\x82\xE13Zs\xD7n\xA7\xB3\xF85v^\x9C\xCE\xE6wh%=R\xCD=\xFE\xCFn+B\x8C\xB7\xEF\xFF3+\xCB\xC5g\xFEO +\x86W_ \xB1IFa<\xF73W+Đ\xF3\xDC(\xA5{/\xC0;\xC4a\xD0Tژh."\x9Cs}|\xFC\x8B7cA\u\xFA=1\xC1ͽg\xAE\x8F\xB3 +\xA2\x84J\x95_\x9D\xC3^\x8F\:\xE6Sh\xC0x\xFBפWl\xB8\xAEׄ\xEC\xA7\xFA\xD2+\xF5\x95[\xE5U\x83N\xED\xD4lj&W0\x8C\x82^o +\x97\xB8\xA2\xA1\xE9\x99p\x8D\xB44x>\x89\xF5\x85\xB2\xE5\xA0xqAuG\xDBَ\xAE\x8D\x85|\xBF\xA9\xBC\xCBŘ\xD1\xD8XS\xAF\xDB͊\xBC8RY\xBF\xEB?\x93\xE0\x9C\xF39g\xC57\xDA\xF0\x95\xC8\xCF\xFB\xEC\xEE\x85I\j\xC7S\x8E\xAD<\xE8\xF5+'\x9F\xB6;\x84,x\x93N&֡;\xC64\xB62\xD5bk\xACv2\x8F\xF5\x9E\xD4\xF4UM\xFE\xB5f\x88\x83\xB5\xE2c\xF51\xA7\x87!\x80\xB4\xABxbM +\xFF\xA6\x92`\xB4\x9D{ +BL\xE7\xDFpYȌ\xC0\xA8'n{.\x93xG\x8E\xA0[\xC5y+6\x88\xCE8\xEAt\xA8\xF7\x8A\xE5DŽ\xB1\x8ELRXG\xF4\x96\xED\xEE\x86m\x832\xD6 +.A\x8C\x83=tƣ\xB2ⶁ_&\xFC\xF0 IFXT\x93\xAB\x9E\x82\xB9\x9F?b$\xA1.z>\x88ZUW\xA70\x8E\xBB\x80qL\x80T\xA4\xCC\xFCxɻ\xED\xAD\x83 \xEF\x83\xD1\xCA܌\xB6\xF9#+2Ia\x94\xE2E)\x98 ++\xDAW\x81+\x9C:\x8A:j\x8C\xDCk'\xF8\x9C\x978> \x96p\x9AP\xF5{\xA4\xD2\xE8y\xD2&\xD1\xE0]\x96a\x97\x9F!0\xDE(\x8A\xA1:Г\xEB\xE4\xD0@\xB4-?\x9C+\xFB\xA5\x88q\x89\x88\x82Ι\x9D0e+r\x8Eϡr;\xFF\xBE"\x97j\xE1$=\xA6\xC2D1\xF6`7\x8DG((\xE8T"\xC2\xC5\xC1\xBC\xE1\xC6 \xF3\xB9\x97\xF0\x84\xCE\xEFA\x99hZ%\xC6ȹ\xB1\xC4 Ay\xB5\x87\xD0J\xBCE*\xF2b(&e\x9E+\xC2/מc\xEA\xF9\xAA\xE9(\xD3\xD0I\xDA&ّģ\xACQ\xDAs\x9F\x98Eh\xC88\xDA\xC0\xE7\x8F\xC8\xE826\x92\x8FG\x85OPLe6ht\xA6\x90*qp1pc\xE3\xD3aف\x84\xB77\x92\x98\x94\x8E+d +8FY\xC7k\x8A\xDF\xC7&\x80\x86\x92\x98\xEB\xF9\xC0Ӹi\x88u{\xB4\x96\xC5н9\x8DB\xFA\x97(\xAD}\x82-\xAAl\x8D\xCCQ\xCF\xFF{a8*2\xE4\xDB{\xED~L1\xB7-\xF1o%\xDF $\x90\xF06J\xE8\xB9˶颜e\xA0\xEB\xDDޣU]M%U:\xAEI*\xF7\x9Bq@:\xC9cM\xBD \xC2S]m,-\xC8 +4D\xAF\xEDVbzӼ'$\xA7\xA5ʾT\x9C;\xA9\x99\xB4\xDFE\xC4ԯg\xD9}\xC8(~\xC5\xD5!碖\xC4\xE6%\x942\xE6\xF6w82O\xF7\xBDu&چ\xF5W+9\x9F\xBD\xE8\xDAQ\xF2q6J\xBC\x91\x8C\x80Md\xC98M\xD4r\xD1Ђ\x83x\xCDi8\xA3oOk\xA7\xB6{\x8E\xEE!\xCE\xDF/9%Ǜ^$\xEE؞\xA6\xFFxV\x82\xE5(\xC89☪\xB0 \x8B\xC8\xD9Uq\xE6\xB1\xCF_|\xEE\xD3N2c\xC5|\xD1Ns'\xDC\xFC8 +Xe\xD93\x94\x85p]\xEDBb\xD3?F\xA3T\x92C\xACR5 ϶A\xF6҉u\xE5x\xF9;\xCE\xE0 +%\xCC8<v\x87jp\x9F.X`\xDAvs\x8E'\xA8\'&\xD5>h\x83K\xCA]\x99\xFB\x8D\xC2\xFBCK;\xA0\xF3\xAC@AWP}ŌV\x9Au\x8F\xB4\xB6\x9E\xCC`\xFC\x99Z\xD7#WW\xBBE\x89Y[~\xA7L5\xDA\x93\xEFdH|\xF3\xFB \x96NC\xBD\x82\xD6\xC3\xC7:>`$EMV\x8Cw\x99ɣ4+`vib\xAC$\xF5\xDCF=\xB5r\xB9#\xA6*|\xDA +\x8A\3\xF5; \xE8\xD6.\xB2m:ƍ\xBE\xDE\xEE\x83}s\x84c\xCB\xEA0dEkRH|,Y\x8C\x83\xF7\xC1\x{12D768}\xF3t㣯\([$\xA6\x94\xFCB\xBEmw\xA2\x85\x98S\xB6IVC\xA4\xB0X\xFB\xC8\xDBM\xEFn\xE6e\x8D}\xFC\xAD\x95\xAE\xB9\xE3P\xB4&2\xED\xB5\xF7\xA7\x9D\xD1,3&\xC76|\xFA&\x92\xCA\xCF\xE0,\x86&7Vm6_\xD5\xC12,*\x96\x8A6 @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-08 13:10:36
|
Revision: 2440 http://sourceforge.net/p/jsbml/code/2440 Author: niko-rodrigue Date: 2015-12-08 13:10:33 +0000 (Tue, 08 Dec 2015) Log Message: ----------- updated user guide with the latest extension graphs Modified Paths: -------------- trunk/core/doc/user_guide/User_Guide.pdf Modified: trunk/core/doc/user_guide/User_Guide.pdf =================================================================== --- trunk/core/doc/user_guide/User_Guide.pdf 2015-12-06 18:23:39 UTC (rev 2439) +++ trunk/core/doc/user_guide/User_Guide.pdf 2015-12-08 13:10:33 UTC (rev 2440) @@ -13462,7 +13462,7 @@ @\xE5u\xFB\x89\xE9IS^G\xCF\xC9\xFC7}\xE9\x9D><ՇK}x\xA9g\xFAPEYB3fUw\xDC<\xE7sX\x99N"\xF3Li\xAEeu\xEFU\x8Fv$e\xFDUu5\xAC[\xED\xFD\xC3U\x8Dؑl\xCDMMw} M\xC1q\xF4\xC6A:(,\xB8\xA6\xFEI)L\x8F\x96MzY\xE8ܭLrN|\xA7| L\xDDLr݉\xEB\xD5O8\xD7\xC0J\xBD\xEF2\xF3\xBETĕ.'\x80g\x86FG.\xEA\xD3\xB3\xFB#\xA6q\x9E%\xF1\xD7\xCB*\\xD8\xE8y\xD3Q\xB3L\xA5(\xD5zЮڜ}߅@.\xE49L>6>\xF0\x9D\xB9\xCD\xEF\x8F|^\xAE\x8ED~/\xA4r\x88s\x9C\xD9"\xE1f\xA1\x8A\xCE,&D{\xB0\x96q\xC7z1܁bzH\xF8\xE2\xA1,\x8F\x93@+\xEEm\x99\xC4wθ'4I\xDD\xD6dknr\xB8j6\xC5n\xC2\xBA\xB9\xEA\xEC\xDF-Lٶ\xDCl{/\xDE\xC5@\xB0-\xB8A,8\xD7\xFE߉\xE9\xB9\xE9Ŧ\xF2\x91\xFF\x90\xB5\xB8Ӻ\xF9W\xC9\xFBѡ\xD5\xB6Ri\x98\x90Z\xC0\xBCY0\xD0Qm\xB5/\xD9-\xD8\xF77\xEF#\x9F_=\xF9?F\x8E\x926 +\xB8A,8\xD7\xFE߉\xE9\xB9\xE9Ŧ\xF2\x91\xFF\x90\xB5\xB8Ӻ\xF9W\xC9\xFBѡ\xD5\xB6Ri\x98\x90Z\xC0\xBCY0\xD0Qm\xB5/\xD9-\xD8\xF7W\xA0\xF7\x91\x89ϯ\x9E\xFCFߒ7 endstream endobj 203 0 obj << @@ -13505,18 +13505,21 @@ endstream endobj 627 0 obj << -/Length 1098 +/Length 1103 /Filter /FlateDecode >> stream -x\xDA\xEDZ[S\xDB8~\xE7W\xF8ў٨\xBA_\xA1S:00\xDDBv\xF6a\xBB\xDEX!Y;\x9B\x98\xD2\xFE\xFB=\x96e\x9B\x80\xA1\xC41\x9D)\xF8\xD9º\xE9|\xFA\xCE')Q\xE0:Y_\xDDɸ\xE4\xE2\xE3\xEE\xAD\xAA?W\xA0\xC9\xC2ף\xF1\xC1\xBBc\xC2d\xA0\x90\xC6X\xE3i\xC05F\xC2\xE8@ \x8E\x91\xC18 \xFE -/\xED$\x9Fgi4\xA2J\x87\xEF\xB34\xB7i\xBE\x89\xFE\x9F>\xD3\xAC!#$J\x95e\xB6\xFEe\xDEkV0U\xC0\x8A\xC7 -aʂ\x91\x80\xA2\xA4\xB4E#"d\xDBC<\xF1M\xBE\xC5zÄxS\xD9/mS"\x93\x88j\xA0"j\x90\x86\xA7\xE3"\x8E("й\x96,<I\xF3u\x96\xDCL\xE6\xE9Uɐ\xA9\x8D(o\xCB\xCC$[\xAE\xB2\xD4\xA6\xCB\xC7iR\xBE؈\xE1\xF0PiRW\xCC\xF2\x99]?\x9FXiD\xA4\x90\x85\x9D$\xB9 pM\x97\xDAt\xF3\xE2\xB9\xEE\xA6\xA4t\x8BFR*\xEE\x86K\xC2\xA9\xFCp\xF7G\x9C\xC2'\xAE\x82\xC1\x88KҸ\x98\x96kU\xF4k\xCA~\x90\xAA۳\xF9&\xFF4m\xECkZ\xA5 - Ϋr\x9D\xBD\xAA\xA1\xFCg\xF9\xF4\xB5\xC0\xA5kG-0c \x84\xC8\x98\xA9\x80\xF3Lrn\xF3Y\x96x\xA2\x98\xFC\x90\xAD=\x8B\xACm\x9C\xB7L\xF6Ͽ \xCF:\xE3\x8Bp\x8D\xDD\x89G9G\xED\xEBz92\xB3\xE6\xC1\xC0=\xC63[:x\xE9QAB\xD5\xD6\xD8\xFFn\xE2\xC5\xE6*bFV\xE5~ki\x89\x83\xF4VU\x81Y\xBC\x99\xBD\xCF\xDB\xD6CAM\xD3T\xD3\xB6I\xC0:R7:Y@\xEC\xDA -\xE87\xC0\x82m\x98\xA3q\xD0}`\x8E3ĉ\xBE\x8F\xB9\x82~W\xE1\xC9r\xB5\xB0K\x90*5\xD1\xE4\x81~\xBB\xBE\xA7`n\xD7E\xC5p\x9EW_\xB6(+\xF6\xFB\xC5ˣ\xF3\xB3\xF2mO -\x8E\xAF\xBA\x81 -\xA0\xD0שq\x9E\x80+x\xDA\xEDZ]S\xDB8}\xE7W\xF8љ٨\xFA\x96\xFC\x9Dҁ\x81\xE9\xB2\xB3\xDB}\xF0\xC6 +ɒ\xD8\xD9ؔ\xF6\xDF\xEF\x95,ۄJ\x8C\xE9L\xC1\xC8\xD6Ǖ\xEEѹGR0\xA2"\xC0u\xB2\xB9\xBA\x93q\xC9\xC5\xC7\xDC[T\xAE@\x93\x85\xAFG\x93\x83wDŽ\xC9@!\x8D\xB1 +&\xB3\x80k\x8CD\xA4%8RD\x93$\xF8+\xBC4\xD3b\x91\xA5\xA31U:|\x9F\xA5\x85I\x8B|\xF4\xF7\xE4\xF4\x896` +A Q\xAA,\xB3\xF5(\xF3\xEEXG`cP\xACs\xAC\xA6,(JJ+\xD0hL\x84l{\x88G\xBEɷXo\x98\x90\xC1oj"\xFB\xE5\xA2mJdQ +TD#\xA4\xE1鸈#\x8At\xAE%O\xD2b\x93%7\xD3EzU2djF\x87\xB7ef\x9A\xAD\xD6Y\xEA\xD3\xE5\xE34)_̈\xE1\xF0PiRW̊\xB9\xD9<\x9DXiF\x88H!\xAD\x9DGH\xF2(\xC05]rh\xD3=\xA2ϽpG0%\xA5[4\x92Rq7\B\x86H\xE5\x87˸\x9F\xB7\xFD<\xE6>q\x8C F\\x92\xC6Ŵ\xECX+\xDBoT\xF6\xCB\xC0\x80Tݞ-\xF2\xE2Ӭ\xB1\xAFi\x95*$8\xAF\xCAu\xF6\xAAB\x84\xF2\x9F\xE5\xD3\xD7\x97\xAE\xB5\xC0\x8C\x81"w`\xA6^+\x83@?\x89\xD9\xDCS0\xB7[1\-ʊ\xFD~\xF1\xF2\xE8\xFC\xAC|[\xC7S\xCB[\xD7\xF1Uw P\xFA:5\xCE# +\xDE\xEBQs\xDA\xED\xD4\xA8\xC5\xEC8ں\xBF\xA3$\xD0\xC3\xCFs\xCF WZ\xE4 +C\x91\xFDC\xA5aP\xC5%V\xFE\xAC\xD6\xFF3+\xC8\x88sO4\x96f\x88\xD4\xE1a\x89\x96ԁ\xE4vi\x92\xAB\xD5^\x97[\x81m]\xE2Zp\x89\xA7\x9F\x95\x96ٺ[\x96\x82e\xD3\xF0xz\xB0ei-\xFB^B\xF90\xBF6~\xF3\xF5\xF9\xC6\xE46\x82z\x90\xC1\x8F4\x86\xEA\x87\x9F!K\xF6\x83\x9D\xA1jz\xCF1\xEC\xCC\xEE\x91ç\xB5\xF1!\xBE\x88\xF3ko\xEA\xC2\xFF\xEB\xB4Y\xB4\xC0\xEEv\x8D\x9Ae\xB6\xB6\xD3\xDF\xDD\xF2蹖_\x98و`` +\x93NM\xDE\xD9\x89\x9Fk\xC8IZNʷ\xEE6\xB0=\xAEE^\xE8W endstream endobj 652 0 obj << @@ -13561,7 +13564,7 @@ '\x82\xF9oq\xC1\x89\xE2Q\xAA\xDAU\xCB\xEB\xBAOp\xC8\xEEm\xE2'\xCD7\xA3\xD2\xD8\xEA\x82\xE9\xF6\xC1\xEF'\xC1\xA2Z\x8B,\xF4rɺK\xB6\x992A~ \x89`v\xEA\xCB\xE0^\xF6\xD7sm\xEC/A\xFE\x8F\x92\xE1\xD3\xCE\xC2\xFF\x842\xC3\xCFUƅ&\x80Y@\xFA\xA7\x8DP\xD6_\xE9A\xE8賦O\x8Am.\xF9\x9E~\xDC\xD0gC\x9F\xAB\xD0 _"\xBE\xA4m\xFC\xC4\xFAqF\x9F_\xD3\xE7O\xF4^\xC1\xF0+\x80e\x94\xF4G\x85WZ\xF7\xF5\xB7߭\xCBORF\xFC\xD7(\xFA^\xFF]\xED\xF8\xAF\xCB\xE9k\xBE\xC8 \x939\xF1\xAF:\xB8\x8F\xFF\xAB\x85\xE7K\x96\xDE\xD7ȴA -t\xE0J\xD27>2\xCB\xEC\xA6\xBBW\xFC7\x99\xB2\x9B\xF0 +t\xE0J\xD27>2\xCB\xDC\xA6\xBBW\xFC7\x9A\x9B\xF1 endstream endobj 672 0 obj << @@ -13595,7 +13598,7 @@ \xBD\xCD)E\xF9\x8A\xAD\xA9\xE3o\x9C1\xA5\xF8&\x9F\xB3\x8C\xE9\xF3z\xD3\xF1l\xB4\xCA;L\x97\xACd9I9\xE80nP\xC7浚\xBF\x81/\xE0<\xB5\xC6\xE8\xB7Uc\xB2@+\x8D\xB6\xDB\xD7S\x9A\xAA\x85\xF3\xE5\xA9;\xA7|\xBCў\xEEx\xE1&4%\xC2w\xE2\xB2\xEC\x8F\xD3\o2\x98\x88\xC1\xFBi\x96j7H\xCFLx\xEEP\x86\x81hvM\xDE\xE5\xC8v\xE5y\xD4˹Roa\x88\x8E\x89\xCFiw\xEA%\xEE\x83# \xF55\xEB\xF9H\xB5M\xD0F-\xCAn\xA4O7\xD6E\xD1P\xBB\xA9zM\xFBv2r\xEE\xD2\xD2\xDB\xD2-lۭ\xE9\xFB\x90\xC2\xDB5\x90\xB8s\xFC\xA8[&\xB0\xBA\xC1>\x88\x9Fd\x99\xFCz\xAD\x88\xC7\xE0(3BE\xAE\xAC\xF6x3҃\xC2\xF3f\xE46\xAC,\x89\x8B\xF9d4\x84%\xC1\x8F\x87yd\x83\xF9d\x83i\xF6\xF0\xC9N\x9A\xD0'-X\xA7:!%;\x9E\xE8\xE5|2\x9A\xE6jK\xFDN\xD9ž\xBF9\xC5\xA9\xF8\x8A\xCDi\xCB\xE08s\x9Ar\xA7g\x99\xD3\xE7)\xF40\xA7\xE3\xD9h\xD5w\xA0$.閁l\x81\xAF M8v5\xF8\x87}Y4\xED\xA7\x8D\x93\x85\xDB\xCE\xCA_\x91v;\xB2!n׃\x90\xED8V\x95\xCF8\x83ֳ6f;\xB3mv\xC6!\xE5^ \x88O\xEB]\xBDLt\xA3\xB7sF\xE28; \xDE6Q6$.kW\xC4$\x86ZX\x87\xAEXܴ\xDEX\xAD\xAC\xAFT8\x88\xFD\xA3u\xF6\xD0'۹\xA5\xB0\xCCE+\x9C\xFAn6\xCEA:\xF7Q\xC7@\xB4\x81\xB5e'\xF02]nY\xE9\x92,\xBA6լTT\x88;t\xE1\xFB\x8D2z7Ř\xC3+\x8C\xB9\xB5\x81I\xFA\xBC\xB7\xA9C[\x99\xE6\x96\xF7\x91Gi\xCC +鈛\xF1aq\xB3\xB6\xE7R\x8A\xEC\xD0\xFAx6\xA2\xC22O.2\xE0Ϟֱ!\xA8\x85z\xF3;\xCE,+\xC6\xD4q/&\xC4\xD5Hn\xBB\x95\xFAO\xFA\xF1JnmU\x85\xAA\xDA\xF8fK\xB4\xBF\xFB-\xF0\x8B _\xF1\x8EK\xCBߨ\xD1B\x92\xC7\xE7\x8E|\x9E\xC0\xF3c\xC5x&\xDAwX\x93B\xFC\xFA9\xDB\xE7\xF1oݦ\xF6\xB1\x92\x93\xDC&\x90\xB3\xC3ͷk~\xFB\xB2\xE97A~\xE4ӟ\x88\xFD\xD2w\xB3O?\x9A=\xA3\xCA\xC0\xCC\xF0\xBB\x8E\xCC\xF8\x94\xFF\x80\x913V\xFB\x9E\xFA\xF4p\x8C\xC35\x8F\x93\xE8'uqT\xBF\x95\xFA]\xDAB<\xE6\xEAXF\xAC\xC6z\xF7\xC4[u\xF1N\xFD\xBEQ\xBF\xBF\xAA\xDF_L\x94;\xBF&\xA7xt|5\xC9RB\xA9{\x93\xCF\x9EHS\xAA\xC31p\x9AIWꇛb\xA7X\xA8\xEF{\xEB\xAF{\xFFT6\xADC~h\xF0\xDC\G\xCDK\xA1\xBDݳ/Kv\xF2\xFB\x8C\xC1 Ǣ\xBFM\xA12uV\xABH\xF5\xE5\xA8\xC0_\x91\xA8\xEE\xF9Q<\x95\xFFx\xDAdq endstream endobj 610 0 obj << @@ -13631,7 +13634,7 @@ endstream endobj 711 0 obj << -/Length 4898 +/Length 4897 /Filter /FlateDecode >> stream @@ -13676,7 +13679,7 @@ \xB5\xB1':?Y@\xFE2y\x9DQ\xD5p\xF0\x82ߣ\xFD\xD6iZ\x9ED\xB4\x9B\x81yb\x8F\xED\x9C\xF6e:\xCDք\xA3\xC2n5\xE9\xF3\xDC\xDBQzRz\xB9\x81\xE6\xB2\xF0\x83\xDB+\xE9Y\xF5\xFC\x95\x97M\xEE\xECsh\xBF_(L\xBD\x9D_'\xEC\x87NbH\xFA\xBD\x8E\xE5g\?<\x93\xAD8\x{15BACF}T\x95\xB6\xB5\xA4n/\x85\xA4\xDEF6:>\x98\x86\xE0\xCB:\x9B\xE5\xF3\x8F8 1\xD7\xFBz#\x9B#\xF0\xBC\xC8F\xBB\xDA\xCDK"\xDB\xD3#\x9C\xD9\xCE'\xA3\x8Fl\xCF\xE5ėK<TY\x94\xBEx\xE2ᆽ\\xE2\xF1\xDC1OI<\x86ӿd\xE2qa\xC6\xF6\xAAsIΞ?\xE8L<\x98W\x91^2\xF1\xB0/Ļt\xE1\xDAg~KBEIX\x98\xCB\xE7\xECn\xD8˙\xCEs\xC7<\xC5t\x86ӿ\xA4\xE9\\x98\xB1\xBD\x96_\x92\xB3\xE7\xFAM'\xCAh\x8D\xE5\x82ߒ(vYbeOF#\x91 d _/q\x9E\x87F\xA0\x96\xBD(\xCF~z\x84\xD0\xC8\xF9d8~&'\xBE`\x9E\xE3\xCB\xDA:\x9E\xC0\xE2H\xF2\xECI\xF53\xEC\xA7\xF2,\xA7ҸC\xD9\xC4g\xC3\xFF\x89\xB0&\xBCy\x98\xD9?\xE3\xD3ak\xF3\xFC\xAF!\xC6\xC0\x99ɕ\xE1ݳ߾\x87\xF8mb\xDF\xF0\x8D\x91O|\xF1\xB1\x8FĎ\xBF{\x85\xB1<~\xE6*h\xF2_\xE00\xB9t\xC9\xDB2\xF0\x85\xC6+%\xC1\xCFt\xB2\xA7\xBF+\xFA;\xB7\x8Dt\xA4iC#m\xD2s=\xDE\xD2\xC9;\xFA\xFB\xFD\xFD\x85\xFE\xDA=\xAF\xE0\xFCrH\xB5\xF1;\x8BInB\xA5\xDC\xCB\xEC:ɤՀb\xA04\xCF\xFAV?ޕ\xDB\xCEc\xED\xA7l\xF6_co;\xFC\xA8C\xC9\xE0\xCA=\xEE:\xF8\xA0\xED)\xDFQx\x8C\xB3\xF8\xC0q\xF0\xDBV.% -\xA6\xFCC\xF5V<\xD5\xFDl+\xA6\xFCC\xF5V<\xBD\xECg endstream endobj 731 0 obj << @@ -13684,43 +13687,37 @@ /Filter /FlateDecode >> stream -x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A-\xAB+\xA9c\xAF\xB9\xC1\xF7\xE2u\xE2\xADhC~\xB8@\x84\xAC\xF9\xFA\xD2t\xBAB\xC4\xEC\xEC{rnD\x80\x9A\xC3 s\xC0I\xE0\xDD\xDA\xCEK/\xEB\x86Մ|\xD3\xD9B\xE4l.\xB4\xBE7\xD4\xF7\xF8!\x8B\xE4\xA5*\xA07\x89\xFEz\xA5L\xC6.ڔJ}\xD8\xEE\xFE\\x8Fy7\xD3Cz4P\xF0\x8A/\x9B%\x9C\xF2|sc\x91\x80\x9D\xEE\x90Pv|\xBD\xB0\xA8\xAD. -\xED\x80\xFE\x96\xD4 -o\xA5\xB3\x8Fq\xE4kmX\x81!\xC0\x8D*ָRwİ\xAE\xB9\x810+\xC3nb\xED\xED5t\xCA-0\xAD.#E\xB4\xE1D\xDF+\xDE|]Wy/Lۢ\xCA\xCD\xC34L\xDB\q\xCF3\x81XHC&\xE9\xC0\xFB\xE8\xE0ψ\xA1\xAA)~ব9\x84\x97\xB8tenz*\x9DE\xDC\xC2\xFC\x89W6\xA8K \xEF\xB9\xE9M\xB4\x87\xBD\xEE\xCC -x^\xA2B+\x92\xFDc])QE*!QRL\xF8\xA9\xD6,\xBE\x9A2\xBF!{RMB{4\xD3\xF3a\xEF\xFD0Uv̏\xC5r\xF9\x87\xA2.\xAF\xD7@yGBI? -[(2\xCB\xC4#Ѣ\x94&\xED,\xCB\xF2\xC5:\x88\x9F#\x81 -c?\x96\xEDtD\x9B\xB8_\x86\x8E\xAE\x8C\xA8\x9A\xEF/\x8Bb\xCDW\xC5 뺤ǖd\x8DTA\xB2-<&\xA2\xFE\xFC-{\xBB\x99\xFA\xA1\xED\xB5\x8EY&0'\xBB\xDB\xC0jeؓ=p\xE2Ñl\x84\xC5?\xEB\xCB\xD5\xF2\xABs\x8F\xD2\xDAW\xF0Z3\xB9\xDDO\xE7x\xAC\x96q뚷5@g<\x8B(\xD2\xD6\x81T\x88/\xE5x\x8Bg\xFFz֡\xCD%\x88\xFCD\xAA\xD9bE\xE0\x87z@\xED\xF0\xF5\xB6\x98]=\xFBˠU\xBEk\x90\xEF\xE0-\xFE3\xB8\xCB\xD9;\x80v\x8145!ϣ\x83\xC3\xF1Θx\xC8aļx8\x87V\xE9m'\x80\xA1A\x8C1\xC7\xED\xC0\xE1N\xF60\x8A\xBC\xA1\xD3\xD8qj\x89F\x92T\xFE\x80cݒ\xCC\xD8iq\xAB\x9Di\xBF\xBE@~\x8DY\xE0\xE3\xE43z\xCE\xE1d\x82\xD8[\xBE\xDD\xFC`\xA9dj\xC4Zҙ\xB3\xC7O:ț\x88\xD7\xFC\x9F:t\xB7\xD6\xF7 ( }\x9DH\x92\xC5Q -\x98G`\x9D\xB11\xF1Ř\xE35FA\xCA\xFE\x82\xD8\x85l\x95\xC0Oy \xA7\x87\xD9\xDB;\xB5l\xC0\xBE\x98%\x9EIb\xB6yr\x9E馝\x8Eg\xC6\xCE9\x84g\xFA˟\x92g&FlK\xDESb\xF6\xF8I\x9F\x8Egt -\x9A\x8EL\x99\xDA\xE5$<\xB3\xC8f\x88\xA2\x93\xD0a\xF2\xEDj!\x80Gi!8^=<\xFE-d\xC0\x8Fk!'\x80\xD1Q\xF0HLL#:\x96"q\xE2^2L\x88\xFAt\xFAqd<$?n\xC1\xC4\xEB\xE2[\xFCsEc\xB4\xF7\xE6\xA6!oR\x9C\xB4d+\xF4(\xA7sO\xA4浆\x89\xD6\xE86N\xD90!75d\xE2\xB0el -\xB2- ꓘ\\x89N\x89;\xE7%\xBA\xBF\xFC)\x95\xE8\x89ےΔ\x98=~\xD2'T\xA2l\x8D\xA74<\xEB\xCFk֢\xFF\xDE4ͦ\xFE\xE1\xFC\xF8\xDC\xF2\xEB+]4\xE7\x9Bs\xF2=\x9Ec\xDBy\xB3ݭ?\x9D -\xE6\xFC\xDF\x84 -\xBB\xA3\xED\xDF<\xD1A\xEB`a\xC0\xE1\xE8\xFCv\x85u\xE0q\xC2ƫ\xF0$a\xFD\xF8\x84\xF5\xF1`\xB4\xCC1O\xA9\x9Fk\xB0vga -\x90\x99\xA4\xB4\xFD\xEC37\xE1\xCCQ\xC1O\xD2\xC0{1 \xE1G\xF0\xEE7)2|\xFF\x84\x8A\xE8\x9A#\x95 -\x82\xDD&vq[\x91\xA2\x9AS\x83h\xA4\x94]\xF1\xA06\x8E\x8E\xDD\xF7U丧"\xF7\xC26\xD4\xCE*2\xF5\xBD\xAC\xAB\x9F'\x8Ez{/ֹ -}\x97&~ӅK -z\xE24/\xA1\xE9\xEDϜA\xC2\x896c\xA4\xBF\xF8R,܀_\xFFu \xC5 - \x98z\xB2r\xDFD\xE1a\xC2\x87Q\xCC0R>\x90cg$\x84\x94 -EPSs\x9C"\xF4\x9E\x97\xA0\xFC\x8F\xA6u\x87a\xDAU\xB6η\x88\x99褍\xD5E~\xA2uzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52V\xBE\xA2}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jC\x9C\x9F\xD8ԃ\xE1\xE40\xBE\xB3\xC8PD\xBEH\xC5\xFFbKC\x9D\xFA\x89\x88\xFE\xAB{\xAAh*zo\xB9\x9Cv-\xDA \xDA0\xBD:\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xC2--\xFDH\xC7=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88T#\n\xDEG\x93\xBD\xECn噡\xF43\x83`\xDE\xCCj\xB5ɶ\xC5\xE3\x8C\xF1z\xAE\x81\x9C\xE5V_ܷ\xBE\xBCj\xB12\xAE\xEA\xCAb\xE3\xB2hn\x91'8K.N칾Wq▙\xC9 -ͥh\x8F\xA4\xF0S\x90\xB1\x93p\x83\x86\xD34U\xBD$CZss?\xF4\xE1\xB6\xFCp$\xE0{\xFC\xE0\xED\xDB,k\xD8U\xAC,o\x84+\xE8\x96B/\xC3@l\xE6m\xCD\xF7p\xB6\x97L\xC4!\x99\x81h7f\xFB\xC3\xFD\x8Dݍ\xD6v\xA3\xC3\xEET\x83(\xEF\xF89\xC8O|\xD7\xE72o'\xBCeY\xBA\xD9ؗ.\x96Y]3j\xA8W-@\xC7Z7T\xFB\xE2\xD7?\xF1E\xB9>\xB0J\xD1d\xB4\xCDy\xC1\xA9V\x98\xFD\xB9\xAC6\xABb\xDD\xD8\xEC\xCE!|\xD8\xD3q\xE6\xC4\xF7pP/kMhhyni\x94\xC0\xF4\x90\xE3\xC1\xE8Hx$&\x9E\xB4\xEA-\xFE涓 -չ\x94\xCFЎxC7\xEF\xE8\xEFK\xFA\xFB\x96\xFE\xFElT|\x89/\xC3TP\x9E~\x95\xB0UR>\xA80\xBEO\xA2L\x8F\xB67٦\xB1\xCE2\xFB\xC1\xFA\x9F\x8A\xA6s\xAC\xC1\xA9`2\xB5m\xB69\xF6\xEF<\x84YL\xCDVz\xBF\xCE\xE1e\x99M \x8F\x{3A6445A}4[L\x94\xFF+x\xDA\xED]s۸\xF1=\xBFBo\xA5fb\x9A+-\xFD4j\xA1\xC8,\x8FDK\xFAQ\xD2β,/Q\xAC\x83\xF89\xA8(\xF6c\xD9NG\xB4\x89\xFBe\xE8\xE1ʈ\xAA\xF9\xFE\xB2(\xD6|U|!\xB2\xAEKzlI\xD6H$\x90KE\xEE\x91 b#<YN\x82\xF7\xF0K\x9C\xF4z.\xC3uc\xA8G\xC4 +d\xB8#=\x84o\x86?\xA1W\xEF\xA8'\xF1\xED%\xF26\xB2|#\xA1iT\xC0\xBF\xA1\xE1\xFC-\xDF,\xAA\xD5ƞ +-\xB0[@\xE2\xF2\xA6kDn\xB4S\xC4\xCCE;\xBE\xBF\xE5\x9Ben^O }*x\x9A\xA6\xE2֍%\xFEla\xB8 [k{"\xC3e_(\xC0$W\xD52R\xD3\xC2r\xEB\xDF暥<\xAC |d\xB4\xEB\xC2H)Do\xEA\xE07T\xBE1\xE3w\xC1K\xC9\xDA\xF3I\xEFڜ\xC3\xF8\xDB\xD7ёF\x87\xF1\xAAȹ\xC3)\xC3a\x94i\xA5\x88H\xEC=V\x9D\xCAq\x99\xBA˓\x8F ݟ\xC0\x8C:\xAD`i\x8F\xBB\x85]F +\xEA\xC1\xD9\xE5(\xF7E\xDE\xDE4\x8C\x82N\xE6\xA5D\xBD\xD9\xCAt\xE0}\xF9̇\xCDMÌNё\x86\xD1-\xEC\xAE\xC2\xE5\xA2j\x89\x88\xB4\xDEҀ\xC5c\xED \xA5}\xDCFT\xF8l+\xA2\xB9\x8B\xDFt\xD9 +\x89ޑ\xA5І\x91\xAE\xAC\xB0\xB7\x9B\xA9\xDA>P\xEB\x98%as\xB2\xBB +\xACVF=\xD9'>\xC9FX\xFC\xB3\xBE\-\xBF:\xF7x!\xAD\xFC^k&\xB7\xFB\xE9\x8F\xF5\xC22n]\xF3\xB6F \xE8\x8CgE\xDA\xC2#\x90 +\xF1\xA5|\xEFzu\xF1\xEC_\xCF:\xB4\xF9\xA0\xA3\xDAOd8[\xAC\xFCH\xA3W\xD4?\xA2\xDE\xB3\xABg\xB4\x8A\xC3w +\xF2`\xAC\x9ELS\xC0\xF7\x83Yϐ\xCDCآ[깂\xFF\xEEr\xF6\xA0\xDD_\xA0+\x89\x89\xA9\xA2bD\xC7R$N\xDCKF Q\x9F\x8A#?\xD6\xC6C\xF2\xE3L\xBC.\xBE\xC5?W\xE4\xE01\xF6@{on\xF2&\xC5IK\xB6B\x8Dr:\xF7\xF4wAj^k\x98(\x85n\xE3\x94 +r3\x81QC&[\xC6\xD6\xF0\x8E\xD9+0\xE03\xE9\x98a!ZL`ك=v\xCB˂\xC7\xD5V\x92\xB2\xDB,}3a\xB5^\xB8\xA3\xB6|Q\x90\xE1}c\xBA\\xCE߹;j~xv9 \xE1!y*~\x9E\xF3c\xBA.?\x99ѭm\xA21s\x8D\xEB\xE7\xCE\xF4\xBE\xD6])\xC3hUf\x84\x9B]Z㵘\xCChs\xF7$D_j\xE4Z\xE4k4s'\xB3\xE1\x94\xF4㴵\xE1J\xEB]\xAE;\xB4\xEF\xC84\xDE\xD3uY:\xCE#n*ׇ\x83\xD05\x84\xBE"\xB2Ւ\xAC\xC2՚\xEF\xE1-\x83=\xD7\xEFi\xBA\x8BΙw'\xF3Gx\xAD\xDFC\xFF\x86\x8B| \xE1\xFAvE~\xE0q"\x9F,\xF9\xF0\x91\xFF\xF8D\xFE\xF1`\xB4",&\x9E\xCE\xF0\xD4'1\xB9\xDDM;\x9D=v\xCE!Jt\xF9S*\xD1#\xB6%\x9D)1{\xFC\xA4O\xA8D\xD8Mix֟E/*\xFE\xBDi\x9AM\xFD\xC3\xF99<\xF01\xB8\xE5\xD7W\xFE\xBAh\xCE7\xE7\xE4{<Ƕ\xF3f\xBB[:7\xCC\xF9\xBF?\x880ꎶ\xF3D\xAD\x83\x85u+~\x92ދ _û#\xDC$m4>\xF8\xFE \xD15G<*\xBB)L\xEC\xE2\xB6"E5\xA7<\xD1*H)\xBB\xE2Am\xBB\xEF\xAB\xC8qOE\xEE\x85/l\xA8\x9DUd\xEA{Y5V?O\xF5.\xF6^\xACs\xFA.M\xFC\xA6\x97&\xF4\xC4i^B\xD3۟9\x83\x84"m\xC6H~\xF1\xA5X\xB8\xBF\xFE\xEB\x8A.0\xF5d徉\xC2\xA3\x98\x91} ;\xC6.\xCEH)\x8A\xA0(\xA6\xE28E\xE8</A\xF9Lꎢ\xB4\xFF\xAAl\x9Do3'\xD0I\xAB\xD3~\xA2TzҸ}\x9Bef\xB7:\xF5\x84\xF6\x88\x94\xD05\xE9\xBF\xF9)lg\xB52}\xE8}d\x9A\xFD\x82ćW\x8B\xCAim\xE3\xA6+\xBB\xB5;\xCD\xF4;jCC8?\xB1\xA9\xC3\xC9a|g\x91\x91оH\xC5\xFFbK#\x95\xFA\x89\xD0\xFF\xD5=U4\xB5\xB7\N;+\x9Bɜq\x9C\xAA +\xF7ッ\xF4\x9Fʦ\xEA\xB4I@\xEC\xD0\xD0<\xB3u\x97X\xCF\x92j\xD7tIm\xE6\xCE\xFF\xEE\xACi\xED$\xF6\xDC\xAB\xB1Y\x86\xDD)'`\xBB\xE5\xEC,\x84\xC3\xDD\xE8\x81sL"\xBADٻ,l\xB6\xFC\x81 +\xFBGd\xFB\xA9nc\xC9am\xCFI\x89\xD1]\`\xB9\x84\x89e7qS\xE5\xAE\xF2\xDEf\xBF}\xED?m\x98><\x88\xD6$i\xDC\xD3Od\xA7[\xB0\xCE\xEB\x9B\xD2N\xA2+\xA6\xAC\xF1\x81u\xB9\xC1q\xB5fN\x98hv\xB1\xE5\xFD3a?Kt\x81P\xB49>\xEFv\x9B +\x92PP\xE2\xE0\xBEO\xB9\xE0\xD8*\x9B~V\xFC\xD9e\xC6Awh\xD8l\xABk\xDC\xE2-\xFE\xC9V\xF5=\xB3\xBC0\xD0\xD0\xCD/\xEF\xBA\xD0<pn<\xEB\xFE\x9D\xF5Z\xD4p\x836\xD4w\xBBp=-Ì\xF7S\x95\x8EQĿ\x8EL\xCAZ1\xDE\xFCb\xB9\xCC\xFB\xD9^#\xA1\x91\xF6u\xB2u\x98\xA4\x94\xD0v$\xD8\xFD]J\xFAZ\xC5=\xC0_0\xC2/\xCD\xE6\xD7=\xFF\xAEu\xFAff\xDFk\x87\xEAỿ\xDC]\x97\xEB\xFB6\xBD\x97$G-#rH\xC1\x88G\xB8ܼ\x8F&{\xD9\xDD\xCA3C\xE9g\xC1\xBC\x99\xD5j\x93m\x8B\xC7\xE3\xF5\9/\xCA%\xAC\xBE\xB8o}y\xD5b\x85'e\Օ\xC5\xC6e\xD1\xDC"Op\x96\\x9C\xD8s}\xAF\xE2\xC4-39\x92B4\x97\xF47H\xE1\xA7 c'\xE1\xA7i\xF6\x92i\xCD\xCDi\xFCЇ\xDB\xF2Ñ\x80\xEF\xF1\x83\xB4o\xB3\xACaW\xB1\xB2\xBC9\xAC\xA0ZV\x88\xBC +\xB0\x99\xB75\xDF\xC3\xD9^2GpdR\xA2Yܘ\xED\x8F\xF67:r7Zٍ\x8E\xBAS +F\xA0\xBC\xE3\xE7 ?\xF1]\x9F˼\x9D\xF0\x96e\xE9fc_\xBAXfu\xCDT\xA8<\xA0^|W.8\xBE\xE3\xEA1\xEDR#\xF8 +\xADk'\xDBQ\x9A|lһb:+\xCEۛ\x88\xDDvF\x96\xC4\xC6]]\xF4\xC6K.j\xD2`\x8E\xC1\x88\xB1\xB0\x{158485}$\xF2\xB0-z+\x93\xD1q%)\x88\xF5\xE7\xFAȠ!#e\xBC\x8C7H\xAB\xDA\xAC\xD8r+\x9D\xC4a\xEA5\xDC\x99\x9B\xFFx\x81\x80-\xB0x6k)?\xEF(\xB0*\xB2\xE6~\xD9\xA4~\xACL\xA2,\xDA%@\x94\xB4톁\xB7E\xBD[vG\xFF\xDF\xDF\xFE\xFCu\xB5:"?\xD4\xB5z8۸\xA6p`,0\xDDc_E\xC6\xCC\xF8\xC7< +\x8CJw\xA52&.hS\xC6!]\xF1\x83M\xC3U]\x90\x96\xA9\xB1\xD6YQ\xCE\xE0\xE2K/\x93x\x9D\xB9\xE5J6\xF9Ը\x95\xE8\xB6-\x9F\xC0 \xBF\x9B\xD8∽83\x99\x88\xA3B\x94\x91G/\xAA6\xE9\xA0 +)mX\xDB \xAB\xB1K\xD7\xC5\xD8\xA8L\x8F\xF5\x8D\xDD\xD7+M\x83`{\xC3;\xFD\x9D{\xC6߫/\xD9j\xF3\xF5Ҵ\xB0\xF3n\xC6"\x9D\xC9hQ\x9A\xE4\xE7V\x86p*\x99\xC2\xC0\xEC>U\xC3T\xA6x\xB7\xC7\xD4j\x8D\xF0\xC5\xE9\xB4y\xD9m\xE1@|\xAC+#l3ہ\x81b\xD5\xC1ARw +g\xE1\xDA\xD4-\xD5ܐ\x99\xB4\xF5b\xC3j&A\xC2f\xB3\x95^ɛIBo +\xC1N19;ׅ ^\xD4MfM\x93\xB6\x96\xEAB\xCA\xF8Ba\x9C\x8D-^\xB0 endstream endobj 754 0 obj << @@ -13774,7 +13771,7 @@ \x82K\xC2\xC6D#\xAEɎ\x80B\xAD1b\xD5 7؉l3\xD2GrTq\xF3gj\xBE\xE5j\xD7\xFD6 nS\xB5\x84u\x83r\xE5B\xD79\xD2Z3-\xDE(\x85\xAE\xC8X\xF6\x8C\xFE\x9Ee\xC7D\x8E\xF2\xC9\xE3 UC\x95$ ʫ@5\xF4\xA6\xE6\xF1m$\xCA\xD8_\xD9 \x90\xBA\xA3\xA1w\xDDwע\x9F\x8B\xEB\xCA\xC7\xEB\xBBh\x8E,*\xF1֞\x82\x80\x97-2mq\xDFB\x9E\xE8\xBDl\x98\xAF\xD9\xE1L\xD14h]\xCEi\xF0I\xA1cn8\x81\xF2\x89\\xE1r\xD9\xC6T҅\xDD\xDAi\xD8m\x86\xDDZv\x8Bz\x8Bw\xB8\xD3\xE5\xC8[Ñ\xB7*\xFAn~Ļ\xAB\xC9k"ֲ\xC1+2QQsۀ\xCAH\xEEV6|\x83Ƈ\z\x97Q\xA0C\x91\xBF\xB2Y\xD6N\xB3=\xFA\xF2H\xE6\xA9\xE2i\xE1t\xECiᜠP\xC0\xF4n\x91\xCB}C\xF1\xECO\xCA\xC1LB\xE9\x9C_><\xF8\xE5{y_+\xFD\xFD\x91\xFE\x8A^\xA1\x80\xF2\xE8o\xA1\xAFY\xAC\x94\x8F\xFBU\x9B\Z\x8DV\xACТ\xED[\xFDaU\xED(\xBE\x80\xBF(\xCBߓ\xFD\xBE\x9C\xAEG\x82<\xB2\xBD\xF3\xD0P\xB4\x85\xFF\x9C\xE1SG\x9F\x87,zx\x8CUh\x83\x81\xC9\xF0E4E\xC1?,\x9B\x915gL\xF7\xFB,\xE5\xBB\xEBW\xFF\xB3\xDF\xE3 endstream endobj 749 0 obj << @@ -13963,48 +13960,41 @@ j\xAD Y\xE2\x99\xF4\x8A\x86A)\xB5^A(\x9C0\xFD\xB3e\xD2I~\xBE\x9A5Suo\xBA\xCB \xADk\xAAQ\xF7\x94\x92ܸd\xA5'\xC6\xEA\xB2zr\xAC)P%3p\xAE\x99\xEFlT\xBE\x883\xBB\xE1T\xED,|\xB4X\xB9D\xBB\x8C\xED˫\xA0\xBE\xB6J\xF7lW\xE7\x85\xAB2w\xB5\xE9\xD8ֶ\xA4v \xD6g\xF2[\xA72\xB7V\x99\x96\xF2\x89\xDCʑ-ӑ\xA0&٭\xAExnv\xCE\xCC\xE7c\xF3\xF9\xD2|\xBE\xB0i\xA6\xFE\xF1\xEB\x80p2]\x97\xC0#\x8CU\xBDϷB\xFA\xAET\xAB\xC6P\xD3\xC0\xAFJ=YE\xBB\xC28\xF3\xD4l6W\x90\x9E\xF5\xC03\x97\x82N\xF98d]\xAC\xEC\xD6\xF3\xC6D\xED\xF3͚\xD5\xCF\xA4b\xDC=\x95\xBBt\xCF\xDB\xC2\xF6\x936%z\xDC\xEE\xF6\x98\xF2\xF4\xFC\xC1\xFF\xF1-\xE9\xDB +ӑ\xA0&٭\xAExnv\xCE\xCC\xE7c\xF3\xF9\xD2|\xBE\xB0i\xA6\xFE\xF1\xEB\x80p2]\x97\xC0#\x8CU\xBDϷB\xFA\xAET\xAB\xC6P\xD3\xC0\xAFJ=YE\xBB\xC28\xF3\xD4l6W\x90\x9E\xF5\xC03\x97\x82N\xF98d]\xAC\xEC\xD6\xF3\xC6D\xED\xF3͚\xD5\xCF\xA4b\xDC=\x95\xBBt\xCF\xDB\xC2\xF6\x936%{\xDC\xEE\xF6\x98\xF2\xF4\xFC\xC1\xFF\xF1~\xE9\xDC endstream endobj 816 0 obj << -/Length 5356 +/Length 5355 /Filter /FlateDecode >> stream -x\xDA\xED]ks\xDB8\x96\xFD\x9E_\xA1\xDA/#\xF5\xB6a<\x82\x9C\xAD\xAD\xEA\x8E\xF3\xE8\xCD\xC6I6\xF6N\xE8%\xDAf\xB7$z)*\x8F\x99\x9A\xFF\xBE\xBCP\xA2\xC4f|\xB9Խ\xA7_\xA7|\x8F\xF7#_\xFB\xCD\xE7?V\xD1\xFB\x94hݹ,\xC9\xC5\xEF\xD1\x90\xEE\xFD~hC6\xEBxu\xB55;t^F\xEF\xA2\xC5ЅC\xE0oQ\xBA6a\xCB\xC0\xC5`\xC4\xFD\x8D\x93\xEF\x93\xC0\x93\xF0\xA8j\x8B\x8B\xAAl1\xBBDUm\xF3\x91Q\x98\xD8:-&\xB6\x92\xD9\xFE\xA0.\xD5J -ˁ\x85Q\xAB\xD6&\x99\xCE\xE7wgˍ\xA2>+\xD9qv\xDBd)\xC6-\xB2\xC6젠[\xE6\x84&\xB6j\xECPf\xFB\x83:T\xD5\xD5-\xCA\xFD\x85\x98\xFB)\xFF2І\x85\xF0 \xB08\xD8bvQ@\xDB|\xA4\xC0\xC4֍\xC9lPw -\x90!\xD7_U;@x\xE0\x91\x87V\xCFryؓ)"\xE5\xBEs!\xAE\xE3u\x96\xA4\xC4l\xE0\xC3\xE0\xA6\x9B\xEC:IO\x9A\xAF.\x93t9\xCD\xF6`.\xEDa\xA1kXE \x95\xF8\xA8\xAABUv\x90\x9Db\xAA\xA6\xEDА -J\xEA6\xF8\xC1\xB1\xDA\xD3a<h\xA6\xBCj\xE8@b\xEE\xC9*\xFBʺ\xE3\xBC#\xC9we\xE5a\xD5\xEA\xC8\xFAf\xFD\xF3\xF2>$\xFB9^\x8A\xCC\xF6",̮/\xC2O\x90\x98lfcė_}Ϲs \xE6\xC9\xF0;q\xAD\x92\xC1i\x88>\x87\xE9<Q\x94x\xBE\x99I\x84\xD8bv\x89B\xDA\xE6#\xC30\xB1ùd\xB6?\xA8\xC3HD\x89\xBC\xBA\x8BH\xC4\x8D<\x9A\xAE2)\xB7\xFF\x995?\xE0\xD7$\x95\xD7d\xB0\xF2y\xFC.Z\x81\xE0\xCA y5]F -\x9F~ߩ\xF2Rk\xE1\xD9t/>\xAAa\xE0jx\x9D^MW\xF1\xDA2%\xF2-\xF0B\x9F0\xAF\x8A\xDF\xF8\xC2\xC9;ˍכ\x8Bu\x96\xEE\xC1\x90G#\x8C\xDA!\xAF{\xF6\xF8\xF5\xEE \xA5\xE6\x93ۇq}\xD3k(o\xD2d\xBE~5\xE9\xFE5\xB6 -d\xF8Ք{02U\xDD} -C^ \x88\xCF\xE0C -X\\xD0g\x8B\xD9%\xE8k\x9B\x8F\xFA\xC0\xC4\xD6\xF1\x92\xD9\xFE\xA0\x83\xBE@H\xAB\x81! Mھ\x8D.\xA34Z\xCD\xCAA!n\xB42*\xDBDK3\xAD2-vs+ǓvO5xJ\x90Ї\x8F\x934`q\x9A\xB3\xC5좹\xB6\xF9H́\x89\xAD\xE5\x81d\xB6?\xA8C\xCD)\x9F~\xB9G\xADc2\xEAʷ7{\xFC\xFA<J\x97\xF9g\xA0\xDF#\x82\xC3G-_\x83\xC5)\xC0\xB3\x8B\xDA\xE6#yH\xC5\xE7ʷ\xB08\x91\xD8bvI\xDB|\xA4H\xC0\xC4\xD6\xED\xC9lP\x87"\xBA\xBAi\x99+\xF7\x98\xFB\xFBC\xA6 -\xF3\xF1\xB9\xF2-,N\xB6\x98]\xD06\xA9-«%\x9E\xB7\xEF\xA3O}F\x8DV:\x8A\xFEq>\x8F\xE6&\x91\\x85\xD5\xD5~\xC2\xF9\xC0`l\x87\x87\x94(_tހ\x85)\xDB\xB3\x83\xB2o\x99T6\x9A\xD8J\x84Pf\xFB\x83\xBAS6\xF1y\xB9\xE8\xDCC=Y⣎\x8D\x97$\xD9d\xE4&\x8DW\xD9b\x98Gp\xFE\x82\x83\xFA\xF1\xC9\xD8o (Da,ʔ'\xFC{\xD31\xEE6\xE2\xC6\xED\xE0c [T\x9CC\xB4\x84\xEC\xE2[\xB6#\xDD!\x96\xD4\xDAqY\xED\x8D\xE9\xD0B3U\xEEB\xE0\xF9\xFB0Ԧ\x83.\xE2\xE17\xE9h\xC0\xE2\xF4a\x8B\xD9E m\xF3\x91 -[7g$\xB3\xFDA\x8ADyD\x88j\xA0A9\xCFq]\xE7\x85g\x8E\xB08\xD8bvQ@\xDB|\xA4\xC0\xC4֍\xC9lP\x87 -\xF0=\xED\xEB\xAB\xCCQ\xB0O\x99#.9a\x9E9j\xC0\xE2\xC4b\x8B\xD9E,m\xF3\x91b[\xB7k$\xB3\xFDA\x8AEJ\xA2\xEFJ\xB1\x845s\xF46Z&\xEFڹ\xA3\xF2\xAB\xA7f\xF4lR\xA4e\xB0D\x92\xC7u\xBB\xC4'\x92\xB6\xB08\xA1\xDBbvz\xDB|\xA4\xD0\xC1\xC4֚D2\xDBԡ\xD0=]5\xB4\\xAC)\xE9!\x91t7\xD4\xDBӿI\x9F$\x92\xB4g$WQv\x96l\xD2Y=\x93\x90[\x9C -\xBE\x8C\xAB\x8B]\xBCd\xDB|\xA4\x97[;4$\xB3\xFDAzI!\x89\xF2\xCBe\[\x88\xBBL1qA8\x87\xAF7j\xC0\xE2Db\x8B\xD9E$m\xF3\x91"[\xB7g$\xB3\xFDA\x8A\x84\x{31154F9}\xA5\xFB}\x909\xBA\xF05? -X\x9C-\xF8\xFE3\xD1\xD6-\xF5I\x8Fx\x8A7\xCF\xF3\xC4\xF6\xD9e\xB7\x8B(}\xFA5dr\xF1{4\xCB\xCA\xAE\xE6ś\xF7\xE9\xE4Hso\xCBg\xEB\xE2\xCD,Yey\xDA)\xFFv\x95%-\xDB~\xA5\x94\x97\xF5`\xE3ot\xF7\xA9{р\xB1\x9C{\xEE \xA2B9:\x92\x84UЄ\xEB2QJǧIU \x{114AAAF}6*\xA0\x81\xF1\x8B\xBA\x88R\xC5\xE5Z\xDF\x973\xFD\x87\xF6Ծ\xB9%a\xE8\x8C\xF8TG -˼\xBE\xF5\xC7W6ޘ7\xA9\xA96seݲLYƦD\xE6\x83\xD9-\xEBJcFyƨ\xA5\xFE¸\xBD\xF2m\x94\x93;-v$5\x99:4\xBFO&\x8C\x8F\xA3\xA2A<\x99( -X\xB7l\xB3\x95\x85f\xF7/\xA6Y\x87O/\xB6\x8DF\xFF6\xDE\xC1|=[L\xD7\xEB\xFB\xBC\x96\xD9I\xE4H\xD5\xC3\xAD\xE0\xC0S-\xDF,6W\xF1\xEA\xC7Y^LqK\xB4\xBA\x97"B{\xDC\xE6%\xA6\x86\xC1\xB9M%z\xE1\xCF}=\xF4\x9C\xE30\xB4\x9E -\xEAU\x9C+\xB4\xAA\xA2\xA2\xA4\xB9t\x8D\xFB\xB3y\xB2h\xA7c:\xFAQ\xA5\xB9ק4\xAA\ "u8\xA2\xA3\x94\xD5ALg\xE2\xDF\xF5K\xDE\xF37\xFFp\xDE\xC1\xB0\x91\x9C\xC8\xC2k\x89Q\x{153EDA}\xED\xC7\xDC\xCF0\xE17Cs\x96;V='\xE9u\xEFN\xF3\xA3\x88Ш\x89D\xF5\xC6\xCF\xF3\x9B\xFC5\xCE_\xE7\xD5A\x82\x8A\xF1e\xFE!i\x9E\xF1"\xFFp\x96\xBF>\xCE_O\xF3חE\xB4ϴ4\xDBÇy\xA8HW\x85ҿ\x8Aba\xDC\xED\xEB\x92\xAA>\xEA\xE4zz\x93\xE9^\xB7\xBC\x8D\x98\xF9\x9C\x8F\x9FG\xD96\xD6^gS\xFDg\x8F\x8E\xB3\xA8\x8A\xC7\xE3\xEC\xBAx\xF7\xA2\xF1\xF8\xE4.\xFD\xCB}̚\xE0ƣ\xBA\xDEL\xF4\xC5LXT\x94\x89\xBF\xF3P\xFF\xF6\xB4?{z\xFE\xE8\xFFZ\x9DY2 +x\xDA\xED]ks\xDBF\x96\xFD\xEE_\xC1\xDA/Cf\xA3V?\xD1\xC0lmUb\xF9\x91\xF5Z\xB6\xD7\xD2N>$\xA9)\x8A\x84$$$\xA1A?fj\xFE\xFBv\xE3E@\x96e4x\xD02\xEDER\xC0A\xDF\xD3}n_\xDC~\x80\xAEF\xB4zI\xAEj\xB2\x97\xB7\xCFQ\xD81bT\xFEdl?\x9A\xBF>>t\xFC\x8C o\xA4\x89O\xA9\x9D_\x8E\xA4\xA4\xC4\xD7#\xAD$\xD1\xCC\x9D\xCFG\xBF\x8C\xCF\xC2Yū\xC9\xD7\xFE\x98A&G\xE7\xE3\xD38 \xF3\xEF\xA0\xE3\xD3\xE5\xCD"\O~;Ѳh\xD473/Z\xE7\xC74\xBE1\xC7?\xF3S8!\xCC)\xA6pG\xC2ӄjt\xA4̡,/\x9D) +S\xDE]\xBF\xD4=\xF3\xE7;\xF9\xC0\x89l|\xD9\xFF\xE6O\xF9\xF3\xCD\xD3\xF3G\xFFg\xBE\xA6\xE6?iN\xEC\x8Bq\x9BƉ͖\x8F\xEC\xB7ҳ\x8E\x95\x8DƧ&\xE1\xE8\xF2\xD1\xFFt\xBCV++\xB2\xA2\xD8?e\xFF\xCD7\x8D\xE2\xF1 \xA8\xF0\x97\xDF\xE8hn\xFE\xF6\xC2\xF6\x81?z\x9F\xB94?yq\xA33S\xDAO4\xDE}\xE7\xE7g\xD3O\xCFWDڞ\xE5\xCB\xD2c\x84r\xEF%<\xD3=\x88]\x8A\xA1D``\xEELt\xAB\x81Ok\xB2\xC1\xA84\x97\xD3\xCC\xF4f\x9E, +'\x81\xE9\xF4\xE2IY5Wج\xAA\xB7\xB0\x9F70\xBFLa`\x8B\xE6\xE3\x8Ayo9\x8B\xD14\xBF\xAC\xFC\xA8Z \x98ت\xE9 \x99\xED\xDAʯ\xD9\xF7\xF9Ov\xC0\xF6c\xFEJ$Q>\xF7m\x80\xE5\xF9\x84jeʢI\xA0t_\xB1\xF6^Լ\xF3*C\xB3\xB7y\xA7G>\xF1-\xED%4\x91\x8C\x9B\xBFd\xD8\xC7\xDF\xEDn0v\x85\xD8\xE5\xE2G\x8A\xAB\xF1INS\x97\xC0\xB7\x9FbLWC\x97\xE0\x9F\xBBW\xE6\x8Bh\xF5\xC7\xD0v\x9C=>}\xF9$\x9Em\x96\xE1*\xDDݤ +\xDF0\xE6C\xE1}\xED\x81B\xA2t\xF0"\xCC\xE2UjZ\xD5\xE0\xE5H\xE3\xC1[\xE5\xD0\xB8\x8C\xE1\xEE\xEA&C\x9B\x81\xE8A\x8F]0\xBE0ݾ-\xCAb\j\x82=q+T\\x84\xEB\xD9&\xC0m؎\x8Co\xB1\xA4V\x91(\x90\xD5Θ=\xB7\xD4'\x82\xC9<D9\xEE\xA0=J\D\xF8<W\xA2\xC2f|\xB92\xBD\xA7W\xA5|\x8F\xF7#_\xFB\xCD\xE7?V\xE1\xFB\x94hݹ,\xF1\xC5\xEF\xE1\x90\xEE\xFD~hC6\xEBhu\xB55;t^\x86\xEF\xC2\xC5ЅC\xE0oa\xB2\xB6a\xCB\xC0\xC5`\xA4\xFF'\xCF#\xBET\xF0\xA8j\x8B\x8B\xAA\1\xDBDUM\xF3\x91Q\x98\xD8*+B[6v(\xB3\xDDA{T5\xD5-\x8A\xFD\x85X\xFFS\xFE\x95o\xE0;@\xD4`q +p\xC5l\xA3\x80\xA6\xF9H\x80\x89\xAD+\x92\xD9\xEE\xA0\xFD)@\xDC|U\xEE+\xAA\xDC [\xC5Tuۡ!\x94\xD4m\xF0\x83c\xB53f\x8F\xF1\x94o\x98\x92\xE5Ё\xC2ܓ\xFFT\xF4\x95U\xC7yG\x92\xEF*L\x8B\xC3\xCAՑ\xD5\xCD\xFA\xE7\xE5=|H\xF6s\xB4<\x99\xEDEX\x98^^\x84\x9F 1\xD9>\xCCƈ.\xBF\xFA\x9Es\xE7\xCC\xE3\xE1w\xE2ZŃ\xD3~\xB0\xB3\xF7DS")|3\x93,.q\xC5l\x854\xCDG\x86!`b\xAB\x98\xC9lw\xD0#-\xB2\xEA\xCE#4\xF2h\xBBʸ\xD8\xFEgV\xFF\x80_\x93T\k\x90\xC1\xCA\xE7ѻp\x82C(#\xE4\xD5t4|\xFA}\xAB\xC8J \xAC\x85g\xD3e\xB4\xF8x\xA8\x86\x81\xAB\xE1ur5]Ekǔ\xC80\xFC\xF4\xE3OO\xA7p>\xC1A\xCD\xE2\xE5W;\x97By\x94h>\x97\xA2\x8B\x8B\x96\1\xDBDKM\xF3\x91\xD1\x98\xD8*\xB0A2\xDB\xB4\xC7h\xC9\xC4S\xE5\ +\x8D\x89\x96l\xAAƮ +\xADE2\xB3\xEA\xED\xAER\x8C0\x86\x9FL\xB1\x85\xC5I\xC8\xB3\x8D\x84\x9A\xE6#%&\xB6j\xEDHf\xBB\x83\xF6(!% e\xC5\xD6R\xAC\xFFU\x9CJ2"5~2\xC5\xA7+h\x9A\x8FT+\xF8z\xF5,N8\xAE\x98m\x94\xD34)0\xB1U;G2\xDB\xB4G\xF5HM^\xACW\xE7A\xFF\xD9\xA1\x8C\xA1\xF05\x885X\x9C\1\xDB(\xA0i>R`b\xABƊd\xB6;h\x8F +>\xE1~\xB1QЇ=\xA4\xF4l\xF8\x9D\xFE.\x92\xF0]\x94>\x84\xED\x8E~~:t \x9E\xBC\xBA\xAF^\x9F]\x847O\xDF>{\xFD\xF6t\xE8b<}\xFB\xF6\xF5\xDB\xC1\x97\x87\xFD\xF4\xF4\xE4\xBF\xFF\xEB\xD5\xF3\xA0\xAE\x8B\xCD\xE0Cz\xE3\xCD\xE0\xE3\xDF\xD7\xF1f1\xFF\x93\xAB\xB3[d\xC7\xD1\x9F\xD8\xC2\xE2";W\xCC6\x91]\xD3|dd&\xB6 +\xCCv\xED1\xB23ї'\x8B\xB6`;\xB2۬\xA3\xD5\xD5a\xA8}\xBC\xD3\xEBx>\xFC.\x90\xB3?y\xAC\xFFn\x88\xD9u8\xFB\xE3$^\xAD\xA3u\xAEf\x80\xA8\xBB\xDC\xE7\xF60\xF1ȶ\xF6\xC1\x97]g|P~\xB6\xE5h\x92w\xBB\x88\xAF\xBE\x8AI>\xCC3\xDD|\x97,.Xs\xC5l\xAC5\xCDGk`b\xAB\xB8 +\xC9lw\xD0\x835\xE6\x93 (\x86L\xEF_\xD4#?S\xA1\xE2ڿ#d\x9B\xE6߰\xD9\xFA\xB1\xA4V\xED\xC8jg\xCC\x9B> +\x88P\xC5\xA6\xFB>\xE5\xE7$:\xEC\xFA\xBF'\x9B\xBB\x94\xCDrv/~\x8E\xF8\xE0\xEB\.\xA3\x9D\xF7\xB2\xFASGx\xC4g\xF0~\xB3\xEB8\x9D1[\xF4\x9C\xB7\xCCv\x9Dhb\xCB~\xCAlw\xD0\xFEzO\x982\x95I> \x9Ajg\x9Cs\xD6Q%\xE4\xBD\xFDe\x93\xC6Y\xB3\xB6ݵc/\xF7\xC2\xFE\xB0\|S\x93\xBF\xB0\xCD"\xFC\xE0\xB8\xEF\xE00\xDC8\xB9\xAFv\xE1k\xC24|\xC2Q +\xD7a\xB9b\xB6鰚\xE6#;,0\xB1U߂d\xB6;h\x9F%\xD4+\xB6\x87\x9D\x973\xD9|\x89Ve\x8F\xF5\xAF\xDDD\xA25Q\xBE\xD5I +'W\xCC6"i\x9A\x8F \x98ت=#\x99\xEDڣH|J$/\xB6:^\xFF\xF75\x9E&\xBE\xDF\xEA\xA4\x8BS\x80+f4\xCDG*+\xE0\x9C(Ui\x92\xEFu\xAE|\xF7Dw\xB6\xC2m\xF0\xF4\xE6\xE5\xF0\x8BmΓ0|\xCFÓ\xEB\xE9\xEA*|\x99\xADq\x93\xB0\xF6}\xF8 \xB1I\xB8\xBE\x89\xF7`\x89\xDD\xE0D\x84\xEF+\x9E9\xAA\xC1\xE2\xC4\xE2\x8A\xD9F,M\xF3\x91b[\xB5k$\xB3\xDDA{\x8BR\xC4\xDC#b j\xE6\xE8m\xB8\x8C\xDF5sG\xC5WO\xED\xE8٤HKa\x89$\xC9M\xBB\xC4'\x92\xB6\xB08\xA1\xBBb\xB6z\xD3|\xA4\xD0\xC1\xC4V\x9AD2\xDB\xB4G\xA1KS5\xB4X\xAC\xA9\xE8!\x91t7\xD4\xDBӿI\x9F$\x92\x8Cg$Wazo\x92Y5\x93\x90[\x9C\xF8\xBE\x8C\xAB\x8Bm\xBCd\xD3|\xA4\x97[94$\xB3\xDDA{\xF4\x92B\xED˸\xB6\xEF3\xC5\xC4\xE1\xBEި\x8B\x89+f\x914\xCDG\x8ALl՞\x91\xCCv\xEDQ$\xDC#\xAC\x98̭\xFA\xDF\x993aJ+\xA25:\x8Ae0\x84\x9B2QJǧqY م\xF2\xAA/7*\xA0\xBE\xF5\x8B\xA6\x88\xD6\xF9\xE5\xDF䗳\xFD\x87\xF1Ԟ\xBD%A\xE0U\xBA\xF9\x8Cx\xD4D +ˬ\xBE\xCD\xC7W6\xDE\xD87\x89\xAD6{eӲlYƶD\xF6\x83\xDD endstream endobj 701 0 obj << @@ -14033,7 +14023,7 @@ endstream endobj 883 0 obj << -/Length 820 +/Length 821 /Filter /FlateDecode >> stream @@ -14041,7 +14031,7 @@ yj. y&\xE3\xD2\x8ByF\xF0,\x85$ ?99\x99qgT4^B\xBA\xF1\x98\xE7b\xC9*\xF8\xC3\xFC\xA726\xBA\xDE\xD0\xF8\xF90NY\xD9\xBBDr\x839M_\xC7R3W_b\xCB|S\xCEq\xDAw\xCB\xD7\xD5\xE7\xE6\xC7K\x9BNs`\xA0\xD21\xFA\xA3+ \x86خ\x82<\x8C\xB5BJ\\xC0)Pq\x9B\x97\x95Ǖ\xAE\x82d\xFD\xB4\xAE\xF2US\x98\xD4;\xDD\xF5\x8C&A\xE5p-Bs\x8B\x83\x84\xED\xEB\xED\xE5߫T!\xDE\xEC\xE4U\xA7l\xEE3a\xCB\xD1s\xE1[\x82WdFѢٴƋ\xF2\x89\xBF\xBB6En\xD0lK\xA6~>:\xF8\xA8A\xF7\x8Dc\xB5\xF9O'\xF0u>\xA9<M\xA3O6\xC0\xAC\x97$\xD1.b\xB9\x93\xEE\x8FP3\xC5I\x8Fb ᳥\xF0\x85\x9A\xFA\x9BX(\xCB\xF6\xE6g\xEE]j3\xC3\xD3D\x92K \x8C\xBA\xD9\xC7)\x9E `\xFF\x8A\xB3Ϥr{F܁\xC6\xCA\xE7M\x80bX\xE3\xDF\xE99\xC3x?\xEDb\x98\xD4H<\xF5\xD0:$m\xC9\xDFņa\xEE\x83\xC3"`:\xE4 \x8Bg@\xB2Y2\xC52\xB6\x93|Ro[.±\x82\xA3\xFCHt[S_O\xDA\xFCa\xA3\xE4\xDD%\xCBwa\xFF\xA4P\x93\xDC8\xA8Ҭɸ1\xEE\\xA7\x9Dˋ\xB3!φ|\xABN{\xED\xA9\xFA\xF2\x9D\xDA\xEBR\x8C\*E\xE6;$B*\xAA\x80\xD6aZ$\xEC6\xDBЖ\xA1-vBZh6D}\xBC\xA2\x88Qh\xAFB;\xED+Bs\x8B\x83\x84\xED\xEB\xED\xE5߫T!\xDE\xEC\xE4U\xA7l\xEE3a\xCB\xD1s\xE1[\x82WdFѢٴƋ\xF2\x89\xBF\xBB6En\xD0lK\xA6~>:\xF8\xA8A\xF7\x8Dc\xB5\xF9O'\xF0u>\xA9<M\xA3O6\xC0\xAC\x97$\xD1.b\xB9\x93\xEE\x8FP3\xC5I\x8Fb ᳥\xF0\x85\x9A\xFA\x9BX(\xCB\xF6\xE6g\xEE]j3\xC3\xD3D\x92K \x8C\xBA\xD9\xC7)\x9E `\xFF\x8A\xB3Ϥr{F܁\xC6\xCA\xE7M\x80bX\xE3\xDF\xE99\xC3x?\xEDb\x98\xD4H<\xF5\xD0:$m\xC9\xDFņa\xEE\x83\xC3"`:\xE4 \x8Bg@\xB2Y2\xC52\xB6\x93|Ro[.±\x82\xA3\xFCHt[S_O\xDA\xFCa\xA3\xE4\xDD%\xCBwa\xFF\xA4P\x93\xDC8\xA8Ҭɸ1\xEE\\xA7\x9Dˋ\xB3!φ|\xABN{\xED\xA9\xFA\xF2\x9D\xDA\xEBR\x8C\*E\xE6;$B*\xAA\x80\xD6aZ$\xEC6\xDBЖ\xA1-vBZh6D}\xBC\xA2\x88Qh\xAFB;\xED endstream endobj 903 0 obj << @@ -14087,7 +14077,7 @@ s%i\xCA\xC8x\xF6?\xEF\xE3\xDF~\xB7\x93ۖ\xC4Kr\xD3\xE8\xBAfZ|\xA3U\x9A\x85\x88p2}K\xDC:(\x89v`PQ\xE7_\xE6?W \xC6>\xA7\x84h;\xBB\xE1b% GʖO\x9C\x82\xC4bQ6\x8C\xB8\xAB\x94 y\xE9\x95A[\xF8\x8F\x98\xC0\xC3WK\xF7\xB4*\x9B\xC7\xFB\x97\x8B>M#\x81\xE3c\xE1?~a\xE3\xBC\xCC\xB6\x88\xD3*s\xBE\xB3ɋs?\xF9G\x9E\xBE\xF7\xE7\xC6\xFE$\xE4\xFFsB\xB2ֲ\xFD\x9FT\xCDtKz\xC6\xD8M\x85\x9F\x97\x82\xA2\xB92\xA4`\xAEL\x9B4\xE5r\xB3bޙ\xC2"\\x9A\x9E\xA0e\xB6I\xFD\x95nN\x{1378FF}\xEDdK0>\xE1H\xDFxA7\xAF\xE8\xEF3\xFA\xFB7\xFA\xFBR@5h\xC0*N\xB3\x9A\xAAު<6˿i\xBFڬ\x94^\xC1\x8A -\xFEj\xAE\xD7\xF3ms\xF5+\x93Q\xA4)W\xC9\xD93UrT:w\xC1\xBFG\xF6I\xB5\xFDqbc-HYTu\xF4\xF32\xFCq#\x95y&\xE5_6\xD3UT\xD8\xE6\xFB\xB4\xB9\xF9\xEF\xD7O\xFE\xED-j\xD9 +\xFEj\xAE\xD7\xF3ms\xF5+\x93Q\xA4)W\xC9\xD93UrT:w\xC1\xBFG\xF6I\xB5\xFDqbc-HYTu\xF4\xF32\xFCq#\x95y&\xE5_6\xD3UTd\xCC\xF7is\xF3߯\x9F\xFC\xED~j\xDA endstream endobj 914 0 obj << @@ -14112,7 +14102,7 @@ \xAD2b8\xDDwt? 퇊r\xBB\x9A -\x96\xA9\xA12\xBB;'\xA7\xC8\xEFg\xF2o+\xDB{\xBF\xE4q-\xEA\xDB\xB4D\xD0\xDF\xD0&\\xD2\xDB6]\xF0\x8E\xE4-\xF6\x9BU\xFF\x83,\xEF\xC2 +\x96\xA9\xA12\xBB;'\xA7\xC8\xEFg\xF2o+\xDB{\xBF\xE4q-\xEA\xDB\xB4D\xD0\xDF\xD0&\\xD2\xDB6]\xF0\x8E\xC2[\xEC7\xAB\xFE\x83}\xEF\xC3 endstream endobj 891 0 obj << @@ -14515,7 +14505,7 @@ E{\xA3\xE3\xC4\xCE\xCDI5\x86\x9B\xFAƅ(\xEEiSY\xBE\xEE?\xC0\xC8~aj\xF9-\x91teȅ\xDD\xD2#\xB3\xAA\x920}\xE7%H\xCF\xE21j\x9C\xD2h\xA5\xF2L#7\xF2\xFDT>\xE9\x840^S&\xA6\x82 \xA6\xF4]\x8A\xBAU>\x92\xF1\xEF몪\xE5\xA9\xFC\xCAz\xEDoi\xB7K\x92/ߡ2\xAE\xBAs\x82絃"rEjŕz\xC6G\xF5\xA8U\x94Z\xFE\xACX\xA3\x8CI;hi\x83OLQ\xA7u$\xA5\xF8\xAF\xEBC\xD2|\xCBV\xE2\xC4pԺB\xFD3m@Pe\xB5+\xA8\xDE\xE7.\x9DV\xB8Ϲ\xE3\xC43\xD2\xCAp\xAC/\x95\xF1ve3T\xA7\xC7#\xDCHc\xA0\xB7\xF2éί\x9E }\x95\x8C\xD3 \x9B\xC0\x9AD8<#\x8C\xBEU"\x9B\xAA\xC0\x84S\x89\xF4\xD3$\x8A\x95>\x88\x8B\x8F\\xC7@g \x86\xDFɭ\xFB2\xFF\xB4!|\xEC\xF6\xBC\xEF#W\xE3\x9E'h\xB3\x9D4/9\xA0\xB6\xDD(\x9A27`|\xF5\xA8\x9Dɵ\xFEJ*\xF8\x80JY;*ȱ^\xD8\x8B\xA1\x{1DC3BA}K\xC8G\x90\xE0\xB2\xE4-/>\x92\xB4\xBB\xCBB\xBE0\xF0\x97_\xE2\x93\xF3\xACl:\xEA\xCCv\xFC\xF1`\x91Pq\x88۽#\xA7n4.\x8E7 Nj \x81\xE1o\xBFc\xF9NM\xF5\xEE\xE5Ao \xED\xC04f\xDEc0u\x9E\x87\x86\xF4\xDB\xEF ѻ\xEF\xA1e\xADۡ\x81k-`ŶȚ\x8Dk\xBBn\xA1\xF3\xB0\xF0j\zڌ\xD4\xDC\xE2\x98s9\xB7\x95\x862^ĝ\x8D\xD0\xFBi\xAE\xCF\xF5\xAE\xAFo\xEB!\xE0\x9F\xEB\x8F -N\xFE:?t\xF81\x9A\x8B1\xC6/_6_>-\xBF\xF2Ő\xFF\xE3\xFDc\xDA\xF4\xF0\xEF\x9A\x9A\xE9\xA1\xD2A I\xDB/+N\xFE:?t\xF81\x9A\x8B1\xC6/_6_>-\xBF\xF2Ő\xFF\xE3\xFDc\xDA\xF4\xF0\xEF\x9A\x9A\xE9\xA1\xD2A I\xDB/ endstream endobj 941 0 obj << @@ -18089,7 +18079,7 @@ ߏ\xEAY\xCD\xF4N,Gp\xF1\\xE4\xB7w\xED,\x81\x86 ]\xA0\xC6\xBA\xF08\xED0\xA0\xE3r\xFC\xB0Ο-\xA6Β\xF4H\xBE\xAE\xA7\x93\x9B\xF0~\xF6\xDBm3\x9B\xFD \xA6\x84\xB3\xB4U\x8Cz\xAD\x8C\x87\xD5S\xF4Ūyq\x85u\xC7.%\\xE1Z\x87i\xB7\xE2\xA9\xD2M?s\xCB\xE6\xA4\xDD\xDE\xF9\x97Ɖ\xB5\xB0\xFEԧ77t(\xAD==Q\x9E\xD5uH\x833\xA6\xDEt\xF0\xB6\xB1܆\x83L\xA6\xD7\xFBp\xE7\xA8xj\xE5"\xF23\xB3=<Ӥ\xDD\xAE}$4\x\xC0\xE4\xFE\xC4\xE6\xB6Mx\xF0*\x9E\xF8\xD7\xE6\xE1D\xD0\xE4\xA9/%\xEA<(ʭ\x9Dܬ\x8CG\xA0\xC0@X=\xCC\xE6\xF0\x8AI܋؞*\xB7tY r^P\xE8\x96c`\xEFTV,\xE7)\xC7@q}>\x8C#u\xC2\xFA\xB1 -\x8AǪаRQj\x84N\x99OSI\xD6 \xC8\xEDo\xD7\xF8F\xCC\xDACc\xA92\xF4\xAF\xB5+\x8AǪаRQj\x84N\x99OSI\xD6 \xC8\xEDo\xD7\xF8F\xCC\xDACc\xA92\xF4\xAF\xB5 endstream endobj 1010 0 obj << @@ -18131,7 +18121,8 @@ \x97F6c\x95)-hV\x8Eg\xCE\xE6A$\xC0kʘxٔg\xF03\xB5I\xCAt\xD2\xFBn\xEE1\x9B\xE8<\x8F;9c*^\xA3\xE5*&K\xDAn%No\xB3\xB8\xF2\x9F>,DH}\xA8\x9A\xCF4\xB0\x9E_\x96\xE0\x8C>\xCB7\xEC\x95\x93\xC8/\xC2\xD7vU\xBE\xF8[/ \xF0A\xCFt\xB69]< kƳt\xE9\xB3B\xFCI<\xF3F\xA5\xCF䎿\x8E\x88\xA0\x9A\x87'_\xB9H\x8C!z\xD8\xD6G\xEA_&M\xE0\xE4\xEE3\xC1\xA2\xD7H\x802W \xE5X\x99䳃\xD7c`q8\xFB\xC0?c\xB1\xC2ug\xFC\xCC\xF9?\xA9r\xFE\x84\xBB\xB8\xA4J \xF7\xF5w#\xBF\xFE\xDC\xE1WF~e\xE4\xAF\xFDn\xE4\x97~nw\xFA[\xBB\xFE"A+\xAD\xE5"A'\xF2\xEFZp\x9E ]\xEC\xF97\xFE@7\xFA\xDB\xD2\xDF\xDA7\xC29\xB8\xA5\x9B]\xF8\x8D\xF7tsE\xDF\xD2ߟ\xE8\xEF ނ\xF2+\xB0S -\xE7R\x80\x87\xA32\xAF\xC11\x99\x93Vьa\xA6\x85Z}_=p\xE6\x8A~xΏ\xBFS(e\x8D\xE0b\xDD\xDE\xD0ӗ\xE6/1sz./\xCAş\x97Y\x8A DD\xE5q\x92%7g\xFFy\xFD\xCD\xFF\xC7\xCBa4 +\xE7R\x80\x87\xA32\xAF\xC11\x99\x93Vьa\xA6\x85Z}_=p\xE6\x8A~xΏ\xBFS(e\x8D\xE0b\xDD\xDE\xD0ӗ\xE6/1sz./\xCAş\x97Y\x8A DD\xE5q\x92%\xCF\xCE +\xFE\xF3\xFA\x9B\xFF\xC8a5 endstream endobj 1017 0 obj << @@ -18150,7 +18141,7 @@ ؉.\xE3\xEC\xB6\xC88F\xD90\xC7 \xA7\x83\xF2\xA7%\x83B\x95̾Q2\xF0\xBCys"_\x88\x90\xBB\x89\xD7}\xA5\x9B\xFF\xEF5K.\xF7\xDAxh\xF6\xD1\xD9;\xE7\xC87\xD2CB\x80\xC4F\xDB!\xCC \x91\xC5M\xD3\xC1\xA7x\xD6\xA2\xB5k\xE6ֺ\x82H1:Ҹ\x96(v\xFF\xE4s\x99\xCA}W\xBD\xCFN\xA7P\xE4\xA4\xD8g\xF3_lg&[]\xEB\xFB\xD7p\\xC9\xF6\xF9\xFCk\xDE\xF1\xBEٻ\x95\x82Ґ\xD2R&\xD9\xF9\xE5z~p\x9D\x81<\xF9\xDC\xCB\xF5\xA9\xFC\xBE\xBCӧp\x8FW9Tp\xE1\xE5#\xCC\xB8\xF1=G\xDD\xCA\xD3\xC3;\xDF\xD8\xFA\xD2\xFA\xB2\x9E\x85\\xB9\xF5\x8D\xFEp\xC6߸\xF1\xE5\xA5/?\xFA\xF2:\xBC/ \xFA\x84g%\x97+\xC6vY\xFB\xB3\xC8ԣ\xAFx\xF4\xAA\x9D\xD4Ok\xBD\xF17\xFCa\xF2%?K\xE2\xFBYrXcW\xBE\x81|>d? v\xF4)e -\xEE\xB1\xE1}\xD2&SX\xFB\xF7!\xD4R\xBC`\xBF\x93~r\xF8\x88O\xD4\xF0 +\xEE\xB1\xE1}\xD2&SX\xFB\xF7!\xD42{\xC1~'\xFD\xE4\xF0/\x88\xA0\xD4\xF1 endstream endobj 997 0 obj << @@ -20327,23 +20318,16 @@ endstream endobj 1047 0 obj << -/Length 1066 +/Length 1065 /Filter /FlateDecode >> stream -x\xDA\xEDXKs\xDB6\xBE\xEBW\xF0H΄0$\xE6;uƞ\xB8\xD3V\xEA) \x93S>T\x8A\x9D\x9FT\xA4L\xC6VR\xE7\x8DF \xB0\xBBX\xEC\xF8$%<\x8F\xE8\xAE\xEF\xF7\xBE\xF9\xEB\xBE\x98\x8C\x88\xA6\xBF\xF82\xEE\xF9bvv\xC9DI\xA2(\x95\xD1b\x89\xAC$\xA5\x94\x91\xCC3"Y-Vчx\xAE\x97\xB6\xFA$\xE5RŜp\x92\xA4\xE7\xF1\xDBf\xBDN\x8D\xF5\xA8\xFB\xA56Ⱦ\xD3\xF6!a@\xD4A\xDE\xD6;˶2A\xA8n\xF4脪q ]\x93\xFC\xB3\xB8>\xD2\xAA`\x903h\xC0H/s@\x99\xB3KU\x82CB\xC0p\xD6+HFy\x94\xE6 \xCA\xD0!p\x80\xE5ŷ\xF9\xBC\xE2W\x9Cw -\xC8)\xBFT \x8FǢ\xE7e~[\xCC-\xEA\xD2=}\xC99\xCD\x{190F14}D -1U-\x9D%\xD4f3\xA7\x{14CB60}f#uX\x97!\xC9\xCn\xE6\x8B\xDF\xC1\xA5\xCEh+!6A\xDB+\xB0%\xA3\xF1C\xDD,\xEB\xA4*D\xE5NcPE!\x88P\xEA \xA8K\xB8\x96\xF0/)-\x9C\xF58tȳ>\x83\x8F\xE9n\xAF@|\xEE -\xF2\x97\xB8\xE9\x80fN\xE9\x87\xF5:\x97q\xB9A\x96K\xA2\x9BR\xE1\xF0"m\x9B\x9Dmzb\xDFR\xCAQdZ\x944\xBE\xEA\xADF\x8D}ն\x9F@+\x85p\x97V\x99\xFD\xAC\xE3\x92\xA5v\xBA -&!c\x9C\xE20 CV\xBB\xF4\xC4+ -'-\x82쎘3\xC9\xD4ö]\xA1\xB5w\x9F\xFD\xE0\xF7\x91cۺ\xB2HT0\x89\xD5!0s\x8CN0-\xB0\xCE\xC1\xABp\xA7w\xDBxkq\x8C|9\xCAl\xC9 sw\xF4\xC3\xBA\x80+x\xDA\xEDXKs\xDB6\xBE\xEBW\xF0H\xCDD0^$\xC0\xDCb\xA7\xCE\xD8w\xDAJ=\xC5=\xD0drʇJ@\xB1\xF3\xEF\xB3\xC0\x82\x8A\x94\xC9\xD8JꜢ\xD1v\x8B}+\xA5\xB0o7}g:g\xFDX\xA5u\x87\xF4\xEB\xF9\xF9\xCD{\x82\xFD+\x87\xBC\xCD\xD0OY\x96~\xACW\xC6"\xA75\xAE\xEAWq\xE0zkˮ\xDEl\x9B\xD2\xA4\x97\xDD*v\x96P\x9B\xEDH׳\xAE\x84\x9A\x8D\xD4~}\n\x84`D\xFA\xF0\xC6\xDC\xCC\xBF\x83K?\x9C +\xD0V@l\xA2\xB6W`\x8B\xA4\xE9CU/\xAB\xA42F\xE5\xCE`PE.\x88\xD0\xFA \xA8K\xB8\x96\xF0/)+\xD6 \xB1<F`\xEE\x80\xD1F`\xC1U\xBFS\x88\x84\xBA\xDD4\xA6\x85ÿ\xD3y\@x\x9EV\xE4\xA3\xF3\xF3\xD2\xFEx<`\xE3 \xA8;1\x8F\xB1<\xD4~#\x86^6\xC09x\xEF\xF4~o\xE2\x811\x80/G\x99\xAD8a\xFE\x8E~\xB8C\xA0\xFF\x95P\x95\xCEը\xD6\xEF18\xDD/[\xBD\xD6 S\x80\xA3q\xC6\xE0EL\xAA\xD3;\xC9\xE9*} +\xE4)\x90Ͻ\x93<\xF5)\xE7\xEB\xEF83F2\xF7O@\xC6#\xBC\xFF + endstream endobj 1004 0 obj << @@ -20637,7 +20621,7 @@ "\xEDj\xF7\xD4\x91quP\x99r\xEB U\xEC\xB4(P\x9E\xB1\xB0\xC9\xE8\x8C\xF2Tյ{\xC1k\xBDэS\x91۵\xB2\xDE\xDB\xD6y\x9C\xC7m\xAA v\xE40\xA5\xEAc\xF30ܚI:\x95f\xF9h\xCDK]\xAB\x87\xAB\x90Bjd\xFB\xA07\xED\x9EB\xF71j\xFD}g\xDA\xCEؗs\xC02$\xBE\x8B\x83[\xDB\xE8\xB3\xC0sm\xF7\xE0\xEBŬH\x892\xCAS+\xDAI\x91'E>\xD7\xE9>\xF5\x81\xF0\xF1\xD7\xC1\xF1:AD\xA0_\xF4\xE6w\xC88\xED\xFD\xA8\xFD\xE8\xEAy\xCC\xD37~\xB2\xF3\xA3\xF1c5 1\xCC\xD2;?i)\xAE\xFD\xE4֏\xE7~\xBC\xF1\xE3\xDB\xD0\B\xCFل\xF2\x828^r\xCD蘋>3.#\xD6\xC7\xC0i.G\xAC\x8B\xB5\xDAZ\xD7d\x85\x99\xDF\xF2\xD3\xF7\xFB\x84\xE7_j\xB3\xF2Р\xC8\xE7#\xF9\xD3\xCAN>-\x88\xCC\xF2"}?\x87\xB6Q\xDD\xC7ʇ\xE1\xE9K2xf\xFCΛ\x94\xBF\xEBt\xD5\xED endstream endobj 1005 0 obj << @@ -21019,8 +21003,7 @@ \xC8\x82\xADs\xE3b\\xAA\x8FY\xE7\xDE\xC2\xFD\xEB\xDCG\xA0\xE1ֹS\xE2\xC16 E\x9C\x90;2\xF2d\xECh\x90\x83a\xEE\xB1\xB9\xD3\xFD7 \xC7&\xACg\x9D1){8Їۀ\xE0of\xC2<\xEC!\xD7\xDB\xF3e5?>\xED\xFEC]-\x86\xA6\x81w\xFC\xAE\xD8T\xE8l\xE2vg\xE8x2\xD4\xEE\xB5?[\x83\xBE\xA2(\xE2\x8B\x95\x81\x93k\xF0\xF6FO\x8A&\xF2CA\xEE!\xF1a\xDFG\xF8\x91\x89\xEADsL\xAA\xF3\xE1\xA4=\xCF"\x91\xAAC\xCE\xD88\x84\xF135z\xE6Yu4\xC6 r\xC6\xFB>"\xE3\x8FLTǤcR\xF5`\x98\xC7\xF8̢d>\xF8\x80\x87\xB4r\xD6>\xDDa\x90.C\x93u\x9F]\xDAg\xB6\xB3w\x99<⬷\xBF\x83\xE6*P=I\x8E\xC9y\xBB\xC0\xFD3\x95Ñ\xF03\x90 \xE3&\xB3IiPRF#y\xD3,a\xFF\xA9l[\xB7\xF3\xE1wC\x9A\xDEC\x97R\xF6\x85U\x81\x9E\xEC\x88(M\xE4\xB1\xFB!\xD6\x91v|\xFEИ\xA5\x83~\xC3Hr99A.\xFA\xFA[`_\xC2\xEA+!\xBF\xF2\xBE\xDF\xFBү*\xEE\xFE\xA4\xA2\xFB0GBړ\x90\xFE -\xFA:\xA6\xB5P>\xD0;\xA6s\xCF\xE3d\xFA\xDDl鳢υ+\xA4bE\xAB\xEB1%[\xF9\xAF\xE9\xE6\x94>\x9F\xD3\xE7\xCF\xF4i3\x91\xA8\xBE\x97i\xE9\xC9\xC0#ݖ\xFC\xEF*Im\xA9+\xFA:\xA6\xB5P>\xD0;\xA6s\xCF\xE3d\xFA\xDDl鳢υ+\xA4bE\xAB\xEB1%[\xF9\xAF\xE9\xE6\x94>\x9F\xD3\xE7\xCF\xF4i3\x91\xA8\xBE\x97i\xE9\xC9\xC0#ݖ\xFC\xEF*Im\xA9 endstream endobj 1109 0 obj << @@ -21068,11 +21051,11 @@ \xC66\xDCoC\xBF\xBB\x88\xF8\x8E\xF3\xD0<\xE0\x8A\x8A\x84(\x8A\x96$6\x9B\xF0H\x8C\xE4\xFA\x82\xDD\xC0/ >\x84ҸI70\x86<,\xEE\xE8\xAC$"N\xDF}\xB08\xF0aVH\x8Cb\x99bz\xC3\xF6K\x81\xF7\xB2Z\xD0C\xF3vr\x81㞃\x8F\xCCݛ\xBF\xBEmQT\xE0z\x8B\x86\x86\x93\x88`ּ\x87m/:\xD8v\xAE5\xCEr\xBC\xBFo=8\xC7\xCE\xDDv\xB3\xAC\xE3\xEE\xEF\xC6\xEF\xFE89\x9D[S\x80\x99Tim\xFF\x8E \xFA\xE1Mw,\x96Ӝ\xD0w\xCD|wW\xF9\xD7\x9A\xFED\xA1}\xB8\xCA \xDB \xC3\xC3$\xD3%\xEE?\xBF\xF0\xA2\xE3}*\xEFe\xF3$\xC0\x9Cἱ\xF5\xA9a\xE4\xD6f{\xA0\x83\xEE4뺍\x94\xEA\xE8\xB6s)\xA7\xFF2\xE3\x9C\xDC((\x8Fq\xD5\x95&`M\x9E4\x95\xE6վr{\xBE\x9D˞+\xF7\xEEнr;\x9Eh}\xE6\xFE\xF9\xC0\xD1m\xD2Φ\x9F\xD9,+\x99\x906P\x9DW8\xC5\xE3;J\xF7\xA2\xFF\xB78)\x85\xA4Hte\xE3\xFBb\xA72\x9Bg(a\x9B\x94\xCBxK\x9D\xE7\x81\xD8\xFD7,\xC3W#Tp\xACo1hVQ\xD8y\xC0\xFCB\xB7lp|\xFFW\xDF\xF4;;\xC3\xCAc\xDB\xC3\xD7-\x86x\xC6B\x83Ku\xA1\xBB\x8FP\xF1\x98\xFA\xC8C9\xA3_\xF0\xFB\xED\x98\xA4\xEA}C\xCB'~\xE0ȡ\xF72\xB1\xC1$\xD9C\xB9\x92+h\x9B꼀_`P4`\xE1\x9B3\xBA\xFBֱi}͛*\xE7n\x85W\xFFux9\x8FD\xF4\x9D\xC3ڄ\x97(\xD3)\xCAS\x8Eou\xE9Կ\xE1\xB0~v&k?Fr\x88r\xE4\xF3H\xE13&[\x8FСS,W\xF1\xE3q\xF5\xDC\xD1\x8F\x80W\xF7\xBFf&\xA6\xCDZO?\xF8\x8DU`\xB5n_\xAD\xDE0y\xFA\xF7ɞ\xE4f\xA00\x82W\xDAIG\xF1\xE5f_:\xF6e-\xFF\xEE \x96\xF1G<9\xE2\xDF\xFF.C!\x99I\}f\xE8u\xC7'\xBEǓ7\xF8\xF7%\xFE\xFD\xFFz\xBC\xCB\xE7+\xFF\xEE \x96\xF1G<9\xE2\xDF\xFF.C!\x99I\}f\xE8u\xC7'\xBEǓ7\xF8\xF7%\xFE\xFD\xFFz\xBC\xCB\xE7 endstream endobj 1134 0 obj << -/Length 5931 +/Length 5932 /Filter /FlateDecode >> stream @@ -21120,7 +21103,7 @@ VI'\x9D_[\xAFo\x90"b\xE6\xDBܧ؟\xF2&[ut\x94\x98џ\xC0d9%\x9Fb\xD2\xC6.\xFF\xD9 b\xD98\xDD7hi\xAE(dE\xAC?LmF\xCD\xDFKE\xD1\xFF\xE6ܑ0c$\xD7\xC4D\x8A]:\xA6ګ\xF9wV\x9C?8\x8El\xAF \xF4\xCA\xE5s\xAF\xF3\x80c~7rĹ\x93Q\xEE\xE4\x83cx-\xB9\xCA,\x8Dh\\xAD|\xAA\x93\xBC66qME_\xFF1Y\xA9l\x92\xC7F\xE4\xA4}\x93\xD9"\xAB\xA7\xEC\xB4\xEBY=\xE2<\xD1\xE1s\x84\xC1\x88H\xDC%\x98z\xA1\xB1Gn\x8C\xBC\xCA*\xA5\xAEl !sȧ\xD9ͬ\xD2U| U2E\xC2gDJ$\x87F\xAE\xF6\xAD\xEF'| \xBF\x8Cej\xB8\xA0u\xF9\xE3K\xD8|\xC0\xF9B\xFEA\xC8\xF3%\xEC\xDF\xFB7\xE6\xFF\xA0\x80\xFF6\x80 -ea\x8CG\xA6\xF9\xA47\xE9Fщ\x87P\xFEB7G\xFA\xDB\xD1ߍ\xAF\x84\xA7V\xE8\x846\xE9\xF2\xF0\xC6wt\xF3\x8A\xFE~I\xBF\xA7\xBF/\xF9 \xBB\xD9We\xDAb\xD6\xDDM\xE52\xA5\x82\xFB\xBB\xB1\xA5\xD4JF#\xAD\xCAP\xEB\xAB\xFB\xE6@\x87\x84\xF9\xDF>\xB8\xE4_>\xF8\xF7\xFF\xBC\xC1c_\xFE\xB1\xF1{eQՋ\x97\x88\xB5\xDE\xCA1\xAD\xD33\xFE\xC5u{~\xF3\xFAO\xFF\x98l3 +ea\x8CG\xA6\xF9\xA47\xE9Fщ\x87P\xFEB7G\xFA\xDB\xD1ߍ\xAF\x84\xA7V\xE8\x846\xE9\xF2\xF0\xC6wt\xF3\x8A\xFE~I\xBF\xA7\xBF/\xF9 \xBB\xD9We\xDAb\xD6\xDDM\xE52\xA5\x82\xFB\xBB\xB1\xA5\xD4JF#\xAD\xCAP\xEB\xAB\xFB\xE6@\x87\x84\xF9\xDF>\xB8\xE4_>\xF8\xF7\xFF\xBC\xC1c_\xFE\xB1\xF1{eQՋ\x97\x88\xB5\xDE\xCA1\xAD\xD33\xFE\x85\xBD\xEAa\xCFo^\xFF\xE9\xFF\xE9l4 endstream endobj 1143 0 obj << @@ -21173,7 +21156,7 @@ !\x93\xA2\xEE\xA2\xD4_\xED>\xC51\xB3\xA0Y5e"\xC3\x8B\xF7r\x93\xAEp\xE2-\xF3TG\xC9M\xC5;\x87\xDF=\x9E\x80S\xB58\xEEJo\xC4\xC3=\xEE{y\x9B\x99R\xE1\x8FRC#\xF5\xF5uʙq_ T\xD4\xE0;g\xE3h\x86ΟI\xEB?W\xA6NK#\xA37\xAC\xA7ׁq4\xA9o\xB2\xE4p\xEBf"\xAF\xF0>^\xF0\x95\xCA\xDF\xE5K\x96\x8F7\xF4\x9D9긴\xDE~|\xFD \xE0\xD7\xCF0~e\xE4WF~\xE1{\x96\xBF\xF5e\xE0\xF9g\x81݇,\xB5J4\xBE~\x8D\x91\xEF_15@\xFE\x93\x94AP\xC0\xA8\xEC\xE2\xCFtr\xA4\xBF-\xFD]\xB9FFʋQ)\xC0\xF4\xC4t\xF2\x91\xFE~K\xA4\xBF\xB8\x88O\x83,\x93\xD4Vi)3 \xC4$\x80\xFF\xBCdiQ\x94\xE2g\x85\xA4ջM\xBD\xE7 -G\xFA\x82\xF1%\xDF/\xFE\xD7)~\xCA7L~\x8B\xD9\xF8]\x94"/\xAB\xC5\xCF\xD7V\xC9'\xFA\x90L-9\xDDo\xA6|w\xFB\x87\xFFˤ +G\xFA\x82\xF1%\xDF/\xFE\xD7)~\xCA7L~\x8B\xD9\xF8]\x94"/\xAB\xC5\xCF\xD7V\xC9'\xFA\x90L-9\xB7\xAF\xFA͔\xEFn\xFF\xF0\xFF\xA4 endstream endobj 1153 0 obj << @@ -21227,7 +21210,7 @@ @\xD0:\xC3d֘7\x95;$c\xF5\xE8_\xC0e_s \x8DV\xBAM\xA7ԃ\x95}\xEB\xA5\xFD\xAC\xB7\xF7\xAEW ".c\xC0C}\x89\xA7+:\xA9X\xBFþP3\xBB\xE4\x80\xEBA\xFA\xE3]ӵ˝R!x\x9B\xFA\xFB\xDC\xE8\xF8\xAD#\x97?Ӕ\x9E\xEEՁT6\xE4\xC9\xF3\x85{\xDC\xE8aJ{*\xB2=Ȁd`{ǎ`H7\xA8^\xF0w\x8C\xD6\xF5\xE8D\x87=\xF2}\x86鼓\xDB\xEA\xDFҌ\xC0z(\xF7\x9F\\xF3Y)\xF56\xD3\xE8\x8F\xF5c\xF0\xFDr5|\x82\xC7\xDEV\x91\xBF\x8C\x85\xC8;\xD4\x9F\xC5)\x930 \xFDG\x8BN\xF4=)xX\x82\xAF"\xF4\xF4\xD8\xE1\xC7\xF8x\xE8\xF0\xE9D\xB8\xC8\xE1\xA9\\xF8\xDD\xF27x\xB6<;w\xF6fl\xF4l\xB9\x9B[<"s\xFC\x8Cy\x9B\xF32\xD4\xC9\xCB9\xFA\xD4&\xBF\x8CM\xA1\xEA\x9C/a\xF3n\xE2c\xEF\x90\xFC\x8F\xB6\xBF\xD25\xEB\xF7h\xD5\xE2\x9Bf\xDBiL\x96R9\xBE)>O(\xF8\xFE\xF8p\xDCkj\xFBg\xA4\x82M\x93\xE5in\xBAS\xA7e\x830\xB1\x96\xEB?\xAE:\x9F\xE8{\x92:\x87\xD7\xD3\xFC9\xEA\xFC\xE3 |\\x9D?\x9D\xB7\x96N\xE5\xC2\xEF\x98R%8N-\x94_\xA7?i\xC6\xC1C5n0\xFCY+\xB5\x8AUB_E\x91Z_\xDDU c\xE0g\xA3O\xF9h\xF4ǿ}̇~c6~\xE2\xC7\xE6E\xFD8c\x83\x9Fb2Mh\xDFr}\xD64\xFBL\x92r +\x94_\xA7?i\xC6\xC1C5n0\xFCY+\xB5\x8AUB_E\x91Z_\xDDU c\xE0g\xA3O\xF9h\xF4ǿ}̇~c6~\xE2\xC7\xE6E\xFD8c\x83\x9Fb2Mh\xDFrs\xD64\xFBL\xE3r endstream endobj 1164 0 obj << @@ -21235,33 +21218,38 @@ /Filter /FlateDecode >> stream -x\xDA\xEDZ[s\xDB\xC6~ϯ\xE0#\xD8Xv\x8B˴\x93\x8E\xE5V\xA9=v\x93\xB1䴝$ \xB9\x94\x81-.ݲ+\x9Bz~\xA6\xD3,С \xE7g\x89\xD6\xC1\xDF\xCA\xF5zn\xA2\xC0\xED\\xBDt-?^\xB8\xEE\xC3\A\xA7\x93\xF1ݍ\xE3\x9B\xE7?\xBC\x941͚_]\x9E\xBFyͷE\xBD⛪\P\xEF/W\xAF\xEE\xB9\xC3(\x83\x86UpIS3\xE9\x811\xDF\d9\xEC\xD1x\xF6x\xA6\x8D -\xAD\xCDfg\x86*\xDE#\xECI\xD9\xE4\xAE\xFB\x89g\xC9\xF1\xBD/\xF9"\x80?#\xEF\x8FE\x9FCX\x9B\xD8\xB1( -\xF3\x9A\xA5 - \x80J\xE5aj\xF5\xECj\xB0tu3WA \x84\x88\x9D:>\x94\xB6*n\xED\xE6*\c\xF6ػ\x9B\x9Fe\xE2\xAEF܅^\x84^@蟣H\xEFڎ8\x9A\xC0m-\xAE\x98\xF8\xD3@\xC1¢\xC9\xB9 -\xF9\xEB\xFC\xCC"#\xEF\\xBDj\xB9qy^\xB4\xEEۧ\xD8I\x9C\xE4a\xA4\xB2\xE9\xCA˪h\xBD\xAC+6!)\x84\xCC\xDE\xC2\xFC\xC3\xD3v\x89\xF2\xC8L\x98e\xBD\x9E?FF\x876\x82\x84\x80\x83\xE0A\xA5\x8FU\x8C\xBF\xB8\xF5\x94\xB7\xDCsO\xD8\x88\x95%.\x9E\x90\\x80`\xA2g9XE\xE1i\xFC3\xBF81\x9C\xEFe\x87˦\xAA\x86)z\x81\xBEVwY\xDFh\xD0r\xE9Р;'\xB3-\xE6p9\xEFn\xC8$\xEF\xC7" -\xD9V\x9E\x9A\xFF;\x8F\xC2\xAA\xF48\xE6P\xB3$IBcE\xA3~D\xE8/(\x96(\x9B}/pK \x85\x94\xB5\x8CY\xC8@\xA4]q\xABX\xCD\xC5\xFB\xA5A\xB9\xBC\x950\x90\xB9\x95H\xCCa)\xE4h-va\xA2T\xE6\xD8a\xA2L\x98?\xB0Ä\x98u\xDFv͆Gz\xFE\xCE-\xF9Bk\xE2\xE0?\xF3,# -\xE8\xE5\xDA\xF3\xF2\xC0/\xD4\xCE\xC9"]ÿ\xC0\xEF -\xDD\xF1\xEC\xE2\xB1O\x83Q\x93\x82.\xE5\xD3\xDD<\xF5=\x9BL\x851$ݓ\xD9\xCB\xDA\xFB\xC4Y,og\xE5\x90'\xB5\xD9lY˦\xC5\xC3\xE1\xFD\xA0Eȩ-\x99\xE7mq}\xFA\xF6Q\x8E\xB1\xE3X\xAC\xA1\xD9]\x87\xEDbS\x85\xBF\xD2uߕUȘ\xDB>&\xD2\xF4.6ʠO\x97$hF\xB3C1G\xEC#7\xD7}\x9Cv\x98\xA7l \xA4\xB1\x9Al\xBE\x90 \xBCҁ\xE7芛ʼnA\x81It\x98[;\xA5\xF8\xFB\xDD\xE3dđ8\xB2\xA15f:\xF1\x82ccCO&>\xAFWOGq\xFAg\xD3\x9E\x8Db\xE1>\x87[\xFA -\xC3\xFB['\x92!=O\x88* H\x9C\xCB\xE6w \xD7\xEB\xFD\x86#u_\x95M\x92\x82-A\xA1\xCAX\xF8l;\xB2\x8B\xFD8\xACKZ\xA6\x83!\xEEq\xA2\xA0\xD2\x86\x86}\x9BxJ\xF3\xE5\xF9\xF7O\xC6_\x9D\xE5!\xDD\xE3\xE9{\\x86-2.\xED\x92I\xE0s\xF2?\xF0p\xDD#\x96\x8C.\xC8N\xAC\xA0\x88\xE47\x8B\xF5\xAB\xE9 -bg\xE3\xF3a\xF5O\xB2\x87\xCFGIfєfm\xEF͋\x89v\xA5Ih!\xD5O\xF5\xECeQ\x98%ٔ\xA2\xE4a\xE5\xB0D>\x95\xF7/̪R<2\xB5\xF7{\xF8\x80\xB0\xA4D\xE8\xCF\xDEs\xAA\xB1\xBE\xAB\xAC\xDEJ\xBETn\xB8\xCA\xC1\xE7\x8D-\x88go\x80\xB2\xC1(iK'\xE8~f\x80r\xD9<-z\xDE\xEC\xEBU\xB1;\xBCh\xEAU\x89\xE2~$r\x80MamQ5\xA9a\xA6Q5\xCD-\xA7\xEC\xBE|:ٴR\xCEi\xB7Tv$\x9F\x94{|\xB2\xDEl\xA75\x9D\xF3\xA5\xA4\xE3d9>q\x82m\xA1\x8ES\xDBA\xFD\xF1\xA5Q%IR<J'Y㑞\xA9Q_\xA4<\xF3\x9B\xC53>"\x8Ar:w\xF3;>\xD3I\x81;\xA1}\xE3y\xA2{RQ\xEFZ7="\\xB9\xED\xCE-ٸhΏ\x82\x84|Z=\xB7q\xEA،\xAA\xE7N2ѾJ)H\xCBħ\xBC\x94N'y(x\xB2\x96{\xA0\xD3!_D(xO\xDEl%3\xF2\xFE\xDCP\x96\xDAw\xB0\xCF[\xB0 F\xCCM\xFB\xE2-\xD1\xF0[\xF2\x97\xF8\x9E,\xB6pe}ͷh\x8E4Ʈ=g\x8E\xC2dn\xEB-<\xE3-\xA12\x9F>\xBBթU\xDF$4\x91\x9A\xEET\xF4\xEEĽ\xDDc\x95oR\xE1\x8B\xC3\xC8\xC4ӥ$q\xC5J\x82\x80d\x9E\x8A\xFA͵N\xF8\xC5\xDE\xF3VXB\x9AQ\xF6%\xFC(\xD8\xC6\xE7;y\x958\xCE-\x950\xEF\xD0?\xB8S\xEEW:\x9A\x8D\x83僧\xA7kIוd"C\xB5\x90\x88\xF2\x8A\xFE\x8DWԸ\xA4\xEB9]\xDF\xD0\xF55\x97*@_\xEA8W\xF4\x84 -\x95\x8A}\xB5\xE7g\xA72jB1P\x9A\xA5\xFD\xA87Ŗ\xB3\xFA\xF0\xFA\x94Ϯ?\xFFm\xF5\xE7\xF1\xFA\xD3̞\xFDt\xA6\xD2$˃\xE61\xC42\xD7R\xB9\xD1vZ\xC1I\xCC \xEB}\xDE\xCF\xFC\xFD\xEA\xAB\xFF{\x93\xA4 +x\xDA\xEDZ[s\xDB\xC6~ϯ\xE0#\xD8Xv\x81\xC5e\xDAI\xC7r\xAB\xD4\xBB\xC9Xr\xDAN\x92\x90\J\x88@\x80!@;\xEC\xAF\xEF\xB9-\x80\xA55\xB6(\xA9O\xF1hb\x8Bݳ\xE7\xF2\x9D\xCB" +\xB5\x99E\xC3ew=i\xD0\xE5\xEDw_EO6&\x9E\xB906\xE1\xE9\xF9\xD5W\xDF\\xA88\x9DeaE\xD9\xECj=\x8B\xA3"Tq<\xCBLf*\x9D]\xADf?\x97v\xD9Wm3?\xD3Y\xE80\xE7g\xA9\xD6\xC1ߪ\xF5zG\x81\xDD\xD9fi;~\xBC\xB0\xFD\x87\xB9\x82N+\xE3\xFB\xCB7\xCFx)c\xDA5\xFF\xBE\xBA<\xF3\x9Ao\xCBf\xC57u\xB5\xA0\xDE_\xAE^\xDDs\x87Q +\xA3\xE0\x92e<\xC6\xEB\x811\xDF\\xE4\xEC1\x8E\xE1\xD8㙎MhL>;30T\xF1aOʤw\xFD\x98O<K\xFF\x88\xEF}a\xC8\xFC\xA1y,\xFA\xFC\xC2"\xC0\xD8Ԥ\x88EQX\xE4\xF0\xFE\xD4,S+* $@\xEC\xD4E𡪱Usk7WE`{\xB3\xC7\xDE\xDD\xFC,w5\xE2.\xF4"\xF4B\xFFEz\xD7\xF5\xFC\xC0\xD2v+\xA9\xED\x81;2˾\xA9~\xDB\xF3V@;B\xAE\x80ғ\xB4!I\x930\x893\x9F\x8B\xEB +4\xFEU\xFFPu\x98J\xC8\xC0\xC4Q\xA1\xFC6dw7\xEDj\xA8\x9A&\xCC\xC5#;\xD8:ё\x80LP\xAE\xB1LZ\xA9c}\xB3\xAA\x90\x91\xD7<\xA4m,\xDF|l\xB2\x86EZJ\xA3\x83F\xD9WY]7 Fz_u\x91Bu\xB4\x99\x8B\xAA\xEE\x81\xEAGpu0b\x9D\x91\x91y\xD3Z\xA8\xE0\x8A\x89? +,\x9A\x91ˠ\xF0\x97\xBF\xCE\xCF2\xF2\xF7\xDE6\xAB\x8E\x97\xE7eg\xBF}\x8A\x9D$iF*\xF7W^\xD6e\xE7d]\xB3 \x81H!dv\xE6\x9E\xB6K\x94G\x87y>\xE8\xF9c\xE4\xEB\xD0D\x90p<\xAA\x{131281}\xF2\x8E{\xEEI8\x9B\xB1\xB2\xC4\xC5\x92L\xF4,G\xAB(m\x80_`F\xE2=\xC3)\xF1^v\xB8l\xEBz\x9Cb\x88\xE0k}\x97\xF5M-\x97 +\xBA\xB72\xDBb\x97\x83\xF0\xEE\x86L\xF2~,ҐmY\xFC\xE7Q8@\x95\x9E\xC6j\x96\xA6iѨ\xFAK\x8A%\xAAv?\xDCH!ec\xB2\x80i\xD7\xDC*Ws\xF1~YPmFo%dn\xA5s\xCA9\xC0F\xE9\xA4\xE4\ʕ\x9B\xFD\xFD\x9C\x97$WU\x97\x8BZ\xAC\xB8\xEEx>\xA6\xD8\xFA\x8B\xE0\xE5v?\x8CJ \x89QG\xDA\xEB\xA6\xAB\xE5\xA6ßg\xFCp\xB1\xEF\xF9ƽ\x86\xF7\xCBR\xE6\xB2eW\x81#V\xEA\x89]\x82\x93H̿\\xC1.\xE2(\x939v\xA8\xE6\xEC0\xA1f\xDDw}\xBBᑎ\xBFsC\xBE\xD0\xC4I\xF0\x9Fy\x9E\xF4r\xE3xy\xE0ke\x91\xBE\xE5_\xE0w\x8D\x8C\xEEyv\xF1ا\xC1h\x9C\x81.\xFEn\x8D\xFA\x8EMq\x85 $\xDD\xDE\xECU\xE3|aN\xE2,\x97\x96\xB7\xB3\xB2ȓ\xC6\x8Fl\xB6jd\xD3\xE2\xE1\xF0~\xD4"\xE4Ԗ\xCC\xF3\xB6\xBC>}\xFB(\xC7D\x87I"\xD6\xD0\xEE\xAE\xC3n\xB1\xA9\xC3_\xE9\xBA\xEF\xAB:d\xCC\xEDi:\xE5\xD0H\xFC%\xC9Ɠ\x88YM\xA1\x98\xA3\x88v\x87\x91\x82\x9D\xEB!N;\xCC3\xB6\xD2XM6_\xCA\xCE\xE9\xC0qt\xC5\xCD\xF2Ġ NuX\xE3S\xFC\xFD\xEEq +2\xE1H\x99\xD0ı?\xF9\x82\x931<\xF1&|ެ\x9E\x8E\xE2\xF4;\xC9\xFD\x9EMb\xE1!\x87[\xBA +\xC3\xFB[+\x92!=\x9AN\x88* HR\xC8\xE6w \xD7\xEB\xFD\x86#u_\x95{I\xC1\x96\xA0P\xE5,|\xB6\x8A\xF7H\9\x8C\xC5~\x9C\xD6%-\xD3\xC1\xBF\xF78QPك+\xF34\xF7)JFQK\xBE\xBCaVU\xE2ِ\xA9\x83\xDF\xC3\xA4\x80%Bv\x9ESM\xF5]\xE5`\xF5F\xF2\xA5j\xC3U\x8E08o@|\xC6+\xED!\xF7\x9C\xCFU\xCC)\xB2L\xF3\xB6\xBCg\x97#d\xB6\xE2\x9C\xCDP\xAEV\xE9\xC4, EԹᠸX\xE6uE\xCEm+\xE1\xF4$\x97;.\x9Es\xB93"f\xC2tv\xDDT+\xA3;}G\xA5ǟ\x8E\xD7ߎ\xB1\xE4\xC4\xA3`\xBDs \xD8\xE6Ge4\xE4!\xB1h\xA6\xCF cT\xBE\xF8n\xF6\xF01\x89;M䠢F\x8Cu\xB0e\xEA\xCEg:9\xC8)\xC7"M\xE1\xECZ\xB2\xAE\xE19E)~K\xFEߓ\xC5\xB6j\xAE\xF9͑&c\xC2ص\xCCQx\x83̭f\xE0\x91\xCE%L>2\xBB\xADd\xFE\xE5\x8E\xDC\xF5\xA0ٸ +\xB1m\xC23\x87q&\x8A\xB6A\xDC\xF9\xE55\xC2'&imw# +\x92NA\x85<;$Qt\xDC yW19\x81\xCB!\x91I\xA8\x8C+\xAB\xFA\xB00\x9A\xC8xJ#\xE5\xB0Mوy\xFB @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nik...@us...> - 2015-12-06 18:23:42
|
Revision: 2439 http://sourceforge.net/p/jsbml/code/2439 Author: niko-rodrigue Date: 2015-12-06 18:23:39 +0000 (Sun, 06 Dec 2015) Log Message: ----------- tags release 1.1 Added Paths: ----------- tags/jsbml-1.1/ Index: tags/jsbml-1.1 =================================================================== --- trunk 2015-12-06 18:19:00 UTC (rev 2438) +++ tags/jsbml-1.1 2015-12-06 18:23:39 UTC (rev 2439) Property changes on: tags/jsbml-1.1 ___________________________________________________________________ Added: svn:ignore ## -0,0 +1,11 ## +.classpath +.project +dist +build +bin +jsbml.log +.apt_generated +.factorypath +.settings +jsbmlTestResults.txt +target Added: LicenseHeader ## -0,0 +1,19 ## +/* + * $Id$ + * $URL$ + * ---------------------------------------------------------------------------- + * This file is part of JSBML. Please visit <http://sbml.org/Software/JSBML> + * for the latest version of JSBML and more information about SBML. + * + * Copyright (C) 2009-2011 jointly by the following organizations: + * 1. The University of Tuebingen, Germany + * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK + * 3. The California Institute of Technology, Pasadena, CA, USA + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation. A copy of the license agreement is provided + * in the file named "LICENSE.txt" included with this software distribution + * and also available online as <http://sbml.org/Software/JSBML/License>. + * ---------------------------------------------------------------------------- + */ \ No newline at end of property Added: svn:mergeinfo ## -0,0 +1,2 ## +/branches/astnode2-merging-alternate:2189-2376 +/tags/release-0.8-b1:588 \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |