Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
August 2008
- 4 participants
- 45 discussions
Author: bpoussin
Date: 2008-08-28 17:05:35 +0000 (Thu, 28 Aug 2008)
New Revision: 1314
Modified:
trunk/isis-fish/pom.xml
Log:
ajout lib jdesktop
Modified: trunk/isis-fish/pom.xml
===================================================================
--- trunk/isis-fish/pom.xml 2008-08-28 08:32:14 UTC (rev 1313)
+++ trunk/isis-fish/pom.xml 2008-08-28 17:05:35 UTC (rev 1314)
@@ -22,7 +22,7 @@
<packaging>jar</packaging>
<!--Version-->
- <version>3.1.6-SNAPSHOT</version>
+ <version>3.2.0.0-SNAPSHOT</version>
<!--Description-->
<description>Simulateur de pecherie complexe.</description>
@@ -496,10 +496,16 @@
<version>20061102</version>
</dependency>
+ <dependency>
+ <groupId>org.jdesktop</groupId>
+ <artifactId>beansbinding</artifactId>
+ <version>1.2.1</version>
+ </dependency>
+
<!--Compile-->
<!--Librairies CodeLutin-->
<dependency>
- <groupId>lutinlib</groupId>
+ <groupId>org.codelutin</groupId>
<artifactId>lutinutil</artifactId>
<version>0.30-SNAPSHOT</version>
<scope>compile</scope>
@@ -552,6 +558,7 @@
<version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
+
<!-- librairie commandline
<dependency>
<groupId>org.codelutin.commandline</groupId>
@@ -849,7 +856,7 @@
<scope>compile</scope>
</dependency>
- <!-- ssj pour les calculs stockastiques -->
+ <!-- ssj pour les calculs stockastiques - ->
<dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
@@ -899,7 +906,7 @@
<scope>compile</scope>
</dependency>
- <!-- fin ssj pour les calculs stockastiques -->
+ <!- - fin ssj pour les calculs stockastiques -->
<!-- debut svnkit pour communication subversion -->
<dependency>
1
0
r1313 - in branches/isis-fish-3.2.1: . src/java src/java/fr/ifremer src/java/fr/ifremer/isisfish src/java/fr/ifremer/isisfish/actions src/java/fr/ifremer/isisfish/aspect src/java/fr/ifremer/isisfish/datastore src/java/fr/ifremer/isisfish/datastore/migration src/java/fr/ifremer/isisfish/datastore/update src/java/fr/ifremer/isisfish/entities src/java/fr/ifremer/isisfish/equation src/java/fr/ifremer/isisfish/export src/java/fr/ifremer/isisfish/logging src/java/fr/ifremer/isisfish/logging/co
by sletellier@users.labs.libre-entreprise.org 28 Aug '08
by sletellier@users.labs.libre-entreprise.org 28 Aug '08
28 Aug '08
Author: sletellier
Date: 2008-08-28 08:32:14 +0000 (Thu, 28 Aug 2008)
New Revision: 1313
Added:
branches/isis-fish-3.2.1/DEADJOE
branches/isis-fish-3.2.1/hs_err_pid8663.log
branches/isis-fish-3.2.1/manifest.mf
branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs
branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties
branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties
branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx
Log:
Premiere pass vers la migration vers jaxx
Added: branches/isis-fish-3.2.1/DEADJOE
===================================================================
--- branches/isis-fish-3.2.1/DEADJOE (rev 0)
+++ branches/isis-fish-3.2.1/DEADJOE 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,124 @@
+
+*** Ces fichiers modifiés étaient ouvert dans JOE quand il a quitté le Thu Aug 21 11:25:40 2008
+*** JOE a quitté suite à la fermeture du terminal
+
+*** Fichier 'src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx'
+q
+<Application title="isisfish.welcome.title" size='{new Dimension(315,114)}' resizable="true" location='{new Point(0,23)}' layout='{new BorderLayout()}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JMenuBar>
+ <JMenu text="isisfish.welcome.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.welcome.menu.synchro" accelerator="accSync"/>
+<!--
+icon="imgSync" mnemonic="mnSync"
+ActionCommand="thread:Welcome.updateVCS()"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.frame">
+<!--
+mnemonic="mnFrame"
+-->
+ <JMenuItem text="isisfish.welcome.menu.simulation" accelerator="accSimul"/>
+<!--
+icon="imgSimul" mnemonic="mnSimul"
+ActionCommand="OutputView('simulator/Simul.xml')"
+-->
+ <JMenuItem text="isisfish.welcome.menu.result" accelerator="accResult"/>
+<!--
+ icon="imgResult" mnemonic="mnResult"
+ ActionCommand="Welcome.openResultView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.input" accelerator="accInput"/>
+<!--
+ icon="imgInput" mnemonic="mnInput"
+ActionCommand="Welcome.openInputView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.script" accelerator="accScript"/>
+<!--
+con="imgScript" mnemonic="mnScript"
+ActionCommand="OutputView('script/Script.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.queue" accelerator="accSimulQueue"/>
+<!--
+ icon="imgSimulQueue" mnemonic="mnSimulQueue"
+ActionCommand="OutputView('simulator/SimulQueue.xml')"
+-->
+ <JSeparator/>
+ <JMenu text="isisfish.welcome.menu.configuration">
+<!--
+icon="imgConfig" mnemonic="mnConfig"
+-->
+ <JMenuItem text="isisfish.welcome.menu.configuration" accelerator="accConfig"/>
+<!--
+ icon="imgConfig" mnemonic="mnConfig"
+ ActionCommand="Welcome.showConfig()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.vcs.configuration" accelerator="accVCSConfig"/>
+<!--
+icon="imgVCSConfig" mnemonic="mnVCSConfig"
+ActionCommand="fr.ifremer.isisfish.versionning.ui.VCSConfigUI.doLaunch()"
+-->
+ </JMenu>
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem text="isisfish.welcome.menu.help" accelerator="accHelp"/>
+<!--
+icon="imgHelp" mnemonic="mnHelp"
+ActionCommand="help"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.monitor" accelerator="accLogMonitor"/>
+<!--
+icon="imgLogMonitor" mnemonic="mnLogMonitor"
+ActionCommand="OutputView('ApplicationMonitor.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Welcome.xgl")}'>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/simulation.jpg"))}'
+ background="white" constraints='"simul"' onActionPerformed='new fr.ifremer.isisfish.ui.simulator.Simul2()'/>
+<!--
+ border="EmptyBorder(6,6,6,6)" (pour tous)
+-->
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/calc.jpg"))}'
+ background="white" constraints='"result"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/book.jpg"))}'
+ background="white" constraints='"input"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/bookPage.jpg"))}'
+ background="white" constraints='"script"'/>
+ </JPanel>
+ <JPanel constraints="BorderLayout.SOUTH">
+ <StatusBar2/>
+ </JPanel>
+</Application>
+
+*** Fichier '(Sans nom)'
+/home/letellier/.bash_profile
+/home/letellier/.bashrc
+./go.sh
+pom.xml
+pom.xml
+src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
+* Build Log *
Added: branches/isis-fish-3.2.1/hs_err_pid8663.log
===================================================================
--- branches/isis-fish-3.2.1/hs_err_pid8663.log (rev 0)
+++ branches/isis-fish-3.2.1/hs_err_pid8663.log 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,469 @@
+#
+# An unexpected error has been detected by Java Runtime Environment:
+#
+# SIGSEGV (0xb) at pc=0x00007fff41b3a755, pid=8663, tid=1093966160
+#
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0-b23 mixed mode linux-amd64)
+# Problematic frame:
+# C [libc.so.6+0x30755] catgets+0x15
+#
+# If you would like to submit a bug report, please visit:
+# http://java.sun.com/webapps/bugreport/crash.jsp
+# The crash happened outside the Java Virtual Machine in native code.
+# See problematic frame for where to report the bug.
+#
+
+--------------- T H R E A D ---------------
+
+Current thread (0x00007fff1761ac00): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=8678, stack(0x0000000041249000,0x000000004134a000)]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000008
+
+Registers:
+RAX=0x00007fff16d52950, RBX=0x00007fff17590030, RCX=0x00007fff16c2482d, RDX=0x0000000000000001
+RSP=0x0000000041347e80, RBP=0x0000000041347eb0, RSI=0x0000000000000013, RDI=0x0000000000000000
+R8 =0x00007fff171f1860, R9 =0x0000000000000000, R10=0x0000000000000001, R11=0x00007fff41b3a740
+R12=0x00000000000000f6, R13=0x00007fff171f1860, R14=0x000000000000000f, R15=0x0000000041348390
+RIP=0x00007fff41b3a755, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
+ TRAPNO=0x000000000000000e
+
+Top of Stack: (sp=0x0000000041347e80)
+0x0000000041347e80: 00007fff17590030 00007fff16b82396
+0x0000000041347e90: 00007fff171f1860 00007fff17433ab0
+0x0000000041347ea0: 00007fff17433ab0 00007fff1734b700
+0x0000000041347eb0: 0000000041347f00 00007fff16b82fb5
+0x0000000041347ec0: 00000000009f7801 00000000000000f8
+0x0000000041347ed0: 0000000000011f08 00007fff171f1860
+0x0000000041347ee0: 00007fff16a3f280 00000000000000f6
+0x0000000041347ef0: 00000000000000f8 00007fff1734b700
+0x0000000041347f00: 00007fff1761ad98 00007fff16a3f38e
+0x0000000041347f10: 00007fff16d406d0 0000000041347fa0
+0x0000000041347f20: 00007fff17590030 00007fff16a40053
+0x0000000041347f30: 0000000041347fb0 00007fff414cece3
+0x0000000041347f40: 0000000000000000 00007fff17466d60
+0x0000000041347f50: 00007fff17466d60 0005003017689328
+0x0000000041347f60: 00007fff171f1860 01017fff00000000
+0x0000000041347f70: 00007fff100c9ec0 00007fff173d9ff0
+0x0000000041347f80: 00007fff163b8120 0000000000000000
+0x0000000041347f90: 0000000041348380 0000000000000000
+0x0000000041347fa0: 00007fff161ab192 0000000000000000
+0x0000000041347fb0: 00007fff161ab218 0000000000000001
+0x0000000041347fc0: 00007fff161ab168 00007fff174651c0
+0x0000000041347fd0: 00007fff161aa73a 0000000000000020
+0x0000000041347fe0: 00007fff161aa743 0000000000000018
+0x0000000041347ff0: 00007fff161aa865 0000000000000000
+0x0000000041348000: 00007fff161aaa15 0000000000000005
+0x0000000041348010: 00007fff161aaa17 0000000000000030
+0x0000000041348020: 00007fff161aaa08 0000000000000131
+0x0000000041348030: 00007fff161aa78a 0000000000000054
+0x0000000041348040: 00007fff16c1126b 00007fff1734c200
+0x0000000041348050: 00007fff16c11287 00007fff1734c2d0
+0x0000000041348060: 00007fff16c11295 00007fff1734c3a0
+0x0000000041348070: 00007fff16c1295f 0000000000000001
+
+Instructions: (pc=0x00007fff41b3a755)
+0x00007fff41b3a745: 41 89 d2 74 7a 83 c6 01 85 f6 7e 73 85 d2 78 6f
+0x00007fff41b3a755: 48 8b 57 08 4c 8b 5f 18 48 8d 04 52 48 89 d3 31
+
+Stack: [0x0000000041249000,0x000000004134a000], sp=0x0000000041347e80, free space=1019k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+C [libc.so.6+0x30755] catgets+0x15
+C [libmawt.so+0x1a6fb5]
+
+Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::StubRoutines (1)
+
+--------------- P R O C E S S ---------------
+
+Java Threads: ( => current thread )
+ 0x00007fff17042800 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=8679, stack(0x0000000040817000,0x0000000040918000)]
+ 0x0000000040118800 JavaThread "DestroyJavaVM" [_thread_blocked, id=8664, stack(0x000000004012b000,0x000000004022c000)]
+=>0x00007fff1761ac00 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=8678, stack(0x0000000041249000,0x000000004134a000)]
+ 0x00007fff17620800 JavaThread "AWT-Motif" daemon [_thread_blocked, id=8677, stack(0x0000000041148000,0x0000000041249000)]
+ 0x00007fff17620000 JavaThread "AWT-Shutdown" [_thread_blocked, id=8676, stack(0x0000000040d2e000,0x0000000040e2f000)]
+ 0x00007fff1734c800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=8675, stack(0x0000000041047000,0x0000000041148000)]
+ 0x00007fff1767f800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=8673, stack(0x0000000040c2d000,0x0000000040d2e000)]
+ 0x00007fff1767d000 JavaThread "CompilerThread1" daemon [_thread_blocked, id=8672, stack(0x0000000040b2c000,0x0000000040c2d000)]
+ 0x00007fff17679800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=8671, stack(0x0000000040a2b000,0x0000000040b2c000)]
+ 0x00007fff17a37800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8670, stack(0x000000004092a000,0x0000000040a2b000)]
+ 0x00007fff17a1d000 JavaThread "Finalizer" daemon [_thread_blocked, id=8669, stack(0x0000000041e79000,0x0000000041f7a000)]
+ 0x00007fff17a1b800 JavaThread "Reference Handler" daemon [_thread_blocked, id=8668, stack(0x0000000041d78000,0x0000000041e79000)]
+
+Other Threads:
+ 0x00007fff17a16800 VMThread [stack: 0x0000000040716000,0x0000000040817000] [id=8667]
+ 0x00007fff176bd800 WatcherThread [stack: 0x000000004196a000,0x0000000041a6b000] [id=8674]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap
+ PSYoungGen total 152896K, used 18361K [0x00007fff325c0000, 0x00007fff3d060000, 0x00007fff3d060000)
+ eden space 131072K, 14% used [0x00007fff325c0000,0x00007fff337ae700,0x00007fff3a5c0000)
+ from space 21824K, 0% used [0x00007fff3bb10000,0x00007fff3bb10000,0x00007fff3d060000)
+ to space 21824K, 0% used [0x00007fff3a5c0000,0x00007fff3a5c0000,0x00007fff3bb10000)
+ PSOldGen total 349568K, used 0K [0x00007fff1d060000, 0x00007fff325c0000, 0x00007fff325c0000)
+ object space 349568K, 0% used [0x00007fff1d060000,0x00007fff1d060000,0x00007fff325c0000)
+ PSPermGen total 21248K, used 11945K [0x00007fff17c60000, 0x00007fff19120000, 0x00007fff1d060000)
+ object space 21248K, 56% used [0x00007fff17c60000,0x00007fff1880a6f0,0x00007fff19120000)
+
+Dynamic libraries:
+40000000-40009000 r-xp 00000000 08:01 1033038 /opt/jdk/bin/java
+40108000-4010a000 rwxp 00008000 08:01 1033038 /opt/jdk/bin/java
+4010a000-4012b000 rwxp 4010a000 00:00 0 [heap]
+4012b000-4012e000 ---p 4012b000 00:00 0
+4012e000-4022c000 rwxp 4012e000 00:00 0
+40716000-40717000 ---p 40716000 00:00 0
+40717000-40817000 rwxp 40717000 00:00 0
+40817000-4081a000 ---p 40817000 00:00 0
+4081a000-40918000 rwxp 4081a000 00:00 0
+4092a000-4092d000 ---p 4092a000 00:00 0
+4092d000-40a2b000 rwxp 4092d000 00:00 0
+40a2b000-40a2e000 ---p 40a2b000 00:00 0
+40a2e000-40b2c000 rwxp 40a2e000 00:00 0
+40b2c000-40b2f000 ---p 40b2c000 00:00 0
+40b2f000-40c2d000 rwxp 40b2f000 00:00 0
+40c2d000-40c30000 ---p 40c2d000 00:00 0
+40c30000-40d2e000 rwxp 40c30000 00:00 0
+40d2e000-40d31000 ---p 40d2e000 00:00 0
+40d31000-40e2f000 rwxp 40d31000 00:00 0
+40e45000-40e46000 ---p 40e45000 00:00 0
+40e46000-40f46000 rwxp 40e46000 00:00 0
+40f46000-40f47000 ---p 40f46000 00:00 0
+40f47000-41047000 rwxp 40f47000 00:00 0
+41047000-4104a000 ---p 41047000 00:00 0
+4104a000-41148000 rwxp 4104a000 00:00 0
+41148000-4114b000 ---p 41148000 00:00 0
+4114b000-41249000 rwxp 4114b000 00:00 0
+41249000-4124c000 ---p 41249000 00:00 0
+4124c000-4134a000 rwxp 4124c000 00:00 0
+4196a000-4196b000 ---p 4196a000 00:00 0
+4196b000-41a6b000 rwxp 4196b000 00:00 0
+41d78000-41d7b000 ---p 41d78000 00:00 0
+41d7b000-41e79000 rwxp 41d7b000 00:00 0
+41e79000-41e7c000 ---p 41e79000 00:00 0
+41e7c000-41f7a000 rwxp 41e7c000 00:00 0
+7fff10000000-7fff10610000 rwxp 7fff10000000 00:00 0
+7fff10610000-7fff14000000 ---p 7fff10610000 00:00 0
+7fff14165000-7fff14191000 r-xp 00000000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14191000-7fff14291000 ---p 0002c000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14291000-7fff14297000 rwxp 0002c000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14297000-7fff14497000 rwxp 7fff14297000 00:00 0
+7fff14497000-7fff1449e000 r-xp 00000000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1449e000-7fff1459d000 ---p 00007000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1459d000-7fff1459f000 rwxp 00006000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1459f000-7fff145b2000 r-xp 00000000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff145b2000-7fff146b3000 ---p 00013000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff146b3000-7fff146b6000 rwxp 00014000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff146b6000-7fff146b9000 r-xs 00018000 08:03 2908875 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xom-1.0.jar
+7fff146b9000-7fff146bc000 r-xs 00010000 08:03 2908843 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-server-3.1.jar
+7fff146bc000-7fff146c0000 r-xs 00016000 08:03 2908842 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-common-3.1.jar
+7fff146c0000-7fff146c3000 r-xs 00009000 08:03 2908841 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-client-3.1.jar
+7fff146c3000-7fff146c6000 r-xs 00015000 08:03 2908874 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-2.0.jar
+7fff146c6000-7fff146cc000 r-xs 00019000 08:03 2908871 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlParserAPIs-2.6.2.jar
+7fff146cc000-7fff146d1000 r-xs 00016000 08:03 2908873 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xml-apis-1.0.b2.jar
+7fff146d1000-7fff146d2000 r-xs 00001000 08:03 2908872 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-jsr181-api-1.0-M1.jar
+7fff146d2000-7fff146d4000 r-xs 00005000 08:03 2908848 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-java5-1.2.6.jar
+7fff146d4000-7fff146dc000 r-xs 00060000 08:03 2908847 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-core-1.2.6.jar
+7fff146dc000-7fff146de000 r-xs 00006000 08:03 2908846 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-annotations-1.2.6.jar
+7fff146de000-7fff146e1000 r-xs 0001e000 08:03 2908845 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-aegis-1.2.6.jar
+7fff146e1000-7fff146f5000 r-xs 000e3000 08:03 2908870 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xercesImpl-2.6.2.jar
+7fff146f5000-7fff14703000 r-xs 00161000 08:03 2908869 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xerces-1.2.3.jar
+7fff14703000-7fff14721000 r-xs 0027d000 08:03 2908868 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xalan-2.7.0.jar
+7fff14721000-7fff14728000 r-xs 00075000 08:03 2908844 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/wstx-asl-3.2.0.jar
+7fff14728000-7fff1472d000 r-xs 00020000 08:03 2908867 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/wsdl4j-1.6.1.jar
+7fff1472d000-7fff1472f000 r-xs 00007000 08:03 2908840 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ws-commons-util-1.0.2.jar
+7fff1472f000-7fff14731000 r-xs 0000f000 08:03 2908851 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/util-0.1.jar
+7fff14731000-7fff14738000 r-xs 00032000 08:03 2908829 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/topia-service-0.9-SNAPSHOT.jar
+7fff14738000-7fff1473b000 r-xs 00029000 08:03 2908828 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/topia-2.0.26-SNAPSHOT.jar
+7fff1473b000-7fff14798000 r-xs 00b3c000 08:03 2908785 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tools-1.6.0.jar
+7fff14798000-7fff147a0000 r-xs 0003f000 08:03 2908838 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-ioc-5.0.7.jar
+7fff147a0000-7fff147b8000 r-xs 000e7000 08:03 2908837 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-core-5.0.7.jar
+7fff147b8000-7fff147b9000 r-xs 00001000 08:03 2908836 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-annotations-5.0.7.jar
+7fff147b9000-7fff147bb000 r-xs 0000d000 08:03 2908856 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swixml-1.5-144-cl-20050912.jar
+7fff147bb000-7fff147c4000 r-xs 0004e000 08:03 2908865 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swixat-0.6.0.jar
+7fff147c4000-7fff147c6000 r-xs 0000b000 08:03 2908852 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swing-0.1.jar
+7fff147c6000-7fff147d7000 r-xs 00120000 08:03 2908857 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/svnkit-1.1.2.jar
+7fff147d7000-7fff147da000 r-xs 00019000 08:03 2908830 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/stax-utils-20040917.jar
+7fff147da000-7fff147dc000 r-xs 00005000 08:03 2908864 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/stax-api-1.0.1.jar
+7fff147dc000-7fff147e1000 r-xs 00026000 08:03 2908861 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/spring-core-2.0.1.jar
+7fff147e1000-7fff147ea000 r-xs 00053000 08:03 2908860 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/spring-beans-2.0.1.jar
+7fff147ea000-7fff147ec000 r-xs 00001000 08:03 2908855 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/slf4j-log4j12-1.4.3.jar
+7fff147ec000-7fff147ed000 r-xs 00003000 08:03 2908854 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/slf4j-api-1.4.3.jar
+7fff147ed000-7fff147ef000 r-xs 00008000 08:03 2908806 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/servlet-api-2.2.jar
+7fff147ef000-7fff147f0000 r-xs 00010000 08:03 2908859 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/sdoc-0.5.0-beta.jar
+7fff147f0000-7fff147f2000 r-xs 0000c000 08:03 2908850 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/runtime-0.1.jar
+7fff147f2000-7fff14813000 r-xs 00233000 08:03 2908832 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/openmap-4.6.jar
+7fff14813000-7fff14819000 r-xs 00051000 08:03 2908805 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/mail-1.3.3.jar
+7fff14819000-7fff1481a000 r-xs 00007000 08:03 2908827 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinxml-0.7-SNAPSHOT.jar
+7fff1481a000-7fff1481e000 r-xs 00058000 08:03 2908826 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinwidget-0.10-SNAPSHOT.jar
+7fff1481e000-7fff14822000 r-xs 00031000 08:03 2908824 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinutil-0.30-SNAPSHOT.jar
+7fff14822000-7fff14824000 r-xs 00013000 08:03 2908823 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinmatrix-0.15.jar
+7fff14824000-7fff14828000 r-xs 00015000 08:03 2908821 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutingenerator-0.51-SNAPSHOT.jar
+7fff14828000-7fff14832000 r-xs 0007a000 08:03 2908835 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lucene-core-2.2.0.jar
+7fff14832000-7fff1483a000 r-xs 00048000 08:03 2908816 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/looks-1.2.2.jar
+7fff1483a000-7fff1483d000 r-xs 0000f000 08:03 2908820 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/logkit-1.0.1.jar
+7fff1483d000-7fff14844000 r-xs 00053000 08:03 2908819 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/log4j-1.2.14.jar
+7fff14844000-7fff1484a000 r-xs 0002f000 08:03 2908801 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/l2fprod-common-0.1.jar
+7fff1484a000-7fff1484f000 r-xp 00000000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff1484f000-7fff14a4e000 ---p 00005000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff14a4e000-7fff14a4f000 rwxp 00004000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff14a4f000-7fff14a58000 r-xp 00000000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14a58000-7fff14c57000 ---p 00009000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14c57000-7fff14c58000 rwxp 00008000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14c58000-7fff14c61000 r-xp 00000000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14c61000-7fff14e61000 ---p 00009000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14e61000-7fff14e62000 rwxp 00009000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14e62000-7fff14ee0000 r-xp 00000000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14ee0000-7fff14fdf000 ---p 0007e000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14fdf000-7fff14ff5000 rwxp 0007d000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14ff5000-7fff15006000 rwxp 7fff14ff5000 00:00 0
+7fff15006000-7fff1500b000 r-xp 00000000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1500b000-7fff1520a000 ---p 00005000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1520a000-7fff1520b000 rwxp 00004000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1520b000-7fff15226000 r-xp 00000000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15226000-7fff15425000 ---p 0001b000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15425000-7fff15426000 rwxp 0001a000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15426000-7fff15427000 r-xp 00000000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15427000-7fff15626000 ---p 00001000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15626000-7fff15627000 rwxp 00000000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15627000-7fff1563e000 r-xp 00000000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1563e000-7fff1583d000 ---p 00017000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1583d000-7fff1583f000 rwxp 00016000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1583f000-7fff15842000 rwxp 7fff1583f000 00:00 0
+7fff15842000-7fff1584a000 r-xp 00000000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff1584a000-7fff15a49000 ---p 00008000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff15a49000-7fff15a4a000 rwxp 00007000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff15a4a000-7fff15a4c000 r-xp 00000000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15a4c000-7fff15c4b000 ---p 00002000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15c4b000-7fff15c4c000 rwxp 00001000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15c4c000-7fff15c55000 r-xp 00000000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15c55000-7fff15e54000 ---p 00009000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15e54000-7fff15e55000 rwxp 00008000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15e55000-7fff15f54000 r-xp 00000000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff15f54000-7fff16153000 ---p 000ff000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff16153000-7fff16158000 rwxp 000fe000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff16158000-7fff161b5000 r-xp 00000000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff161b5000-7fff163b5000 ---p 0005d000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff163b5000-7fff163bb000 rwxp 0005d000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff163bb000-7fff163bc000 rwxp 7fff163bb000 00:00 0
+7fff163bc000-7fff163cd000 r-xp 00000000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff163cd000-7fff165cc000 ---p 00011000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff165cc000-7fff165cd000 rwxp 00010000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff165cd000-7fff165d2000 r-xp 00000000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff165d2000-7fff167d2000 ---p 00005000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff167d2000-7fff167d3000 rwxp 00005000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff167d3000-7fff167db000 r-xp 00000000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff167db000-7fff169db000 ---p 00008000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff169db000-7fff169dc000 rwxp 00008000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff169dc000-7fff16c41000 r-xp 00000000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16c41000-7fff16d40000 ---p 00265000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16d40000-7fff16d94000 rwxp 00264000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16d94000-7fff16d97000 rwxp 7fff16d94000 00:00 0
+7fff16d97000-7fff16e21000 r-xp 00000000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16e21000-7fff16f20000 ---p 0008a000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16f20000-7fff16f39000 rwxp 00089000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16f39000-7fff16f5d000 rwxp 7fff16f39000 00:00 0
+7fff16f5d000-7fff16f61000 r-xs 00043000 08:03 2908849 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/core-0.1.jar
+7fff16f61000-7fff16f6a000 r-xs 00037000 08:03 2908797 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-primitives-1.0.jar
+7fff16f6a000-7fff16f6f000 r-xs 00026000 08:03 2908796 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-math-1.1.jar
+7fff16f6f000-7fff16f70000 r-xs 0000c000 08:03 2908795 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-logging-1.1.jar
+7fff16f70000-7fff16f74000 r-xs 0002f000 08:03 2908794 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-lang-2.1.jar
+7fff16f74000-7fff16f79000 r-xs 00041000 08:03 2908793 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-jxpath-1.2.jar
+7fff16f79000-7fff16f7e000 r-xs 00040000 08:03 2908792 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-httpclient-3.0.jar
+7fff16f7e000-7fff16f81000 r-xs 0000f000 08:03 2908791 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-discovery-0.2.jar
+7fff16f81000-7fff16f85000 r-xs 00020000 08:03 2908790 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-digester-1.8.jar
+7fff16f85000-7fff16f92000 r-xs 0007c000 08:03 2908789 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-collections-3.1.jar
+7fff16f92000-7fff16f94000 r-xs 0000a000 08:03 2908788 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-codec-1.3.jar
+7fff16f94000-7fff16f99000 r-xs 0002a000 08:03 2908787 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-beanutils-1.7.0.jar
+7fff16f99000-7fff16f9a000 r-xs 00008000 08:03 2908786 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-attributes-api-2.1.jar
+7fff16f9a000-7fff16f9f000 r-xs 00040000 08:03 2908780 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/bsh-2.0b1.jar
+7fff16f9f000-7fff16fa2000 r-xs 0000d000 08:03 2908779 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/avalon-framework-4.1.3.jar
+7fff16fa2000-7fff16fa4000 r-xs 00002000 08:03 2908778 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-jdk5-2.0.jar
+7fff16fa4000-7fff16fa6000 r-xs 00012000 08:03 2908777 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-core-2.0.jar
+7fff16fa6000-7fff16fa9000 r-xs 00016000 08:03 2908817 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jrexx-1.1.1.jar
+7fff16fa9000-7fff16fb1000 r-xs 00051000 08:03 2908866 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/trove-1.0.2.jar
+7fff16fb1000-7fff16fb3000 r-xs 00011000 08:03 2908858 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/qdox-1.4.jar
+7fff16fb3000-7fff16fc0000 r-xs 000a1000 08:03 2908776 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-2.0.jar
+7fff16fc0000-7fff16fc1000 r-xs 00007000 08:03 2908775 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-util-1.5.4-snapshot.jar
+7fff16fc1000-7fff16fc3000 r-xs 00003000 08:03 2908774 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-attrs-1.5.4-snapshot.jar
+7fff16fc3000-7fff16fc5000 r-xs 00003000 08:03 2908773 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-attrs-1.5.3.jar
+7fff16fc5000-7fff16fc6000 r-xs 00006000 08:03 2908772 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-1.5.4-snapshot.jar
+7fff16fc6000-7fff16fcc000 r-xs 00067000 08:03 2908771 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/antlr-2.7.6.jar
+7fff16fcc000-7fff16fd7000 r-xs 00095000 08:03 2908770 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-optional-1.5.1.jar
+7fff16fd7000-7fff16fd8000 r-xs 00002000 08:03 2908834 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-launcher-1.7.0.jar
+7fff16fd8000-7fff16feb000 r-xs 00128000 08:03 2908833 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-1.7.0.jar
+7fff16feb000-7fff16ffa000 r-xs 000ee000 08:03 2908769 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-1.6.5.jar
+7fff16ffa000-7fff16ffc000 r-xs 0000c000 08:03 2908803 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/activation-1.0.2.jar
+7fff16ffc000-7fff17000000 r-xs 0001c000 08:03 2908839 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/XmlSchema-1.1.jar
+7fff17000000-7fff17001000 r-xs 00006000 08:03 2908800 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/JRclient-RF503.jar
+7fff17001000-7fff17002000 r-xs 0000a000 08:03 2908799 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/JRI-0.2-4-cl.jar
+7fff17002000-7fff17202000 rwxp 7fff17002000 00:00 0
+7fff17203000-7fff17205000 r-xs 0000a000 08:03 2908812 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdic_stub-linux-20061102.jar
+7fff17205000-7fff17208000 r-xs 0000c000 08:03 2908811 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdic-20061102.jar
+7fff17208000-7fff1720b000 r-xs 00015000 08:03 2908810 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jcommon-0.7.0.jar
+7fff1720b000-7fff17211000 r-xs 00032000 08:03 2908808 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jaxen-1.1.1.jar
+7fff17211000-7fff17219000 r-xs 0007d000 08:03 2908809 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/javassist-3.6.ga.jar
+7fff17219000-7fff17222000 r-xs 00087000 08:03 2908804 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/javahelp-2.0.02.jar
+7fff17222000-7fff1722a000 r-xs 0004b000 08:03 2908863 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2ssh-core-0.2.2.jar
+7fff1722a000-7fff17231000 r-xs 00046000 08:03 2908862 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2ssh-common-0.2.2.jar
+7fff17231000-7fff17233000 r-xs 00053000 08:03 2908802 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2h-1.3.1.jar
+7fff17233000-7fff17245000 r-xs 00245000 08:03 2908783 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/icu4j-2.6.1.jar
+7fff17245000-7fff17267000 r-xs 0020a000 08:03 2908853 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/hibernate-3.2.6.ga-eventpatch.jar
+7fff17267000-7fff17767000 rwxp 7fff17267000 00:00 0
+7fff17767000-7fff1776e000 r-xs 00000000 08:01 1231911 /usr/lib/gconv/gconv-modules.cache
+7fff1776e000-7fff177ad000 r-xp 00000000 08:01 1304793 /usr/lib/locale/fr_FR.utf8/LC_CTYPE
+7fff177ad000-7fff17938000 r-xs 02def000 08:01 1000894 /opt/jdk/jre/lib/rt.jar
+7fff17938000-7fff17a6b000 rwxp 7fff17938000 00:00 0
+7fff17a6b000-7fff17a8a000 rwxp 7fff17a6b000 00:00 0
+7fff17a8a000-7fff17b40000 rwxp 7fff17a8a000 00:00 0
+7fff17b40000-7fff17b5f000 rwxp 7fff17b40000 00:00 0
+7fff17b5f000-7fff19120000 rwxp 7fff17b5f000 00:00 0
+7fff19120000-7fff1d060000 rwxp 7fff19120000 00:00 0
+7fff1d060000-7fff3d060000 rwxp 7fff1d060000 00:00 0
+7fff3d061000-7fff3d067000 r-xs 0004e000 08:03 2908815 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jfreechart-0.9.3.jar
+7fff3d067000-7fff3d06f000 r-xs 0009e000 08:03 2908814 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jetty-5.1.10.jar
+7fff3d06f000-7fff3d2df000 rwxp 7fff3d06f000 00:00 0
+7fff3d2df000-7fff4006f000 rwxp 7fff3d2df000 00:00 0
+7fff4006f000-7fff4007d000 r-xp 00000000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff4007d000-7fff4017f000 ---p 0000e000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff4017f000-7fff40182000 rwxp 00010000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff40182000-7fff40183000 rwxp 7fff40182000 00:00 0
+7fff40183000-7fff401ac000 r-xp 00000000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff401ac000-7fff402ab000 ---p 00029000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff402ab000-7fff402b2000 rwxp 00028000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff402b2000-7fff402bf000 r-xp 00000000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff402bf000-7fff403be000 ---p 0000d000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff403be000-7fff403c1000 rwxp 0000c000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff403c1000-7fff403cb000 r-xp 00000000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff403cb000-7fff405cb000 ---p 0000a000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff405cb000-7fff405cd000 rwxp 0000a000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff405cd000-7fff405d7000 r-xp 00000000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff405d7000-7fff407d6000 ---p 0000a000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff407d6000-7fff407d8000 rwxp 00009000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff407d8000-7fff407e0000 r-xp 00000000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff407e0000-7fff409df000 ---p 00008000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff409df000-7fff409e1000 rwxp 00007000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff409e1000-7fff409f7000 r-xp 00000000 08:01 2596946 /lib/libnsl-2.7.so
+7fff409f7000-7fff40bf6000 ---p 00016000 08:01 2596946 /lib/libnsl-2.7.so
+7fff40bf6000-7fff40bf8000 rwxp 00015000 08:01 2596946 /lib/libnsl-2.7.so
+7fff40bf8000-7fff40bfa000 rwxp 7fff40bf8000 00:00 0
+7fff40bfa000-7fff40c01000 r-xp 00000000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40c01000-7fff40d02000 ---p 00007000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40d02000-7fff40d04000 rwxp 00008000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40d04000-7fff40d05000 rwxp 7fff40d04000 00:00 0
+7fff40d05000-7fff40d0d000 r-xp 00000000 08:01 2596986 /lib/librt-2.7.so
+7fff40d0d000-7fff40f0c000 ---p 00008000 08:01 2596986 /lib/librt-2.7.so
+7fff40f0c000-7fff40f0e000 rwxp 00007000 08:01 2596986 /lib/librt-2.7.so
+7fff40f0e000-7fff40f8e000 r-xp 00000000 08:01 2596939 /lib/libm-2.7.so
+7fff40f8e000-7fff4118d000 ---p 00080000 08:01 2596939 /lib/libm-2.7.so
+7fff4118d000-7fff4118f000 rwxp 0007f000 08:01 2596939 /lib/libm-2.7.so
+7fff4118f000-7fff41884000 r-xp 00000000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41884000-7fff41983000 ---p 006f5000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41983000-7fff41acd000 rwxp 006f4000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41acd000-7fff41b0a000 rwxp 7fff41acd000 00:00 0
+7fff41b0a000-7fff41c62000 r-xp 00000000 08:01 2596902 /lib/libc-2.7.so
+7fff41c62000-7fff41e62000 ---p 00158000 08:01 2596902 /lib/libc-2.7.so
+7fff41e62000-7fff41e65000 r-xp 00158000 08:01 2596902 /lib/libc-2.7.so
+7fff41e65000-7fff41e67000 rwxp 0015b000 08:01 2596902 /lib/libc-2.7.so
+7fff41e67000-7fff41e6c000 rwxp 7fff41e67000 00:00 0
+7fff41e6c000-7fff41e6e000 r-xp 00000000 08:01 2596919 /lib/libdl-2.7.so
+7fff41e6e000-7fff4206e000 ---p 00002000 08:01 2596919 /lib/libdl-2.7.so
+7fff4206e000-7fff42070000 rwxp 00002000 08:01 2596919 /lib/libdl-2.7.so
+7fff42070000-7fff42086000 r-xp 00000000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42086000-7fff42286000 ---p 00016000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42286000-7fff42288000 rwxp 00016000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42288000-7fff4228c000 rwxp 7fff42288000 00:00 0
+7fff4228c000-7fff422a9000 r-xp 00000000 08:01 2596882 /lib/ld-2.7.so
+7fff422a9000-7fff422aa000 r-xs 00001000 08:03 2908825 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinutilextra-0.1.jar
+7fff422aa000-7fff422ab000 r-xs 00002000 08:03 2908822 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinj2r-0.1.jar
+7fff422ab000-7fff422ae000 r-xs 0001b000 08:03 2908818 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/junit-3.8.1.jar
+7fff422ae000-7fff422b0000 r-xs 00001000 08:03 2908807 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jta-1.0.1B.jar
+7fff422b0000-7fff422b3000 r-xs 00023000 08:03 2908813 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdom-1.0.jar
+7fff422b3000-7fff422bc000 r-xs 00101000 08:03 2908782 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/h2-1.0.60.jar
+7fff422bc000-7fff422c0000 r-xs 00038000 08:03 2908781 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ganymed-ssh2-build210.jar
+7fff422c0000-7fff422c4000 r-xs 0002f000 08:03 2908831 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ehcache-1.2.3.jar
+7fff422c4000-7fff422ca000 r-xs 0001e000 08:03 2908784 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/dt.jar
+7fff422ca000-7fff422d4000 rwxp 7fff422ca000 00:00 0
+7fff422d4000-7fff4238a000 rwxp 7fff422d4000 00:00 0
+7fff4238a000-7fff4238c000 rwxp 7fff4238a000 00:00 0
+7fff4238c000-7fff42393000 r-xp 00000000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42393000-7fff42494000 ---p 00007000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42494000-7fff42496000 rwxp 00008000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42496000-7fff42497000 rwxp 7fff42496000 00:00 0
+7fff42497000-7fff4249c000 r-xs 00048000 08:03 2908798 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/dom4j-1.6.1.jar
+7fff4249c000-7fff424a4000 rwxs 00000000 08:01 909374 /tmp/hsperfdata_letellier/8663
+7fff424a4000-7fff424a5000 rwxp 7fff424a4000 00:00 0
+7fff424a5000-7fff424a6000 r-xp 7fff424a5000 00:00 0
+7fff424a6000-7fff424a9000 rwxp 7fff424a6000 00:00 0
+7fff424a9000-7fff424ab000 rwxp 0001d000 08:01 2596882 /lib/ld-2.7.so
+7fff4a493000-7fff4a4aa000 rwxp 7ffffffe8000 00:00 0 [stack]
+7fff4a5fc000-7fff4a5fe000 r-xp 7fff4a5fc000 00:00 0 [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
+
+VM Arguments:
+jvm_args: -Xmx512M -Xms512M -Dlog4j.configuration=file:/home/letellier/PROJET/isis-fish-3.2.1/src/resources/log4j.properties
+java_command: fr.ifremer.isisfish.ui.Welcome2
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/opt/jdk
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/jdk/bin:/opt/maven2/bin:/opt/ant/bin
+USERNAME=letellier
+LD_LIBRARY_PATH=/opt/jdk/jre/lib/amd64/server:/opt/jdk/jre/lib/amd64:/opt/jdk/jre/../lib/amd64
+SHELL=/bin/bash
+DISPLAY=:0.0
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0x661750], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGBUS: [libjvm.so+0x661750], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGFPE: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGPIPE: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGXFSZ: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGILL: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
+SIGUSR2: [libjvm.so+0x5067c0], sa_mask[0]=0x00000000, sa_flags=0x10000004
+SIGHUP: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGINT: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGTERM: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGQUIT: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+
+
+--------------- S Y S T E M ---------------
+
+OS:lenny/sid
+
+uname:Linux 2.6.24-19-generic #1 SMP Fri Jul 11 21:01:46 UTC 2008 x86_64
+libc:glibc 2.7 NPTL 2.7
+rlimit: STACK 8192k, CORE 0k, NPROC 40960, NOFILE 1024, AS infinity
+load average:1.58 0.60 0.28
+
+CPU:total 2 (2 cores per cpu, 1 threads per core) family 15 model 104 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext
+
+Memory: 4k page, physical 3920464k(1951064k free), swap 1951888k(1951888k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (10.0-b23) for linux-amd64 JRE (1.6.0_07-b06), built on Jun 10 2008 01:53:27 by "java_re" with gcc 3.2.2 (SuSE Linux)
+
+time: Mon Aug 25 18:41:07 2008
+elapsed time: 1 seconds
+
Added: branches/isis-fish-3.2.1/manifest.mf
===================================================================
--- branches/isis-fish-3.2.1/manifest.mf (rev 0)
+++ branches/isis-fish-3.2.1/manifest.mf 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
Added: branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs
===================================================================
--- branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs (rev 0)
+++ branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+#IsisFish configuration version 3
+#Fri Dec 07 10:44:28 GMT 2007
+compileDirectory=/home/tony/isis-build
+cvsSsh2Connexion=false
+defaultExportDirectory=/home/tony/isis-export
+cvsUserName=anonymous
+simulatorServerPassword=guest
+simulatorServer=http\://simulateur.ifremer.fr\:9090
+javadocUrl=http\://isis-fish.labs.libre-entreprise.org/apidocs/
+smtpServer=smtp
+cvsHost=/home/tony/.isis-ssh-host.xml
+cvsHostName=cvs.labs.libre-entreprise.org
+userName=chemit tony
+cvsKeyFile=/home/tony/.isis-ssh-key
+cvsDataBase=isis-fish-data
+database=/home/tony/isis-database-3_cvs
+simulatorServerLogin=anonymous
+language=fr
+country=FR
+userMail=chemit at codelutin.com
+cvsRepository=/cvsroot/isis-fish
Added: branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties
===================================================================
--- branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties (rev 0)
+++ branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,6 @@
+vcs.username=anonymous
+vcs.hostname=cvs.labs.libre-entreprise.org
+vcs.remote.path=/cvsroot/isis-fish
+vcs.remote.database=isis-fish-vcs-test_junit
+vcs.local.database=isis-vcs-test_junit_SVN
+vcs.ssh2.connexion=false
Added: branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties
===================================================================
--- branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties (rev 0)
+++ branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,7 @@
+vcs.username=anonymous
+vcs.typeRepo=TAG
+vcs.hostname=labs.libre-entreprise.org
+vcs.remote.path=svnroot/isis-fish-data
+vcs.ssh2.connexion=false
+vcs.remote.database=isis-fish-vcs-test_junit
+vcs.local.database=isis-vcs-test_junit_SVN
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip (rev 0)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,1110 @@
+PK,6TestNonRegression7/PKPK,6(TestNonRegression7/parameters.propertiesTMSÛ@œûWxkI Pñ!ÂL§ùh¡ÓRÂíØ»H}×^;±]Ó@OÖJ«'œ'f@##içhDÂýÒíÜþùÕàìêôÒœŸ]º^ïÂI>='Õ8ÛB4:B~M1Åâ€dŽœ}IaÆOHÓð;y§N¢4Jv +ìÚÞÃC¿×ëu{÷álg]ì¬,Z WâùèP¡Î&,bñ;/â1¥9lÎ
o=·x#}VŽõN8NNúØF²¡hkøF .+91ªy7«y~¬RbÔüÓ8ä: ù÷ŽA¶ã~(Ÿç
+ò÷cñœlaávxuy,â².Ý¡Va÷ž{`+q€|¬~{ÚËHW8wì\uŸ&ÙæÊDI#¡ÖhP×Ñ"ÎÒFŒ(Ý_°G3ÁÍ©ÙaXÝCb}3mlwðÀq¿¹YÊof¥Žx ç8ÓðÈ@È!-lÁí¹c¯R®æ,zox`T> ÖÅiú,Æ@+!§sHÀSefÛ¹
+CÓ_kák`=7ÎÖè¡î
k Fâ:cŽKMÁÜÒú]
ß(LSJâL%¥Ï9HYŽSãs#Ž
þöC±Zs3:QCÅFpÙU!ÉHèµP+<Ç
+e0!%Hï̯uk^0AßlùëП¶¡¥3aÆJòºYÏÞ¿oÍkøáygr
9°KyèÑT§ÚRdª=â±isžIq©;øÿûÞÉk€y*¥¬ÑóPKi©žPKð
,6%TestNonRegression7/data-backup.sql.gzd¹UT]M°5
+ÁÝÝ!ž$ž»wàîî®ÁÝ
+Ø@p÷à°qwÙžëÍwÎyùÇ]s¬~¬QÕ5GÏÙ]d±ðÿûwÙºI7ÒŒœ¿!æFq2>VœZXZîÑ'þZHN²ô@
cåàþª$vódwX.tãáDÀ4~Ã?œhß?þÆ:Ô»^NJÖûn®¬œNôèoßÖ4
~>ï[Ž#uÝŸ^L×·oyœûyœU¯aÜglŒóÔû?>ôø/Ÿ·==ól}ø]¿ÞN\ÔŒñmÞÜlM%úÎÛj2 RwµxúÍ úÎɰ¿¿nw\Lã|ÎŽÁsChÇcÓ'-=o}Þ=Kàζޚ4þ
+Ë.¥ÇËŒ®Ø©!¡ßųó.ßÇ)ßWy£öGÃÇ{ãúÛ!ÏŒ.ãÍûo²žk<êMæM4`k²þÛõ$?¢íÖÄöŸ^}È·°àËÏ¡7Ó³ó^¡Œ{
+÷wZÅGů՟3ü6WÎöÞ÷2ò.§Ñº×Ëþù>>/5xyw÷·±{MóS#Ò#]<¥3xy>M[%ÝÇÄîÓ,]BŸï6kGÏ{j
+ºõ¡Kyî
+f$YE~ö÷Ó×ÕZíxÓ1;¯³Ûó=õKK=ž¡×NÄúxx¡¡{;K;Ois|¡%Ro5t©\^¬Î$± ~¿`·VÔÄþ8J<IéèÛJ>~ú$Fje0N{²Dmw> ²ÆšÔûÏÍ
+g
+ÁÃÕœ·ZDᎵ3g5ÓFB_Ë(ð0aNÒ<\.ÕýÊ0,å]誀Á€Jëà×-}F
+ù=PÅF55NÄ|äEI
+pÁk'oêáï%<ÄÀ:A¥Ù°Ú~ÕhÒ]·/g±öoÒ€c«,žð7Ê
+»ïÅø«Vq,F&ËÑŽŠ,5* +8/øy~Œ@#ÌŸÏnò_y÷=Ú>¿ûò7ñêÚ~Õ>á9×^ۣȌ¥©sÜÌsvS¡~Ûiøé·Õ%b«:÷X ôø£µB:å_3:OóIﻩhIݯwÝñüœœ`óŒgyW>}/ßî'xÊh²
+·
+âý>ï*ùýýbx>V ¶rIQ·ÜHr
+îŠPÙy{¿4ñ£N))µWtÙd€ã»ºnšQ\ø~iJ5r
w/=zV?ü_ßoÅ5Øš6Äj¡¡Äd|ÐÒgïw=þnQð¬šß°OÐr:KÑÇñù"Q=g7zŸów¡õóõçåæiÊ?æÊpêjn7n7'. AY §açëëÙ³0ª%:?Ã-eõs»y[|ž¹~Tå%ÃÒþ(<¿zºÜÈ8x×âTùQ,Ï(ØÙátu~N-hëqÝùêó¿ðy¶¯ñèöyW(ï¯oåzó
+ø8ŒÃf5zÚÅqÈÕïÈ4ÞægªÂLêÌʶzÆÑ;ãÚÒo3
+œ53̺¹æ{8.屺¿ÏÕ:ùZcSÚ¿ç0beÒ·_nųÂ-9JLãäÙºŸÆÍ$Iõ£7§B bÇà*Ÿ±<Ktß¶ô{èÆN^Wµ/S9KÃ'÷Â7B{W}â§e$ñ_ÅØEPj³èEø+Øä7Ó%!04`r00ûSÕÒÏy-žÚÔ2wéXäQ+T'-î±[-NBŽüºÉ©úº#,
+ÍŒwÅá¯#K; M_ϲÀô6íÍÓû¶}œÕ$7ÀôÔé H
+\]»p
+ÓwŠŠ¯u
+Yýh×edi§}èÚu³ŸÑp&ìêºôºD4sËømÊœ}ʲuiêíû i¬
ØoÛFFJ>Œ®vSj&®ëG2.ë1·`1 G¯î>%+I_9÷k}Uc:Ð@èx4L¬ßù|RyfðÁœ4ú:=4ŸÚ]Ÿì
áK`â~>Íÿð®:HÔ*AZ«ñM40õ»÷^fB:~ôrzöPŸ;Ëðù|mêññ:óïjœü<©àde{j?ráš"ik):£!]²Ö¹uW*AB6íóÒô%]4É×dÈé» FCòÃDErûðŸ~~zlPuV ÜÝqfàùLÒV`g«TÙŠ5n;Å¡æøùaòY7?d&m,oý·J«È&ßþáÛQ?ŠÝQ'^i€úõRÀâ7ñ7³ÿ
+ÉðrNvVëJâËô4Âshñ¿Ñ®Ñ0óæ^ñ;Uÿ%A|öÓ¹ªÑ1ã'æ©,.\ß,aMÿ!û[ÇD£š3ºTîÂ_¡ÿàú0»ßóý]ZFÔÜr<~Îç#ú¯ðpý`§©UIJÈ]Ó;°}œ,äcÓà¥E1áÑ$<
++¶_LN&°jůÜÁb¬î^$]ŸÀ=œÀýìú¬ýó[Ej{œ!ó^pØðØgZmªVZiúòc@^m;ßAš«[@ýõ iœ¯ M¹¡Œ)\h"í%Æ>'Bt'¹zØŒ|'dºñÙJöi) çgëÌ_Ρ¥îRb³ln1</°kQ4èü絜ùÅ3žqÞŽ÷Ùç»ûµ=CT.æxBÜ=ð.@/v£þÞÀŽsè2RVúÌŸ/;Ó\;bws{Ûg@7áZ!P,ô¢§ýxJÆé(4Á"Û£êpa±HäçöBfsXêùQÞ1NSììóz$œ±)Øøã9DŒ·Šé6"å-%ìüµQÇd® Ì#ýÕíwŒž¶'øSÆÀïçlÍÆ£ªdÌ?®³V%\~u!}t(ÄA¹y䯣sXVŸ£õ\/-wf{Ûr»÷{R¬èçË©¬<:dkÙÞ¬}jÔãð)~ö²^Ðä~3Yÿ5I{>ðT'S duÓq£šúé·Ÿxu3 éÿØ4ÑÃbÐ]Öœ7æ}p:ÐŽ#âŸOŠJ 1;K
:
Ì/*}U{ã2¶~÷€p¹µòêeÐé¯>t®sS-¶Kš!µÉÁ6߬«šñÚ·ài¥*³ÔõNÕܪHµµöGë=š[(6&³?}7eBãa76Ì^nØï¶àäBs8úå@RlæS%øA0z>XP1Q}d8yh"Â1tÖrõ_z±LXŸš-ãº>[~ºE³ÔyÖfÄK)EY8"|Vg³QxPØözKi ;Pµ#GÕö¡òoYÂ9iæäs¶îeC,«:ÚØ*:(жs!ÂöÑЧY at kÍ%1T#ßGó]ÛŸç=ÒIn/Ã?{Ëm'áVûë27/4Ž\}ѶØCÒÝe&³M>¶ñÕt~sŠÕq®×гÅ`a€é1»`L4ãN"}J¹ñJ»šÞKYªo·xÜŒ ^=Þ¬-¹S·qG=%Zë.7øsFÚÆ±{ºêã:×þ])!Æ:k§)qÒÌÀ¡o&«Dßam0-²6®>gö$»Š«ÎVuöåÝÐ]n$ñO÷ªUóY³œÍK÷j]Ñ-þÉ;@2ÔìOGèµb÷ õ·=æ]ËLrKl²IÕ6ŸFÄ4H£òÝG
+\\¥BÌZfø¶¯«3Çd¬&×EnNzß_()Uü@Y_Þ¯ÛüË
¬?ÒÔlç»PïÊöÇôbGîpÄ6AÂn<š#[Ã,;%óúàÊGðã&<Íg«ícýÓÞë"Üy#{ï}ØáË
+²3>Þ÷obYRÁ
+_DhÖÒ7_{Æ>ïo+NR.ô-4€KjX*ÌqP5e#0ÔeflrÈiÖÞîû;ÐÛ^Ê2E`øôfJ«04nÓ
+zCúÕðf®cÌo=Uì"^Êl®q<w7©Õ}°i©RŒ2Š}üñm|y~å4óåÅML w³°ÿÃ"0îBh^SZéÃÁAÇzaÝ¥MÅ~bUj9HC·Î3²Ì.ísf×üÉd¡ |æe%D!Ò7ÑwôaõfÁYöZ2{eûInÄÔÓAgî]péòÇ{óíÕ×lŸóÇ â×ÛrºëN÷ §Ìú2 at wöxò4×ýûh0à)²²®®»9~wº÷ãeMÉQg³±ÓÂû5òÀò
+M=m¿Ök3æšöy3
+U÷Wªxõ"~xÂ,>âøYóDÔÞC×Óý°ŒÌ»œºQÞì°9°À^_š`ÆM`_:j
+Ì|Û-vÀ¥»îy5zù8óDô~pÚ&U»%ïª|E[ÌñÚîó7ÆÐ<<UêZ¹2îªâúLÝg7õÝkvS¢Mä¿>vè0ŒGRó¬íÍ«PvžbIGÿFµ$â{eÈÉOÀ4ñžI?`X'·S÷«PþÏB B ;þîáAYE9^RÚÞúdPê)wQ?Íz±À~Ï`é&øa\>GÌâ],È&L*]×"Š4_nÒ»³öËݰ²F¯zeQ(/XVàÄó"!ªeçŠX¢#ÄKú¥£R&Y!æyâžœÝܹM3Hîý~\Â/JK3·ö[É&ûØ¢vØoxF|"Úew
¿tA::O
+Wd6À}Šõ°Ÿ\Ë5
+â(þsÔy±³xC¬9µ®ób?kaÒFBktó-€)D8÷ËpIøXt\s_ÜÿaéÕpù±¿;ÿŸK
+Á»ŠhD¬Cbp>áOêBs*djÛyÀcMÄ,š
"~IìråAibû+*çùŒxG×ek»=!YMW]`¶œß*3é!!ŠBç }÷5=WùÓjÿ®ðô§~µìŠº±ßuÄædÙ>QëÛön²#¯eø~«¿]Œ%§©â³ËÕTe£Ã(uÛ¬À!çTs"R[¢-ºšWÚ¹ânùi᥯_S ¿ç²§\œ?CZ·rñû¥»óÑ®$§_è®ÎÏ»ãÉÙ9š£GÎçÑÖÚݧ? öTÃ
+Yž£ŒlOó¬¯ËïÂFžmVö_
+øe ÈiÃMÖÐêFòŠ¿éË@2]L$<!ùCíßßï
ÿ<>UàdRŠšÕì4RbŸYÝØÐ:]Óc8Iã}ÁôBûËýS)ÑÐmÊУÜÕñr31"zôO«ýêIèÉC?o'ÆGšõÑ]ji®²²ß÷\8^§?
^ÌîÞ
+
+
+_·>ßÎ 6|6©{)}n·tý°®êŒã|°jIñnWðUñ
+ùÁûl?:Üð°gÌŸÊ
£nÊßœØq§ïhí%wbQôô
+R
+§UzÜ?°óÐëò?·õU'zTkP Ýóu4óZÝà^nùË?ïë¥"ûŸîmdŽ.Œt
+
+ø~MSµ?©œŒŒ~°Z:J³~žÞœm©Ê}î|În¿L8;Ú_àÝ©ïæ}òìñ²Ê;â-®UÌ÷Pï.?
Õb§AE©ÈäFOê9+8=uß2ÕÕõ®œ-9fKmEìµö(Îôø>ŒyÓ2?¯}ÜR}¬Ý¡°XxëL±.¯¿µWòܵûLÖçºóö8Ô,
+uu^üÜJvÁlË}p®úŒ>ɶºÁýÚteOQP8ñ@HÁüLiqZ:¬â4ü46ÍÿÉ»pj>Óó¶fü޳tÍLÓârRšJ ¿OžúsÅÝ;(«æó
+æÑÓÏÈér-ùôt¢h]8J\ÉZîÍ«
+öï{û5
HH/]Dæ-SHúÖwOè÷±>Ô>Í`orÞͱ>ýo|òîŒ$jÍ
;æûëàŸ8ÞœAÉõÀ_àj3 °4Ž iŸ÷.+áG7¿5PR×Ñ aæ €%ÎfF¿È4€MàÄí2d¬Q§ÀÑ«òÄûIöGÀßÂíöÂïü0,: (/*šÝªò³ÃŽŽ*±ÎQ
ê°ÌêRÝT)b캪E©nÍÛëÂ"âYgqÔvëß?\ékæ8Î
cùl°Ò(dPÉ:ïfPØŸ¢7àr¢tAàzt€:]"× £m¢ò=œùYŠ_ÏmïA9œù> k]¬pü5k&Yúà tMr?Nš|>ïYÅ)ó
_Ê9¶ÀŸkŽP6ÂBwÏ{Ž[|ádõóbÛpZB;ù=»i×»à]i±ÃÀwv
+÷SøQÓÖê·ZÆÀ|\äÙ
³Ä^ûÈ÷ÖœÆcŸò=ô°d
+ÊïQüíåhwLûJv{gû:«lÄOœd:ßnÓB!fÔoIzušýrŽ¥·îMgÍ# ûPŽëÇÜ
8íöŒ>i«ÅôÏœúÆ[£yËëÝ@-×Êuúê6-ËÍÛ.€Çr=ÆÜÒtUÑ3l»²N'ÐjfºTŠ
+¯
+šC-d;4È\g5aسéPã¥6#ù+SÑ}Šÿ9c÷¹Ñó&§žfÔEâ÷bÁ¹\iX8«kX¡øQrññüû©#2Òòš§bDÞ÷
+¯ë}>ãõ5U5°á«évj¢çx3vêìÝUÁ\Ýi6§¿ãÏ÷a£h\X1JébHéðí|HYdJèé/U%MÝoÿ=ÿÙP!ai'aÏp«È>ÏKUsMåך Œyx
+UÂoOÎl¯^O×ÕÂ*
+TÈ&íqà8HlIÈ3VûkÇ[»ÉÔG»:ó[}ïïã¥M?Ý_@öŒíÒG¯õ=üBœ9žÝÞï§|U1sE=÷ÝzŠ¿ovœ3Úõù±òÑnŒÏ÷ž'&v17+0 ïžõ<ú}.Ê#ïvžÎ!pÃu9&NÛl©þáÃG¡H|0
+\¿×® *zæz¢MmݵxŠ%ŽèüñZ/eÉÈ_Yž;ž
+pãvóþ~_kY!y=ÿ<;Þ|+Ca׌ºS{¿ErÞSÞüúðŽè|é#9<
+ìø|áZøÖ%À,ÿç£Ës4¯eÙÕl?ÙÉÓêùøûÞÏŽo×Ðwj¥Ù]OÐgaÈ*hUVWß7âuscŸK³®>Ú¡Q^%Xœ[E\l)ûe2LIcFÁ|¢ú»NùœªYm¡zmn·!²ùïþ¥'J=Ö&Á׺Æs>n{Þ¿CAgu ³6^Ñy: ö?$yLD¹hMþ76CaüÈÎÞÜF¶Ìx~äÞöI¶µ]*xÿr,ñyqßyqFaaìà)¶ø7H_Ú÷éçÛ@
PqáÍîÔéÌ@á̯Ÿ«ï4ydD~wGUÔCš/Ö÷;#ѯá ZuØ}ï~íÉ?ŽnNÆ
?ÔùÛv¶ÈÙ¯ùfRó,ií(Ú·Âðò¶ho?lï/yø6ð £á±œähÙùèZDy,6lìÖ~ÛŽL0jÐðð€^û::ô»`^ãý;:à+;Î:ð×9Çøy{ÛgoFBÍŽr*ãÝú95~[þižk_lùÂâ Ÿ@hkªï¢§T±«žž$œØÃøéîDV
+úÙò EeÅ+å1ÒjÎ/5€1KwñÉëOùLC1Šnx%
+íî®)Oì¶õè,Yàa³#Gh«<ñ¶éþÙBЧŮº6°_µŒÄ»ûCJkí Zt=ÈiG°Õõçž»}YŸÿ$'űãš)cªu-ñsÓ_v¯Éª qraD0{f-vÜÿãDŸà;«
_œáàïÑM¬Ü]ó8p*¥t¿M;Ð&ôrïE¢ª%ÚÝ]f$iŸÌ^2ö{øxí»¿ßÞSWÒ©üœ×£óÄTñüõÍ<ÏmXë²§\#Å;þ69=~ø[õhxWŽŠåë¶Ÿj±v×ð<¹tPµ4n#nŠûYg:T³N[s#íe£çü)7»CbéØ,Z.Œý©üž÷¥"3Ðάªìy£@¥+wwO%Pàéê5ÕÉ8ÎÛ@LÉÊê· SÍ_î1à®Onÿ°éÆVQµ5¥«F§þoÕSëzÏ·lo at iGßçC?
mÚh¢l Ææó£pÊn5IÕYâ®oÉλ
äU¬eÄMŒµÅ^v.ë='-/qá_hª*Ši127£®Õ¿Xæ']Þ+`ânŸ5žÛ¹XŒFéEÑgK«à¿ÍyÝ=77y<¡}#ßÈp©%52Eº¥D`ZÈ£jùc!ŸæhÏXŸ\áÆ@
+^'ÿÅè Å¡Kâ2U!iXNÇÈc.Áðý²4ÿ)»8EëÈSÊ7{@ÊCdW¥¯»§AƵþ×[;#ucG?á>«A:oµNùçb gïEHíuÖpw&oÒmSA_~JCsðÞkd,ÙOßÄvôÁOàÓìÛ0Vïmdߣìs!&X-±h3»œÿº+»^=}YëlíÛåa6Ϫ+Àíe YÄ^«¶ó:©v̧Çá~i÷!ã!«òRå\z×BÌ#5è¬Ôùúýóÿ9µñ¥I@$yLŒmJSoQ{ïTÃïb|VuÇšÍ`oñ°åq-e-°š¶jEЀ" qU€öA¿{p+©l^¿Ì3<åÕ5ôðqÂßš^¶ß dåñãaůoÀÄ¿kê®
+²Pá$b5m~âÚ¶OŒ$Ý;õzÓq¿ow5öIžøËúsã4<}Ó©«å0;K,õ:"éTÚÖ¥³ÐÒ.Ì FR³AÓ }ÔŸ#ݹbæ1[óÔÿæû=tFÛã$çx¥Öùl°Ñ!LŸü
+2D§pé>KGsøÿöûÄ-
+æ¡·Æ*N/2ØßÝ¿Þlh?úRW©ñÉ[z)ìbiP6@Ö¯"ÄNß6ìWøcpß$kö°B·øÝÿrsêÕúÓßâfáÍ#XìØÕ$þ¬]
+R§ Ÿ<}ÊW\PÚš_¯.äbÅPK[cªäͬ6:$:£jŠY
+µB
+Õ&ifÛÍ¢}ó¯ýVWí3ÀN̩ӿØòüÅàæF·þÝ%Ú=Å
+Ò€2Š1+ìÅ@×dÄ~¿µ;vœÅ|Ûµ:Ûæx6rpÆÔæÀß³3ìõõ,ÿõ$ÉÿnŠryÛJüÂôÿmótú|{!ŒÆÐ: {^Ô)IWó÷`G"®Åm@ËYÏ+VYå;0, Œö¹vúÅc<æ ¯©²$iñw£cøËè*VºÒ ¶àwü§ñ9"Põ,áÊ|ð[\³ASÞTšOM×,©ÜØÌNÙÿUè=ÿ@g1ú8ÏgãîŠ0LT=Ññoÿä :ÕRÓá¯VRÊOcóãµÔG:žÎr0׬ø*ìùîèÙºÝ5ÙAÞÀüÜ£¢Xdo2/òùÿvÀVw»;Õm¢ù_Â×í§/hs'Ç
+èÓÜyxaº7Þ{8×/å]*âpÖA²ç¥:QÿQ=] £é×B}Z*k¿
+ÞK_<uëd|s-[aDhPyuz%¿Ù Vuëߨ²ùª'òbô~.²i¢úÊO[ÐRu=£Æ]*HݵÙX5üä¬(Ô¡rÁŽYVýçe$®fì$g,]'ü
''F+úÞhŸøë_Ô_eâËÑÉœ®îXSsÝíœzЪÕß+Áš<åMq;í§7Ã1ª;lªãÏ87ÿÓÜô®±ŸaÉQë¬}ÍÞÆEMÒ$
+®¹9âÔøþ .Í"ý+³1û[³¬Ô¿ÈÚªm©nìuý-M-¿,æ"~_ħbà
úØ<NW3þ+q¢le-u7®³l°
+Ö)`¶eZtvVQ!oÖŽYaø»ÊbNö«'MS$èÙÝgLÓäñÜšXT§SGÄaRñðM³ë,æÛüÇ^-¿ìž²Þ®)å;»á ÿN«Ÿjbæ¢ÄZÍÔ~ï]S¿5
+
+ŠRÎa÷{cžÝ^nü¢ô¶í!u9^
+môaÅ`ŒÐ°gÀ_Ñ#E¿µ·ß
+Ÿï> >õNï`2Y~Áȶ]ßÅJÇlíÇßÓk±MŠ8ò8Ø^-l)Î!®5Òpn§J«^&äï;V_!qèÁÀÐõ"TD at M§ŸÓªJò°:=vZØižÿ}PÑ#®}Lºï¶cFñŽÎÿîK
ùº¶ú\O]îøŽeÜÆ§2n<M*ÞN[ííßqzÙRÈ×
+`ùñ~f#®:€÷R{óSvÕP&2
ت:ãmÖÖO€éÝtäËàB$ ñ
+.4ÜJ¶ô¿ùåêpHQšµaÈñ
äÚ×îÕ œk¶5²sÀÇ#ÓÔB
«K¹€óšgxú²i*ð2@ÏÉê°
ÖêGÒÛãÚ§ÐÆçs Å#³±ÔÍ÷¶Äünû~M3M"É-ÞW>æARÔkVL`"tdš;HCfÎ*é×¥ZÖÄq?7|Õž³nŽª7º9¡ULõøQ8X¥¥M*ø5Ø¢Ç)ÿð#Ú`LJ& £ ZH'ÔJ8é©¡¿å¹ÁtÜMÚ"#7\r$Ao¯
+ICXsCXùkqYñz.öù%×yà/c+ù\º\ÔæÐ1Leî×coîdûI_v»7IôJ²žG©ø'&Yj%èçÞ
+c¡bÈH7Q, hÌX<[t:šw0ZYÀ!µÅvS+t5¥@v":"M£8f(ÁûîP$f @ÒRÿê@úÛ¯Êds)DÒmciùW4n®$MuåfIáCu×Ê\hkáâþxõ#?qÓ×Ë?ŸÝYÒï·K¯G6Ïò+ôߺ[ŒÄG5¥o?ì}Üô¬ãL~böÛ2Jre¿hlŠËRÐBœ*Z
+BsòîìG
š±€Ó·ÅØé\ô õ @œÈš7*¿4Ü¥C?Î7ž{7e€$ä5ãJ AËí=kìi+©*|ã'i»»-/Bê&wÇÛç:Õ4×'ÿ3Ïö9ßtý[ö ÕdÛà£*Ñ
+íôɜĊ{ØÌåªÏikn+$$(ðU}*€×œú¶Òùݳ³ñëÊØ]3Ô
+ùát¯K9×m<M©ó¢V¯Ð^r¿Ð£HeËäØ%^ÂÉ@/ìªîr(#»\DofØÃ@i¯)Ž>Êæ¥1ªIàø!
+£~Ñ%ûs)>×`=A[ïP£Ë×6\?©ÍÊð°üàÔº¿qý,ôD6x<\ìJõË~·X¹íÍæ0/Ï@ü\8ûµHÚú=;±ÇZ{AIš®=â¶ÒdÒ"vSè~¥cÃðì×£Ï@Ê`×A`í>òÔ·Gp+Þç±üv#©o·áÑwþvÖakعIJQ·»ž§@ofòÕ-ìºlOßOÊiâ|î×1¬~Ä<phÑÜ/Õ΢Èq×å¹RÕ€áÁu|PTP4éTìÅ^¶ çz&2Hö].axžøµ«®Í?/kfª¿réµK,ŒTûú,Œ:@ŠÕkæßŸ\=i<ÖÂ9DµµdGP'yØ
+Âhg]ÝYD±*Íi·F»¶f{y÷»2ñrçMãï³ÎòsVO.ÄqûNzÝ5D2HC[Éñ¶îižkkV íi
@mÚcŠ;ð
+ï/Bý&hë¿É(=ôýüäõoÐVò»ØKf=®]=2pûñðÃwî~«XíØþÖ6ÚMh o
+N|!·€ÕÑ13€À'@Šø,cÑcà4K±úU9DÕ=~é«sÐh»ãHæ{í¥Z áGÓëÇû¢Õ¡Ô[iÜ7
®æšê9£Àl¿p÷É£eÒÛ/?2
+ã
°ë7QÐXc¯Lzâ.#öúÖDgK
+AÓºÒ¹/Ï?Xù<Wêùeîº
+Wöó>æÍcjµ53¹gåǩծœü:\¿æÏDûmâìðf&ÈæÊúÅÊ
+€mÉX'ªk/¥Ù_ða
+ÿi'5*è¢õâè|0e¹~5T¢¹?.óç^ýe=¿ÃCSÊgùûŠê§*¬uêðQèDßkèæâPýû¬±úÒÌâ
ñ®åîÄuÅ/I[û<sZ:(æ~v»Õ±ëâ,=í[cÐ8J
+ýeæ0/AÆ£Å_Þ²Žï³;+Zèç7ÎI"ºÎkYôôyô©@ËNeu5ŽO@éCÖ·ðÜ_÷+OK}ÇoÔW/©©²=](Xß±Þ±þ`²ä9EUºxÍšºuN'>»?¯'¶Ïßk>ø¯ovšÈÓxÐ<øzÎбZeèÊìýæCOm5¹³%ñåîþð¯ß!LaK¹ÑäX2rÓÎj]MÃrîüÈðôÿëI¹É_P/øŒL¡9¡8÷õDÂr¿bs©8Ÿ®Û/^1ËŽIdõŸÔà"9_wÓ>EÙ·ìÖþx}'bl
7^ö
+WéÉx¯|3OÊ~ê;œqs3áÿLDMiŠ)œVœà1:2*Ÿí&Ø4¯'W+vkÀèØøGÈ$#Î îëGš<¬7×ËØ¯<jh©þQaÙo Åö,ý-ø}-çÅqNÿõsï4ž©üïŸæYMSùºþçom·pÅ%Ùa'
+LÚ_fŸó%µ$oÄ·FzbMJT¥Ê®x ³1|yKHâù;_zº€R`'þ0[çH,~%¿Ì/'èg3A¿$ÏóU@×ÎL¥gW}9)G¯Ô¢þ
+ÄJÉ©ð²óñÅA£õìžrXZÀÛ׿S˺¬òºö¢»P7«
Œß\$A)BLÈVŒŒäHǧÛîf2ªv Ï=s§Ÿí>ÐX8<k(Ñ .IuMÆìw|sŸÉÀ,ÿNü
+äÛUfì- æÖ²WŠ¥JP²ðÄú¶sâvä»sÙd"¹9Ù:ÐóàÙ¬³T?v[ÌÜi`ŽSßl"héÌ3¹ji/LS ß
Çnj¬^ŸeùβÇO«Œ{ôß© ¢ç/×®Nß9(à Ñ98ÍFg(ÄâÅÄu_Ddh«ê2aîÍò!vÔHÉȯö¡}õ!éÒúÙÄJ*Yùz±¥D³}éØ|ÅÅKTQgÝêÕÃq¿Ô§{up#eÕz¿ý¿h:ya^$hdÄxç~¥q~AåÑqks÷»äñm[¯*
+XAró¥Cú£Î\+?*AÊ5uÉJu¬&rú³áÓs0*ìš¡ôlºtÊ©}w²pYµµ2ÑOì»ÓEÚ°N«|Ë*b>áQø,°
(i(ý~!ø3
.èAQ©îkòâÐäZØÍD}÷ÂÈÙÅqQÆ<d¥
+q,_Cb å `ªïa±¥}ŒW/4WUÚôkŸüÔÌT¬ü{wjq£^º€j!æP÷Lñ
+÷
IÁËAH»Ù°B(RÇúbÒ¯èÃpthÆo÷ß 8¬Ý0.$Kºë¯'
+s~ºÜàøLšºPÒ,tú9fÙòPßKÔÈOâN=þ`a\JÂ:-0š0¡5os¹lªfxh^¢áR°>Ñéã~¡ÿàÆxr÷£rÜ`>o2.yeZ¶ìBzÐYÿôH7ŒVÞ.š%œ¡Õ ÄUÂ3YØL7WC"Øââ àøÄk2pe{¯Z³iТ
c÷A5kzªýÔ7~tïv÷Jv÷ ·ÄNÅ,ÌìýXÜÛÈŽºqü*:κ£5ŸaÌŒ Ð2Ù
+_
.WŒ"®<@§üEÙ«"VÇٞסm4Ì=\ÛÃØ
+I¬±ðžkP¯fnÙH±&AÆLa[ŸvÅÛÙÕžïkÑÅpLGÓê
+öºe¢.Ö&Ó~ÈùÍ€å|ÀöŠIaœOKÌÕE\~Ö_®J¢MîB¡æÞåÈÚ|qúÃfþzO¿RÓFôŠN
x
ViýÈyŽtTVª<°
ÈýÃ/¶ÈŸ_\d ×Tj6Â!r#2ÌÔ
(ÂTu³r9#R3;xÞ$žçƲýÏtUC€iÔé:!$áX6'K¡g1SŒéd}ØŽ!³°¶Ý,®Ó»yN¡·V#ÆÞ¯^ýà,êà`ȱãÐÓÒÚºyJ at wÚX;}°£%_¹E!L ÂP€¹äcb¥*ão@ä12°±+€Žµd|®S.ÐcdÉû'íûõaAB1ÊKIùùË38ë&ëGô
€¬ž'ñötÞ4GëL@sUK~e~ ]P,G¿º9µ*Ì8ko«4ÂDVhí0$1%ÑÌ CZåpKŽc¹l#ÅÏβùè
+à¯5zfÁÙ^9«ÏSñÒ?ckÝ¿)¢iÊP¯¶!fîTÚ÷òwÍ)m&vZb'qðjÕ
5ÈYÿ]?¯GâÙâmÊË-D =1Oû}/¶CS#Ìç±åÏ\)DXÓ鲩ãøU³÷Èžë^]êÝÁëâ¶Æ+šó<õ'öBÝ4=ÒߎÛÌåÖeùpÃ(ö¿Q£Òý\sRlÏßÞÔòZ"ò°`,È&®7><xñ7Z8Чÿ LOªJ¯Iø@ª"Ñ/JµZFQ;x
ÉŠäÃ4%€6;ÁÉ®Sà±{I$ò p9¡¯NDÄ4ÃCŠÄP1ÅÆíJ)ù\DÜmš]$$ƺ[1ZÛïU0GdÍ<¡"
BIÜJé
+VYê¡ÊbRQèlȪ^Œkd]9[ÜîŽòŽ
+©îG:
+NËœsßÇ[©îÇÓxïGî©øÛÑ
+!YoÆ^]«#iŽŠ.aÅ&:Øa8
+ü6M@¿vx¢YÚO@±¹¬u zÝX³ÀŸæ¯odzþ6ê®]ïz¶~ÐÛfCÃ)ø]ð!Õq]9ürí©Š
+E]Z_ÞŸÖJ»ú5¯DqQBÕVÎÆµÍMÜÆê,:McÍ3q(µ#,gË3Šâ±(ÌÜÀÍ]F}©*í²ÔØs8XµÄcóE:í]£©nPKÓŽÎR>]ÔÀ6×=Ÿ©ÎÔ,6Ǫ
+b#ÇFZ'¶sUjâ¶¿â>©<ô7©ªŽÕÊM²mòÊçú]èjç6 ºùÙ~ÛTmúUÓ²A¹è4ÕÛNLlÒ³JùþïŽiWrÖÝdÓ+õªàYOæ 7ÇX>Ý". Í€IHº3GD%d'Î?çLÂ!³gÚ`
+w9¥úžâ9ýÐ×ÀõgÎm=³ø9 µB&ÓISšÿ£
Úèkþï¢jZýHXÇù
+rKrÀ¡Œ2#ÓñÙŸ;öÐÕÖqóó`â¿:c×6ùg&÷Ö9êê^¡àKüêí&$ìhJñ>>ºGrJrQŽÉ¶æMjÚ1^(BL®ÞJü?>Î(ÜS?ú×kqš<ÝšOô}è:òö¯œ¡Ûñš8F8j?|27+ù§¶2%7ýÔv¬. ÌšŒ:üÅàYs
+ãz
+%Ít9yößI ýgF@8uþ7L]b&ë>lÃUz3ûÞ3µzýt\sš|AɪM«ÑÈc5e|Ã÷@äÂyÒÐxwB¬3DÉŸÐͰï®8ž¥h®D?3JÌL¡~:ªz*Ò¶±üþŒCçù2]ÔÛCbèjdÄSs)¥¹ èÔñnº ø2®§kT]®îy±@d%€{%ÃYWhåä?R'?{&ógLþ¢NAQN>ø ¿69a¡< è,ÍþNZÊZzÄ{WÄ:â$+ׯº[ÊÕ þ-^ñ2š'ÕÍÐ
+lZhì/ЀQSÒÜR6W³»NïpAqWÞc &²S5-[3ðQŠbžbùï?nÕ²HìSÒªjzäìøR§Ržé#o¡øèç"ÖûÔ#5Ó3_g/S[a0¶dÒôÌfUþw ö]0·ímÑç٣赵԰f\-Ÿ=oË.}-Qfå-rö4×fI\?~8;¢ö0]
+~ ÔØ¬±ÐŸu¬žj«:N?ÝbIFLÙî0c~=¡Ig¿Wø5â^wç.ýrråWªß§<=úBøî:Œù¯lÁD~
+©ÑBÏfÅÕW§¡ÜçEß;68XàÕѵÅf| à·¯¿"tHÚ:ÑoSÒ OØê-ÞH¬:Ðñ~?YbJCà` V2",Çzÿ"[O¯óÇèÄÇ}ù¹AŸk¯cª µ¡mØØiîýŒ}Ó1€`X~^Xë$:;H${¢«\¥.Ç` 'e`0²ÇŒ?ŠUngûšÄ»cïôKGsÀ®ßßþº\!EŠÁ_á7tê4xplöA«zËî !¬ä¡ÒF÷°Š|OyJOúIÿÖ¯ìbN[¬Ôü¬=kAÜ)$â/(§Žmndö[£¬4Ÿc¬JQV:,ì÷PÊ ×ž6Áô}ð%úëôPàPRÀ©h6H¬º]É?(N6ÛØ(Úá32jjÚ:
+Š+JÑæTëPm&%ݶ Ž®Ú£<}1]¥¶:ßv²`¹lÚô2ã^SæüÔTe[Ä`l1q^Þ±~Žd¡rÓuËKß%õXßðmœ5¶6aRÿÒàпfSinA!r*YÄP¥_×£gê.ÒaVVs(í%ã#bæRß§$®~"n¡"zZTF+ÃÛpoeÿ?F€ŒÀô.ö]
òÐtÚq:l:¬¡ìd1#Øö'ñ˵m §§ñëU]ôúR³)¥%åDC¶í§qfÕvÈ€ìèzÁþí6³á¶±×|Ø/Hø(_äëØø_&$ÆÞ¢µ¡^/ºxéuÊ
+ÉÊMÄ&%+MU%ËÍzu:²¹(DÓ6_PŸQ§ ËúÓ[œ/"Tçv'Ý5û¡]ÞŸ, ÁP$Îq§=|¬`,jÕâf¹=*ÿèd&xá¿ÎšÙGk¬¬èã?ó)ëGô^6g\¯Ú®Z,âl{ÌêjaÉ^`;l>eÞÀAZor$Ò;/+fú÷æ<ÿýÉ»&Ȱ4ýó>ûûsb€o!råÒÑûÛ-ôí W¿Òáªõ\&à¿:橜÷nç7565» zýUH`ªÙ+äU·ñXwpó & ±j.ðÙŠ8j**)YÉæ ä!ÙæÉ¶qê§eÝY<BðR`ÊÙåDzR°-®ðQ¯Y]ö+a2LÿºäÙ*Wöy`¶³«ØöýÖúV©+*µ
ÒØòzøb/!!·5D#(ÞÍ<ÃàÒ<Ü9hQÉȲxžMÚ5¢d.Úl#+Íè/Ûû7s;û7¹úScŒmo]¿R&.ý\ŒÓPß«IPT(èÜ9©ùGyã¢Ò8!1§¬®$ ,9·ã`sgŸîóJ¿œÓKV,»Ï`Ûìëàáeú'Jp_)¢òöÂý`ûÇu)t§gøFP8ÀßÀD;r«qpL)SHm9Å>R㹩þkÑ«>e1rÕm%_YHÂuþ(T!ʺnçòbÓ¶°õÎ1š_!ÏBoù)_Õ?l%D±Oú¢,iw>·4Éé!éMq¥ë:ãäZñðÐ×ÉM1xhÚÇ6Éáž%šDË2K$IýS
+ÙAêå>¢_ÏiÏÓÅB|#+ÖP/äÖÈ.åwS
ÇÂ}=à"Ñ9à2J/åôª²²°0ÚäE,še-QWõ¡ÈqÅEO?%J>ëD¿xá?ÍÂû÷þ·8ÕÏÂýfDl¬¢Ð&éHöIeWûRž=H,9TÀ@%;ëÑU¥Û3 °Šã$[@üí«^dŠ/K(¯9(£#7S
+RW50±%Ö= ÒòbÀ@Ç- {¢~*ÆbÃIñXž^-EÃÑpÕ$\§'ÿ&y$Ä €P&U¯¢
+XÆ;f_NãHÇ7<mgbë#/uÅÇö±+¥abfBWlKÉîcVc°TüùõTÀl|Ñ"¬]0@ŸG¥aÓßãc' ÈCìú2Èž1^Ùô
+rMl*øòœ·_
bì·daHSŒ 8¿±g5È#ÃÕ2lTv×ýç~Lû¶Šµý"ýÏY/pbŽÜz
+'ÂU
+Wª!Z^ä1l\V ή«È,A'vÛûÒFŠñ;]]Õ€h8>äX,ÐÏÚªº?Šú¢¥Ž3¶ðpÿÄßFŸ]OiTÎFÒÛâ®è
+þ»\ñEKÒÀtÖå}ŽœêÍH®&¥ç
@ÈéúKq
+ZÜÉÉp!VKç }(CäbŠâ@\(0.§mâ44Ú»]4î<¶£Zýoù]
¿¢
ËX@^3 Wýe¹óciUËšùée÷ñÏùówX3aõžªbµkç8ð_޵)lê×qnÞb{û(øûÿcþóÔd%øsÑ"47Œ8-ºs~¬&©«sË`Åx»ÿQXŽr×°fŠ^À-·šÄ¯j'hÔÃÚ:òIW»ŸJWg1©
+!(Gé:a UnŽ}²ÿïÑ«ÍÚ£~jËX. ~©4[ÀÌÇ€Ê+£ãiGî\ (.C»šªJÊ®
t3,]ŠžŠÒÚÌ7ð¹?ì/X"kšÖËU'aOÀœç¥ð9Ž5eÿ÷ÞÍH§©Üª¢ÌÐLï6[ä£r63[[ð|~Ū,Ì)FéÿË«°«°«'¶[uL«\P€Ø*3â&)q©kfŠCL°ŒoªÊÍKÛ8W
+¢ÃH{J+ ^¯ïDn^aÙOäþ'߯͹:.Ã"Ôåø_Eu~ÄÅC°ljø[gû+áÞBÊj]¹þGÂK+ÿO ÃwÿIx0©O;4<
LÖª:<&H€ïð&ø¿YäzôrÅå?_SXË)Ž/`"ª7QÙìü;CïÇO'`¯60
+aBî| 9åúP5
+Wð:0ûqÐòq
yûAèÏònué-Ç-Ç·$âÏÜÔðË,záÈôSyGVŠ{P¥XXe³£ºþ÷í^¿Œ²~>n3xÌôSžp)Õrkâß )ÀMC€©éV
+Ìù
+ÔW^ŒbyžÀïwucÚüTÛÓm9ÏŠ¶<ÃåpeI¬%-}Êufàýw»$
G) «hP¥ÝÞ"ò÷ð_SÔ%ð®Tè£,Ãw¿+ ¯Yi<åÈÙêàÏ/bã'ÿ£{òôfËËð»ÿmw®€[صcÛ6ÖmÛ¶:¶ÑYQǶmwì€cvltlultþºýŸ{ïsÎ7îQsÌQ¿ªþÔU×÷¬Ji×<Bóµämí^ßè³X碟swbÙ_x«|ùYGÏaüËÉQç!Ùïö¶izêfµq+Ýo°ÅýN-ag
ËflVlÛPå:ÊPe¢PÄ5á.|=F[Û·ðõPþ)Xènh¹ßBºsDõÕ~:dþ%º6¶ýBèYnBe]u`·º±ögwôQ¡fwMé}bôD2.^@{ò~ë+ñmHJÌPŸ
%ÛJâ²q+
+ôÎÝñ¶Œýk§MÇ×Z>ÕUÙWëÓv¡g¡®iÌÝ®ÄÐ3/éå{WîÝ®«ÐF§7åñàæoûøüªÒx2ü»¥;ÅöŸ€A£oH7|ÜuÃ-ôó>Rýc³3_{Ai`&ÆääNdR+UajÒQ2DgiÜg¿ÞŸ¯F8ujbÕÂ;EMrç-ËŽi>[å 9Jš±RU^~Û\ÿ\S.dŒ(z°þ"e»£ÝDí_Nßë2»Ãìút6{i3ÌEr3Hqn³)Í8þü]3z/©EžÃò36Áåa^0bÚVõ<zÓMæL5Šwuñü>×uñRØÖ±B²Ž4wŽh)áD_|SGpöðoWtim,4"
+îà³%pHô¯±O9EìD&7¬Ê̺š~^¹%ºÏÓªk,À
[|eìäí.CiI¡O?Q"gÂr)Ê®ü8gâþ8«Øw*ê»eÅá
Ôz=ãQÏ~UX¬Ö9 at MÊÐSûªöHZ1ñQŒãçgñ>
+š"Ö{Ÿl5 JÅ×h¥?²S¯µ3e+Ê/¶T40Áq|;³À)²æìxÉæÊ[}ŽwN5Ô|q*»Ì3 PËjÅpÕ0nxÓ?'±|Û<ÚàŠT= ÑCijZ"äÂLÉÍßèåHy5*X
eAà %h±ê¥rIe×lþàÈs=}ÖZXOîýq9yfa Ê ÒêÀ0ÅÊîxOâ!fAáõâ%Wü×Zfk{mêôý?ØMÊE.ÙËå9Á
+Üyk>õíÙ-öFùÃG®ÒGŠ€G-0Lž£qà®IVl#DaùÉÉr³¢
+,2GËà¡â4edæñJá[µsmaãEm)øpÄIjÅÑ/©ÒBsÖÕHÓyXWS¹U;>ù³I0u×é+ÙŠu^53õÔwrÒ·ý}4{ÆÑœ4Âh_"Ó_
+rhóÆ»ðGA²ò:Rÿ¿pb[hAQMŒ3$°ÓÇšÿËV¡¿lþ?lÕìJRS«Ò";è+=.Š2§ëÄÐÔQ¥2d8ûÆó|]!á*4¯Qd&Õd¡)bU%g± JÙ\€ì¡ÖP>c±2šÏº6«X0P-¿Â%h>gÉ@Úþ
+ôu?ÉäJsÜæl
+'ÅÖÏð+8]¢Dn?óH+Ú³II¥<X\ã¬x9íÂnLð5tN$sÒØM®d0X°¹øîösÂ)ñwÆeöàÐÃWO8íÙ2M-=ÀEíxÚ
+_0ú)5¥bwxñè9ç)ǹr¥K§òlø!M)ž8Þ÷ºm+°Yѳ79Û¯bº
+b>·±wë_éäTåNÕ!ŽÀSKÉRð-5ªJuÄÂL ¢8±ì*ômÙ2LÒŽ%EÝJ#ÂXfjUeË!iõ|{x<*û¯3Ó]€Ì+Ù0Eû~I×Uçgœ²9ÊÇ£À¢ÐPw£þÉIú¿Bîªÿèþ~ÝYøŸô4/ßÅoÉ"ÄÆN
+*>§šS`Ežíƺè髟¥÷Çêp~ügHªuÒݬþk¿ðÑËøàrÜœµ_ýRù:]rs<îàÖÑŠ¯yª¹ž¶ÌÑ/+ãú5(7xTÄè<f#2ìØ¬Êsá&Š8ýß_P=þššÔÓüâCãKóŠÖ£¬:6'A+î®×µÂËi!׺P墚Õz8ä0U19ÎæÃ,îÚf}Kã-:~ö2wòó5=%Ž>þÑò®SÃäÍÏB}ùnVÜMÃËÑÊräâåu-CÂk¥#Ú++óoìE¹ÕKeÓ`ÔéÉ6àO%öË.H©<¥¯¶€¹aA1â£Qk¶{WÙ£[Á ÷·_¶*¥°û]rø¡ÓÇ9"úÊC³Waܬ,öAÐÖž|HÌ¡e)KŒ¥Ê°û
+ùI¹~CyX7ûÃ*ü :°0»¡÷XGW«×mš÷ìOúöi©tÍt°f_¡v"ßw¶CjT-«íþ¡¡^øœò@»:5bQ|,>ËR!ä/ú4»ßO=Š2&3'¹µšœÚ0IBg×?ËËæÓ=:yÐëfPþ.+¬1°©Iæ{ü öÔ=#ïsž²äsu
TØoNÕ^²nÁöã YÞ8Ó°®âmºk/ñÂür?œÂ}ýÔMðn\»@m
¹õ`?ÐGmÁe2
+¿æ«zððÓ9
+ÿÓP|ù"Ç'Ÿ8œ:ïš*&.¥ëdî^d±¿x~±"ª|÷
+;í\ÞP°€_÷º0[ÜäcZtN9Cà\Tã9o¯â¬Kn
Ê:
+!$~Žý`AX#'§ºû2F
l{¡÷0yZaw]b·¶Z#4mÀ.dV#,ž&.Ò"r»Ã?úÇŒWd×ÌîT×gÃ}gSôÎñ§ÁÝwí-ÿÿC÷Ê»ö¡ï.4FI#
+âñEÍen.;xÌ$µnJj!ZÂÐ]*#Á/ÛxilîÄÌ$&Dï^µ£q§@s{KŸ¿(8Þ²N
+Ÿ{¡ý(ŽY2`ŒT(JcõC
+y!EH/UŸzÁearèN 4ÕœK!Gnf§8 ž°Bô ].úØÄ·#ª\ M@Aêë³&hÿ
+cVB!êÕeÔ{"rªïx@å1ª:¿lLPXshG}j£ÚG§²ÏU"VŒ;ô:Á373¿(ÀQ®vXÁËPõÉŠææ/ÏÛ-î.yW÷ë7ÁX!÷¬là¬éÀ©
ßeãÕÀÅë
+$Ê(¢2iÜáBÎ4Tò
+XÆ*?ŠÌ{ æ
gµIbogh8±N5¬ÄŸ+ÈœJh/m;õE¬rî¹T§<çX6Þ 48©.±.EÙç-(b°·Dùm#ÊÅ?É ëÒkÐiÂcÝëïtÓñÈbEóFÕðSoܪ|å*}e:ze,z
¡$^5š(*º,Ž(¢-.ãâ:¢Ì2Éè,ï2ãpJ o
+-ä=7ðäÆö°_<<«âwµ-vw±ç£€Ò©n%Òu±}4K1^FŽF:¿¥®p¥Ì@%GÇ
+ ©â±HD$¡ªºóì7Ï!`6,@¹pã~vг£ëbû7f±ÿÅÝêœÔéôÏÆ$Vֲ➟þ¬®}¿MžxI9üoa§,
+!šo¯åB#àW= ræÅè-4NDZ£Bzgw,ÜK*xv)åRÒD!CØ 84.±é$!Ô vpóÕJ$FXndò¬£žXŽ!·Ò,,9§c©iäÒ2PXåu'©,ŠqÈ$^%ÊS!ÀØpé<hÍùFô$MpÈvñ<fuõÐ9=rq ŒÃ=\ÓÂFC0{ q:þøùM>Öª'§Ô»;zywQ-˲UõL^ПzGÝ¡0T¹-KlëÚjÎ *MÞ_Uªÿ¢õ¢\E
+ë°É\è,þ0©ÊŠJàü_Lç ;íºØÀèæ]br¬Añ¶Íô¡&.l`Û!d
+dŒBL~&ð)eýµp0
+_ß;=G~¶Pªeú~ðKol £[ým¿€ušÏÂÆp#k0,I²_XMk±8+à¹S<y_¢ÓSsè yåþBõçšLtÃÏké(&šMQOêØCCÓbbÐÉéN
+T¹/cd7wýÇÎÍþ/%Â]C*9ÏAâÑ<œ=*Œ*Œfœ»OG9Úgéhã®íßÎÝ?o1
+J"¬¯³üy=§ >¿€VÛQÉkŸÈ)uÅpÏríýÁ]aØ«¬¿ÿn4w Œ»?sÊ׎òTb*Ù»9~ykéótîÆs¢#¡ÊlVÙt{:vškÞéœÕ·ð~47m35èýOÁø_E8ÃÙÓËÍ#£÷ØÔVªYzQÄih=ZöŽÞJCEœÛüª¶)uFÃDweœ*I^²oyvdÈNŠ8Æ8? KÍÝYØÂNXññêkQN·bõØZØ[ÖÔÇ
¹l*{PÄZ[ÜLû£CœïCù_ïaÀ|E¥7[ú_ª7þ6ùj×ÕVbNsN}1Ýn4*Mj «]t&3"œœü'²3©3š¹ú1±?®SfCæ
, ÇSCŒõóÚ/6'±&±²¯?/
=КÂrkL¬Lc>ŽicÈOö}\ÅÎBÊm "ã ÜÔñÿãña2L*0*SfžOCÐÔÝ(L²{G)}Põ²2
+õ@8ESQ Z
+¥£ÍȪŠa#Þoœ×H·×.ïÒQ¡ÏíB€+Çû¯Ÿ¿ç¬K©Ê$@44àÑz
+ÉÞ{|Ê.¹µê¶íJS€^+ºÞ7ÓàŽP@@Uê}ßµH£±áæ¹ZK×`W޳ù'>·Ü+úozÄè¥9«Y^'âó¢ìÙN×3>ùr at LÙZQWøU~xÓâ50ì%I§XQ>ª¥CE {Íä˰Ƨ%D?Dëé3aœÝµÊùþE÷ì¯Rÿ[t,S˰w4¶ôÚ ªY8
+¿ûÂA\ÑÄrðpIç9 ¡MaPÑO5^ žJCtU4Êx$ZŒÅY9¹xÌ8Š.é'wÀ =
+
+ÌN*ÙB¢€æG=y»zXÄÞðËÀ~)3ßl9ØñןwŒÓÀsŽz2.î%ÿàm Ñ஢|jà÷(€Õ9P:òðJ,X1ºûIðXöºês[&ý;²õ!ÖÎm+QΪíæ1ªµ"Üõ'¶ºÅ(`â#bRu¥êsª°Á7*Óü ež#ÁsóÆ
+(bR at 5ŸÊæBlEQ:
*÷Ðx£]°#eúrä4²2ÿzǧEà)QWÇ?ŠõED?ãXoŸ¯"_KÔv8é(XC=Yo$V檊"ÛÈpgSÜ=
+¥Zh£ H %.Ã*^ÙšÃæ.eâ§bîŸûÐZD°lžT¿p©îû$±S· i
:8sxÔ¬çZ|ªÎ=J(dÿ\¿ÛŽO£¹KÆ·Å¡ºkÉâúò8Ä
+H1©èa· ä,ð·¹ä±ûá\Õ#R©>ã¶{%)Læ
+d4GØöOìV!9Á$*9à;çXô>Y÷) ðšÈݳX|5ÂÌIY óïï³
+:"ûx@»{³®1yD#ÆI!ÃîÀ{X<7nª?wlËw³ÈÈ
+0²ïN¶>kåÊ£Ó#`Æ#+ð;/Ô\|'ftU)¯/i©g÷ûpüº¹Y1³{sÄÓ/}ÚÌ#*¥SgèÀûm§¿æ;¬ÆHgZpTš*ãXrzýx¬óÿ¥Ó¡¬rBR²584|6]OªßrÞ
+~rÁ]ß°]?žvL>%,ÕÑõÝAeÐáÒ>µ>A#zu`C i¬1|.$»þÉ ©«y(oh.\íK~Cx]6¢$7€ž÷ß§MB±^aj÷SÚANÿ±¥gwú%`.sÚ/ÃgÜ·eÁÏô¿]Ÿ§¿]Ÿ!й}¿ÒgÓzÌà\Œó!cÚA±[óœä"×Úxº("
-,¬ÆóERÄ r>@³3#¯+:Ràã»Ôë ¥DqÄWÚ:$Ö¿¶uŸŸ»WuÇjÂB$Åx€ZïâŸsú|±{X$g¶£_Öª®ÑÑoh5uX*ªAâ{¶Ú,AkÇs5MѱÓÅ\?m/CSî·#çr×BXN~ÞÜœÎö\8šŽ(\i²
]Eæíÿ9¥G7œ!.6TìL8Þq±ao
+-áeìTÆö ù!¯
ñw|#úýêÍisýMKá6>ü@#Wdp®ÿøãnR|2>¥;Ïao2ïßÌÁñ²ôùÝW±¯Õȹ.ãÃ7Éñø¥wžxû¡÷Es
+åðnD.þ÷Z·zñxºz7¢íî¯7µ^_ÏyR#ÓW`ËÑlëq4=:ÎåÁçÃûc(ÏU°HCh¥e8"
+þæÃËõïè
+és€x|äRØQØÉ&sÎgPeôXÁ±ùÊuaÀßM°Ò>&h÷ÇG3G¹EXûq÷Âp,ÑŒÔJgÛ@ªÉå7e\oëûrOWËýœ%TdÍ ëg¹vrlþ(òwÏo«U¹l%¹ÚrD@ê\ÇþÌi»ÍHÃ
+ÞXàžš#ã€eŠ:€µbëCcÀ qïÕ7÷¢jÃR8Ï®ŽUÆ0éLæ$?°IF0®TwÅ(8éÂaþøqæ?®ÌôÃ\TêÇÒ 7áãÊsEæCšM|äþZ_鹚<Ïxb(Ó fýÅNïŒÂ>ð¯¶Ü(ùYÁrJ
+~*2×nêÂ4ZGnvhöa
+hŒÎMÍfx1ätLñ|àO§jBPqr ªdaó"ðxXnH%ÝsÈn ñ$/¢Bn çïþ?;ϯ>z¿KB /pœÜ·Fúnc9Ê}¬µVÁ°âã1~;GI+ݱâsönj·F$ÃûP Î0TlAÉ}íÜ#Ôc2Y;pŽd^EÎ! ÎJ"ð2)jXEt~òй2] ¯yþOëcOX1'¿¬×þÑ"¡¡!9ÚÃè[Ä~³å-dó_[Ox<~uäW]®l0»YÛymbÖ§xP¢ŠóÎlcð
òqqQ_;ÿEh¿~þyöÿãù`¶-ïUBcÍgMn¬`çýSAO±=äÔúç&úlTõTîXÐBÄßáÄ;¶$
+Ú="}ÄÇÈ]R#³à¶=¡í³,º(
+š îl?Ì<×X\þÇ̬BB{hcéx
+ŒÐ&rN &mRþÏÓ5Äã^Ö;ðj]³4t¡a3sÖ' ÅûpõtvOuÊ;OÀ×
+!ú,ú)Û³(ûââçP`ýE汬«²SíÍÃ+EÒxmâ€y¢{»ßeç.¬o|¿±{€ÐQçߊ¢H>åpÈag«¹ÎRäµ±aQí+É
+ô~ít²ïê¡ÎKî³ ÔÐà2ØG{÷-$?ïF õôuqÏgUÝØH>JQ1NMÓåhòT9kívÖhú°é8Dá0
+èWAŒ.'WSj`hdk`ÂÁ7þ(I.p¡ÆAÉèh`@àci©FYÆÃª&©(HñÒ+U*û/Ò°@óÛÃüjÛ³?õ÷,û}wKTîgCåÄÁçsÁ'z¥hÇ·ÓLø@~SŽÕP]R©4ŒJǵÞõA`*aRTB0DA0/FAÀdU=ØpNJUÆŠUÞñ8`XcDDæ|dïge}ÛB
Áæ%)j[Î
+qø[1ÍÝîÞvjq_ýRzq_-ÜO¢æÒéãŸn~®pÈx4±$¯ÈatbânlÙÙ·I%t!'vóç8s¯f];rxçu/e4pü$
Îï ##Ë.ZJýáØÖõãçSÿw-\}C{¥á¿ÔhUw,úV!$ÍÌhUÛèê6ÊTÎ¥eüÿZ»þGªµnàCPÈXé5puzr<MXóºvMæ
ó_ýoË?üDYÛ·€ñSš|èøb¿|é;eîÅT¯`ÑI(±¡
+IÞHE=ÍåíÅU¶K)hð$±N0ÁC4qBß^7:÷ÁôI§d±º€"@àñ+îÒÿHµoú¿¥:¹á]vDyr
+RÈ,K~AÁ²ã¶Ï1Ùå,ËÃ"ÂÊA
+Tã0LQ@</¥ø&xÚ\47#EP#ò#
+ñ(ªýóêØÃb:×|¶²kf[ Í4Õ4UUbôN±§ÜO4Ð×ßÏOdç¹MÜBrR;ç±ÿÉV I£æé.€êrµìBmº,JþYi~*OFÁÙiÌ4ifÕºÝÀà¿?ŒÕmW
ã`lä°HZÏô=oÈ,<Ô{Pù`æÿñMëüä
+ÛpAÄbœŠ»Nà|ëEYñz|¬SQá;Q`/ÇokÖ\,AmÂÞ²à"z¬íµ°Ó÷Ù_÷nOsp¥ ÔŽäPŽÚ¥ýJ§<dCÙ
â,š=øc%-â0G ¡;s -x`¡/eÀÛ mÔâ¯þüûšòÛz3õëžÓLÊLJ/üx94!u¢ÄóòAÄ#[òÄéR;MækOúÂÂ!Ùñ<ìx5åúhõŽtqÕÙYVÝ?ö2ŽÁì-ÎUëcÈ7Þ'h6}ûÚþûš%s|AU}޲SšÛ/]ßÕ¿7|fMèjϺ=Ç?íGscvÜ2Œ NB¬,Ñàc®(ìv¢@ày|køui×ï>Î$ÅÌ@¥JÁGëZ°åMQ+ú
»+R7@×ag<p!9«nl'УÅÓgGªåýÝ)èCݯÝQ#ï+YÍä8ÙÑ]ÿáÎYºèþïAŸ¬º°úo|
+Ëæž5³£~D=ØDMæscg̰³Ï?9Íø¬øzýùâÅJD$NCûyiKW(Ÿo§ê:tílßZÁE*^KÈQÙŠ,ÍïA:-ÒSËu3*o<:Z"XF!³ÒM¢Õ·ö«E¥e`¯$þáwUZF œ}µØ ZÜä,&×}HiçOßÁÅlÈ_ªI~¿ÞîšfBÑ`úù°[&æP1ÃÏ4Ëy÷_ÅÆx¬týS@MÕni¿ŒøtÎ<€Š{îtå
+0*ºRûárÏW÷1?CUyÊ__4ó«¿óÊñ£4ÙÄš HîÖwŒÂ5Ô^±@]ÈÂW ]ÅjÖÛ¶ëÙDõ)
+{ÒyÇvdJººÊ |[äIO.ÿïMç²Mað3,£b²ñ¢'U@'0LvÈè jºGç¢jÎ?có<Á"ß|ܧeµ^^Xo?4c%d¡îoxÝšZÑ5(ÁËW.÷þûŒÛÐð{-ô«¶é[Òúõ=ìõÏøcrMJŒ]ŸÕp&oJtZÎûÝ:0TqžÀϧ0åléeÆX0'rU"EÖ NnäAžv:YÙïª;ÈY¥·9ËFõ¬äìn׊=Áz ÛÞkX4ÛĬå,pæïN±ÆHlW€ÜÌnê§ÊîæSÖúBªYt@LÏR{úò8ÏmxÅÝÐ"°é§®ï.DÈÕ|ø\°P;ýÆþØ®bï[û2ßhY·(⪵xÂÀd®¿>È5Zr53¥ÖS}ÒùºâµZô«Ÿqn°âj!KþªI'pùz(uL×AKÈ3žAù+ÿaûGÎeãÎÍz«¡®oÇï·öòlãÆy¿mt±A5pÚb1K &R`pm.Œ+%/ßGa·
ÍùQ^ÁM¡i̹c¶ëÃf:€ns³4$33Æ¿så9Öéæ©CáT|°Ú.¶Ù`F
+VXàhÖuW)бÉN.«áë5šÒLÂHd¯[ qRtÞÅ+ÅWæÞ@(N«
ŠÒP§ié·mßÃ^¢Üü¹,ú7sÕCà{wéGô¡6L
+š>ß!«3®µ/õAï3ÕBòWejÇÙ"{cßLâtWz.K±moJLÜ-űaŸØ2Õèu4{Ìß-ôj°ÓMêÙFC,³5××ú¯}ÎÝ#æ²ÃZÔª·K¹Ä²U«Ê)RhÅ£®IÕZÃáE®:œ÷TÇOK:ñb uóa{JV>êi°Òò×!¶Íæì> <¥jüRšúaÒ éÓ<ê7ÿ5ejNîß%÷Öö}šØC .CB×ü³9ÉPa} Ra<'e¶²#wü]CËAý}šŽî;V+Ö²ÛBdw~¹$¡DÀFV@·~¹u~€ñÇú
+$®4/œón "ªhg€ý¹Å;ôièkü(ÍeާcCNש*bŒhqOŠgYœÍâÔÔ\$n^¬jÝ
+á )Äеs¬&°Š×{l9Ï3:@,Z³-ûøj_ÐDÉEAKª$· pòQšX€û8Å,h,ë·dÙÆ×þ\²clŒ
+ÔãûÃûÓ ú
+$MÖ <Qµë
ßÑëèÎ3-HÿGÝáöbºj]ÅjÑb¢N2óo!=oÛ^â=`é.^Yqækÿ2ì~)·²L¡puøi}~×°IM[eS¿_\qÒ¥[ûÌ®Pø/¢ïbZä4ŠX5[~¡Ûý¶oÛŸ¬ïgÃÛw¯®ÞàõK®q®¡¡JÜÙÀ$ÑÙå鬿ÉË+g¿NcÊT;°G4£3>ž1ßû<Þl¿Üñ
+9 Ü|}¢bÊ%ÐG¥Æ£÷E¥[üÊ{»d|ÉËÓLŒÜºT¡Ø NïRÂŒîûŒÖ>ðæÑ/ã~ÌêèÅÿâú
ÕGèýúõÍ4j·m³¡æži}ªÊTx+ðªOêú¢7Ÿi,Hx>ÂBžó#³»;O©P+Ðï+3ì39c¶3 þ®Å¶pŽòûªünõ`0{¢*÷w®ïCiÞqâÃp1Þ-:Éu³;rK)µãgCÈ-áî)"¡Y~&âU5UK"zQSu<Ckuéz?ßîÎ÷Ý·Ï&mJý·µÄÛ²ßÚu6éÓEž»Ôš{âѵìZRI,yÏ?SÇØa'õ0ŒêšUÌZïLô?Ãòtرü*+c ~p+^ù)oº{Í©1W@30:åš<ïŠlÑ.)¥ù~ù0ïQúC]>£¡ßõ Úå¬u+¹Œñ úOÜEå`ÈÓ«&-¡&%jŒ\óœ|ôò\Íýþ¿{âyO
+ñîç¥>Ù [ÃM,ñ=û a׊Å-ÜÍÇ9ªŒÞJ5¶àí<ÿÔŒµSðÍÛÎ&ÙOê9§/fôœ1¬ð0Ÿ®c4"?âç¯ðÔ±Äß»
©Iß ì©<$Š·ºÁ\êÔÑaÅC${íšÙ§RìaÎ"Bñüj~Aöoÿ&ßöoxªÕ±§ÄXáÓ@:§ifÿÔ³i0÷2m"_åc4üÀNÔvy€FuóšÛ;×Ìñ_Æîº«Ôv±®üîÊbå\HûPßëÏ)g2TÌ Üš4UȰýªyJ;Ù}ècû°xdí&j_Ôº$Í
¿ù°š
ž`ï:Û
7¥ªÇË,µ?lMrŽf3=w®(7¿æiLU»H'={€ô({{tûò«*Ú ä0Ãå{Tô
+wrt éqNo:Wæ¿ý+EVoñÁ&pG²x?¶ÿª8>]l«·Ì3!ÜHðþg¡6j·õIË
+ŒuS f¶%K¯ùx¡Bš©žºÌxd®N°|¹Là×ÂåñL`ìZ°ùf0ñÛrÚQ·
+hV~8-;C?/V!&2ì@².ÛòiÏSjKðMÎ
+ò#š
_ðÊ0r£ªeôµSÈXýÀÑâÂÑv__Á€`#6mOËXÆn(Drq*ú§V;v1~dÍÄbdÕ]#fåç8¬k²®iB9þR⵱ƻk£GŸ
+OíPf\}Ÿ¬ðë;ÂÆ3÷¬íä,ÉÔü 4. ÕîK·Ô2xòêútMBñFÛ5QÃ%²ßfø+éÙõp¹ó?¹^(s`8ìkÄÀCiÒŠBºÆf=ñ&»ö$q£àjqÁœÖÑÜaOÖkÀ4qš.EDð#u©@PJÿÑÎ1aÈâ*ãþ@AÚnOÖ|¥1(V°èQâ¥;JVWìS.iy¿]}9gf,:]²mú;>¯n@ÅTâ
+µ!8ò¡«²+ÝÆLbQµÇøOºÖsºnæo¹îtŲß"€'²áæŸæìÝõ$Ûk=MÜ}ã®Þ繯%ìÔštR=Z]ËÝ9×K±=mO߀ü=4ÞipPØ)ò%Öžiº2N3ÏÒw!Iŧ¿àÎ]ÍÑa@¡B%-k:¡Ã[BWYŽšçáõd/öÖyÌcÀáLõ[ºCSïâÁ~KðÝÈÈš©Œ@ìá,ªTt&B*NUr¿>tvjøÄœª*ÁÏš>¢¥uÆoGò?N<V³¿]-'À×NÈìß^š
+[DM`¥Ô
+ÊÚ\2÷Ø,P3MaÄ1¬;°ÚUÕW
+îÍ$«/»+ÏÝΜ¢Î°Wèkµ
+êÚ\ºoÍØdžñL~º*€fÙ€û¹òj»Š©ób±
+`Ȱ{-š8 4.rÉ_íš|m×xçSNǺnª,KKö¹ìð\e»¡4²ÑÚÙÜ |h@ªÛ.ÑÈU[Qfz{a P; <ª¡mÕ¡÷\PUŠ©Ð£W¢®tŽnâ§7M%÷€ FÐþléüû`Q+Áx_·ÐŸ&PÙE£lw!SßÖé£~WSRùO(>nY³-ÊÚË»o·-Ñ
v6¶ß *Sÿ%Æù¶vöÒØlù×°^ÌòÖ]åuÙs<â#$þ!â=ZHËMmu¬šêRºè#tÊO>ÿÃgº¿|~8'ÕÇ9çG÷¥ÖÂ/Ç¡wZQ¹)µº6ôQi=×Ù®Ï;|¿[Iñëx9ßï\}iëY{Ük#Ù t17.*¡î¶üÒpŠ»ØÖÛ&ÐĶ|±¯|J$Z»7îLbÂ!QeLá@]w?»ó'»RtÒÜõšFdn¹mKf>Æm:^@a.ÃûRÅüdë*ÔMþtNòÿø9¬'4š*µÉŸõ&
+[éô¿øL.û>ß9TwÙgu-Å$>lzõÜý!3'pŠJw.;Þ5
5à¶§«L€ÍR ïÚòÊìàÿ$ï~ïÖÌÍ?äfô\éró¢¬1`Ð}m5!·d.gÖd:d⺞').^¹&»î-G01§¢<²i20l*õb<§1öe~^vǯ5[³/ ¥³ÓÂLT|×öT2l¹#VœÊ·Àõ4õ>ŒôHz#OŠ9|îä*Ñda×â͹/pÍé=È8uéYâÉiû¯ÛE~±ÝÛgXß{÷£=_U®c×¥Éiôsce|ÿÊâ:×€BsW'ÂP¯-dzvIvæ^T?Æ«ðÒA
+g,ß;ößÀx®|$Ç\_zãòßÙs'òg>ŸeäùA:ÎXáûÉÛ`R³ýðŸßc¿²_oÐChðÀ+eôVmÖytµ_:RmÊÈ<
+:Tî>-ÁúnH¥yItÿp.>m·¹óÓèvfZÒÐÁ6 at wþ÷tÙºÛŒö6ªÑÚ€¥ýw{KF]¯&µÃUÝ oEžuB/{KnJÕ#qÏv»ã6æ{µLº5À&Ù8q&-tW\ÌJâ
+ŽeH
+ÇÈ"2ôõ +£ö
+wcÒëÀºiÕBN^ÇŸðr¥z~n&w[Q*2©óï.§üIyøz:eæwûGÔQû/oïKÃÜHwMÈùîÑ׿»kÅF2üº*0µGÏ|AÄýÒ¡Æ ržJbIè{ H°ÇÇxâEåÒzý3Éâwu;¯µÝ©F×Àc#eaÖ)ÄmÔS³oÍçÏvß_nÓýÿOnµÈá«åTéG±¥w@׬
+¬œ@š+(pÎh)ÙîLã(ê~|TòÁacµ&pË·±ÊüÚXHöäM¹S<`Xç>-Èç B¢{O%Æ\0xÆ:s«Á%Ñ(:kütŠVühyR늧"sdÌ:UáKª¬±®9ÌäW5hÅæ^×ÛñL:Ú
+€`G»'Ê£©GuvH`š{:·IÕ¢ÍÆñîiû:¥&l®¹µø {+ZµZ®8Õ+*¢><æwXǹ?Ž©D®PÃN<|âÊ&JÛŽ¥nbëg}#tü6WÎæèÞD®Uîà¿¢=8VFÆ6YÑÏœCÛ>0lßãm
+Õ;'³ùùJœæÑHO>A®ÀîÒ|o?f,W$Ô7ºŽŒa;Îq
¶ñâÚÇï[|%bÙcvj.Q²#RgQ¥kÞrXÊ
+Ù
FÝ'ÔoÔÖSbôµLÍWÍ/ìjyHxÁýw¬~ä2 žª°xFêÅJSô1Ÿ§ìÕkmË
+ÌÈ
+,bcÀR9_#°lÙ(Ã1÷·3<lkc/±Ä Ö×¥-ì;¿Íð;"Þ.+@ØGº©GoÄæôtj×ÒÂZÆCM:\CF±Óhá
œkü¢ëà·š¡ Úc«ckκËÿª÷ÿáâ1ÇWC dqh¿)¥
+®cZëØÆ6úTbâ&ú÷Â~Y€çrÒ¬ÈÐ×Xº0Ò=0uüÖÔÑŒôºRâôöiûö×AÛÛVF^=huùMÞgw+I>V_î÷ìø¡ÞLC4Æ%âqÐ1Ìð-ò@0ÞWúó:B!QþU~sÝ(ª.ì8)jÇZæ³Æõ¯Ó.n§Ró±x²{9ÎÓËÄAGiš`&pßWûŸéÀQ>Q(J.%úXª
q¶p]ªšo¢Ëê¥ú0i/D·Lar$uüz{î*LÂdMBíŠ[/_*ß)slBA=ÀO"þ¹MÉ4KÀÌÁ«
+ÉN6æ o2ÖÇÿO~
+!-i+3ÏýjþtiñO®O+ÿ\Ê£Ïûï8TÙ&ŽHÄ¥*P68:/$«òtæŸòAS\,ØWA¡ž?Ãún}Õãmè;öKÞ>ýtÅôѹŸ@í_£ÕŸåböbAUÁ!ßñ ³7â×lºmàl¡²M±(ÁÚ8;6ªýê^aûþžôîçOæ <Ÿ©A4& ìX#ê
+
+Êaq7ÌŠ>³53*ôEF^iìÒ8Ž¡îÛÙ?ZBŽÃðO54°'ÚOÓÌ3å€FùXßÒâ~ÿ¥õºÙþª`çÿ5*øªœV]%ý1NfÙïóæÞ|¡ÕÇï<Ä»á" 3ý³êŸ"€%jXÊKÅü_^&ç!<SH![£&®³9³©8R0.H¶×a€³
+µÀÕû Sbà¬ÇãÓïãÊðý9¡ÑÎËùÞÛÌLò:®7ûÌ¥[Pï»øGjÏ/ÊTfÛ^loá÷oe/éc>Öó«=VæÇoí2*ΟÍ
+m©ä±ßv"Å¥4\ÖŠcÊraV°%äæ~y.šDv*z1ÉCFSÂAU=Ñbó»ÑPglI}ÖÖ¯OêÂßN¿üÒ6câµYÎ*ïÜÐzGŠÖïšò!
`QXaí-¢$,e'ÅÏd6Œµqï|O=I!.ºeŽÔøU¯¿°@ûóg*õ*o>²(ÙõÎà£|ýMÞ·m×8Ó¹©:ØeAÅüèoì¯EÞÅ4aŸbâþBnŒEÛŠºM:Éìê9ôvû«×rÏ)<C)'X¶rùÜô0(¯=n{=V¿J®e]"°Yî|Õ)¢0$CÕ¢i/1èûWPBœHÔ£x×>¯i"í«²?13Pî
+€ãQèzëCú°ÅJ J}:û¹~òï{Bœ}÷¯Vñ+Y³UmÇu¿ûU~å2`µ9GŠÌa3¥º;ê?K:U¿÷#7_QÁÿF¶«}6"ØÆH|çÙÚÁ8;Æö©{VõUbaT\pr©;¡
+âUWû^K€|n TŒŒVìuU(¯5äDi€w9ÎÌxR
+ÝÝ\CDA}é±¢³COïÞü©íÀ8<CüëÛž§þ#ïhob2¿íeEGñQÜZ0BÆ.ÚsCi~Ðr8*KûWŽàÍ@:opý
+hxÒŸ7ªE¯:áÚB0Κ'IŒÁmúÏ
+#<mzô±Ê4ì*aàòf úÂÙfyA³í©&Æ`^5)âÉRoËãõ¹NRdæ¿Æ3§õMŽ\e4
+Æ8÷y:]èd[ñìÊSà·ByÒjáIqûútdáÉv2åkªtPsžT#€BSå5Ns{ªùéj
+«=LhÒ\ZÞºXUµŸíØÍ·€©¿X(ð~º6ÂÈÙR®©÷\<åºÄ:$ÂJVÁrµ-9^K+Q Í€¶Ÿœ]q 5ïÙP«Üø'oÍD(#ê-x~&çÙ¶hë3,E¢fa¿sYÕvV¥l¶yÐ
Ÿ[
+ÛþŠ©ÇåÁ·'À8ÜqgïãA
+#ÂÀt×=SN÷"ÒÍú;á"ºW¯ð¬4§ûÅ`ÈÿízÂ~çE_ã:T÷|~&|ë5¡Âú»& 9Õ{šxJjÌßm6§.§ê$wö)ö(¡žjË©&*àŒVg]
+ö ì 9{Ç\ª5ñf©hœ»»ë:2J¬è°Ó¬å<tmçU_Ã}òÌôo²
©Ç÷vPW_}uðôÔ1ÉÃÔ*vf}æŒÀGÊë¯×¬¹?I¢û>TpÆé°åÐ@§õAÇ€fPÒ.ãžG1,
ܧ(Åm nÔœÎçÂ[ßX÷êÔZ;XÅŠÇÑfšÕ1hh7uÞ:fËç¶
×i¶|dGgU+önb»rß}¶a]¹ï¡Ý»mo°âdÒ(DÖžéäe9®{3>VG
+€B8#Ð}_ISx,Ü¡ñgERÞ;
+×îí{¡µàvXÐEåPñå\!êük»GosåÔC©¢Ð>Æjª8:r~Rþl°¥ÈNHh»ö¯ú²D{z±(š£;ÃèRžVûÝŽ5áP?€áÏM@"uŒÂÃØö!Ý©Ê >íðCDäÔtKSš°·cZGlÛ^û¹JÆJÆÊy}ŸÇ/õ>|Ì#~ð![£x·%8e^éÿd3Œ8IwDÒRaDäßÜ1·ŠÂ4ŠWŽ(¶ç~øïŽÄÖÚÎøDUÒîÊŸ.iã=zØÛÿ>±J±ö¡õêÅàÎ>TZj<Ç~.Éy*á6¥jDÏnáVÄÛ@Žw#q³¬OÛª/ w°¹>ÇóqÛ®
+B¥hî~§/uëâþ€ðÛÛóŠF¬§'ÇÈïuÿ{«@gë,)êÉÍ¥xô5äâ85v{QÁÕtdEåATž8й6ßçuuõ»gÓS·ÁjĶwÌþ;èºgÔJX0D>>m1TÕêùΡºhšÛÒ¹«hçÇg{RuxÈj¬&[-L3ôÎÏÂ(vñµz7?3ÚKמ<+uÅ×ÇÒï¢WïNÃWqÕcz/Œ9yó7Ùÿø-ñK8 ÛÆl³1ZšÿÂtÁÔñ¿kår\
\<ÎYúÍqÂ^OnHø+^ì€ÏbWKíyÓn1ÑÊ-d@ŽE»Ë
+¶Ç§)ŠÞ/ï3/Çgc«ß³kœýê¶ÿ¢ÙF]Æo»ÉÍ»Uê]§àÉëÆZÝ˱ÊL
*q#¿åAÃÊ I÷á>\öŽ}êhÇ6µÔÇzÿ4RF6k±KŠFGÛfKÒ;}¯§
š¯Dž]ßÏzœôG¯àŠv°²ãxe5ÙR Gì¶óh_š®e#dg=ñSGeܪҥhŽ-ýdŸwî¿£êîöÜŠÎýŒ#fÐêX_|r÷0ûhûÈiDfrìJuïkžœßÿqpÝÿrðζº&hÿ€¯qÔ&i~WFjãîÄw6Ž*CÕªšµØÜf8°ŠðÎ[·v¶ïÌó1
hQXhõÎù9kŒÚ.ÊàÍØØG*ÝWÕT[ÑWšÈºÂka
+GŒ]z*RÊå¹lhÜ÷Z¬6Hâ?Ƕ&µí@"ü
åÕô)<r'ÎzîÊÎ:WI£ž*yúZÌ-¿µw4m"ö±
t°Íî±gw|㟱d>ús÷ »2UÖ ÔZº^S\ä:fÚ è=D-š*ž:ÜÕ¡s7nÚ©[94j8Â¥œ>ä=±Xó;øf$û
Í&i{>{ô^F·CrûpÇüî>t@Â^bôªF%§êÏ{§5ù²YþèÖhÂAÏ_ÌLÐï_íšB^×cÁÊ$ŸÞ³;êrÏŒtÎÌA&:Ô«[¯9zá/Ð1&5àFšŽHª±Ç-k£1§«,a<üá8òÉZµ¿VCÚà!¶Ä-pºNýúÌÞDç±Ã»ÓDÅvP!úmÐ4¡÷×4F룣Ê\
+ú%Ö .y±'ÉSЪ¥ûòAÛY,L-mtô;6Ⱥð¿wdx9ËD°{C*ð=!õ!Ù³ Rw=!sTÞ0øQBF§cŽí»v²×,UäO ým»É ,|iwãúLëÙwCÈÍ6šÑP3QQã
+D¿¿CòúÚÆÎÄLE+ÓÐhÿ±lw;§YèìíǰÑà EܱE9{ŒÅ~Ê#jvahNÊ^#æëujjìfŠŒötáXb®B?þõJP]%ÁõôTPwͰg0*ußþÀzkä<r4¬Á9SŽ'*"7JÛºÎÞ5/a¹I4UE÷ ±3]4;Àôóúab_¿Šò³*ó q4ýsqU;Bies¶5ôL×ß³L,)Q|ãøn .ÑÖR°*GÌ ä6¿(ßÍ!SRHl¿
+x ,EŸ\z·R{¥
+ÿVLc|ë.Ôé§á·ÄyOnÖÜâ9¯Œ8D\ŠzŸ[\ifñLEi1dnÄ*{zöVÇcNéãË¢~5Ëé:xNPXUÀR"¡dX3~*Òh4Iw(v3ò~HxæQ¢œ¯øÀzôŽ»7h}¯ëHu¯a|Ò-s0Ñ9žÿ+ üêÙÏ(¯®Ø])s xËÞòÅá|ÿñeN§Ûåô¿'äj1Õ¹ò¥ZÔ[¿ZGè),.Ô,€¿{â20éÔ·»ôï
+CG#ŠîÏt׳VQeð^Š^µø)¹Ýýhú'øèKÕ`5öhÍ)©æýÿÑñÑu.j÷wl[m«QcÛ¶Õ€IVlÛ¶m5¶ÕÆvF+vò¶Ýûì}ÎÿÜc}º?¬µ~æÝÊt)v9ÜZxj
+þ`¹PÕXqŒU"±¬jÕ'è²!a&?¬ùŸÀOõGßù îÄÈ8ºiι*WÂó&'>W1·-¹[Fvqq·O3ɵÌ|ÓÒA/ÚG)5£ÒõðpéÔBÓöÚÚ=ôÃýÃ<LFf·i§Zå7G¹tKÍk3ÅvzWkö3tCº!ü54Û¬fiÌ©F#ÂJüʵIN+«8ÞÖg¬@íÕú§Ûª9žú«Y5AÂíWªtŒqí«²ŸBüR,ŽÀ,x++DN²h{"ÇšÃDðÃ2
+œýß*Ô%HcÛ?0]aïÙÔ{±£«e*ÕÀÓa(þzB=òriHà NÀïÚv]êR6m꣌O2i pOÛkAŽ55Ý#'P+ò²hBp1x/°yLÒÙꊶYC«C:®Él³ßصùkÚ¶ýØì¶é×J
+% QÙÛ ã ñ`EÒ)êUð@Í
+X ñý»õeká_wkÈJK"ÁÍøQAÑFätºkU>>K ÓªÖÃ{>OO¯#˹mæDÈž«.¿4=ïÉM}
Râ̪;õþöàýÏŒd"]Öãõ€s,O=¹Óȵúú/nWFè£nÝÒ@ÇZØÂèÕÏ
+IdÞ¬]oO|§
+Š6bNœ^Ì®SWJ.ŽžV×,À|téõMVÝÿÙÃÔ¬ ix€} ]
®Q+ÞûÃëªÙÒ3Ã
+š]tYümÓx7:m¡13ê£zöS¹kO"íÊj ®\Ôö.¥<
+:NÁ$ªFü!ùßÀ&ò8ñwÕ(0.ªë24²Í"5þÞgþ³5·©=TÆxdH¯Å4ÂÚ Œé>@aý`{±vÃKËØe¬ØÃÞ[÷×n÷7ÌbM¢{}$z
+ßQ~(€(CdÄø)6# ÷4õÙ1W"yèêùS«3ÕÆ5\÷÷|+GA3á"áënR¶ÖãU¢ñ<,?œ©ŒgîŽvwQhøùõTxË€£ÐcÍn¢v=ÞÓ·yø¡¡
RtWÆet¢mhE%zêÂé æH>ãHÏÉÕ7eØ#Ùõ¶Ã:š7ØÙ!Ž4_T#Æ$@t5û·rÒ*=mÀì5?ªå»AÝd¥ÂÓUä»ãqП©U«äèÉdú66vîÕµÍÂÒÙë Ôâ(óISÏ]ù·*ÃïÀùpô"ôb1§Áë{
+ì-æÉß§j b.yØ<ëûyi«<~èªÚÏ2X7`3ï9>uvÇÞ[ÈÇ{m»Ï¯|óûùÈîeÇDäT
çŸaP7Û&°U ë)ð;ô{qñ2zæ4Öå7ævÕœTê(Hä&!í»óÀVM ÷·SSéda3;Z®ãmÿd²CYû0xû"PÔþ~WÞ£Zífž*ú®gü4Msüçjðf¡îêb`Â]eæbÞ¡º
+íœ'LPHj|oÞ"]GzÈ$c¿D8UlD,-¡¥ù3fé}!ÛÏ¡®äÔQî!(jó)òEo»>ïúùºéÊí,¯ã2Öþ²áº,?€àÍ`XËK°ž\UZ&ŠòL&}¢rŽQ[NêQÙlWÛš÷ãe±z¥ÉãeÍâÁJhÁ®cL`ÍCú~/-3gâc_×ðêØU
+:uâÔÊzU¹TžŸ¢9cZ%Æ68œñ8zºi%hxÓÌm!n[¿¬@š!£
+ð©â~J'¶ [çz8ÐzõÏÄnõxXÖEŽô³
+ªÕ®
+) géêÀQjþ²ŠOPÚÂ&š^X2(TØŠè«ÓC©Ðõ\öú6,ɲñ8ªŠOÏd8€òSÊàïeÊ"o5Ê׺E»á¢Ž#ª8ÊuT©œ]-p mòC×»c«ëãÈFwVyÞBx.ÂKb¡š ñC÷Rø»Íy?w²ÌóÁSwrKþÉædº%õX]ÛæÂ°cDLUî8c×S`Œ&-²? -y¶nw?ŠJòQŒ\Üëc±
+ÀÔµÕd¬!ícÑÄé¶X$ådÌß4"ñº;Vï÷Bôœ¢ÉÃTëÁ ŽSÖöFîŸôäÒ rÜ~O3K'NÃ1tÑËo=Y
+©AÔÃÿÊùÅîÇ*pvu
+Xxè NCºáGCâ×@kí*s ú&²Á-B]dz¹E¢À!)°_Td£&eЯ6LxýÁ
°µB÷¹Mj!Nd ùó`PfC¬ðÀ&Þ-@¡<tLþ{ÛX¿Š©g( ¹d¶M,rMiÈ[5+¡ÊÆ ý:WAô1!?Ïuœj!/RHÑþ× d-ZÉž^Z¬}ËÕËd°³¿:º%úÄ8&-LǺWrb[ÎxâÇë×j(|e/Ü{ìoômf`ËðõÂýFÒýè&ÔFb
+z1å\%ãåZ;Ç)a-IZ©6-_ý÷ì#VŸµD4A{=÷&n 8ÌÎ÷jÔŸ[šè¯W=áQk
+)ù»äBSÁÁÆjè°;*Ä¢ÂÈBpã[£Üñ¥,*PUêøšº|gKªç
+òÉÝ+ÞÅ^³F¯mëyçj8ùŸ /üª²éª±¬gäŒñëáÁ_oUfÒ¿lUIÿ¥g¥áÓrý:Ëòú 0WŸØÄÉÐçÙoþ|\gNOñࢬŸÙ Zó'&ìŸT9ØÉñYr³þ*4·ÿaýYÖú_?/»R[7Æ!sØGðª`Ï@ß5=÷u<C³ãܺI¶ÒF8_ÄdÇc÷NàEß[u]®pp^M
+ÙÀa^Iûža€Î],ºGµÖ¶$-bî[k#ít{Ö»»µ;\ð<E»CµmÄ>Âv×ÝóFTöh»^°3š³Ä¯?±J뿪ÊרŨ šÂb
ÊÑOºœjþ$!gÔÕ^·;bsãtžQŠBéç·XìVL¿|ÕÃüD¶F]ìÀÙ}ÓÂÛPµóÁ$,ôNÛAO#œÃ²zÝ% »7«7Ïß])M©uÔ<ºÅxíûBYåØ¿µÑ!)äŸkþf\Ua%³&ÁæFpÓAN{mGp¶ü
+²%)JϯÓíò xµÛÜz{{X
+óö Oéú Ä4ìÆŒ²áLÇ!I[Í)öÒÞŒê)QD,lò©éÕóïsô¡·MþhKŸShÎA)æV£ šæá¶Ÿx*Ý@;HÄtùïÑe¡m)õ{¥ï˲ŽíRÌã^3ª6§e07õŒ<Öu}
qäl(p:ÙÿqœkŽ1öÂühë+úã¿«yä×>;xƪËÁÈ¡|g<_NïðŒxzûζ Ú]Á#ÑIÕmû[2µ{ÚÄña5hVÇ5ýü¯:ÂwÍåù÷œÿÉÇ5vïÃcÌñ>ó$/Œ> =p8S# gîP[ªb gžåŸêSF1CÞ2¡<Ñâo§s}Ÿ9êa³Èªúë¯cÈ5*D}Âeh€FãDÁ»óÛ£ÓÝeÉ¥ÍEöý¯OcCiëŸ*ÓeûT1ÅÅKor{z@8n9·4²¬È\GÈèWyÐtÉ3ü=Ó©,ÓœžÕêà¡låÐÈyá,W ºNtÕóêþÿšÖÛãó¹sÈÑ;AÖáw
q£ŽªËï=ùÁÞ£œØ:±ÓÛ $ªå8U:*tÕÌIÛm¿;À÷:@ùÉMº¡ÅB'[7Âß+qß}ÉÐWG®/
+åYF·
ũìû/ç`x=K4 ^`|/ _=íÇÁaóÆÿZžaBgA}&ºW£+MøW¹í8-0NŸ9ž~8ävË";*¿(/K®žÅj}Kü,;ÿG4á*qžšóâsØO5DB9Ô SÛe<¥*Y
+ØW4¿ŽìôxýgocšM>ánXþÁF%ÞrÃ3Žd(¯œGP©J6LtÆtZÉP:ù{ ôª¬VðÍÖ=¥Ÿª¶>µ6!£êË˺a6Ü¥#¶TŽ¿ä5áéÇ÷è!Ôí$ ív²ºõ»)m!\_9><ÏV§¶Ó©£XkQŒâ.~Q®-~Óåð³})mŽùBÈÑ·i.xaß^Lø
+[ok°(^º²ãZÑ=~µIšn~µÙ.]5n(ÚšNæíeX{ú_IZµ>×€¡
+ª=îñ"LN?ĺFwPè>]Üpa_BD!kï]müÕRwsì&÷Ì$ž©z:XÌLõ?iëÌ£ŒŒÌCÓ¹7ððÞœÆ DȰÔ|/3a#ÌŒ\1'dçaÙÆÄÚÑ/·||mMŒUEBŒêÙaÏg±€ZߎvÇï3ËFëVÊ+ŠAjšSq<eÒFÖ/RËÌt'<w
+ËrJàhÍ8ýƧÖßgx&³úàNÏóÉÁ:ü:òhÂ#ª¯£%RE`»öLykfolA§T%Q,T^êé[Y?Nºq»RA
+ñ9M2í׿qswÏçajÇ^ì
Uoþ^Ö²ãm-)¶[ï=f}ÐælÄŒÈÓ(0tRuÆWtþ9iþüšý"fš»prJ̰êØÙñ&5ží ±8B
+€W)ë±.¢ÝxÚ'¶6ÍWŒï§|rÀ³XÑfÏO«±öRAáLäÒNÅÎ>² œ€È B|ióÕ"ÌÃç®Ë@×Ù÷ÜìK§¯ª ÊØþùxSEfd¹f±i4
5±rs0}s~Õ6±ÇÛÁWzvµíF>¥Ì-ÃhXýPÉ|?¹®H%èùÝV€'Ã\ê{X;§\ed?ª
+5§õxÂôb)xgözìgÞ£fí1zw>æ¶-XøÐÒ$#jnäì~)¶4תóYèCÉ}uÃh4ýÆ;REÁŠðqŽp"!øø 4~nÑ:E1þPÕ Ðp!Ü&: 3Ãu®`Ôùë_?úû~q«nûH²åâÆ{9ÙÍÆG¿Î=]Å`dJ¶séË'Èyþ».øôrUàKK`8¡|ýÃýÿ|3Ç ÚÖmKöŸ<жÇyÓ³%w.U±°œóILÊ4§ë}Aú8äÉ42h£NsEŠìî>¿A§õ~UÙè&ê³ÆQñŽv-/{ £?¯.¯€Ãwë߯öW?·éñÙËКf6eÕKaÉŸV,¢9Å€ÛIh-ò(ï0ÓlÈ3LÝàüTvª0ô®(Åqµ÷ÆOšæšc`6±^oÉ÷2"ï²ì/t³§RšDÃ;ÎófÆ}Ué/Ö@
+óŠgÆ^í"ÝßË1Ÿ=}iÖ5Þ !üÊ}矬øÑ/Mø8;T«F¿ÐÀCç¥
+ òxË4[P>'@©ÅrD@§ðÕÝìËè³&ËjÚ€ØÀŠýìb]lHbû·æ»pÆ7³Ü¥K°vh/µz8:RÊ\!Œ³k²þ©êQ|ÛyWLcK§#:8A+$cø«U^"#ëÈåH8ÁŸa(¿àŸ2ãDNYØmóé©uÿÎZÀ11Å©AŸ¯Ë¡Z7lßµ§õãd±OøÉgŒã,Ÿ|iL+¯÷PbÇŠ,¹Œ¬B0õš3/÷_ìçù[9väòïIf?(v;YD¡íáO5ïiÒ²Ôë9c7rGR·áÉŠ:\ðC± é÷šPší®¬JÑvA}å§áÒëÕÁñ×ÓÎíãSïÏÑî¬{pØJG"ÁÍüYAC°Oòb
+º7ÆJ
ĵc_cY+Ñ[ØÎ]@»èÚºUö]ðάùðûëL/³ûí¶*¹ûZ¢œð€ÊÖdœ!ØZŠB$\ÿ3âþÞûûü5M4E¿5ÇkT`>ºUúÏ&wÆÖÌ®Qmëý·ªè€|fÇ3è+£«ö*lÉ€f>òñ£&u±»Ç»ÕÙïÍÂ"Rß÷Ú@±5bŠâ
ÕfÞŽôb¯ÅØw6í×$\Î×q §8³c
mDïrì:Ì$z!=pÌ>B=RWK
+;enÉÖ@ÙœÆÇžJ<ÎnªÈÞd6©gpEõñ<>ÆwäèëÉêžjÄÀT2é@õ}¬õd¬cpÏÿã#ñN2;³1ÐLIS¥LºÀkþúnñ7êþA=DcÂj5,Ò_š/ýZÛúpÏ·B¬!"±ž,;ë¿ôQ}ÒýËûÈÔçFoõ*îAqZO )`çžÌ~w1ã¯of:bwíO!¿:*ùd+È<Cênd/ïýâŒä>°ä_ù§M;f«Ã]#·/%?£?4LÑný¢1xo%G²IÓ³Æ=íþÁ
Þ\%Aî¯Ï-¡À)ÁM£kZÉYvÿ^Û[à8¿?Ã$
+?oúºZÔ0 ÷RàŸIiŠ(õëïÖà-Ò3Œ~É îùLzöÉAñjûšÊÅÚ©Ùr²gâŽK±[Ú+ÍÆ3_)©õn|hò3˳
+ êÁÿ~íñÔçjâdå#XÔX,tX{|û¹Ì]h
+ÜOÑŠ£Žœ>(6d' AÞL¹œ·§EòXžP8ÕŒhpSû(8à85*zíøÑ¹AU]ªŒÛf¡;²·$»d³
+[_ŒE ÎÎ(ºnŸl>d©Ð*œÿ3®0fIÏ.ü©m"d*| "RQï7Ç=DéÊK!ûÅ€ÑÏÍ*ÒhyŽöaʯ\7ÐBdÔJ,`ö:UãÓª}Â8Ùæ®å"Úgó8,
cux,Ì%,ÂÚwC8ÉÊNÌñDÅ»)ÌMUc5ã¶:KvDdý"0CÌËC«°¬î@Û
+*zÊVzmŠŽ¥gqBóåsú¿ÊgÞþÃIâãõ°5êduL:RvËÉp2Q4s;&;\H±Œ
eãÀPoc°ÃNôA"ó26ÕËl±¿Ï']DUT÷éO{zHö<ëÂ~ëŠé=Ù44qŠqîIJ
+0»@gUÈp,ffuyV¶í*úD|g
+ð]ÓÖo§û9L$6Ñ,ó€ÛóBáÕŠBMW§æzuníùy[ÇG7váŒÙpK÷pýîa±Gžáå{ý£ð€.QÁ#ýOÂÙs œRšåTÔ1c ZaðoóÕ_<o«ídøCÅêéµur9ø9Ãwl©3.~{b±\BÊNµŠú®£òìPÀïWÚC$=©NYUʶê.P%¯\R#üÖEígÅŒZy¥²Fñmñ|°šªVøñÜšQrCÔkuC¡NóÿÊ,0'b#©ä×Ê©áÀSZLtR};ŸíÛ¯}3H¬Û{FõìOÜí
øfØo³«JS|%âëêäo\ÍÏOjTDª!âi]L$z€äoF$¯ÀËÂhÍBíÛ0d©0«m]«ÆdM&lVsé1¢ŠÒµò#äb1þž=õ+«Wû,@Y#¯¬t°åÌñÂ8·
+)ÀkO=ÔòͰüæÔd/Ìây3ÃÐQaFŒe³²ÿþ6jÁF`¢;óL[Á_¿õ8RSüX-bÿ}"rëech+åõáo§@äåߊ(&S/[.7Î9Ž"©ZfÔ{©k>Ÿ:GØQãéüȲ\)Mp
+¬@;ÏjsÞU£ ®P6
+h àJÙëÐóü[?õ LiàÌ*ky.4Èÿ[ \s8 aØnYüèóœ\³ÙÞ^\ßïg^Q.6=¢$:býbå{²pX
+H¶jûkÎ?6«V«ú~ÖÎEü3Nx% èŸi'¬9>ìùµÙuÕ5iÚ$ÙÞÊ8ÏAöoÉwgLæ(v
+ô€¿0ž=.ì{¹ºœ7z\ºí=Þmãü0O647ÁEcŽÐÈ¥ll]úN£:FÙä 8z#ÑoçÝ× Ól;^Ví{MËèÀX»á€U}Ûðøt©/.giM¶Fí&ð¬Cÿs`aß?æ÷ìÝÜÎdµŸç?1ï3|í|ÈèPvìèH!ªµ!Æ12ëE[
+yDFgéFÄrn6VðæeÎÉ KŽ.g"m=qµÎ1Þo¶V0ß)åé+Wfø×»Æ>tÏcïûEå튌nš{ö¢n©éòØ'úí_â\sÃ7í|zíT Í_ÔþE]$·ÐgmûÐ:¶P=Ú:ž?Ðtt0wo_žDìm]úÂŒ¬¡éíîÚT¡à+ÔlÊ$:,%º¥ò'pœï°ŒÆŒäõ,ÉWE/s.háô&y³üöîºðàt 9ç}Eœù6ÑÆ¡?Ì&åpdñ.KÕžtÔØÃXb±²~œ2ôKÕZ¹ÆðƯpdzãŒâ\ê`Jáµ£û#äí¿//;i È5°&qZJäììtPѯ¯VÆfì$pÐ'YË®žºCÞ&Ÿíûaÿ·Àî·uxzzÆu%xSÕÛ8õÌ+|ÄH ñ'o¶ÔÃIÚ¡ÎCN¶.XÏ·9O-;{VÇ£ºbzÇ€Q|xÿopì·Bs{~&Q]²*³Í/-²É:q!+"\£P0X© À¯5ÞQ£±:ªdšè¥
+LŒJÑÖ2Õðõu¹DŒ8[ ñRÚy8Çb,ÇH ©Å²ÙeØ(ËéÈÎL1æë)! Áã[Ü®å೬ÊàûjÙâCOXÕ¥"%
¬U^Üö
+¯ j:ÆèqMËCVp
+ñLgXcTÁC>WóËÜW)=[^ozhÑdØTw
±8TcÿÞLúL£Ô¢üìÊÃÉ Å%Œ»¶bVS¥Ö©'ÌaHÏŠ!ÜUŒ"ádî°ÌGdfÜJK Ï7 -óñA!ÁµcÙGÈÐã©ýÊ«Ê[h§@ïžmX béa¹ TÂ="fXϹWº¬Ù{jngû?§Fœo׳ÙÊ¥,÷®ã=/çbºØÝ7cLŽ×³ä Pq³l€xËüXfúxôôùã1ÀO8yÈ+ÒïCuËÌÎÚïŸ,-³ª*þyí.Ó}µ:eÌÀŒíúuë2níÉŽ^ÎR/ÅxŒÛ9SEÊäÖÁ$ìá«÷]ñvÔÂgþóû¶=«g~ÊŒ,æ(QÒQú{²Éd~C<åù\e5ŽTbIv1]QͶŠ4ÐÇœÃ~ÌA4ý9¥6M1ŒGÅ¿xµa šðo§ã{âÔ, "j¥œzbjQJeAØ Í]®×¡ßÜÄ£ñuH7<
+ÍŠT¥®€8 !)Ð+x
+5_üS³761sتµl³Ç÷YôL¢K·íáõ§vçAM»ìýݳý
Üû÷[@Ó6Y3nIÎkÜVÐ-tdúÂH
ØŸ£|cŸöo IßZ8²J(ðyŒÝžxf?w[Ôÿ60ÀÄÓÑÏ{ŸXm:N+Éáõa&0ÆT&w%ETbhÐÔ(ë·INÞ¥R'Žm¡-HîUº^BŽ£AØký wueVKôüT_Kô~u»÷xõù¡ÛG7U=vlU6/VÓN¶Hа «}ŠX«an]#ÿSÏ~&«Æ5,ã£M²`eÍXaIMTºÇ?ZÀ·ö5ßãmíÂÃZ[ÌVt9$3ÌkÈh)Â&{âzŽÍ5eÏYc +d=&àlp(#ß¿gæÝ¥
+§.[ùjSM©eúqö€¹v|S€ú°tÐ|JÑ»þÈôüœ H8fާ"J9á+Õ-Å»w²~ÿÇ)€+UJ{ EÆgÄûEoBå£q÷Žú¿Õ±ž·eÎZ,ÊñÎkgâ26%0gÙ¯*0Ï&ÞXÛþ èŸüùïE{4ÖáæÛþœëð#sâ"6šJÔY
+Äñ/gñ7W-G&:pŸ4£4ÿ€`ÜÿÝ;¬Mþ§wÐÞ9òÎ¥?|fjoÄŒü£¢pÓx~°w}«nŒúWØ(9økÖYÔ,ÞÞk!hnNùÆ|8ÚŲf³Ýu2Òbò¬žl©$ á`+[×véê'çJø2¥ÃbÏaøtüÿñA÷ÜdWÛ€SŽ:tAôåC$+N®·V¬üÙ¶ÂÏw&;1@âuý:µñDe2yÇO#ࣿ¢Q8ë÷qÄé8U$GFWD±0*ïeáôêdé=Ë·;'Ë»Ó
+aÙSÙ7œs$sèû/SÖýAžu.v,gþ«
+¶X@Ñ$CÖ² jfÞèLó^X€Ê Lhv(ŒC íVê4Åõåž&£µ+ì}÷,PÝó®_Ðß`Qî÷ ÃØh,g¿nŸÖ*ùzæì;÷õ
+RU[7
+k@ð~ÿwh&ñVèâ`óû*Ë¢ŽÈnzåæîÛ:ÁÈEb§RzSΊ;AŠïÉ¥Úª¡º`ôıx°à~øðüö¬·ý,Ñ8ÏÚR
+økjNøwj.Ç.æáÀqd@²zjô-I\9¹^1ÀþÞèrþãFrÄÔ{ÕsçsQ$¡^oùÂà"Ÿ©òdŸÇÖï9Zû¡»·IòY³VÈ8.ø¶³Ú
ú åÙÅ:]cÚeeOÛ
+í£ú§»@Wjn0€pN&!å*^C9#Pýwê
Wø/
ÀâŸEI§JÌ÷ë6D0ooÈoεN"1MÍæ°Þ3÷5ö>¿žNO\kéÔ¿Lá)výëì÷¿ž®?÷2Oör¶J=š}5êNÏ 'A'£×þÖ"odÞ/$#ï?Ê5v±ð©ÚºÄ'œì)'UKóÈŒt ¯âä ÆáŒnçŒ(ýPjlÉÕš¬·¢÷_è×5ÿºõtemÇZ~Ð3àïw€hÓ÷æ"!S$cùž°
+cô
Ã;?ïð¯¡ûìž5Á)§õðiK×!Þ*sü:© ѯâa ͧkЬŠ>ºÕg3éŽRÌ~
+ªµN»;ÚišÛbUУq at kõýA
+KpÐR¶ÐüCJ3x<Ì!þ'ÛCLª4?Eà4Ô±Fë@Èw5,H2}YÀ)£fŒ¹E«æü7:øœ·IOŽÍB!JÑ¡ÙmÛ2Ë6dÑžòu埮²Mb'>ÕšWÝug2K_¹mœ¬ÉP¡ûíek0ÄÜÌY®ÀRÃGœìþ*ø>z²HñråâV<ì۵*°Wî\Üw5ÛŠ5¡ØU*0¯ïm/Ï/'KS_|ýÛÿÔ#:ñµœT4œÅk:®Í)6DŠùzQ{È©äiÚŠŒ5H$éCjêmVµ«1kÊ€A$꣞³|£Tèóüz:}Y'^|šŠFXçÌ÷vÍbr\40€Á šw¬ß>¬íé åL5b¯!Õ±dò&f3RjLFÝÏ¢°ßðŠØoûm)Ÿ:®\Ÿ;Mìù§ø¶®Úà;w.ù>Žn_¶HvýÆÌj|øê2!MêèF''ùá¯È°mÚY(å7|.YU`jD±ß}|jè¹yYï-1·I¬ò{Û';«rŠ3ë bd2¥±×ÚÈG0ÊQmcoÌŠ«ùGõËÈ3mxaœPI²ŽÅc>
ëÇTÍÒ#òòÛ±oBH-_®À0"±ðCîÖæJÂAçcšŒ«+0o©§;^n
+_3Ì:cdŸŸ Rä¯êg`f€îÊ"%ôø~^2æ$Ÿ<4K×ZwS žØ?\(ÞØÄvý³KÿÏrýW·@ϧ°9
©Ò5©ó€:,é=S÷åöØ©Œáãÿè(ísj{Y>MD¹73.ÄgWâLàfç ï>ç _M\:<&ÞñÔÊ. Í×99#¶¥¡k®¿»éS=ýnŒöŸ°nZåîË8|isùi'V"8©êÅa'ØÅàä,®RÝïéNJj']©UÅxÕ¶»û4ÜQ+ÉÛ?~èãSÙ I¡bÒêÔ€V¹5FÒ¶>°;?äV%ûßÎh©œ:R ÅæÇ$ƪ`òc®Y¶Ùfþqü²7žÍ
+Ç?ºHPÌšwxöl"žlye9ù5ú ö[Qs==ÇHÉKœ¡îóÉ4ÍuNtÞjTÏ öüÓû6µ;b&ýÃ
+$énêí!KÃ1Ojð<žW±:;sŒÎOŠÿÒNÞ÷Üâ@¿\øÄ×»z voç«oAèëÙª C&þÂ~ý¿ØGYnÑÍ×NTD«05t·ïú°ŸÓUŠÜ<Ô¬É/Ä÷Üâs ÖíÅÓÆëðöa¯Ëpþÿ1§óÏ"[ùŸ0?f:ä>eJtÚ³XáËÐòý- ÃÙ÷;[àsè ñæwó±oâsÝ9¯WÖro×Ö7
¿Õày|÷.CÒá< GÅB}ù*ÿ,Ø»éýú;Y ŠâÏÖéB²JÿiÐäÔªcHF0ü{kiZy=LhÞõìZù;Óç|àAªÙ©éŠß}
±í<3(wIEܹß;_òØËŒm)ÌŒPð)Öà
+kf¡8ùšXœìÿB0Y;÷ÿœ}$æþÕl:ÕÃáÜ¢xp]éºx¯ñdNîDüõhJúcÖÁÞã¿å6¯ú¥ÜoÞ¡{}ûÀµóZM{õÿè#M£·}B{ÞQ¥Ý! =NòákËò9+û¹jµ2}Ë.i{ë}@²&:Ó²JûÐehïîfŸ°zz<{Ü!öòçêeœ?º;uš×C>Ýó|ï'jËf)jv&d¢¢Pôò+žÒ«_¡$P]BØÚm&°ßgcÜó¯YÏDX.ºùÜõÆ{`¯åcx6ÒÿÛ»ñðª_>r¥qíFg4û¡êñœáIjÎÎGÔÁ¡6<œ²Ô¢@CÃgjv©všÝ'ÆåÖcõA¿8
}e0q¿-LÚ|îóä\躌÷yÐÒžÙDŠÚzÞQO]öù6CCè€vž`lymèYà1_çÊÉÔ{¹¢y<,j2S0fúÂéÖÎfÎÛÓóõ!äþÎvÀ¢ÂÂËùJdu7ÁecLÎÂZݰ¯[ÓóŽÍroyCEV1utPÓùíÏIŒr€§èñ5N DÆÒà»ø4ž5¡âµ_ô<!{^°çŠjpš¶c]J?1^cûÔ8jë°Ï{5dt-×jÓÓycÙÂÀZ`t{¿EÞ«éÔ€ÁÅßíGÁðMkò§u
+÷ŠëXôì€^Ñgðîò
+<0°lµkâtfŠCAuÕ>Ç`]d y"öX?ê!g4£©UÚÖV8ñMB£ÒÆæ3õ!eAØÄ<âÃþŠ,\€,í÷æõ(¡SSºH
+&7¢Á¬Áæ!Âv#×èôþ9[4æ0õe,®ÀŽw³#+^ç3ºž*|-ñaœbmgµé×Nu5 áÉ!U®`ÝcøQ`Œ`¹£Ñ{BöÚ¡/Gv¯#.Zÿ©&+·@ÔÖáüy_ÄC;óá/G³Ué ÅÆò$²BMh1Hâî Þéd2 ÕýÖ§À÷< å'ã!ðaͪa&¶Ë¬¡ŸØ z€ç©ì¡áÈxîšYÚð%€ÛBM ÅJ;3¬yiÛTHm!ù,€RÕšXsÈõQÿ3<BÜ
+£¥
+0íTŠ&_|qŽ7m@Ó-¹`ÝoÙIfç5<:m
+-ŒµýŠ,LW+HgT<Å6;õ€
ÿ¢5æ{IàméwÏgîÌÀÁ[¯iµÍAÈHÚñnµ·ë
QJîçñ6ôK5õíÃWë
#Lê§GA8ôÑÍ«)Ê€tÖfLÅ¿ðÿÈB¥¡È>GÚù5Ö7Ä«Îôºô*O-Ï"þ×µxh|L\-V\¯#Š}ø3€Šc%MfÍG/ÔêêLTÁç#jpDºÍùÖÉ$©³bKGÌð£.méq÷r7$ë¹QÚq®ysÃÃGâàÐî9'ÈKØyèÆæŠð*Î úŸÀ&{)/äG{{ê
+ůù/!NöTýéRãjR&Û¢ªlg*sqy1Õ}Ø"©¬
+* ³ÃqÌEüVÔ1SÉ4,RŠðW<K²èÇKêâìF×4¬ÙÝJÑÝýšðîàá<¯0ÁÅË+MªxvN€ýrªÌh,šÿ©²gæ€/£Úú1bTÍÙbâW°Wó1ì`tÿT%m1gT=ЧçCjô·RbâBUæiâA³ÚÉH¬tÉá+
+ýÝHŠß®µÝÅ?gSõÿXŠH%Žó#ºNÐŒNnÒªûò«ÌE€Šþø
+éâÿÒ¯Qæ.ú° Ýïù?"ßl>'
+T÷ N±ºqú®ãWþëa¶cW¶ªÛöûõ9ŽnÆ%üx&§ôÅAGÁ*žmÿ³F·ø³F_{³Å<ÛûËV(ô&WÊœöšb=DG»óå<é¿ðí¡%q>§$#}Ï·ÿ¿ô=!÷-véZNôúíø.gZÿ¢g+D¢úÈ·ý7.¯ºéÁÖõ«Ñ§[Á£ÜZ*"ŒÒ[ñ.ÊÏÅrtÔÏ9.§=W;#CŽ9øýŸÑ«
+²ä÷vEºK¶átü_/Îhç;ò°Ç%°»×¿}µ9?®Îí§ýáeW®IjMJGvUÕ/PÒªkÿ5·û|Ç}?€%œõC€Â+b)ì_ágÛyŹװŸC\Y6ß\ú¿^*+
+M²EKzÃvøþ¿Xýòá-Ô¯çQCkç&lQXLôœ¬ù_â4Ì[èãÃÇdP_O f
ðið ]ÞÕübýTûÆfè¯à¯(B¹=²V1ãÓjÔP,ó÷tyóÚ_=Ùnж£ÆÈkAA{²»ÿ^³÷ë3kÉí/ãYEø,:ý·%ÑPûfŒ9œ:Ô«ROÇþ0»ºK¥nXHr7Ì:`Üâþ.Aš
+
çUí¹×kðþÉ §:8ÁTm±jªE9Æ®à Ý÷SŒ=ª"ùÓWÇrc9ÃæYEž÷D°H~à`ÄfèôêRñiÒ2íß8é#·ÿv&Lÿv&°.Új$TQe9
+úE¥Õe6gº'ìs»!éH]CqK»9øí!:þÜÁß~©¢óÏRqðs. "E!QipãÃðé U¯üi÷L_ê"ü'jmÑQòMgBÆ7|cÅMK<+1ŒTé5JAO,œßk"Nâþ;R"Ý
+¥ŽîÇç
-ßDl0ÞC€'°º ~aȺùãÍp2^,lYµ©öå1¿]²gQ1Aܵ!£âá
+»DØ*QÍÏÒAÁHþCrù `̬û++m-Ã\ýÌ7nüåEBxâ:Òž»V@%úâ²oLU$*Ío2}X],j'\òòªÜ»ó!±ÌPª²œ|_«¡²)yßûæÓgò! ©íÖ¢,æ^ÓVLCæ}m&ްÎg]µÀ¬8p±J\áûû- dõ¡¡H2ÕÇÖOH 2[{9ñGî¯phS; Ü;ÖÑ(v#œÑìÝ댳Rëê¥IÀ
+|s¹ž@8Or¯(°ÅŠÙÛA«*áŠÚ¿ÆDŸ+Ì"£Oœ-e7úõMªqÇt¢ÞÈý°>{19óe²yü1Ú
+ÐZòR>lš, ÒdÕ¡¥17žóTf at u5]UÝÚø©€ý
+}hyx`g%_Ýq#¹ÜTR¢É)O»¿
+'c'e °f×íÈtÄAÞç€ ÀÊ snäe@ÌAJ¿WªÅ
+¶î4@2Ævsô=%}7qã3¶ÄÌ¡Íf at diÓ8tªÅOlM5f€aÜtRÓìÊœÊpI·mDËò{ï3b·å¹~:X
l.e<õ«·ÓŸ· äRk9²!R@ÕÚuèý_1YTdþ¡²uõ*5åA[1Þp€ÖÚ Cuenzù× õßïDñµx€V
+ìžõgpLÞ׫þhÔòåL÷1 bÍË¢z+LøbéoØ
+MíÄ¡Pù)÷tuÌ÷Lö¢€Íp'3Sp,7É*(
+µõ²ÙY¢8ñ9ÑšùM`11€Ž`üLcø,)úµ? ôßœ"P)±âPªV5»í"NhÕ-Zx~×SAÖµé|Ò»nùx~6íæ×(÷'#rú Á£ùkâOpð:œ¥ŠqÞÚ2
Q'_ ŸÃðB²/âÆn=He45š5¶ÌäÊk+MLK\N€bÙòVëRl]æNÁ± O«ùlyÿøµš ýãßr!øù¢/¶ÂsÙ¢Ü=SEzm!FîªdøBQ]êåk i¢.H'³ý;NàiåMéØàO@î îbÁîÆ÷p,@í·çöð9㵡'EÜUêb·8A¬8Ú :üÌz§TÞá{±H{ÖaÕr.-öZ-.øÚ/ÝÆOK=v°W·7?¿ Þe¬þŽiÉ þ^MȰÓ*fdOl÷êúGŒ~=3-Ðí{Âáé#ôQùùä¥ä¹F
+&*£š¹DäÛÔW.WOÄîVímWG"°õCÏS€PX%õŽö¿Ÿ± ;wõ-£FþhÕó!
+Ðÿþíà¿U=Ú÷ý»·-à=0
+%þGÁ g¹åE¶êר%ÞÉÊãøÌ4ì±sÝ_ÿ{?ãÍéTž®ätà¿i]¡\å,põ¿öjý³¿5ìÊ¿5ìA94ìGÞú|«²9kxžRÿ`óÁ×>§M=ÿŒëÖM¥3°Ó1O~2dCl6"7ªWÈòsdJpM]xÛú3µ|Øðô&ü¬_KI9CWnþF0ú×>±ª/ҿÚ$ Ów4nÁ¯éñ?q»buU©qö*»ÔÍÿ5öö4ÏÈ©J£
¿lýs;ãxÛa#xAzñÛ
+è@h6 ÛûDJ°^ïªü7ÔœëÿõVnm²é€bñú£6AÍ»®¡£1*/ycù€nœ<«h@;îžõ,Ûȱwé ÷Ì_h?ŠJÂ+M0iêÜLy{#šgÅíôùáU¹xÞ³¶ïZ¶'€åd·>zÿ"ù'¹ŒZVRWâ;v¢Øk{ÓuÝ
+J<G*^œèÅ#aÓ2m2~LùãQÂ!««]êwªO`'ˬR©Â~Žÿoãâ¿þ"°I^¢y}QŽí5KXCRŸåY¶}"ñåjÀ§éèö ³{
ÁeÙtŒNç A|Mä»Xÿßj7àæoE¹dŒ·ZÒR|~Ù)Švßíæª-èØÄPôNNGvj_OIq4>ßòv2'e¿Y`Nœ?þ$t*&èê]¿,I#¬m at Q¿¶äQô×0hò]3éê-_|©Åy|¿³RJMŽÞþ6œMÔ('Ä4szUIc(pÊê
Æ@§ÕÓ/jàU¹jódf»CK¢wAO¥uÑÓw8κÉÉ·ñ¶89œèô,÷Zà`}£Auü÷GcÖäðRžqf<ázd.
+<éÉÉVÑÉí»ÓØ
+>ÀÖiºú9Æ"€GV§|ÈD Á!U©©z@>QÂbbÐNàeñ·òrÑÁdÆtvÃàC¿\{øÂ¬Ñ3ßgõR¹M©Ê'êií§ã#ZXÏÏÑל^Š×YÚÍ[JJD9bnÙh6ltßîÕÎSÄÖþ§?³µòË`Æ©;êæáDk5EÌE;AöËMqT¡E
ô
+¯ÁîiLáäì^^ G#8:ñ0NNÑÏ8Íá9E%#Ó«ð0&â%"ËšÚ
+`Œú:ã
+0¥ûãÛH%Ê@ ¢3×VòL{T§`[¬Ž5>Ð
+ìéàè?'¬:ïòÁàFaêçAÒËm±@·8ÅÆ"}pÊ
+mÝ`î5ª³;%Ok×Q¬ZCØ57åÃ¥ï9ìWË×Y¹¡&ŽS#Ãí.·97îéð.·° 0uodÓ5otJ¿5K±°àóšWB§³5CB¡Ë^ãÒÑlëúRsÉ
+lò£ÊÅrŽÙö ÑUžðÄóž_Š,>¡ã`š÷¶áçÙͱTaf@ÕxñxŽW ;rC{-²¬åUص͵³ØkØSqMëq»í¬;cÿó`ÿB4ÐFkÌòûòW±¢ª³nœõ¹íÿÓ@€9€àn€€hÃrn*Wîȶ.];ddòo^sI`}'4µ,ÀQWnJ/bÖ`a·i;¡NBK÷m6dkjDÏË¥ß>A÷kçØ
+Ea@ûÒÞd7g+Ò;?êÞË*-MIMH%Š\dÒNNS8ÕU%Á®o+xóæÖÂ~°_äR%ÕC®Wû\Oi{X°oªÜÁiÕ(]ø
+CHÈÔDõ¶;ŒAö'v÷ØèEmrÒ¹ý$TžµN`GJ鹿
KÓ?µÅ^v EVJP
+ꮊ$d4ßÌ@!îó$ÐÔ+2ÿdÆÕáõàù
+oä=ʯiF?d~Â;ÏlÓœ\^?7þ&÷Ôãi¿±ae¶ù9ïø'_î<hêŒ*g°âê³øÊÒHþIgSnZw©ßk«9ŠKï¯ÇnNxGøA}¹ýÈ?
+êTPA}(çlVèÔ¹_u¬ýøÍÛo-ÈÙªŒ|#AmÄ üG0JGåbÉH§³ÁBüzç¢dÒâ:µ1ÖÒ-ªóÀ=éÀûT]Ðõè&ó%m
FN)DÅ(®¿{§Od¿º=]rzŒ?ŽÖ*Þûo:ÕŠÈÎñ82®k€îÝìN|y;wâDØ0Ýh!ÚÃbX@°?.« êëíy[]»ä¶^ȱÿ|Μ>mCpQqšÌŸkPïjµžt}}±õåÕãóÕr9CÁ7Ó§7¡èÔcÑ%bâ.ÜÏQœê7Ú×S2»6¿óÛPзGëþžßç^/âr€ù¶šîdÎÇ¿`]©ütÉpC`ÇdÓòhÞ¥š žûrÜ!wí³-Sý;¹€¥,Zü¡Cá±Öÿï¶uOJÖíÔ)'kÍöºQSEä-С;[ŒçHR¢£ÐÈÒá Ðx~ñMŠÚÊ¥øb+xãΧT
à=æÝ{»§
ÏI>ß²7¬T¶ŒÖdöÅ7S_O~+·[ùãÏÔ~êk×ÑZA «HyXcùxó{œ>ÑÞþ'³×;µ%¶;Í$ðEÍ {Zá=]îÈòzÆ¢ñ;«`æËG£jýÆrîXšÊÌ~JÖLε\ÜÊ£Ýg£ßó¯ýÖ¯o Ò8Õ5##RÀûÓ©ìø¶}_ŒEÊùÞžŽä [ØåÊO²ùÈyÁŠn¬àÇ
+ã5.ó3êþj]A±Hdw8ÕBx§oŽŒVÜú"rã\7©ázœ¹~ÕOø¢€^GR
+ÙI÷ù!U+Î8èU%tydWux+Ç#¿Æ}åæâŸÞÜZ·N¢RHè;ônäovF
+Ú
+
+ª±~Š#³ûÎSýÿ±·ráÚ¿éAºié éî;€»A€WtßûÞû~þÞc}`>s3¿ë\ë<×"d1üjÂÀü.drü4k³ÕÙrôo@KWWû:Ï[TàmüåÚðSÏ[JÒ
IvdÇÓlúž¬ Ñ'òI S÷9gÛŠÈ·µ|L^õÆPâê@ÎfZ\÷û
+]b(7º$â^oŸ)5}utÕôLG¯éëêH¢}Uh«Ö:ZaòiÖ'¬Ýg ÉðfÏéK3/ñìXL 6OaïÄb£ŠÎdãjÚ¡+?ÖlŸHc`~ÜÈÎô
+Ayªqn^}þBeÚ;»åN-*ê6FœeL
+ Yçéœ
+%ë±l\6à
%Úx§
þÂØtÓ:y,
+E&$ÌtÙD ÿ7.¢îgg¹ë7çÒe±Þµi¯VÅÔn#¢hòQüh
+2gô#'¿ÌžØA.7ðrˌΪMºûNWFjßXrŽåú)?ÐsäKëØä]ûþEË&¶Æ{×ùÚ¬!°YœªšªUŠiLŒ3g`þº@·¬ µ*j4眹ºÕž@si<4G€Rg!®JPš<ø%³@®yŽ!='K8Õߊgû;Å®ÁŽœ2ýé;pÖdÞ]0ïHúWšž
+F)aÍçào¬M"°*ïôBÍ×W5/Nx"%È»º£Þ]ò `²} v'?ÁNwb$B@Šlƶe{,äWiêŸZTMÖ'aßawðΫ¢¬4ÍzÚêüÉ@ù`øJU
+]có4<N}ÏÁ©o§¿þ=b÷]©-aæØáÍ¡µ"QÈÅRB]öZsQçmkž· z%@ô"ðE£ÎŒüÿóQÉZF©
+Á=V|EªG©ßj3œ
Ó,D¯M^(OOiäzg~o,®æÐ)~Ùéc!PŽ4õÂß\Mœk|Û»XÏøao©8¹ŽËßû+Ýtfô÷ã.ö#ÃàgºìqÁU[ÝçiYíå~ýx2úqA+«õ"ÆÄüçjðâôHo[OJBdÙDlÖÿºcµ@@£ÒÐú±Ÿ(q7Ónt:ŒÇçsÑúi$lvwž{b/e
*BSCŒ$ùŠô^CðD¿`°P+hPY®{I% ß¿:šaÜ@níY®f¡{œ2üþ&¶2¡ÚMey êF§ÞëúViuy3fa»×ïj*Õ°Ô
+þ7dFàk_ Ê ²ü€b:Îq/ŠãiÚl¿eØÿ Ÿ:¶(°ày±Mÿ!6ÔÕP3]Ú(\ÎH3º-Y¬°ñÒ¡@ÿüCXÙ[Ó"Ñnú,Î|͵$Ÿ8Ýö-ß#ËýÉ_pîüûÆ
žþFm+Dü¬jH=ÄÁ¢üåÐå¢àY¶`þ7
+ËKÁÎDçÏ/ü&Œ&èò¯`9i+Nj,æz1å³¹ý'ÓÔø[a%#CÞµgÅ6Lóž¶Í$
+JòJbD_ÊqýÕ!fã`!ÿ`VG¶7`ɵœø}sßÀs/ÒcûÚqÁËÚ×hh_+¬^Ôâx³ÙïýŽýûåm;7µÈGqÀpáî+èSìèLêlÕšaµ"v1+_/ßâö«ó£ßñÕž39ŸÏŠkjêZg`ĪÝÝÕ'ÁOAÑ÷ËUŒÙ|þözË?+ðky àZ}LEj²ãðäô:XÞuòÚnœìx±eé¬ÖèìáOÔ`²®Ñšq`XÆfçíf5¢ÒÁ7ÉéE¶ )žÕe§òõæ».ðbž€
+SevvÊÏOÃÅçüI7»uóûøŽKæŸ|72Ëþû7>*'ì^u ÜÖ"ó˧d=@
+ïw¿Ÿ€%ž/ÈK}€žéRÌøRŽtgmÕÝÃOIg^±ïë
®ÜŒ:Aºá
+ûš!/÷Ø~©ù*¿Õü€£~ë@Ý66õlaÛÌãò{Ÿ¶/Ùíâ&Ãä×î¿/çÃ>ßóÆ/<nÀõÅpüô{ø6?þó>dzòY«sF¥¹8E>G©feãíxbL\LÝ5ŠÙêÝšr~Áß}Þ=»Þ×§L)šN:hýųÕÃX¶ó§þêÆ#ö\ÁO*Xë9Hd8/+·Ýó}NcàÌìC;š>}ªå°¿3u€1ÎE²jÑ.Ò#KÖ*(ÇÃ0Yº°ÎBµKîøyšö=Î1V\w+kÓÇ¥Õ1öjäñ«B*1GýÆ6«öíšœÖÂ\Š%®èáL
×+±œÂIJç<Ún/XÅÄLõTñ·òÒ%y×ÑsjÙPêû3ünÖ7~ €{>PªxqSci.°kÝ"ãXpü6Ýx'ÉQº¶_µU6ªù±\HÛµCsZ·Á³:Òß6`TOR<oË*t
+®7¡Á+ÜfÂÊA¹O~ÈÒí.y»§Û<çÄž° [8Ê5Uxq@À\užbz_ÄCwšT0dwœYÉ8ðÿŒ$±°
+Z'Ø4÷rŽšI§÷qÉÓqù&ñ)¥ÏV
+¿€K7ÓêÊÞ§±·n¶q ºsjczm)y¡Ç¬·õ×ï0ÜÒþÜKéá8]Å€Š;
+Øï5Þ¡qBO¶}XŽÜ¹«r«h`5÷ziø!³Šrz É @1Û¶RDgXóðG°ùh>6êÉÇH^&[@-|Æê
ìÜöPÎÇþ?÷±?æÉÌ€ŽÌ〧͡rnæ&qCG,·sV«?0Þ̺þ
j€UÈ.)®1¬Y϶y)ç=Fêk%8RÔÛè>ÄOøä/Äî6{G»a=ìBzÕšû[ñÃÒë%|×"ôsséÖÌ÷ßša¢!R6 îSèÙ:äj(¡nÄwfèMħ.œÂ|,ûÞRkR:²k°kæ'ZÒžT¥RcO2pÑà2[Ø£\u_;Þbsð`Ó8®ZþëØê$Ú(åô<5ÀúZ~âÅàfy)a£Ó1ðêSûÉÓ8êÓì)0ýM¡7À'»ÒÆ[1 6J0W*äjZ×iÄÿ-(0óò6ÞÂ*7MÇvnv'Îl=Á1£PKGé;J££ÍûÖÕæÍDRóî$Ø¥»÷ÇSmc²G>ÎMBæAŽ1ÄøfE7PxÊÇÿg
+zWëe¡ôÛR¬MøY{}1mÁŸæÅA²gÿiÖ}UYAõ¶Ñ€MÝáq¶8éÃKZiýi.ÞKý>÷ý4±UŒ
+ÑSfŠÓ?Óhu=JìÛ9©BIÌacƹu7Æ z£èöO-0:ã6ß4Ÿ[Ó*ï·Ç¯"ÔÚiÕçM
œ¯JÞœeö.KSVØI>ÙhÑqRgîffYùœ>íSR~DÜÃ;4ËhÔö9©LK" ÃÖi{<Õ9ô¿õ
PªA ÄçéaOÅ\¬ÔÁÑàþíõrÍÅþ¿wûeZh€3é0ªj¯52+T~ë{ÜÃUO¢ZØŒŒªPD2PO`
+£ õn/M¶OŸ žÞüÍA÷À@êâxÄi©çEqÈ©[ô k§Ãòɪ¯ïêÆÇÁ?ûøwë¢8üîç^ïU}06-Vñ'žöp%8¿üb2
»«·6B`;:¯YŽ6œ}a«xžðk¶ÉÀx€_
Ÿ§F=¿ŠtèÒcnÊàgR]Áç$Kð²oü;
+.³¯çAgVx:§/ân¿èö|*G)nzpèÕâ5aÚaàuË~ãÀüýöͬy4È÷Á¶ÆsÉÜÕM°v)?qÇf95êü.Zbf®wÆèªáš¥*]Öxû@¶Æ)Îà p1Ì$;Òœ(ÜTyëñÙô_ý\q!Ül¢yÙú¹ŠåïíEx:qc£òþÍìË׬gf³ØGÿÛ/Ç~ËíÿtÒ³ñ¬XU&¿ävñôý§Õ€ `Òp'|NYý0Êï ¹Fÿí+Ë/è]}iDÐåãÌ=/C>Y·V*ÿÑÛåöôöj¥.ÍJ5"ÉðOB*ßëÅÓßiŽK.Äèûþ²Ëð
GtߣEã7Ï ë_üm^ºwGñCͧ}À7~kvì.Ô³~|²x¯¿âÙ¯¶fþ
+
4ýÎSjäžžnÿ×S{øjösãîÙÊæyòÚŸÂä)Û¬°ò+÷±.rÝõÐý·ýv÷Û¥fD*ѲaS£!ë?_%â
3ro
ÚtËæN?ÔŸFÉÅ»KÇÓèrÞ®,#MßFÞåNu}î!/~USí§CZaåxë,tý;Æíaß*ºÞÓO!)*œý9ü#pÊ/·ª#s®2;/Ù¶r?vëÐÎ
+ëNùPíÂ_z=¡ôµª»ûHÕ îÇ/¥Np®5W¡iBé åDvûXߌŒŽž5c¢((±2¶E©YsÅsêKß±û}e¬û.ãŸÅS<Éìø3îGž,õ4Î6¢Öúó6}³çmúU\{Œmœy³ÔEýöDþþ}ý8ß~Sú3ÿpãè&tÌ[s
+iwO;Ä&õeÈ|Ø«@#LýÉ@B¬ËX¹žf6toÃŒ,GG9WgUCó²,ÊÕ_®©ìïSM=1§hÇÍÉõÏæûR}míÔbCMTYPNèÓGšüå¥T+Áó/>B'!ðÕ_žê»U@f&×éL©]yoEdDÊ,ìŽYöõ£ýg¹A %ÐèGqn"?*šŠ!€1©ad/ÈOAh mc|hJ1<œr׺
+w΀ЯçHý!'.@;"Ø#aËŠ÷¬¹Í|Æ ÿØ5!#Ò%ÈÀ§*n±€"¿~ö*ËÍž$<ž2¢ cÞ;6$WNeMÑ»þöPxÓETc0b6ì<ý/¢áî¢íýÔÉOXhî·°ÁuJ@
+G®W"Î=_¥º~Vß(§ÆŽ/Íf,ý®û¹Í÷,îZ¯ªõžU"û-?P7ÊItßÉÝEï§ãÑ\æ-XšWHqúÐSý£ÀõÉ%ÈF°F®@ÎYæ8~bÇíSc4Å b
+ŒLh;R$meUA !ÕVp\q¯i
+§imKœzs OÏDÎñÐ0ÏÓdc
+¥ù¶$8ÎDÞPÂøaô©1VFFR·3ŸL.eIêCžFÆË&ÖôeØPšØjà5ÚìäéV|ÝZBl\'* =~Æ-JrÁûº¡ùáH¥''Ø%^RîuðÃöÙàö4MvNðùuO$v²~þk
+FzÚ$ÕÿÔMrûL KT°ÎÄëÁbŸWUIrÏ`£m0qjË¿9kPs_¢3l¯Y0Lí1ÛRd^é`÷åcDsýÇ}3~oýÇòg6D[eÈÑGÒÎÔ^ñz¶¡V7ö8Rb¥fµFæ2Íó)úkìÁÑ;F
Ö:=ç,Þòàw\öÓBì»àfû÷{àS ;a2{y©C©ØWÖûmRà 8úž÷ š®ídFyyÀÊH€³?¢^"©Éã7Xȯ¡LÐ_a2ZxBœsïqÑíE?Lùµ)á/fØŒÖõ8®Oh Ýûo¹æ26©ÙÂhy÷ÔfΟeÀü3e¶8WÖà¯b;,:©Êº¹Ø÷nõûõcøW Ì@a>0h
+*J}zéÑe¹2^*h¡3#Î7ÙÔAh\H/Íœ¶È¶0Îh`>Ûâ³ð3&À;æ!nTŽüÅgøþ_|F:¯ãýÔa÷ëäñ<x9ÿ)`}ŒcÄÞZG)4F3KÎÅwçÛ|yÑ?tæUóû3èºz5svJµdT
+gKv
+ënVl2 ¹Zøï;ãmµè|Óa*ÃîÓrnç¿/ãÌc4mz8×:m »V;Gw8ÞQ¬*ZüÍÎ<
2V+<ÞÿYgåalFÆ:ºVdÓ+bqŒü»Î>|uØ'ÐK¶yñÐÝ`?V*œæµ
+{R£Þ÷Ü
+Êq§ØŠt?Þ¬'$jSÖm°Õ;ž¹¹:öSi7Ry-nèeGö¹CY|M-Ëô{KëÇ©:úµÜ(:Ï\@_Æn1<ü¡.è»Aû
W¢Ã`µ.Žà¢C`+U©Ú$u³érêRl¯OôRŠÎ5>-øF
+íªÀdKÞ~0ÒŸ4À=!ª{GÌíù¬GäÓ6Éü¹=º©q*J%kÕåÙÂÖYÕ5\ÈÔy=DTÏâéE:;w÷ñ÷mÙ«'0^Rçð¢žåϧÐ;îSóÏî±5€ÆsmÕ'Ž`u¢ãâ3%ówuCô÷ÚÇ'á?Fü
+hP¶UàǰwúynÉ-Z\*ÿ쯹ý§®Z³Œò,qÄè.¹è~ÀÛjÔSÕ^h¢%x®þg_ËÜ׊Êa=û8îæK÷ºwwçÝï¯ì"kpûxióaa6ê7ÃjÂ?¢aýŒ|Ž€%Òzôúej:éýi©EÐhYÍõèð`dC4¿žm]ŽÏ.'¬AÍ1@ÕOßȧRkC%|Þ$T7Ú³/Í ïýôøÊÃî/H»??Cú¡¯åéÒW¹ÇêŒ1_fÐnŸÖV=së² 4ÉÇ{$t20˵öç]PWG¥ŸH~Iõïšð}€OMß*÷oH>Cº6€?²Î;ÃznÏ5ZÜqÅHÂcBhÖºëÖSÄ8öõ=ö¹U,ÈÂÚDè*±=ÀV§ô§©ÒZ"TŒLE)~ÐKA8!k×åä(g-KÛÅÐ$œ:>aõ2ÉòÃ×=u"shÒðŒÖnŸ[/îBtô;Y28ÁÜŒjŸ§Ã·ëýžÌQc3Þ /Á~Âm*ðß
£áŽ
+ëqEXzUó]S°A-zZ¥_€ZÊ Ïbq[+AöÀÜË
+ù£Ñv[ØHTšìô_-|=eý·KÑê$øÝ»¹ÁÄ0(íþzhoè^ª
+#É9&<³caa×ÝNÌ S,«ŒÙµ²6tçz/üºÌ¢ÚÜÛLâÒžw)}'M
+Vó©m±Ómµ^ßJ)À}ß[6wå}Í`5ßrbËšÃ1ß:u¬Û§Âà|g¬eÿök9
+Hä**¶°§Ñ b€91B]ôbþPÐQ·Ä3ßFvå¶ŽtÜk#k]·Ö€,¢&-6tQÛ;!Š)eMéþ¢òNø9£ªÕ8dÜvÀtpÚZ@|A
=ó€óc§ÉÈ©ëûÌ\û=Ús ¯öbôyç(]³RÐM ?ÕìâD.ìc`aÝí¯¹ß~̰RULECîx×)OªnS)ÅJ÷
+aF;:6õ6x¹.}hîLbËÎ:8YÂômÅfÁ ý£?ÒC$Ãmbn\[YÄÏHÛ ÊšÁ7N³Øô%ïXòf¹MxHùõ2§igc°'%ª\œRxx
'@ ΫWûͶQo^Ÿô?¹ñ¿mëåÉÌfQ5m.£ÕÌÛòæ®5èºÓ"}JçÒ"1ÍKÓ_š+6
+\ŠóŒ?§C at må6GÖT$Ç
+|IþIÀ=BM_=°šRêímÉ0lÈS:Äê¹».{"Z:ú5 Ë kšÚ°ëãÍ*ÛÎIîþü.¡pÓÌÇÎH©\òãDõNL-
+fÌYÍ2n]Z5x|G&x'÷Ç>GõÏëÔdE/¶häÈóÒJÖzIËôæÐ³SJVò>3þ]%^lÀCaÑ*ä^ìÔÇÜœcœ/4{ÿÜï:غ ŠÜÃŽ;¹ýúÆóŸ`;LûI÷³Q¯mA(DòKTW\Õè£ðǬɺŸö-Åš^<6ÝÎQßP€#R³vøÃ)ÅØ_ZΚ¡^äàß׫õ
+¡Ëòñõ»ldëmÌ5ôŸÙì¿t'ÛN'ÅBÇêF¡DÚº0]I-I@@,4ÔŸ£ß?Ã{âìO'Ülû¯€Ø:oBÐkl€€!gšÀš/Ä)»eŽxÈ{²âìo¶XÓÆaÇô^ªaV¥áu]Óóéð8W,uµÑ|¥QÆoA'îSIu7Có}üIuDœ«]íÏÂÚyìØJ³Ð¹ÕHp:0XTfá&¶õÿÖÕÊýù:ö*8
,œ¡«9o+1«dâù)÷èCïÌ÷
+m®Ÿ¢ÝÈø2©m46Öá÷äröÓÙóvÿ²±ðý-ŽöÆêÏ©žÐO¬ZÏ»Õ¬ÙøœZãëUŸbÖÿEîIn&<*kh¢?ºÉ:Á²Ú!w«Ù|L¹8Çš¥77xVöþæ(þœ2»áÐ%M|üY^WEüU0*^Õ?á?)q± }^šB9Á²ÅM?á¶œ·¢²BKdGwþ^Séù4¡<(?ä
YÀýžíçå]¢¹[«¥Iù×ûŸeÌéBøö*àìAø)4!ÚwÀGsgÊO«vóÏåµ%#'6=¢'"õzqÃ[ÿ?sì
+¿XOgö?`¢Ã`º@ŒxDÝ ÝFÏæsMžrÅ0ªN
Dž²JŠ[:»õÖèÕ¬ûãÜy3éÍôl¯èÂð)÷èŸä®Éñ#cÂ"ëÓÃR èé¡'ª%WæYÿ=ÊÐF¥ož÷·ÒS?ž®y-Qµ5wߟŠ:û·VÜHrØYøM·U4§ñ>ij_ÔîÈŸiht5^G
+í×ÄãøPÇ)Õ3pFÁ>Z UºK"vµÍ³ )ÅfgCk§}ðU]=ôlðÝ¢uÈK³kÄ3i+ócë5"WEÔÌÃ"Ï«EZ=ÅŸÄ|©Óvà|9qYæ{yï%çÅ€ÈfýþàyGE§zïÿ±Üsf^æ<Y)+ôSlÉ48Aëå#JÜ2ËE\älphW¡TŸ\|L«ÜGe³üŒvÝŒ+DöÒm>'WO|#qC5Z
+YçðPZóÄÇ75SÀ è)hqèâ³¹õŠI}ækq+5ÒÙ¢µeõoüÞXD3DŒóûÎÄ6œ¢j&åé¯G_^ºùÃvÙË8VÑr"õL&úrÄ
+F24Ìâá4HÅ\7dŒæ"]ã3æ{³4î±{œ/*ߣcÓÈäTرûŠºß,kDÚËï.;®»M©2ÑlîV%WéØ×îHH#ÎýS¹aPŸxÔL3Ö¬~šsµî!ÈGE'Ró)ã,/±œ%ÆÕxÔPvaçåH,:¬Åh_{ÍÛÊ{Ldv×4
íÄX÷HwôÃHSZç³~M$ÃØ£#ifö«µDD°h>2s °¬ÎNÙÂÛÃëÔ`Ú/ѳŠjyÍÁ3¥
+9gæ[@ðÂÈÁj©6Æaâ+ͪµBåÚ\.Õkü»ÅÂW9dqжpä¯Ú,ŸîÆLáŽ}fÀÀÚÚÕ¹3 ¢ÿ§KÍÖ¶ãûØÊSé öÓænçwS<ŒþUï
+ªTñßžúy}6ÅÎEiŸlk=êqÜ"®hä:Y÷¡àð-š?aù€[ŽDºzuºñ9B++$>_ÍA&ï|³(÷æœ:kÃP_TnBâuvŸâöÎu{(ËNM÷Òê
+|K-$̵>çWŽGŽX€_Þ÷6Æ{ò£Ÿ¶EJÔÚ§(2Zå«©<"ÈÐ7&Û뀪¡M{žPVèAÎx0Ž
+æª&1ã€J.ãÒÂùxNóØžbê:M5ÈÅ$ý¶šf'1~ÿ×xÞn®È)õ^QÝûQ_xwÓ·H6Ð2ºäGäpK,_-»Âuó6좺ÖWVMà³nòç°gÐ"5zl¶õp¿CgÂpHs}|ÏæÁ
+io±žØÌ
N'S¥ÞÓö¡Fšèàz
+Ò®Ž±M\3ÛAîÕ?n!NpºQ}dL ¬ÉótÂ{žº^±L5âXJÛŽTC±°,*Â[û[
â[Æ]òw_
ä zvHí¥@Ëœë=-Wë:ÝòËŠŽ©P
+IaÁÌ~©€'aÞàªÆDÀ¥NÚîòŠþç¬ù&Iz[ÆL§tFìLkPŸ!s |]Êͯ൰µ"áx4ÀÈaô$]aÆ#U
+ÏPÁ V5:)}òÈ7VÚ>8ÏÿI<ö a&V^O(JlÝ¡÷*RÕPå>²öÿ·Næ/€FÌUŸñ ¡dŠà¡ËØ|w¬ÎeŽÇ&tìÃÝ3·@ýé:ª{ÀE«òW,ÍX'¶cùZÍÎàå5~šñ£hD3éËvwÒ`Òj¡³ýøûpήiœ¬×ú?üpÚy¥Uf?ÜèiD¿PA_zìúsÏÃTa]ï"Ìl2íA
+j¹ëÖ¯¯ÌÜÊì
+Tl\öR'Ø6td³ &ôŽÕÐÎEBe!<ùË ¶K@ºµ\5S²Ktp\(õ
++L*"ßÐN¹¡6€Î>J*ÜnÅ3NWäw»þ{ã~UŠT~ÇÕ(¯%ŽïçWq5¡0oêÆí*Âkä
+ ÷^»ë$á¶0éüü(ÛZÊChi€œnÎܰ8ŰßEëÖÙg.¯fçrdSúo-GåÛUŠJpYM€Ó.vk£:ò¯þÕÐùŽØ¬ùºAé)ÎFe&ùï³·±kÑôCXt>çb W2[Æói?YDçe×ÒÃöйi9ÌÞ·ëac¹«¹öå<£ï `õí¹\7êíáäÒÐX\+t«Oçïü|¯ÚŠ ýr·|hvûàbêîfËæÖìoçCmjîúÉr¹EÝÁTþŸ
+qþó eÍkÃñJ²¬VÒ¹mÞóxd€æÞË#]œ¢z*Ätñаû_hpßÖÏ÷ÜûÍ(Wd·>«ZÐ'îåñvqFyö ß»§ÕÐ79÷Ra"vÛÏ)ÈñêNqY"œ8ºãÎx-Þ.Úááz¹ºß§LÙqÀÖüõþê+)ÀA:ñðaIÃóÛuø*ïÚÃæj¥ç2¢gÕOÛUpúŽ3ĺ!2ë¿'.b5®ÙO¿'.zÒó¿ÞïSÝ0œj·y×G°ñOKõÝÔ×*\~·¬Ù0O@}ÈËZB@%ÕKÃöNl'¥Ä+GI¹ÒáÅrŸ¡±éÁu6QIr5üxþ׫¡6ŠCEÇð«µP¬RßàÞk®u^Ûo±¿Ï"VÇÉWZ¬Jbe¡ZÃÿÛäØ8ŠÀµZ¡ŠÓÓ×søËuWómB°ÁºçÏÃ*žÌUåwS¿ñÝ9Áè~§ß_ØØÚÛÅ£
+j56%*œŽvÎÉÓèçßwGÃGÉvï 7©Á +Ðð#OÖèªÒNîågmÈá_zË6uìØØVÞ)Ìx·±š¿û§sZÿ±û¶ÊË}Œú¿|_¡+1Ò2A}è§HÀYxl)ÂòGE`
+)ü0±³ @§UùvBKÖ$Ô¥ÔYµþ
+7zaC2ÁÄ%=NRÎ9f
ögûÊ24°Z@Àw¢,@§ y
+Hú yÖäÑÎ%
+€ÆfôAômxEkhÑæ!§ÜKͱügyåÞz_ÙÕÄBÞÒ¢[¥)éK.Ô/Î,_ŠkC³³Óžœ?œU$òdâ°Ø+Bó²ðÄWßxÕHçhŸZ|þ?ÌÑç4èD\^jϹzžŒßªc>?GÏœÙøœUðÖ4OÄwrT!f²R[ã°öJ|!æÍÄbui>æï3yÒyzv߯F/Ÿ¬")¹ÑLtÄcðB§ïXÕVYɧݳ0}Óž\}à¯ÛÎ8puxÖ8k-){Mªlå5ZºÞcáÂ<EìV>CÒÇhyBÛtÒĬL'lŸ5±ËÛÀ!kH
+àGöÌ.ù/H·Œñ^éJ\æ¹³Æ ÝÚ>-®ð3 ÈŠª\ò¶ËøT%Dôª¥)T®§ŽÇ!»È0uìT4]ZZNì ŠäÔ«fbÐÄ+c9×
+ƶûÒȺh¢tYÖJì²\}uVW
+X,€œæÛŠ)<ÃÑϯ/ØÀ(Õ)î:f28Òm³ªlþ©>Mc0ÔÊxÎXÙN)ÀæÔs£³
+ª¿F}ÉôJY:ÞOOô:Z®Wª*µBT`é5ÆÃ£cç{®TŽoŽ v `lT
+}ÈÀÈ€Ÿyf"¹c<ÕipÒèBD
+õ"ÈUwß>]ŸZ@
©}ÄÀ»0wtm /4ÿŠo<
+>"æŒúq¡ïǯ7rroÚÄsð§Ãàà'Û³Ç Øâbàz-iÒôÂV? XX
÷óXÙ¯z
+Ä·7^eLòþ:Mà ¬!^{)òBGIí.;¹Ü Kq3Ä9àg?ülQÆh.ýèBm)ŒbóÂØ~y²Óævä?šš0+×ã,ÁOäfóü'
+a{ÉŠÌÁÖ"çþ<üìÀ®|ÑRÅÕâNRÍ@XüÕÔS}§×Ã@JqŒèË;Šòè<144iô!0"ËèJl¶0ðš»wWåïKÔ=€ÑzzúŠúãÕ<ËÄÛâSucoÙÝÔTm=?#ðgY*µ
+ªæß§öFŒ0Š<Ww(§ÚÝ^âÃðÌÃb;o|Urô$ÎTHÌó%XØüäµäÃã?íEÞ3nôÐ+ÌxŒ`Ía0ó¯ÓýÐ{~åŽÕÙZÙ.ù!ä ¢«¢û:§Ö;ÈAœlZMr:§naäÑ©Á+öql¶œÑï «Ó?ÈÁÜ[£AᵎÂ@£,$*J¶":¯&7$)ÝVMTv>5#ž ïÿPœ°KÂ.LI
rµp~[à]mqíS«ªKù»ŠùÀµüiŒºžñtäE
+¯î5$œÒWhV¬xx×(Ñàû$(Å©ãù{w¥lšH\Yñ'S}EP;º^çuß-P®f±³"÷+HÝl[avUHã~ŠîRµÎ'âÚŽÁ}ð|XPžÏñõÏ5h@éø{éørE¡ß¹áVŽÿ>{ð5ñ¿ÌíÕ# øú5åÒ5m _ÈR¶öhŒòþØWsYtñøßÏ [ësgG€£ï4Ö[ö<£ŽÍžÜ,:ªLæ°ìíùÖlØŠí
+6ì¢FÇR Sj-ðó;7ÏS!?wÁ,ÉdZ·Å8 ê.ÖçÔTØtC»Ê65³€üÆ]BÛ[4Ñc±Á_ÿšUØþ:õ¬Nø/Èž#!Êè'*þôø060;Ž¿ÿù =.&æyf£5£á&z ŽøŒP0jVÜ>shÃ
VÙEFG0wã9ÁP(Œd.äÄ4ÉýÃÅRDI>%ÀñÀ
+ÂlAÂaC,Äx{Ö
õãSŽæ\ÁµÍAçÈ$èrÍ&[GóQÞdŽôlIÙë3ùµ$c$HªŸKm
ÚhÐLØÂöYëG£÷Ä94d±>ymà÷+j ¥èR9$C'vŽª+á×î÷ÇšOÑ~Å\ðLäþ7ÿõ3VüÃÏÈváÀîïDµ³Ôàû³ã|_Œ`æã2këÒw#æä@R}pÒÂËetÆaðÙÐñäøCír.®W:nOïÂ`ObrŒBµ¡í,Ú±0Óx%¿ÃOKÕªîeΫuiª~»Ï¶;¶÷
+(!Rxå2¡êsøO
wwš!ø^{þsžu÷Ò<©×gV\§/$S , at 5E24(ýóì*©\pþçš_Šðp
+ÂYYîjÑ¿ÿEhwÔcÓ_^fmkOH±4Ë/ä$4awlYÎ$ÄÚ'âØ=gù8:wèæZáô YzÌ+€ÆÕlÁÒvØìQ
z>'+9×Ãþ±Ÿ&P©œõBv0}/±C¡ù8õt¯·ßŠÕŵ}\vW¥Øá?G€ÿSŒ1úâÂ->ÍÜÐb|
^"enpÂñö£îe$5 ¢N²d6ùÖ'/WÄìæÖ[4'Uí$ÀòPè.(! °cõnW¡;£ ÉJ#§(@Û¶ä]MݺÚKm×ÿBH4`q(«ÿ)ž"±ÕÔ®'* ±à#¹I'Bzjýóá}²ÓO;wzBµÃo×&#Lû0¥1k#å±õ¢¯¢7ý1#É8(Í,ËfJóÓÔì;¬ü%(S?m~JåDGCë5í³'7WU
À[D0Oïyœ¹ŽÕVÚsÒ^ún€>ø ]EÆ~Þ!Þ¬ÖNÕjZ9¡¹ 6Á#R·÷YF$øÎSú³åÚU_DÝÚ_-Õu Êlk¢ÄâíÍØSî§[ÒFÒÃ1KxSWOèÏDÆ;aœMM7Ê7ÈZIÉ€²BÄMé2.®B)Ö1ÁèŠKݶÁ~f.®@`Þ+ºBâdy°A4Ö€ÇÍ2>Ç.Øà-ç
à€1-n*è<íðÚÄvâÄn|¡m$ÇFãÔŽ*9î%~+ÆŒ
+jAuêÈDJÅ"bN>L5øFZl\O]2XY¶Tç%ËåX}Ñ÷À~Þw+ýßÝÝ/á
+ðÀ9þ[ÄCŒ©¶²5"Ðû§QøÖÅŒ0&àUÊÇ÷¶x³o
+d1Ä=Œ
+Oo«ÍÉ©µÊëgÎ*èåVG×t¢|Óñ±_ýŒXbÈÍR0ןÑešM¶cÙ)Ví×ü
ö·ETjô-r)pen÷H.¡é0¶;ݲr\ζW)¶39àRû<®btÿÂr}Y§Ò"¿ÔÄ'¿3 :5Gxº€·õ'ñ!a¬"æëTšºýRE)Õpž]EÅ(Hz#éÍÄÕ:*kN!a,"§kë\z\÷$rØÈÞñ/ Lú2H÷tŒÚä/î%Ê?¥r#sŸT^8
+¥y%9RmHJoÚÈi«zWŒÔ€)üÁ]!{âñ©=«.µn&é[UÀ¢æåU/ÉW^ç2}±hœ!µQÕÿÖIÉÎ'¬¥ñxE[!ŽÆ BßžÌ ¹.G&¶ØÁ
+SŒEÆEÏ6ÎGqoŸ»ûÇQp¹é+z Eß¿Eõ7š³q{š2!áÝ¢74óbóhÁwAæ¶ud3BîŽM$ÎñSËXîRKè@þ-Õœ²í^SŽHäú°(H±ÀP¥!ø9weA{ªêoaÆÌ ÌwÞVh2ûä[HÑÂw4r¯C
+Ég£ÄÆa€>µ`dš%öæeÓìGÊshùÙÇôÿa0õyίü 5±â÷{О5;N*ÔðÝY+Jeú{ßO§¿-ÌópÏn²;sUQùB-|Œ
¿·ôçû}¿û{2ÕŒõçpñ1ìA=NaÏ{ÏÔR»}ç¶È³ßº{ÆéîîØm;"Ö3OŽ]W°æJ>þËIqewøùµîÝE<}¬Z¿®ñŹìYòSþvRØ*òýMX³Ž÷Á9³Da²#W<d°KÞ6Öý@=lHé,åâ€["4?WG±äeËrxÙXeµsàûÆhÔu]H<^|Â=ùÏÌ¥¥Ô»²Ÿ%>UqØ,ýÞdLá!7P×DÉ44ttmTe@ÿMe&úð;óé&ùŠ*'žLcUþ1IU,Dilá
+OSŒüMeJ£4§_TÆxx+æ¿òRº,Y=<%ÇïvÌNÈ'ÃO,ë£tcÒÍüVUÕTVü[ßXÂuò\_rµ7BFÄ
î)÷Š1K|7R`£DŒ{ÎaÂöºŠÜ×'9'ÆT§X\r>mXBoFNf;fgÅ/ Ð#èBÚå;éü©iEHéiß¡Ûù¥õóº²%þüÛ=Ñû)çS >×4ÄuÎKétÁûiÆDYÂþòUvçóuÇîw#øÕòµ§2OüûªÀ·ååŽÒ¥(Ô'íCÏänµüEî@ÞgrwsèlÂÛ¶+²XÿÈæ~€R^hDr,.úÒþMsÚ!éz©:6ë9"0bšPÄÔhKGÑxÒµ€ÈmNTÂEŸèK¡»ñ{<ÐËÿú× r¿WÃ0¶Í
+n!._q(Õš+uqý°V"²¬C𝶲(]+öÄdÚð@Ð8ÙòX׿û^(É"hwîa ôñsk±¹¹1 `ôæAVó^6f",}Aîq0l.'A9¿ïÆJÄO÷ón¹Y·v:;:(¶#í»]Õñy<Ý{1a># ÈDŸÏK\vtŸè êð}êb
+6aŠà 11Å²Ì [UÖfÚù¿(qÂñc|èå2c¿Èsáš-èÊÆb9A°'3Þi-HÖÐy%ÔD9~w0?ßnÿ)Ù±ínTܯó}W¬Wæ€Z0%qê#ŒÝ7XÊ€ºgkHþô0÷Ú'Áéà|øbÉ
+'à©î!¢D
+FoÔ«ÍþãMM>Gs1Ö¹¥åŽ>Dœ"sï
+MV·ÔÈÕPFì<ÉDŽ?`Ð<éÝ·©³Sàfû€E/P5&P¯(ÿ°ÎKZÓKBL1³ûëÏ^h¯«9l|jà ¯Í*+Ïz6°b?mØã ÇQeH7Ý'»=<ù>p Ên^@UOß3t>€=+äв¹r3KsHní·'ç;d³®L_×ÅPÇýXðÁ ã3ëþâKéNcõ¡ '"yÓÖræÂ
ŠSž[ìä£2¯ÝüJ#güJí÷ÙÍ\¹!fKn|(ìÏØ xgêœü
+M+{K«Ë</0<BÃôDŸmä§ÊÛ¢ÈrhÍí ïXë d¯¯Ûì%mÜf;Š1³«7)36ž{,"ðÒ+*ÌMòHSœÜ»ö
+&ZÒ±ýEd Ãì×ýœ5ÀŽo^JK«R¥àÒ>HÅEí®AÝê¬è¥7I¯MÞÆæÑÝXË1ÐÐKí@#ætD(êÒ0FÒ;£0¡©4lŽ@2ãÆXS÷bE%©žIÝípÇfWHoùœUÐ8^ô»=*ý'¢ÀKSòùïî§ŽR;&|À4øîµµ¢èãaÔü òë»>CÅ
+S_UMÛÃÒ¶£¡¢{
·¡àße_Àâå¢õ@¢«°hÔ^9ŸÁñŽ~ îWßAK¢gNh©|öâ±+PÞô+d¢4]ßãû^Û]Þ<̯ÎwŒÝN·ã(ôQ7ù8qb*¡ñê€ÔÂ@£ºÕ§;6ÉSãOJ[wÝo_Øê»ý±7FSþϱW_;ïš%¯±¬?fâÒ4 Îæ;øJ5ÌÁ³!
+Éï à6ã ×®íÚ~cÃWçèA4R©"úðÔÏo
+x'·öÎ|~w×Î|_¯õ
+g§îÝÎÿ\Â9œÃaɱ9Iкî+2Ž]sìhÉ¡Tä[÷¹ãö]q:ŒéQÈß2Éǰ:\â.ëíÐIzhÍ€lû}Çq7[ýMÞJÆÈ·Âª]sþ>ý> àxŒËB¯Â+ìiáê
xîoe¥8°¿[šåÙܰ)Pø%Fø^¯×Á·£Ð+^Æú1}Áí/1ÿŽÂÓþrIÔw}%²ØèÂ*Š
+ÝDvýÇ|¡¯«·8í%>xÏpŸÿæý
+'@Yx 0üqï=JS×õ/.ãB bôþ¢MæCµG²µÑ··¯9Vþn÷}ð»ú}Nl|UË_G!â/ë¹èaÒk&8N¶çõeœ!¯¥_Úlq{;ÿþÑûÉOž
+ÆáŒnàíÛÏü¶øúy~¹<m€Ã+¬¹¢\úÒ|Åï7îí3?qÖrZÞÓ4Ç Np2q!2¥$ù¯@Á1:mÇõÏü8Œ~HÔk€®Jé1é
+}š€œWñêàlÒ;žs$«Ó*5?ãZè5;š²žC.Ø9@ã$E /dþi(g$t=wiÏ tp²KÚŠXß§2G§ê"iJÇk§x¡~1¯a«.®×kèŸÓømë_'øœû;9éà«Rì¥@¥ÓbÖú驿
²hžÓ4F¡#CÕø8ŸÎô(Ì~eÔäQ!£:Ô'ŒZŸÂ$|§íá8Æïœs
áïkÇz×h1$ã%pRiµè;ùjdqX³y[ª¡[nÓ3É|3\
+ßûöÑUðÎÊ/ìÅhaÌŸå¹gßïëuÏ+vÑKæ'kFìRòT[Ó/ªœ^à °×Ð6Èós±#u¡Ã£ð^q±'ëó·ÃÝD]3\äÈŠbhúfÒªªòCVè
>,ÍœUÌ£S4Üühá/
+mÙË\oÚ®ßPW÷3ZÉC¶¡¯à£vEX~wÐLºÎ=ŽJÇtœ)Ô«¹ÃóPknÛ
+yJ"îÑÀxøÈPfMd¬æ0|اky¬xY7;W[}Ž|v²·"êåúPÎ3MXR¡¹µI,9¬
+LÄáîÄçXl kTaÞä8"ÔÙÃjêÝc)pBbBih¬3*ýò÷úLvŸS÷®4iî®ôî¿KÜŸæäuÎrSçÙ«Ø ó#ÖŒbq÷AÚÄršÒáY{w]îb«^ÿZÎ=@1~€lö0œž?t£œ _ni}{«HI
ó3ÎmAÌTíRbª"é¶öUšzÔ4á(Ìf.@
¿.àŒÿPÉ
+
+c®š(5©³4#Øb|#96°GþÑ2-âE7 yÞÀêIÓaà,9?žcýô,¢c€Ì+ŠHÉfæØZ =EæQóéVüädD=ÀÝhjbB :ZÙ# Ìèíb5ªÛ1Õò-?ÎÝr(ì>%fNÀ÷EêP
,{ìþDyÊ|iè'ªÁÈHSüÿI*jä¬cÂúQ¢¬©3î^
+.°Ï<Óõ°âÿÒuéVckà²6/œ|Gûêý²J¿ÁÂÀONkÒö~w<ѲW@$Ó_ÖÝÉÖCÌÄjõJâͲÒìoESª{ŒQ)ul©AŸÊ`§DZº`ÒA®
ŸIÀ8®-_ÕèÊ.{³CùP°gÄŸ`QŠ1ÓDvJàÞäÃÀåŒ`æw(cŒ%-¯6Œ7!&ú|ªc ¡ÛfõE<SèÐ %ë4¥dzºãQÂ3è×/j·³·³n ±À]pkÚT#Åû)Q£îqilþ[ßÅðŠQ³e£Ø¹*B6ÌöËLëÙÞ,'°¬ýó\F%ãçj[§G[DÁ4¶êø³6|žK^Ñ¡u%.¡v3ó_»îÜkë¹±ÙkÞ§yÿ׿8ú¬ŒuàìŠ
+ew0Ï!pHd2ÚÄÂzÃY{ÉçhÁbFK*ÛÛg==*ð·Æêø è»[_óIÿ91øYGÞ²ö×
+ýØßQ2qž·ûE¿Ö9±"5MãÛgÝ%_á.
+ø.¶& {«ñªÑÒrðÆÿqNÞŸf8Ï
+õ-w:þ}$vñbqŽÇ)×T ÌŸîüw;åïýº>K]€/?5L($Ôº
+€ýï0ÐñûB¬÷[Æ× Qœ©ÂcNwoÚZýîÉ*ï$u[«fÙØ:Õ¶KÆANý/ŸURZ鬸9¡ÍÔ§D!7æÌ>yú>>Üå&U¥MMœµ§üÿÊ:§èŸ·
+ǶÕXÿØm5¶mÓØjl4¶m4¶mÛùÚî³Ï>{|ãYë*¹Èx~ï;×sEóõ¯Ú¶ÐÊ]ÙÉjáYÛ7:ôtk
(ÒtТj°êÝâ·q6×MhM'ÖGXñÝlŸ²o ò0X<Ã8qø,qÇ
+@qhÂŽLÚþ]Cê¢MAç©uÈ02JjËðz«|ÛÀÂ?í
+§ÝµF±X)Z
+¬ÐºíuO¿øò§³þÖDä.ñ²;µIºHÇ5,øxv+°¢96Ò)ªãýO^Ýö? øÏ©Æ
+·Vá>ïöøÿ<|\9þïÃG&ò
+sÙzráÔgßuì
+]Û¿»=SÐÈêôŸPcbø+Uñ'_cûylpünNPxÌ_޲Æ^¯Ræ®;[f]0?¹@¡®íN~HÁÑÑMÄ:ChO:§È7ÜÖg
+CØ"N/± ?¡ß_ËÙZ€©£
×<÷wùTö*TAe·°ßÀÞ ) |¥ÂYÞÕØó{
+û:̪öæ75I±»Xõ6A³-è<¿ò8üÈÓÌCßx°wß¶ªImoΣ[sÉRô=>öû/ýw?¿ímŒ upš
+á I7ÂW²èž3ÑÐ"F
+g÷°zÎÖ¶ë¥ou©ð;ùŸÔ'
+åD*I1©**%ëÁR/s3æD6D+ö§E)õäâ)W!ÍíÙê
+Úõ§øð6¯d>4ºXD\µº3u
+£ l7n
+ý
~cJ¹4ü8è[«bY&RÙ*
+
+³RÜäW£Ó$ÒDoŸÐ ²ÂV1Óýýlà7ŒZâ ß@rÆœa?àqÀ²Y×3COÀ )öcûÂ?6ÀÜŽª
+ " =ʬ¡©>Þ²Æ 4,^ÀM© fY¿tQâÕß
+/LSW¶òç6º 4
+åg[õ3ÝÁ£uöÅ7§Ä/ßJØ¢EºüÉÛç>cíó`Jl
+±Ë
+!zÏJMù?ۮ蜮ûyC4©EOpK3¥3
©I¢Ú¯P=ôp{ '=¶-à3s·ëíç yê<ÊäFâ;=Ø®u:Ì¿ìÜÛt©ÔŒG}lïú XS²0B_òŠ4Ø
+ÕWAŒVb.ýEÁ{D.ÉaÅŒhÒíúôè
+)5°y¹ø(Ò°{}¥,ß~{-µ÷÷+:Ú~òœÀ<Œ`
rÇh
+ëŸÝ"¯ŠËOiÑñEVåeµM+pÛd¹Gýª*ÍšŠYbnôî£ Q/ûë3ŸÜo-štØkgA°ŽüʲýÊÒùÖò[ÍñBMóšv&;>*Qðs¹1eU%ëÞÈc7 8oXWr°hÕbeÞâ&
+Lüã»&ø:x¬í±uGìâ
Ã9G8d³ÁG8]íïi~¿ïAЩ6Å(šÅ ì·mÑRF=VWÑúæòÿá>M¯ðÃÙ%_.$6žN{^T
<)YûK×
+÷Íî°¿
+n¿n @ê|IßrÝ÷é€ÁæMZrrµ¯ÖŠ+ h|ªP^^&òq?©`ðh]é¡öA¹â}_KÄÂ~I±òÌŒâìtâÓ ÂÇ÷LïwjÅßÛÝKÙoÍ·ªa¢ÝÊzÑñK/Õú{Ã®çØŽ€"sazûŸ¿²:Ù»NÃvËÅéÀ÷žö#¥UÑ#6ðýÁ
+ùÒ!õa©>ýuàÈ~þò ^7([JÖ5Ôßëê\ûŒ2ÊÓÿ«ÚÁŽQa4èâÙÏÇÔºQ>¿7Ò$í°.Du³Íϧ-¯..üØÂîYoOdR^JvèßVðŠÉÑè°G»\©-$Qå$IGýÓùø\3ÓÓ·õñz0¶ð?÷ŒÑÙ £å:DC÷ól%œŒ9ÞÕþŒGû1ý|¥mßF°9=øÍNêg^7ŽÁú>V¬§õ?Þy«Ö<<?åcâj¶LGzüb8db8£/Íð¡jóæ¿¢ñàcÐÎßåiKÞÎÁ+/Èw^ß,M7^õ-ùü¿§ñHÔ@®DÛûru=ÛEØÁ»¯§&(ªT^ýîTÈrý»û`-:bF èôÍ¿8ŒFž2Ôx©e¡(îœP[Q«Ý0öêXívº3UØŒju$ÌfÜÚÜTèÌP°nÔUô!³ð{É,Ú0O¬KÍÊ$c!|Ë=Çf¿tìÖÚùõêç?}ôÿé4ÓRì*Nüš&[&{8œúk€Â©!Bp*ÖÕä[rJqeþÜÊHÑÔÇôÖ¹Ýîª#4ãe©wt;]Ã+WÎ~
+ß/ŸÞÒ@.4œiè:²éRºÆÿa¿ÿ-C'±Iâ1«ô]Ë'vdhý'ïöµÿ+ïÆ¿Þ tŠÍø ì_)_®/ê`^ñþïÜSCY9)ÿ,ÍÍê¹i3ÏýŸÙÙßMüµ=ŠýŒ.
+êH,bRbå€
+÷ª6ù-uhÔSðÇ
+h1ÜXJ?Qí~ÁìëÕ˵ì£)TE¡Þ¡wzW¶tW}ÚUùèæl©ÙsZ Bk}
+=: (O|Ù[øÍa+ŠH at xÛX}róû/3-èì?ÿâðšç÷8+ÐM2èÇÎ0@ë÷^Zç_pù=,±ÏwýHöU¬ßôRGpŒHœ=JŠV|xº¿FÁÊÆ%^mì*¢jã©PzGòCNùðgêBÄmjlçÁòÞsA³ ôàOßú§{ØF;éL ¬-÷×;¿Õ¹Ö MyŠÐ5â«_Å%q×ÜjH³ÙSwähäv#¡ÌRð2*QQ"7ÂhCÍ1Iµ§*Ù[ÃáÅÚNÑå.
+ØbRUF.õ°0UÅÎ.œtP¬ç®€taRÄCÊâà÷" £@m#m°,"œÑÛeo§ vŽüª(ÿëÏD#Çm5z)ñµqáU.FÁ²q3hëðÂIÕ
+À-ï"@èkgv27ú€ß0z WNµ
+kPŒ3/£Î±#ªèï°óÃ¥&o,ÄŠ2Õå.Z¿*\"qq~ò3/e-·Yø|6èm(«uýþè{ßèê¬9¯š$Aò)l®r]]ÜOÛâ£2'ã):mü{Ræþ¶¹0þžZ®z;RÚz{Pô`³)œ,R}k°Ê±.®P4C¢fñôC.šëO/ûìU t<_µ[@8.iÁû*udEcû
+Ë«ÊŪã€RÅØä«Wyn
+>ïÏoäÉËp
|ÅèÇDÄ|Y±}Ä ØÄòpÀè Õ!6îÔ|ådH,džúd)BeWqcÑõVðóî_²W4 SyÄwÅÅX$5Írªèå|ÛU|ã,3*ž
«+·º>Ò>~s&ôºAÍí+HÆå©¹ûL3%å€RUõîO3ö
+!èCrœh,+þFåHé<ýñx »$ÍY[4ÆþâÚGŽ'-\¶ÉtÚ
+-VÎKÇ5sÆ¥£*Éå\! *Ð5!sUåÀ¥åVg
+{Q²ÿ^÷ËBóA%¥«YTÕË×ÓRWiv#Ä·HœâW>Ð?ŸQtúøÉBŠ2?V×€MÛrÍAQ÷-±fýrКâT ¶€;ŸÕ
+ LíËKðòŒzÔ$kNÓsÙxµ!®É_ìçžé(xZìv®º#wÌp¿áî€$YéF(vyn,€$wÂÑè»wÖï¹»ËPõÙ5ús-x"a©öàcdyn×G3O^2M/:ü[@*±ËXE-õØþtÞËæØUÿdVÉš
+4\eü*e;÷ÖüQ-G=í :&è.5x8Ö«€¶aî>l:Ùªø¶ÈVH7(_Êê9mç±qÚùÿÖÑÐêðKtɱ¢á>ÏVÖs;
+$ÿﳩ3É8l[ÅzšF±Æß
n
+§VI©þ~_œKðŽåé6èÝÊËÑÿôúwÝ¥Ý,õ'³Ÿ\ü="äZX£ŠÞ²Löy~h7=»Ð¥ÑxñÝ.ÿËn¿üg¬Ýež/g`xd=Sô€¯{rñ¿Zýõ¹«^m!.iþlÙ%VÒ°hb*õ$|ÿW[EK^YÿtŠÂò»[Ph#§ñPìFUj>ЬØI/T{ï¢ð¿WÊñ®o¡#~²lxÀk®YÔ8={êO=7hvHàyK§ëkÐ0ŠªqÌU¯ÞükèíyÝŒäšwÚ×®6¹ßÅiÛt&5/#þÎ¥:i9xŸ^`"íØ·Ìú®4c~ºÛéù]¬/¶þâ?êÔâ5óÞ¡f-NŒ-"û
ôXœY©?Ë\jGøÑ7}Z
+ô6øf
)œÆFz<2Ú;`y»ñÏpÄL_ Òí/ÝŸõYÿz5îîV
+ÌY$<ñbpÑsãÙ9òüàœÔšHé_ô}ŽYy8sxû¬šó\^ðöN]n@>Ó¶CÄJVñÂO7êÿ5Oá¿SðÌ¥ûºØÃ»ŽZdMQcïþÞ[ý#¶2§LVÏ8,œlí>ëK òëºé6Æ~íD¹0VÁéÄ/8ý¿0®2UŸÍ[f@]ck<×$šôõšì1PÍD°*wÒ@
B¶^ŠÓ"×gø!)~ÙÅ<颺«ŽðœÅªÇ9eŠ!ÞÚòÍဪ ÑöÁ!ôðL§mmô¢¹¥ÑóÊ
Ÿó8lý|ïp¥=¢Ô8±¬ÿ§«üB££
VFE
+ÕZT'ê0
+
^lw/€
+/6äx,RFs±Äì{þ<;Í
+»p8ÞßOƶ?ÛéägÄ€ªHQ@ ê,íì WñÀåmô<Š
+rÇ/ŽNøËœº¹øùuÞ.@]1G°ËEu®ï6ܰŸn^$#¢ ¿8%8áKÏBŠ-nXÀÅ¢9C»T(žŸ«JÙ Ìåk5[0YxÊËxM×J
+Öj0h'úL²ìlÒtMÞ+Ó]aì@H-ÒîjV«dû
+ %ý-hõÆÅŒ¥€o§VÜÙääWžòšRBå]ÍÐÌå%X³ÜÁ9?V.-ŸÑ¡u_ðKoÝmiJ6Añ9TWåûÊ
h\ÎgÆÒÄu!Löp6]IfÂM
+R±L¢k±`Ú|!Ðånã<d¬·Ó®Æsg?l/VbO_Ÿmx|Îm å2È¢UàGá©Y¥ÿdÖŸUWG:qp!f¬£€fZX|úýšz*}ÈEÜÈï,ÅþYûnPE4àE÷G^÷zÉhŒÄÏœì"o]ÂU?2;{UO1Ò€6·SØy17ÂGô>fvñAzî#Z??/©ùmyžËÅîéVIݰPp «ûëêÝŽ2çšn`gpàc}?žÑºF¥±.šÐOí
+°bšcæþ@šÍ
°çÔéÍî³Ä.1QúA¬ö=1
+mk:`Y:ªFÿy©Ï7!qµð]Õ#tÌ®²#Ÿ¹²€ÉQ)SÊcI¶:Cþ3i/T0yu
+¡&uÊc¹sŒ{21#{Àš¡>±ÅÒø~õTÚb¡TZÈ)éfJý©DÊ@Œ*5Gájícÿ)3¹õàQ-YuMr,1±pX2XA8?D XRºNMkF*+hÁ1Æ8¯ÂnÁÚcÀä|vt!
+ÄÊòÚMGŠìcÜÍʯ?lnêÊŸoØŽ0ß@tÜÐC4ÊØn$?Ž}ÇOMÇüCø©/<)¥ p;Þy0SUF€Jè
Èš=»<ZÅ9ÝJ[ã»YÃZ;ouîj}Âén]2zÁ?Çãp)·-,Rb+ùr€ñ=å°§!õŒVõŒÅXVøÁV&£<Ä©f2(ïÆ**\ªŸ^iÓðíÛV2"2&ðú?,AÉúA8GO9;9lè*¢<ã&fÕQP<îiÈ$¿q
+6á>6Ir\]Šó±N'Èý£YQÏv"ú®s^*ÇÄ¥ã5KÍvÖ+7ï× I"cÆC{¿GE?ö¶ñÚEX6rÁ§T5C¡ŒÖjâôštøm§"ÙoìZ{TßQ\µ·)WñüvF좮Fw¢1}nöÇæSU»JGÊZ$IbŠëÂÚ(ÇÊvõÙ£s÷øRà^1ßPŽ ÃD,»?çM4Ãoöö¹q=¯>[]Ž<šGL¿qÛA~;w¡ÃÁan.åb]¿<o⯢]\hxêqÐøa ÖlVœîYbÇnïæ
+ÒÁÑkI%øøt8zé0ÛÉ÷I'jêÃëüÎ%}Uù\SÔóéÎßKà-æ¢Vµr3B$êò6<¯é%5}#bÌÚì¢Cj¢GšáÌ®µ?)Á±í%=b=K[@÷Ýó¶~§Ž%v€Ñï:E5q:Vë:]§ãÔW:râ²ã]ŒâQ°DŠ|{udÊÍÑÏà
û2~xn¡Òo# üÃ!ò>ÏÕ¬ÔzÐgµ0-w- Ñ'ýÌ>È«Š5ÇULKéû«SÔvÝÕ-{«+®Ap©}_!üzæâ·p"®NºæèV)òœõîm?DÉž{Ø3ëÏOÕü\7tÕÎOb,8ÕðzÐÄE<TòÎ*ÝãÇ¿®€â¥
+q{@#qž«Ê§,¶L&kì0lAÏ9)*ýÆ$ìü@Ð
+%Ð9øJåVõ®ZDL|Ç|Ç\j¯'_é
+Ô¬Î'ÄvŠÎ~nSU$dw>"wúúànNlAáíúyšÖÓÀÔè 5llÌû;v?±Ù;&Éá}f -aiÁwDÅÏlíîì¹ÙÁî"P$÷vòF'µÒŸÍšèM×¢äµ9åã€ÉÉ\$©ÕÀÖöÜÔtÞ;JÜu
:ÂxéXîÓfúŠbÞ¶Îá )À>å9påÎBõ¶°!=6rŸ¶ (+*n¿·?âÈ·ôü'ô8&ó29- úŬ茟ÑIa¹Ã,{Jµ efÒèÜkë®çfù?I;U®~³«±êÒÆeÁß<&&fªÊ¯u?.þÊvdeÀ¯ä«še©³M§±ióe~«éÜ.
+v.ÚÐC"â_äü×ýCÐSû âŠGáÆP³Î<rr·7ëaí <}Ä£ÈA|tK?ïä!Ö?Ò!$®Aö]¯PKr×JÄL¥«cNQ§Ìïà#Ê~»(4ükê£yôqÑ9~¥¬~Q€,²C/\ðüÃR"8ö+;]ÔÀÞc¿k
+9ÚEàha4HN¯}ËŽÆÍÝ&'ú¥çGÍÓ×ÄçÏêÏF;ôVýµ<EOÈRT
+n~Ã!nÁë5€Qô}Ë>8}ͣЬAI`Éi=uãë^Ô<Éa÷+56'Û/vÁÌûpZÈCr¢fL6"`ÑM«o¡££VÂð<ØœªÍ
+ŠS÷p*ws,W a8$ºÆ£ÚJ¹q€v³§ÜÂä÷R§ôúÅÈÃoò<¹#£ôºßïb[Ä5õ"w[ÎoxU:©GnuŠþÒCÚ3xÊ¡÷ åUÒŰWbµÑÉefJA»~4äØ(œþWž>þ"7²ÛCŠ¢þ1B6¡2Ö(9^-zÊÏà±õ7çvû7¢îË^²Û}éEW*8ånŒ±]ÕÒ)0&ZEHzflypA~¡ð©³nËÝ@f"ÛT·8ÒôCÁ¶ûçµ8^§5-l«(iF:ÞŠî"Zp Á«Ö OzO6ll˪TOHJÈ?µÑš¹U'ßí9ZxŠ#ê&Û±ÎrI¥ïÀŸqí°TÖ×pcó|1CvçÆ=o+W°q.±6w+ô".Q¯ÂЧ%G$S!vÌ¥š²+{nØïSQ*
+E$Æa 3C¢ÌÎ+ËOÉfGGc þt $,ièŸcSR;^
+
LC¬&\¢ÜMì/6êÝw
+<?D&GkºØP u}2 =_ÉBm$CÛ
+é©åËeš7U
+2x³+\6;Bæ0!ä2E^(+UìwÔ':$ÕÇÜÌÛw5Ÿ Ø®FÇ«ø]E(»Tà3P7eŸ_ö¹»¢lC"xecyÉ÷i³0}¬Áþs(ì±A$9à ÇÙ¥kUÆØú3Çiöùl¡íZÌO±/dÃ)úâäéœÖrøXýQ{gþ<*BËdAA
Ìü]9w¢ý³Vï?ïªQgœx)®8¶ 0ç±P®§íÂèç-rBšÖå/â£M)Rÿ#ÎEª"ëF^ÇYè_ymåVRÛüIæÑLA»X
ªüÂÜ=ëî&œ×=îo.üÎCOíÒêf_^¯¶¯m×Ó9Úqt}<Œ;ýgÝŽžëåÂÀÀÜ¡ô«œûÛv2?ÇZÍFÅWwj¢uØ{1?§ÙBÐ÷®€GïâïrU"w] l2¶Ÿ@^µm ¬É3¥84Ìe,Až¹j.bXÙ®4aÎõõuJ+Ý¡ÐBùà@Mö>ŠÇE¥Šo%RSùÿð@^=Û¿Oc"ÿbpþòfÍÏy:IjŬ@áf÷fÎÂÑ#¹<¹îIš
ÔxÀ<°ÛN¿iµ¯uwq^Ápäp4yQq~ÂàÏü¢qÒEaØÔâëÌØ¿!]ÑñõÍðñÉå4iû]HÊZêødÞå0êqÇêBa¿?>Ò¡i?Ì îIlxîwÜæaMŽqË¢ñ·,ì7Œm8e:¢[ü¶¬¬~.ÕçlPj$Y€m`.Y¯4CÀ
0Ô±ä8ÞÙV@]ÁÛþL3BÂ[ÀÛä11ìÞ¥é;§Ö¬âÁÕÆ\~£?ó¿·ÎÉPòËO=U÷zG²³exŽ\#Få'ï çíGÛ#Ù&·vB¡ëòâŶ±ÅTuÿT
+öÞï
+õþ¶Âï#KÝÝÝ3ìL$÷}#ý/j¿üMíqdQ;ÛÈEkmŠ3<<åÚîKïšL
+×tÝõ;D"#¢Ç
ñ3Æ*Ce¢5}x6gB©ìúF0ËÍÄJfgBP¡Ž Ü"Ò«ç7ùD,·Ï!ò ·MS,Mó>Ô8©-@úG|°
+n\>R?"óÆšC€%ÐÃ`}¯ðìò[9ÉŠÑbÃ!®ÿâ¢.qZâ}Í^.õç£<÷®ôfR&OaIëÝ@áÐÄši Nrޝ?BÙÝ{Õóº¶E¯F1®ÖhÞÝά>«32!BUmw]HnÄjÒÕà·öûDÞŸÁÐÆ¬³Bm»×MK+pYV¬ub1aàÜÜÌ¥('6cT.ðûØ_À¹dÙÿfy¯Gã?Hy¥êX.Ý9~²õã-¿ÀüÃðn2€ÂáÏ|Lý¹ ªÔ±NòMgq:E+Øëó$(ß7µCW-(&ðÁî4€'s
+º-D/¬qä
+êC«ÊÌô®{»`xäøVµ°Ö#Ö
+ÙŠ\AÛM>è`uíM
ýþ= àRð¯+1 ¬¯šM«mõf©¡òþøWw£œäË^sÛº:áÁ]£ÈÑpéDM|{±mÉ&ómýÜÐîïŸA9öXŽ£*VnDºq'è'É+Èb¡n(ÒBËbŠ2Ñ)ßE¶o+žuš«'Q50ÿhÃV£ÊWH;b»©?»j_O«ØÊXß°;·÷=[rÿ`Ð
+ý RÉíAM§ÀA" ìœJ}8ü>Ž(œìøñØt7šÙ©º :?Ù×æÛ»¿+@«Èå¹:Q~áWë9ð©3L
+ž<EØ
+ðuA"ÐÊŠ%Ãgîìñ/äY0¡Ùøi4^zÃÐï5æ"¹šM|:ZzadcIU¹1âø&ºÓçLǺµ¬Fæ5}µ Ì7Ÿ0(þxÄCsmtmU墟Kfp×T1ÑÕ>duq(d6
+GÉžësN
+Žàv¯ë)0ÓËSR*F%F!
+G¥$Î-#wð8éz1É4EäsÂÒBD*ëŽ9Tþ/RÃ3ö\
+YOÛxÌY/¥S'eÿz)¹ÿp¬"BHVgh8ÜÔçÚÀb²xÛ×Júí
+rx-Úq Xà|+{ÕŠ òíkÊËŒ
+ܧõF?Ñ·Úï7ÎÝŸ¡ÄÚû=kàŽiœO)lÁpýXç!ÌVÊpÊâÄb¢/EWWÛÄkæï\¥[Zd«CdÁ[_Sxꢎ%XT±ØÑ9ÒÄ27æªFíÅcÒŸª
+*
+*NdîÖ9¯Žî Í)l7·¬ppŠzäþQCÂÁ4ÂÄ!%«äÍXBäK9$RÊu¬Wíx*ë?WÜ¥6+÷òþ
+Q5âùè]EáRŠË°²9®>šþrüZß >úšÄ""l2^µ<
+lÇÿÊ»Ç- ßoçmP÷kT¡
+z|çØN3N #B?¶1JBHÅã×§ÿ`Öûfo.ô¿+«BºBÞ ûIâËâOV7fY-ÒâIBaõ·~ýÍXØ-8^-éàÆŒ ß6ÑÍ.»,pò.V{ÌütÙCßÃÿ/²?]@;žèì`ÏO=<Újɺ8íˬiÂ1_h|pí Þ²ö9Ñ^œnÝ8"7²è}xEpdÏGhóÚ_=:}4óý÷ÁF¢ÊœïÏ3f_ñ
ërÚ_pœp¡0UDZúK>GðhÖm_ïÏØ1yøž8{{=]Lœ°ÅT¶HêÑ1l@Ašzâo÷OÀP_/lw£ëR¢5²¬ê§SË
+SÁÌj3RÄVê~`}íÀç.}ßãÑœTXÁiqmj9ÃgDb~4"i<GÑD¢(nøMá^)šéáËUð¬~< CöœÏòÛ$ëãÄæ©q€§ú€ªÒ aµ>x$@íÎSF+`ºXC÷Çã2í<:{À*Œ gKÅü!¶H/ë€üû]lûüŒrûhtzfº»[°Ö_ý]^0&mSùÝÃò¥¥ö+@ìºuO0Ÿ170/nÓÝkPÎ(cHàû>y±à¯GÐU\[ÈB¿_ ÝÂ>7úœ?÷+Ê^oÀ
ô§·WBÒmTŽÉù1³mAÝ!y±/ßå{Ç1Ò»¯Ì8ÓœÚðmüV·vŠÖ~x7ÿŠ3 °8§<oV
+ ô
Ùï8.ùÍg¡¶Å¶âR
+
CpI7ç)¹ætÊ$+$[h$W(C4cø¹Š
+UœÚÂÜÛ7Ÿ,ÌyáÚ5å%A4xÀDùDo9!ÒzäÒ
cö)õÝ»¯(ä# f#-Ç£ÔZ¶Z¡Î]ûµ€}Ùö¶!I3\0€Ž)JNnaûÏýÛÚEÁvO¹Œ?€«0¯FÔùÃÜh©â÷hâý
€x¿Õæ%%ÅÔ%(oF¢ç#Òº€GÕ×6}/]o=ÕX¡§ÍîDžüÙq+hØ×*°ÇØ`škŒ©Þ>6?ÙßóÝѯH%œuH#à÷ÑWÁºiö
+y¯ð^¯8YSUš\³Ê
+]^/ÕÅß)»/ÆžiÂFÔš<ÝåÑñ@Òl'ªW¡\YÂÛ}šŠ<ÆÊ÷?*",²×ª.œN\QÆ%{e%'Û]¹¹âŸNFbÔàõ²q»Q:s®3Á€ â5«ë}~³n§5ÔÎÓ_a¯ÎÛëØtaÄ·EœU,ûe«eZ²|ÕjÄZ*pÜ®ÐfåIR$í1[RØpÕñòiê!)EÓâÇ(¬2LÕV7»Eó,*-§²#ŸL]Wc.!©¿¡;·ÉîÊÔZ÷ãHPŸ4@œÓg,êóšboLÿè6-m×l¢D]èrZûÉvÙECmEGr#ÿxOR|0PTA£ !YI V²>³<ô#tTj£§,nBW-ºV!þæ3¶ŠÊE~ã3çruÿò1îOWN÷+3~uÁé4œœ€plßßmêYRütßÒ€ß ÍHÑØIºöªªÈ Ü&®BÑ9è¡qµ_ý·hû:T˶vÉ Ï"B'ëX÷ÈZøR98O}»ÂS]k*
+·'Å2évÄ©ººnŸ
Töâ4ø«=wÝi`ìzÒ]8
+,èînèfÕbþ£[&]×aÆÙµ]~áššz?o)®¥deÏv62ð[ÙívLèdïÏàÖCßÈá`!øÆË7×'¢.ÕÀÔñ ®hªÚ1¢§ßíç¿rXg[ ¡;÷U§Ž§zR×VÒÐMYr5»ÑOYæÖþþðØæÊ]ÈìPÙb%Ž®ò§R1ÖQ÷,#Súÿ+Ic&·ç¶õGµÇ»}ºV¹z
+±B¶B»eÄ·ãU¡§NLÛ§ »*èKH¯œÑÕØÞFN\D]Å·A>IÏZïaWnw<Ì_Íaæ¢d-Ì*CŒo³vü\*æòÐüMìw¿
+êEÇ÷µEÇR=÷C=}ñ.(µýãÊLÇÔÏØt³üLéðf窡{³s·|0·Bh£«Ã%z| I_
ÂðZe_šáœ}Êyœ(I(Áÿh9$Ç"8Åw)¿ÍãŸÐ,<Ïûª1¶H¥ì Fú¿r¶b¶ÊÝîù;1lî$Zg5ħàa{ÜËnÅÄy$.àVJÄIäåóU00ÎK3KºÊ
+ZPò}BåE¹àÄfP€~µiêÎþ
+ªJ ^ÇX|ÞïnöOmû3t"+ùÚ;t%Læý×xääÁÁyÒ¹W?éÛÊO¬'ú/?wUû¢n¡ûœÜr0ßüÉÆÓBþ1ϱX/öëk#ôYSæs"VàõOP
+à+œl£[eT?òG¯Ãî0ù~ÜzšÚýÃþ¥øÞq€¯ŒÏLmé·_Ÿ%Þòùò`ÃSBwZÙµêÆtF¢³%í§Ds×
+jB.dÆß€]aåæÃ-@õoð³bVÂqr¢ã]T'ÒgikŠA€¯$lÔ%#ıÞeÃ,ßIÒò}qgj~~ŸÞ:HÚìÛ×¥c3ŸE //©ô\`©)ð$Þ®Žøù
-ï\
+ÀKù;ôŠs`R×cÏw÷Î2@`dpó$DºuÁ0t6C³(E øÙÏo&²]aýµÒÖšÑú`ÿ
yS vz·/.ZûPið}ŸMbßwÌÏz̯m°ûçÑ8º9âIßïÌû8YàÙfz¡nøãPïŒý&4z³ŸŒÇ. ÿ²»;7}p+Aý¬ÞƯ®FrÁéôþ!6
+ôó/b_Â>6ÇOØÌbÂ|°cznØ*<WN?Xéâ@ŽsÀ`[Wd§Ãè×ûßÌ{óïÌÛ
ªþwæÃQÉK-3¿Ù€S'!bc9+CÑ_è:Z£^€Ÿ¥h&OÐE0Àßb4ðÕ1U-Þ¡Â"Í·jY}ÂÔúÉÍ)þïŒãÕÏ~¡.NýDúLkÄ?Öù+©[2
+¶Ï2Š2²HBÔÉÀµ<
+šEº`â{ôÃÕ»
§þ©ÇØ?nÜB€:9Ùi?zŠåÏ8ÏŒñâŽ]àŽ÷9©6p|©Œfeyýãáüù#æ¹`Yýë
+pAõÇší(á¢G^¶]Û1z FÁÃöí0±+ÊAB¯ìÊ»â§$/·*ÈKf€¡ÛV°úÝ{vçãñÙ(ÏýpSãÐcØòA
+ÛÐïûØ ºÜ J¬ŠªVO1O"ñ
+,uȳåÔªSöD4
+®IãKsSUáPývVÌ€]€V!q÷Õ
+Ãÿgž&xÉhcoêc`\ô2õw]ÝE*þ7o°7?Ý`Sz°íÚ>EîŽòÄžËá1E7xS£ÓAã¯_@ØBö@Ý61ö;£ýéèá{d¯áSÀŠ ã&')b/Ëâî§âbá.
+ëÞmìþ¹Øã¢vÍšè5ÛåØ[cgA$8by;nEÒ~íÊ2|"nÞa
§7oúRŽAOšöÀIß³{¯!4 çxÌ\º mŒ~ö*ñÐwþ£»7çKö<Ùw=žÌÜÓe3M`0(;Nõ}NDü`dÇ{ÚzHT«®£lT»ªô%šâ+GhqºrÀµ©I/n¶s*³ìÁüpcËø¿
+>ç8mDÒV-®iSq3tþÔ`а¥ÖE<hÕ
+)ôp³ø>ßð¶*³®-BÛðõÂØ.ŽèK7VhJçå@@ª~ÔøU RŒ»óà~u¡Ý=q"n22Û¶÷dÙøuœ+º%lé>rCÏ(U6IJÙÞ}:×+ÔÀµZ[y¥ëÚÓxXJá4f¢aèJ$T©tPiþ²Òö#ÃW¢W%UÿØïj±#Ü_ì<®íjýö? ŒuêzfZ5ÃÈÑešRXJÌŠòs%Dâ+Øñ"ÛÀÍòºG9+а¥š
+ªœ\UÔå5ÑÂ)1äirÕ«CûÃö2
+ ÛÊ«FPk#«,vé²PÕáú3ž>];ú»ì&ø§+žÝ¡BÐ*Êù"dO=Márß,í€y)ѹçhŒ,©ÁÝà' V7)ßyøwQ.ÝøâÊDUP;HoÞÔ=Ù z(çåÊrÔz?UQÈhʯ,0s8f{£ë]2Hl·f1ð3aÁa±;Ÿ#-A{ø+T¡E1ÅSiû<Ú±«Å¿«\tõÌÖ
âš/¥É±{²
+X¿fØëm¿t¿sIÿå)üí{ײã¿CçŒæ4"ÝÑÁ®ÎMµÅPùçüI"\ͬÔßÊ>;Ñmçn¬ðÏæÚÒ Où_GbÀ¹uÎR j-±wNó{ªÈC¢Žü£ãlê"µôíU!@²±·g%Ças¹-Wr¯¬·Bž~|"µÑàãÖèÕ`øh§ûÖó
×ÛÑݧ`iÊØÂŸ_(eØõ$Döö~nú«bêP«:ŒÖcxeïÕg{£¿ïóËurùfõ_ôݵv
àeùR±ü2ãð®ÿ5ãà6WñÆÓ¶al}^°=Y=ŒEu~qDØÆÿbvÇofKš}]ÚôèîÐóÁ- mªt䵎,qéŒußMíŸpÓx>°þ®ó7ÔØrà¢C°sG\çäy]8Ü×·i4.Wþ)fû^§$OŽ@
+PUèêú_ÿ«Xm<ãPð§X]bîœÖZèÙœ
+ìn}6ÔæVÖåº .ÁÖIXol
+aÍÍ3n²¹Æ}Å«0æîÒÔa=Ÿ1(So
NÁí^áå÷ñ¥¢LÐì/£µòËhò&,j
$à%ol%| <BÜ5îË0A!X"ì*º¶ m?q\§?×N9çü€oV€3ÛXv<ŠØŠÑñHï}UðªûŒøRoü
+ûÞèçãR²ê
+£
3]`0
ðé2oìeÞþ_Ù%®cíG¢8€E7VÑü«[Œqùø9G
ô+ãŠsÌB]/¹SÓ(è4 ]ÙñÞïÜU§¬¯?·©Ie¡I w6 ç*àø,L%g ªÙòýrÓhKqpO at HßÅç¯?4£1éy4ÒRe.0ž.ž.Lá©ú»±üùhFÎ÷×)K#âéíÞ&Dst.RÅwaq,ì[ XYé'1 œ4 Iu*89óÀ¯¯Baé
Ýíž3cºŽp8>®ÿüÙèg÷ôù?w1FÁìDGòór·S:\_|AqXþQ.úžÊ\¡©ÐóI\$Dð±19å±ð
ú/W|o>íXéŽW3§5œë[oyíªMŠÏg¥ëà'»^÷wksÙ 7œ¿~øR~~|œÃ£~ÈA'Ó*¹3Ã~=<õôÒ²©ÌgÏÅËÝÃs>ó@
+Âö
+«³ã0cìÝëùúTùãtwûa¢ýCûy×ÎÎcYl§òrsÆôÍùÜ#Ó'ŽQSÇÌïlt"Àë<ôÿî
yOHµÒZ,Ymå£pÛ6/cáæãÇ`é-
+þZèÖðŽ¥ídüp`TMO5)D>žÆûªXü¯Þ3Ëý*-úJZœdA>M·×ÑŽèq8ÑÁá>»3Úµmb³žòùyìÐÙòµèj¯7 ®/ï¹ÂP¹]µy'LÒëx¹fÈšŽxÅGúÍÓ-lŽŠ3ÛÀ<Ò{º ]pе9=ÃÞÔçØ:ðvXïT
FöîvÁ9Õ6sø°µ¯×¡ŒGRKÌtUKWI"1íæÉ"×ÈØÖ¥ÜþlØÐxY¿kÐ=ݵOXìÛãÚŽ4žŽ©ºõDWB
ÍXº.ûFÙêZbû/ÝÑOD=#p{:Ú¯÷¿}ç{TL+l=hyèüÈ{8Îõy÷®G4\çâL}ÉÁü0ÌÞ"ŽÉ=l»Ùûž;Dßg}{S|
+ðZå»Èút¿Ñ¶žió>øTÊ÷ak7ß¹áOá=«Ê+â@±Œ©ùëQc¹é0#ë~œí £/èaù讜@=l¿HGÍÌÔcAPqfBC#ín'ëà÷Š«ãg¥[þlìþÚŽ;l{¿VKëõÓý3ÅÅá€÷ùÕü\wu^o@?÷L'ÞÇÏMáÅõAÚÓísûçÚdÓÁŸÃ¯¹_ßñßW«œïÆßŒâŸùŽe_75œTíAËŸ`Òë;t4®.8z%ò:fÍnËÑŸêVŸÎt/õ_Ю!œMÉÐÓv[{|lCIóYYÖ~ü@T|
+fäóàóN>œ4€x[z°$aFc&òÙ×áû.4zoýmwñ¹`ÏàÁÎù²B
+ÂÌîâ3Z€øÙ#Wôsž¶ër«gÂD¡ãÑÞrĵ¿§ÏÓó¶nåÏŒöØ §Â «®Ùëy/ÿ_è8sK ó±µ×Á¡n)Ú§ &ÏÊ(~ÃNæG)Wö¶]P{©74v^'1òÛ¯n©Émᣜ;Æ5©-2pnœí èõ<çŽ2OëK|Wôø-Å'BìšãºøAï6ìÇ»ÍKÝÝúÙ@f:thŒÑÁdí§kSòôhd}RÆ}~ý_Gª6õð©Ä,4äôÿL}vÄ¥ÕÀPÀ _ò$=Ñ n¥ä0Õ1kùúa oÕ{²ýØkl|¹ÿSêuMv¯M[Ðhœ)ÏÍ©=íëK¢³4 éH\ÙK"oB
+èÃiôÏIY¬(OHD3ÆËoÚlbæãº
¶:ï;Ö>S0¶¹5Þ®Ò°_žP}`'ž_Üö"²·sä!em%Æ~Þ¥ŽTµ!Ó+Ž`>37u<4¹ºù!ú±%·ðMYð)Ìô×¶ø±~Â{Jºÿ<3ld2y5êRÝ</8É©³8±ø9
+óS.þèÿPK
+ÜvqÒ@KPK,6TestNonRegression7/scripts/PKPK,6(TestNonRegression7/scripts/SiMatrix.javaí=ÛrÛ8²ïù
+vN
+%+Ž¥Lv²öxj_WŲÍf§Š\°É¥H
+/NÝüëyÍ7íÆ
A¢d'3³{ø `w£Ñ74@ÞîÞþô?HDË»Øß€Ä9èáÎα¯ÈcäUúa<gá/táä"ÊÄÁ&7~Bq4éÀí,f$Ñ,}Gc¶Gî¢LiHbæùIû×YÊzÛQçÏî°,=ôÅD3þðâì5yÁBÓ\d×?%¯ü)èjÇÂäyäúc#cÉ90Mý(Ü#Ì÷1¹eqÏdd5fD1qhÇ$Z"^Øœ#MT·ŠùE+=²BÂ7ÑZt$¡ïü ×d eAI0ys2yyþzBFgoÉÑååèlòvÓÞ²[&HùeàehWLÃôxG
+§G/eôüäÕÉä-¶àødrv4ãóK2"£ËÉÉÁëW£Krñúòâ||ä2fÈbœÉ-"£ÇRêjø[Plܹ¡·<eþ-ðFÉì©¥ò(ófp!È=âÏH¥}ò.öÁ^ÒšªVD/4Û''áÔí§!Bbä" SFq<ÙAOGìÁãÁïúäõxoèm?zŽÝ
+û§TùÞý
ÞRÙèx»d8 4ú¿;<Ý}údwg ~€š-&ËÜOÈÊàŸŸd·>Þí;Ø!_KW4û_BcØ.ùúÿÚßmï¶wþBßí~ûl÷éSV@#^Ë.¹õðwÀÿNÿAçàÓØ_ŠÉÞ£G`5QlŸž#°»W`©{ÕwQ°)÷êË4¹3Ú øM£ØòJT€Ê£xîRàñ¹Óh±ÂÄ
+¢ùÜçî«hŸ×ìN¡®»ôbU¡Ê]ÐôPyBëÂWZ³
+áì°4>u'ø{
){®<z?eˬ|j`øg¡{?WmëB³Øõ!X/üMüdÔ=cž©r`faê§>KÜí fOÒC&³u/ÛA2ø³ìÑ$
+OÂYÔë"ZfmÏ{ÿ"²åºHë²7fÜ}oýô®-Bz>û+K$-1Rp6oK_BùߎoÇߣ5B&þEÅîXܰL³á¥wK !¶gz;
Ð.c®èÙŠMŒã ÿ|ô(ÀÅz|!ÌèÔ@;}òKA ý;om Ëî"ëëºîÖt€o/cÿ'9œ}RDwÎRxròŸsÔÝãøüzØìúéÔ zñw:t^aÄ».A©vò¿0Mö°éÀU!^YE3 Ð~\RL£Š?À¥YDr#ò¢x*úk{uBªRuRž9&°¬îZIuAÅD^9fÌ,@!æZèJpÔÎ_i1C?X~FÌéJMá%[(šâº
H¶o#ß#Iû£bOk
â4YÅi¿@¯0§BföTöU²7"BÎP@bI¥çò4t~$l
+HE©Ã
+L(9šÈÈåJW
cp(È£./VEÒ8zrMl¶ÕÆìÔ
+Å`ËÜÂA§*ÐÞs¯Ôíð¹£Yn¹5 ^£¥«mÐlÌûŸ/:²Ð§ÇÄÁL0ã]Ýú
+©eA{GòVÓ1À)Þ! H£§+UÉ !Zººëà¥OKEI×»vg~è=¿ãÍ<ñà)ªGÝû¹\êyPÔ >BWú|`]ªkR>@WÝFÛÛ[ÐNã}ÑtMeuéÀŠs Ç×µz6ÑŽÖ¢ñÊéKU«çª¢&EsçÌ+³èZh³aE÷vIõºòD²ËU'n7ÐÛB Ú+NÕÃ:ïMÉe.dšÆ6ª.+·Ðª@-ó%ItJMéoÌ
+óJ+cÂx 0ÄD¬,ñ:`JàV.ðRfÀ d%QeFiDÆmGP©/©ÜN÷c¥ôc{«µÔE£KBÒBV®Ìe jóÍ>ÁIosMÿåÏ·Ú(?±Œ3~*#SjIR3AqŽ" AþÖóg³O13ÇÈNM¢v`f$P=V¥Å×tíÍóŽÒ(hFiŸçoxI)¬šY ÌßèHÛ<iµ
+Ît*G`Õ<]éÇå®¶<Bü}ÎëË@$Ÿ{C3Êð`«ïâE¹ìÜ/òè.ùjìØ,Ýô(Gt}áÞ
+ãÌirE±ç Fð¬v~®:h}œ£F_1ÿrê.¬ÿá.IOþÈA#+Áàn !8%óqðøkÆp+d1u@ÓéÍs;ci¹åœ2fD&Š8Ï)]á
¶/®ãÜõ<A~*ºÞ÷JÑïÉPÜ|Biù¹Æ·ÏHð
+œBSK Á.°f! (Äh^ÐûÙ ÉVëø°"ÏÊ_W&߬XîÙµJsr³>)'ŒýíæQšo¥z oÊkòŸ
õÚÜOAhÄ?dlè~Ï àtÐ\V$|89X5pÑÉìÆólaÔûkæv<ì~ÀÞi
+Á`Ytjí,5ŸÇT¿/Ÿ%Fç¶UÒM_òGŒuOGË¿]&/¯..¯ÆËÑäèÅÛ«Ó£.%°{ÇŒÐ&Q\CflÍN2lJ0Šf×rl9ìÜ>Ts55ÅõUpuv-Á[«DÔ¿åJô9vµŒŒ|
[êYÑ]H¶ÑóÊ\€ž÷ô«Û2òœäãÚï+&YÀEdÕø£E\©&ZF<©SŽdÍðÅ#X5<Ÿe!öI€ØÁxUÌt:£®
+*¡¡_Aǹÿéçî+©IGOK%íø ?
ðÊéjétûK€ÐÕ#^þRFÐ$y²¿³Gòœ>xNü(Flm¡«4HÜ×@Nbž»Õ0xònXG¥²ŽÔKñ³šòÃl€©
+
+9ZÔ
+<±¢9V4òzæözð²ú}E«×ój?`µ Z®ðŒÖõµâUÄü}}Ä«RÙ3$64\OB}á4Ç~u}ªè1ÐÖðú¢ÒÇÉÅ]Ø&/
+»ì&`ð²®17æ-caYÉâv*ÕÚrÕ)B1G®vøµðxúîõ[O¿¢aFë»ÒGK¹YÖ87Ò2ÔÎBFºyQÄba«>o6 ?JIÖ)¯<R²ÇŸ>&±Z]¿&e
+·4Ji0Ð3F1<øéµÜ±YXNÑ95ÔpjÂÔ9üënrÈ®³ùQHOb±
NF,8,±Åa;q:dK:áéô >rÛêt;Ýœrè·£:0Å1«JÂ,jSuç© m^PjßÞdCÖ5ò+5¹f©žc¯`Ågöo
+
£Vgb^TY?ëH1æÙ_¥íŠ{uM~ëM¢(²²µQ䱯ÃVF6òèÑo«?IJìS@OãÐ4B*.xajð Z÷ìõésȞϯNÏÏ&/÷t³>µ
è?Â(^Ðñ?žpS?%wÞF~̧/(®Ïäl3",XeÖTøÍµnœ §s!¢ý© ÍÐ.ÉP²Öq]Ý«€ÜîwJrã/ù׿ØWUåhäxÛ9Þ:í9òO7.{¿tóân×?·|n×Þ
}î~uíÑx1"ZÕ]ŠªÏW~lLuÜÕ 21.y??<'KËŽÓáT;vàØ©R_,c..8¿ášhb¡Ž
+TŠ7øt=Õ«øÖ}zhaÖÅÝ#9]Ï
+*Òyð޳ÉxÀØ¿ûÄøNW(ÂX¢u%Å×Á!Óbªa±Ž4u€%v¿ÏqËä5X¥¶}ÎkÈZh&^ÕWö%æ[þ]RN çí1.GÃ~Õ Ã¿pµûŸ¢ÄZÐ~ÅDcë¢J¶µ¶ÚWIeŠ®%c|Š^û2Ôþj5`Äf3·*€Ìa±?õ!A_€œZ¿VÚèÊEjÑÖþ.&mñD$-6ÖC$çV®ô«£ÂŒHŽ1òo5V9šÞMÐÒr8ž²¢FxMk«€â&\Mgë² C([kø¶§>zÏ௷²'IÚF_ž+šûÖ ^1ѶA=ÞÔ]?NbŽiüa_©É}EO6ÇS>ë^ã|r$å~Îm55Î¥ Z·H³ÞºwUg~žquaµ-ݵœ«v8 V\]Ã5ªŸ,ѲÌίVø=ÁàÜèAkžiíÜfG©®aJ~Ó&³µzZrO?þ%Æx8b"Z}¿(9Þl8õ¡ øáâF¯G
+±ËV3ã£ìÕGá7w|µÂ-Ò5
+¹ãøbÔ~ÀW2ïŸTÎßòÅsŒ¶ÍÑX'WÆkà±ÎÓ·:ä7:Â8€ŽÖqÇp"ÒlV6ÏûB!Šýÿ/Šq-biùoN£X Y·¿×Ô2Ì×,¶RÑS÷±1Ö5\ÞŸ _Ó;ØÀTÇ©è¯Þ˺âkä:)ê*ZéreJ#{%ö{:g=³Ÿßw(Ìò÷+áçØç«|€o*æÅÓNÁo6ø-F«4Ô;R{ùÃ~¥È±mÔÿGðl)\éBÐu°$õn\Îu8ŠÐ$ëåÂz¿Twµþ©xîžéUªX×_'âð1ÅSÜÈOÒ(Rï?˪ŸUSVÆûûuVëžaÝaæ4ÄìÓ+óp»E.|Ü5>ŒñU亯Î"Îa9,ÞŽïQRÐÝafÈÕe,CNîr÷ÛD%<ÐX>ìY²@FžâAp¶Èd.0©Äãc®¡ð=Ù!÷ÓÊʶ:uJ\ûz3ªÐªQV=®Bm4
+¯VO»± ªfsó\¿v;$MS|4%Fèàj§\
+£ãóU£SvRÔ/k`Úú<~yô£
±mcÃ$©šÊŒŒÞ5£{ûŒG_HkÊÊ!šáÿüH?p¬€:éQÎ
+8ùcÍy4]žç,ÈšðÓŽÐn1FaÚ$líºö
F×Î×:²
+RTm<»:åÛïléJnNqr7ÛÄÆÖÕil6Ç95ó Ø5]
ôÅÐâÆžÇó3t??ùîûäÙ³êà^ílóµ!'m²f}Xc¡_Ê?ø,Ѐg\%àpà à}·€
órX\§y9lGŽFôŒ][ú»aþnXy<+ŒRwØ\ŸWêLÂ{?«4¯<ÿöjÉ%OÛK»(ša
+r¢ÓB;-j(¡î#?A¢€^¥7¬+ÚPH×N¯W<7RÔ«²È¹@±£[7Žã
+ðŠQb«ëãxÕú8^©Ÿ
+ÕfÈAdl¶Lø¡ŸFF»åဟÑÞŸ(kR«$,àjáGÖ,]|^üX7ÍŹ²~]õPQ at RÌãœ}ôešÎ
+Ó3f
²ÑÕÕЯSªI
+VŒ5uÓáãRÇŠÁÞö8ôŠÓõccÒbuBP«IJ3-3h˱>P)ÇQÁŒZþTNÚÔÄ
+pnYÀ%&:hèÑr>Kì+ÄN¬<"º\öyŸdj¿Â:1{ òÒ ÌR"@Ý>-%ÛÃo÷0µ~Knnlmcù vÅX%£ØÇAãVÍÑüeåè'ë>€jÓñšA€¶ãoó°ÑRz¡mÝ]møúrºAwýU#DÜçoOGò¢ã O¢ñžàPIR|3
)EúÐBã;Qóça+©13ãy£ÛµË`×9ÏËØ±=ºÎÄqMgG<Ä~íÿ]Ô£ç¯ÏGgG{Š×ÞœÆîç5vo°ówÿ÷ßékìðM²ø_`ß2VöChüð`QK¢Zõ¹QŽ~°mÃKyïªŽæØº2ªNK¹ÀJaUñ±×pHF£"U{fíû`7J¿ÀfMv€äþ
v°Ön¥²)O¿ÆzÏvkö
+Râ±_(a©:çYgÍnÛjŸpÅ73ÏÑmZíÆÜ}ÿ9yò:9BSÿÜ4IÚvðûí³ÒjÎNsm@ŸDWýüäüt4ÿvÔjÆÑð
+ãÿÄEóÑÓŒÔzlæúýûZœ«Ñ`¯ÕáÞ¯£]CzÒC×ô³d~ÓN÷ÃÜoK7>ÿª)ÙVŒ®{õg=·ê³GÔ£ããóËÉœúدŠÿëõÿ§BÉËŽâtì§6j?ðiFëfT
+Åm¥TNmX¶Ìyu/Uµ:ÿ
îJ{ù9!¢_m>°dÞ+NF5OEUŒñÄo<Žñ4ÐgŸ9:yñ²žZ¥P
îqèFykq>gä>²ÎÂCÙÙ¡Liì= ¥I_ÚÖ¬Õ®km'ãÑåáØ0žÿ[ÃMsÿPKÔ$:8asPK,6*TestNonRegression7/scripts/ResultName.javaµX]SÛF}÷¯ž€CÂ8ÃÐ4Ðv"dÙhÆ<lB^4ŽÆÊ»êjeÂtúù
+}露øJø°Màdk÷sÏýXMØ|ýúlò-ΊÞÚï`g{ûWú~lrèFÈ&Ø©
ä¬lÂ!_ÙLHª²(Ä-Ž+rÎ4^N4çPš9gÀ
*!a4OEaŽ8-
+aÉtKi©TL.è»RŠ\r0\Ï
+PêCÏAK®YÃò4CM}pYpÚΟ,Š<
ÓjG4µè*fF(y\à}
+s®ü;PÓÔMPÞ2CÊ5šöœC¹1s³µõ@ø7QŠ^ðTåÑ!1ÆsepÊ¡,ø€ÌáØüQwÇVX^trÍTá]>ç(1Ë3ÈfÒ\ vB8}[¬C·ïF'A×<'¡ë`ÁÐ
+"×õ£`èN ä$«2ñaa`3
6ŠÜ0W`bT¥0es Nž£6 ×ÉË<«ÂÄÅ7FTŠ çZ`œõcZiûMfàÊ€Õœq4Ã0c ÷°»»¬
+CKÀöN»Ý~ßÞÝþÐQhQTØ[ÆÖæ"Àef<6ã¯lÎê°mͱÒ}ØÙŠþ3U÷@{oûãþîzÑ'Vbâ4ä×®JîMÀç®ö¡Ýúoê-}V`ä
+ß7êAoµ··Ú;xèû{{Õz*s\dU$ûpZÓT÷0%±3lÂDÜÒ
+^%Xgû<£6oöo²åÒ/Pô04KÙåjvQìKºÀp+
+Ì<ÅLÑ>àå7È.þ.9nWUøs^RãþrÓôåbp;Ý`_±Ì±¹Jɱz$
+4&Ñ÷ Åbójd €*«ÄRÝÅÓU!Ôg»0áVø=ÿ³
+'r,Œb+A|jU
+A±ªI3Ìé»ï¿]\®'²ÏÈ(lü\IAk1¡ÑjÄHyå+'/ (Ý@WÐwô1ÉXQT`))BsÖ[ ¹NÔyÎí¢ò³
+»õ£²I&µv,1+³
HwÊðWó/¹-"§Xµíd"£tË
+ZOl5j
ü~
+:ê8&Bâðž
+¶pžãÚVÐ ãcÇíEñÐ â0
+âÁ ã·¯ªBøÖEÂtZs:õ\#ÌWï°*ÕSwÑÂî[^Çõzô÷°}<)q)¢ÖKb:]ý×XÓ;ùÛàt¯íÀsv±ê0êÄ<vúK
&4ÙóXoQ}ñ='úÃûcú¢$ª|ydÛì£Ô?ÍL2
+Pùº!,æxþÝxævS¬NfŒåÙÎ`ëNf/˺þÀÂ'Û0BÍp6¬Pö]7<¢VÜÁ"ßfñyÈéßÁïâc#nÄ9ÀáJŠ9N»lyåݶíQûÝ«x±äÏ!
?YtÃ|×TWÁ>ÀUóÔA>/°§ÂY=pÄ8ûâåzãQÅ=Ç
+'
+xζd:`t Iª³gz]!~tDÁÈóÈÌG©}z}J)qûºtá8Øó#LàgŒz1âÃnê)ÓßxúLÎûùî=wŒ÷ÞDËQ÷?ã±Õ9T³õYW£CÇvðñ!ÕÓª(Æ,+¹?©OÃêÍñëÎGe*å%<TOkY£N<ä[ÑäÈräùñ5ÝÏ£€È_4Ñ*z|ñ<RU3=[8Ç+À×ÕóïÉ×Ç+è¹^ìË
+\ë°ïÜ&ËèñÏ%ŠÏôñxÌŽ`øp5açO=Í~ÌóKé\ÍÍç9ùÒòÖÑôb}f6_ŒäÖRµÂïçǹcúàQ€¬Ä¹0°ÆÿPKßEŸ@PK,6*TestNonRegression7/scripts/TestAspect.javaQKoÔ0ŸçWª=ì®Àûª
+JuUÄ©'Úâ0q&Ù)ìñõsaFŽ\>įÏß#_ö6Ñî%YÆ]ïÁíõ]ç]4ov¹õMñ°OhÅáoVë+j°3ÊiüþaÖÏ :®u€säXs<=Y1÷-ÿŠ8nÖëÖpOQOxF=Oo¡PÃþ
+ÐÿØo·WóÝ5&9ùèŒ:"Œû³Œn±Ô\zjúÀFû0==Sì,>ÓÇU;³{û£@ê+ÏañqFéÍöíf »C~8äûÝr'79œêGvÓÝ&ëSÙ²Ûb/BÂÏ,ÄCÚ Ôh¹e^ÁCR}PŠÁ§c%ù2ìj¿Œ0Æ\¬Qbä¢2ó¬fA{øÞÃsÊ!ÑÝòÅ\'+³Óéì¹Ù-ïŽ{×À¯¡+uó6ªéän|
¿':ºêŠ%K%QÙcöPKS{ŸÃPK,6,TestNonRegression7/scripts/GravityModel.javaí]ýrÚȲÿßOÑ'goÆvvsv×^ç,ÁØŠ
+àääŠRœ q%Aâò»øõò§{ô5£ø&Få2 ÍôôôtOÿŠG3sÜßÿþ?{>|0Ô»{2¥,Œ><üÝ¥«€w\,UËCé{×P;PW5Šòði)Uº>2MUÃ,«u¯04ô;C~í©÷¬/ÁNàAAGÑÀ`]ÕŽõvd1P-PŽînÞU{to€uÖ=ôÿqQœŠ1CéC}tÛG®ÔÓLFÙ,n÷¬·<Ç9ñÐtxs +ªk'ÀT|nÀ&þ×DÁ)Æ¡ÝbçèCÊEv ¯X~ÖBLõýZveEïõ!ÖèIb¿šý>Ü2¬7êç&ÖeíŠÅêGøPl4ÕÖÇLlÝëøMJû*RÆzf= ïDáºÜ(]bâ»ÊU¥õjp^iUËÍ&×Pz±Ñªn®
+šß4êµf¹ÐdÄbŒ¡Ä:±Ë,EínÅ?bÃÈ]¿÷Êaw:FÞè z%lŒŸ®Ýñjbb_' ö@Ó<|1TÔK7+e÷[6SÈÃß¡ÅPHê}¥Ã`#¢ðóÏšÁºiQÒë"Àá룣£ý£ÍÃM³HµBãÈìíäì
+^ÊXµ®Ñ"ú
¿±âTŒd0Tî1ü&Z8üœ9þå÷ãÃß$*#l8¥À®ÊýÔ`cŸÃQá7øÉÉr¥hC¬
+;Îøæ¯G¿Ãѯǿüvüæ
+OOjŒcžuáϰC¥óÊaÇPy²·j£ÊªÚqWèPÈÌêÑoZ¡BÿÚ' jm& ŠÏû
Þï³7³ðÃ+4?VÍ{ô]3}ýîNÕî
+WúÝI²dçJÇÒ)µÏí@±îé¡~-\óŽé«g1I-}š*
ý/éÅŸZÓ¿vØÐ¶gTì,?MÕìaVÀæG=@k+49ê[MüMy,Z(kB6ŠYª¥2³Pî¡[gÌVÄÙ®~ÉÒÖõᚯ$§í§¿0ôÑ0YŠ&³jœ÷Ì4YßLÃ2ÐÎî¥þ_]ÜŠ: ®u£ÐŽ¿!ÿAÊg=<|d×Hð>Aº:`7JF=ZL¯äôv·Üé+Š)õzðmo@æ§.] ýAOéš}L¿FØi
+ÑAaçÃÝ%éþ1%*šZOÏŒ(
+/²'T
+Ñqº¡¡±²6ÌéoÍ
;fá¯Ôùrβ'ÿn®MHÒÈýy
+Úšß? €º·1©ªÝé~N')z@úuhøÃðržää«6BÙ%¡b}eóätM¯jnÖ?
+¡N Š
+fM&$#ÛµÊ:¶K.Ön;GI&rcÄߨ6É¢BsIlɡȀvÏ:ÙH'Þ+ýÐ
+zVU,uô.§ö6Uûö£š<¶ú9UëjyÂ*äUÙjçrn&á</ 1,Ê?)!
+Î"2ô/&ÈîS_ Bdß:nW&=ç6$4ÔÙ»L6$hBj¿,Ýì*DO0J÷«"ØD(«'[Û(r9€3Ò!Ýâõ4íÂ÷E¶,Æ¿£ë@`En£ÎîeðÓv§¯£Ì.ÎÁT2äÐq"ûjKPó×µ¿E3çßÐúÂuÏ{átOd
+6ŸyþÌl?õrzYœ*y]>)kEÃGëªÛýnÆËí^¶þSïPž.¶·Ï+ÍËJõ¢Ýª\Ûõr£}]«¶.ù·÷8Ì+_åCD4ö
×äÓçoŸòn}£3 P° 0ÖÎŒð%ô;)ºãTûEöQ¬4¹ª¡':=<þÖú2a0_œ{HºÜF¢ä$_?)c
+-B×äÀÌyŽ£ÄÛx o±A1Þ<u³k@!tuuTjcêî1yo2sfmLÓe+ïAšéò6ù@êÇœð·=4l_IÒÇ€³ßé€,ç£Rd»ŽHºrâEÈ+L1$11+89Û£ðûÑWèHrQ4ë;#ša]œ3àp®)¢ÕR°z?׿«¿~³øë>ÅÙ
+È%0©¿ûDÌ#ïùÝþS·p¬HSœ¥ŠKÊ~Êì$> ܱ¥žI J:@ÊiÉ-(*`^¶<}»`ð`õé1×Dú-B·xËšŒœØ&[uÚKÅ2OñÀË®ÐÀsÅ¡Ju4žeFÇe/ñå(ÈWÎ!í€BZ?wéõKºiÄ2fý{óXœ/¿)_µKµf«Ù®·[â{üœóäëÉãyy~|ëÜw:!ýÎ;¶ÂL},žå§Ó§xϳóJN]Ê£^š¬Ocë³ÃÈj\{|ëŠwì ýúÜØ£äOLüA1Ü·ðüïõŸ}4bêZ,åÙBkÕÎjÇ4šöš²ÿ`yÍÌŽàVeàß=,ÅâHhJ¬ÿn1À6±z¥žÆ'+ŽÔ+!Na%ª§ÀºCTbÃÜøÖÃÐ Êèê$gÇðFËÜç€R
±±£«d^5ò)ý¹Ãñž±äÙTÈÓÑàÞEBÛvbzŽ@"£Ci|«Þ:ékCfðIHgÊ>ù¹pÿÙŒþåÑåp%0(®ÑÓc pÈdG.4
ßäÞëºiªÈk+6íóÚiFb 8BS©œÃÈßìéЬÜUÉäí€Ä[P/2#ªX?÷Mð©=l;b#ä #1(
+ 3·^ž¬Ý4ž;+~\æÜR ¢²@#M3ÆÅrv`&ÃÙÁM
1œ°ÚîLJál?x w^+±dàU
+BÖžŽf~Fа9ä§=¶^è,Ýó6ØPQ¢ÖœV°c¹ŠëñÆÉžyîºQ®+v±zÖŸ.VªrµX-Ûåbcçž7ÜqÉ4|çÌ °íwðÉúÃw~:}JóþEnZ!bØâ z{ü:·W*±2i!](ÂËãÇ&5¹Rp¿¡Wþ}]'^ª}è)#gR[5CÃ'yì#`šÐ}i990á0}X:ªÑº¹ÆHÓ£õÀx;Ô©µ.Q7Õ*M«ìÀÍf=^wfF!m?ïݳ,ipK.¬U`}XeBÿØøWܰ€À(R>§ÛxõØD`l]ø€y¯¬[Õsõ+뮡Lâá¹cæe±Q>kWk6ª!~ÛÁÍ)æ$eÞÅŽýPeR7+Sg_^=%Æ>+A'vþ¹Ú(õ<åTø?Çεø4_M Éy[ºshBul¡l§û÷X6VââWåš£ŽœôŽÜJè¬Óúè58åÈî<ŸãŒt³zºÙ}Û<Ê"=MØÃ¬É£ÄÖ§R*g=
>Š;Šä_bgòñrèazRÇ,Ç*C}~Ï+²ècûe9÷^xù ÏNH Fuü~±KÍr:KÁ]È×ËZïJѺØECÖA£ oîêE÷øºü4LmøOÊéï°ôú0ÕŒ:ÇsÑš5í÷Å«2ž*VÏ*ÕÛû4ëåR¥ì|o5òÅÇ~È4æyeç:Ú?Å9®!9®!:.*ÔsYðËòiQR(Ï@îj7LééJçémÄ*ñvÔÊ5,åÈ®ŒKc·"FÑÇÖ®èaí0zdK×ã^ô/ìJe@Ðc®ÙobîÁkrA׬Ãd·ŽTC奵KtQÇÑ<{ô`Ún
+`§q:Þ*èœÚ` ±
øVSÌlwúŽ!ç§:mQþu¡ô~¬l2%ÅêÜ`Ž%¬L$úÞŽÿóL5;Ñ5fÚß³~€ŒË®ßþ,õËÎ @bóÔTÆ51!wE1!à[5Ÿ%&FO`FJð"FíõuÅòa0"w<£M»»ÀÔ#!ßëÔNÃK§Áå##Y®þuy£ûö2âc;s6ìÉÜw`}ÕÃh³Œ2ú:Οœ~7Ö9ä»RÕ¥»3áÍuÙ@¡Í€UÏ(jäà€£ô;£>pÚöÕ©Ó2h¢<öì'ØØ(QÎîž$÷H,scLC'Ž;Açóà©[ÜzaÐÂß6Üãþ?çH>/ØW-X°[l.ÛÊËVyÇŠû#]µ!âÞ¹rr`Ç8-ÕÜ&u3ËíѳJ³Tl5J±ú° h$Y,+PÁõ*Ubk¢ë
+/ÌRØÍC/w:ÔÆõlôÂZÂŽûm:ÞÃ];%jôtÌ49%
+Á=nàDFªªHGísJÜQteœ€9×E ~±Q¶Íõâ+,K;¿Ì¯ï^5Ûb¿{ólñRÛþÑRô¡Õ 2ó|ªú°zëNÏÓcSgsÞ-iö-måô/žMC:éGœàÎ c¿ÛÞaŠ}gâït8jbÚ®¢ÍDõ:p;Ó;Ù`L7øéâÞËõÈç¯uhÎÞ!
+áEU9iÔ; }æsAf¿¯QÕéoÖCÆÇsGZUQ»øÉ¶+mVïÕ\¢Ú~5ßï;eöôra¹)>?e7 $MÕ¥!£ùÐR¶tøìûä"`;GLK1cÚKEZHŠœdM]uV"*p$ÎM\)RØE
+úfÆì€ L°È5£¥3ŽJI Ò.$µµšiZŽÌV£èÿêÁÔýšÒâ°mG%×c®iÏ;jÚE¢Ü£@Š zÓâP
+бñµtŸ"mýh+?;°Õj7ÊÕò{[œuµ¶
+k%ÓóÔZÈ~sÆöäê§ÇX±Y÷&m{Üû;GÉf€ÛYØ_êŒg¯"mµk»!P-Ÿ-©%*wa#¶Ì³7N²ä3îC `ÁŠë%¢Oͣ¡{Y"Ú6i{UÇ}'nýÉÍy<ïO«ø€HÜRO3ØMÀÓøxîX°Ô(Ø!ÀmCiZœC~sj=oá°oZç ÷f9¯${ŠÒÙ,ugSõ`ÙHlÞQÈrf-lwÄL·Ûj0«?³(iÇ*v[
+?'³·ìÈÚdôZ1îT5z¯*Y«ÐÖf`í¹€Ú*mãVl\TªíÚ{EÅF¥øîª,lø¶N[ôÔŠ-œ
+Xóâ«ÌÐOÒ54·Ýí'9øg/"c¢£sïfQÌMG|úw<õg§-=ìö¹ì»uòd"Î[سå³hoÞ;Üs¶îÝáœïg1à[žø¶u®ô)bï%o«[ÞfR²-Co?
+ÚAXkÝÑŽM
+¥XmX4,52ÚŸ3=¶+Vy(Â\L/åú¿p§ÖD
×h[`}0`X¶>¢M|·XÍÿ ºçÄ^x-Ñ8g»Š?¹AØl64ÓõÖTNstFCü~¹r;£vìì/®+°Ð^PD¯k7šV°a>ùºâçî·ÉínáD
+Ov°óžçÜ2sÅßÎîfgô믜ª*µTriWY-Ñœ&:mìÌÂ6úM99ð¿I£w5þëí§6SÉAÃäðL!ñ
+§WeŒß
ÏÊMý¢ÝÝ=oW~ÎøÙ{àrŒ[8Nj|Mí ì°EàÄ
+?ï(8µg_Ýìqpz¹€/á];Ççqz®ïEXp¯#þÔ°ùí}`ŸÓÉnB&Æ
+ï sa(cÕz@ãe}jº{Å`ð¿LuqÌþYìýP°7j«æ=ºxÍ÷§ûsRqBèÒâZÈÜÇÒ5ÿQ©A6ÉQn)I4óCüŒ]+u€¡P{. ,ö@CºâÎ$Ž«ãI}ÂQŸþœ%lÈœmò(`ò8iÚ)ênÜ)iÂüß#`Å &¡óåÀájùëÕVsÈÏAD¿'/ÁT'è
¡|ùüŒÖHyl¢ØþsrU ³ëé»ö¹ ÇÄ&?ÂúþÆïZ«œ|Àn¶º`
+NèœãMLfs6tÍçpÂl't:nÆ€~Dhåù¡%úº|éJ¢3>îÆù¡œùk§ÀÑPK3· ÒPK,63TestNonRegression7/scripts/TestSaisieViaScript.javaUßoÓ0~Ï_qöNàµ4A»MCI$ZñxpÒKjHìÈŸFhÿ;ç$k,ø!±ã»ïûîBÆ¿dàb«
+ró Pya,ÁO¹¢${åhÿÝØTÈBÆk±És£ÈL*{ÎÿÏìÉØªfÌšE.iíVmÅÉ|ØL¡€XúçÑ[ú·áûm)£÷Ä*±#¿rrkqÇ<¹}÷å#fÚùKÖ+IÒq4(ŸbÊØsFÿÓ§µ>PöjR€Ðù€§''À-$à7%u
¯ïùíp5spÌydŠãñy»-KZR]åŠtp±^g2â²)vyÍÔ«
+NïUíºAëX2Åò³LÄä
+·Ø÷#38Ÿ_útüöt<ÉÙl:Mk{*`£wµDó;¥ëœÓ (£LÅgÒ¹¡áOÎ Ò!p·A"c)ª^ÁÏ¥%CVŠŽàûcæÒ G£¹çò8$1Ç»aÕÀ[ã]ŸwEÄ«p(ÿµÎÑŒÑÔjo!7F JnoÂ÷ mêF at kk~;è7Ä+è¶.
+íèôžö}Ùýîu6£ҲX£Kç£Þ& -C¹=HDÄpzi¥v
+|A¶:Pè?Ih«FØæ5 ²cÒöÔ]pΞiuŬc®×l
C~K.˲*ðõ5³®óã~ßùñûΜvÞ1÷<:Vø(ÌKæ÷ÂGœ=ï×`}ÇÉæÊÕ
°QîúÐî,=çgŒ!~?&ÈŸÓŸ®>8·²òägO9jóBóºjn
+~.ó//wGpgçý">~õKèãOru°kÇ
+wtWŽu9~ìK×î6"öóŽš_ÙÂ$ø.Òñ!~ÏÿÔV|ÃIÈÍÐÌ#éðšGǬɲò/bâ~AaìÂ3²¥eõ¹=3ÛËãa€ Y>PK;V¥ÃJuPK,6*TestNonRegression7/scripts/StackTrace.javaSÁnÛ0œû+£;k€Õé[vY7M±vÔÉ!Ñi¢ÿ>ÊÉéÑÒÓã{$ÓÈü¬|îTC~Eªn¬#xk)ZRZ\9';ŸÙ»ø.-ÞºJÈFæ+¹kkŒÐ¶ª©Äµfÿû*s²®ÛeÍmQKZ
§Äh*P¥Ãy÷ÊʯR€Ð÷žñhÁÄfoÌQ|N?;E§ðØÖKü1ù°\ÊVÖ4Ötµm=¿Z.Ùâ''ÒaãGÁ²/ú§kt^YG7žV!Ê`*ŠgpŽáŸ m
+VÁÑ~©Ç³ñô#LßgÓI69íñ°ìAWœ
+ç÷ÊôwãšiZåkéý§ðEÀKd¡õ\o(e®Ž¢îZVÐŽÌÔÙÖA(w@BÒ&±"Ng!Eàñ$Ó°Í5îYÏ÷ ¶Ý%oÊÝ«JgÒ
+ÓÚªj©ãÜÝtOVÎ>z?åÜPÄgndŽ;§NÜÌ
+ÏöÛ,vdðÀ:ûÔ%AÍAÂ|-uÓù W49€l9*,+E(*ùÒÇéæèç¶%ÁU1€MYï àk.[o:¬(á?ó€tç·+ŒâøM³æØÐÝý ·zr^iœEù$
+ãíºRŠÏ¯üaR3ðd4a ûì??dL1Û¡P%$`;æÈÿVŽJâ
ª[-C[ö8MaWÉÆï; ¶Öóÿº
+é÷þËH8&HŠeO<ÀKt(¢è%úPKDíH·òPK,6(TestNonRegression7/scripts/RuleUtil.javaT[oÓ0~ϯ8L{H»áŠ4A³MMÀÃhð캧©!±-_Ê:ŽÿÎq¶kW¡rÅ·sŸïÜlÃÅ/^ 8a¥ñ.OYm=üäsÎ%»Î¯÷µ-7\Ì ]UZ9Vꢪ`7ºÈ÷SûÀ
×v±*ôKbT¬â~V>°îZijZ¬F'ÝTºCå¥èØWmBÉœÔ*ÿOýV³ÑÈ ñÊNVX[6jfDq¥ÇÅ^·@®f\x[øJjÂbÆé¬>¶È=Np
+ÇjlYvÚ_òàgÚWZ-*Š%S²%Œ&Ç-+2ÊðEm:GëÈ%8ŒÃ¹³!ôYÿ
+¶Ø7ÜyfBáðº"u/{ÛËúÐ?ÃAãÒ»Ú!
+ñ;©ê³^bžDÉ»Pâ7j'ø$@B¯!8jr!KéÇð3¿ g¡
ØÃšÄ€êô1vÐÉ#AÄq2,«@ÍUãúÍXVéÒV{ÔÉWÔcÌáWDXWkµkÑ«ÚeÃÚÖO4-æ^{^^q/f÷ÔòéXbCÛJà±CyVZ8."ÉòÕÑ®[6T#ƹ>K;Ï1£4íöùèjlëÊŠÕVrvâö']Nê`Râéä`rÌ«sÊr(JÃAº×fnYojžP}¡¶ŒUQe{= ÐŽ#o©¬E·}ËŸBºžvOã-ãGvðÆ÷ðlëùž"®Å€Ü°âôlö\êBJE
+qå Îsz<râèhWR£l17ÄÄÛ"u*vd;JÛX¿Q3¿4·ÈÕzwW¡¢ŽÍxŽï;/ŠÙ1Ð'èß¡Ò÷ eË^"=%»WëYs×Zºà©ÉÞ³ßSòPKÐåWà·PK,6)TestNonRegression7/scripts/SiMatrix.classÍ{ |TÕõÿ¹÷ÍÌ{3ó²°I6k$aa $Ãd#ÉLÌLPp·T,Ö}Ck+VE[ µZmUZ»Xkmµ.]µÖ®Ö¶.EøÏ}o^& j¿÷ÎÜ{îö=çåÞçsG¿õMÖèâK>qø²O|EÜÉÝ>zFìñwñc/Ýíu.Ÿê#ØÃ%û|â^qO|MÜï§éâ¿øºxéâa?åý~ñxëŸÁ\ßÔÅ?
+ûuqÐGAtqI»_|K<æßèâq?O0Z}G<ÉOùÅwÅ÷üâiñ_<Ë£<+óãûüø.ãñ~È1לâ'âyŠ~ªøý3]ŒÈïóã%ù>ñKñ23Ÿ¢_éâUCŒæ¯7ñkCüÆ¿eßñôÏ?p£7ùñ÷ñGŠÞfxþäï?ëâ/>Z,öâ¯üþ?þnâ]&ÿÉLïqñãßø¿oñ¡&Œâ¿â³}l£ü>æ$ê€ôSÔüÒ%ÝLyüRV+œ~é~¿4eºÌ2d¶!2ǹȬy\7
+0dÉ!Êï9Ìó9È|`-GrÍ(C6äÌS5äÉÇU\UÈ"C²Äã
+9Á¥\;Ñ/'ÉÉ>9ENei,3ä)Üït¿,¹dýõ3ž|Š_γu9Kær!+=sœ®{ÿ'¯xæ.œçµ!á§>0ä|?Ý$«ø±À
+¹È
+YmÈ%<ÕK
+YÃxÕòc!ò4C®0d!ë¹l¥!Wñx«ÆÓ¡dr
+?ÖzæN·fä§Ér$-ÏË3:ê!×óÄÎÌeøæM©ühäÇ&Êst¹YÖo¿4ÞÚXj
7EJÃñææx,QÆh¬±tiŒq =%#ç'MZº±µ4º±5ÒÁ;Ml&6&¢ÍmM¡dŒµŽÎ¢¢ñØ|« ZË
+F©QÂñHS[2+MÆ[¢¡Òz~vpú#ɺhM(Ù=_Ьpi"ÜmI&JSÝ W×|*(ki4©mkÞimhBIÎÒx8ÔŽ*Ôåßv¡§5hkJrm}ùé3\xâ3ìÞiá*AFÂéÓ33&gú ®\ÉMÑ ßóîLè²IP& ]o±arÏÝ'·¶D¥U¡d`Ú*
žJF, -ÙÜ"š°ÇX2¢qÇ0Ü¢%2:FÐÀŽþªV^§±ö1ߟìîÓÔY hkuFÞý^ÁltQ
7×ZTole³ o]Ž1J¶µ¢ÿ3OÌo$4¢VО㷶Y·2þd+Ž!ÖžüÄŠâtÆY÷Y/ŽSï>,³&òVLÓÓ¬(AcßÕ=ãØ¹ß`b«X;ÑVÓD| â>æI.Ûž*HDlSSÍM[óâPbQÊ!a¯qšèÞ_#tA£Ë 5µ¬ÒfØKßÝÅú
+*êâ.CÉMü,µ,eºÆ6Æû{jJ50ªÑ-Ý-ñpLÃÕVÚ/é2®Ë]«K(æ¥ÿ+ú/ 5Éù¡dxÓòH«³Æ¶ÁÁþ¬ªßvš¯Eôg°Âþ0a''Ú6à?lË-!ø.QoÇ`hGºkÁ€v37v7¶ÆÛà|&ôw°Vа4`W`y]ÁõšÎ¡:nÞs?©·FeaN;±.ÔbyÇ?BCŒ
<iöSRnš
+rÛðW?ÎQ$òî
+¿'?ÕÞéºúÔÍE?`/Jæ%ãÉPÓBT"R®K 5E[lìV©XeÔÖ§mþ̧\Ås5ø[((ù?>ïµ\fÇ$:[m¥¥ýq]$Çl»£B»åcNéï;õµ mZrã#ðnf7!häqpRýOc$ÔÚ§mZ&+hÑ-jž¢Ÿ"ûüE]&uÙŠË-º<OH²!V0ÜðÿÑÆrä®oKMOQJêÒ¬ÝüxZšÅÜQd3À3à,.5gó#MMãù¶ýŽrkßò³E!ÐÍk<±
+Ö
+t[€ne
+šlRÒcO(QlCÚ/bH¶*î,§«^ÐpLUê±
+õ¹OÛlÕG±¯²É©vãmGN
+¹ ® ¥
+©`-&«?þªŸO±{ÖFÓg«J<Í¡hSSßÑ#ý~ê)ôOÑxFüx(ÆäfôŒ~ÌYYî0MXé_TWgzIÿVÕÏéV÷²bìg_²y?&CGaCp¡
+Ñ6¬_ް«ÎïÉö{R+"ÿæ·_Õ¯onYß¿&wúÅŒéu¿²ÑØúNmôöYáx¢*Içió€z^ßµ)±\!0ér ºRÍþ&ÆÏµFtñ8tYö|K
+zÑɲ²ÖO£4'à8ê·Ìeµå>ÙrÐÿPí1²¬yÞ¶Xµíoü¿ÍÂú·l
+3ÑÖº%Þ
+I3,®ÊhŒ9`¯Ò ÅVG¢°XztPœø¬F€%]ÖÈ]ºñ³Ëp>Ã|u€UTMC
+=Ï|h'®µÆÌp}î«ð1®¯>7Ye¿:,À
+ÌιË!².·òy¡./2åÅòS^*/3ébIß§ôýÐËÏô"ý\PnÇF×ÚÚÊ{ÒÛåçuy
)wÈ+uù^;Myü¢.MyµŒÆ×Êëë§Ly=ÏèSÞ(o2åÍòþ*w
+Û¯ÐñC·S0t@¯òV¹Kèÿ6y»æ&Øy7ä£SÞ!¿lʯÈ;uÙbÊÝr.ÏåߥËV^ì5æ^SÞ-ïApÑskʯ2fûøq/ww)¿&ï7åòëJN$¥2åò!šVvçø°)÷ËGLz^Ó壊üüŠ)Èûyv6ŒÐUÐ52ÒçX×Óa]4å!ÙÀ°ã vQêšKò[ò1S~[>nÊ'äw0šŠ(ŬtO¢DL6éY:¬Ë§Lù]y Á]¬l65°EÝJä7Dò{Ì€ó[°òLù=ù4?+Éí*4å³òBSß7Åx,&RÓs7³žíŸæwÍËgüÎ9?DeʱŠü1ÏÔrkÍvÃïÝoüÃ
šIVäò'òûº|Þ?/ògòESþ\ŸlÍ¿¿4åËò$mŠü|Õ¯Éןò
+ù*9SþZþÆÄb"ß>©çÉùVºÒogŒ ³òÓsV.ÉÈOK*UC+äÇj~+o7Åâ&2ÿåjŸJ®À3$¿·ôj)>/®@Z>?ÔnkÊo×ä§Ù|ôá|.á<?%òøÛõ<o9mÛ}LéwŒ¥~Ïê³[þÁkžQN~×$G-+-ÍQb|^+¿#ÛÏü.ùøÞBßâL±ÜgË;;ÇQ]Š%1³xÜ®yÎ,>T&ì5Z+D-üY, õ3SþQŸË?òùg]þÅÅÊÄÙ:3?=/ÅÓîH0ſɿëòŠ|WþÓE£)ßÿÒå¿Mù¹·¯]Ïèr«fÛº®T3mšQÅ×n¬ïËLù¡üå®âÔYìPZÆñèù
+ ŽÖú=¹Ëï`6Uïü6åG¬þÿ/°dºÐ³²É˺ÑeøFç÷JCs/á¡=ùQÏb;ijŸe};Æwa5ÒÜ£&MM¥¹`£Å50\òbÍ
+;ŠyLM×Só¢Bó¡ÍÏÉy¿®eZÝÉ.Ûpö ÌE¯7ÝÎ,¯û]š Â~ÿ?ŒéË)v»
+é6ïbdýœéÅÍW`Å>NØúÚÔé[AÒ?¡ãFANø`QÐÀR
+Øîu߀ÂlÙXmKØiR§DpYz_X Þ*ë\þäî]ŠbéìþÁi3®6ÝpêÆ@UÆt
+{üŒc úŒ#5Ý:Ì^áN)èùP2S€Ž[£Þ`9N`þ"Ô
+¬U69a{Öi6£m8n#ìö2j#êlAêÓ®6õM¡D*ÒµHåcêGgUqÈ÷ç
+ój€ûù}IÆ{c4ÖP¹Õi2¯Gmé©DXEmÚx;šB
+è)¯ Áü³X:Ù±ñœ¡·[÷õ!üóŠ¢:á×é4y\_ý;ßð¶±
+Îè^u>÷ØñUFºíå'œm_Kîáª:×È
+:ú<¹ÛÎë%E-écÞAÛ`ì+i50¯pb~<ÞÚEàË·y
ëzÒÀN-².`t*\«.r]áxLqN*]¡ÂË«W¿¢úôõóçÕÏ_Œ~ùëëêWÌ«_°hÍúõüeVfRO€ìh^OZŒÊÚÿumRZUTw_Au?á×~÷ ñU|uñ';Uýí»/®
¡0€ŽÕú^®::`.îíŠeT'Þܹ¿è€é±Òj<ÅÖ÷í]áxÂÑCu]M㺟P/йÑm¥œÕx6òÉJ^Auϯ ÿT±b?þ棪ȶÆ1þæÍjiÄØzõ;ßÑ
?¥%Çá7ñTînà)ôbZ±XÁzï)WÅ66UAö=ôÉ}§ulÖ®¬©~,[žŸfYm=RÕhbuš5æ`â:¿Rj
+l©9ÏžÔýsF'S`élÿ?&äXÉöÆöÕΟm
+t¯Sž²ÿG}zš[Zèî1äOízžgoZjÅÓÚ×Núœ(ëÞ>eå{bW}êI÷rëÍW/ÞùÕù|÷
+GÑ\Ð%òš÷~«voÂêfy«`'çÛ9ag}VVXÐÇäÓF9©³êºo³ÓºOÝÔ²ØAò®HûÚ
+)Ö}ŒvôeÐq±{òq#">ÕX²]Õ7
¬u©¬+åã¯6ûÜÒÌ6£¯dÐêK·¯žúÑ«})ÌÉ
@©yF_GâéýrY×aÉb\
+xm
+ÏZhÅ(Kã±ÆTa"
+ìµpR_ÝO:ñ_*
+ÅBðJà){ÂÆÌ>P]ÖI)ÃÛ',Å\Ýìšô ÇÐ{»\\{:82ok$ÆTÙv2¯remÕŒÚùàážyßx
+l÷mŠG©²³ÒL»£Êêe5óêê,×€Ýp
+·,\žlE}±ÐNÓêÕ÷Ä«ªªëæÏ[QU×
Ób{üà ð<J9GN3êäÀóÿmÐHôiäãyP.Ÿ
+Rïçèx /ý~Ÿà×bø(»(ÄH{ÄÒâQ&éyõÿÄpýjÊ€Óé§ Yüv¯øõýœùøÉîµ
+ã3i÷Z|\û»ôxùéÌŽM»GŠ^R=
+úýuÜc³=ÏEÉ]$ŸI~èEÅL¡{?·cá€ãÙ
×bÉË0ÕMKQJçP>mNz$œIQ< A¯(Àý
+¯ÒkXOâmp{ð^ñùÖ$MÑ7ÈsÌq2Û)KPíøvÊt èIÊ©pMºÚ)WP;
+ªÐ]t·S€Õûý€äa5Ïz¡JP)%eÕÐZNç©ÏF}Öó:œAnp§_raUÓè7ô[ÌósÖ³~G¿ÇZB 71ÿ·À©?¢ämKÓPþ€Ó;ÑÔŽõÿYáùÐízÁapÁ}àp)æyVy9Öü9à°8\Ñ¿Ù8üTpøG7þAïö~/
8%>_Âá1
+â=€5ršÂ¡ÂÅVHÉ
+
}ª=AO;
+c<ãÔmæñL)æFÐh§|T{Çœhämdœ)ÐßwìÎ4Ü&`[]
u}ôjL×кÖÓuÐÿëé\º¶ÑMtÝtoUXnÄ*6Qýþ
+D×ÃÿÐûè¡0:zš€èC`>NUH»é$jPµ.FÀAúrémôB:Úü:ýœeï8«îS÷1êÞV»Ï}NRè
RNÇtžvzgâ$?B.l%ÞÒ²bêKКv-"a9Ø2ôÃØô'3ØwËï8[o;ö&Ó
pÄ€"ÆÍ±.èîÀ»HiÀ^ ~7¬ËWÊœÐÆûèúͧûé4zÖÑ×é,zHaœ<
+mkÆR¹ÐKézÈÁ0€b4%z_%ÜÂr©VèÂÀè'ÑÞ7!.[%GPb¡)a]^£O~]¯È `ºa& %²m_F×Ù(¿œ€ïpo)é#4¡J%±³+
+UzÛÀÒÛÞ îzÑj*|'óú~wSwr
ôyŠÍQôÍv¢Qyf0#Ó:Ucäï;¶+šw_FXüO
+ïgUT¢vàêøŠëáng¹^
±²P7Hàð£Ñb È §ÓL¥à~ôµ@=¯EÛ€.kYßnwDw»Oš26ÌRQ,DMÕQ¢3è1T.v@y0÷ËèÔêiÛ\bXK×ÛjÕ®cÞË
<Å%[%X-wR±.ò_ÐÔÞñàý+(3eI\>1s ù`vÍÐZ~N«pÛâ/¶ÅÊ¡SôÇiúm|ÝØµº50cuk°êP\ŸFË©8D3P3SœÝ9³ÔÛ3ßhN
®y¶ä\AwÑœãó -ó,Gà-
+z1re
K+óåùXÛÓEAWÏæ*ªðkefÉz§*×ÝyŠ]9±"C+ËÌËdES§=yvåä,ôô3Yi~yvPÏ3ò|yf^f »ªtÚ)öûÞvÏÝÛ}x^ŽÝÀ³.]áVQoBiÞ¯?Ò0ú
±_ÏÅ®œŸdŒÉ-ðwÃS<}þvúOaQßMý+¬èQú7vü{ÂGïbÓý
+åU
+ù
+OŸRŸ,p£¡Ùô4V3F
j>EóòeÐ>
+QfbÊøi']!Æ¡ÌYÜ ,u,ÞbÕ²ì#±_Ô(CÊn»(Ožl%FGl%
+Ó4%-Õò]§åTK¥žª¥£žóÉ8)Y«ŽÖRÙâbFÓh+ñ1Ü(Ž^ùâCó!¹ñßGè2]%bÛ(ÍdÆ]A÷AZPî x2oœf<BÛi £ÅpÕ9KЩA×ZSéZPhY;-ùPQqÝ×iåÕmÀsVû:zÖ#TüÔ¡úLLbÊ*ÕmÀxâßær3`>€"uÇÁäHrÄZèžÕb5`¥qìÖ;Å8ºO:.U&ewp\ÆJ€¢Rvç¥6.E±z¹¡.{D DçAd¿ReÀ/@ùàŸ49êõ¶r-ÚZ¬AõÖÿ ¢ÔÆßLÔEK°œWKzNßO P¶ØZ=¿Ta³ØžÊÌrÕÆ0à)ÀY8¥^ç¢37Ç×ÞÉÐte)NîcUÐ1æ9T)æÒr16*ÇÿbpQ;^¥@b4E1H.(Ö:1QÁ5Ä$W%S ù:@¡}L5-/-Lüq
+ÑjŽâè¬YÅ.ÿtd¥å1ezQP/fš,óy9ðS|cR|EŸÁî«ÁôAa¡¬á늻÷{yß±¯£ü!ÇxRf`9ébŒ]=¢4Y¬¢ÓÄÀ³µò±Lò4;ô!ô+V~ÎÐoª3`P!ÍRúŠ#Y¥j=*GKÚìÚìÚlªCwÿ¡æä1É`ØãY#!Ãæz\o«TÎura$€
+Çq<£bôšš«güyíÙÊÑ÷ Ôœ4á ÁÉB³¬°
£ºõžBíÞgéþÿlAùCÊ3-J7 4+Å¥afà A_
+.*ÏQÆŠ"R>°Ã:,KSöPöb62¶ÖçlbÛÁV"ÊT6Sç0ÃÔfŠŠ[@öæ@ÆæÀÀ.ú_É8¶x3€-r[¡ Ä^Ør6ûVø(&.¢âbzFì J_SÅ4èóºQA¿3!])NÓáVÒE¢\y¥0LRšL
+ôPhG^rÒKAzÉ1H/9é%Û yèy1CÌÄ;û'Ób
+uE9ØÉ^ާíºÓ9Æ}€bÜB
+!ì§Jåcæë¢JÓÅü-Ô`Ÿèæï=Û;X)Ô"±Ø:Ø5(ã³M)»BYÚ©÷pQ*vËõ"µcåÞUq\U³°u{SÞt±{úærÀßu'ßßw+·!oùMwÐfq7µ{ÒŒD#6G(mPÚ¡Žjž
áÍÙb8%#,ì:PšåEêfy ¿Xüµ¶»Ï'qA²·3ØÒËX¶öÈöjÚ=
+ZW1o3äo²«Èé\âí(×:»!î%dN«ò&?Hþ!é¡'1Ä;a2;<ñÄð0lò~ádHßÀ~Cïâ*ŸMõâ Z/ŸC·ÃØY?HËG,{±ìqIJǟ€ÁIÙõâ4änãrDU,ñ+Xê!:%¯tÅËÒ!µ7:¥ReË qNÕ zG4çaô,ŽÜÝU4È
+¶*÷«Ãv:OPäñ|H¯ÿÖr
+â6'ºTšs.J "çbŠüé"ñä;6ŒþÍå®áÔÌÏ!_P@üÖðe*¯Ðtñ*âè×èZñ}YŒíž<¬ÏÈnG"»ìv$r»#ël`!Wªø`,] V©»Î«DŠÓ&qºÈmÙd(Ià
+r-ùºKBöþXãa
œ?vvÛ KŒá>@²õQò(9H¥«þãb9#îaÄ?çlí]7AgOmôìû=Àý/
+Ãýp@ß/vHWòït Þé@œÓz§õvêm6ÔAÀº{`7uJùK¡ Þá(¿7à»Z ØÂ×ÅÛøÞiã{žûôVA¿mo
+Ò@ý|
+Ë+R©E*°eíàr¥@õGDAŸ³%àmdH3wÝA;:?Ÿ±ºÊÓ;Éé4+¥Ne6yäÊ94B€12êåPÈ(!Ó6OÉôŽ,HÒaGH!vtØÒS:ê^øu¶PÚ ÎRBJÀ®WBÚF5Ý,ó§,Ô@G©Þ±IG)ÎÛÅYÛ×7ªh`ŒqœFPí@º¶
+ÎõQzÞ((^î
+ž:45=áSBZìTt®ÅSGŒØqb!1Å¡",Ðv_.gêW-ž¬ÓŽþ6F;ä?}s±+sIQ1üµ]á»zwZ©Cµà$'%ž©B/D }sxÉŸc¿éØÜãÓTåšC!ëÅ*±Uãac§6q¡]Ž#Ÿ€°3sHJY²rå.R\LEòTªKi\x9]%ëèY¯Ð[ÑV#Ø|tB£|`è.客¢àãóÚ[ÔáZ®oŠe-øUZ·î©@CäešúQSmÔêÍÖ^Ö¶(CLâùŽkÉ@ºœÜÝÔ4 îà}ãN³oP/ºº3ExQò&ü%6ÑÑլޮît6ãnÇaíI9¬»RŸãºô;^
¯?¿rüÊëyœÜEwv7Sº©\ŠŸÊT^úYh_ùàÀ~ùלåCùלåÃzà>îb0wö5ŠLÝÏÔPŠ`jXú¹ŒFînDÏØ~Ho08ܶ90bsø=X>²çqËi-#7îØÆàqII.yõl(7P¹S¥l Se¶n1Ú-ãŽO¶Ðò\úŠLÐGròaÈEŒHuò
+W/Ê«Äò&ñ¬ŒEüHîRÊýg5âyçäìyú
+EÅ"»ÄE¥ÈâYq.(7[D«²yâjP6ïT±]$Í«6ì¥bš,Ú'
+Äy Ðb€8T.}S[Aå (µØj°0è0ZçÂÁfÑâBPCÅ jÓsžÔ8³âP#Ål5Zm¡3Éó1MÔn²á.ÅúS£³)£KiGÍj¬Ú#èòsÐxžÌŸ~^eøD³3cï<l
*ÏR¡|·Ó~6FÀmfâQ&ʱ€p }öOZGÎ#÷À>ÝE~¹®ìn&ï¡)ò«T&ï¥òk=.WáØÒÔ¹>ÛàÙ=íXøÙ¶;4Ó¶G~dQ£÷mã%ñ1!yÜÅ}^\aû§ñf§Qºù+VxÎçñÎÍKÅxÅÕõÑi·u9ËÉ!ØxŠÊG42Uṉ÷XçN³ÌYDmT
+xø;MËÙTÕÁŠÝnf¥n7ÇØŠsþ®_°Wv?FQîP¹«Z^\ê!ŸÇ,±ÑeØÇó;:äc-å1ßlïx¢gïª2JËorŸÉWÉ#Ð@Š×ÕÙÐ[*Ôl~^âÂRl.P.{;Š_%Ÿh{Ü NVöÛ÷W.ûþÊ.0ŸåV|yá
+ºëÜÖœÅ,ûÞ¹§ðhezîÜAD®<ݹf0Ž2o×¹šºóŒÎ5¯h|ÐúÒcåþâ<kŸ² QsÐÃe;=îŠí^±ïØ¡í:7=ZQÁÙò§Ðå4KŸLKå+ŽVþ¢òU:OŸFË×éùÝ,Mw¡ü^ð<(ÿ¬ ßÛrÏÚã£Ë)_Ý$øé{ÄçLØ#ŸSðÒZªUg1Í¥ºSà¯&ö;âÚï\híw.ŽöÛA÷©üöš7Í¢€º!ð€]cݧnl.1ÜÞZ%|5×ÊCk¬NWöáÿîÇþ×€ÎTéVÛ̵Íå®.çÏ.ûÐ
+k«LÓÖ÷á<> ÁòC%ÿëXtæ,¬s9Ö9ÉkdzÁOR±à`lUëxxmn.·m×B?<ãiÀ÷«{µvzVÑUì²KC¿ó4teg
+åãâ'a_œZ?Ïïšj!k€ßÒH3`r©4ÒÏw¬¬~èâJ#ïI×HuѪùÉ«£eÒ-jµtGm%µÁt© ZnÂïÛQ¿[ëh㥶æHÐ26ò×8úémë`Šë¿¬Hiã^G{mÜëhã^[œÈË-mÌ¡ëmmC
+]ŽQq)mT\6gm¬ì]ÒXh£v«£×l³äã;Ô±~
+?§Õ*Y>eɲd§;R€K+sçñÑê<·s'Ê]|þ_«º60ÞuQ
ÁF±:åžóJZ¢d!þx»Ï»®®¢JmÚ)t6h³h
6Öjsh6ÚŽyg%]ß7¢þ6ÖIÛz±Ï4 TK^2uõšÓ
+§REØzuõÈÖÿGwØûÉøßúÇ€ëÔ
£F§@ü/šûñ°,®w®#ö"'³°*È£ÕÅhâûÃiZÊhØqÅMöáQòZo_q»Æ[6 <yŸk}ØÐíZf²Mä¯AÜAÝþXA]!šœ4zëK
Nßšãí,2޳)[Ñ-h©jZŠm€5Z#vRÔx!åªÏ
+ZÄÊÚ|«Å{DG\Pî€Xë`×§îtAYwº Dza;œÚ±ÓËÄîŽïVÛûÀ÷hç3þFDûÜ÷þgÈ%\ÛäÎr[Ü6 w»È]ü?@îO!n
m°¢áQj"_.Côô£Ž?TjU·HߊâÛÿPKGËmY&_PK,6-TestNonRegression7/scripts/GravityModel.classÕ |TÕœÇÿçι³Ü¬d] YA& Y [:I .ÔµŸê£ÕºV[¥*µîŽ"QŸÒjÕꫵØÖÖœ{ß«ZÖVÉûýÏœss'ë$ï=ü zçÜ{Ïùsþÿïÿ¶Ï}ìÍU
+51Ý+fœbŠÈåË,/]$ò<$D>_
+øRÈÙü¶/sŒâ$1×góŒâdQÌù^qXàAQ¢
Xä§zÅbq[,áW¥>ÊKùRŠr.Q¡e,£Ò'*¯X!Vòãj5>Q+êXÚ*βÚGDœO4F~»óõubœOl§sŸ38ßüì,EÅÙ|ir-Y@òÎñÎâÔFN5sM|æÛŸmåÛÍ|áÔ9ÚÂÍkcÁ[ùÒÎuGùm[«NÎã<]>*ÛžÛ}â<±/;5qŸVøÝ
>qØ®]\ä|¹ß]ÂÂ.õËÄns9ß^Á+9Ë8u§þ»þenÃÕüì~öïÜê=|ûŸý*§®åÔu¬À¯ñíõ|{ç»ooâÛ9u§ŸÎ©[9uKþ&ŸÉYoçÇwðãœú§îäÔ]º/ûøöÛÜì{žÙßñ{Å}ÌÉýx@£-Ú*hJu޳µ(ÔjÞ.jnÝmáMk€œµš:ÚºPÖmï
+ïètRuKgQ€¥3Œ5ßX$Öm.E¶nkuE;T$Ú^fAieÓFASe-ÍÑMá¶m]ö¢®hG$TÔÈ×ÞîX€&ÔÕÙ!(³:ÖÜéèA€ñïS:ñmm]5¡öPkžSPáÙê
+ÅÐpQœÌÞ4ò£|Zkž«²3Ž=Òµ³["š*wÄeµÌ.
+ÒÕ2$PIu€=\»mëÆpgchc[ûmµ
+uFøÞ|è2ú"({0yi±Ÿ]1òÖ,|ÖZAzkl×¢H{€k± eÿJ,[qj׿HL·bGsž³Ç4ñ &[e®eÈ#[ëÂ5¶¿kñ7hvtíìÇÊC]aX")HÝ\d.2ÚQ[=º¶»"ËÛ»"x+ªÙPÀ¹=Ô¶
+&åøo+þ«¯Äº aæÐº:Ñ®Ö!Ðs$ÙÁét3JB ôêsBÛCEèR[Qu$Æ¡]ÀËéÉõ9;9Ôebì#|Q=Z¡§¬¬©O.ÒÐjÞRêÀxŠåŽ_c%OhèÀ$ôodRí*4ȹ è!2ËV¢oŸ.£ÕpÀÖŸÑHL1ßn+ƺbu-ð·p_ãZx©m³!{u^mk7³'12]²«ŸŒ
+Ÿ¯JÐÂ
+c®ÓQ4ÖD£åfÃL'µµ,§y°7>¡pKKŽÍ3tÅ2[yØ"Fï|íë:Â2ÊÊàîq{¬J1/Á0(ÈßG˶Æd¶ðÐc=ØA°úpG(ÒYÚŸ©&A|kµ7+áΟ²NìL2£ËÈh1Q×µ9ÜY¿œµöÍ;.:ÄK¯|i6ߢ
+CáMµÑ®eáM}KL
+ùz]Æ9ØÃ°àäØp9ôÑ>îçE·ÊFb8±?ŽXÿ¶okô¯²3å ^×RjßÕr:ÂÍÄ)³u²£#
+ÿ5tí«¢æ ÈÁùU%º^1Ò&f1Â!)hQcoúÿ56+úC]Í×
#ÑÐÔMXsšsS,þ`ZáÇÈtAcmJêâ°ãtGg€ÆÉ¡Õm)f'ÛJÎÏ3YÄ2AKFkACñ»XRhâ{põjÁ0ŽÛSÝ&&¡ø€ŒÎ
.'ÖÖËÜ¡ýÏòÔÁž·g,Aisù÷åÎîèv`HÂìA3òv9·=9ÑhLmžkOi6··p6#1 %W³«Ïw¶%œ>ÜÞŸ-Ü# rÛΪ±.xîlªª¬3|ÞÐEŠ4%£_0ÇŽÕËiwÐlÏkÇêÄr¶n;$Sâø(6°üyÑÑòX-TbÔnŒ© ·ªØüõØVpNݵÛÕÜÁf²ÙÎÇqó,éGÔ¬Èl:V/#³¯'%kþ>lmð©d+ëS<Zó~cöZaεœrÐ5;>æ#§oØoFå¹5·\^Õ{¢Û:ÃË"ŒÌ°ï*Ìf0XŽã ºxTÔD·.ëâ ñ}®'èt1]¢Ó¥tN»ér® +uqH<©§Ähâº8,~šÓú&~€§Å3ºø±xFÏêâ9ñŒ&~¢Äa$ÛXHËè^+§rïm°ÚøO]üTŒQ4ŠuñsqD¯_`zÔÍÍù%æ3IÔ:í'Lös÷
5°.^¿ÖÅo軺xMŒ®7tñ&WÿxQ§n~ü¶xG¿ÕÅïÄïuññG]üIü®¢¿ÿÒÄëâ¯â]]ŒÇâï¿éâò!¿ø_<Ë/>æÔú;¿øßþo?áÛòíË|û/N¡Wžêâ3~{åõ@õ
+±ª}œS
+°53ÉÙNoÓ;ª]Q®š%]q)®žf¿#ÈèmS|CN¶NvZ£Óô¡Nã¢èJ®€5%MWÒ`©dêÊt^Ëøt¡dqê_Êæªr ÅÏÏzøYÃpðíxN995Aš+øÖÍ·9ߟÕùöN¥qj*§2XÕïß#h,f¢2MWгlQfpÊÏ©95Oâzfr¯Ò\îä,MÉÓ|¥@§]ôÅ/©Ûx¢7æbîÕZ{y4¶wïÕÜuµ4ô²_µmmaYß)3ÐIPÒHÌízÕPÖáYâ±¹³ªûÆ,FžOhÚjÎÊ0Êí/Ò^a¹)n9@þE8J;yVŸTÐôÜŸ€nŒEöÞæŠÃ4(wàU°ÍÊ}
+Š!ÁVÎÙöê!dتûnî§÷ÝÆ»eÛYÄr¿œW/ÔÄ·_gè²P3ZAÚbUí±.Þ€-*3ã]1úh@[SÚX_µŸiYUÃòªÚʊƪŠUõM5uµËejmECCE58@kNbýŽUá5v{Óð<Zr\åJw=sgôÕßIMj[EÎËYo¿·òT%+·j@Ùð¶ùÔßü®Üªªrv)öÝc[xÚ p&ng&îjÛÂc{Ü)3Vµ·D5EŠ!p
+©~B7ÐvÄZsËíån»5ÕMeu
+
+MuËëK×âÞÝËO¡XŽÝXÿ¿îX_èWá
+üt¹îÏ5Ø:&
y°-ÈÞ-yËÞåái1pÓx¯
#Ïrx2€ÜÞÌ Ùåò2aí,!~0!ýíjÒ`F áBVEc±V/Vä\7"̬aº5ÐYg®ZlgcÍ$Ðg{Óç¯ë+VVÕ7Ö7ÕVÕ6VÔÖU4UVÖPj²¿?ÀJÂ[מåê×ÔÖ²ÒúKâŸô=è
+ý
+ËKë+Êjë¡÷õHõPuàlưQÑyB®ÜR€{7ÐÇpðígÃTiXÛÌ¡Y[e}]CCÓÚÒê5E5ôþU6¬ª(«ª0ÓÊ5V£úÌÁÆ6nfîáØ±&}Ù ïmûÂÚæP¬VηíéIÚåMâ,®w~ÅuÉ Í0"FJ³$</ád`zÜ_JË7«šª\Þ8&òG0ÕäáHkNq.vJüþhGê¹ýõ:º'öS^ÕPVZ_ÞÐGkÂ/AÅ%#,àUÉÈÀ¶1³wè0k«
dZÇOuï/$,Öb+Z_Q[±
ë0tÉ1 ý¬1¿ÈM2t÷ö»¬Ÿb]2ò£,qß¶,*×Õr*¯¬ªmª[Ë
Jë«JVWØâÙ ËM)fÀÓFÕ»ÃÅë³GS %£ë©œÅ£œY®bÙ²ºúâÚúá£ÓhÎÌ€39cèïÛ¬}¿g-7ÌF
+ñ@.""'yy_)w6åï¥tüÝMËß+èJüÎ#}®B¹ÃÝrRð(=o€ ÇS$ªóÂ3
Ÿ«WŸo Tj€«Ê6òµ€âîúwHóò^©)µ2nJÍ?@êÃ}$®'m°IÔMúª(èZºïXâøuàwaÞ£äÌ/_Ü|ñäåó3TäåÇøõ G~ÞAJémÀlTMt&T²ÊšB'VÐZI~:&ÒÙ4h})D%ŽQ6rQ=}
+M#âæ
+b+t=Ò.üÞ@7âùMt³Ñtqi²Ÿ»òŸ Ô3V{Ò÷Sóû¹ÁQаA-l at zÌGæØ
ûÌlþ=@9%ªcŸ3ËYÐM~A{éô,g7zÆžX\Àãkóµ,ÐÌ5»0K3sM(qç\wþ£41è šYÎ,ÍïéŠINÚ}=/ìvâzG@}HÂJO)žn
Ú):èTÚmÝΣfÚAçÒNw>Hº]ÞA·âý^ÆÊj4úéú:¹#oo€Hý}
+YFnU]Ž
+ÞgNV¥Þ»è[t'ÔèAÉ»ènš2,ìCÊlsßF;ï1é1r}ÇÊu/rÝw'Ú
+\ݯÑ=(ÿ}Vûfhô°øÿ¯œèÂ[å&ŷ࿹
hr*Vô 3? vÓ
+uÓTAó5?Ôyå-À2QÐ$gBê @âjém˳z+u du¥È÷ܲSé{ô$e¢ ?'ähôšÔ I6íØ6}DÝãÝ.~fý6»h|ÝÀîD÷ Â{aâo£Îîã°n°÷ñ
+·Ú,*gßÎàÛ1FÈPnP3nºi_ò=YÎ+ýÚ¿GèJ=ë3EÏÒtzaí'TI/JE®¡ZV[D®¶\m¹Ò$2IWHÑãxWLè Al/}_ãÍ
ër z2inó-·#âötï áW åu(æ
+÷&ž}ÜŸ
+6ß¿
œß9¯£Îw{n²ž}óâwiâ!(ªÁ"¬PšU(;5Í?MYW7ÍæÉ"@êö«~÷±4'juªµ¢ÅG)zhÚ2Q`]&Ê:Yž€ëeŸ¥>ZÀ.µ]jë¡ ýô«Bb>ý£Ýã`(5=ãüðÖ-52DLn©5zzqhôàa_Њvî±¥vÞHš©äi)2èTM+E~j:W£]b<]%&Ð
+ž¿ï÷Ç=µÏZÔ^hç~ÚéAÕH]~ÕïjîŸSy®'N®¡«S€Ë@ê·zä·žó[Üù-îÒè9É]&J=Ÿ$ÐÉÇ¡â!tÔ²ÿƪBËPZV¡j TV¡J ŽþžGè¡'ðÇ˹ŸÔ ÆQOç`7ÁNXt}Fd[)GDèΡÉbåvÛq®Õï¹hs-ÐæZ ͲÜx+Àù1¶ó8Ìýõ8J¹ÈñI#xʱEpÁÜåwÁ]@ð@ðb x Œ^wÁKà. žçžGð§£B08$·Bß·Á;à^ x×ÿ/
+àÏF°äØ"žpDÞå=Á@ðQ xvÁÇàã@ð |>}Ü#øò`éŒø@º`ôeèêçÐÕ+£HµÒéÏ-\зä,!IÎ"Õ$GµQZ¥ÆaU¥Z°8óN at pjÐU
>tÓbv«°ýÏ
+{M/çšâutçMžÜïšXü?Àü€5ž?CŒkùÏR#;æÄÚÀ+Íì¢<:I7βpeÒFÓ€3Òa- wlH6_)G)ÏŽÙ?iN`ibØé
+<cGdDZð"ß%ÃXY®+£}v-Ä¿HRø¡¡Çf±IV'Y$® ,~§áϯÌp Ñ«è,[ì×q)Óñ4%ßéïôf¢ŽDF\ê²¹ÿg at mp
+683Ëâ±ÀéïÊrñªYÚ÷bž³Ë4pyæïÎrÇmvAÛ²œG
+(ŒYÞx [åµ
//à ø(©êg;ËåòëÝŽÌE»œ@åÙÝn\oÛíÂõü³e®»É£x(SñÒE§F%L:WC_TÆÒÕJÝšdÓ]JíWüô€ qÿsŒyßTr¥1v#hìÇR]ÅÅtdKÇ}!^äZ.
+ä¡.æÍ5i~C¯Aùëv^f,Ÿc1øªV^2ÃÊz«Û»ÑFÚ#¹tJ.§H}Õ
+0/ÆÈÿ&ò3«óÈÕJµÄPcE œ%¬ ü}ãÎÛhäÎæF5D{`JñÁ·À@Œ_Ž@H¯à¬S+l¶²Ä«ykEjÍðuS-z at 7óÊ)¿®$,à€ÔGiU0Õv·:ãºÆïñ§úÓ[·4ek_Ïûz®ÆÃ-;Ï
H [)!²òE4O9*étå4Ú¬,¡íÊRº\)£/)åôe¥BÚô&Xq3Ö£¿
%Si;î~T:Uëcô{XŒþ@üyŽþ$
TCŠÇAAM¡ÿzÆÒy2»ý˺{,Ýc
Ø=L±í9€_Iÿ
+;;!q7ìüW0Hºáë]äbë6zÆÂFïõPé¶õó[ÁùFïcð7€kû²e¶-Ñ?åyÄô¡5ÝqÊéN!|ÔpÂõüÃß¹NùBöû5Nðhœ3l>Õ4V©§¥×«¬µí$ZZ*ŽŽThi©PêÕ!Sl UŠX_Nè:@Á\uÙÐW|Ÿã!èü|<\OÖš'ÑfôdzFOZUOý=éÛºc;q[?Eî@î€Sóh¥²Ö+;ÏG$Ÿv)ÒUÊEtîoÅûœÊûÛ?0q3Ñþv2¥¬àB9ÔŠRÅÖš9ºÔ¬QÓíwÊ Ù]EsÐ)U{Äïì
+y8Ô(×Wù¥(×ËåŽéÅÊÍylpÜk³é©24ÄRO©
l©
l©9ôÒ)æB'K<ÖÄÈxlRxb80-*ŽiA °$ïcïé#Âú²øÞ |ïŸßŸ÷ßûïýÀ÷àû ðœøÞ|;îñý
ï-æ¶s®±ÜX/Ÿg`twÅBÎt%ï0û]~÷Ÿ3[åÇÐÝs¡<OF|ç¡Ép%Ùf L~*'ôñô3¹
lGíhÒšulQ;{Dšº^j¿j¯µ×Ú@íM öP{šœÔÞj¯µ¿÷šõXšœ`ÌÛQ³í²€ãu_k4 j57Z¿§wÐ6¢ã§P$VSMã0þNvÊwš4×áŽ
+ÞÅV÷---ðÂX]M²6[Æ!ì¹ÈqT¶µíol»ØèJÒt~áØÒ ò8R)ÓN§:²h¥#Ö;ršÙá§sÚåGW9ÆÓ
+ž¿ï÷:N<Þéä¿ì5p <{ÐQÝB±dT°'@(Ô€QÛxlQkjK¡®2 VÔVµ@šÕµZ VÔVµ ¶šqÜ£æŽP{ãýEj¡ø^ß +/¿7ÌÜùüõüpŠÙ€PÐ+¹óniõ»[º_ïÅOn<;Î>·@m[©À¥ £Ãö5Â"K,Y.²0v{yô²ÄpM¥#ÃJ.€Œ4£¢Š4ácfËÐÜUî*/ÍKæ¥@ó2 ¹h^4¯ÍæW{4ÝÍÙÍCŽZ'!}NA·C{)Çq'`ŒñðnÊuÜc³>϶`mÁ8Ûqðs50ÞOAì úqó±12"÷ÄïÄnø@| >¿Ä'â± >wÜš[ v£u:~F¢
c$''{€ÜåqŒ
+eþÊü
+wŒF
7lÅ Õõ ÅcÐâ1hñ8Çä1."ãxL_Á±t38ÚILMÄs-[FD⡌?AyïÄ÷Aâß@â ñCøHü$~ߣœª8îIL³HüŠ91,ìCb1f}Ï[ûÌÕ4òšé©fÐtu-·¿'oºEÞxÉŠGò8;Lî¯mÔÇx[?ÆSÇ£iŠ:ÕiŽTN+ÕŽ÷gšû1ÿïLíLD<Îê=ÆkT¢ú8y×O3\<ÆÉÓ<NÉÓšq&Ò×îç5yùw¢zóW8¡<y°B€©%Š.íÓIêišc U©¥T.µŠgÈa:ÉIpé4Øù$yêÀgJ«,
¬²(YeVYÇ¥",g
+œ[zòcnéM&¥hñ41V£¿ÅOæ$ 5Rç©Î$Z€ªÔj U€T#Z
+€ÎøüÊ#R3à-+Ìå£3aùšÍò;1aêûY»ºDÀÉ94Qm³Ï°Ú=òüËò@ômÒòÙrÍè€ÐÙgr~d7aÎp&Ú]I°&Ü^^^î / /ÿüMèÿÿ
+[
+×ÂÚ×ÁÚ×#*ÜšpêžQáD
¯Q!0RÛFÔö$ºHÝ
+€îR÷©ûÔ@ê^ õÈçÔžA¢B×È¢ÂÀÉapòCD
§GüIE
ññ)²ï³ðæHÂ#øÀMÖgåÆgüÅü7à1
+ÈdM2¿_ðw)¯áKi43_Sæ÷é|8ŠÒùsÞÕÁ1ÐR?Ã?ŠuKs®ux_ÏMûz6åÉ¿@tíŠÞxyÐô}äeFNû¹Z-p õ%òª/Sz
+ÔWÏ/Ù/é,õWÔ¢ŸJ«¿ŠkÕßÐ7Õ×è>õuzP}ö«oÒ#êÛtHý-ýHý=¯þ~ŠþYäLu- Þ` rê¹ñp:E1õdMÃŒ·J~fÜêåѱNŽEŸõQ1]$?ðÀÈ]ò#/Ðæ _6dÇ?B8bÿeþ#Ö€ñuÂ÷ŒuÂ÷cóï\H3ñMZßµj=rFÉøù_ÜG)ÏÿäçsÈgÿß|.¿8x0þ5ÂQi|ðÞ?èŽr"ò»O)ËáJ rõIÜ7Ð<îî4>Ü/ÜO;ÐŅ)5 æ#ï žmGúê°ïG®~LYêßiúÍyŠYÚfio¥œiŠöR é#¹ºH5
+íYÇ÷Sã{1Ùò MÍtž×âX:SAŠ3õÆéîžGyØS$øWsÊô(/ûE¥ô¯áQ:»H €ÖsÊôšTöšDGß×Ríj9&Ýš9šíëyz_Ïûz:ðÈaøËRôÔÏà/=4jÍv*4Ñé EN*Nªuºh«S£«nºÙé¡»^zÈé£ÎêvŠÒSΩ÷ûà7Sé#w×ô«±1|d;Vsl¥eÒ3Ri5Ég)TAçJÏðÁ7KÏÐi/=ÃÕÝu2GÙÃm[¶=lÙö°åÝŠg¡€?8aíûÍ4âaÔú®Uë!Ôj{FŽTïî·Ãü$gNÂ;Ö«D_ù&ÁWü±«"
+Ÿb÷·"N0ýdªì&wtÁwéBþ[¹BÐ%ß-«SylÓþPKé~fPK,6+TestNonRegression7/scripts/ResultName.classYxUÇÏ Â£àUpc·(ŠÉ$
+$3qf.ã4¹mÓIÜqß÷}÷}_pý|ôóÉG}ôÑGüŒçÎ
+€EÛŸÌ/9çΜ÷Ó;ͯÿ|÷lçBBÑ\hÂèÐà CÈ ÜŒÀ-È[ ÜŒÀaäîDÞEànä=îEÞGà~äD>Dàaä#E>FàqäD>Eàiä3E>Gàyä^DŸDàeä+^EŸFàò(×oxù·ïxù÷øùøùÏ_øù¯ßÌc³á[TÛ,ìu²+£YËéÓ
+ùÛ)kŠcÙŠSÒlhñ;êŠë®?¶¢Àó·)pNgd[Èé-ªz¶ ç
S8Î-3Ìãëš¶ßVKegîšhÅkO¶ßÐ5§lÇQíLad8¯M4Þ¿¢Íß^lŸ©ÝœzVÕ3§ISwÁ(©¥@4ä
+VÄ.âÝ×®h¥XÕöòÓg˶#תFRxü-M+yRtîølI÷Fé6µ²Z0Þ0§€t[Óñ N^SÍ ¢VÊ(ÃîáV³W×qÙñºÖ©ÕÔ²nØ|{ù§ñÒ5íÒecŽMÊóŠaYNE-öjX9qrËZŠ Yt,=è¶Sh;ÛZ¬sûdÛ2%}ÛR¡ŠŠklqU'·É©õMFiÍ@MQÍ|Aw
+*T³ vµDûN%+³ÈþN7ÍÎim&áÒédP`×ôö\yÓŽRð¹ÕjÃQ3v¡R°¹qÖvÏ÷¢
+Ôµº¢ÀÌL£ÆWô|Š7ûY`»ýu·z£êÖ+nàáwi
+y¡gÃjàDaÚda³éî0ãw>Ù^ËäsF3š²QóÆTëðUðËuØåoCY/¬ºA-ìcÞàPTfX4ŸKÁ÷ðC
+òУÀÙíâã²Ð}Fì.º~¿žWžv£kqìÒLïFlðF¡Øå±Âjvà²úÄÒ"Jt$ÛßðY¹1zå2nT2ydg
+E¢NdQÆdeÍejÓ¯¹~¥àJ4»œÆ°)0Ñž,6æŒpÇöqk¥á*,Y=*HeÕ30
+ž& <j¬¢^-ìHðWп&ölÄõÕ¯\ϧÉ37èéKlÐX`6}/Û©Û8²5䬊7¢wÕ:ûP¹2©@ÖŠý(ÞóA#+nœÉ9tb&GXÕcag¿®ÂÈ®ÿLê¯FýúÉêç¹WÅ:þgkQ:±aëÌg£Mf7DOu]â/-°êÔEéå²Ï}^~7ô|cKä}ÔêÐÄkõcqØ6ÕUÌpÙ¶®aôÚ)E§aÐæ©m:±æ@¢+
+OÁ FÍœlšÕÈõ"nB;ËsñØ?ûFÿVøÝÜÓUþ©7#ÏO{ë·øé(0Ãwø<vÿ°zŒ ò_9þl),Â;Z»ànÉ=EÉ€.iH%¯4%-I[²W²"Ù'¹Wrä~É«$¯ŒFòZIGò:IW²_²*YdC3@ÁW%^Ï¿¥9Î/úϻγq#óg*
+N#`åšð2Î8'}3éɳèlABçÎ¥§Šè©§Ñyóéé!x&=Kp=[p!]$ž#x.=Oð|zàºTp].ž®\E/좫/¢®¡k×ÑŽà%tœàºQðRºIð2ºYpœ\p+Ý&ž^!žîÜEUÁnÌbQÀ{ùÄlâåÚóa,°¶AlKà
+nÙ»`'ïÈ.>W*ïo÷HãÎÁ!>¹÷~>óI}Oé>¡ïòéüOæ1>?óÈ_ø4þÆ'ñw>
ð üOß_|òþ>Þ}|77ŠÿPK¡]PK,6TestNonRegression7/simulators/PKPK,63TestNonRegression7/simulators/DefaultSimulator.javaÝisÛÆõ»~ÅI§Ã@Ë;IHf+²ãt:%°€ÖHVýàþ~é{Å
+ð-Ù GCÀŸûÜOÈÏ>ûëyBzÁê6ä«hœ}r|xø5ÞÅÏ`²%»0Äeä<ž×ÿuCîî3wÉæ¿¥Kî ûà+.È*!]žL`ÝÐÛ &õIÈ\.¢Ïâê»AËç·x/ö]è
KA¹üqf]3æ³zä"yÀÓ9w/S 7ÅsÉìVB"cÅ9
+1xàÆáyH®Y(à79FÂÙ%AH4!ç! V·ìÞF9šÞ"~.¥K at Wø*XDWdŒáGfÄÍc¯(`0y=Œ]Naœ!¯
+Û6¬É]ð]³_®<A®úÑ-ðŠÝ{ ÆÁù`ò%8L,s<&§#ä°'Þå¹aKûb46uBÆÙJlW1²ejtYD¹'RÁßapç¹ä^30°Ãø5ðF~¶¥ñŒÀ_H1ap®ÈÂçÄ¢.¹ 9øKÔÍà¹e»dà;z|õ0P#uùcÄðôé!xp ":49<>::úòèéá7]r96P*'{{OûlNc/óeBý-œŠJø^ÈÀÜgäøÐà&rtøì«oýýk5èùB²Êâ
ü:Þç6»æxõéGÇässNÄÁ
+bÏÈç}ùpspxtpø9ôß>ûê+9œÊ32Stä3cEéb1@ìíaDDZsÀOºïaÀëüè[_à×ôdËþ4ÇêÑá¹§Cä÷3WP,/t/X,ž¿ÐÏÅÉvÃN©ÜFç-it
_!§å¿]Ç[ý¡Q°âTàw/ð#ö.Ú<Ð|ç07
+
+wBŸ~ÒkÝì€úÐf΢KV{4æ Ùyšó$iëàGbùOÀÅ)\è¯
+>Îèáüe-ó#q&ô!ávc/:à&~Æ?ðçÁZÈ0ö@øZ;*Åü0ð9üÚ&gj78dk7pRÕávogž
+¹EìZÜ Yt»£b*Ûbš*º:Á$ÜBUnK*ãQ!jZVI@îGä7ÛÃFG~r,)P €2§÷ (»ämÙw²š,ÿÞÏpÎÁ µ®ëýdñšäž
+ù5HG MI|ÏI°ôàV+&õ}T1$ÿce¡42šâþߢŽE|áÓ(ÆÚ''\(]\ÜMs=ÓjN¢ÈÿûPIÃàF,If|ðið²Â+J!@òa*ihûx;Ñ@°:JåþoA©Eûta"zÃhà3¶âå
£9Þ/ÒNÇ£óÁø:&ô3ݺŸ0íéèt:Y9 p(Å.ÒÁÛEüé#²cçÂÒwZJ²02»(åZhÀ«p+ëqgedýZ'iI§QÏÏn²ûZê19l±zEñGZ|w3üMLÔÒ*zõNI@Q¶Rb'ËÒ¯ÒÀ"Bº&aáº]T-Ê
]³óRA¯j¢,ÐÐÓö÷UÊQ ±\]eÚÄB?ÄîAË }hLìÁSãÅ¥Õ7¬Y©i[â@ä]bÆÞÕMwpPžx
+Na.&16ÄÖð{û©^Q
+oðêµQ¡Ò)HKN9(\Òš*V¶€ÁÃ7ÊG&äz0jÓ°+Ô¥Uó¬AŸÏRQ¡š¢ÓšN!T !r36Ç©""·ÉÖ¡ZªA. i¬rÞmöKÌD€Õ?3Üü\v»Ò¯Ò€ n9ñU€i²¢viø©Ö1
+>ØtÈ$v¶@!ý&Båô(M.®EòQ`)k@®!Ts*¬*ªA»ÔZRdþiXýŠQÕõð{4r®ªTïöjtóò6}:Ö¡!øÑÔèM¯f.²LS"Ȳ0çqÌìMÖMÀPbÏk""u+ñfhàC'Í9rb5B§µv×bÂôïÿüVÌÅã(ª|$vK:)êÑÝf
+f@¿ÍQw-ÞQè:ûw
+Z*é_ÔôßE=6ÀÞÕîüºn¢·VkbŒ d
0
pŒĮ©~\-MV×3t¢Sam»ŒL4¬ôX)»%c¶ùé, }BQíØÎ!Y³µ¢ð¶~2²èdæÍ²äªÅîùhyËÎX?rÒ"^ÓÐOC«žéAn@ëô(N;UÖskÏq¹ ³0ÞïJf9Ü7ËÔx·Ðq¡Wõ2ÅõÕUêm¡ZPÖ^h]MQBÚì²!wšÔväxÇ0êÈ$>vÉêT°æBY³ÝkœSFÈh8»GÏŽê |4#š.²c%¯^oŽª%v
+6{¿9DBy¹$ô&µIYªÃútb'Å®KD°3Z(2žx_hn ÛZ1ߥ@{'Ç®`yõ=yz:²'Óî'¶11ÏÞLæd}?Äæ`è
ªßïC.ÏL,!
+£T£Djž×ä&jkmRoD·TÆxÒ^ç÷ÓÜ Lõ×$úÃ)h-Ùíœ÷~^óÓÈ2§£-=æ'kÏGðE©*Tî!Í $%wDÕA-ŸÿÒ-TGMæ±=*Mÿ'tñ
+*ZêÒ:@;ž³ßײEájÊÀ*-U©R)»[ZÜzï>yÀtýu=ývòA*{Õ.
+]<|@<øiYâÿáJ;ŽPs¹â]PºTçz3õÛýJzÅq*Ò%¿>kÌrW
+ÿŒaYWjÇZ[¿¹¢Ðü%Y ¿ÿN*+aÏCy
8¹æP=žÑ?硊7jäùt÷Uh·ºg&ÇúÅüä"o³*Q¯ýÁžgØýqZ?±t®_ À϶«µFïfP°_ÙÝΠ^i÷Ä€mZIåÞvq$ù)Ê~!¡dÝ€Â.sÍöÒ*W¿kŽäöÜž]c9ÎkspörRôµù²¬¯çÚÔõÛ'KýÜÈÍâí µ&JYŒ!oñ
,·$
ÀÌtnXýu&ͳÎ4YRn¶ZålL³ÉÚ/Š×5Ë»ÎcrÔŸä~,ŽõþÝ3)ö}ŠªÂ±oò"EgãgÂW~È®YšöϹCÓÕ+ÈDï"9ß©³ÏQçgµuå\QQïÈܪ0[ñEÒH¬ÝCš3G xÔäÔì!kÌ6£wâ2E(z§'üÜ_³`;«=wÙ0 @Lbûä[~ bŽJ ºõïnŸßß%åî,;.Q;[Õ%å³^
y¡kÁäT±ßÝüÏÐ6n¢Ãå.;ç¥Íf -w~*ÛÌÙEŸÂ§³ZWó3Ï?$ÙÖë$zäÒ!_Êel¿èf(ù©zvNÊJ§7n_KY²]ñ`G²Õ«nº×ÚÔM¬
}!<èÆØ×G×(®Éz$Ûp/ixË*õb0ãqû TŒZcð"y Yiù®oïmÊÕ
+w£²k*±©ûçÙŽ@m48t~ qç,{s>DªFÑpl)Uî®»Ï II=)¢yS¢#!×ýDãCJüWVëœÔ$œuQ¹y5ÑFý I¬'åSyªj)MÍâ#ÑðKŸËaimX ?LKß®á,&ŽÒl
+I³HÓ\Þš©še²|¹î Hw°l%¬GX+W(Ó*(âa1êÁAWxðûU
+ÀõØrÊÚ{0Äžk4aú|ÔoÈãG},ÖqÀOÍjf©yÔ/²¡«CÀõ%ÉA£0T{YÒiqÐ1B .jø4xiG²,
Zœ$ò fW&#\DÚÝ!gU}Ùúÿ%Î*ºXy<:îk
+w#'U>¬²mæÐŠàùÔºÜvÁ»l
+;~ÝDÙNèÙ-BÓ·ø.Ç2QmHŸw#"æ×\=Åêh²WTDOÃ_©·BNçžãk)z : QŠX>Ú
+×iI>ä>,µ+v~¿qª «
+µßØPAAQß*IŽUÔGUrºZy·%C*àÛ¶Î
+=Í>ßÌQ§ÉŸöÄÉ.j{±áihN3íÒŸUE«Þ/é£jÇPê}ñMd<6I>s4ŒM^%÷å$·Œ<PçCz°áùŠå^ó@©¥ÙÔÎŽÝEÄZ£_ÛKÎp,É«aòdAÔ[I\¶hurT<4ãMËåo
ÙJ{Ð÷ém{Æ€÷²²JÖŸKYÖâvcœ¶¡ZUUÁÊÞt³aalMë\û,@Ï~¶€Ò1¶k¯VC^Vg}8H¶L߀ô8æ}foÕ}áE÷såV®èìAÛ$TGTæìê±zBœÇŒIQÝ#,,ŽMã»íäïµ°CÆ/qÝm2ÉâŸÐ ¯^ã±yÞ*É¡Ì"³*0MÓNø€ÁÿWéÔéP>nxWqÒ]œ4ϧœÑx2Æ×6Ô!÷3f^/ÍÓ_ÈLŸÔ¬ï% NóãKW0áÍp¶yaì©aõ§Cc`MLß¹ý!$FòÐðÝ!ÅÃì>&ì3</ZøøÒ&/A:ûÒ²Ðg?Œ#|Yß}üöqüÒ°ÍþÔM 8« æøÌµè¿cî§%h³bÛ
+Û )Ö£P!ï=§¯óK3¯ÚÈR;ûfo`wè?[Å?!ä9§Ñü<ÙæBWÌáLlq,ì£ëâaäÿIý~ÁŸY?ö-òA¬o±èÓŽýv¿å7 ÿiØÝ6-óèa2JJÀWÍ|v³I KÁ§ŠmŸ~É{!»y@ïÕ°œ¶°öÙÀ^¡t=0^
ÿá40ºñ¡ÆÓpÁýÑ5MC¥mÀ:¥<âçõ¯©G3@¢ÓûYàñg;9çc8æL'§&ÿó(ÁòñrÕNê¯=BÆz@jy··{ÿPKe"QPK,64TestNonRegression7/simulators/DefaultSimulator.classÅ[`TUÖ>çÎKÞdòR =,ÉFÓ%Xâ$$#ÉLPÔµ®umXAEK,ØP±¢+šØl¬e{ùwíòóÞ7É€±ìÿ³»÷}ïŒsÏ=÷ÜsÏ9÷NvÇ?ÓÄ&x3ááx Ä9l&E)XvÎÃnæóW=JÆ£M¥2
+ËXÁM%7Çð7g*U©èÂÜ,qË\Õž$ÅãLx<ÀŽ#Èže¬M
±ÎõèaJ7Ü4Éè5Á<Ì'ñs)7ÍÜŽÐ~¶âÉÜ/ÀJMÔx6o ã
+fYiÂSðTOcÿÂÍé2aÄ3YÈYF<¿Ãå>çñ<Ïg¥.ñÂØ¥âßðb#^ÂÏKMx^Ϋx¿\ÉŒWñjñ^cÄkyüÕ<ÐF×qsœoày¯5â©x®3ÁL\oÄ
+Üçf#ÞÂ2n5âm<vîq{*äâÜÜiÄ»žŒ¿ÜâïetsßÏúobó>`ÄSñ!ì0âf^-üÒÉzaõ5âcF|ÜOðÛV#>ÉbçÁæf7ÛYî3©ø,>gÄÌý<¿Œ`Äùù_æç+<ò«F|ûŒnÄ7ø}'7oñ-&ŸmÄwsße=Þãæ}#~ÀÏžÿ7qó1?a>å×ñ3#~Îï{ØñŸ`ô%£¯}ÍèFßró¿~ÏèF?2úFÿbôoF?1úÑ/~eô£ßýÁèOF{ $`d`$1JbÌHfddÂÈÄ(Â(Q:£FÉÂlY"[9²ÈE04ûòJýÆBw«»®ÉSXçoiñû
ô¥Ñëk,,õ7ÎFH>Ìëó ù"HEþzBF©×ç)ok©õ\îÚf¢Kýuîæ
îßÃD)Ôä
+"/
+z[ÚÝ! XXìip·5ª"ÃþL=Î/mz=Þ`7ØTí_îçõûüŸgEh6«
åcÔÉÔ~Ím!¯¯°Åjâ&à]QXŠ>Êi0C«¿aBÂa<Ÿ7äõ+ýáQšðAÈ.=ÉœÌ]H!O ¬ºhãH(¿:©áaIj=âÎÑd5»ÉÊöuÖð@Éîºw1àziñ*±œ«ZвQïlOC?ªôªB€§q%}"ãCõ®{§Ùð{fŽÛ¿ÏSÉÆVï
+Ö¹õ<ÞÆŠndÒ»PLZ0ªËü^w¡ÛÈZQ:
+"LðJ#$µºîéýî[É<!ÕBêØó@ÇŠ.ì¥Íî`šÚãŠ%AGøµXuZ©^}ä%ZÙJ«Ä$ÃðËÜ>w#/lAB~EýòO7
+aâg?¬¯U÷æÌŒåuok(Hêj4bRiœ¡eŒ¹QøµF]ŒÌO;ÜèÛ*]»4ÍM£2O*&£LÏNýSyD{Oꣷ3ÆÌÞÀ})Ÿdêöf©7Èh
+Â!ijÞÃúعGð«BeîVU
RYÅYXd1TÃdqÕ*TŠÈbž,ÅYäQúÅH*6(µSV§Ê?ºÛIk
nk[çjBžlà¯ûú÷åýzTåZ¯¿Å$U-uîP]SâpLDS ÕhÑ&2²%Ô¹rØôúü=mãúTyÜA¿ÏAxÙh°sã ÆP>µÓMKëAÚcªöŠ=Š¿}ÍShóZhwm¯Þí«#¯¬NÐI³ê:œ,õK<U£d1Zcd1Œ/HÁµ$n×5$^ËŸ¢§xó«kçgS¿-Pççe/Ïée§°×+ð<Œ@Ÿ«qbŒ,ò1ALTÄ$1ŒYb
+ÍL
ð¹¶"S1MLWÄÁâEÌ3y²]\eŸNÉ'ôMÌRġªÙâ0E.PÄb"lb.íEbEØÅ<ñýtEù²p(â(q4í0E
+Þx(šÇ6Œuyl¯»Ùwt
+ráœîwETÁ뎫yöSábõ
X$ÈÇò6¹åÀ¹mÞæz婵*ò!O+Íj±šæf"ÇÉâxE j(2(âDxAnQ«:$S×±i<ah^E$Ê¢Y-öUz|ÀR
+Ø*æÐjtÕÝ@óS2"N5޵K¯AMHŽ)bhCb_æŠLíÉÓ¬EɱÞM£ûQr(b¹ , Qà9Ø!8EП]äöåyx8Ò-.Ê+íTAs"þ"NWÄâL]ìÏk
+xòž,">UME%ÎVÄ9â¯ÃîíÉ£Ê%O
+?
+ÃÉ0¶úúŒ ¿
ÆRwu;WóÄREÏèq4
¬wsVàBqÅO_Ûw²ø".(âRá¥ÍÄÂè£ÏßâF%âLE®Æ:ú¡.J^Æú
++Ò"|^žNÊ£Â)/\=)âr±JW°.Wcq;nrIÀßÖJÄÅXêjE\ÃL×ÕXÃè:1×òzEÜ ®§Tçô77×RRíJëØDká RRRÄZxÔhñbŠžQÌTÄMìuvÞâëXÞz^šá'ü§97
ÙŒjÈKÌŠþSpŽØÀôfV÷q«"níž·ÔÜÜ)ân>SØù±A÷ûšs¿ßÏP²«xžOàP ñÌ(êóKÛb3S2çn r/¯ÅÛÈß¶09<Ø©âdø0ø±tÙ¿<*cáêG&?ÎÓyBlUÄâ)EüÎÓ<Ïmb5ÅhR±¥õ`Où"¶s¯gØ#eô£gô£¹y__fô
+£WœÆèuFo0ÚÉèMFo1zÑ;v1zÑ{Þgô£ífôF1úÑ'>eôOF1úÑF_0úÑWŸfôXJSíå'oñø>.`UÔä©õ÷»U=\°>¢boÀ§¢&ì=×SU;dOÇŸNQ}êØNïA
ªr:÷»
+§ Üý\LGÁŸâthî£Nìaýz-éžšÀ<ÑÕMEuLÙPlÅ£K4=?ñýAlM»uÝêõÒ
sÎ5éa؟Μñ³úmO³èýAÂŽí4lÈààH¹ l®ÝYS1¯Š¬¢Ü5
+âÔ6ÀšF;§i²#¥):#Se!å;žÆÍ$1]¶HaöïzvNb]æ"¡ýž¥·?c¬<>ÁvìÛôÎÚl.;µ'Kô|àNgsê7pA"âOÝéqS¢ZeZ§ ÝèFo4XäæOH|¹&7¹åjÀ#[BáS_²#üº<Â7 :ÇDšH¬T³nÿ.ÍÖ|«¶-IÍåt,®±Í]P^l+/²óµLת§BÎõÈÉïþ]œYeÊþëݵÕCbxÅi©Ìù us©øÄDÇovNkÌÇÛ<ÁƪméÑ}/:
+ªÛÓ|¿ÙÚJ¥»\t#
W³»ðŒ7~cÈ9Å;Kt=ÇÛÎ;u¯ÐA
+Òi\¿ôã°R׬@6q8gî5ÖE.@ä£lålÎj2
+ÙN!]#2Iòz:F_CÐýŒ¢ÆVär,tžHD7h÷ñÕT}îERÒxwøm|ÁLÇó#\ÜŠí×¶ß×<:ù+µ
+êðCÚË€nžÇ®³5õc'[2J4ÒðÑ%×<ªgÀÇvõúc-p¿æ7dIßw=ýܧ)îúz-¶VîC2úîÃ?)°ÛØûDdop;àúŽÞ&&pfÅÕð/çêÄsÉ€vír@Cdæ}»Gë:%<HYW]5SýÉfîŸÉÝ³ÐÆ°æ]¿çHi
+xluÿÏ@S=0yìóæU8]5TêU¹6œ€ºŠÌîBªùtâ_&{W¹kš×B{i/ºŽ€¢Ü^SYQ©»q!ÙqP\>+s·ò#PíÐÈ
+ë#
DËL-;}TG¹4/x"kÀ§8ò»ÿ?\çW!ÃÂÆ)vTÙÅUûiŠ3ÇÕfêe)ÈKûOñþ·Q]5_dwÌwÅO`€Ö³ž· ¯@Ž?Bsÿ&7<œR[y±£ŒD:%®
+ÂÙûšüý8`R××FÙ/+ŸÿsÜŸ ;슌Ok#édPzÇ!5ª'p>8'. "
/=<¿¹2[Uÿò§ê27ò#ÑýÜ~[º~Zipóë/
+ö¶Ž:ß%÷ûTVÐ{§Û.4ÇSµmhÔvÝÇÓi·Sâ3¥*ŽHœéüÜk!Oÿ<«ÞSÛÖšE2oc@;YÚ÷0ûÑɳ8Á¶tÕ-àhéFN ±S°öpŒïçÆòiÅ.¿öûaºYT)ðQ§µÙV¬%y§§5à¯o«Ó§ÏÖúßÒ§ye\gJîfµr<#*mÀMw[ìWËᥚ§ß.{ÈNÿÅÝfÑiÔUÍÿ·ña?:aJ¿¹>ÂÇÃ`ÍU4¿K
+ÓÕ0#tHÅòÃæ9ªæsŸp9ÊìZÒàÛ3-ŽWUÙK)sjÂøên·
WZÝjô\HGkþÍy\DÞª*ª\U|®µôÒòÂÒÚ<ÍET×+Ž?ÒÉ€êšz9ïÓdÓ 9 »BúîÓÃöJÃYCY³ŠÌæ(wÙËù¥ŠÄns&è5YvÛ°ùêËÜ^ªs}ŒJøÌÊèt€Â58ó,º
+Û€"Ôä 8Û|>IWQõªosÚéî"«,&Ô]ZxœªÜO}¹?4Ï»ÂSßUÞäxyeŪ±z ²G°[Í-qVTUÕ,Ž.°ó«p¹Xi/rØ«ží4mÊ.Á ZbW4j¿WòHU:Ú
]=¹°?CÆ
+ßû0záÖ
+[©ýG·.Õ¹ÓÆ(÷úɬ GaÿÆÐÍbŠn0§œÜŸsUhÎÖûXS¢c9=>ϲ6˯:]+rÚõg°Áåœ.lÞEåŒlÎGyMÅBes:lsKíºýÒãp·öríw Ñë«XFcÿ2,²kPÖ Œ÷U«Š&u :¹OVÐ?c@Ð
+}ðŸM1 ñæìõS90ëæxÈ>
+Ý&ýxï7iÑ[Òdª!ÕµéúXQ3±ÂõJ/¯
+#a<ÏÒÿLüW8DøyxÚéÈÔï' à%jUâ<xZEcWàUz"Œ¯uN¹dÈ~Ô¢eôÊ'w@Ò)GÚÉM3
+:@¶&ä$uQcK±ÊLVã#Z=i3(ÖG z%e3€[Mô-ÃJmŠU¡v5ÍbIîs'dÑæI·€wB6Â(`°r-0ØiÉÜC:Á"ÀjɰdvÀÐöœ/Jìéæ:`8÷bA° ¡TA²I0B@ûÞxÔŒ€
+ÒpÄÈ5Ü.e0qÚæuÀèG`Lõfk×ãß¶ÀDGéILŒ šÿ5`Ž€v@¡EÞuÀÔ5°Ä¢ð÷i¬Ê3PŽŠÓ€Çààj6åCªª%
+Íš"úÌjyÖ8šf+?;`6õ%!<ùÃ,²/0p«âæ©ÉÕxY
yNb€òi5fd9H*Ù~3²Úa5{Ìí"fI0bb6@ŠfKv'Ø
+`Iã®9Y0/'k
+(ªÄRÒŸ÷öœKÌóªyL?ÔšWS§k #ªïQ-ákí{ï*0ÍÃè}(6ÖðèX¹ÖÌ5,mßûa¹ûÑj««£š ÞCóÇÊÞ>ÓÓG³\²ÊìêÙ¯¬ó"r"ñÈÓfX\`®þ/ZhIÌBÇöl¡ô¢=¥Úç8èHU·ÁuäXôrê¿ÇË=øou%³N@šªNfTCHNàÓÕIæÕg²ÙññAçXu at -µN5ë0It¢ÖÓ5sÅ£²Ì$HgÒž¡iÐvH·Ù4MèÝLZŽuoßT`ö²Ep%0óRz¡PÔ¬¥
¶4%5¹ý·ïÄ]ø9~ 68tâ5à¡0Y F8ÒÀ YPÃÀE±xEp,°æÀ±P
+ÇÇ D©¡Ö
+gC-\upÔÃZ³NÛ`)lfÙ-ð&a7,Ï`|§ÂwpüÁl8-p6sp23á| .ÄÓà<.ÃKájŒ
+®ÁàZ|Vã.ž?Hóëñkžµ"Ö°^
+¢nÀb6Ü%ÀFq:Ü-.{Ä
+Ð!6Àf±¶7àq±ÂVñ
+<)~§
+¶Ra»!3|xÞ0^3Àë2xðvw
+§Á{uðŸa#|`x>1<
+>=á àK) ŸN¥¥ð/iü[:~.
œÒévDénÒ€§0IzeéT€71MzÍÒÇ%íÁlé;ŽH?áPéWÆ©_)dß,xvB&Y{Yô-È ëoÃ;NV6Â.xŸ>D+ÆŽ²d9ŒG=2ÈNà}øvÆ.ZÍi-²ÈáðñI8Yí1l|&×ÂjM
+ÙoÆ'`ªÆGv=RãÅ$EãÛ©ªVâ>Š})ð1k@MOTOèSH6\LÖ
+K64D$SáÔÃ,ÝcɵwÁçí?ÕÆ5Œ{ì!ì!OËà$.} _Q!`~¯á*Ò€oà[òFdIÃ÷ðí
aÒnøPvÁÿÀ¿šš8Hzþ
+?QÙ0CÚ?d#%GÈ¥ÙJ÷Âoð;U*NéøŽH
ÅÒͰ¹9AZ4Ü&-@JIáòD£$Eæ
+Æï¥%ÍÑ(c&SeTdL1]Fú)ã Í2fÉŽ{høé@¶9ôö+äeý¶ßa±¹¿ñw .ÙÀhØK>Ý_Ñ,Oë&㪎dŽLüüâW]DšYª£GpÀØÞXþ¿AMÁï0ÐÏ@ÅòvZ&2Å$þh\KºÖÂ`°Fê°$µÖJŠÈ'uß*«œ£ŸCÙOŠÌNLŸ9À)^b$DyŸBtmÌ k5úÍT`RkIÚËÔ<d2ÅZ.·µïFúNïé]â»Bs
+ZMjrÎ1\ê*ùq
+BSj5µS$OaöÓÝ€Óâ/¬
)¢Å週YäN8ÃÖTãÌñ,bTtg3£ñtÂ_)_ŠéžÏeî4=·ÄŒçé:¶ó-]Ïn1u³oªEÑRT&±R®%.äÄ¥sË1ÇGYüoÄ&ëØ.[Ý.¡Éfé/eÆ,=c2/Q.SQ\®ÖþUÌÇÏLWÐ*gkÚêÕž²«ožÊ3YW[s5·È%·ÐŸ2ŒÆ:[wÀµÚ÷Áa·Zq+b$Úëíûú®ù:9§LªcºŸ_§.|@2š€7á4# GR^CpƱPãÀ p:N¡ü[Wâ4XÓáíïÁYð,Záu<Ÿ¥ìò;Ú(8áX,&4«°ýxGã5Xë±7bnÆJ|
+ø.À=žH$áaÆcŬ³°VÌÅ:q66Vô±Y\~±[Å1$¶bØËÅN\!vãJñfHÆ3xáP<GÍÉ0.HyÁ(vAhGH €åFœ
8ÊTÄDÊüï(KMÂ<èÉ0Ä0JÍ¿2¬ëq$ÙÎHÆ58,íâJ²âNÊ¿#È;!ǪlvBùó ¥m¶âBéd58QÍÎñR²<ev²×AÕÈ^+h%(Ó¥òi=vB?Óªìlq-ÜÊëšJ(WlŠj¡ÁKšöJúŒjt§ ;áO8XÆé2RkÚKÓH*ÈP³ÀÐ(kÿ%ÃSOÞ!Gü(Ñ·4J©¡£ä
+ª·* МÖ*MÄNz8ÑoÑoÒÓ×Åèëõô
+=ðߣߢ§ß£ßЧ·Çè·ëéwÄèwêéwÅèõô»cô{ôô{côûôôûcôMzú1úzúC1zŸ9Fߢ§wÆèëéÄèêéÅèëéOÄè[õô'cô§ôô¿ÇèOGéÑžCõÏj/Š=y y÷¥w.Qž
+&àpÕ÷VŒlt«Ák ¯ñ:Ǭ
ñFXëè°âÒžo!¯¿Öãmp;ÞðèÄ;a+nx7Œ÷ÀÛx|÷ÃÜßáð+>DUXq±-ø0æá£8éø8΢}9DíŒJ|à6tãvlÂg1ÏáJÜgâxŸ«ð%\¯à|ïÀ×ð>|€í€Þo÷ÛDyþ³wã{øŸßSäûw«R¿S%3b×åUdd¢ê(:9.¢õQÔE¯FÑB"KM"G¹£he¢;¢èÉ(z'ŸK[<a q4Eq*âúØ FŠÁ3dpqQÄF¯úF©÷xŠ,ض¶?sïWïób÷}:ÌZùgÿ/PK·Fü¥ªEPK,6TestNonRegression7/formules/PKPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.java}MkÃ0@ïù:6c$MÝv¥§QÆÁ;ÏQ3ÇÎüA£ÿ}N6,géYžcüÕ6hwh;mTÊ`![a+aÊ 'лk65áºDéP€e®é§Ÿ§óRpàYÅ(,.Ââ",_9¡UŠ+Ó4£)ͳ")ÖÉj³Ý¬sºÞÒÍ.!Œ+D9{{ÅQD^uçåPŸ Sï(êÆÁ÷e¥RÀuÛy[&+Ú^
+yûêQ+'æ|ÿÿ/M+<í;šûk>Z88výeØJT°na¿å¥Á óFABlÙ£pŒ{Hî¹\ÄqàÌ"$ûGÎqB¯<óô·-ùOÕO:£¢Äyé&ŒÎQÎ9úPKèÈæ-=|PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.hashCode³4577ް0PKHž%Å
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.classSKOQþ.-3òê[ñmZ`ZP#/E %uÙLË-\lgêÌÔM\é/Ðþ4®cÜü®ý.çÎuÁ|ç{æŒîwç~ÿýù+4ÝÀu%÷öù
È0nàŠÛ~ã~ÙzùKÉœòÝJngwõçëá]%·÷N®÷Jnß7TÜRUcPŠ)Üi@4VdÎXë¡?/LþšY/s{Í(×È3·*FhØBîÛÎ »)Õ|Õ²ëÍwŽª]U×9iG8Uálžé
+Wp§4÷ŽižÂ2K©Ôž>ЧÒzJKFJñìD63Šg&ôìš>:É V¬z£éRr4_µµvUí ªæêhž|
+ÏXŠË·ÝÉCÆÐV¬F;~Á¶Éج×ÎKeH¹Cç,Ä<ZcÞkT,6¡ÝsÛÞ8íVÓ®ðy!?><r[Æ3£Rq» ÜaX>æd]ŽanhËå-^ÌJN»ää,qÃ|ÌÅÆ&åý+óÄQh×ÃÝÅuï_ÄôÓëa8AO©4ñ@2B;4#ÝÿöÑû|€â98E²ÇÀi!Ípç(J&ï.&ŸA £ØCá¹0)8!éœb@'Ü%LîË: jË·C0¡·Õ×¢7MÝ^¥.šÈB÷È70Ð|yôb}X£cÊ/ûSµ'Öy\ðNQÄEÓÔÈ#Ô¥üE)òžbžêÑpíPKî'¢@]{PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.javaÁÓ0ïy96%2Én·íRºXqa+T$\"ãN[ñJW}wì6¡Uäiþ|óÏØNªor°¶Ô~éÆYbXÐkÂcôÚ¯µß
+lY³F/d6BÙÀºäm:HïÆ
/F+PFzu¬{`ÝëÇïA²¶m]UwãÑøv:NF÷uYWåýž¬&Õ讌N&Õ
+ÄÆ&RZö=v$ñÁº`éÙUP)ïÁsïnecDP¶qqpéuPÄÇSolËžãøß1W6ñt·°(®¯õluÅüËEåSìº
&E?£4g_å)¢ #Þkϯ?Û`ÏåÅú¹é;²Á=À&
ãÿkXBçÀ[²?=<îºnóa¶s(E9˲øþ©ì ^ÝæÏYÍ£$=QüãT'm¿+俯})ãÕæÃÓTþ$MÀ¢bOùËdYçZøŸŸ§"1óYvÈ9PÉî!~¿PK52*;PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.hashCodeÓµ06260514PK}Ý¢ß
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.classÕV]sZE~¯Cà@°üš&jÌ@1FCZ«$¡¢öOèNçÐóáÄþÿÎxßKÇ+/¯þÎÔúîB0MCŽ7r±ûìò~>ûŸ»ç·?þÀŸ!µ0Xã]lðá= Þ#ÂØB)°þ¯¶%\pCÂuÝÐ
+o2Ueðmw5ɲnh»nç@³n«mÚ¹T6ëj»ªZ:_6}NK·öË
+ÓêžmÍVVMoXZG£ÙÖín·jáè®Ùµíû®êèŠQËdVrÙÜòjv5-ÔÒµLºKgòìJzy5Ï,€ºÙéºyy,7,e`V96«Ø:¹TÓR*}D·LÃÑbÙŽJRi»n(ÕiñÁÒ1í#ǪìÝÍÑÎ×]Ú!b©|OýJUÈU[)ë6¹?o=Fx©§n1,è
+Ët»ÄGg>áóŠ£Y(þß²xå-Þ1
+LÌ
ùg`»óãäI×5»©±ÏÁßáŒ3Ì{4Tà]KëZ&EDN< ÜöûëØéS!Ù&§*ÚÏåhXí¶¯cÒ8ólA#¬²µ>Ãäpóbz§ÏTµ~ž£vE(nRë3¶êZKÚ>¢Ä+zÓP×Ò»ÿë§ñØü¯Tþ;§cvršbºV]»®ój)?§[rG,c1 Ë(c_Æ.nÉØÃ'ÔçŠÀ°pdì£"á¶OQñ>gØ{Þ?µŠ8¶j4[÷Ž:µ^qd'ÂÍ}×s|ì^¯³!ÃÔß^ÝÂ}¶úPc&}J-ÕÞw%=£wèa4ÄbúXþD*$=ÕÔqî«ü#M*¹óB"UµíÖÕäYgwžå =T¡TJU1Ÿ%úPðÐLEãŽRhf4û¯ýö£øû±éÃr_ÓxfràåÊìHÂ-RµH"Òá;|ÉáWø×¢\"ØLL$Ò ÀZ,NÄzâþÃ
D,í!èÅá4&Ìz!üðé£D({ûððé÷ÑD<ØËÙ æ07B>4ÊÙŠ\yßÒ\"É8û"òx¯ÐÞuÕ«xÑ{Ð Y.ãuA7G@sžBÞ8'o>ÞÂU"£$R""×zÐ@d%DÚÞ!0Ųìh*CÍôPS!Íá8|O {%,=Á¬e ÷;E\Ðs
8Â<áU
+PKÝÅ/O
+PK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.java=OÃ0÷ü¬|4iCÔ *Äl,I.
šÿ§4i
+|g=zïñÉïŽAš
ê,G{¬BšaµÂ]×L×L·{ÃCM®ŠP
+)E
ÜÖv(íŽoPrªµ'a1
+QXl?,5LôE&é2
+£hf«"(Òu¯²4ÊÂ4N²lî]î$œÑW<ȯÔXEùºå©A8UÂuRtÒ\\òiÖ
+¡ÈËÏÍ oEopoÜܱ_ÿþWçE@
+ùïðœVB3Ô?f^EðéŠUb§a»/Q_<x¬ÅÑ
+ôsºé!rOï)ÛS4hª
ï»1jàfLÇùÈÂ$h4£ËÆ3z6,g4h2£áDÓ
+WXSËÍçÞç¹óå}PKÒSÎPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.hashCode3471Ž0µ045PKúe-Ý
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.classTKSAþ<6ŒUâû-š!K²!B%¥Båà%5 ,&»ë>,Ê¢ÿ@Š<YxðjéÕOþËÉF=P%T1UßtOooÏ7Ý3ýõ×ÇO²0ºÄh|njtcéø\¢µÏþÌ©ýþJ×ñÙom˶e¿Œi)t
+ã2ñiÓ2ýÈðH!:oo þi ±)Ü
+ŸY'Ë©]åõ2wM¹QÇôj¶ÛêÂÓknŬ¹¢!HzŠW3œ°|Ó7
WY|pߎJ&7&L6;iñ1ÏF¶1rùb±0Å UíøŽÉ»áRÍÕÚz;ªîŽ#÷mW_oixÞ¶|±çOøCŸf;¡ÿ¡ï»vàüÇû©m©E]Ñ`È9ÕÁ±C!¶-Ù1€v*ßK¢Ì0xs1ô®ûŒúìwÂÚw-îU
#Ãy²Ž^··*LùñáñÜô.Á{pg5äz0<Ãê1ß5rœÎm}usWT©p
3ü'+Ü\^_ÜßyÂåmøìOFRYQá/o©7¹ë Àp{IÊÍçh¥d$c©`ïÕçó²'(chîi9à".dž+ä%þA2F²<öZͱ}DÞÊ®²°»RŽjDAžK!ÜK"ÖLB#tº œ~ÂÉf_<"M
+]*R&iF'æÈ¶@ìñ+¡kèÃú㫱Ԯâ:ERqXKmC_j7qÎz[uÆÎi
+«ÐC"€TjîüPKNÑèRPK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.java
OkÃ0Åïý>n£&ý³K7vº{p]%1K,OYÆØwº$;Ã{¶ÑûI(ûf*P%RÛk«Ž+ Z..Ö<;võÝ_R¥- IìŒn
+×g!×kB:6Î*ÛXÀb#°Ø¿'Ã}eËÕf¹Èg¢ëb&ïÕbÏæùr~¯òl£€q#ÏñòI¿ª¬4èÆ2ÒØK}PÅ6$KØèd=FÒúÐß°CÏбä~}úÿÎ^0¹GÂTuÖ+az{¿RýbtÑ?ùé?§êØñ*k
+}îÛúVqMøÕŸ³p"¯²íä[ÎPK^Q` PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.hashCodeÓµ42371·0·PK>¿e
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.classSÉnA}íØ0gaßsAIi{DFŸ!pCXí¡ÇîÈzzPø*Ä Äà£5AB¥º^Uu-¯zùùëû.V+XÀ}<tð¡üLÊvÖÖ]ý^2Ôz*¯ãéPC1g¹§=19F%vî,Ú±Þö|mŠñDFÜ7å9|2°Ê*
+ö>ÄÂ*fk·¹íÖIîêd·¶wÜúÛÜzê¶ÜÆnÁñô4-uù¶Öó
+ÏËòYY)j)¬6ŒiT¹«+OmûÌ~ Ã<þ
ÑqxNt?á9Q¯$éKéàeàëöñúótCcîJ£Ãæ|ãPÛ(ãÌðäÿfcš("
+ÁÀç¡5æSWXoÌÀ©âÞ©'ÃVäà1Ù}Oî«äåô.è¡l¢Êý
+ò|"3<]dçÌ£ÉkòCaFÒæÇû£ueXù[óÏ aúô£èi Y6Ÿ}I·/,§Î".¬fšà
+!]®RTü°äÔ>ÿYN3;Ùnh×PK÷XÄÉD[Æ
+KŽëžSŒ[ÔñvÊứÿÞoPK}ì$ôkPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.java]KÃ0ï÷+ÎÕØDB²v0'¯a? Ô쎶MLNt"þw³ÚúeÀyp'6WyPW
+ýr€kkAá.ÖÓk_h¿cØ&}µW2e¶XÒ
+«sÚÓûC
+V ªÜû(PöBÙåú)ä€M#
gi.ħ\r\ð¹Èžq±Èæ"xn%
+ùá+v"¶Á
+égM¯œÞúmMLej'C"¯ãädÛ|΢àÆ4{\çÇ?éÞØkìÉÍ·Îå¡þÃÜauS 3/Ö{
¶{®.`ÒXt]âd
+«ð)8€ààË`åþ6^Çð{órö
cèlMNC4ý¶ä÷rôÇPKêz"$0ÆPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.hashCode343377±0PKëü·
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.classTÛnÓ@=ÛÄqIŠr)áV RÛm.HAš(-<RPP_-×lÒ-Il|©ÊÿxBðÀðÂ!Æ"U"jÉÙ3gvvüó÷÷V°F7§p·SkÔÚäP2îÈžËz(úÂ{Ä(¶
+ë5gÈ5E?÷{;Üyeìti%ߎL£»m8"°ãÅ€·+\Ͷåôü.w¶£¶Ã{€+ܶpwuÞ÷'ž«oŒõ
+OX}]Ó*Õrµ\ÓjjYÕU}õZѪª¶¢jµjE[3ÈŠÕ³}|.6Û£*CTÅÑð,GiE7¬ŸÇŒú4ÇøÔ±|û?ÑS/äC"ÚØÜ©¶e3F.AêüÇ«ºßI3,TC¶åæMÃo at zãÀävéÊ(ݲ|ÇäODà|v:·ayÏØ72È +£Á"î1lòc ²(]£ßQ¶vöžIÍSO<Riñ.E}ᜊa8÷åèdÆiu¥ÃœÇÎä:æqfaw$}§ÉRH2ÒâW°/¡;yžD0ì(g'Iü0KQÁæ_!4îÃá~4=ÜáGä#u÷ åGæqô¯O:î#_n at I!±aÂñ§_&Ñ Êtª- ZÈÄDí<ųP»KD:Ðæp°+TÀÕ/+p-,á:œ7ÂÃÿPKgÔÝGPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.java}Qkà Çßû)|LJkµËÒ²§QöÐ
+Æö$K/ÌšÓs+}÷iÛe
+wÇß»ÔÖÍ{Ýi¿ÈÁ€uT¶ÙKßJßSÐ(Q§ÓKqmÌT@©éPcÔcÃ
+iTí}3P@1Åö#Ô(ßEÉyÁË[&š8¯Ö¬\WË¢*JïU¢Ñ_·xÑgc:Î|aÿà<ïÑÕÞÄ€1
+Ù5CbG_OU€ÝpÀ8w̳£@wØÏþ·?Š%]9Á>Zôd{hÀŠÃhòL}º%w€š(ÛÚ.
+òâ"
+O&Y6G6ϲ(.vùô)}2ÝQg'«ÄÎÓò%eyþûPKHN¥/PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.hashCodeÓ547162±050PKlh;ð
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.classSÝNAþº]»VµJEѪ[4lKiS£$%¡á¶ÙÖi;°Ý©»[à|_Ãx%ñÂÄ[_EÁxf[ &ܰs~öï;óÍ̯¿ßXÄîÅWÖ}ñ?9Úúcà>rñsÖñ@ÇCâÏ'Âçãf~!¶*?pT]xüÍ ×äþ{§éR&]-ÇÝq|¡âQ2vEÀ°UoK¿7py`µýhûŒÇÉ"h Ûà^(BÁÆÚÇ
+é5l{©T,ÙvÑ.-
FÙ¶ËBi¹²ŒøŽX.ªzKöúHZfœí[#TëÕ
+1:¡ôí¡GÀ«ÒùaXÙq<õVöG
+¯|9èWóµ/êe°ÏMG*ºÜë]FPZG¡2,o
+ToÆÃXX`0Ö[Œ¯*&ÅÛrà·øK¡Žßž©v}'$®èÈ'1Ç|År¯cm6wyd.)ÎòqÂî;ŸÏý¶}íéDÓìkGÞ+;$šYË×0=
+ËtóÇÈÒ^i È"ËÈjóßÀŸF¿SêÕDÉ&iMpi²ÄU©æÏª sšhÄ*zªÈ&RY]ŠÌ¬&;Gïu2Ð÷Ÿ`§ W1hô
+\¢QgbÂñ(ï:nDÜ9L!KÝÊ»iê×0[Óšw·ÉÓ g
+wÈK`&Q
+ÃÝwîPK¿ºøÕ4PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.java}AKÄ0
ïû+æØªÄŠ¶]a²Aðà1ÄtÚÛ$&,ÿÝŽnõ²H`ÞÀŒ|ó'Õì:ë§8b8ìôä¬'è<ÓÇ :4iìâ×f}Ïmq€
+$
+Kñz^<.ŸZe (N@±ÅÇ÷(I[#8¯ª©ømYóJ¢š=¿©ëeSåÒâ1Q
óO$öd]×ö¥yAÝ[ŠÖ&EPvr0;G
+zZÖ³ç.¡î¬!)ý[õêÿ3ýEž÷6:è
+Þ~8Î
+Ý2L©<Rô²ÕÁz€6Ëáçp
+Œ(XqØ}¥÷
+PKçhš®PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.hashCode372552437PKIxy° PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.classSÛnÓ@=Û$vPÚå^à¥EU8E
+BH¥ J*x2wlxœFý>ñàèG!ÆêK€ZòÎÎìÌ9ö_?~ðp¿×æq7¬§ïa7mܲqÁz,©0TÖÖªÛêP0\d"^å£HßòÞ"øð§²ðË`UdÆð&U:Ê"sâ4q*Fl&³XfP$Zj)²pçcεTIèº~§Ýi»<ßm°å·¶ÜŸï¹×ñ=o«Ë`Gj4Î5±ôÖ8uJXçÖÉ$QrRg²#ämhq¬»g~³§ÆeþTåãîú3CgJÜ©Ùjýas:búÎq$ÆE$³qü}§x.ysRsóâ
+ÌbÎÆjwqaïŒ[ưPÐ8Côל#Z)Gù/OÞ ÙPÍÒ_?â0lL#lÑ¡wÍÞ¥®ÑPéêÏ%!hçedkŸ}5ÇóŽZ&XEÖÆ$Ð$K£Ê*Êšmn|Ç
+ÃÏËšš/ÿ¡XeuY¢»KX4çM,a*.F+ô^5+¿PK¯Ï0œÔÄPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.javaÁÓ0ïy96%2énÚîRºXqa+T$\"ãN[ñJW}wì6¡Uäiþ|óÏØNªor°¶Ô~éÆYbXÐkÂcôÚ¯µß
+lY³F/d6BÙÀºäm:HïÆ
/F+PFzu¬{`ÝëÇïA²¶m='Õ€ªÆÕô~Zõ]UÝÞM'ñÍýšŒ-§ûiÙ_¶ØÄë9ŠKtdWA¥ŒïÏœ¹AÙÆÆÁ%Š×MBYOYŒ±-ããÇX\YÄÓ1,Þ¢žŸÕ³epÖ]ó/O±ëtýÒ|?€&x¯=¿þl[|}<ëçŠïÈ÷üÿ¯a }0oÉþôðžSèºÍwÙ2Ì¡å,Ëâó€°'xuv?gI6ôBað[PI~rŽIüb®HlÿŸö¥WO+.Rù4=å/o 8dkáûúÄÌgÙ!#ä@-$»øýPKºp:PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.hashCodeÓµ06260514PK}Ý¢ß
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.classÕV]sZE~¯Cà@°üš&jÌ@1FCZkIÒÚ<9=ÀiCÏûü:ã}/¯ŒpŒvü?ÎÔúîB0MCŽ7r±ûìò~>ûŸ»ç?ü À>!µ0Xã]lðá= Þ#ÂØB)°þ¯¶%\pCÂu£c8ÞdªÊàÛ2ïëe££ïºíݺ«ŽhçRÙÔÔVUµŸlúŠa3Ü)×M«í¶t[©[5£némfÛ°ëݬéÇpÝ®m?tUÇ0;µLf%Íe³+Ù|!_K×V³ÙåÕ|.·²TÈ€Óù"€í®ëß庥¬*ÇVÛ ªcZJ¥ÈðÙqô#§X6¢Q&-×1:J[u|°#eGL»¥âH£Ç¡*·ÍîÀæhAçË.Ií¿f±T~ ~¡*䪥
+Ü·#ŒTÁ£YãzÃ2Ý.1ç1æŠOøŒéè'ÿ÷,^ùg÷ÌÞ?A&CæÂü3°]ùqò€Âë]ÔØçÁàosÞfÏ=ªï®¥w-""B'Qnûýuìô©lSHíçr4,Ýv[D×1iy¶ÈÏ VNÙZá
+ržy1œÓgÍMD*ªîš]Ôù¡í#MïrI[ÂGxÅhtTǵtÆþßúi<6ÿ+ÿÎ骮¥é×
+^-·Ï%¹È1[2ÊØ¡Ó±=·qÚãÜ.Â}T$Üñ1ª2>Á§{Ïùê§ÆÑR;
+eïà®QãGF90y"JÑÚ÷]ãcôtœ
+Šþö2ìè³EÀ43ÉÔèKUjªö®ž)é
+œG¯bG,ŠåO€BÒS
+Ý9çŸÊ9Ò€2;¿($2PU[.i]Mõpv[ÚC¥J¥T³éC8 ¯ÍTX4Ÿ@+
fF³ÿÚ`ß¿/Ñ>LÑ(÷0i&'x ^®ÌŸ$žÑB8!õàaX$"=xŸÁçù~-Ê%}ÉÄä@"ͬÅâáD¬!î?\HÄÑ^NcÂÔ
+áÇOMÑxž°~ýNÈœLaðœbx!èkH§mÊ'ñ5Í%#A¹/"ñ
+íÍQSœ×
+±á
+åè2^žxxô4+ä£yòæè-\%8J"%"rqPP · MŽ@VB€máÒS, ËÞŠ2ÔL5ÒÌÃ÷²WÂÒÌJX&ðr¿SÄYÁ=VÈ#Ì^šðPK(L
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.javaMO0ïü9.Æ4tÝìI7Æ1zóB*ÐXhíGvãfÿ»Yä°Q2Ó<ŒótRÅwV#TR·N YŒUR[š4áÆ}7ÜTÜ4;Ë-GC.ŠÔ5)dÂYÞÙŠ/ïûroPfæ£0? ó0ß~8f¹ìrJÓ,Ézµ«<Êã4Š×]bJ³,Yeà/ÞÒYs~ÇÑD€rb8>2ë4wè·{fápÚ¬Ÿ#²UÎââÏð¶×HM^ŸO^x+;{ëç~ùûcý,Jªïµt
+êŸþ1ó*;O_B°;Û}jžñð
+6è!hôÒHŽÌÛ¢3€FûP.ÂÐÌ D7§ü²N"M8ãdÂË9'Ì1p:ÇQÚó+æ~øEÿÁPK`á7QÁPK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.hashCode375Ž46440PKEÈ5> PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.classTKOAþ}̲Œ×÷Ddz@%YWM³ôÂàîÌ8Cü'úôàÆÁW£'¯ýÆêÞ]õ@"ÐIuUuUW]Õ]ß~}ú 3~%W¡FÆ1\I5ŽäòÏi5Ë?^Ëñ&¹üµ%··
+AÀ!¹h;vžÄÍî0ÄWÝ=ÁÐW°Qj»ÂÊw«ŽÒ_pËŒºÃ}[êÍÅxx`[
ë×¢ªô_²+Ÿš âTìà $ÐmÖ_D<Ž]§d3iÆìtÞ-Mò3ycÎ2æçóaY挵À Ý
tÊûÑBÅ×aõVX=°éHºŸŸÝ(òªëâ(\8qCŸézMÿS;>ôÝÈû÷3×Ù5]Á`0ÚFN
ð\!{ê+0$ö%:\{·¡úœ"ÈC§žCÏvÈËÏs¯YüôúQYx2\ aôm7òËâ-
3z¹Cþw#núÓgýÚÎÉcô*wöõ'»¢L¥=1'Íÿä²ÈÃÈçÕ5ÁÃ-.ßë
¿Áþ€a¢ÚÈpcO}Ë
+â<}}Lœ8¥æK€éÄñÄØG°Ê|YvµÇ»žkÄ®ãyÉÍß''¿@Ë £>y8Ã;ÙOmEÙGÆrª
+Ñýõ4¢N¢.¢¢Ÿzo¬1
b
+K
+LçH_D+Ô»Ö×#ô ^
Òl i¢ÒMÜRÈÀmB*¥AÜ¡ØRÂ0Ýï.Éi€Rã15Ò8íºG4ª²ý
+PK¹8¿w?PK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.java}ÁjÃ0ï}
+n8ëÒBéi±[a`2WIÄÛ³e{÷9i»]Ê0H?Ò¯OŸÑïMк0$q· Á»ÀÐAmÀs[œ@ËÄQ¬~m.tB»ÄdÅÐp?
@ãäñéÍm3P]ê
+TW :|€ÉY%åcœ®eUoײT¥Ú®ri[U%ëMœŒ×dåxûÄHOfÇ@áëzÍÉå Ýàãò$Ò0ͺ ^Ï*Se9ÏÍùþÿúÛþ\òÐM±îûp5ú©¯¢sö{°Ér
+ÊÝâ¢ÎÑ!¿Ü,`2ßùýPK×^ÄPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.hashCode³Ž433°°42PKÝ-
+ PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.classSËnÓ@=Ó<nÚ÷«-«Eu)M)š"Т .1;nŠ$3£þS±B°`ÄG!î8.°hºðÜÇÜ{Îõ_¿¿ÿÐÆeÜÅ-ܶpÇÂ]÷ªOD,ôSÒêÚCySîs
Ÿùël2äêm0Sf±/Ã`Œ(aâ"YÖ#2ŒéGRM²1OHù"R|ÂÉŠ"D:òy¬
<õ·>f2ö]÷±×ñܶ×íž-¿åw;(Õm·Úm×Ûð6zV('IŠdžÚS :'šN*1ÐR9©GÀ2ÖüH÷Nm8ÃÙIQÿBÉ,é=ËéòV÷Ülİ~>b¹Â¯€ÔÞ:
+yb*R÷)ÈL
ü¹0//FÜõÃàSPC
¥±Â°sÁÈP7,Î8á!IÙæ©âÿ³«DH¿ÛøðW³@ÎPØ×ÛûùíÞÆ
+Jô(Iïa,I@ë%²låáW°/ùöeZ«y²ÖÚŽ³äü9ÌSi~G¶D¶ÑüÊüqófèiŒ¯Û£ÏÇ.åP6@Ãià§-ñPÏ)žEªn䜬«ù×è»ÏvãPK2¿áÕPK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.java}ÏjÃ0Æï}
+·1L5J£ìZØÌUSÛòdÆÞ}N×l2ú~úPèõ¹AH.YûqÅ@Ò²F'
+òáwiO`/]ÏÓÈÌËLHoÖh¡mcª+P@µÕá=õlЫ²¬m³-»§]ÛšBUmUm«]QŽu×ÕMÕ|ØfçxÛã$œG2ÄçjçYAht!1ÜÝDã]$ùúSeÊ3zóÞEÿÿÐßõÂÄžä{ÁáGYCXÙ'ò¢ØoŸr|PKɱe=ëPK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.hashCodeÓµ42371·4°PKXÛ;\
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.classRMOÛ@}ž
+ïœAU±É
+BöbAT*®ã®aQâM×kÄ¿B8ðøQñÆŽâÄÁ3;³óÞÏÃãÝ=kaÑÁe+å]K³Ç0¶±yÊPÜW¿ÃŽ'cqzBÿ
+z}ÊÌz*ú§Y'æ\&?œHéAÚ Ž/#-|"H&çŸ4R$þá40RÅ~ÖhÖõZ{{§Õô«ŸÛrݺ»S¶ív£é¶:NšÃÔJoÃ4Ïiù3-O$IFi~2:óŸž2WÏ}ð®æõ?ŽJÍ+g¡µ7«1Î2"· 3T¯B1Ì2UOTªCñ]fãõÞi[Áe0ÊÝ÷þU3=ïñ?î]føõÕ1äÿ¡«eHûÇðwøí*--n<µOÖ¡gäK_nÁnìõ²e,bìäšLg€ªüÍÒfêú²lë£ÛŠ0mïÁ'²³V
ºŠoÞæPK÷8Å¡`PK,6TestNonRegression7/PK,6i©ž(CTestNonRegression7/parameters.propertiesPKð
,6
+ÜvqÒ@K%,TestNonRegression7/data-backup.sql.gzPK,6QDTestNonRegression7/scripts/PK,6Ô$:8as(DTestNonRegression7/scripts/SiMatrix.javaPK,6ßEŸ@**ZTestNonRegression7/scripts/ResultName.javaPK,6S{ŸÃ*Â`TestNonRegression7/scripts/TestAspect.javaPK,63· Ò,¶bTestNonRegression7/scripts/GravityModel.javaPK,6;V¥ÃJu3wTestNonRegression7/scripts/TestSaisieViaScript.javaPK,6DíH·ò*ÄzTestNonRegression7/scripts/StackTrace.javaPK,6ÐåWà·( }TestNonRegression7/scripts/RuleUtil.javaPK,6GËmY&_)ÖTestNonRegression7/scripts/SiMatrix.classPK,6é~f-§TestNonRegression7/scripts/GravityModel.classPK,6¡]+_ÇTestNonRegression7/scripts/ResultName.classPK,6ÎTestNonRegression7/simulators/PK,6e"Q3cÎTestNonRegression7/simulators/DefaultSimulator.javaPK,6·Fü¥ªE4XßTestNonRegression7/simulators/DefaultSimulator.classPK,6_ûTestNonRegression7/formules/PK,6èÈæ-=|g«ûTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.javaPK,6Hž%Å
+k}ýTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.hashCodePK,6î'¢@]{h þTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.classPK,652*;hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.javaPK,6}Ý¢ß
+l<TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.hashCodePK,6ÝÅ/O
+iâTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.classPK,6ÒSÎgzTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.javaPK,6úe-Ý
+kb
+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.hashCodePK,6NÑèRhTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.classPK,6^Q` hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.javaPK,6>¿e
+lÍTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.hashCodePK,6}ì$ôkisTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.classPK,6êz"$0ÆgþTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.javaPK,6ëü·
+kÃTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.hashCodePK,6gÔÝGhfTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.classPK,6HN¥/gCTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.javaPK,6lh;ð
+kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.hashCodePK,6¿ºøÕ4hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.classPK,6çhš®hwTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.javaPK,6Ixy° l
+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.hashCodePK,6¯Ï0œÔÄi²TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.classPK,6ºp:g"TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.javaPK,6}Ý¢ß
+kD$TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.hashCodePK,6(L
+hé$TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.classPK,6`á7QÁh)TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.javaPK,6EÈ5> lf+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.hashCodePK,6¹8¿w?i,TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.classPK,6×^Äg/TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.javaPK,6Ý-
+ k¶0TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.hashCodePK,62¿áÕhZ1TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.classPK,6ɱe=ëhÑ3TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.javaPK,6XÛ;\
+lR5TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.hashCodePK,6÷8Å¡`iø5TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.classPK3308
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip
===================================================================
--- branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip (rev 0)
+++ branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,1079 @@
+PK
+¥]7isis-database-3_cvs/UT 5$YG}$YGUxèèPK
+]7!isis-database-3_cvs/analyseplans/UT $YG}$YGUxèèPK
+]7%isis-database-3_cvs/analyseplans/CVS/UT $YG}$YGUxèèPK]7ÉVâL\,isis-database-3_cvs/analyseplans/CVS/EntriesUT $YG2$YGUxèèsáÒwNÌÉL*J,ÉÌÏÓËJ,KÔ7Ô3Òw+ÊTðË/S00R04·21¶24Q0200××çÒ÷M¬@UèX€``©`hjednedSPK
+]7·þÍt/isis-database-3_cvs/analyseplans/CVS/RepositoryUT $YG2$YGUxèèisis-fish-data/analyseplansPK
+]7.à)isis-database-3_cvs/analyseplans/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7-isis-database-3_cvs/analyseplans/CVS/TemplateUT $YG$YGUxèèPKgb7šYª
+s.1isis-database-3_cvs/analyseplans/Calibration.javaUT ²a+G$YGUxèèíZqoÛ¶ÿÛùD0¬rë(±œ
+qS,KÚ-IZŽÙ°¡Ú¢mv²€RÚ¬Ë~ßâý€$Jcw+ðØxŒ;ï~w$òÉï|&yt§DñX¶¶ä"M²©çrÂlæOPDE.c_¿ý3úº©)§|2 \,XùQ2Éxæ'³Ñfd/ø$O²;Gþ$i®ü×BQ~É¢n{Ço¹/ÿñšñ*FôÌXëŸàùŸ2ùq5Q€£yw¥IÑ×m"3F¬¥8[|ì
+XųIh&Å8^¿Õì¯s-ÙN3_N3±øURM¥;VèjÍïR¡ÖÐ(¹("ûûoÌLâ$ÎÅÇ|Þ§<8¹ü-GŸG~~Mïð+ÁÉr=Ø3ä9Wè(op@Ú°qèªÏÖîãÇ[ì1;ágßÍXIìO£E7fFÙwlÁ3ÅœœomÓ÷Œãd±§ÏôýȰ¯^[IWlèì+K5XBqÈŸ:Õ?Äng8ÜÙØðÛÃýÃáŠgã;¢c-áá·JÉX·ín¥ðM Ä$âJ¹ê3!Âèã\1g^ا-hÉ0^'¬P!þÙOùÝœ+ YZäî(L(~Èñ4ñ¶}ßßîH4ñ±fò`ÀÍïÕhâÏD;ÏQÎ×êöGFDõÿôæêøêùÍÙåÙÕëœòbX^åÅ~yqp?Òèc·GÊbg6yÛGÔK2ŒøÈBVÄÔcÑM
`fbMû*I1ÍôÆypÄâ"F.¹Kz1ÉöPì|3Â×?¶ |BxŠ
äVJ²°`ýÐÀ&Õ,bŸŸù«yî[5Ÿ)Wåп»8YLåd.Ev1ÏÞÖ·!ø£=aHkø-ØZbx/p(æiOp»&c þ-CeI
+à-¡Èbô§ŒÒrY œ`Mn/-³QôBçºËSfÞ©ÓǶèM(ý}dîü:(ÚÜLE»N0
+á\Ã/Å·Õë;ÒJ01ŽÊD^d1ËçÂåbwÝIq"®-eV¥òF{gÜ©~{
+µAŠxvg©Ò§.Düã«×g¿Þ_]þxóêùëçWFšÃ×Á_6¬Ôº¥H©yÛt¯DWfá#>%Çq=2%ŠÎTÄp" RäYB;Œß¶üù#MÆ÷LÙEc#€k*¬Ñ0ŠÓºÆÏ³äÂLMá±4ÀoûA<±Ý_gtÇi* 2/ RåJM
+ØDäpÖ²tJKÕ¥UÉ#c·<YTeß?äF÷΀@ÈD·¶X³231DmPØ
ãœåÄ`ÂÇ|¥¥zrÊŒaçèpýù'ÐÇr<Rkzôûy¯6àè*ºâÄÒ5Ríc¢n·l»3uËÔ¿HöG£Gåöî`uR4÷5ê\·ÝÚ&ÐxüT$MuÁæõéò²XEörJD%Þô®š/-Wv~-fÚ}éÚežãi|aMZB·[¶nRNRpõê'ýpìOeþp§
^;o²_²ÜrÆù#epo©º«n©ÔXut2ïT?g1ðøMt
+éÑ,@ÒÛëOVÖ=8ZKK?m |fò²*é5²ýÿN$Ja÷MË,óõM©}òæ¯t«×#uzÞרaè?íUÜ1[(QÂ:÷ "¡ØXLQÃ3e¬-D±nf
+{Ó"ñš^@0eÜâAnïPæ¬XñàGUsŽ{PXSP¢ÒóÔ
rö}}ºpl$þfĵ®Àjâöš5ÐÕÀWKâx€hs©âÍ 6aïõ+: §¥{ÊöÝüÚ«óŒ.ËÙW)Þöš³6qPk÷kâýnâP/èøýPYÎbÿYîήø/o÷®o~öñã°¡Ã)XÃih8
+
+§aÉ©g£«çI~£²²ÆìûZÙ÷÷æþzŽyGÒí}PwŽ='sÏÄéÞZ¶µN¯WZUk¹7ræIcž¶
+ëÀü$9ÚGl;CB+¢|Ôd4#±L,##/ÐÖ{ÂVµ©œÏvYàïµëk-ÆMþLåÃÖà]{€Ûš£S°ŠSPMŽý¡ÈŽ+å¥E¿*zH$À)9z@q·"h
ÒKª We·®EK5èÞIEB'qå+d.V1ÑÓ^&1¯;ÖFucP6ecP6Z\9ÔœãüÆÉoÅD©ïÙûBâ*qH)ÔœÚÚ(×® H¬ëÒO Òû&~º
+86mmϵ «|ËPeŽU<×8¬å®6Swž¡ºAKÝ'©ûäK«4Õµl:56ËjN·L,[áí÷ÛÊ|bzW£rfJIçáÏÖë)Ö©yPÉ7¶]Åqß"]WÜ{?ÔŠ¢#šz÷F×°]îF t¥žL[~su
Íi[G³giÜ\еqöëÅsBU€i&ùxA=$B³«>ÒûYzHêI
òõALp:®DX¯Óå`}÷[5H]Ø¢M×vL[»ýf³Šþÿ<ýWÏÓÁçÏÓþjþŠ1+Šª¬{zQW;Kj[aéN_ ¶õ]_GYµóšWÂ|©k/X-Ò*§V¯fÉ!þGËÚ,yµLÚ`µLf'Ú«ë
+ÏôiN²¬Ü oêe6ÍBÏÁ:®òGÞ6Ì{ȶ×Ýñ`Û²6ÍæÚáQ\C¶i%æñÒÚ`ýÖŒÃXûªXŒŒÙ©\P|ÉñÀn+¶H€À9¥ù»ÜvÏQhyC$$ÚøŒ'Y,`Ò²>®Q«åäš6Sgò¡^ûËÚ©å.K]þHâ%Ú1M쀯P.tÞ1ÒWtp&ÌnÅ£º°«B
+÷z©M
+KÏÎäbNÛ>õ¥œ%á3ÎÕ¥Ù|ë7\f~ìlʹÎüöZ+Üâ$I²PÆ0¥j[í1m_vì"¢÷/<*vÝ]5DèíëYMÝ"Õ¢w:ç~|ð oÇv°À¡Ÿ¯®Öã|
GZÀhÙöõEÊé]Aéu1à}ù6NxÒnI3¿¿xô oÕÙ¡>#©V=vô7{ÛýÍnk·÷wwâ6£×râ:'ÑÐLHk-óÞ>ØÝíõxA%¢Jè¥!pa¹/èxOÄ¡Ýe§OÍæôø%I§#vŠ€z!Õw?Vmn×㱫íú&#v)RUoô<±ÚŠvª® 7ù#lQ!ö€>'8á)üõë:ËôzZ Éà @ee
t÷rüD0 ÁÔs+<ÎåDµð çÎ9]Ù3¯Õл·{×>oWI|OQèËfϺYw^u©¬Ì©µpª9|Oןóÿùóùo}öõ×F'}<`ÏßõiO¹w#
+uí«(XßatÜþ¶[C°-[ÌÒ? ÉŒuÒÕ{øl€¡Æ;@î }
+åôŸ
'g.+AýÎaN
+Lé°öËŠEÒ\[àèÕÈ¡Ošj9Ï-Öíñ¢ÞønÓžpÝPÊØ)²Å&"çêÏ»5"5eÌ®Ù"Šóþåë4ïV×ÖÎKºÀ_~2ݯ8ÙA¿R`Yw%¢UÙî}2:
+W0ÉjiâÛŽPñ£ ËedÎøÌ}÷iÃ&§HwêMì2#S'¯¥Nl*?bÞ #ÍOMî2îìÝ[zá€ùŸG%¬·»&ªßØ0 ZÛëÃ\ fœKUU×%e¿µä^&oŸ_ãÕÛ¶RA.Ëj_V¥4kn4^jnµKZkÿÆïPhW?õÔïB€š0T^PÄWuM2íZ²Ù×í«]K6Øžï`ù g¢ÊíSc2iÎ*ÃMN ëî4«cÖãrrUÑK:(aä$Z/WZcÅI95£ÈxôÈH«TZé¢4ª²žJ<y6ÛëôÎ$k§p*®>Wþ
+nãCßr÷4ú«zÿfŽláïßPKki6_m*éŽ
+)isis-database-3_cvs/analyseplans/Max.javaUT Ù|ñE$YGUxèèåUmo"7þίEB(qUu-ÜU¡ wDžèªjevgÁW¯œµœèt?8ÿ¢ã}ÉBí×òawgÆÏóÌSþÅ\q¹±J®l¿ÑIªëž!h³`¡PfN(&:ß+vçAméMxÊÃ%eheÔ
P6ÒþqfïyèŽÙl:Ë&h3éÆ<Ázï_q&4ûÕæ9lÂÝÒ?X³Vm&b ÒÛ
+»dV$äM/¡ÕV×®ÈÏmRŽì;<hÊ 'ȲuЬF1(Rò@)ù÷ÇßGøR9ôgÄ·ä[SZS%éWdôɧqÙj5 ÷|Í|béÛ/o¬Qºpc¡{uõŠÜºæ[jóTgÖ
+o«¯kÉçTVbnðD7aQ]ü;®ÐX§\ ÿÕëÂixD!K *öàô6ùs/®Ÿœžú:ßõºozÝNnó
+Ñ Ò«±øœËFÍ%uO(¹µ2QÎÂVªàK£ô# ÀiÈ,õÄ<RžM>e(ÍPäÎøòîy#&T¬'±óŸ?ÒÇ)X¯<P_åñÞAÝalVM/wïŒ_`(!EúJý:WŽ¿m0¥RøãOP¢µÜlñÍeyµÂ0Šä¹¥°`2®¹×šÕuç³ûÁlr÷[ðÓÝÇûÁtÚ~Ýb<¿F?ïÑ`|{7þ0
+`:fÿ÷ÃYàk/¢E3kÌüÏ ËÊñ³úEܧ>-x at CÑcAÐyFCJ
+Ky¢Žf€¥
DðÃUî×壳ÜDg 9DXLH_ÎQ;ö{²EnkâãF¶0\XÄxA0hxÜÂùÊŽ)"ÞP+®©ë°Oœ*KæÔVT
%{Ø¥?HSÀ3©}Û|O¢ÓlòHýDi%P4:9
ŠGÔaÅ%éf$ÊKvÖh;:€:×õï%вË3
+.Ê2Üo¥E@óåx¥NÌߥ|Mßs€>@@º· î0*OÉó[-vLýUÏb°Å`õÃ$Ê;Íïï; *d!>ø~ÚDz×£MIZŸN·k
+®wÙïÓq®µDÂ_0®±µ
+/®¢ÇÔ°çöZSæ9à1Ýwÿ§äÿsèŸ86ÕŠºÊ°þþç#ŠÐ7зõuÓßÍy>V¿6þPK
+]7isis-database-3_cvs/exports/UT $YG}$YGUxèèPKÄ[ž6RÄD©
+Ñ+isis-database-3_cvs/exports/Abundances.javaUT [UF$YGUxèèVmoÛ6þýÐr2Nº]
+ufÐzE³7¬+Z¢mf2)[§ðß)Krì1I$ï;Þ=wdɳù\øZjãì(äŸ@9ã%Ïez¹ÔʲBÏçRÍÙ;==MìgNuzÇWIÍþ4Ò ÓÎ[ÇÌ<ZŠsQTN*&Ï~Tì·;öZ%wzùwÐ2#KgÙGa«ÂMøRŽk3ÃäÌ¥À·v&í å€ÂÆcb>Fì=*éÖ%¢]r'˹ã$Ø\V@«cBšvØèD§ÇÇÃxZ©«L0
+8ÎÐä
èP>3°¢tb95Îêõ׌rm+ÖK]YxÕ|Ÿ.ø3+Qå9FËÒH+fãg¯ºÆ¢óðì£XIúB+ì<«¡ß¡»Pè·Â³KÿBË/Ÿ~þ~Ÿ/œ<L×BcïÌŠ%·RùµÓš¬Š%+žµí6-`Ž
+rB~à[þ0"à4TVf<
t랫Ч²rØk] Z
+II5ÓIÌ{#2J85Cqß+tÜ/
æl.Ö-æýì+¥ÑNdžAƪ9|úJ åf2xߌìö×Rœÿöñú¯Ûñß'ãÉÅ[/·ùWÀ± àîLvá^ÞWn!-{àFÝDû°|%¡Ð¯CñxªëÄ[¬Ãn<'æQHÙÕÀ.Eš~;sÄ5?
+d
+oÜ¡@i_OÁ+à+AK
+|ºÉ|t¯GAHr \+-óº«&{Õ
+¶9ÐAW®É0úQ8~
+̰4º¬õȬØ÷¢%=?l€mÒë=`Ö{ß6'ýi·ŽÓWXOÐìÉc¬¬±ãuPœF¿8"LÑ$õ0ÁlÁíD|EúI?õ{+¿Nï°€š¬XZÜ$_oÄcOÏì
Ö&
+³eiS'Ê%*&4èʧÁç}Ñ6¿]0÷ÏŽ¿Î üÄbiÑ ÝÈ5²JÀÛ-þÁJÚò}!JQªHr*ªâ~pf¯óf|Ú€šÐ$E¥$ûýø?°»Ú¯ÓãÈ/Tçb
+6TA§ØH}Å·S%ŸÀp±þÐbxÀ,XÒH%äIa_Ü!AèÅc®Œ0©6Î,P³MèÕâ~ÈÂgÒzÔ£®Mfë2"ÅéiëYÚ,îÕ_-KÎ¥ëÓ]é|Z_Œ€ñ5Æq=IE5y×:nð`
+1js
òŸêHI"Òݪ£µnÝ}H
4üÒ¶äm÷û[véeB±:jmRÓÁÈ¿_¥µßaØï£mòCÚœÛ~|«þRÝÝÖ-$O|jÏ¢TÐ|Ãs*.Ö;ý 9k䌢gÞØŸ~'K¶]t®ÿA#¹{ZÖWÖE3ó>õÆwÛåýŒk÷).4Yë`di
+Ÿí¡xZLÖ:
+Yè§Ýûm[Ýï.ÓW'L¡oe'÷=ßH<þ&òÿhÓV+Òæpã¶žoêËJ}EÃxýPKÄ[ž6l#«*isis-database-3_cvs/exports/Biomasses.javaUT [UF$YGUxèèVmoÛ6þýÐr²Nº]
+ÍË:HÓ¢¶a]QÐ2m3H€ØÿûîHYc/H|yîáñøÜQ%ÏŸóq_jãì(dA-°;63éÈ+'Ç?+vIo- ŒäÙ\ ²(޲,׳T3v¥g£çÁÞóÌi³lYoù3©Ù_F:a¶Wk*žÓÃÈ{vØq>3²t}¶ÊÝ5/D;75LN(ŸŽSiçL('8ù ±ßüëI€[ÈvÁx6á[Ü·`7²šržV7ØÇyŠ]Øacœ:<à΀.žµèÅGhðÜth2× ôBc#àd0ø©Ç+7מÒjYèÊÂÛŠù.çc<0&/1ZFFZÁð4~õŠa,:/>
€ÖÙkxQS_¡»Pè·ÂÿÂߌüøòäü2|=Þx< SïÌÆ%.o¥òs¯¢²çšË,ÇíµÛV1RÎB8x"ÀÊ
+@¹Ág2ny·ºTVz©+€ª!TSıž7¢5§ÎÜöœ¬çK¡/ œ€
+Ÿ÷²7
+F;áÀ
+êUÍàËWP"Ör³çt»ùµfNÿø|ù÷·³ËNon<j=ò¯Àâš}¹Þ&Ozr#\ež¹ŽìtíÒiî{
^íãýǪý^:'éåIFÙÅ3È.DH|€ÛGó-kmäšq£Çǹàð
È`¹)|ºÉÉh¥rGJSÊ (öDh¡å€®¢ÉN2mF T4ÐëaüŸ#Éf»Ýqz|ÒemGÞ`ZŽD€¶OÜ`È-éùn¶I¯÷HJ|ŒŸ,š³m¢2È>Áeþ_u(¶|èG>).ÈdÝM0£$s{-îQ£Ç^ÒO¢"ýäÎÌÇñ-f%
Å]HòôFxfϵ6©ðšì>k*;@ uzÄòeðuÚFòw£«fþvÄOã=ÿ j€CVÔ Ð=ÐFM Xð|³Å?y^}{B±;!¯CõãQÜnÓèå€#v€š4Ž~?þWÅÖ]Gm«i6WÑš¥iDJëhÕømxD«ÖŽÜq%Çå?V,ëÜJOÆõEKÀ©T€ìÔxÅrü ¢·OØY»G,ÊÞ ÓËc®x"Æx/dnêD\»B¡
+S©wÐøä?Xð£$gŒ?Ú üšL
+»p:§«ï.2zïÁdÚž2GK-ý¡OCû-#Í€õšç·å³šŽÍnÒ\7¢2!?µIÁÖI#ÿ~ÖÝ~6ñ ñqðÓÄã'ý§Z&¶§®4<òå&®aõE7æg|B©dÓ°ýÉqó Øq@§ÆðåŽ.ÙvW8Ïýµ°AÜÀ³Fõyt@
+]¥~ñíâžzt*aµUÍt8²Ž&ßfÉvX<MF%ë£è§ú¡€çó?Ûß[mOS§V'L¡JeG«/ùÿuŽnEÒÙ]ÑæºûŠþ©?Ÿ°Î¬£ÿPK
+]7 isis-database-3_cvs/exports/CVS/UT $YG}$YGUxèèPK]7A¬Æ!»Â'isis-database-3_cvs/exports/CVS/EntriesUT $YG+$YGUxèèÒA0Ð=§àŽKÐãÂ]Á@kÚñöbÆÄý?R$E/®\ œø^@N·ÞÍøÓe¡K×q at c¹ÒlPv\kÛøßM¯@ç²+Ì&Ž2WmI mu
+
+4(ÅØ_Ž«*©ÎÀ (»:Sö"Øås)ÒàÆìTÆU¡ÿVÿRþHV1cª³hI,äãŽKªŒÏºtÄPK
+]7ÿ1*isis-database-3_cvs/exports/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/exportsPK
+]7.à$isis-database-3_cvs/exports/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7(isis-database-3_cvs/exports/CVS/TemplateUT $YG$YGUxèèPKÄ[ž6kû§§/isis-database-3_cvs/exports/CapturesNombre.javaUT [UF$YGUxèèVmoÛ6þ\ý
+Vè9N7éÖÍ®IÚhÒ öÖ-Ó6;HÊ[ä¿ïî(Y²K"ï>wŒ{ÄRdÿdòki¬w£(R>1ç
W3vÆ33yåæêÅ/ãß]k&¢Ù\eQíxnf3¥güœgöVdÞØeúY,Wÿiv}µP!üÿ¬úÊ÷:ä3«JïøµtUî/E!Û¹©åjje!áî*7çR{åt±ËÄÏè¶ÓÒ/K@;^î4/Ä-ù*ª2nô
+ŒÃ<Ò/Džòöö"¶ÇNDé++Ý¥)Æ`
Éa±XMìði³8Ïëù7¢òscÐF/S9özõø&cØ5.Ï!eVV9ÉaK~#×
Ž"`Ï®åBáÓœà/Ù³ú=pfU äå=;¥¬üêùà§ç/Ùà×áÑ`8xEölŒd`tLdl\ÂòNi;ÊjCqf¹pn#ViË![Ú;6}"€yÃ*'LåÊ/÷Ùç
+xg¿4eX_C4âJOMsÎãÞFº3 öÀ x /emóôðllñíÒ/3Ø
+vå«gìã'Še&v¶0¿msµõÌ/o¯Ïÿº;9Ÿ=ùýîêìúîæöúøöìÝßwg·ät?¢[X,$,¬¿Ëõµ^g-+¶f~®ßà@ï£mX
+«r©äCñzNâïaªÓKÕŽgnñ°SŽà¹KâºhréXVSeRC¯PuM xs«nåÌq.EÅJS
+ *bGj2úfŽ(r¶0jR«n²ÕüöYP at f*ß±æv&)NØOÀÍyzH»!î5HzT µmRó[%
+¯)H at reÊ£~\ÇŒvžŒÖÚ%œÞFå1zZ~!ÊÉ:ë)r1E¬&®MiR˯X£žx]þ_2ø<&ð` ì>¶ÿèŸêdª¹Ô%žîS©ÊsàÇ r4KASÄ%ôýXBV±¥¶c¶µ^!<øç®*>تÒwpÀ·Ôlù ;mAý- %L¥§êWšŠø\žKJöè¡d¯â®wd;#Íõaüô
+eÍÉÂs
É¿
¯mæN±¥¯Û
rA-ÅBgHzùñŧ;¶åøÎªd3úO»UMépÒ?ÐËœñ%ž}ªü¡kb Í%[Œ üWrW€Ðàüöz5Aëúñ(î× ØŠšpô|²Cª[ÔD(Ôñõ ÒëÇÿêøŽî·F×GÚ·öé`/Z at -×â`e
+UÝQK9 V/ÒÕäÔ¶H¬è°êxçL€Íd\ŽÈ²ÖìtÀÁÕRo§1|"Jo®x"Çðœ4çÞVé[ÉF_LZ°HQ¯VëÓá 9o¡Á Œ¬l·usíÇ<8 Ó[2Fש9xÒØ
+YÜoyxLZFœfU¥Q7Ò§Sï¶·{ñ K;yîJÎuEà{ô]ЊŸÒ¢!«t0¢ûëŽf^û}xÒd3äÑ4âÐ$â3¹FW©IšãÚìDøl~%íM-x
+ñ
+ÊË¢LkÃ
+©UºA/~ÌkËà߯2xk ZM5¹ iíUÍh-¥K;v;¯vývüIÝØµÃvâÛÚÄQhz`ÀJÀ"d¹6Jc€GÐÕXÖèœ}[LfaUÒ\ä>ß}§é .°º7XQÔãâŸQ}ÜûèPKÄ[ž6¯² .isis-database-3_cvs/exports/CapturesPoids.javaUT [UF$YGUxèèVaoÛ6ý\ÿ«Ðr2nÒ]
+
+Ž
+ЀA¬Ûº" eÚf+I¹uü÷Ý%Å© %wïwO,xú
Ïo
6Î{=ÓXÇLA9KõTd¥Ég¿)vJ7%ð§y®eÏ¥³wz>~Ùk:mV
+êgŸäLjöÁH'LwµPÎÝþüÆvZäS#gÙ¥°eæÎy.¹arfD.ðn¥I»`B9逰±ÍÌ'øÛVK·*í;±ÕlÊ··`W2/3ÌžVWø;ò@¿áÚ§··³Ó8â
+°ZN-£\âš0IMG°J/E>1öÃ_«ùWŒtm+V¹.-Œ\?ŸÊø7M¢ËSÌ
V0Ü?ŒëRÀK±ô4gì9<© ß!e(ä.FðäØßpåO¿<ÝÃßGÃÑð
·É
+ÐèÐÁ€ÀåT~n¯Wk3ÍžµÝPa®³¶ ~ôz&Ò
+À²Oe&Ýj>H«( üJšºFdÄ€é8bEý1K8U_`èK°t=^M³¹pøw7Á³íÂh'RÜžÂÚUsøø H
µÜ¬Â"äo[_M1³³ÃëËÓ¿n¯ÞÞ|89}óöúæâäòæêúòðúäÍß7g'×Þ÷vìoa͵° ®,Ï»KÆýÖF yn!-»C-Þö6a 4äýµÌB®÷aFÌD5ÜýL€*j+*Kíò`Ç"ÈÂÝsGUådÂBZ1¡ ð6Åâ`×ýÊÀñI&xóÅ8š#f,§ãïZ±ÒÔ`X>÷dlpîÆíßZ`.]÷Ãè¯TÜ©ð!Ž BnÖù€ÍÃî(EÜ÷EZÙÆuYÒ5Ãî/tQ¹RTØ]¬npSÀi¬mÜïß)[çM-%Ÿzªñ»ê1
+2>#¬:WŠ~RoTwqé:óÊ~ø xHÀÁ>&Ø]
+l÷ÿ6UµíKÎ Šåcde!MØÛúQ0~,f -j.
+ìýÀä-àŠe¶±]!Jüg¶ÌߣÜËÜgqoÁ3Û|u¯»ßSÌ7ÇÌLNV¯X ÙÛsóñ}9_Ç]mÌfFêëýä3jI¹EæöàJä?·©=ÒÚL¥BŸvÊï(
qèæÇg~îØTå£Ëæþ?i·Hû[þÁVêgòŠàrð©Õ6w¯©Æ.°äYø<+ŶH±¿ÙWjõK<ÎÒ
+¢q4š°1죢ÑÓézšnú^"ùó
+_
+œAô¯~BëvcŽ;ÒŒÝâÑ£·Ä®ŽÁ«¹%ÆÇî-¹HÖ:RÙ]Žò§TËZ!¥§êå-+¥Nl\oí$ÂOÏjŠâh*&ø¥ÖçÝFÞœ¶GÕ¢ª`XW÷gR<wf¬VM²Æ¶Âr¢4AÛºæNwx,!§×Þ\×è)'7hÐ ²ð7úõªRZ$!JÝ 7;éñON+ie¹Ýø4×nýœGäB~ªîöG
+±JcTÂë`@êl<zB~pü€?»§¢F[ŠœJGÙwéâó
»æª;h
+èD^$ùDuÒQ+9}Ç+ËàßDòB[Jx4§êø@ýÚ))VJŽì¶^åz;iù{e«a;ûÍÄ÷ÎÄAšû K`->hr=HjÑyÜ÷rÐõXZkûÞ[íͪ^KhÛþðŒ³N8VÕx÷ä|êÃ[40ÕÙ²WŽÑû¶÷PKÄ[ž6îòË
+ß0isis-database-3_cvs/exports/CellsDefinition.javaUT [UF$YGUxèèT]o1|ϯXEHJë*$$EÒð%@'ç²¹ûdûB#Ôÿή/éµ%TõÏgdz³kç2ý%3ŒÈŸS«©%ÀºLÈ\Š©].ñBÛ,S&uî;i°n]±þ+)
+è:7Š Ž(*ž2š4Új¡=3â»ä
+±aÁSb¿b;¡æH_¯ü\ù
@TPèw,Ú#úñs'2¬sbëÉwÂf2HOÞ «e¡)LkÆôO¹žçŸúB«=µ£ýýìÃ[ÔÚ÷p®bNÁÖÒ|\rH²fmxtBBÇÖÉfùµ,ÂÂ:æ¶ð^x±œÖrJyUSdÃÜ)L7®Ðy:öFžR<¢#Ä1ìm€€cözñÃç¶?ÖóöãV»uñ0]ºQJ»ÒÂkGµŒjªTKïoG
+ä&³LðPæ þÔj@`¡ðT0©Ò*¬àgAÂò"°¶
.¡62sÛš!êÍÌ<j€àWP}GŸPUºÈ0Ð_ãv¢âf§Ô³bLõi2øöŠèœtë2§Äø§~Õ-Ð!H+ž8§t
òà
+Û-x!Ù6l'JÖ¡\¢8ïNFg_7gïÏ»ãñÁÿÃþ$ùÔ|ì'ïOAwØ;Ÿ'ú£d<u'ýw_óþ€$žÜ
E^oFÖhn"ãæ0ÎDýâw]DZf÷Ti4€xgý\*±J@}ËÈýÿX.Þ;EêW÷ ë¡OÊùè]4I£Ÿ)Ñ
+åÜúš³¡ÉT(ñÀ&Uà;VVÍ6¯vã'üÕÌo-Ø"4ÉlgóýH1»&_Þ\·¯¢(OUX±p]Òû¡,FÅSolä]Á3^ÈE7:R^wI¿Y]#¢BœS§Êœq&þYîlŸú5[».kPKÄ[ž6qr
ùú
+.isis-database-3_cvs/exports/EffortsMetier.javaUT [UF$YGUxèèVmoÛ6þýr²n²]-d(Ѐì]ÐòÙf'I¹1ü÷ݲe;A$òî¹wÏSÉü?9GÀ»ÊXïI¢J~ç¥W9;¹bQ{¥
zó«øÏmkÉ&²ùɲ,v¢0ó¹ÒsñÙÌ/3»¹7vÕ¢~K)YåÑîFk Ò/øUwâh|nUå¡«%Kl÷fVšÅéé)·šœò
+c<g$ÎÃãYK¿ªíLz|Öl*œttncUÖeÜè1}SE^èOžñI^%pç³óéTVp.i7>Z$RÓ>6K,'á€×û¥Ù/k¿0€6zUÚÁ»ÍëûBNšh\^QÆ,VV9Tßë£ÀáßúðFÂaý(C]wìÃáYxPä·¯z?¿:ù z¿õO{ýÞÛ`Ñ@ŠÂ;¥ÃÞ뀪'i3/€s»GJZA¹Ò6Bà>I~ðj@²ÌU¡üêŸ×D«ª=üÊÔX]}6JÏL
+!ÒÎã2NÓtô%HºoÅ=}e»El;ÈŠ²ÆcN
1iWÏáë7УsÒ®bM ò>Ø®Ååѧ¿oÏ/.Ÿnn¯ÏG·ãÑó?þ¹œ<¿ ^ðÑbŸb(Dü®ve`}m5ø
rbT}HÃ2hÌø
*P˧0Ó€kž§FHµô,ªÈÝò`gÁ=s¥ôFÐ5_N
+5UÜR¥ç
+e`=`0ñDFFM=jlpcÓ
+Lí;ok~°ls·^ wu4êH-Kmgd^öÙÓt*È¢ÿ'¢& Ôâ
+Õ|fÔJ,€»Â;Î ³§SE¢ ;«_&ßIð¬s¥£C(&:ÆRÒìÍÝGcìTiʬÛ÷äIsrÊø£Ã_{ßvÍÆ±L+®[®¿£õ=ëf\IJy\Æ'{Æ;SCEFXÊb}?eQã>k*©øÁÕÍ[]EñvÓAÚmâ>ZæSò"r³Èºé¿:Ýð°¡öú(YJ×ì2Œ·¹[6ÓIs>
ÎÒ)NhàM××>Žbf,f7À4\Étí"òÖäIêðXÛ!<6÷$ŸÜh*³ÓE0f×
+y"s €úv[D_³Q'(µAÛÃ4mŸgJs[㺀˧0]9kU²g'ÅÀÃÞ <ß
+øÙívîu>b&BØ%°þ÷Èq7lÓ~lwic'ß5Úµ0IqñM&šå%r6[ª±ý8ÍËj»Ûuç1ó@/ç¶2Z#ºáÙ3ý¢>[î¡âf;{œ°Ëæ(îÚtÇÁALRwZñou)µX~k CÒCBw7*ë'&ž¹Y(ÞúrH»¶¹»æ'çäPKÄ[ž6ÇÜs«+isis-database-3_cvs/exports/MetierZone.javaUT [UF$YGUxèèU]OÛ0}ﯞT<€LaØÚuAF`ÚŠ}¹émkØí:ÄßœNÚ€¬«ðCâësÏM2ÿ|Èõ®Ûhš{`ìDÈLÆS±IS£HÌd¢ôD|2îËÂÎeìWšwr&
2â«Um5ïŒô*h±a{¥
:x§Å?nWòU©ôS~Xõ vjh±Uwâ]øL±Z[¡ÆS€·Sn¬ÜT öÊ+t±),h$úáµ1ÒÏ3B;7€Bq£Ò<! Ÿ¡1]È÷'\îiìïì4`.c¿§)=µHF88¢Ð3
+Ãvûš\>¹ÃÌäÎ)
+œãDé^ÕÐâie1³Ê¡ »ø6ÎÐ:¢Û×8SÜ£â5lÀ,䱯l
çÝk¿Ý;|í÷×íNû(ÄÃptšt*.Œ¶ßÈòaB6é\í@Z%$öÛÇFšà
+äl c«Dùù.ÜåÄ)Ë=öÜäØTJMÔB4[]NÊ8¥?éÜ3¢dí×ÊäbFQMûÀ³Õ-šÜoȬz?~Æv^\"=ÀE«Ü+.O>__|»œìŸè_ß~¿ôwCèÓ:l&*UôšUC·ès«ÁOÏXtÜu Ž÷\%šÖ:ÌfuüæÿÃóšÙ0!Eìf/;âî nÌmÔ,œñ-C±ÙÒÀFyqË:€Ë_#ÅÌšQùþ©ÙÚî](Ÿp`rß"¡¹gkÆèÕÈq5ÙÄN¯Á~Z)ïš,VÆFd΢-±1UqGªÆû)jÓ®-rLô¢Ef.CâÆvLë#/ÃvpôÉ} ×">bÈÝÍv.Å^45slõ<IìïC,51ÌpD£
+5YÆWtúBR£Žµ°K
+€$î zXšrÈ*+1né>WdIž¬»~£X/2ÉÙãœüÛÕðc¿ðfÂæL%ýšbwj)Mªºšõ£ýk}ÒN0üf
+(äaqÏvJB¯ ÙmÒ3à.Á8\Á<ýsYDÏÛÓ?³«3ÕèiQO¿PKÄ[ž6&ó),isis-database-3_cvs/exports/NonActivite.javaUT [UF$YGUxèèVQoÛ6~¶ÅA觬nëfWC€4nÑÝ®hùl3H€ÜEþûîHÙ²À"ŒûîãÝwÇT2ÿOÎðŸ2Ö»Q·«J~ç¥W9;¹bQ{¥
:ù]+þsÛZ²¬dŸ@²,K£(Ì|®ô\|0óÑóÌ.eî]µšwr)
2â/«<ÚÝh-¡Rúÿ±ê^mϪŒÑÕ
ËÛœjf±Dz:åfÊ-j¯ŒBÇÌBÄûð8héW¡]HÍŠÒKGçFq£Êº }CßTgúÅn|º¯ºpc£Ïr¯;Á€5^>·HŠC8}
+Ú,±XÓÁà·fÿ¬ýÂXÚèUijo7¯ï
+9¡)ryIù²XYåPP=þ®KŽèÃÏžTü6ñ^4Ð0Ô1Ç!Œžüæåà×§¿ÀàáëÁpð&ØÃddtÈaRQx§tØ{ÕêIAÊÌéÜöAVPŽwK?»] %ŒÚ!ä`&sU(¿:»HUµ_Ú+kÈFBéI!DÒqTÆizŸ$þ@²
+xŽsôôn 0í"Ê9nHµzߟÆv«I?íú×ÊX\}ù|õ÷íøãíÙù«¯W_þ £ðb~"<¡£ñnŽ·À¢¯¿PNì Ýǰs|©
+ÔÄì)Ìd+ÉìiУfåĹ[>ìã ž§`nÓޚ䡊ÓËI²Š
+[ªì\ášDvÄzQÍøšEbx"'K£ŠÍM52žÍÊ1ÄiŠö=Êž5?Xª9[$¯ÃD_6RCÀòÚiùŽÇKÑ>=š9ÿfÔâiô¹": @eKšæ3%Ñ+±n÷$QoO€6vV?NîHÚ¬h¥#âÉÝ`)iŸæîÜ;U2êö=yçRþè1·Á÷]³X×-×ßÑúdÏú:b%Ù<.DãÓ=ã©¡Â",e±>ÄWYÔžÏÊ(~pESâÃVã(Ú~2JúMÜGË|J^äSn9R?ùw£¯š±WGÝ¥ŽðM³OñŠvbëBÐf:inÀ£Ði2Å
+ŽéúJ§9ßö ¡3 S»Æ°Aw.Ý«
ä¢5©
€á±¶<6÷€Ÿœhô²Óe0f×
+¡y"
+Ìô[D_ÓQ%µAÌY4ß3¥¹²ž.évçQK·JäÚŠìÀÙI1p6
çÛ¬Áý~ïg·³ÎGÌD@»öÂ?9îmúí!ÙËpGÍ ]»eº.
+ÓY¯Dßõu9}
+œ%4èïá(k at A³Á;²¡µn§=zìe.DzÚnívkÝÆ!{åÜ£FkDmhãèÅm¹vaªîì
+Â^.+ÆžhÓjNLK?m'
Ùj/S6k±®üÖ@
+¡œQ$ÉõžW·õômsû5×>¹>tÿPKÄ[ž6xܵ
+,isis-database-3_cvs/exports/OwnerMargin.javaUT [UF$YGUxèèVmO#7þÌþÑŸŽœ6¹B8!A%(×êznìÈö"ÿÞ{óñ¡+]Û3Ï<3fγøDxkãl#äŸÀ:îdÚLXŠG"/TL~üU±kúl-ÉÏy6h9ieY®'©&ìFOï3»âÓf¹Eœç΀fßtÂìï¶%4ãnJ?F>²£òsgYWØ"w->Ûµ±arlÄLàÛJ;vÊrÒIa ã-3$Öô¯7-ÝrhÜ7ÍFÜqç¬'gEתcÌÈ;ý 7>Ñ££ ý ¹åÃË(8GÓF ¥QNÏ@é
+ÓZírý/ÜTàJ«åL>o>¿ä|)èrñ2bn€óñ»w]c>vÅBÒW>²38,¡o0sd.êpxé_žó§ÚÏ'§?Aí·úY^ûäíaž4:÷dê0ãöV*¿ö!ÃåÜÚÝ,Ç8)g!€¢ðÁ ÓPX(9óLæÒ-áŸ@RóÂz/uaU'#&ÕX'1c,®4hWÂ)kŸ@þ²õx)lÌ&Âá(ÙMgZi.s£È0 ÐCÕª |ÿJdÂZn!øäm×ÏVÆìöü®{ýç ýÕìnÏ»_¯[v¿ûçÝëó?nvï®7èàTï®{~×üúôœ^óÆÃ®þè`.Hé·öÙ$6FžÂ(pSiÙ3Ötœ%Ð+
Çx
+3î`kÕ1z,]ŒF{h at tBÎÞe]ŒìRp¯Á8[XÐõE¹,€äÆç
@
Œrö
£²&/ªìfæB#ô
+FÖèÒo&<.·ŸÍµ.ûJd@ÛëI
Š}òÿ§<&=clIØà¹sÜdÄ, dSn[â5Ôš<ÓŽDýø
œÙöðjÂÅSJ:IOÌ8vèÌ^hmFRaäísOê(@9A§Bø^û±oÖ+ÓGy$Ëõ8X|fœ7iL¬LùW²ÿŠ=PFܬZAÕžW=C$I¬Æ«xj
<Zpnûm'×Ííì-,íܲCéѰŒ
Èp,©&5^/HêVØ-/ìUÞ!Š1V?R®x$XAØ ©ÍÍ|K6t°*ñZþBÇK;gë=<%î΀ðÒÜ¡DèjÄŸNNWÞ\7lŠèy§?€UžºEdá3Ù2ªøyñÒæVÒZÿ?§ex°Z<Eë
£xâ~qüÿ×#û-ì!.Mv.6^}n$G9]hëlGµñ³]UäÎdª¢(pûu¶Y^q÷3ª6Ý1{£šj7ÝñõutpYM÷í5bæ¿öv)KÄ«VÑj;÷è(Z·ïžjÊË¥Œ±Ç®¢PK«`ž634€Í1isis-database-3_cvs/exports/RegionDefinition.javaUT bcUF$YGUxèèTÛn1}ç+F(CÒF© ©BEœ©Vf§œ²œåß;ÞKB©ví3gÎ\Ö÷ÿðçÒÖ4J%1u;P:`<âþ¯ŠS%
+U°¶
+ÛÁ®žo^¬÷|ÆPìuñÝXn
°ùjal
dâèd7îá=W ŠÜNÜC9Û-ØÆ±Æ)ÒÛ3fÂPZaÛKêÀZÉk#rÄ-7²ŸÆ!éW²Ogªæ~=4qh>¥ÃÝÝìB¢ºÄ±Â2W428Û
FnqT£Sª¥ Ôp\«fæsÛÒ0Tlð1ß|HCT
+óSâ8Cm(ìôp&ÜB°w°·I2ÄiÇ:ì\&/÷ vrpüjõÚIýø8ÁÃpj&Rê
g;,Eñ0€Nû!7æUª@u©\ÒH[¥Ð¢ÚU/s_Â.öá>&eQl",T¬ÁMGÝcU)3ÆÊÕíx²A£ìgÐ&|gPL+ÐÒ©òªæj#åѧÙüü
+}4ëEÚV¢|L&ò&šx8Ð)pL
+³a(a)xn--!-4fab.xn--8u?-ogai21bla3034e]>EÖiz7ßœÏ7·f¿¿ÿ6¢Ûx_í/-ïöÊk7»7ÝëŸw×êyýA¯9h]ÿð:AJðŽ./JÑ}Y¥eæFkèg/*ÐHy×HÓö^%)^ÇY~ÙrÎèo±Zn|73ß̶ »Dãk¹ÐëhŒJ9Q
Q§[ýLQvÓV^]`_ö!œAŶJµÕêÁý>&Ü+Jšë]5MëDÿ(Ýp±ÅÈ÷#ìð9M¶Ò3,d¹ã&&ûܶ俢]?Yg+JÝ¿òTÉwÔ³H%õtànÚ=(7ÊK`Ÿö Ø\Ûvx>ÈÞÒBŒôØèpaØFØÉÿI[ñ[÷ʧükuÐJPKÄ[ž6UYÇ--isis-database-3_cvs/exports/RejetsNombre.javaUT [UF$YGUxèèVmoÛ6þÿ
+Vè9N7éÖÍ®u;hÒ")¶a]Ð2í0H€Üº
ÿûîz#ú òî¹Þ=ºB€_ÄJ2ù0Ö»é` r|cίRfì§f!³Ò+ÍÕÓß4?ÃÛu+"¢éÉ<7Úñ̬VJ¯ø;³>LìHœ±õV¬Wÿm¶ou(þoV}ãçS«
+ïø¥teæ/D.Ûœ¥åjie.áé[*wÃ¥öÊ+éc%¿¡Ç^I¿)m&ŒÜ+¶^8[ò+dÜè+øy ^°ÑØ!»·Ò»ÏAS žþÚJði1a'§LµÄ}v2ÿZí¿¥¿1 mô&7¥c/×Ã)Py ³²°ÊIò©®¥uà?{|)×
+ß&ì)ÆWÐïÀcVະÇ3zåçOÆ¿<9yÆÆ¿ONÇñsgó
+¡WäÌÍ0ãAQÎ3(Í4Îõ"e²2¥œcáØÁÁiaÞ°ÒIEÇ"Uò#v[WEé oLiÖÖ
žÒKGóh8E³SuDŸ.á%¬-aŸŸâÞ¯ÃipаÆË]AáêûôiJçÝÄ$[_m%óóW/Ïþ¹]œ~u9»ºþðæòúêãåõù€²Ò#
+©
+vÀøvÑ·;¬ô¥ÕÌß(Çò(n»°²ýVeRwaFÝ|D5ÚÝD/5VÑ^PºõÀf20ÀÝsGU¹dÒÁ":Ê€¡ªZ@ÑæåÌy&EÉ
+SLs Ìa§j1ýnŽb}O"ÔÍI[µšè6Þéú#šÒáH¬ùUJ
+£¶8è<œ$]G!ôAÄCªÎJ6ºWÕŒ,⊚0RèÈ>ôaá\ÀÅÛJ»x8ü©~ \/µüJÇcðâ.r±D¬:X®DiSËoX«?ãâuNü1cð#xHüA>FØ#ìèÝUg÷RK£ÕGPeà;>f©Ðl.i%Zr@!Š( ÷çrm€°±3x
ààÎ]¿²©w|À·Òjs§:@üÒ, !L%§ªO,Åo» TOïJuwu»©¯÷ó[à8€6's+LýÌükS÷Ú»PüuûPΩ¹Xè1ÃÂ1?=ý|¿b[ZSlE÷€[ÓŽNö ý]ͰµQ?Êé{78@²µÈêü%²RîËt?ÿDC¥¢ÆEàÂQ4FUbv)Z\=[4k µ$ÑAµî¢ÿtt[ÛÕþJûµ
yd°Ú®šÂʪŒÃb'=fsV*Yt€htuŒ3!i³WcIŠ¢Éª¥NO"øiPV3G9`QÁõ %qTÄL
ý©«1Ns*Ì¢¯(€¡Û µŒ,m`ºŸžÞÁTzKšڞtôã!ß&,µ<ŒÆGÃÚªÒH"IRÀÜcûö !;Äš€ ®N»|{]Fø18@Ô Z4ô*Oéù"©<
+£ÔÙy$hqhæùTöÃè6þÂ@Á
+QÓCD#@B6ê¥Sj)Ãñ]ZçÆÃ{
+Å}{Û*/ó"©úÄ
+Íy{2*ÉJÔp$XM×;¡f«>/?r¬ÑZJtäöÐp¥ÂK:úĵ5loã€ÝøÞÛ8
+uöhh$BöGIÍo&DDrkÖÒÕèë{3T«ÄbÕql05 ÂÄöê
+¥àN=WF#[MœÕàºÛÁÿPKÄ[ž6äpÔ,isis-database-3_cvs/exports/RejetsPoids.javaUT [UF$YGUxèèVmoÛ6þÿ
+Vè9N7éÖÍ®MÚhÒ Öa]aÐ2í0H€Üº
ÿûî%×®é^È»Ïï±ég1L~-õnØéšßó«;ç©Ê¬ôJsõô7Í/ð6n,ÑD"œ`çF;ù\é9gæÃœ©7vÙ Þ
àÊðVyi7WkåÂßáͪ¯ü°E>µªðßHWfþJä²Y®fVæN¹rw\j¯Œ1öQø9=öZúehgÂËœfSá
ž%©ŒÌ ãFàvä~!µOçøð°ÃÙŒÞ]5u3 c8üÚJ 4°SŠÍBæ+ÙI¿ÿk5ÿRþÎX&ŽÑËÜœX¿ŸÌĶLËÈ
UNrØ?Èu!úìñ\(|°§ü{\A¿Â¬,¹°Çgô?éÿòääëÿ>8íúÏÉM^°ŒSæ;E9É 2ÓL8×AÂ2Èö
-bß;$
yÃJ'TeÊ/Ø} €Ò3_Ò2¬¬q¥g&8çQw«"NÕøø3([ÂKXSÀ|.=|Åí
+ ŠÝaàRXãe
+ÀFPµzÎ>~bZŠÒ9aa7ð;ÙÖWSÆüòÕíÍÅßã³ÑëW7g£ñó·Þ¯ÏoÆ£Ûñåù-y®ô+|
å`5`xµ¹`Üm-h¥/fþN9þ±ºêlÃ"hÈùI
+LwaF¬D5ØnÐKާnñ°3DàvÁ㚪L:DLjVPeM¡psëåÌI&E óÅ0 všŠÃoFË!øPì-š)[f%žñVß·V9bAü)}6Ä/XÙ©€(Z1`7Açé%i
È7$"îR
V¶1ÔvžÖXëè@|m
+ #
ŠÜŸ¶(ØÆÚÅÝîELxDpXjù
Ç}`ñ¹!V WŠ4©åW¬Ôqñº€?ÀÕ_ÁCâö1Âa`Gÿ¯Åª]m_jÆb\üÄUfdÇÇ,M$ EÃ)jbt`"!5aÿØR
+Û2ÛZ¯#ܹ+ó÷ »g*§Ãpç-D6_ît§} žlÈS ©ê«Bñ;á®(ãÃ]_Ç]mËvFêëýäôeÎÉÜs
;0¹nê^c§J_·åz
V8tóãÓO?wljò5eÁætOÚ¥MédÒ?ÐÜ;œñ#ž~ª}×55Ðò-DVþÈJ¹/Rhvþû>ÂD« |œhõªl
+ST8z1]!Õ-Cê$Cêþjéõ¢uôZ«ÑÍækÎjžR+šæTX,±HÖ[*RÙ"]°¢³ªã#6ÓIuÎ"ËT ç2éó~pµÔØI¿ÊjŠãh*'ðÏÖ§ÞZîIë£jILTNPšÖkӹί¬¡© Œ,mеMs-'<8 Ó2F×5£;ðÈš
+XÔkyxFÝzU¥Q+£ï¶7ûÉ¡¶G'eŽrÜn{k7þ÷κ MÕœ~Ð !«€?€ç€b>{=8š³òHhqhÎï©Üc[¢Ãé¢*å%Ž=šN}:KéïZ©a×ïáÏîhÇŽbÍAŠœCé
ÁUyÔ
+MÞBÖ±`ÐccÖSuŸCDTÞšFk)]Ò²Û#šc iùjÖ°'ÍÄ·Ó0Q÷Ø&JØÓÐÃÐJf)uÅ!dŒÔfòžKâÓŽõXZ+}}Û¥Ef)Wµ«µÖ]Õ=Õ>uúàõluª÷àºêüPKÄ[ž6ÉæÉ
+-isis-database-3_cvs/exports/VesselMargin.javaUT [UF$YGUxèèVmO#7þÌþÑ&@ÛkÛê8'$Þ ŽÕõ9'1ÝØí
+D(ÿœ3öæe">t
²k{üøgÆÌxöO3mmEÒXÇÌ@1ËôPä
É£_»€þÆLøgÓ©Våz<jÌ®ôžõ1³9mÔ>çLjöNêiBSî&ôcäÛÛ"9su-rwçb³62L
+|[iGÒNPN:),aŒgæÄÚþõ®¥[Ìí;ñ®Ù;nÑoÁºrZäqº8Æ|p_ðpœ':ÜÛ`zÂZ_sñeJ€ù3#Ó° Ç' ô\LFÀq£ñK¹þ
n¢
+p¥Õbª×_r>ÀIÜr3bf€ò»ß:Æ"Øí¹€¯&±Ø-¡¯13€.°{î_xò§ÆÏÇ?Aã·æI£Ùøäía°4:õd0áñV*¿vÍAÒÌrnmÅSÀå)å,$Ás>p
++E#É\ºÅ><ÈjV8ÀÝ] m5ÉI5ÒIÌk-:pʪ@Ïçè p=^
+ ³±p8J*)ð\k@ffŽŠº(\5ï?@í¹Y"â³·]=%³ëÓûÎåý^»Ûm_õ¯O;ß.oú·œv§ß;í\~œj÷Ïn»÷ÝþNuï;§÷íoùAØâq-ÿ
+|B<äÜTé$µ-:FžÂ(piÙÚtœ%Ð
~Œ
ÅšòâÎètñ
+ím¢Ñ ER{evþ°sÚœÓOâlnAÔ
+ò/Z$æÖç
@Œáû\ËaÙZWv=³¡Íz
+#kô#)8ÍkßênÎ{jd@ª«ô€FSÁ>ùÕSúIÏENžDò"3&Ëa#ÙÛñ"jÕ^šZ¢üBeövðåAUaÅÔ¢\é)Ç6Ù3ÍP*œ}¹º
+PRpSB!|oüšuËüQ"Ér5ÖG/¬+¡ÆÌ
+À¯xõ(ý/`Ù#¥4Á#Èê&³·âºgHÄp=IõøooA-+ {ÑžãÁ°ÿŠ~YOoAÀé]žÚ-ÛºAÊkGRRãõÁñÆ€æ
:0ÛpÄÎå7Ã4Æròîå*b5TsßõŠŸëÅ%r7,§J<¿âñÏÙêÏI
Iáµ¹CœÐe}6]xcÚºŠ3Á(úC^MëD>
+£wÍ+Ž6Zþý9-ãõzí9ÚY9\ñÄý*âø5ÿÏH&ª!-Ëìö!.M¶/[Œ<{ÜHâ:ÓÖÙ;aVªÄÏ`JñÜAªiš1
+SWºõòªÄŒgQýh¥°éÙ;%ö¡ÓœŸªvvõŽ¢s¯è4ÿU9¥,¯uDXFËMò0àÿ¥€hÕÎãº)/òRÆ»þPKÄ[ž6:6íN¿0isis-database-3_cvs/exports/ZonesDefinition.javaUT [UF$YGUxèèTmoÛ6þ®_q3LÎÆM7dµ»¢^íw°œŸì-e¶2)¯Èß%Ûëá¢>÷Üs'2ý"3Œ-õ®EjÉ+06²éEjK£ÈM)É:O]ÊÔ»Þ±~+)¬òh;¶K¯r1PÎïàÎK¯Ò$53Ì ¢
zö«W<%dìKé<Yu+wls+ÔÜâéé+·šœò
+ã{D?<EúuAl=éñQØLzéÈcµ,sJÓè1œS-xn®ÌýöLtv|Á1üe4ºÎVÌ)ØZÚçOo,¬Y]ãz¥ÐÂy«uQ~-K¿0Š
)S^nV¯s9¥ºª©ÅS2ÌbaCAŠ¿
+WhÅ£®¯(8£x@¡,H:¶áš÷ŽõËéùÏÐzÑ~Þj·.Šk P7HiïŽð·³š(§9õCKçö3r-'³ŽwPÕ ŸFÐ gÀ(õ&Ìeªrå×'ð¹$aEé¬Mi[šÍ ¡ôÜÄ
+!D£ÙáÈÌSw#%¿¢ú;ðý»Nzz÷«7;:1õ§ÎàïAcÎI»®jJ_+ágAÝ-ÌólS¹üB9°e#x+Ù6l6*Ö¡\¢žîNFW߯Þ]wÇãï#ýIòŸ;ø³Œ»LÝaïjøvüÑ%ãÉš;é¿ý\÷'ÁÝ¡Œ(-òbø0³žYgÆÃ¢/úÅ÷]DZU÷RåšIñ!ÎÆÿ
+!Ïß#õš¹wå©[=¬.µªàÐhžQwhyþ£ÿH.5vtApó+£fõMsmÛî@u¿)}¶æÿ¢{zø¶}É^œ
+uÞ
{ùîäªd!Þbx\ËãÁÿ3P{û°Ø'xpKUK$5Åk»àÆá¬bÕx"Å-:õo
+9§ãMdÚ®¡á£Æ[î¶ûæoy9Êòvö>j|Cå 5ª,÷âæ¡#<ÈqqÃæÇ!ÀOÐè4h »$ÀÛÿl~ÜEßî6qýPK
+]7isis-database-3_cvs/formules/UT $YG}$YGUxèèPK
+]7!isis-database-3_cvs/formules/CVS/UT $YG}$YGUxèèPK]7NIÓw5g(isis-database-3_cvs/formules/CVS/EntriesUT $YG+$YGUxèèsÑwÍÍL/J,ÉÌÏÓ.}÷¢üòNPjYjQq*TÌ3]/?(µ (?¥4.PK
+]7c9Ÿ+isis-database-3_cvs/formules/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formulesPK
+]7.à%isis-database-3_cvs/formules/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7)isis-database-3_cvs/formules/CVS/TemplateUT $YG$YGUxèèPK
+]7(isis-database-3_cvs/formules/Emigration/UT $YG}$YGUxèèPK
+]7,isis-database-3_cvs/formules/Emigration/CVS/UT $YG}$YGUxèèPK
+]7j³£3isis-database-3_cvs/formules/Emigration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7¹áu""6isis-database-3_cvs/formules/Emigration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/EmigrationPK
+]7.à0isis-database-3_cvs/formules/Emigration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]74isis-database-3_cvs/formules/Emigration/CVS/TemplateUT $YG$YGUxèèPK
+]7$isis-database-3_cvs/formules/Growth/UT $YG}$YGUxèèPK
+]7(isis-database-3_cvs/formules/Growth/CVS/UT $YG}$YGUxèèPK
+]7j³£/isis-database-3_cvs/formules/Growth/CVS/EntriesUT $YG+$YGUxèèDPK
+]7œT¡Ô2isis-database-3_cvs/formules/Growth/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/GrowthPK
+]7.à,isis-database-3_cvs/formules/Growth/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]70isis-database-3_cvs/formules/Growth/CVS/TemplateUT $YG$YGUxèèPK
+]7+isis-database-3_cvs/formules/GrowthReverse/UT $YG}$YGUxèèPK
+]7/isis-database-3_cvs/formules/GrowthReverse/CVS/UT $YG}$YGUxèèPK
+]7j³£6isis-database-3_cvs/formules/GrowthReverse/CVS/EntriesUT $YG+$YGUxèèDPK
+]7âTW%%9isis-database-3_cvs/formules/GrowthReverse/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/GrowthReversePK
+]7.à3isis-database-3_cvs/formules/GrowthReverse/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]77isis-database-3_cvs/formules/GrowthReverse/CVS/TemplateUT $YG$YGUxèèPK
+]7)isis-database-3_cvs/formules/Immigration/UT $YG}$YGUxèèPK
+]7-isis-database-3_cvs/formules/Immigration/CVS/UT $YG}$YGUxèèPK
+]7j³£4isis-database-3_cvs/formules/Immigration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7ýký/##7isis-database-3_cvs/formules/Immigration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/ImmigrationPK
+]7.à1isis-database-3_cvs/formules/Immigration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]75isis-database-3_cvs/formules/Immigration/CVS/TemplateUT $YG$YGUxèèPK
+]7'isis-database-3_cvs/formules/Migration/UT $YG}$YGUxèèPK
+]7+isis-database-3_cvs/formules/Migration/CVS/UT $YG}$YGUxèèPK
+]7j³£2isis-database-3_cvs/formules/Migration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7Ñüº'!!5isis-database-3_cvs/formules/Migration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/MigrationPK
+]7.à/isis-database-3_cvs/formules/Migration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]73isis-database-3_cvs/formules/Migration/CVS/TemplateUT $YG$YGUxèèPK
+]7*isis-database-3_cvs/formules/Reproduction/UT $YG}$YGUxèèPK
+]7.isis-database-3_cvs/formules/Reproduction/CVS/UT $YG}$YGUxèèPK
+]7j³£5isis-database-3_cvs/formules/Reproduction/CVS/EntriesUT $YG+$YGUxèèDPK
+]7ŽÕ.¢$$8isis-database-3_cvs/formules/Reproduction/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/ReproductionPK
+]7.à2isis-database-3_cvs/formules/Reproduction/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]76isis-database-3_cvs/formules/Reproduction/CVS/TemplateUT $YG$YGUxèèPK
+]7isis-database-3_cvs/regions/UT $YG}$YGUxèèPK
+]7 isis-database-3_cvs/regions/CVS/UT $YG}$YGUxèèPK
+]7Û`6ð'isis-database-3_cvs/regions/CVS/EntriesUT $YG,$YGUxèèD/DemoRegion////
+PK
+]7.isis-database-3_cvs/regions/CVS/Entries.StaticUT $YG$YGUxèèPK
+]7LæxÈ*isis-database-3_cvs/regions/CVS/RepositoryUT $YG,$YGUxèèisis-fish-data/regionsPK
+]7.à$isis-database-3_cvs/regions/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7'isis-database-3_cvs/regions/DemoRegion/UT $YG}$YGUxèèPK
+]7+isis-database-3_cvs/regions/DemoRegion/CVS/UT $YG}$YGUxèèPK
+]7ëZ
+P882isis-database-3_cvs/regions/DemoRegion/CVS/EntriesUT $YG,$YGUxèèD
+/data-backup.sql.gz/1.2/Fri Sep 15 14:56:26 2006/-kb/
+PK]7ŸÌt!5isis-database-3_cvs/regions/DemoRegion/CVS/RepositoryUT $YG,$YGUxèèË,Î,ÖMË,ÎÐMI,IÔ/JMÏÌÏ+ÖwIÍͳPK
+]7.à/isis-database-3_cvs/regions/DemoRegion/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]73isis-database-3_cvs/regions/DemoRegion/CVS/TemplateUT $YG$YGUxèèPK
+/50ÿbéa+z+9isis-database-3_cvs/regions/DemoRegion/data-backup.sql.gzUT ¿
+E$YGUxèè-XeTMÓ]îÁÝ]²8àî°ž»{p'hpwwwwŸž»ûŒÏ7g~ÌT×éºÕ÷vÕé&ü÷éz9H8}|B+cÇÇf<PÄš Øù
+ÈŽÍ;T9¡Ge(?t?*?eßwåJJ3J`D.§eûŸágYà»,
+\r{¯
+ <Ý+pxŒž
Ôxm±z,ÄŒÕòeNç;¬ðpÿz×sKX.^sn÷%Œzbõ$Šžtœ=¶Ñ>q}{¿³EäcÍû #oz\û^ÕäÍX3ÖÚžè×õM5²oŸñ!ÑNÿýÚÃ-u9ÒÇîjñ
+â
µgêlEë9önÍÂí;;v€.ÅÁ?®³/M:èÑëÁœ
+û¬Öߩȷ
XÍŸœíñmÀÐWWQŠRðªkÆ ó,èD§fÇãwZÈ@-²JŸFØÌ®
+gVJ_ãy*1;ÝO
KÐÏ{æLã/ÄýçwEø^TrÆ¥§Jg|¹ùÑeïT&¯Û³cù}êïërnsqº$ÛfoÉ1¹e[üDĺÄúݺÌ,àõœõÕñÍÜ¥ñ
œísæV-Jf¿·+¬VfpNN¬ù,\cñ¥Ìã÷ËÊo9<Û|°Qhw©²ýs×ÔýïÝímSó5dâÕØ&L5G.ÝkóäÈÁß2
}Oö¿Ê-ñvŽœ9ì¹+D£+Š¡§k1GªrTöó§[m{ü
+-ôJæ®)W[ĺ!ã'BH$z¡Äÿ°À¢Â3.@ÞÃx÷¹26)9LÆz|Å€[å3ún<8êkÜhéÏwAEe[ y;¯ú`lT0VžkÐLÎ?Âá¶ŠðùBxT1õ°U:yµDåµõ3ëÜÿS
+ÔÀËÇ€å³aËñæ3}.þþQ
+PÙ9ñÂO/6:ûmm/Œ2RrÂãºõÈé zùÝ
+GDß3Çedõ'kÞõÄy/qÐnÉ*ì^klq{°ß=5T*¶>Ê~ÀãÖlïBS ÄóÊ\Å1þSºK\?ŠON6óð*hϧҊÏ|~£1CÒÙ*8äªéÏ1¡¬(̯4vé}Ó¡µV¥'^ú5küÛ*TørU¹#ÎÅ¥Iî"-Œâ.ÈÏX°ßÙâ'YtlÖN
œœàßõp?<:ŠváE)ÐoiQ4Ïö"ág,{òÂ(Rz¯:èŸ4׿GjôàBVlQäb3 b*Œ$H¡¬f÷
+{"^Ø1AÀAAj¹|Ü-^yWžß<ßl}àýfÙ&44,¢û-,!@eOGlŽÄIý[¿¡Œpx+°ñ9áÏ0±Ïø³Ø(²µÚW³wt¯ëìŒó®Þ
él36Aµ6âêÇäÈd#·VùÖ)$ã§³°kkCyñ%+_#<]Ù°NÕÿsi)dŸûÒ*2h¥¢.êSU*R
+²BvÕDÏÌB#Ô.cNä
+%ô9ë\3g°¢BWÕN-WJ|a]¢
©
+×§{?yGS_$»9Dõþ¡PÐçÙÀ{ ù¹e¡¢ ^6è°é/Ø<šUjÂÍÁoìp(r¢ŠG}?«µ£+¿
)À«-aGLö+±ÆÀ¬; ÛÆ2ºŽJêÔST§EÏf¶þdÙChß,«öw²b³Z€±O5hß,l¯d,ØŽåíÙð¹¯æ'üß1)°[r{`n7Í¢'Õ¢ÚA9pH&FF&kÎXQDë^(Ãà@KPÑJlsY|êºñ¥š "íÍA¿ýKDÇšs8`§ÖUýdS9(,ÕT=clÓkähiK·ðÃF¶ºŽV]µ[OmêÔT°©mj
E°kuéåÿÌuxÁ e-ÌFæ #¶|r-¥§±¡ì²"åÁÀ\I4l]Zúzì€uU0MšpãB±ªvÁgãüü¿®bCUúlãyZåmyêêÝz ÃþlºTœ€ŽtÉXsÒcKt4ãé±hÒ}â6:r1¥þœ?:.Á|"JŠ¡¹ßg²??K]Q
+Z6œ¶^Ä2ÁŽÔ¹XÒªcIµïå$®ŒZø@£üº S"ås:`hWÅK2y¡7)ËicŸyZ×±g0Ç'oÔ¯i=cfUNÙÂp¡Þ¢(VôÃWCãÄ
+ÎèûÎ âm-3\Ä5
ëM2îþ×),&öuÚ#)JC¹cÔveö£¹§ÑQL
+ä.*0'üþÕÊÙ(i9
œ5j}/nËºŽ¹þQÆ:33øAð±(YÅ_
7ñ£ÁìíàØrÌx=ôuÖ30ävÔ]sýÉ9!qE»Jg.U-$ëÆ?ŒøŠVd\yN165;t¢\aM$vÐD«6ËtýÊÍU°Œö\¡|wzÐÔ=ßvÜöWQ
²ð5oÆéf³ýòù|bÌ¡÷]ݵé tuf[kz-3ÆnšfBÇÒ6ñ÷WÍÁV¢!"$VVRÃb<1ÊõZXkÞ6Å¡§õÉ;CõD¥3ôÚ`~šs^ôxm$
+'Ø6|ËÔÓŽºÊÊÁ}R ÏòÉæü»_
+Ë
+øÂç[ö µÈs³·O{ì¬Åò ËcÖ)Ï|å'öÀ¥H&Ñ-uøc·:ÔCd±¥YóíümÒ©áwÖgzìhC5¶õÏZ&jjûgÁR?î8-º1l|Ê×áÃã°&èqÙýË¡÷¥Úûd{ô»A(N3sn]p°ÀßÓyÓl9žÅ£ZÒø 0À=MÇùéwW-/â ì8"JzëËgÈm¶E'SÕ_ñO?ärâ!+ÜÞsl$æî©NcÆŽµ`B#á*ël
+ç¬kZxºÖîmæ2Òk
pW^Ä·ýuÞzWéäÌ?WMåZãYje!g÷'Û?Ñê%ÛjÌW«¡dœÜ§;rÝyIDò\
+¿ÛJûdrðyqœ€7J$ŠæÍìâ9ZÓTU5á3Ü¡iöwÞ7?2'yŒ¬ÆÍ±'U4;
+jäïÒÌìp~Ûv÷Üz\xYÈšß_œ±¡
7ÍrÉKTaBJ§é4
Ýõ>GøìNoQ³ágVi:ìI"-åpG1ÒUÈÃÆ\Ê 18L]xUšWO:ÉyÖ§°ÝÛeG`ðŠqÆÜZdå7öxsTV1 ã¶jËý$Úû$Mqn»WÏ#%g4àWÇT°ZÁS·D@Öã¡çRÙ+.ûMH%5
+z*ŠYJÆ"HÅ(·Dèf£eC75ËëÅÂ*óøB÷œÌÎ9òàÈŠ:}cPH7!ëØR.BÇAȲ®Ð)äÆÉV€Ö¹oÑÒ{89[ë<[[Ïþx»~&êÍ9d9_ÊÑmÿµ³£ Žçêt7Â$\»FÆóLÅ,õs¥ã.ÉcòŒ×§ Çõ¶ý\Hèäõ»ÊÍäõúÕÐdÆöíþ³«³×w_ïM¡»¡mî~²ë錺ÞëRì©DàÎt+^8aKkš€=F&ìPnkMV&ÚÓðuž€:V#n%QËrÛÐaŒê~oN±2àW&bPê9Â<CAæRÇ¥>ÂÄmC£Ð|ò+!9©âDUip±ôM~¶«5vZ£FcÅHj,"ªñ×h]YUv]Ú»<ÑmœÑ<ÉôXäºM(æM&" ÿ5?8527·¥U@¿Z÷LÅOšÇ*@ĺGëeA4Wáù5vw1r_H/R,rI$ŒÊzéR¥íÛ`/ÍÌïhwÎÕáÐyçÝVªœÇÉ@ÀŒ¡ŠÉûlõQßUäêT×êÊêâFóý}ÁÙY÷jºÐ¶]]·n}Ê6A'=Êù0Lk"C#ãÚÈNÔÎuÓãÓ°Jí¢©f4{§øg¥šJ%ñÚëD6®±?øŠŽe*?ì:U"$û~~QʺfJþpªó®°šÊoX€V¥®dÎ Á¯]ôçöoRêù¢ÏccËAµ"ŸÖ"ø?Ô³çÿþÿlnj©êúoø¯çdâ£
+;ýÕ<¢=23)º0©DC
+Oi~Ýk`d}U4ýÔÙcäœ,8 n¶špË£Cáa2ö)ŸÔÚ!BxÊCŠKC7žRñgýkÑZ¡pdcVçmF`B?¥[Iõýž^u£I%®ûcæÉ^¬íÞZ&"%Õ³ÈqEü=š5ÛíÞœÿÄ-W¶M]n€Þºý K"SÙÆn€_+¿<(ï'!Z åii¶jTþR~-ÆÕž8Õ!E§6Š5ú#NG«/¿³¬'vdO²>v//eÖdôËýl~5«`iEtW#u!YŒ¥1KBËß©Œþ~ÛEwñ[aXÍüA6%óÀQÝ
+/!8ÖëKayÄà0YaCüå¿æ¿j©
ùhÃtõml;µGø¹]ýL=Ú²n-,õž¬.õ%jDë ÓòÚúÎÕÚH«Š]Ù¡ÈÍ7ÐMûã.âËþöm
+ïeÓc¹*ûܯ:3_Æ€tÂŒYË[8Mn.êêæÇê_p¬#'¢Ir/2äóìÝ!^ä ÜBh÷Bß%È:ÓŒáBhÀñî#°;sßÒËÁBA)>Üg°ëµ§gºI2Hªîë}º%nDR\z*Pï±óÌ}ðI(Þý¡e¬Kô:Ø¡õrç$SïFÞšöoÝCšþ®ïÝÏÈÏÓ7ÓTß×(%ûq3úx©ùÎîAd¹ªh"b§:7g¯ëïý!iW,§ò[[}š=zLŒã'-YŒþÈï÷'ws[èü€ó^8èíFBú5m~?.üár~NiüŸùhà÷~
ýÞ¿ùAèóm§ÿ£ÏVBNѲžIAѱj7±ØÅ1{ß®ðÚÄ«ýðŽœáœÚ¹tïH
³(÷³
+òB&rÍBNiöÆp
+£Œ§4Ž}õt6yF€}@2>Õãöá'Û2Qðñö/ãVÄ«XêreŸq<ÈbúØëÜ»ê[žÚNÎήÁ Ø\cŸZ¿>ï=-
+m
+]/%KøVÓd}}°àºT«žg`|h
+h)¹¿ÛW8HùR<Ä"~Ü!¿ZM»ýØ{\dNÂhö «þ
Š×}FØ®têý {ð<°° d>i?þk}E·§
+qëyÈu-V?swWhéA»3âò,wÍñÑöGààݹÙùõÀåAçy:ÜE¿Ô)¿âûÍhÔq]0Lâ@£Ï*qÔëlqDñHÃøöïQ©Iì:ÝÐŽzg@à"7 Ë/O"«§&iªÆOS§ûÅÖuØZŽÖ^àj€1SÌSôÂÓÚ°·7äSÈæ[Cö¡lQ±©ìO¡Bê³H$Q×Ògµþ'e{Øàù[%-V"Ÿ$ÜN?M²U`&W5.5âIÙY©ñóÀÃõ+Ú×7ýn¡çáç÷óŸ¿í¬cÁÞ¯ïšò'/Æ®&¶Nž|SR6tDUk#öŠ=Öžðhv,%j,8[$æ;1Ÿ?ÖÀ=kÄ5qÊ·ÄâBÅâR€iòYÍÔwÅPw<£`ìsÉ |{"\ð~$æšXË¥Îbe(¿n)±e o9÷ÐÞXÕR-ÐYH$Ž{ý)
+ëË9ûºYͯÛûyÛ^?{@l*AªEAÌ&3_tŸLpÒ1~2u#ôr¥dîèÞѪéŸQ2}ŽlnÕ<?œ9ÝIØ¢x]p"qHV`ã}OAÀ¥ÓQÅ
+q|PŸ(nl~ŒÄ<§LøŠÔØþÄÑôMÁæ÷ðóº#¹±Œ~u9 ŠŒØèôCœð~°/eøx?%B{râ)!šûó>ÙÙÓöÐòžBüMŠyÂh¬òók-ß?}þõÄÅ)
+WÕ« 3æèsùI'nW]Õ£EmWRØ+ÂüDkúC)Ý:$Au<²€p žôÕcP§\=ÔHœ/Cáùm§#Ç©¢ÁA¿+ëöÜg}
¶FÔá䌡?[Å;Ìg
+a÷Øú}Äžœ?åð}»ÝDϺŠ::÷;øtã<º}Þ×4yQT)uÃJÊFéÁ8Ê ±X
É8;*¿_]Ê9#w9¯{ÒÄo®H
"YRïa8ôñº,ØÏn©7Š@¬!éª78æ3Õk&_zõíþ`ôÍÐ&AÇÆKä r:JÈCÀuŒÉ¹º¬¶€_{¶sëÛÙd/ÓíA-ñÍÓK°ê%ú~^lT!:
z:ÛµlîkìŠ4âäØÁ)œÌyØ`OŠðô<þ#;[ÝÁdÆT
+ü »~cn«çÓy/ü=~d9ðéP."U7Á¹
+*qÛ[(2Pfèhü±J +Ô-ðX"=ræq±5ì7>ð`$F`° ºéÉKHÍŠ°ºæ
<jÈíf/;pîBR-èB_WHBîºüQÞPjaÏZ®?k»# ïÙQ× çžvÒdOùºÎ5þF=%:ùQM¹õ')4èPÒFYãŠyj
+àižc§¹-[ò
9sÏÓr°7
ì-õéóMk¢š^89}ârëWM©ž€¡¡Ï?}n"8òG6rÔŽJKîb+fÒQaÒ6:ÆÞb±ÊZŸrÓJ?ÂéRùÑYnèqJ
WvÍoÕØÓqÚ2=WÕïfÞ1MDf
'É,5ZÛæòøÙ )Êbhµ³øf¿¶ŸOûÂ:1zYrÔ^EiüCö¥×Ã&êUaDsì§ÍüÖÍÖýú\®_ׯl:;}Ý íi7ýXy{ºBR>Gí|Žjúþ8ùc{rÓéàÃàÒÖ¯xtqùrÚ"ho÷!xœ¹œrX¢q"%x<±ŠÖº{&þËbw€¥{dHôç·wbs8!lÊìr:ãwÙþ}ÍAØ!ŠßLÑn
+mò.Œ9ŽÖödl?`«hŠ»\»³ª2kµÑ9ÃÍîFOôÕæK€ó
üq[Ø8[ì3W«IQØxo'lô^ÇÏà Gø©.·ð¥Ž-ßx,Yvíþ÷ú/c·Z^q·¡ÉiŠà{žš7ÌI;Öa5·o[iškZd¥ÐIw
"ö%
+W&ðH?~&1oaZ\Îá¿ZGKîv»åMIñ/«?y\.}ߺB£ŒóÄ Q'fó°/WÖEs7âS(÷M)Úpœ)?^ò8nòSÓ;Ïž}j³¶Ð{Ë;»öLÅ&±"H}rg,ÏíRE$8ŽÛºŽàlŒâݳ4ËADSæô¢}6šÆby·ïvj3Úb.Dß«É+>âi:\å~-ÿ-~ËùsÒVoõ¢ç<üE»Úþ¿KX>*ºQr 2SßNA€fŠ|JsÇÐñþÙE5=ÔC!XgÛ3,IC»u>š«.^3ÊѺ@5#Øš>_ÈÀÛ VaŠ^3B|ÄNM>4
+JN%áÿÛW³7¡ßLNkqtÄX;=[&âD}¹ÊRn>Ño¡N.SO?NÜ€Ràzq]0jâ×gÚx«C'Lͳ$ÞQŒlDû{p³}&ì^Ñ4Np·ë+dËŒEqÒîîÁÓ×ìœYÄuT'`SÌ¡{;ÆêwµÁL7Þ}«¡sôžö¬µg6nììK¥98ê'ôÿl>)ßšU"çðØÒút\5ÊÌÚNŠÀ1§ÿåô6,0Û#+7ÜÅm\çüf·Dž.÷¢7îñbíîèÚÜÕÛjhÈ
+%Åú :©q«`«uÄÉãfxÇüõ²2cäÉoê6¶ºÃd9ðœZpš+[«7x[ùó
+ÚyñV×0á\&z²E!$çÁ 0¥9zäLÜ7HÓÊöpº8¯hÝ PCölêmçùtjd
é?Û_+±ÜfMÜ6HÓÂ6@ ñRhê×ÊéR~¿,ßGªßth·np±ä=©×Û[MœâÂå<q`÷x/ŸÆê%Ñ_ÎŒrO-ÓdæŠZD³ºÞÛA#ÞnØJÖ:w«|£
!WʧJH×FZÖ2%XÂc nåÁlgí³¿W`Mp4`Ów¥>BÍü?{TBÚ!-`dFò~²y
°CDöì»Ã¯ÀŠ©3h>ª¹iátJ±dSå÷©ËÖÞöò ýµsÉ\¢A|c¶²d4l£ìþl2Õ¢¢-`Hbë#ÙÚÏe<ŸGÒõwnÃÅn#w
+ް}btô¯âÒâ°êX6LÖö,êü
+RþÜìtŽû£P/
+ª7$!«l,Ã7Ìÿ\4D0Qns±XvÕšÜhAaæjWU{
+â5H§ËÉ+ßžm5 #Û¹¿Bð¬úÃí Æç¥<Þ~1ó^å$ÿêú¹ÊŒ3ÒÚÏ ž®2RÔ:]Ï
+à¢jÈxd\i]Ðm 5TEÓBomð%ÿÂÍrÌPÁtaÊËþEÌÌãàöTê
+Þ>FPæQ_k>7GàŸ]_üc£T:ÎÑÄÞ€6!!À4áË_#cžŸœßË8¬ëì0
+=ÔXW-Æ|5j;ñ8|cð·zËn£Ò©EëÍY¿nÙ¢ü2°ådC²wPÁªqù.s¢®à`óg'îygQ®±\Í?öh#ÛDl¹<
+ZIu[n1r6£ì;÷Ý38ƺn+É{šAêÞaf0Ó1~þÁõ:+t¥u[dÅÓGºÁÑ?ßäèü^Œ?}€4"&i
aã¹<h>·Ï¿¹Ê_^]O¥sHsÁÔ±ENUŠz unYþ_í{JüÙËÛŽ"äÿ _
µü²J&ÅÐe#¹ÿ4ŸyDQÝ!ÓÿDŽs2Õ±Õú5FŠ7à£Æ¬ùWcZZí¬ÂÂûÝg0ÃPùöWàÃÛ°XaŠüQæÆöÞ¹ºÆH6÷
ÏÝá÷AíDAàdÏp{ãᥪh5}dÙpìœvíØ÷Ç/°)lÖ3oÒ» Tª$t8ãâºÖAtÒŒ^á$
+¢!ë`1¡m»N2uöpËBBû
R «£¿ÔY5óxh+q£ 3lkÎÿ4 ªkIÇ&ïCHKj#ð&ªâsØþLÀx[o1 Zk
+&Aç×ö±ìwjüKåWÒñ,ÒÔÄ ðœx§zΪ}krôô
+íPAîåTç?njØP¬¡ùä²ÖËk
z'!@W ÍLéÉ>jŠF#uILGÆFîdóLÅzCb®(zk®Ú[CõHP?âeÎŽ]ðç`ÈUâ"_ÚÈ/TkNµµ0š©âåØœÃ$à¿âE¿HÆÆšqWJÞúV9k%EbÆÅLµ-3\«È/ì1§æ+õÌZªcÜ¥§Ò»çÀ êà²ùßzFF~Äj"5jÀOdW}œþ+]aD³îtÆ£³m,±jÒ$\©Tk_i×jû¡Ï»0{SÿªQŧi
nç+x뺶>tõº/ë~iöd¿&£+·ŠŸ %i¿³úË¢kA>ëwšÌÝ3)î'-å_×D
++z¥Øe|3Kìâ8Š4ÆimÌUa2(fXTÙÒ@qÛo¯Ãµ±§OH
+ÕME8(Œ%ÞN®¡ùBô/B+-~MÇTâž·q¹ØvpŽ*Î|°':t
+wÃüSfq.cáo¢iT³mª?IuAïÆ\`·Þ~ÏJ;cfcO׿pbßûlå=ðá«iépVjR+ªÿ6ºŸîcaú&Q·[Wâ0AóZ"ëLH¯š±añÿÃýo¢DèÝa)nÃí5é"µò©K|?¿¥«¯¡_Q±ž/^ÝPúè[%µX}¬uø(Ï@ŒWXý»ÁE%5tœ¿nÛÀÌ¿Š»a^¥H⬊ Y×ùÓd©á0=?Ϫ|`ÑÏÚt¬|²>jĥ粡T5Õù«¿YÿnÊR*b.ëðØ(²`æMbçOk?LxøâûœÑWÁµkdi¢ãL1ŠëRî ñàdÖÚzr÷áÆi÷UåWL¹ÏÙá£ïé¯9óÿu>9oræ2Œ
+ªê H^rÛ¿¢
+;:·-é6<ÿ¿t#
+ oyøaaË®hËŒP¬a%¿Ù)K:êãd'lðl_
-UIáÝJÔðtúz;©Úù]Ýäj¯%Zéžq;VÉ*ÃaÅ`
+&ÿXü§*8¿û5;eÁAiåT3³$àb0#%-N5)üÆIF¢ú`è7=éÝŠŸCímÌÖeL³rÐÑß3å·+¡¬oÏð~òak7¶K]×M<~"=0ö¬ÆœJ\©g{ÉJúDO²õgti2åRTq6ÓfÄsÖî6fõýjGô"JG
+ËÈÛÕÙ^ï6<#*œfj,»ß±"Å5ì`šÎ3¿Ìn¥éê®$û
£êuò
¬K±ð»;?>!F.B°ÜI8hXÝ Örµ/kq(3ì'6øb¬M7ñøñhj®ê×nçÈ9üCnzÆâÊͶð7OÀ0ðÕCg]`nÇsRü\¥ž}¿Zλ[DRäJaX!åàŽ6gånÀ,^3ð«vQ[Œ/ïe5O»&ËBv3bÛb¿\Ç=ù$œû¹?Y/ÚöCRN'3óÝrÚêÊq¥=${¡ ;N>Dp¬H¡cÅËqzIr_G4ŽÓõJ¡dôŸu7¢èMÌİL€ûj$QIÀƮÁ!p×®{špêÖgW9ݹ€0qjÛl¹Ÿø¿ùZùâ>¯û<é:l\컣ãýiX
6¯÷Ùïb6tk4ÏÀ.(žŸÙå£R4pv¬¯A§<Çøœ©3hmV×§4LGת7E'ñãÎ÷³åü9ÖT¢ÒfÞûiìÇê
.¯/7 r¡u9
+³3ÑS9å MiGÁ,"ÎkDž²Œ%W xP+Înx7À¢§p ØS$UpCÁ;SØHÌv®zk1~€2oènèØÆ(e¶knH|9æQ~#eD0ml&Ú4NSœG50SEÚ$ÀÂboêèáJ^qfNÍÿ°×q^6ÁòO{\ñëTô~³g¥
ÜLß["Jôqã»ÜôÈC7Q:Ǫup7}=raòBÒ±Õ&h8*^©hø8Ú;à??Œu{A¶Çy+;4ŒŠÖ×z@&=GÍŸ¹=xº.DÞkUe[Hª§4rÕJÆ3P[¬ßL kDÜœ>_^³¬:ò
ãÇøÎGfÈÛ¬ÀNXYxÇCjô,Zæ-ª'Íê8C^TAO@ª~û\ëìÙä¡&aNAU_Wp÷2ÞÆŸÙÎG'g`m/eG
+^T%zä0)3dq)ìÄùÈ(z<YY+:¥µ.>h}0œ$ßÔѧÃGHnÇÎÙõœµWŠ%k*yܵUª žýÕB¹Q3ÆÝz@ÛCy¶ŠÔìïÜr¥'![׿8+Ðýp«ñyÜšm°ÿF»øvAOÖÈERi$=ÜPfÒë»~$v7nëEÿAŸš9ÑÌš¡åøëõÀy2tYµ±Æ ïMT*4ϵOŒÍvéivcò0¶º
+jï7+¹üï§·É'W÷FìÄk+$1j\s'ùÁÙ@5HÒoIœÂuxß[š»f»[ý»×'&"ŠŠd!#înU{Qµ²zÆ€çóŠõêkO1Û ÿ¯ä,%víÙÓÙü!žEóþLRènf¬Bê¬Pü¶?»6ßéðÄ·=1o=õº²Þ€^ ζ°»{Í]ÜÒÌ98ðw/bìŸlqº,7kÕ¬úVèi2Ï¥ÎDܵީå
+DóÙr÷ÃÅòË.k5TLUjÜýÚçcdÇ¿(ꮣÊ÷3÷®'dK7fzóÌ|jMÞ|vgZMϯÄÅ0ENZ³2¬:f¢~óx4[6tÍçÕúgüH7»üªÄnusT1cBØåpÖÜ
+OõkKöª÷XT;ãóÌ'þ£9Z×Xt/ÚoRKÚ*IÓL¶®`TüÑB3-£D÷o2òU&ùew¢Æi
j=mµšö]bD£j ÕÅ+µf©qÄ
+Ë6ìªÝCLo]Ò,ÒÌûA(5IªQ©æÂ`óÖzØ)zSí³fxå¡ábó[ø¯ÒF;§
œÃÓôô4Sò"«y\ºo»(â}Góuu6/©ÃÂñÙpŠ9ÔZ÷êio0oT»ZÏ*Ϲed*Áw°Š³<Ò»{LfE{ gxß5ç.?ÐVvÝsW)
+GXßÚâqšîÜt
üù$þC* ³©ð9Gj|·*uuUëaðÒEµa(<,è2#ªÌöÁ¥RìÜ-Œýz¹7í$xtvGœ./q>z¥
<Oœ ëÃqeÈþdyiRš¢ì¿×Ì»,àÅmöULÐùäæÛ(ö#ðȯêÍ0Š>)tutBúuÈtú¶]*ÃAFkýOP{LŽg±ö{# ê;/*ªªêMŸI
+. ~<M]î[æò
éï{@Ãs!å%/ŒÆ,ØçÊòË£@0{qâÖ#Wû!ìÞPDeØÈ
ÒzÞú,Rç*5Â&bï¹ðP.üDxïdãB±Œ22Ð@£äÓ{û©ú)šB2ËQþR5Ö7vö§Áë'oOtìÅýENÿGPîeØûËW``×úÐǧ¥M"øjÀÿPK
+š]7,isis-database-3_cvs/regions/DemoRegion/data/UT ;$YG}$YGUxèèPKš]7zê-R9isis-database-3_cvs/regions/DemoRegion/data/data.1.log.dbUT ;$YG=$YGUxèèíÕÝ«esðµ}NŠ4$a Éc 13& y/ IHÈÛÈÓ[ÿ?È
kWséBÍö¬ÙßÃ9¹ð2ÔçSßõk¯ýöüg¯œVWWî^ÙµsϵûWVWWÎ^ýÇÃ0Lf1¶\Ò'ª³ô\~ÃxX~¥_ï;ô`/{Ü9ÓkaëÑÙOãçü8MæOLóÛ³ÏnÛp~vªO:yúÜ謬ëׯ¯)xœòmóem<¿ãôó^·£×ßùö»'6œÃ÷MÖÙY¬cºþúéŠ÷ýÎçM×_lÞvEÖó:w.í\ÙYÍùë:×wnæcÜ×¹«s÷BÆÅÃyÏ£Ç;/w^ïŒÕyg!Gùx?Ê{>í|Ñùj|°¡OÇSÛ4õMRc¥ÎsRë$µVê€æJÝË©œR¥îåÔŸúÏMý=Tö1É^&ÙÏ$ûx6{©ìg9{Ú=M²¯Iö¶uãoà©ñpø7×S×µüÍ0lßûËï믮óËî×õïúÜkÍ
ý_šcµüœüß·ingÐó;t.ì\Ôo+Ë:óÿ«:Wwú~0ìììêìîÜй±sSçæÎÛ:{;ûÓ÷á@ç`çΡΜû:÷wÆ;ÏCG:uwì<Ýyf_Ïw^èŒØy©3ÞŽ^íŒÖy£ófçíλò^çýÎÑÎ;w>é|ÖùŒóeçØ0ÿ/:ëwìE¥TúRéM¥?UúTéU¥_KéÙRúVé]¥VúXée¥VúZém¥¿Wú\éu¥ßWú^é}¥ÿTæPEeËIe.ÙTæSQeNYUæUYenÙUæWaeYVæYåö̳2ÓÊ\+³Ì·2ãÊ+³®Ì»2óq=õxæsb\×ÿÃÇÿPKš]7§UÍ A0À8isis-database-3_cvs/regions/DemoRegion/data/data.data.dbUT ;$YG=$YGUxèèìKl#GzÇ9ÍCÉ®íI²ö¶ÇG\Žõèªêöëi%ªm²IMÍhd¯¬ÑP3rÆVâ8q ÁÂÉ÷ Á [æ9äb ¹%Ç{äCT5Í~°ÕQÇûýfTÅúúûWÕWÕ¬~ÌÏËÄ@ìÛÆüŒ1;ÈëB¡pŠÐã|G%ŠJÎ=ÒÙQ -5¥ãK£ÑtkNsÕx[®uÏhŽ«niÁwé·²äÊÖ_ož[.òóy!nÿN
+:¹ í_iIß(Ë%§]õ×}g±*×ýÕ4ÐtìMØÚAÛ÷NI®W嬮/¹Ue}Zö°1jÿqûÕ/këõ¶oà£Ûï$ì¿«Kaý£ÌúoÔíªã»uoh|2ûÿ°ÿTÔÿgŽÿ¥j[9Ý4®]¶ýjÂþÓQû_Óöo6]_®eÕY5BSŽÿ:9;jÿÙ¡ý³Ú~·¯»¥üo9êÕ7®mÞÌÞDÈÖkƲÓZ6®qqWPÌ'uwsl¢-AïÒ»Úw;o`³»qLùŠ-øÝMÎéMnÝ!×§\sœ 8"ê$¢?ÑñçaûÏlñ?±ÿ-~rŸ%âÿ/DÛßóAü[\/UëAÇSóÿyÜþ×¢öÕö«õÒÛëµzYdÊöÝý3Qû/Æÿ`?|·&uôSÙþ¿$ì_ÚÿzÒ²\o¹·¥AàÖôì?£íµÿüÐ~AÛÿ·~ûv¡l#àP}Y%ß]qýÕ¹YCÑß
+cÅiæa¬hxußðÚÕêõ0Ël¶TÌ2Ýëùi9zVËÚ²NzïÈwÚA¬ß{«"fÊæ0>FÞÈO§Òê$Rÿ\%çÃøóN_×+Ë[áKu¯¥Æd¥Ýz°}Zc'E5é»JnéŽêë-ÕýÇÛaXÿ}ÿFZÀ
+Ndÿ¥ýOUòì€þxÔÿŠÛÐsŽõÙR;šÿÿÚ÷ö¯èäÆÐ~)þx(º]3ì°oéúí·óÙ·ÇOWKNɯ7š8ŽÿÏ û¿¬püsóÙ'cü;`1Õþÿ&ìO%õßöÜwÚíJÕ¿fP«fœÝ(Fì°ÿ
+óÏJ>ÿéÿ±ÿ²¶¿/Eâï·3âïHû>ðë95©b¯Ò/¿·µ*œ¿¬ôñeEö·©¶§öµ\W»Ùÿl͹¥»e¹ÝìEãÑ÷ŸXMÇ«Èè§\OíÉÍ`àPÁ_jËj©ÞòëKª*ÔIä¥z&=twgÓæÅñ÷uÝÿÂö¿/þ ±ý¯ÿ»®ÿzqû/wôÇ?#-`~'³EÛÌÿ¿ÿ9þë ~"moÉm¶üZÝ·ŽªÛ<[šý}Óëÿzü ão=_ýCÆÁ¶bÌÿߪÇíºþCû×Ôýäö?ÓögFí¿©ÿ³W2ê_.-Õ~Y¶Jºt÷ÄBkÙõ*õì×e€AÄßM8zTnyíÚ¢lª|cJyzQ§o)Rð{K:U][€7+=Ž1xg©^/ër#o4eÃqUX,×t[ã€Þ÷Dƺ¿,Ͷ§fXÄUU@{+ò:Žš/õI+uòÜj¹*s7f}4~\·ÝôgÂöÿÌö»î
ïqÚ_!Ñÿ®êþÆi?Ù¯arÙOØ¿£ç??ùHÇ»)Ýʲ_L·_MØÿUí8ÿiä¶³bÔþß$ì/êúýçúÇ.òçµ3aÿµö[¹ügþÇ:RqÄþï&âïµèüïß³Æ__Êj0îDüM
Õ<ÍõÓž²³ÚŸÝŽzæ6bo5TôUj©Ýè³L2SbQ<_ÙåÌŠKl%ç¬-Ys<ß-åÉ«ÔpÙlÊ
+ª*DO=þþp:ÅHÿÓýïFÎøìÆßgý¿¬ãOÿòÿ¬ÔÛPLµÿÛ ûßÒþñ¯ïøg2ý%ìwö·T2Æ¿rŸñŠ?ê÷Š¿\o&aÿºöÿÑ€þLÿ[ö¬íGæ£Ç?gÄ_NñÈ»$«Õ°zè;.þVqýßRÉ
°ýœsý-eÎãÿ/qûzý%lÙó¿ öÇ~òøïôñ_Øþ²¿²Õ®{0¹ýJÂ>Òþñï\íXqQtãH9ûû û·õúë'9õ×#CÇþª¶¯¿ÿzŸÐ_ðp·ö¶·ö;vÔïííûîvw»s°Ðê<èlv·?Úî~ü*ÆêÍš^E ÕvÁTº5^~]ý<œøgoz)³|ùýÝíÝDá[Èâ
+®¬Ø6
+ŸÎ,ªÒÙØÃ,ÊUÅP€
+€º`jUæøå4v÷>Ý)¶,SfÛY&ÂP'ÿü×ÿIõX @"LP:)¿l,ø4* ,ÝBsò3TÀbþ
+0GB7U
6"[2õïõ_9¢þ63)·š Ú5qÕŸš@,è$ªÿ»ï_
+ô¯ä×P:
+C1DT3Uç²Ø)ö¥µª?KÆåŠ¥öÇÆ°ž9©þ¯žŠ>ÿæ%õóÔáK+ÎÿãœN)!œ«?"Fq
¬~¬>_èvº+Ÿ>¿aöþïö²Ü¿ñ¯Wú|œ·E¿?s°óǶþùwæ(ÇŸþùõó\pÜìË·¶v÷»åÎÁæþöÞÈÁZ¶>
+À²šÉebËŽ"ÉÐ{{×öÃÛ}7=Þy.ÞîÖ·zg0öÞo "åúàÂôrfqµú5<ÁÀ¢Ú(ž(r}Õ¶Å ·MÆ3¯þ§ÁõçCý©¿mç7`!L*ÓØ&ô
+8{ÿÆ?^VÀÙèùOf0Â8ÓgØ2}¡D1ÎÒÿoáúsŸJèõçkêçéÃ×ÿ[ÝýnçÞǵÝî}wgk7X}µ%ôÞõÁ±`ÈbÚ k°ü|9X~Ÿiÿe!úçyÍá7F÷÷·÷"÷P6^ðFÂŽ-ÀSÂlrøMî^Ê"&TßÞXœ03L¥ûú³t§§?ο°)eÈTv9FDÉ2Ð6¢\ø¹Öÿ׊š¿èݧ_9c1a!lè)¢ÿYÐ?ÐÿÍiêoñQbÚDÜâªè@ÿýÏþþµiêoëÛÀpD8é~@,:|
+Ì
þçAÿ@<UýøÏãÙJ}ŠôéúÏþþõ)ê¯R}°Ws,lKBÒõ¿úú·úgÿ©p*b0Ç6æ6Ñ¡ô
+žødTÀqëÿRBïñõ'fÿl€Ï61£þ¥'Cýã×ÿWŠš
+ª¥GésMb§WÀå'€[ÿkÓ?ŠÈaa®'¡2*3Ì>pòú¡ý"hÿŠ%LM5 ¢ÚÔùÿSOüÇ®?óß~~Ð÷ÿ/ôýL÷Æî~wðvýåjï1ì6C¶ms",ÎÕQpúsç/ùò »§>øûKúVþ×
+Õa>âÔDH³01ç§püývJÀŽ9×ÿ\ÃËÃw
+
3¿TjJÇFÉ)-˲á;Ui4ÚU·ŽÐjÈ+[sÁùä~œá:nÙèd>G+^Ý7Œvµz=̲"-·înÅõüŽ=emU'œwô]ô'±·}ÏwÜRúû¥zY6Û®þ^IJCí
¬ÈþF§"+Íz»á¯6€ÚEµVSvFË-Nåüû¶×Fõ?¡¿ï4+Ò?ÉZèY\rJ~œ)ßi;Ÿ.cÔÖÀ7·æ4WK_ZUìïhJþô]µCÒiÕ=×[ªG²ÌQÿ¿ÒúÕÿ;ýfèßš7ÚÕ@õŠTåÛ%ýâvÝœÚ3dUHü³éyÇ ÿÎ{t9þošäü£à!ZÿõŸþ®W·Âê^Ëo:ªå®Û× 69ª%Ÿ¡xÊúÿHëfÔÿ÷UrùÆÐÿf.ÿ1Jõ?âî`£Ÿ~Ïëÿ]ÌöWóéOrêŸWìÛ?]ý6÷ÿÍhÿÿëþvôSüR£âþ¯hÿ#ãËð?¶OD%·ÙòkuÏ_ÜU'usoïtM¥È5VÇÑa)6MwüYJ?2Úþ~wü)©¹¯ý|ø|t\ï;ý_1âñï®aü/åéñgNu,føÿB"þ-©äBÿÞËgßÿ¢Õ{]TöOWÿk ýÿP%Ï~2ôöýïãm¹:âêÛZÍÕŠ¬hµû=¿8ÿÐYë·ò?éã_ÂþÈð3°ºú®ýzÔ7Òÿg~«ÿ¹cðè_vU͹í zq-9|Í_vkfóðµ±iÉ£(K|Féâ$³ê¥W9l¹µFUV¥Wñ{ïÕUÐ0Gòœq*¥äL×'=ãeR2ghVtª£â
ζ[r0«¹Š}wž)[x¶tRrQ 3ÃýD¡©ŸË$ò¥{m+¬Ÿ$MuÆåô&1ÝÔ|cüIæÍp(¥àT¹2(dL#³MÒ'e³ÅÂiðß§b5Fdü¯êñ?ÿÝÎ7þ©ãÿȰ¬ÁâaüûMYÍ¿î«d6ÿxùæéþÏyßn:Õ²*bYy/qÿkÆõ÷TrqâãvþIùûöOWÿú7Žÿ~ÿBøaþÌ<Gý/4ãö?ÐõοeŸúO×®È_k&QÿMíh-ÿâ0ÿSc1°ºõ^ÆýoE¿?ßñwøç€ßÑO;ú8.ÿ?G
+ÞS ¢¿¯Ûߣ ÛNoñjŸ,~ ôøó@÷ÿÐÿ·óùæÔAÈMù¥çd1Åÿžþ+*¹Æÿùì[ê_Ú?]ýËZÿÈ÷7£ß^Ìèÿ@vªß+GS¿ÔT¬Ô«)Çlê`íTR
+{ËYÑu*KNIÆf§Çtüýz=Þþ€çÂöÇ2¿
+Opž=ü*·þ·K·ÿpü_ÈŽ?láW_Ùÿýšä°ÿßÈÕÿèÈ>dµºt· gÛÿóAÿÇêçr0áÈŸr~¯³©~o`abëïŒàe }Ÿ9ÞuøläOù®Ñ9P
tæç>vG'ó§Öþ¿pæ¿°xp×GÁlÁõí(îÿ³#þ÷F583*þÿc|ôù/Tý\N8Ê~
+ÞÆþœNwtÜf&AÜ6Yðì[éqÆ1B¶Å£x÷ýK
ó'¿ÿp£»œ»3Z8ÓÖÅA0*'ØNÞ)?üŽwœ_«³q°»3|ö ŸòÏâj¿ô³ÅÈdê?µÃÏy±~*5|Ñ׿GÿÖKàËKàÝœÂõyc°eéKà-S`2ËDXʱ.l1³°Û»;~1ÈŠ67±^gĀ̢Lwýÿ3qDÿ§ÜÂV°ãTí ÆØÆŸ-ÀáÿßShoÀñ ?ðŠúpÉÚ$6ל)¢a*ÆÜüæ£í»Î|ް^=ýqKæÑÛìÏêÏÝÎAÏû¶¶vÔ~iÿ³Ž}$AÂL0fc|øùÐþé®ÿûâ(þ«œÓõOã¶i[*E¶ÒBæ?ýÒøÿ¡8RûÇLùBmq˶)·UæŸ9?ôÿÊ«SìÇzýW?þÒ1ܰznž<ò^'OÍÏkåfa\/ÞSFÚØDøq×ÿAÄý¯?ÿLýç&ÒçPβm°%iäbð Ú(žÛå[T鮟ÀÓÿÿëÿŸ:èõoY8ûÿOãbúc]ÿ®#úì÷ÿ?^ÿ;°þðÕÁV?®úyM/Y·r®'®Ç`.ôJžžILØÄ²blx?üä5ðÁÑ_,ot÷·ï<Ô»[ÆÁÞÆolïÜÓï[Ãï·O_»ZÛÝéÞ?žŒ|mm-mG»ïékæuÆ9T|/È:³Ð{ÁÝâurfg`öžn Ï¥µ«W¯W²/|±¶¶»oas÷nçÚ¥
îîÞöÆÂ^g_évv6;ŸÞ"µ*Ï嬲¿ûpo #a}¿,Ôž
mË$Ø*^7NÂ6ãú¹
+&åBÙ·01¢äls}·ljdQİ}R¶õ*[pL9bTµN¥üIYºwZÜ"Sn³2.tsã&ÂXU»eaç'e[77ÎçsRsAï]7 £AGvìMkgΡûº¡úNPZ¢»dÿïñ9G2ÏÏ35S<çøL#9É€= fg¹\ÛŸ·ŒÒÓªþ3WÖ®êêiA¹³·±ß}žßÑ/ýýí6ôŠ
+/ÂT"D°'kªëŒÛiºïDçã³8î9] ë1É·kkkÙCbrÞzìõŸ)ëÁQ~oL!uL×o9ä0Ã@þ8
ÿgïÚb$¹ÎòìÍqÖkD«
+'±Š×3ãsN«íu¶wŠw¶í¹¥»Çöf0Îd¶wvÐÜèéµ³$"xx$^ñoð(HH) OHüÿ©ŸTõTõeº§{7üœ=ÝU§êÔÿÏ¥Îysp9ŸîÇ{Yn÷}1·o=Ó%§KN.9Ý8ÝÙhõ蜯{ÙøÇÔJ Zx~j$ãÿVCàÅøÐIÎIÉøèæøÿÙÄøÿ¿~¯ñÿó<mÀßê=CLèUFôQ&ì£ì£ê£î£é£í£ë£gýâXhzÁd|Ðäj3Pá'žÍ@FFF32?Z3Šhry0ò`£îEñð°&gÐä
+äÈ)S ÿ0NH3ÈéÓ%§KNwN÷añ'§ucÂÃLÅÆÿK'ÿOžÂåAc
+8ZpðO!®5ÿÏLøõÿèÅ¿YD÷÷õLÀáÿþ»Ï}óÔ%!ÓBùéªX®"Ã1N_¹ÆµÀ ]X ÞJ#iðîÅ
+!Q²
f©ZT7F`8ÄOfžQâÎRµšn/qÌQ!IsŠ:¡ÇÆt7RJ7X/ä$ITé_GݯþŸ€÷téŠKÉîé:÷Yò#äGÈ®Q_Ì4ÊÚ»þÉè<iYrVç Ù1Ù1ÙñdÇ'kgoî5ª¬¿ÅFÐ#jcŒM*.×Ú9%U¡Joùé×z·¿TZûëÏÆÙ×Ö|(k*RlþQ«=Ú(&<H1ÚäGÈ¡6"Ù1Ù1Ùñ€Ûý÷ã¹ØÂhðÑ©Ñô?9Æ=Bž8Ñ âcºÙÿt.ÑÿôH_¯ÿÛÐiýOÿÜ»ÿéá~þc]_KÎ@]URjúp€ŠÔUE~üùêª";&;&;xWÕ€Þ`ù£SmÙ@ @ gá_ÿtÉ
+ŒÙµá;ÇNwü¿4sªôÏ`íS¥ÿýY+¹*ýÏKvêôÿtéÏÏÉÇ@ @ @ ñÇ?_âÈâb×!ËÂ/ÝMþÊqå_ïm5·J0y|ÑIŒû{êÕ£zpØEõ/š×ªõ»µý=ç_G[¬ŒY¿_Ï¿žùÆ&~M}ŠÆ£$ßWKÿ<ÄñÏs'Š_H&]èw0²,ÔKÆãøòVþ³ úÒ7·«øõàÖÁÝÏíV¥ýÛÁ36Ç»Ø8øß·UåXèbcÓxíåi86»Œ W?8==ûÒåéišc¶Âr¹c9ÄsGÄÜÑ®ð÷Gúw}@þa_sB»Ð9¡Ú€¬yÚÁþ€Ö=QWªŸQUüñ§q~ù¿ÏxþÄúZitþI§7\*ZcxKÿ.ôŽ¿¿l(Xý i(ØíÚ4NOî×gûðT=¬äŸp]" Š;Þ¶°ø6~=²Xøé+[µ¹íjÝßàÖÝ-,\Ú¬W§skxìò
+~ys÷nuz«6s¿{FàC_ºÔªGwwësGÍó÷k3xO`ç.¶èY{)~ÿëSñ4ù|ÚëoüKm(ùKnB!6#8ž^ççZK²èJ|kçv0íE\¹ìßÝÝÍ
+r¯GoîÔ·î4Ê ·Šs¹ÅºµyT
+سÍò¡Wt·£të°Ãaü°hñÃŒuXÅ3
ÇoUooŽN0Ô$ïœ+p`sw¡
+õ-¡ŠOèŒÉšåÿÚPñWr+÷»¹)fxš@®Œ#LÏøód3$ä<ÍsÁ3hä'-W7÷_©îlß©'8Èûä`ûò4ù¿õì°ôο*ž3ÊZ¥Ûô÷.¬Õv¶:2Ó'
þÊÒÿÃg;í ø'¥Æ?ûNß× zç7]êiþäõ³œþøìÿÏÐþÏXþssÊsëe¡ŽR§Zø¯'óPi¥¡\¶Ô1 Mæ Ó³u6;Iè3/å.û<t÷`ÛÞîo×ï<÷öiPE²uÎuùßßÊþÀÙZííO[§ÁútškÙß»zòÿ?ºÅá¢pJNÁéÍ
)8Uìh;*ëØÑ.Aù£òÉíOË¿¿æZ
+Üó)ë Ô6Ôaÿòÿïlùã&h at T>E KWÆSõ¥ebpX ¢»".Jþ×ô¿B[Éœÿ!Ç=\~¥Éÿ
.òîbF@vÙûQ$/ÿolwæðü¡tBbþZH5ÐRádú÷ó}Ôóÿã*®G²œ³ÌQ.4êÑau«ÀïºdñX¹º[
áúœYW.Ç®j>w'ÿÿbm(ÿ£Ÿkíeø1¹b*£ù÷§š{õGp¯ÚlðîØ,W±|{ÁÏâÞáîUŸ¥Œe7üaÌçööà+Ï£¿0³üÙä
+]âCA¶ŸØ÷0ö]ŸöZ.©s©_ªlÖÀ®onÕj iŒÐUÑee hߣÉÓIø/ÓþsJ
+øö Žú%xP@"ŽàîžÌýÊÿWêCØ?ŽúP¢ÿÕÚ2«Mh4¶\®ÿ÷öóIVÁtxãž+H(^ÔDhÓ>ýKðwÌÓZŠžf\0,àaz÷ßtÜÿõ¢þßZ ãN\e#§ º~ÿxÁ®ðà©§äÁçE;³ív©H¹4ìïÒ0åR¿Ô_Ùþ9Z¹nÿ_ÒþCH6ýúmÂ0Ÿ:h$¶ JL@xjºâ×wŠ0)kü=+òßÄ¿@?3WæK
|¥ÌççoJþÚR!X[¿¶T[,äKÓÐÊÊêZ1_\^ÎæoÀA¡T.XY+ëKK3í"/JåâêJpžX\©€ª[À*ñ#:³_.K«+ûGGׯ¯*ë+ÅÊñsåJ~e!_Z(óšðz~Ÿ²Z
+VáÁ÷\Ëà®B)ýæó«åJ²üj¹\_/çÖ B,/Vr1×3ÿxòùRÿ þ_ž×
ÿk«këKŸ Ja±°ºXʯÝ(ÎCÍÇή-K«ëkPY¥qAiõÊF'J|Œ>9X.äW^)oTR®Z+çÓ¬òK@èR!šÈ|åZq5³æRaŽº°>2(|zÝË"åFË«+ùµk
Ê+
¿ªT/W
+þŸ
Âb¡uO8Q¬à PßJ©xmoûºgÿñ{g_(.Vï_N#1ýra9¿R)Îp šRŸkéL>Ø[Î<[.äË«+Ùççók(ëkÅ¥båf¶Añ9³Kä×Ö+ø0^Ñxú,Ùd_.®å3ä}M u©(UF fQ,Ná±2T%Ëu¡€ã©O_^+Ì¡4ÃÅpaä¢âç/æÆ²ÿÂoâü³óqÿ¿¿]ü¹PYœþr¡\.,'VÖ¯J'Iz³ëÅWLËh=~ÄY¬ W^uÜiü4ÞºT(WEçL]!EðQýk
©Ùÿ¿œr>ÿ>|<mÐ#ò0¶/Ý^*Ü 4
+h?7üÿuñrÊA ÿé¿Ú¢ÿÅýÅ
«M²çÁÛWJyÐ×ýñ×CŶ siôõÿ6|Œ·]ÿr_õ0V;-óneºý;w¬þ«¿ô¥UÿBô«,úQÿsÙõëOäÿG ÿ3õ£nþ§ÓâÍ ú0$€î§º?מ"鯿ŸVèÿ?Žøù_Î/Aé|òA[RŽÐ<úôza:Nk.Æÿÿ
+:믣þœÝÒ¿¹îþ§©Mß3hý×Ñž¡ ÿ*6ÈZô¯4èèèa<5 Ò;éÿ§`ªÃþÞLÚß÷ºØdÖkèÙ&høë¥ã²÷..õ²¹ Øß÷cÕŽt$ôïóšWûŽ¿$ö£üŠ:ôï^RÿŸÓEÿæKKÔ=iõ
Bp}i5ßè\ÀBÇæWÚýYª7ý{çÓ¿ûšíüãrWýópRÝCù(êп/$Û?ïï¢Ë
J±0ÉHìmõ#F)=z%
+öifI¬Š#AþœÿÓ¿/ÂÇãmÿ7ÓUÿpr
+|gurd· ÿËHÛþ®ôÿëã<A¥Éõ€ÿÝHÿÙxý¿ôÿ_îiQï€r«¯c7Òt£K6yª\ðªôós§mßÏWÔ©HðEÿx;ÿ~µ/ùÛcòïJçÑÜÁÿ¯>üOØß¯ÂÇOµóÿ¥Ÿøïzò?rÇùÿ`ªCþo%íïïºØ_~ŸR{^_O ]ÝBÄX7_Fëu#huÈ?pòÿ5;þ°®ñ'&Å ¬LuÈÿ«IùßîÇ|n¶7ųì|Ròÿ÷Nþ¿òoÇß«ýõÿuäÄTð[®;ÿ'Õm þÝ~6\÷%Û«µæÜCeCÍpîYÈðœkï^+©Ò'_>{¿ÏîíÝi>9mosgw·8öèõÝÍú{mötôï¯óôw_²=A¿4ùwoMh\[*ø/üw·æ^6ÿÔºÿÓñ_Îó/dŸ6;júËý@ @ @ a4ÀÐ7Špq©îÞOÚ
+Ž~Ŭ3®wÓuœý×NÊ^;~vàçê²óIñ î¹>øìàMe.6Üä?ÎmDKßx2Ú¬þ£¿žùÆæÜîæþö\¹^ÛÙßÞÃ=Öx/öÂÇÙ
+üù¡åÍÃC(õæ
+ÄÑÚ]¯BÕ~vãÉøúœžš/¶SǥǢڿ³±qPÛÛ:žUÝœ[ßÙ«ãœsÕ\¯îoUç*#~×w&{Ôwmx>úïÏoâ*©ÛÙm¬Ùô.Dú?[
*Z×Ïóê|mŒêX$ºeuÎi¡üVÐkaB©yªÜL0ʵõÛhÁ€QÂJÎÁ§Ø1UnPzP/6ŽÊY®k\u£ßÒ23'Ýžêö7 ŽàáÊ:¡ÇÆtç©R+ÅÖ9Z+m×Þ^&³é6xI
ôfBZï5Oü0Æx%ÀûCšÌªÓ²žp»ÐGZ°:ÔÞ1Ýð[¿·±¡æXaÖÎÉ¿(£ ñXèJzcÌæÀ³ÌhºæÒÊ"9Ú¿O>Rëõw9ZJHèõǬž·×Zð»Ãæà=¹µÒ'¬¬d]·Vàý@×OvÙxjðE3Ñ<GÊ^|kKàVYËÔêvÙrš5izè4Ðßdô©à;?A© ýÂ*ÁE?!¥0X¡õÕo.hfÑ5<8õ\Cqß2hI:!j¯[a+ dÇùº5÷æè ÉÉÀ¥kjÙXT·o©B^á Ô2òqäÀQíÆçÀi+ÀN€Ú!û÷û0ª!Fq\;â®>®ºQÝ0ùÑ
+àøÆDõ±å¡!z`(A §N@Žc û1åØÜö¡XàXèÜój8/7AÓH¿L+1Ç€z @Nùå÷A¬m ŽF=5'Iõ²]ÃéäOšÃ@ @ <ŽÀõ·öàß%¿àj÷öOµŸzûåêÑQu·ÙR\(аCÐ*#
+5vH9hi§¿ï{ªõÛoøû`¯áÖ{ï]ŸÌö~=í VoµÍ$vœãc9Å:«ušyï^îÀÊœÃfwÜ uë
+霡˞1CöÿŸØ¢@ @ @ @ !ëßÁ¿wõ~±š\¯mÖ«Û÷ãâB&æósø!
+>ÃÖØÿÙÄØÿ£Gþú£úO};:?;â9ÿçªãg7@ @ @ @ §ÿsª1þß}1ÐJmç0ñ^ŒbÖDËPJ«áʯ¡PN€Ox€^÷Ãÿùÿ?{çê>è¿ÌNfüÿÿ@ @ @ á'8þþ=Ú{ýùêînkJÁX»I»¯2Ü¢q8Ùú?ú¿ŽŽ)íZ:usêÎÕW};o<*ûÀNÍ{üÿ¿ªô/F?>ÃiFPé<íÍãÀqþ¿9Fÿ`òÑvBêPi+YÈT{çß,êmBþ?§~Üôß;Fÿü@ô+û"@ÿÃP[ŠZìÍžø8ÆLÿ)ÿh«BZn¹vÖ9!îEŸIÈÿc òÇLÿ7Ñ~ã· fLp°|azº?þIòÇLÿï)ÿh;U%E2šÑÂ3ÈÞO'äÿáIÊÿ÷¥ÁÛŸ5ÄY«{¿N(À'Iÿ×€ßân®n¢nUÈBÓÓÿ«üß?IúÿpHúýæ¯RIÊ3gwÜ¥Óÿ8ÐqèçÌ+ÀWøÄýÿ÷£HFýWBÐáÊNqAÿ¥ýQþ×$?ÿþÿ9Ç
+gL_
+"\7Ðd@\þôoÌôÿçòÿ1JZËeOùÛüùßžéÿá°ôcüÀoÑ`ùÖì)~0Iú/
+©ÿ!÷í?Çîç!°õbI(@2/ýÿ3,ýžº`eÊ:&zÓW'&Hÿqû~ßþð(VJ©,¿èÚѯòÿðéÿîö/œýKŸOñÐ9Qoòãâhþ÷Í!éW(ç¬1BYé°CH^ô«ø'ÿ×ÿÚ`îP€/T~Hf²Ä¥ªþœÝ ÿ€ÿ#CÊ_cþëp'áîØÈÊ/µåMú'ÿœ0€ÿ3ã4Òq2éÆ@Øqdþ'¿Aù Ìq!4h¿îÖýåbýMò'ÿÍI¿õù€ßÂS)c$·]Ã_»û¯I0IúͰô£üá§§HÊP=íß$ä?Ñþ¿ãôfÿÎ÷ÿêÐVKȺæíÀ&&ÿ?d~ÿBŠäO2+y·Pëÿk?Ñþ¿!ã_Ž'ŽvÆ
pcÍÛ÷:þžø'ÿ=5þîû¿üÕÖJá%:Ð*¡ÉpŒô?3$ýBzÿbGíLóŸdfÅ:S
+$2ÀñÒÿÒ°ôã3pg4
,$PÙíÿý>lLÇKÿ[Ãåÿ"ôýß,T¡äØ÷©AzS~"û;ýÒÿEíi
Â}îÒÙþ¿ÁÿDó¿œ!õ_¡ÿgV8鬿²àAvžÅžÔÿÝ!åïÛ¿¡âàþáÍNäü'ÿmI¿ÿ5Î@À¬²§dÇÿýqñ?ñíÝ}¬dg]ð»ÛèJ#ÒCPòŒ¿øBï3wœ/Û¹sÚ4µ^º+íné¡¢P_*ŽRk$VhÔ4¥1%õ%ÆháÅh*Aþ3¯Ï=3gvî9sOÙ|?íÞ¹³3ó}óòçyæ<uæ¿«äöÝûCI§œðÒ
! IÀ
+ÀD@ýe·ê>£ö¿Vô#=ºp÷7Qý×Úþ»¹dýgo at G'©áëš È/2,Õí¿*Yÿ>lÿZ{éô6ÖªyÿAóoÒØ]æ¯sü÷Érù%çK{?5ýtû¢àüñÿaþAóo¿Öþ¿§Ëµÿ$gY~iŽtTtt ñ§k?îý;êü¿S²þ³ñoãµôN«fJÌïÿê¿Ööß'ËæÁ¡âÔö·áxþøÏ8ÿôК3~þÓRÇjôö1ÚHÍœS1V0ÿaX6ÚêÿýxÉúaÿwJz|Xý|áÀFõ_kûïñ²ùCý;!èÌïèÀçóšúkíÿ+»ÿ«¬ý«éð¯Ã[::
+ÚKÈ?]ÿµ¶ÿÊÿ³ño¥ÂŽÇè(ÈÃTÀEùuTÿµÿ>V26ÿÛÓ¿æR ãé
+pþ°æÓÝ ÎößËæõO
+úDÔvaùG[pøçSÝ£øµ¶ÿþ»d~œóZè0Z*'.ùTà(ÿ+ëÌÿ%Ïÿ6ô +§ä-§Â:ùTàšâàÑæÿzÙüá3(&äÔÐaú·ö7mó+ßɬÿÚþt)Jþ(êäS£üu¶ÿJÎÿ.ÿåyhö{z<Ì/hÿó©þ¿QüZÛ_)yýë³ï
gãâšö4ÿ8ÿs%ëßgó¿43®6ÔX\Óõ_kûï«åöõÿpÚíñtàÙapáñOG[@ýÏÌõÿH®€³¿>wý;hNu>3,Ç_Y6vý¯éôϬåNpCoTxþtâ×9þÛ)?ÿWtÖ§S_6ÞEôó©ÀQþ:çÿåç?.uüSÙø¿ò)íxméd°(Ÿª¿Öþ¿ó¿Ôàûï~Šë/»âã߀pTëÿ5%ó«ìø§÷VQ+0þÐ6°(¿6:ÛŠäöÍÿÕ>ô|0átØ
+æ¿ãOWí¿²Çæ¿'ÃŒ?AûŸQaø¢0Qý×9þûc%ëß
ë_Ï© %ÎÈÂËIÿß(~í¿W¬ÿìúGð¥/©Â×aãÀ £ú¯³ý×(SÿÜÛlü?,zÂD
+`Œ£K¢ù_±Sýó×Ùÿÿþërù³ño©§¥,BÁüo;éÿǯµÿ/ÿýÇ¥ò»lþ³ÒJºµÒß·þ¿qþZûÿJõQ~ÝÿZ~aö3³Ó3 à¢
+ Îþ¿ÿ)?kÿéÏÚifÔàp_³þ¿qþFù_T26þÇé
ï@3Añé:°`Œôÿó×Ùþ{qÉý_
+æ?I-0ý
ëÀÅñ§«¿Öö_þþWËå×ÙüfÃ_ýÁº¢ûØIà8ã¿¥óû¬ýçè=²éðwÕí¿oÌÐÕŠË~ë³E÷²î¿qþZÇÿ·äñ/»ÿMžó
+œy4Ù@QpÒÿ·ñ̰jìÿ+Õÿîwú?€gÞÁJeŸþf'ÝãôQûïšóÿ`ñî=í0û3Bm £Ÿþf'œãøqóïšóÿg¹ú÷ùáBPJŠþzcÖ¿ê¿Öûÿ]]2vÿÇ©ÙMÿ£ËÍ¿ãî¿qþFù¯(?»þ×ÁJ8%Ux°ðü?îþçÿ:ó_[2ÖÿŠœpAá-ZëÂæïžÿoÿûëÌÿͲùCû.yžÎp<W|ý?îþçÿÞ:ó¿ªÜùßgßÿ¢«~MÂ>ô}qÃUapÜ8.žxŽùeÉúÏ>Cx{Ï"Žÿç}ýu_Gõ_kû¯Ôý/(ÿpþætíK{×ÀsÎ×d÷?ºÿßÚ°êìÿûùù³ûj§šáKçÀÐfæõŸtpÿQüZûÿòßÿ]nÿwáøÏEžrøF{v 0]ÿuÿ>P²þ³ûXFœ§ÏÁPí?7uÿ¿QüZÇß]²þ³þoNoDeÀ97VSþK(éúoÔXÿÊæÏîÿ@'=&
¢×VBûyÀI~muöÿœœäý¿³ùOoBÛÿ jú¢7éç¯óþ/%ïÿÀ²û¿2IU¯ýeÁða~Õã¿·Œÿ/ý?,ôzÓ9IbááßDÕ_kÿßnÉú¡ý«€ÚR+H'
YŒýëšþëÿÍ×ÿùÃñy©ãÌÐf at m!1çøñ
+°
+ÀõaÔØÿ÷{ûkp9 ãïX¶Ç?·öé?w«ýïiÂà¯3Âø©ÀG ßqáâ
ä¶{Ï¿íüœûáçcìúë¹nìß:~Cí€L¹`^KIp×=tÙõO_&Âpa9¬l\6Ÿ"ÊâÞý{îœóÙO?·Ã(s²esnÂ=×àÆÑ;ÓÿÊÜÿ.aüû]á¿adxûÆ¿w÷oœçâ
î
7_;#²yÖÄ
`ê°·oŸxaüjé,©n'VZX.W5þýàþä/ßåWL»ÙHYmµös¹¢üŸÐòs)ÂËWÞÑ̯(ÿÇ"ÿÛ¿\g·¶Þçœ4Þ8§ùªò*ç0ùužlv/<&fôvBsgòbéð&[SÜ1úô\%fú2+ÊÿqÌËMÿ{pm8þWÁX]UËÁøßïÈ?o²ÂÒËÈ,¿÷\pë<=tG¯*ÿ·IýÿP.5.éÂ~Ä=äJzé'VÿG^ùçl«Ïm©üó&«,_ÿ"ÜED£
+ÅõN
¥UÌä¿þ
¿¶ú]ãߌÉ:Kÿ
vÙ2º^gë{íÄQäßXUþJªõùoÀüž\þ÷ÊÐþPÖ#ý:ʶÕK~Úh%Si»ÑOiãÌ^s³Ûz]¿×=Ó¿éLzËÙtw7ÝœîDL~nMzSIï:¡õÉÆöN¿±œ·¹ùÚìY£>û9'NEÿÿ^zåtþG¢üÇî,ÈßéîJ{7õÒîÎö yçL7é¶c§M{»ôÍîFw»?ë÷m÷~³l¥ÍíáëÝênǺýœvÚèlî$ýáãÉf?NÏOú3>ãáVº¹¹noôOÍ|±©_Ï|Í3îfºÿТOýâÄÉ[ï=ñš
qW `êÛlx±S8ŸŸõŸø¥3>l6ÆiÚnðÜHíý`®ÊÓõÿh\ÿ§ê¿îîmö€âo=Hÿ,ÝH{
DBûÖnÉ~9ý¢ß¶»[
¿ÿzFœ
+°n%Ûýnkþ3èÃ&qíΚÿ7ÿcqù¿Š üÏìÙœGogïÌTœrTœôLo§œ×
+¢=u>ÜðÉÉFüsØñ²]%~ö»ü£3öÁ/&©£'NŠüïo<þ`\þW
}ã±d³ö÷I»M/¹œÛï%¡8GGÈÓmÍ; oÓa\p/]§ÑÙé¥ÝíÆéôŠëF/t±öÒímqÞäºa
J€M uºÒò¿-ÿCqþ_ªæÅvÖTíé0íbÓÖúÆþ©Y¡Ó÷²×Í
^Uþwçò8ÎÿáÂü·LþzóÎöüÀ'Še;I3m)ÁmGü³%<+Jòÿy.ÿGâüï?òn)ÌKgvÊw\Koò.rÅù¹üóÿâü»i§3Ø÷wçAbFz¡l"Jy Ê{ýYEÏ]eþrù+Îÿè¬üýðN7míl÷Ou·;;sAºTÓ°É02ñ6*ÑËÌ*Ñïr©+Îÿù\þßó?0³þ7SzóÝþMóûF
+hj¯âÃþFôf
ç¯6?Ïå"Îÿðü[i¿K4ÙÝÙ.¬~Áe+õ¬(gèÂEG¥0xYå0øM~?XAþ;rù7ÎÿþùÓåè·ÓÝV8GÍåt]ƵsCvw»ô²Ãâ\¶$*Éÿ¥\þÅù?Z|þ~ûâ3|Ó%MéŽÑ¬9ç8û 8úmŸ-T6ÿOæòbqûï@»{nækIÖÔ¢ÚÌæ<ÿ÷+mÿµm
+8ðI[Ýtæ?üUQû¯ÒüÿËÿËlÿp¢ú6OœkqKeDwk«»ÑË^jÔô]ªY\:ÿµ¹üçÿµ²íÍÚ*Õå\8Í;Õ¶àlX:ÿæò?çâÎÅmá5RahkI'C;ã$8y©ù'Ésò
røüœ\þ§âü©ôú§â£ùü¿ËÿôRù{i«·×íÂhµkð5&[B^ä¯*Ès.ÿÇùß>3¯?ÿx§Œs;挵qÎpÝ8+\x<îhò1ÿOâü?7wÿßèëŽt[Ú€|Ûõù¿3ÿSqþ_ìøWŸ/`ù?Ëÿ§qþ_/×þ¡ãdŒå¢ÐÛI¯l¶Ó€*|æC÷Ïÿ\þ?[|ý³D~a×luï&çìC5{ªË2ÿ3«èÿš®÷·âü/Ëåvóßí_ÚºJ¶~Ëç¹üçÿͪòs¯òmåOË@ùüÝ\þ¿ó ¢ñj/*ËÿÔ(ÿCkÃïÿ*X=»Ï=ûwôï¿kô-@ÍÂ(Œw`t±#<gFÆ#«
/Ö¿ûü]ÑKiæìàÅÔÌ
+ižÚåÿ
ÆÀå!ÿ?Bÿi²?]8dß¡ö·ûäÛÕÌÉ=Ë?×\y.¬"Lxóð
+®~ËÚÚ±kÿxvKíý;/^áÜ3¯<ãÜ3/þe}ãá_Þ0|äçü%ŒÈÚõÿï5VY°G(ÿ?Fÿ?Ö·ÇÿÏ\ŒëŸ;²[«oÜ}ñŸ»3
+·×KXsæu.¬c®RŠOÈî¯pnôÞ¹~ñí&gôI€1»lQziã{î¬3jöøÿ§å7á]éýSV§8gÊ»ÙùMÒÞðõ:ó-ë°ù³;7Pt&tÚ;Ë€³ã]?¢êÿê
+ó¥ÐiÓ×N2ËæÌ+?;ÿSù_RkþñýËoÿ6ÛÿFjí-×Î3gû¿rª^Vçöÿê
+ëßgË(¥ÖÜZÚÅ?Å¿êÜú³ïÆùÑÄÿ©Jòs-8ã2«z at 0úÞ)ÁçTÿTÚþãï»G>·> ¶~ÝáóÓ1»Á¢/Êr/µSg·ÿsÕå×&Ü6¶}Ú8sÓÿo|Ï7Þúå÷õDZϿöóµºügë«x©£C aÎÿ7|óïîûä±zï8ö¹uvù_Q]~êßha6FIjÿÐ)aÿ(ÿŠöÿï~ÃÖÛŒóü¹u3Êÿú#Ìÿ]æû¿¡÷ãŽ8ÇcÆ,>þœäùÏÜþÏ·ýò¹u5Êo0ÿ÷åòæü7ØþmÖþñÒ'€Ê
+ãõìžrª®üìù§¿ö¯?·.F VQ³ó¿#çÐùû2!Œ¥¿aZOÀÇŽ&°öÏýè_^uãxÇDåÏÿÎÆÀå-Zÿ௫\ÿ¶ü2H+îÿ»³q0ÿgãüÍZÿ!ém€ýáR}óKâkVµàJòoçòÿMÿ=åÖ5R·]»/ztšµ>Vÿ\þ¿ó¿·\þj|«>ÿݹüç€ÜúGF·Ûoºë÷Ò³a¥6Êóÿt.ÿ?Äù?TÉú·¶ÙÑŒÕwée$gŠ~+òßËÿùÅë-wü[ݺäÿ\þçV»þ¯®-[rþ`KW:ÿs¹ü_ó?Xnÿ§Ï møø×ë¶\ômUùó뿱Òõß:ʧñÂg[aý;:yd«'²§äbW?¿þ÷¿ÄùÏ&ÿä[Xco»{ã^z ô%ÿ¹üÿºÌúgK¯Zm{ |þOçòÿÛ%¬<\ÿoþÁ.qDZYýi¯êü?Ëÿ¥8ÿÃåöÿ€ÉPäÀÉ/Ù~#ýtª¿ÔApù¿Ëÿ8ÿ«Zÿ¯Ú-¿ªüçòÿûâößrífSÄŠñN0xNÒêÓ¹ª(ÿÏ4ÖàÛÆÿPKš]7Q¹·Ú"0
+9isis-database-3_cvs/regions/DemoRegion/data/data.index.dbUT ;$YG=$YGUxèèìÝ_h^ç}ÀñGrìÆ%ÈfâÖ8mèÚP{Ïÿ?¡tíØ²;^lBÈÒR7yÕy#ÉКl+d+£:c±Á£¬0(¬v7v±(a)xn--5cacx6b.xn--6ca œØ`{~G:vÄÙ¯ôä[ý~lœ²
+þ=d¿éý÷Œ'N·ÇõÉð+§8qüã'îñ{¥ÔL}ûÅù_Ô·_žžùþÑ÷ê/æVN..¬L~sR߯.®.,®Ÿyr²Ž¶ž¶8Y=yeùæ××>mL>£MÎþÓúdöɲ×&YÍÏòu
òþgëíúvJœ°ã¢W'7&¯¯-þÖâÚÛ[«úXóº®jO:%Sÿ<
z[§LÒÝD§}Ð:eÅ€X§~d ÞÅìMz..éÐíÒ*;:öÖ$ûþ?§îÿºïÿGîôÿ®ÖÞqÑóë+}Š>E€©'¶&fãBý¡¶N%8sÿ£²ÚuÅ¿çä¬çm>šâßbýx@ü÷ØZþÿôÿu5tÿ_éûÿSÛÿßlQµuBAËçv1°þÕM®CpÑgcL19åèéÿÀHŸ=öÖ€ÿBúÿºÿÿ ïÿØÞÿÏížèóoÝúàw/þcÖ9&bð©¹ÀéÇÝœòÖÁDmlýb02®kÿçï\Õ×]¡@ÇŽÕ)ycLô`L{@kÒÿÍ×÷3jèþÿÓŸÿëú¿là{/úòduurãÚÛ7'[-Wþ+ë'm}°Åèb]7Ñÿ|±7Ž&ìžôÿ95tÿ/}ÿ?ÞõAÿ0Ù±7Ž&ýÿSÒÿ×ÕÐýÿ}ÿÿT×ÿ%ÇÝE_ܹ°/,,¯¬¬ŸŸ²xókóENÈÙù`³7Ù¥¯¿'s¯ìrn1%9#@Î)ðÞL±Î$ú?ðÐú±7Ž&ýÿéÿjèþÿ}ÿf{ÿ¿žã¢W'k/.l^`µOôÆ$ýçl
+.Jg/:Éößk<þìïœ 5éÿWjvF
+ÝÿUßÿ?³œÿÝqÑKún¥¿\vÖÝ-è¢Äöm,>DµUþ§lAb}1.È
ÿ+F>ú?°Ï±7Ž&Ùÿ³Òÿ¯ª¡ûÿµŸÿ¶ëÿëºî}ýÿ«k+××&_ûÒòÒÚ»µ³Î)øÐ]ÿ¿8Ž7^G£ÕI>œÍM1Ëë
+ØlSÐ9DWÕ¹Î=ŽÇ¹§XïrHÞŠTI¡Î=ŒÇ¹¹ÛopÖ|̱Îvuîc{[lµ1%-û¶ÙQñPú5¹¹{üùXœ<Ÿ×ûGwü )ÄšKœwzÿãÏ{[oåJõØcRÉÉZ[ç>yï×5Ùq®±ÝÙN6hM1±X9pÖÁGdðåݶŸ;P¯bñFËØ£{ü<89^&'µÑrr·¥Î=¶ÇÏíêMŠuÁ%íäüô7ìS·aÆ×ÿ.97Òÿw<XþWnºãÏeÕþ8;Wß¶ŸþúhEöôIåøýãÏÆÞ>zÒÿþÿ]5tÿÿ^ßÿíúÛ¡ŸÓßqÑk+7¯œ}sÒ_š_é>õ%[Ý-çl(¶? áŒCçn<ï±Æóo9Ç¿ñ ùe¹Ù~üy¢ñýçÉÆó4wŽñŒcç=Íñû|ŵyüéûÿz}{WmöÿŠ"?8þ`œ|ô€ÿ^úÿºÿÿcßÿ?ßõ·ÇúþîŸîìoµÞ%'rÖëo|wß=ʹÿÛ;ÔvÜá¶ãk;îñ¶ãh;îɶãŽwŽížcmÇ=ÝtÜÃëïÇÞÐôÿóJQC÷ÿÃ}ÿ?ÙõyÒÛ)Yôô=]YëÅn.W.¥Dru9ú?ýþOÿßÑ'ÇÞÐd-ýN
+Ýÿ¿Ô÷œœÿÙqÑ37¶Óòr±¹Ë1k׺¥ÿÓÿéÿôÿýëØZþo¥ÿ¯«¡ûÿ·ûþo»þ?[×ý,úüÎiòæäõúþÎ%RÝ«§ŠPRË8¬¶±N»=ýŽll uZH1çäõ[þOÿ§ÿï³þÿÇcohMú¿þ¿¡îÿÿÜ÷ß?ÿVÉ¢_ÚqÑk×WŸ>Yû`·/Á[nSrB@Fë#ýþOÿ§ÿÿ,Ïœ 5éÿq^©GfÔÐýÿŸÿÇíýÿò^Ôw+W'×W.,-,o-ísV»ºtÑÎhëµõ§+þOÿ§ÿÓÿÿœ 5ÉþYúÿºÿ_ëûÞÞÿÏïžèóoݺ»äÖSÿC®K}¶ÚÙàÖú?ýþOÿÿ0ß{@kÒÿþ¿®îÿßëûÿsÛû+öÓÿéÿôúÿ{eì
+Iÿÿôÿ
+5tÿ¿ïÿ_èúÿlýyJ=œã¢¯./M¶ÓÅèäz)Qû]°Éž:êt£Qôú?ý?öÿ7ÆÞÐôÿ/Î+upF
+ÝÿöýÿÛû³Eû³ŠXÿjÌ&wçžè³1Šrôôú?ý¿ôÿÿ{@kýOIÿSC÷ÿ/÷ýÿT×ÿ*5»ÞîùÿßQgî×!Ë(ŽÕɧB(Æt³~{ÚYÆYWgÙbñ%×[]êÜTgý&ÈgÔŠc.ÅÅsrrÃ;S*Q¶²ö¹îQ;KþOÿÿ9ìÿß{@kÒÿOKÿ_WC÷ÿ?íûÿé;Ïÿ¿-^ÞqÑKúnåêäúêòÒ
¥
å¥}ÎÑj©ÛE;£×>Ô®ä:öG2öÅÝ
+õgôZÎp1h]
+&§ä¥ÿÓÿéÿ±±7Ž&ýÿ¬ôÿ
+5tÿÿ·ŸÿœÓÿ»Pö>Býêï¬+º[ÐE³ËÑÆâCìO&jX°!iíÅž`ëÖ+Š~ôú?ý¿õÿ{@kÒÿÏÍ+uhF
+Ýÿéûÿ¹ŸÿmvýÿªÕõÿéÿôúÿ>ìÿ¿1öÖ$ûÏKÿSC÷ÿ
ŸÿÏßéÿªé¢ý S¬5f»Ó
+\ôÙSLN9zú?ýþ¿_úÿëcohMúÿEéÿëjèþÿW}ÿ¿ØõÿJ8%^œÏE¯N®¯./]XZXîOÖÄ$áÞëè/¶Ø\ŽA.ðÎÞfçhtuv}'=ßâœ)>
:»{©v;Û[[Lš«€+.ítÊuô÷8:¥»s¯XJ°:WwýÚãè¢ë¿±vV{.Õ?ôúÿCàÒØZþÿôÿ
+5tÿÿŸÿ¿p·ÿP/7·åæÇ'€R ÿÓÿéÿôÿÆ~}ì
+Iÿ¿<¯ÔÇfÔÐýÿDßÿ/Óÿéÿôúÿ°Ÿ<öÖ$û_þ?§îÿË}ÿ¿²ýúÿÍí£Ë·w1°þÕMá>cÉ)Gß÷ý7«~³ôúÿ>íÿWÆÞÐôÿ€ÿ¯«¡ûÿ÷ûþÿÒîÿOÿ§ÿÓÿéÿ»µ8öÖ€ÿ_þ¿¡îÿ?éûÿµ®ÿ?RvÏÿ?œã¢¯./M¶ÓÅèMWwQû]°Éž:ê\»Q§eÔûåuÈ2J'muò)€1ݬ³ÓÎ2ÎJc·!ÄâK(un¢ÿÓÿéÿ{ñ±7Ž&ýÿåy¥QC÷ÿØ÷ÿ·÷ÿO×ßL÷-m=ðÏÿ§ÿÓÿGðÓ±7Ž&ÙÿéÿWÕÐýÿÝŸÿ¿ÒõÿCJ=ò÷NÏ¿ukûÞÄ eIcrÑ1º Ï>ÖqÝÕÿÏO9Îiä ÷®þ:s49X-iýŠßµ9)§1JŽÅDJIuÜìb\4ÑÛ:.éKNŸ~Œ1»(øóÝËÞt<_?ܶÖÄewßúgœöÅÉ&kœñZëbŽKþOÿÐ<'7Û?¿3õ]šþO6¥î,X\)Á9çmL¡ûÖÔw!}œS¹éëÁÓø ]NÉØ:ï÷ŠçMrÖ§î"ÖÔCY)Ö}ããìb^¶ÁÈ^uªS¬2Ÿ³y®€(ûKÖÊ)E:
Cìæ}wê_ÿ_Šîxœ¯·X·&G 8þpüy°üŸÜtÇËõæ@ýk®ŸÕ¯¿}þ~¶ýáèoŠ¿;Å:ÀË1fcýGr+ãÇ?õñ'ËÍö¯Z!êž¿~\2Iwã\ÖÁÔ¯lý"(îÚi9õž å,fùr*$[|œêMÐA>1åžz8uŸX»ÝÕÃOÊu·õðSDuÜ_Oyð)Á[]oå¬ëzHôõ/gë÷6ZSꌿ~«ß
+ŠîjqIÇäêsÉú}qàøÃñçAsrì
+ÀÏéÿ¯Jÿ_WC÷ÿöýÿÕîñ§Y¥ÎÞû¢ýç'×WúOQw.×ï¶&fãBýQG©{_hÛšì¢NÇÌå-yÜŒ~ÍãO<þÄãOûðñ§÷ÇÞÐôÿ×€ÿoš¡ûÿÿôýÿµ;ýÿZã«ëÜÍ
+|øÅðéÿôúÿ~éÿß{@kÒÿ¿2¯Ôá5tÿÿÕŸÿe{ÿ¿t_YŸu³_9X££é®³_·:;uÊ¡ô'ìfªõ¥Ä.hçBL
+F_èÿôúÿÃÝÿËØZìÿUéÿsjèþ¿Þ÷ÿ¯nïÿí^0{³ü7zWú?ýþ¿úÿçÆÞÐôÿ¯Iÿ_WC÷ÿ÷úþÿµíýª^ol4ÑÛºdÒ!|L%f]ÿ§:Àl@Ákc°þOÿ§ÿï§þÿKcohMúÿÒÿ7ÔÐýÿ`ßÿߨ[ÿÏÞènIWÿ([m)ŠÝöWRì¶µÞ-OüÏ!Òÿéÿôÿ}Õÿ{@kÒÿæúøºÿÏ÷ýa×ÿ7Æ;m4gWå|hr°Úïêëµ/N¶ÉÚEoŒÖZ^ Yú?ýþ¿úÿ¿œ 5ÉþoJÿSC÷ÿwûþÿæÿos,&c.h.²Ûçÿ'gœ³ÁM)Ö}Lÿ§ÿÓÿ÷Oÿ?5öü_{÷jÙuÖq|O°35&Uô
à«úJÐõïY^€6cŽm ±Uoa2CC C!ü¯H ZªšÈL !Tm©EDϳî;й¹ëÌÎ9œïÜäŠ}öº{Î~îZû·÷>`nÿßkùÿ¹iÝùÿ«üÿÞü¿ö?²{4yrëçõï-ºRs²-i%ûTS%žWU«>4éq}®µ\i>BþOþOþ}åÿ/lzÀÜ,ÿ?nùÿÅiÝùÿûùÿñk¹ÿß'ÅÙ&œ¯ÍåÒt©ŠŒž`š\H®bI§DÜÄSÈEÈÿÉÿÉÿ¯§üßozÀÜ,ÿ?qdŸíÀŽîüÿ'ùÿÿëFßsÖ6zûîÑäÖ;îŸsëôéãÛöÅqb){ÄlÉss%ÿÿÿÿCÙô¹YìÒòÿÃÓºóÿO/òÿËùÿîÝþ=xrk'co.ø`àBÐŒËu»
üüüüÿ*ozÀÜ,ÿ?eùÿ¹iÝùÿß.òÿSËùÿ-o³ÑSgsɧíÍ5qµJÍY7GþOþOþOþ¿«Øô¹YþÆòÿÓºóÿï^äÿgvòÿ3FäÿäÿäÿäÿWuëŠÌÍòÿûLÓMŠuçÿw-òÿûóÿÛw&·ÎÜq÷ö^Ä>KÙ«P$fK#ÿ'ÿ'ÿ'ÿ¿/nzÀÜ,öÀòÿÃÓºóÿçùÿüÿàôöó±S<yìÁ[; »žZŒnÒÔjp}s1HäÿäÿäÿäÿW³µés³üÿ¡#Ótó·NëÎÿ?±ÈÿêùÿAýëÛè-»nôÖãÇ/oÎ5ßJëm.Jn5¶š¥^/Õì2(©åþ[ÑzMKœ6\ª:ÑR-ƵšUÅk©KVêÖ¡RÞFŒ×œX+¢ßŽÖëãµýÙàTq9µVK Ekœ1^+ÚèSKuAK¹b»@þOþ¿/üœ,÷7Çôd6²î'®T-õwã¥ÄY+sEKž`G«]ࣥŸ°B)»æši3nv!]"çÿ0^ªX© o€ØECÚвúÇñQíÒ¥ä³ÖtÚµGDmXÿ4>¬f}&6Wu·Õ¬I[ýþ³_|Á^zÿ9ª/ŠéŠsúõ~=§_¿§_/è×ê×
iööôE+ux€Ts6©5:ïNFôÓJ_îM»QDg7zûà³OÖþgŒVŽyj všgm¥t¬N÷ì:R·êϵë6XŸ}poilµBtÖÉu€ÓÓ"ôúÏ7/ÙËòügŸ®ðåáVÕ|þjzJn9ë|ð_ÆK
>(¯KukoKН¬Pªÿ±Û:3
b²oZKø×ñRÉ~ÀªïŽNñÚŪ_]¡-Ÿtíækš-ë<1èþCÿÙGîµåþ3ç\âßǪŸj²ÇG6$[%kÿ1^*÷³`NŒ:GIÕÎX3ûÏñR}Ec§Ò²hC³I¹áúúøÎªÖŒNC;dz4gµþ{|Xµ· -€³€Vt%WuâEÿ¡ÿìa/ËýgÆõÇÁÿ]¡V?f޹š{\ûXÖ»Æÿ¯e\??âUÛs4Vše}ÑER
+ÚÒªvÅX¬Ö
+mCky;äìd±öW£ÎŸ}Ë
+Ë5ký)Ö(E;Ý|tÑè?ûÂ=ö²Ôf=gññc3ZÏH5ä]64[ÌÝb¥>8Vª·»·ä¢hÒPj±+ÙžlÒ£äj·ÑJ¶ñCã»KzŠ?¢Î¢ªÎšRÚžµÖñae«¥?.4}nU[uÒÿFÿ¡ÿì_±åùÏLç9µÒN}£G€%CÞ%5£+j}QšGxµs#Å¢';ÈbŒTϬªu1oÉUO¬¬÷|dŒT³Ÿq΀ŒÓÅov§ýÁcÃ¥|E RlV§BñBÿ¡ÿì'¿b/ËýçÎá_èºòêk&Wõ(ןËCëÇúOUýŽq)ºwkõEôÉлV(Uú@¥¶{\ÃFõ±ñ0ú>+k^$7µ1V=ŒµÖϬPËö\²ç~زÐKmÎV?;^«ÏÊt=h!cjÏ&ÑÿJÿ¡ÿìÿl/ËýççÆôÔt»ÎQÄÇRÍŽÔ/; ¶¯ÉÓE\³õX¿8ïîáYïOõ_DÑãÛWú îTîW2ZjÎ6ê{ÇF±³Ïú¶IÍçèR+NßEvöùøø°ôËŽñ7®{k¶ÓÏôúÏ~ñ5{Yî?'ÆÚg^'=Õ¢w»àÚìä
+¥úœ¢yÐ)FK)hú©ñCœõÓ?¥irMŠËÖÏVè×Rëº+§äjò}yÿx)úÕP¥Å~5u-¶êÔRÿÁ÷þb×RçjW»ëüÌFFÿ¡ÿìvûÅ[úÏCãÇA¿¥ÀIvl}=4x
ZÖ5|Ó×¹F±DL'õÈð(Ä~ÞÆEÉÛÙìúMgÇÆö:GÿÌKkÔ.ÿ<:þöt©ÚR«Ù{í¯ZΊxçÇÕ§xÑ®uß/íÔ%] ÿÐö_¶åþóØøaÐßç¥ýîªÔlýJ|üèìM±J-V;¯u¢µÖö3dKš:ê÷Lèwí@r|Xý:=ܫ̥êdÃÙÅZë©ñaõ«DZlNNw[êýçéáR±_`Pì2"í¯vvKë/úÏŸq£œ,÷gçqûªeEwþNº°xèÙñÊoߪ!±U %%q)ØòëWW(e©CÊ©_mË;ÿókÃÝG§<6ÍÈYr»Ä.êç×?3>¬Ø/N±Ijö&;c£¥[¡
+« í°êþòýT=ýþ³üЊ`vî?Óžé¯õëuýú{ýú²~ý~}}nþNýú^ýz¿þïÞ;ïiòÏx͹xq":ßï_o©ï+ÑB²·OJhýÏÿ"è×T$§+V¯
+\ì
+i¶¯>7\+õ0êÑ®æÏþ÷®êÏÛËNÿ¹A{ͧµÇØ7Ìy)ýg¢ÿÐè?oõ7ö²Œþñþ+ê{8ÙU×ÕéÚÍÛUZê·ÇKõËÀÚíRÈMÛµ»ß]¡J»@Öå}Ø«¥~ŒÔåâ»Màúùµ?X¡Øô oÊ&ÚÙ.U ÿÐö
+[Mœ¥ÿÌù¶üÃñZ5öüMôžòvF'ZjÿÂø±^û«y;óÔôûvÝŽu ?ôGýä ªýñ÷Ô^+ýñø Z¿,J\Ö"U³U³R?ûéo/vŸ©é{Ó÷Ýè?ôýâ³ör¥ÿÜ8ç[IkýÙ
+µú¹f{Ê+Å×àsk=jÿóñZ}iô ±Ùê*kW³Ôì/ÛFê×%€V]êmõXŽi©¿Öö-vv6Ž'€Ð/¿0^«?ODŽÖJÒŠm± Mk}~üGì×f}º€wAÎîë×R/«Ø¡F»N+èÊÉ.ÕZ/«Ú4¯y}IÔ9ÖíÒËãÃê¿t)ë\ÉnƱE$úÏÆ<»éŒÙóÿ¶çÿÖýüÿßZ<ÿÿáŸþŒaõgìþ oéßN]Þ`ªvÊ嫲=šêz£%»<òÐZòb€ßîìŸ9»É¬ß]ï<ëOÖ¬?¯·õç÷mzÀÜ,ÿÄòÿsÓºóÿ/-òÿGvòÿ[Þ>¡œmëã;œ€]YÜæÏÕGö¡ÛìÐ.ª1odk£~'Û}ssÿÿÿ_ùÿÍ07ËÿÏZþqZwþÿýüÿlÏÿß3Mú§³ÝÃ-ûÝúøéûNüè»ïÛ¹y¿æÐüfϯÉÙç§Øg©hÙGß²çß²œ3eûbݱJYÑ¿rû]Ìö©è-¯¥€ÈÿÉÿ÷«Þô¹YþÿèizßiÝùÿ=üÿÑåü÷ö®ûNlíαåþ b e¶Ûã£âã"óß=¡]*ôövöÑà%)"Íû^ëüh-¥ðA$·ÔªŸºŠuË"ÝøSðÒ?׌Žkk1·\«øE¢?TªeV©.U£±:ù?ùÿ»0ÿÿÔŠÌÍbÿóÿÖÿ?¿ÈÿÏ÷ü"ÿ'ÿ'ÿ'ÿ_07Ëÿ³üÿÜŽîüÿ«üÿ±ÿë?zm8¡
+RíCè[^ŒnÔIŽÔ+à mb¥rÅ·s.'õÒxjA»oJô)6}éãÏÆcO[óÁÚôûÑÅbOô¿0WµVÈÙ¯Zk¶p\kœ:cK³Õ"ÿ¿òÿ07Á·üÿâŽîüÿùÿã;ùÿÂñœÞÿÿâ|¥öÿïùQ{÷\k8ìù±{ÈÙ÷\kWqìõæ+uaЧ%ÿ_'ùÿMåÿOŠo?0;ÿÿÔ"ÿ¢çÿ¶ÑŒýFïÜ:}zëø±O.ZqÍoÏi/.$ Í»,Y·[ÈÿÉÿÉÿÉÿ¯âý07ýŽüÿðŽîüÿOùÿËùÿm»nôØ©O\JÿÅÕ²§VëAZ ÿ'ÿ'ÿ'ÿ¿7=`nÿ?eùÿ¹iÝùÿ-òÿ§vòÿ³¶ÑÛu£ÒÛ:õàG¶>qe»®æèÓí6'>5t£Á@þOþOþOþÿüôŠÌÍòÿ§-ÿ¿8;ÿ/üÿéÿOäÿäÿäÿäÿëò±MåÿÏŠïø®iÝùÿüÿÿÔöúÃ{Üèm§îûÅ-KÐm[\ë~#ž\}«)øªU_»Šª-N1\CIÞÅ U/]SÕl¡~®-ŠàjtÙ*m±ÛïX¹ªí{B+ÙÇì$DÝZ÷M«{tåºÛÙo5×%€r-ûÆ5íb`Yß#^wo>83ù?ùÿZ³+ýçŸ_¿¶·³u
+ÝY9KÎ)ÆsÑ=ôÞ«{!µXWsÚyôVõúNÔ²¿Š²¹ÚaµUêfÐ7žw©wWÝœlÿ(èBÚÑjq±X·|éÚªÚš?Ÿh«,Ÿ×ÃÓºåË׎Jß³ÖÚµO6ëî-dÛ¯\Û`[o@)é#ŸÝÚ2è?ôeßc/œÿÕtîeó¯§íù×;Ðè?ôúýç²ßÙôðγüÿYËÿ?:;ÿmÿ?»ÿ϶ÑEô?gÁKs|}îoÌ]ðÍYrþóßß¶+ýçÐìMoýÔÿk®ŸögĪ2Í×RsZns|qî/Í]ð幟2kAúýg%WúÏ"ÿ?ŒÖùýþCÿy÷öߨôûÄÿPK
+]79isis-database-3_cvs/regions/DemoRegion/data/data.trace.dbUT $YG=$YGUxèèPK
+]7isis-database-3_cvs/rules/UT $YG}$YGUxèèPK
+]7isis-database-3_cvs/rules/CVS/UT $YG}$YGUxèèPK]7QYÖàó%isis-database-3_cvs/rules/CVS/EntriesUT $YG1$YGUxèèÑMNÃ0à=§Ô?iê
+m¢š ®fÔ%cäØ9?Q
+©ªäå|oô<÷7¢DZâ8ûÀ
±
+}RÛ\
+Žs!þm W׊šÅjxD*¬66Ë'xD>|3Øcð
+Ÿ74Ät¿bÔÅuÀÞE*·o˳œ©ŠAÖ,lVÀG
+µÛGçyÉÇ×íùÇÎÊ^Ö/Ž)mÚ>uÑ1M¶:&Ø`=þpYs{²Õ]ùé]ÝM÷š÷бFZ¹ŠÑ5
+m®¬õPK
+]7ÄÌ<(isis-database-3_cvs/rules/CVS/RepositoryUT $YG1$YGUxèèisis-fish-data/rulesPK
+]7.à"isis-database-3_cvs/rules/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7&isis-database-3_cvs/rules/CVS/TemplateUT $YG$YGUxèèPK5b7S(
&B0+isis-database-3_cvs/rules/Cantonnement.javaUT Ua+G$YGUxèèÍZmsÛžþý
+DsSS±BÛ×kí(sí\Ýú%cû2œt:H,€É#@%ºÿk?ÿEw ŸH±;ÉL9$vÅî³» 2>ý7¿,/b¡z=¹ÈÒ\3¥¹Sæ·á4D\hrïÏIxÿÝTHÂ3> \,ÒD
qz{+Ûð4œ=xÙk>ÕiŸòææ2Ó*Œªõ9_æÐ<ã:+Š÷|ÉCÐ4ÇyÎW§RéöØaÇbªelT£'Zäí2ù«ì¶àzÿ²á³hr
¿JªTóðn^ÃÍÑøâ¯"ÎD5Uµ"F
Â3¡¥ÈÏÒDúêmæ¹2w°ÖÃ4Ñâ£ÞȧWPá×âd o€ ²Bl C·Ç¥sðKxóí<{ÖcÏØ!Ot$@è7^Òû\Ñ>ûý.KÒ¥XLrÁŸÝÝýÿzæ'i²Z€
b/Üí÷1cJ`ybsåR¶ó%±.E®À^ìK±x·ÏöÂ?²o¬èS®4+²æßgßÑù»ç{{Ïw¿e{ßíÿaþ=¬I}6É`z%ÛqŒ,æSÁ8ÖÖÌ¢ÎIÑ:¹RuØUDù&dz=LÁtÊ
+%"ñ©¥^
+Ùû:«ŽÈºò>
2¥A?ÃþàgF9+ÀTKX1p&y#Vvx+4<µ=#uF»wi"XÆsŸžùoG,)âøÀ'ùAðÜÜâm ZÞLN| ¡`w°Õ$ÞÛûKÛo^Ì@ø·ñùãËÖ²Àu£ãÃã³WÇuK\\$·ìÿMŠB)¯ß'³;ŽIsþÍ㞢c¹!ë¹Tî%øÈÁ¥`;ËÄgãëËÜŒ:¹8_]
+×S_ߌþx|sñúæt|~trþÃÕÍãË«ëËñõñ?Ý_åÕ!åâf|x}òöäú'Cz×e°xÏyÝÁÀ¯\è"Oh©aÃXfîÃgìÈB³hÏfÀ·É¥M/ÀûžSðsä šäÿÞÎyºE4i$0¹ ^Lg§cwaaG,JÏóôbǧÂÈiò&èûQŽÏŠ<aaa8×Âÿ?£(3erówÒúÒL¬i§qøÐE÷YJ³4å²ÇM
YÜÁ`VÚVB6,*òR-yV΀'`ÔÊbñs!bfs©*ŽÒÀý]kí¶»FÀI"ú¹,J%+$¶Ì¹4:Ξg(£7Ä_¡s;òP«Žs ÀîO âT&ip·®õÄŽ6dŠÒ`úÓeÂÒ_ãÊY¬áD Ë?=?ñX7rÇ<;Y|~Ô0»!h§3² A4òXÛú>JjMc/ñ=5ýîwìiõ:?Ù Ôf0ÀÙØŠs·îÛ"_SƱqšÄŒ»\¥É
+ðEš`p°N0¬Éá3žOÂe2JÒE^z{^ŠÐ§^¥FRœOe¢Oê5
¡ù-?ª!
K=Nø$QÐÚϪ`ªr
$:/DеÕvor/Ñzvõ>äÒqô+93BÜÐíàTAÃj+$XïÎ
y8šÄ!ù~ÿÀkŽ,Äû#1yI~ý7¯eòšzMr²@'5dÄâ-¡2,aûIRB-&CEwvFkªá=z¶"±
+<zÅ;h{ÆX\?XpC£U®}n Ö4&YóxÑ°Š¶dÌVPO`NŸdüñ¥bê€Êöl
[
+T
+À̳,å=_#ÏÅA3PvG×èüBØÅsfWï6i{í|jïJFã#Ü€7ÚDÒQ.\I\Jåž±«Ì2MF3 ÆÄG1-ô=Œ[B@úðwiJ
+íjUöõJ,ãéL.kºe'ØA+·SKÔ MÀe4Î̲×â}5ÇW
óŽíá¡ØgñÜœ ÂèÕGãØŠÔi¯ V$ðìôªfÚääó;G{ì@m#8^Ù(-zà¿Ií (ÊAÓ>jåçç}¶íí+6RÁ`õé}¹©Ô±6§žþ¥!
+f3D¯V$çmpJÌVíÖ_KÔ %Ò$Í ýÍôööAëõÃŽbå*AJCûÞÄMikf!Ê4{ÙöŒÌÄ£jæÇL*»AFý]÷þ€s9€#ñ$b<Xj»ŸŠM©ë毪 è&/IкxGŠÑÁò\ÔÊ#OJ(í p2ι:.£;WŹ¡'¬gf+`®Ð04³Ks ;IRÛ)œÈ-NaܺSc3ÔQ«C߬.Œëàül$°Ù ÓtÈvêŠêîY-Ìl,ö=]«-F¢,1*Ô
+ù^8wQÖ],·_ä.éSÓEL°$N-\§ à<TD
E?ªd2ñäÊF¢ÝäþŠü°ìXJóøfÅd ~Ú«ã±ýÀÙ{Gu¡œ/óFÃfðü<slä¯\bÜ.r5ÎeçakñzÀùYóRŸ¶ P4Çàó6
+9ï«&«Z"žàÃDFH4Û6LEÎg\œdÊ©
+ÛŽ^R
+
+aûšAmJR*\
SêÜßP:Ù+J¡$ðÎ,z"ùxLsÙZ0@>2S%ÓÆGž*oÂ{ËãBžÖ¡µûfï
+fâ¹Ö(4d»mŸ:ÜùõŸÂò¶ Y[;שjÍk-MSüË&»ØvŽlÄüNõCÓ6JàiW¢
+¹ëš=ª2Ñcºº®°å7}!Š"ÄÌF¿æ§[µ
V>öÜíÖZcèðKv1C[ãßY¡ã+{M,N©DBÅpТ"§r¬8©N5ÍîÔ ¶·¶è¶ëÚÏÁ'ð)Wµn8Er«ç£QÍÊî$Àõ=-2Mµ1?TªÉDU±Œ`ÊžEe¢å}.gR &ا[2NE÷ïÿÃîõœ)@ä=v=æBGÄùoØÚsôK1³ŽtÿÅfŽur³¡ç!
+ë¡#0
+·÷åç4,Á¹^þ.VA ê¶ïéçéšc·ë]ÂÐ'ºÄ/žŸ
+v? výîT¶ê®GÕåíÔ².
+¬o%1ùºÈép v`Íx°xŽVÿ³ÍŸÊ^ܵuW ej
+3X
+Lùæfð@°÷Ž6»N[aRÏdYTGB[Èä6ŒÝÞ¶É«Ô?ü Ҏ銊ÚÙáÎÔNÒèÛ<að®ÁÚÁD«.D°uíTYá¡áKædbÞù¹¥[biú2
+Yäºy×pÕŸþÕ3¯Ñ£;!#Ø6ªï*¿iµðt
+Q±È²\.£Òdc ~Âõž€D"J̵Ôþáq)šûŠ?¢Ä}mÙš<KŽv¬ê>Mv)óJ+¬KkÝ$ŠxZR³N/ÊCHß«+n20ÙÄ~ÒÏŠ6ïÕVª ±Ã$ÈÆè6æ3ŠŒSÅØvßLÆïÁæh
+¹»¢×M}À:-ŸØâUÓØ¶Õ6Ž?³Þ#g ±5%¹3?úW±*Uð]ïÅPÂ×D}0ßèRHø±7Õzm/7èÞ€»²r/è4~ï`+EÏ_7ï|4ÆbÞ(×®ëšÆìJŠnÍã<IÕKÿ×°õ±x¡åé¹s
+\תQï`ã}_þPãqGT·æâç°WÂPÚ6AK×i~/¬òINolélçÇÈãŠ<n¬æ
+OQóéšüÂöSЊÆDŠõoÂ7}èN°{3%°|õÃÖhyŒ1ôÀå êWP£ö-aá¿ô¬(>¬ëí
+=ÛÿBH£è³ŠwºAG ׎ò!àÝËæL%x¯üö£N0y@€HÔÿù5¯¢ßC1OnCóU!haï`_Ýj£òð£ÕqX^Ó;ŽëÃàæ¿úbö
+x1j²RÑ4í@õV(%ŒOÈn-ò&¥Å ~%Î?Êr'Fè~
+wËD¹µ
+¶;n<BTØ€_ëÈšP8
+JDNÛvÙSº§Ug@ÝJ¹oø°¹zÌ-·óÀÈ]ãu¯ãë`·uDvWew_¡êQøû2Þgx£}xÄœÃ#ïu«UÚ_çÓ5¥ûÿ§OשÒ_éÛ5ìXê95cï®÷_PK186ÓÔâͪ2isis-database-3_cvs/rules/CantonnementPreSimu.javaUT €·E$YGUxèèí=]sÛ8ïþjjCÅ
+í8{{[ö(5NìÌú.vRqvêæ¶¶\ÙÌR€N<Yÿ×y\ßóþënøMÊrâdD$F£Ñß$Úgúç³(õyŒ·±áÍa°8qoÊÂèÜ.÷ÓÄlïÉûÿ Îö:ö<Ó0±³pŠzÎçaÛ~x~îçö«ð|¯[·Î4 £+Óiä-Ø~ËãÔON9ß+>:õ$ò>êAïKÇL}{?«W^ìœ}O/ÆOÿâÄÇ΢âÉQÂ#Pñš
+cRGÓyî$ø,Î~€;Í"ÛE|ÎáÿØg^|aÁðã`ÿõ_ž¿àªÞ±7O}DÓ>æÇ£ã0ðL€Ç_@aðIãžäjÁcûÀIxnHrÑØÏu',8°Ä9 p
+¿ÃÇð ñ`1±¡
+œ?žð-\É·=Ú`Ø'H þAbãÞÁMºqX»Ën³ ŒäóIÄÙÎööäó4¹#æap5Ó}ýüÁw&Àüy`#ŸŒÛÀÏhè%bX ûî-¿ôð×.{bï°ï$èW@.|}w@ÿÁÌÿùxûÉã?²'ÞÝùݧ€þlrÅ Ó>!³Ë&>öz¶µ±H'>ÈøÔwâ8·Ò7Çœf°Å<pcfÒ}ÚØ`Ð@, YsrÌfÎÔóœäjÄÞ§ß"MÌsŠCŸÞÅN¶ÌBk`Ûö`ž ©h°ºàÖ
+ö9Oàʪ@Ñ&ä{'¹ ÿ
+ÎNäÌÏ~Åc€Ÿ¿gvù;ìr?+ºLÂÐçN {ñTÕ)'Ýp (å¹þIJ÷X47Æâý_û'Ýûsí t~ÀÁáÃãçoÕÚ¢0ɹË@q|O]FL(Àg,q&>? }ÄÏKhÑü
+«Ôßî ªå:³ÜÈC9~,k¢
+Àsö·¿ÃTSÇNt%Ô5ù$d8át8Ÿ¯û±Ht$^LJ
+áùÂQ7ް÷ßœ=ú³çG¯÷OOGõ=NßýŽÿê¯g¯_œÚ?98:ùñôìÍáÛ³Ówo÷ßþøóÙñá;@µ
+(¯Ïö_Œ;úéèÝÏ¢ëuÕ À¢'y"XCIlOÒ( ¥Úb º^gR%Æ<box4ç sÂx`6A0ÿ!/IÁJ·Ïå,ßIÎA©ñ?È9_=€>a]\.¬'êž©É1[»;Ð`QÉE~ÙáÇ)pJ«<³Ššî²)ðÕ£®pQgÙxdСŸ ×Rö8ÖÁPIr T¡çÂŽšÚ
+µJ
+ýßoŽÌßÃ:ÒùÕ3Mx,.ÁjÄsa)±9ýç!ò²öM/Â9(º2YXÞRs²XýØ-ÎnÁvÊ׳qžçÐÓIAÖÔf7%äªÎ`ns7§;ÂPÞ`&@¡åÅX_ì%<úsGY®YB±ÍéßÝZÂäV+DÀl0üç8MQXo±£EÓª[[$m»šÇoåÏòòÎÀÛeª:*î¢`yÃQÆs at q!KŽBs j*b ìÛ*IU}W[O@¢JKvS5PŠÀ 5W 7nÞÿFú°®hØÁÀål¥t%8eqž³ÆìHqºDLµ}UÀãÊpØžûT«$Q3|£`Ê¡=%ÿΪšZÑÔÐD£ÎøÛß?Ô7×Ý (Cô)í{kâ)Èáu
+i±öT±ØQkICVlåñvÌ?åg-EÝä§
ñg^Ðí«¥(Ã#®ÅcĶk@æB,¹4žÎÆWëTTØñT'Y^ysXki
S//z㺠'ëò"úu®7ª¯®7ô¿Ee±àþ
+«äÞÌ4éfÄE±)OÀtÏo (åçx@Ï9àî
+»t|pvâÌ!Ày%5Ó/)÷Qu Ë9kò#zסÑóQ¹ÀDþg÷ÈLÉߊé
+*Ï1ÊË;pBS
+ñ5ßÀ-Ë`Šç)!0@Én
+Äd§ÜÃEBchÜkÃ57Œa2UþLÇw÷}ßÓ;u<ò%2Ïâ*DÄV1VB±"ÔÜ÷Çó}>S at u±MöÂÑåÇÜò¡G Ë@¹~
+Tjv]ÇrÓC*©DX=Hê¬õv\SnToDª1¶ÔJº[tµÐE8àþÿÒ€éwhúÐàJ|®¡Vì²'^pÃlSAÌÑ[EãíKwýáì90ý : Ü5º+Ï(5ÀÜ5ân5f@tÀ¢ÑÉ«VðÔy
Ü4N0ñxP;Caµì=c1m£* 2DÆ^鎫`×xb^I!æÐWÊ1 ÌámËŠ452Öà
+ȰµÛ
+ !ÇÇ$Çù€Ç5Ø4øOµ@|°dBsÄìÔÃüØ#×ëHi*1SÔAìðG;añ},sy
+8ç@A 4/9jTSË-³dS
+BôZž:n«e£&tŒ FÜLT%fÓRäùì
+"âXäù)€áz€%ÞLÍL
ð,¹6Øš%¡pŸy°ÁÔñ§DuõÈ 0
+ßm&(6£{Š -ldæÚ>
+Š~$-ÙÁe( ÌVѪÖB2Ä(]² L/1å; 0·Uh°Q:XÉòÒ'R^¹ÑÁšÊ1Y«LÜПìRôE8ÇY ŸëF77@Ÿó>6%ØZbÌÿçôäÔØä^isLäv§{¬"mòr:Iåö]JBÆE7vÀË0¥¥It1ÉLl;GX+âi ³š.&R!À8óš4b
+ølØMÂBR9ÉWÁNäÒ§ËRUk^÷ÇÞ¯ÈÂ.€þ⪎}pDñxnÚNÄùw=ì×±uvÛ<T®TdhMôÒ×uîY±iCó.·°¹&YÓÚD%ú-S-ŠþfMÛ5Ìá1z.ŸE
+[aÚÄfr(â{ÃGrs;ø¿P;L/b{|×ÇùýLѶ2iÄsÖ]LÞf×ó$ÏxI-ZœfmÀoŽIuÚ-ɲÙNÞ!æÂQPReþÙíVHê²åuae3Ü1a
+ò
PýŠð*SdMɺP [9®Þœ_°šw*YâOn~ÎÇŠ³Jœ&hfš`ã±ø¿éªK%ì»iÏ:«âõHλí¶ßØ9á³§àµE"é\7°`ž è2Ë¿nßæîÊoç_s¡£P¶œsì]&&@o&Š} RœÒ{À<w#Ä(ª{YËzyÇCöÏK*Ç =B|í!
+#üøÉZ£Ã²ð&ÙžŒFã1çOËFº #Ÿa4áÃVbŒÕ:4Æd=é¶U*Wì@>^JmÞRk&T讪°îup)d}òm·)L°Ÿ£5h7ÆÂ6s0q«·àÁ&+=ÊÝÈxÆ40ä!¢yÃ>€A]Éx÷f'÷Jº©ÎN!¶-ô(tÒgI¶ÀâY
+dâÌÐfM
+±'r¬à~¹X-Æø5Ÿá²±Šsq¡ÃÇ¥QzÒ
+%ÊK/ªÄe$±ŸêÆ/¹DS¬Ö[[ÊtØxÆÁžjb7qÓ ËG0±ãöèQµR.UÐï(5®zÉÒ1c¡Z&Ò#ÿuy8rê{šz·ngl*á߯Y©B6KÉHCJ±;_JÉl
ÚN27,§äÑ\ÒÄ'õö³A| Ppô¹ÎöH¢7áT_¢ÕÀ'µhõÜÿ67T+ɧ5^(zu^(zšÚO;Þ;>K ñŒ§/
+îgæî§±qet=Np]
+¿õøKlò·ëyfY£oÍåü¬ÞZk»òæº,:+%£gí§,Ç i^áÂIéõ®«äïÒ/YÙ¬Ý}µO«òªf¯Û[ž*ËzP=Rg*ßUð[P¹<ýÈÌsI®7ÝD\ŒÙ$#ÙQÍ~¶zeI¢[ÂæûËÂ{E ¹>W®E÷¶ìOÇ]çy6tÉîtÄe5Ì×oa_#s' oÁé2Ë€Xî3ïÜ 7ï¬wVëTŸË4"M xü6éJ°÷ÛwVùÚæ+N;®#®O«ïÖ9Ê~n=Ê~32±õzòmª5yhG'>ñÐ>ÝÃ;¥~¥S¢9«T€bŠÒÉyõ}Æ};ú?fcî878Ì@bk>Rþ÷3çX}(`w - rZ.ŸuLèt8õÍ¡!ÝÓjäCüÔ",qÔÌæàZV$Á2<°[ ò©<yR ã03êúÁ&ø5øy.»0d>N"ž^R=
+Xê
+pyPêT)Pz~uÎA`BD4øè:·Hy"ŽüX¯»Ë#AÆ:°;ærÕ1í¹÷}ÿ¹:L€!`KVh2(r|Q1·ŒÛxãWsŠ(IßT!\o®HT²=YªÇBû)ûØN|Bju¯ Š>cÕWèߌºŒÆÊ§6ª&YÆ)$Éê
+M¹Ä<ëcõíïìhRÃN&e{ZqI;µ§hsM+жXÂ+lqÎÞÕnŽ9b_µùæPóàLAÅŠÁæ¡ÒyùÕ¿å,{.®ê@à75ÎöTÞDVÍÆqÓ«/IQªæLQ=ã(Wés (ãýÏsÈÈÓÜîì×ï8 þÌÐqÉÔÁš?&t\²UÀÄ=šaÓ[FGÅÈÝÁf/·àú¶Ï4Âk|X£ŸÎó$¹ [âXuxÅqûcm@žŒŒGµZOÔ`Ýä|l:ÝPêF¥š€¢a\äHǪŠÅL°50øø9ûðè mÔè:òwÉ%ýo~Uu|®è+UâUº±u
+¹ÒDªÉ*®ªxv°ba2«ÖhßÄÇžs#ÖíDß^ïÜÅÂÛË/BÖ¹(Ê%¬ÍFßRôž>kÞÄ& Ùu;ðYcÀÑžZIJ¶±ÈyéãmpÀ¿/»=d!àà±IJY}«[R-·H%׿:¿ªóóHî°0Îèó)[ÔÙÆkŠ×¿òðDUðŒèå41C1«gT[ÖÌ$ »öPsõAÕtwU«YêRŠjÞÌÚØãD}1
+±fbºoø1út±ŒyûIC
+Î`ÀèËİðÈäÊ
+é/ÛÊ1
+dÿÕW¶ÚÕ6¶ì×FSyww=;M8
ŒÚw¬sšv9'rS/aZÅUU¬L-ÔŸÌ+(£H*2=î²ú®,ÂK1ÚHr0Õ' b èl\Ö»xš¿Ÿ¥nÀFÞ¢¢Ü¬iI¿NévÑ_iñU5>hÎqážKËz.ªå!Ë"H-k2J.(O#7iÙÖ;U
+
+P¬ZôûéN|"T%jº[k¹×( .ó3m×ÛÀV»«Ö× ú3€Åìi,?+šå³×
nìÜqKÑGsêpIy]©¡w¥$ÄpZ~SV.Û{ÞÅÙÉöâ÷R¡ӯ>,ô0ê ª"œÞ-¶M"ÞÊa%à
+æé\?Á3ÕûÇ
+7£ öžºæs[µí¶äëÈ7!UÚçKpËÇ} R
+6U'Û¥¯ÐØèu¯YÇÙno×öèQû;µ6ZÐVÓûµ60ª\oÓUÔ¯eÜÔîyñÞKêæ¯ÝvDŠñ
+S^{©äâlu©qY_¶R aàšM+y0dÅêÑWòxÅ,ùâ*Ô0?üeð,YxJh¡péªÝbfú@Œó1åŸ!ÄÒE)o`ÊBÞàt(ÐíñäC+ÂàlCûÜ^-[}!]Ê?óÁ³_ú¡ÓãÌÙäª@â7iáŸÁ-ÅÙ^\çVU;JBù?"'€Ý"Žî=o[õ[x0çböëŽÔ÷yçŠÖîìâÜ Ÿ
ÙÕÇ=dàEKÊKX«u%š|%(õ}€òyNétVyþ^ªôyqýY¢6$ï÷ŸºPké}_ ~ªÑçóóz¯/êkt
òµ¡ò÷õ|ñ±ÚPëÀÏhëÀoø¿uà÷{üîåu ž9P\ymÏZ§q9îOF9Sœ\á kM+£ÒÑQRAå+k]Øô+Æ+,Ë3Ïîg¬XpôÛ7]ÙÖw=qœ¬]±!êº`yÀc~ãö}-T\ç!Ÿ`¢
+ÀubháË$ Ø:±Î@ÔµþÖÙß[6áîyê°Î<¬€ç=Î<ÜHÎm˹î>RW×°oSÞaç[È;<ù=ä5VXz«"Ó@Ìwë\Ã-2 ëBŸõíÖñö}í¯ùAUwú_ér>ÙòÅåúcò\¹íÕ;T[ËF[Ëëpy.¯ÃåužŒâëèw%=ïqô{/ßÜX¡¥ÿÀrÓÝÅèÉ¿äß¹X{çŸä¯Âóérx>Õúü ®µÄ;{Úlôî4aiœðE>žûTÖåÒã÷(ÒïIäê×£ìçxBÿm=¥É±W®]È~I=æ^Â8ºOøÐ3ÇH¬Fÿ@E§
+CxÆôÀ±ºèXÜUmCR_YbRáÐÇa
+ÞtÄâÆäðPá#
Xæ"øÞMÂÐçN ×efœ¯e·è«_a ¬ô
+j(ü³ÃSŸ ÅhAÍ©js
¥ÂÍ?9ÀK¹"2
+3pNÉé?ìáÄÚ@`à÷-¥zíl,'-Ö
+ÊPÊyÐ,!é,úé¢ðFeñz1Ë¡%-daë¥Ìrü+
+ÎçÖk
ŸK®9
+\šp×üxHbúéÁÙ7D¡È^UîEÅËa\·XÂ3Ä&_«gE!QEá:¥ÊLZŸ0SG.On8Óìÿȧirß1£"
+V[åóE¬>QÒ%{V.9qº=?êÚÞ,bRXÍ¥,Í/éCäcúlñ;b Ýp>xEÒòÎçw÷v©ÁЬÐÁGFâpLIÒC'Üd'3!r⫬²ø±0T'ÙBÇ,eün¢ÀÚX\6ÂÅË:|Ã:ÆÏË!ª/ÐÏAÙ«"åA\WÉ€Øþ
+ŠÄ£Z9*SÃ1¡b, į74
+Øä/
+"]oHm²,cò«ÝœeBõ®î2 ãäŽI
¡,ç*WÉr\Ý~ec³-ÍýPK1863ÁÒW8D@isis-database-3_cvs/rules/ChangementParamControlablePresimu.javaUT €·E$YGUxèèÍksÛ6ò»¢é4r¬PvÛ»ëXaŠJ쎹ñk¬4wœ$A6RT Ò±Ûæ¿ÞÇúûýÛÅøe»òMÝÅb_ØWtö#œd$Í#&F[[|¹JÒf|Fô2%såŸ÷uŒÅ?Aèή@.I,(¹Œäñep\ºœ¡³,Ioú³¯23GÙ ]²QùÕÓ,å7vÐzMÿHyÆÒ÷&ã4¥·G\d5ïÔc];ñ%Í®ðPY EðEÊþ.\\oáæ
+ÜO¿cÑÊa£ZðeQ:ÌFÞñ$~Ä»ÉZÇe·+&±`ÇðªÅÏ8>kC ÆS¥°\çð£zN3*`jñæ5{ÐŽc¬<6§Š³5|öl<#ï("vk+OðáëçûäË]'×l9Mùbw÷¯úý74Ï®Ð8oI.ÈâöNA
9yâKÙ*å 7/åÐk
+`|vή9Þíœ`|ŠQ»$_ßl|v ÿå¿=ßÝ{þÅWdïëý/þ²ÿåWLo %3ûdºòÇòÝpkO#°ÔYD
¯¯h| ¢³3Ò%ªR§;K*Íbñ\wÉ/[[.ÉFÀ6ÉÎxijÛù·«<#@õ6ÉSб@I¿Ao{ì í<@"×01ö-ñ
ÄZzpÉ2øÕ_Ëp '¶=RêÉþ+Yáñ6$qE#ä[FS
+r·5 Ò.4ÌT4VBõ"øûøäûñùC@þÃ×ǯϜpñ¥³rïi#ל¯w{þÌ4ø¿ÿCb6cBÐôVi4@ÿ¢i(Wâ®Ò(²p$UÐØìéÒÍvC«ÖÌ<°58¿;ûÏWoOÇÉ âäðÝÅûñÑ÷§o.Æ'oOŸ\_LÞß~ûÃÅñá;
àSÝŒ`Z°î'þÌúÛzfx¥,ËÓXò$ Äú©PU5æ9céedþ.âØ+¢OçÔŽ5¡|Î"àÈÌøo4Í£§&ÉdÎTAf3¬Y2ØÊ®Òä£ 73ŠðTfyÑï)ý'
¶2\äZê.$®0<ãðð#]Ð`nZ€,ñjÅ¢;Bs2¿[Ò¡(êÌX¶¹Œ§/WF<H at At,5ø@ÈHR2Œ:øÀ¡¹¿Vè$"öSÎ"?Õb0M³Q× d _àqäÿV±8Ñ7añ¹ïd£bhq#]þyA#µ~fdÁå'\°idœÈšò
+Ãï°`Zâ$¿f©ÞKyKgQ`÷Œ)=Ýa߬Ò9Ïš(5sŽ~;NR52²×zdÇGâCWÐß®&<íã<Ñá£MHŒØX<X³øâàó±ÇRõ_ÊLý)š÷+cQÀ/ÉrÄÅj*W£ðFôõÌ
+H`_a7Fžï±âz._°Ý.ï€<Õ#+HxÔ#ÀQ²÷ApQûÛµRÇ/HÿIìF¢ï-Üö¶Ï¢Ïf€ÏsôÈ1°±
+ŽžKã»^ö'Â"ÁÈfh鳞«kz*fÏ?÷#²§^ºm`"°kZ#ŒCÏrà ö¿A8+t9Ï3&x.AÄ ~žFCCª×,Ò9ôU:!ÿE¿k¬Z»ÑÚñz5
ZÍ3€±÷kÜBüüEsÓ¢2¢qÆi1<Ëîèaµ1åcDù' PÚÛéFÜšqü{9ö<ax\jËV6muºÚo°c€XÏÑ7ZM¥lŽU&ãP('ã9øÁü(Éä#ÜmòÕýR÷]5B\ÀO_ÃêH{ïYEôýíÐZžn4l÷2úEú=tTÝElf%ØDäL8dv>zåð}4$ãX(žé*7ã&~ýUçIž»FA*@[¥<ã(껡¢Ég4È\Å- ÂÃ@+"€d3ÈIÇ$=tüê®Eært ÞMRnØGR84L¿3bYù)È€"õXÖ(C=jÐX¯M¬G-IB;ë ®ÔZrÞ{>\?r7H©ÍŽëFÝxG±tè4׿B»ÁLVDÚ\¹<µdRÎqvz2¯ âéŒïïnŸô$_N1hZê=üg@ü|¯vž6w
+\kg&³+?©º'{GõV̯%P éT¹Ö,œ»
+]<§ô®ÏìÈȬ(ž ùÊoÒšå2è·yesšË`è "·ú®¯r°MÖø»Ei÷ªpª¥÷h²àUÁkŠ÷,ÞZ>-Nþ!hdŸàQåÁX(§ÔÊy:J©vø]ÔÍA¯õÎçÅ©0Ðssa®µÃáiLèóÐü`a5*ä§üâ?åhq3û!ž·úI·È?Qšo_3ZRySl »h)ØjßÀ[îÁHKD:Úåe§÷öP?^ÕdÑëjLHIÆñöê9Ö{,=€qÁÁ§é
+»Paè¡7)ú¹açŸàºÈ6ô-xUð¡Ùç}GÓÜ[8GàÅy/O!+ÁŸ©y]]SgyGÒàYÀÄ@šæ¥Ío{0¯SöqYUbñâÁ$Ÿ9D¢åX¡U
xµœas9Ñô¶fIý÷#È+²s4áZio
Ø$£Ðji/Lê(OÇñüâ7Š£6Ön~0+G4r 2Q!íœ|0©Óì¥çykrMHvt$=eÇ^aý÷àa8Ä2!UIÎ]5yÁÂH$rÂÂ`ÜK£),G^c³
+[ýwØP!ÒV©\
MÐc+ÞåYo
¬yÅ(Ñ¥ÚÚȶݯ«Ïǧ'ïŸë#Ë€]Üx¥ÉJ>çrÊT{ã
+¯yciw¿OOæLðd¥w)%MæÂäÉÛžJböÈ©Öëê®á0ÕN7Õs¶7ÆçÔòpw¹Ã$ž·ã- at QÖ0YœêjDE¯·SSACeìñlŸ`xyË$3Œò*y)Þ@
+w{ÔÝÆ»Zj
+»NcýVk3ÈõPíÍoëßTúOì¯O¶þgÁM-$ÝöjuølKyXé:îéôežPYš9ÇÆ9@šgød޵µ5Ò,Ã\xÆHwØCÀ9+ªë§ bY[T[ÁKÕ
+»=Š£¬ß-li pžñSþbÏd¯i*kÛàí±Þ}ÍBË*¿*qõ°01 xFh8Ç¥~VyéVÉŸÀÞÄÈb¥Å'8V_ª`=aý²LRÚáMsYÿZÈcyjñaŸŒ|5èÌûøjê{õžk=:T71Öì`=Ðßzëñ$ŒÀ¯Þ¬"C¶kRÏÇrÌ'ÉŸWò¬ ÛŒ8â#¹â;ÕóÉRŠLHË/Â
+>* !Ýþ{šþ3e°óqœ2,R=VwC4±3uðUÎyÂ8OêkíqÆ¡bt§Nà8·{¢»qŽ5t^2ã@|ijö®<î§HûÛdd`+*NØ
+:m«ê]h`b _ë%$ÕÃnHÃ5Ûé9Çråô©œ¶žtXÁ@;PšÔ&.õ1[0µKšT.(¢ÜÅøp×üB ÷öJ¹Ì£1žïÙ{ŠÀñ,N{¿C¢ÝtÀÑúã
š;3`+¿åµ ïd@èá*Ù×L¯XS):ôǺVæå}{n>KPQÑTZڟIJPÞÈÙ,¯ªÒªÔjz®6¬¥2}þUcùÙEçŽ]FjYxTO°æL÷€ætõy{¡*6úÇj+t>«`gø#
+;|šs¥J_Xðú8ÐædŽlAÒá<i
+?Þæš6è{%Èi]äKEzó¶µ;tmËzà$G?)Ôÿ}`ëOu·0¬÷ÂKÐõŸÔà,F=š¬ mϲ>ÁòÚÛZµ(m«ÊÀí3ŸßÒã¬0Sig:b[×Ètöåë÷mF¢KMÁÐÔ€:eáM±)Wá/J4'|ggMHjñ Yò5ežÛ¢kxï¥*C?KdÑå·'Mw
+&%LN9MUç:ÔÐ!·]æF=í^îC|úsXéx¶Ãìoø±¹*lc
+j_Õw5ͪ:ŸJí¥¶%T`û8Õ÷íÍ*Œß!©Ÿ/·4$PÏÔà&vëiâÜ£Q«|²è»Qâ>œ
GkØ g8Tú6uûv#}¿Ö§¹ö&ñ¬¯ChÔ+ŽØ«û×up®*ͶJ_òRr»í¶¿ºWï{\5ïÐÅðIŽôOÖKv¯ÇjpØ
+Àãõ5t~\Ž5dîë%¶Ž6ílxÊ/¿ß
+ÞD Íúc{ÞHçH+o»]¥ògnlš¿ÙéoøÔ+ùÇùñ¢¿
+
+L@ç ÏÃÆuJ¹raL:X*·¥ÿañ§$*8B$¿¢`²âÀâ_FŒ¯§I1Ûy58 øe7Á¯ŒæðµÖ¿Êú@ãWÐ
+rv4J |)š)ÉwìÍ j³kª²ÿ-
+[@¬HÊw¢Á£/EõÏUÊÆ³ßEÃ!xÎŽÇ"p-þTRtíãÖ§ÿPKsWò6bRIGR*isis-database-3_cvs/rules/GraviteCPUE.javaUT zÖF$YGUxèèÍ<iSãHͯÈ&:\2P{ôB¹¶ ª-(èèí 9
+IÉF»
+þë|úûÞËC©Ë)ØEwÙ2ß/ß"æþ'~+X"Ý_[³8J2f<>[Ï&"È3zrçÐ;Á®8ÇÜ¿0r6ÂÔ¢Û[Þz¢ÛýnÃÞq?¿È8Kœ÷ Ëìáiد>ü(Ò<ÈÎøLÔ]ÊS%òsñϹlÞAðt¿þàL³2cï3Ýá?ÓÛ,MON1ðÊt*Ó;/³<àÀPAßdFa&>gûæe±Hœ#ÃNàÝÂq"Ìd&aèæÂažðÞÁM%°áÇÂÑñXZøðÔ2ÚÜ\cL-8ŒøùØCÉÂ=Œ}àk²Ç^o³0ÙM"Øîööèç?ò<»ÆÃ(|EyÊÞØ¯?üŽEÂWÀT"âDŠÂõyKSç"IAÄìûb.ñÛÛñvÙ÷ô å1P.öØ÷Gôÿóü·óÛþaïßÿkïõ4Ý<0t@Äì±;p â£ÑZß°'ü§©Ë'
á$e®Ùµ5
eËSÁ@ßÙû2
²ûÈóÉ=DyÂP×öp'ÃiÔ_÷<o}°ÞÀú8`°g޻ǻüê»K@ÄöZ`ñüO@g)lCÁ&" Qd¶p0ìWà}f3Ô°ß~Xm«³#vÓ/`æ€yŽ)æ C±d3
+ñD$¡ü'g$.Ô²dpÇÿ@-S+bÉÙr¢~š`О$YºæÅ"p I@ŠTÏ`y÷31Ó² J#]²X9ñ\Ê7 ÇUm úd³©D+ð$lnðf
+ÈFWjq-¡REŠK#b"±.L`&ÎòŽ/Ï3ÿîB$?ªO§S4/%zo]Âðýú
/Ò'ÊÎÀè/Žm;úÅ8šew2%fŠÏ|°œÌÂux§WOþrý§óÓËËaû³ã«ë_>ü||}þîúÃÁÙÑÉÙûËëã×W®ßÿõúôøJ0WÊáÁÕáO×>>yÿÓÕÊßœ;ÿØ6í±I J0geiöZx%"ËdæU€®ôöÑ*
ÙZ76øt*Á¥£þèCe
+Z°<U[p3fþç
+åÊ,(çŠ|"ì$=gÔ &ÀØQ1 Êîè÷ö
Sp +zu~t^åúº¿îK°·cæCö4}Ö|V]ÛLØ
®Ãí3~Æ&Z!ÞnøòÐ~
+!~wI³®à2ÇÁC_ÿó îXÁ#âIûöñ£Q&&âX_ÏÙäë'èÝõr€62,Øé¯à'ᡱ
@MJaMúàøÌ>Úý¥íáŽI¯ÆÙªóHNhEúµ°|+}.ÔF z!ðw{PÍ~Á8ñÍ%Úwqûðœ[
+sLÈnØ|ïÄtSͬhÈðø[kÌ;@TSZÀ¡§|«&SQ¯ÇS|Ú§§ÞéùÙÕO8ÑNmðê
+¯cè|Ñx>
uýõêŽõ²!ÃEšýí
+lš){Òc¬Ÿ¬RZ²u¢3]tž«âš<î;ûšiÅjqAŠÊ:±€Ö£+ojteì
+LÖ¹¬ÅÎNZÎå"ŠjËdávY$7YIéhY§×k·D5]Hÿ-veê
+
+ÖQ±\Îí²(NõCSùÒRu7%NW·b0kÈ*ŠÌ6$ÐN9é-Ã4 À<ÇŒ#ú8%Vì(LŽ*Wxi'«ñ1ÛÞ¯ Àu%'Í[\ŒÐ1aG&.l¯fö-AïcíD9ïNþr
+!z$3ô
+9Ô,Ê3ðÅÅã2K3ÈíµJí¡o²02Q-Æ °4!¥$Ÿñ¿eÄ0að(,þzßITú3.ñ`
I¡6ÔNTÔ\C*2ÚjJ·iíû¡¢®"ØBšÅ·µÑæÚòXH8@
+öåÜ oGÓÑÇ rŒœÏä5ÏKåßÁÀÁµÞ\eÆcý õ%LŠûZPc£Û6í/žÆL@"±z]ÌjŒDJ3ïÆû7uÞ{E®¢%ôOwüžòtØ
+t`ö§7?âFáð>6CÆ'Ñ#ì[cGãŠÓë=ÂÿÚÄ^M; ì£=Œã2$1ZÖl¿ZßrT/é{UäZhP>;$w04ø!}êFÓéµCŽÓñ§²Ø Kíõf
+kÚjgà.9ëCÀ³«©Dí`Ç'vêßréìæyÂ¥2Sª !³Ü/ÏØtŠRÙbMÅA®¬ÔBJIÄM_íÉİÈLÛ|xKÑ(ȵ€ ÑE(ÃKä%e·
+ä1w®2ï»ÕACÓMB°ÿfÒÌwoò
(UDw³É"ò:òWÁH>ßg÷žVK/%a»ü"Íüy%©^%%tz&>?ϟœ9Vš"¿È5ÕDÓ{ve©§q"üYj9e}ªçŠGâ&¿=9ØuhÇLp-F0EBµ·Ÿ¥¿±-¶NålžSeŸŒL¶zÅZVoAøæ{'ÈÅTÚÂÖÁX%4ÔGr^žìR÷Aþf<è56EYS=XêÒüŸKÁháöó
+!;U¯ÁÚ
+ÔÌE5õy[Æ)o£šp}, rõóÏBÞf_R at W*ãEþ±Ê"HG²²Îõ&Ø8$òKJða'ísÐû¹ÀLmözòAû$¬X׬ÄX`ÇllêöߣP€¥QÈÙÿñÒ|v>Éõ_wuDyÜØnnØæÕRËÕÆ·¬.¢ª7ÑÇ'>Âè«®y"¬ÎjÒIE:šWÊ,ÿßËy[k:(LdV1âuREéj¶^*šsÊÜ!VËÜ·\Di*PG1!ÆØâqAœéoÏ!*åª,œÄ-èKÈ{žB|#ÕRXZÊäõÇvèoL$$éT¹ÀB4±
+A
á×~Eº7kØúÚ(W¡8I#¶ûoÞ6±?mWù,ØP²i¯5b4673¥Áú`è
+CÊ¢fžç7÷ÂÏmDÙdtHÀ8dÒOÁ8RêµÝ"U
+Ív'p¯[Žrµv4M;nšx«`m,¥mH4q#µnK«4®_[û2-
±å5-èØ
+¢ðÓÂè€Yvjrós§\9žf9&q3/Š7R at d[±¶pmZWú` ôrÚUŠúýb~
.ÌxJT¡ÝÊã¥émÔŸFxÍ*]D
+.ÿ»wIkÜËIq0¡hBZŸÚâò%£: Uù6îläÃuH{H%!ûaøcE1àUiª€
+bm(âØŠÝÐ=rPÀÏ6ùzÿ*X`¯S~Ü?\Ù¯$ji4)YMmŸ¿Y0ûU
TÒ$¥2TWH¿îŽ,Übáše}yÂݵ,ÑNûÏÝeª"["6N{L«mÁðÕÁ0¬¶Xô§j[±
+ /ºžÅô< ê©{NRåYRôöØ.š;c*oÁîµâÓ}
+ÊÀ¿Ïáv(š#EÚÔ«@Åå1ÈD^ èüZqMt$ÇRgaðlWH³&7mXIpª\ŠëãþÎ+HOû1Èeg0ØD(·¥U»»6h|.|F
+e
©37°h2«V³€7qOêaaµQcpàJá`"oÞš Q²òö$7Þ,=¶ovÝxéhÁÂ74ø*cq©®¢lÑÈ'¥
+štugQSJ×tI8b.MA°dYi®GÖx»\Ú.ÑHuâSL³¹ºG)üÛ©àu_©8A±{ÀÒOT
+FM%;ÏõBÕjÔ.væzîqguq D[ ogôV=ìó¬ÞÏEU%ö€M`&žñêhmuT;ŒK/« [ãåêÙ
+l75Åë%d·8Ö³ÖÂ=kRèhÓ³ÊU;®'8Y
+kûÓö'^¶{öáÒ\å¹õÖ4éiAÆbZêbõkÇnN°W/%¬Í! {m*MUÅYÓ.ÃgÈpuA'r®2±B+ç-D
+'m=é1\¿¶Jà1`õ70aT /ð¬6Øt_9z©5±HCáx v,Ä·n\"ª[ð?¥¶~5¬äEÇsl"vÖUŽþkÃs¿š¢
Œòª~:dœPÒY*®Ê£ÃÓTæ,Z·îR]>Óõ{ãpYÛ=öÔW§í{ºÔù¡ñ
z2¥÷ÞŒ·:¡¹^:Ù{{¬æªœ.é0Ö*gËpl¡íãmoßF}{T2¢#DæY©á7Æ*lEg§êõÀ{ßÜü.΢œìq#÷!õL²Íxš^pÔÛúxÉ®ócMnèÕÊ~!}ú9xµ³;b{]3xhzw:ReoAzÔ«QRœQmV¯6;Ò=£Õ¥c{
¶³oª²Ó§êðsv¯MÊ8l`NôQün¯µçßòäeŠÑ^Mæn;œ·PŸx^°§N%¹Ï-#c'M/ÉÀ%4Ã_ý<þ§jðÙý§kNëeu°VÂ'( §å~ñлãéøÁM«ÅLg\šé!ª
+ên1`é©TEÔ§9
+Yú|e
&÷šRCOÆÕ2¥nèíE·Û
+ûÓËžRhÜS¥
+Â
+ýòòÕúãf®jgR¡·ªš~šì:×]p3Cw;ÌÙ4Œlš±Ý#hºØø\}mÏÚÔÜ£64NäìõžŽ*oêÓûJµ
+]é-;LÀÝožkZšôºñnUŸ!¢Ý~¿»Ñe×Ïû©K
+fÛÜSGÉr"qäbÚÌ«G€éDzê{^ÔŠÇLÂèÑ=r!ÔóÒd}dQ¢zÇKlLÑS¶s
+RºÕÈj©¬æ)»ñ]µŒgþxh=<>(;Ü¿`Q²ÝW áBœÜ³ºkXóFlŽèV)ët^(RÏtŸ#Q(®WzBûVywÅU
uVØjXìUjKOêùå³úUk>«¯+
+wU'*HeOëÅP/Ÿ'
»«®ËÍâZ¬8ªŸœ{Ù®pwñu¿œøòC2bOiFPp4zÖ_¯ùØÜ"Ž+5óÌM§kgnÍVy˪çŒÄ$ÍLýÙÕŠµ°¶)°MÝÈÖÉÀZÙ<ÑùV'R{œlQ2CÝýÈ⵺x'Wµ?¡Y~T
Í\h5Ö¶*ͪŸå=Kûªv÷/6 o€Ÿ¯YäjhIKEÔ&akܶœQèš>u(_±Tq0t{Îtªö/Yt2n\úEÊàìór¢á%É¥JÕM^¹.ŠM»¶ÚÆ_2mß
+S*RÇšnê,ŽDãEm÷]q¢Ç®Mÿ}
ŸÐsROÈ2-Ôeµxý²!ªAZÜ}Í>åeÃ8Æ2`ìËQœÐÛÿàÆ?raǬðç"`é×þPK186Ó$v®*0isis-database-3_cvs/rules/InterdictionEngin.javaUT €·E$YGUxèèÍZmsÛÆþLþ³&
+JIÚŠ¢1-ɵå·NGs$ä¥ àÆLâÿ[ÿ>{wxi:gnwowï¹}98æ³ÿð¥`I5ê÷å:©§rÆ¢déÍ¢¹²T<ý:ô®èÏÃè@Âð¡I4<æ³éz
Ê¢åRKïUŽFöÏÒ(ÙV4%2Nw+T€Ÿ£æÐŒæi"ßL?ð
+÷däý#©HFµ×° ðÆI·¯€J;Æ®À¡DÇášZR:eÍÓý"ÞhxrµÀ¯j!ÕÊSr4
w-R)ë(Õ ÷óÜ;
çQ·é^Ÿtå]ðT@EÒÕ^:Š*+2qÁÍOU`=oñ°zÎS®`À*/a×îÚyJ|ATÁÓ>yÒgOØ|Ìå^À¥Gë<O<9?c_°0Úõ4ì?Ûñç<KWQÂx
Ûu)ö¬ž}ð)°.ÁònLDH%< èͺÂì³[±twÆNœSöý
+j³,þâ}v¡0ó_>ýâ+vúõÙ:ûò+MÏŠ[¢±VæMcL¯dšÇý8ØÓ³+Õ6Q"+V]>öK¿ÏpÁG,XŠÃŠe>L·öCíâ,e°²ÑÆ8#"OÈ9ò<ïÈÑô$Çx`C6Ÿç³2xKâÉi¯Vܬ1ß
+°'|ý°€[
Yª$ä2K2ÌBý:ñrNÜ]äpGøôô¯urœuªâÍßxOŸß~¿SÔ..Ï/¯_\ÞÖÍŒCx ì_ÿ&3¡O¶ÆàûŬÐP/ÃJ<J:Â஀Ò)!goù:°`ù2Üz×ãûÛ«>Œžº¹ßÝ
+vSL.ïÞ_}wùpóòáÕxrq5ùöîáõåíÃÝýíøþòÛï®/ïw]vÁ,,ú€nãZËèJD%¡ÖßkxÀžö]SÃóœÉZ€lþ/Y)K
T³®sÁI^9ÿs;ç«Ç&Êd.Lò¡ý9åv,»(`TºJ¢»|;FNËÊçèuäIlÎÖGnn%k9cŒg<có÷kPL³©">ØL€Àñú=âãÜ5ùGr8D$¹<XÈ6<Tá
+Õ<Ä€êSLû>?f"`x4.vÎþÙDrÎH§ØDôï^g÷77¹_ê^1çÇL²y$S&|Ù&áÒšŒàÏš×Qæ7žTI¢VQ¶âXYšUPqACªË_Ó(
+K»vûm`¥3¥[ëœ-vé»
J?ý
"Ç!]¹>IÒ$å°jëÇ×P\×/rJ¢<;bÇ¥B!Î#§^Yl=ã>óõbòëóÏY'å3¿[n5±ÒêTÅìwLà¹FZµHsõ
zXè-§GÈÖÓ æfëíÁ©@N#54Û¯_EÇ\*_ Ñ:µ÷ÛE2çA9³ãzØ(àpÊ,MâÛK³W~éà~3\&4@ÃBVöI1PR<éÿDBîú
îpÓéØ+A-¬€ÍÚop}lQmÐìÑÓ
ÔæõÀKºn¿0Ïz£x8ÃÃhI+kN0ý
+;)-pôC·Ò°ª@.ä*@_±$NÖbí÷Ëk£aG
+ŒîÊ
$uÀåA(MÕcâeé{ŒÛð0EF-VÄ~€ÇT¬cÕJ¢eaðéÒañìÇvkèÙÔ1¬Ûè t6BGå~«5vOØV7œªDÕP_Ð{|>ÊŠr>¡!wÉÚ{uÈ÷³,þ/öeeH:iRŸ_¢#
Óà'àÉ,%j²
+å]EA,XÍ8šA$#ù'ÅùAVÑÞøÅ;²)¿wòº€ÔNÝ2b¹ýÔ¢à ªÌfêp»
~Ž
+GqXQ9].¢ÊÞÉIH¬ )ÒâóPÚ €cTÔÛêdwEi$kÙ^Ûµ`tÑv×Òùì€+
&šàîó°Óxê¬"³9cË4óŠ|ôÍÃÜPWŽös3®Îe: @V·Š¿ÈÂ|ÛÀ²kaPLØ4å
ùÈd"7FçføËc¥ÐD3£V×h³1ðé}@òutÖpºÔ*VÚoìÞV¯mJPM¶YÒw"œYŒAOÀ$Â\Úð^ÓVìÆHäB5±qÕÄ0i*Eïrª3ŸfØß°xÐ÷cöX
+.rVÝAÎÊ) ÿ¥S¥$A¥#ªÂ1?4ìò©Aßt'-6³¥ñV\MXðŠkÛaµ¡&ïtöš%6fû»6µË|ìÝvq_¿þJjŽ»fÑç Î
+ WËÇ9WÂ9
+£Òà:êšáëlRAÝç«Ì ÙvžnÛµtY&bmDûÞÕc«AžÍØ÷~MÙBÀ@Gäs¹@ÍçïMYy
Šl ×ÔR%§FC1QïV|n¡QÉaŽ Ùmÿ@6Š6
+oÛazkŽvu4bvSPèéêþa§Ëæ»Imš(áa;Auà6ÙÉ|èNÓÛ°pî²T·¬AÄñáâõf:AŽÕ#·56¥U+:;;]¶BFÞB
èy!!ýb@{ zJLš¢Ÿ³#bêòkrNJN,|1°.79ØDb«Óþ`çêv~Þ<Ïï¯Þ\Ý¿m_=xWuÍø«%¿îZô7<ÈÁíå~8; v8°NöÍ,tÙÙÑSo~ŸBÀþkóñSé/8^ÀÃ¥gNc+mŽé³L÷úF#?oX+Ô5MÇeËÔ·ëu^¥TFE§ÚO¢µãèÁÕ]û'ëwÈÆ²\öIÂUõói4ýAÌRïâÅyi¶)µE²ýRcœf+?¿Zæßr°hóqŒØ|5³í+²YçµAåy2¢gVRcðêø ªGI,nužuip²*f£Äßëü¬×Ÿ€&ßoTª[+i³Ññ²N¯Wh®
Bwýû¬>On~a¬0êëã78h.ýävw'Íã§î.pÓgA°èQóŒ4ÁÜ¢§[3¢yWgš#£¯¡±)à=§Ò4eœí#:¯;oÑ4_g4STûèd
$ï]_ÿ{×GèìHèÊD"ÛVkl@î7LvØÔ£ÊHámOØZfÃáïíÿÐPÔêðöôoÕœdÎò/¿·YÛÙE6} QÛÕ;QBœM4Ðгáß×czÑ8ùþI¥·it¶Î@Ýj'DÀ÷k
+·²HÚþ.¶ÕlRc79_'(p|ôôèxïñ¶kj¯ådÛB;Fvötlüù}ÑÑõöt?yP#|žÛ±Qÿ7á¬×23m«÷Þñ!-2Á°Òp`êCûZPU/§NGóáå?D~®Ú&9qÝì? Àpø{úi.ltšUÍ~
N'k³aŽSÃ<'s>òÍÿPéõLCþšBjp,Ks6ÓäeÊL7-õsAq^çØãêVRb¥åpÑòQsTò
+Ø¥;r
+rª âÖ8`PWÜ5vÚŸß;š)A¹¶_kw#ZÏñ18ûÌFж°ßšS¥Oó!*Ntÿÿó!*Ré'úEÛQºB7fÝWÿPK186Š×¢
+U37isis-database-3_cvs/rules/InterdictionEnginPreSimu.javaUT €·E$YGUxèèÕZmsÛ6þ®_j:µd+öî:V©;=ßÙÇvs×ét4 IÈQ KjÜÔÿõ>ÖÿâvñB/¢ä8éñ-Åb±ûìSÿ?tÁH
L:Ÿ£$%2¥)÷I,<?
+X¥\xüé·Â;Å?ÓÑbZðDSÉtµôÂh±àbáEÑnd¯©FÉ#©ð8ÞY^Ð+ÆÞÑ5õxäý+á)KF¥Ç hèMÞq6ýÊå9FN)6ðR|Ü
+ºZÑtþÞÛ/æÇç [1ø/¹s¹ô$_e!.ì³³ä<Ü£}εþÅ#ñ*){¶ÎKoc&œc²È@tÙJÇDÊAd[l!C+ô&3&pÌWpÓJÐJØÃ_ÀŸ®á7Øòs
+}<l6Ž|Ngž¿ß!ûätÜG'ÌÕÃã|0ÐdpDŸ>$"Z³Õ,aäÙáá_Íøw4KQBšÄí*Ê$yÿü.€3pS'\2¬è
ºf5ÉWlÍñ×yê=%_Ög 6Éb/Õ?XùoO>yö
+yúíѳ¿}ý¢'³[D%ÌŰŒäB
+;q6ÁÕýJYßîeÂP£@÷ÉNÀª"iD2Éž4S<œwg)Ån£,!èGHäq1z]ÏóºýJ|è"Ö°° øIÞ¥p×Û$§§¶ÑiÁÌÖŸg4!1MèjºÀc"²0¹$ÊÔ
+ͬNèc=àýcrñÃäêÇS at 5å Ç'¯NÎ_\YA(e>
+Èx®HðÑáâøIé,dÀ~Öi(!ûšªÑ÷ú£
+×Y
+BçsxPæ4§¡de
\#± ?ýËøLJÜjóòúHêÜaAGM8³N\ªc§°÷tpÂöAÞÞùäæêôßÓ§oÎ'××Í'7Ó·³NŠo^OÏ&ǧß_O/O®Š×7WïÜhwMûm\wÖëá°4Kß«h at kö.7l=g\²dÅRì91pjîaàl; *0"á&€°ÈPÏÎÿάy¶§h¢IŠÃú9<ŽÌaÃÁÆI°©tD¿JròÞgOmÓ^÷2|ÆÑRк}»KRÝæ$YxOhFûMd2ÇÕñY
+еº<ÁتCÜâÂËvHÖ4ýÈ\Êe~eî]@²_2žÕ*ffÍúYG< (@¯uÔÿVeB/YÙ;p3§Ddœ¯BUÄå1Áä*¢(_sSZ )èx)3æÄxÆð*`UD+uj{çZÌÄîAn =¯×w¶òÂ"CoÀÐKLÆ0&¥pKŽ=GQÇ/K<1}z®÷BÝ0}#ŠÝ¹{}g[4=ýÜ3ëÙxñ9éiBäúëõ=°'ÀÁ^iÿýêLIÉœÅð¥QýBM0è¥÷HuuÁžHa%û7v+Ñpq
+ø4fšÈ/Ƶ¥Z®3[ÜÅšÛqY)ĵžv,Q?¬zÔM¿ŸCŒ®Yúfþ
à æÿXÏWK:ãMËZ=©8å2€â9s}ع
+·)N8÷_QŽü!{U7TÜ¥ñ$Kû5RÔ§à$úIqëîœJÛC© Mi¹ZÏÑÄ£Añ `ºœF+ÖÁáð)Ø¡Oåžý| /ìòJø©R&¬iH_A.¬-ËDìÑ[4ëJÄCh$X¬Á_C0a ÇèÊä¿Ä tÍ|åÈPaN«šÊîON0{a0XZCBlåæIy¹×ÀŽ·Á€,¶ïÂN³1"AfÎçpt
++eì
Ì8"`©2iÀ45ØÆþl'œÈÑjdà&×0êßR3œö6æÈÏÆùJèÄæ
+rO[76·qõø<næoIåÄx²Ícñ*PLÁpjzãñµ{^YeÇWr.|²OÆcržÝþìõûï(f=àTQÿ#8êm8.«¯šdçóD¿Ûš¬ ÿ°TÆ¢Àv/s,PWCŒËܵRÜÎm1iðF8
+gEÛ*.ç
µrÒCiÀ}á¯q3²:i©¡ÈÁજU:޵KHþ( câáú
+fRw/Ík»ÂÿÖÜÖÛ
+ã]<¯&ïü8·Ä+2ÔîE1*|r(`¯}{g~»Â
Êtùaížç
+oÙÌ{Ð GûÙîË+D8URŸÆFàHXù:©.f{¬ÝÉ[G!>³íXT;e6ѹpq»t@¢&òwž²üþÝÕŠ>îÍìK|{ì2ÝÀ%Wªsà1®ö{Ъz;$x©êŠÆ£Õ,ÛœFÛ©)>Æ_u:{;;^
+7Óɫӷ§7?¶gBÕ³<Lð~úùCQÚJUàÝÃ9ÚvÑ1íu¯-ìËnRaxbwûw;ºsíXãLë Aá;yðV:_tã·4ÌXÏ(ɺðî@¶h
÷͹höœO? (Í#õ§å'ÅsžY Û^õÞÏp¿£:º¿e4ø&aèGàIIæÛF_lM÷Íìó1'65+luEÁ3¯Ú¹\êW~Ò«œër8×ÄcÛiâû|Ó`m /pÕÈÎ jB×?@Uàr',IÈYŠ!S÷O:7 âS-æôú:ΪÓ.;EëÔFÜ5]T>÷[Åùå\µ ¡@Íùœæb3?~
+ìÔ×øFÍ\UIЬþW|)5á¢*>q±¢õ3®ÑF¡tÑÏdŒaÁ$_ÚÖ\ÁET !ràÚ¿Æ.'·j3ãnÕŠãÒ²kit]ŠÝŽÜSÛØØûàø×gïŒåjÓm¶k®b¯0>/¶*}q=¥]R~RÓ»®o(]m¹DŠ6Þ©WiÀå ·Xšò\CVàØf$ÆËFúöùØxÉHÝlH+¬³ñÇyÏ*¢`æaTêñô&×NÆ[q¬qÉË!Øš8"ŸZVcÊñºOºÈU=ÉVJÞ~Í6,ôÐlC¥V+»MfUµž±ÕŒë³Ç³Uücújk=°1VÂÏZ]þ¬ a¡ªYd§f4Á{= 5:€
+×@ºï¶Ð9ÆãR 7yE²Û·msµmœŠZëÃtpŽ!õ#*eÛlºRK# bÛúøözMþq×Î_ë|wŽûtn;ömví×ÔÓñdïuÑŽ×ÐÌÙÜÚ\Ø< zjç|þñf9C 8 |d|
+ óù.0Ë2â`M#ÇöÞPCe€ªš)U5Ë4ä3¯V«öê³L±\Ôκÿ$ôîç¶íØ×xHi«ÿ:ãæ»êg!g?°G+ø%ã$ bá:¡\gàsÊ
+6juú/>ò¯hÔ¢º]'£âLZ€
+fqç8d)}0b?Ê÷µùÃÁïë~k7pºÞªçÛòI]!±VRÛ»B¬óžfþŒôM
éÚ×ë䫯Ÿþ2V[ú¹Hã*¡ ç(eªâŽDöuÁ
+
MÝÔb¯Ø×¯Xm
ÜÐQ>ïEa ÊjÜ[&K²1ÒHeÇG«/ÆVMmÝç0áÉ~ÿ¥6§¹|0õ!Ýu
+Wš:Ã5ÇÐ^øfþÊ 5fj³ÕVšÆØ{ægé=<[ÒÐÎ2DLÙ*µ¯¬ŒOî=õï¥âMüÏbûº±ÑClYäÝR$ËBÈ/ G©UÉH}CÇaýDËŠû8g*Ø<ê3°\
oafñ®U¥ÁvDãöIÑÝý¬1SmfSgõŒº=K7ø¡
+úT#5Ý4y>§ÃQjs6Î2Ž0H-ayFÒûÂ!3ªœæ:ÐÛ×è +ÒoÝuÄéj}P'*PdúP¥åóæª5÷;oi{o:š|n~bpªÿPK<v6€Kð\5isis-database-3_cvs/rules/RecrutementLangoustine.javaUT ŸF$YGUxèèÍXyoÛ6ÿßâÁ(Z9Ké+ãy«»]8)l·;Â`lÊæ&I¹ñº|à~=R²%Çþ 0xüÞÉwP éø/:e #©f¡ÀýPH
+JSÍÇ äÅyæáÕ\Ç(E
+éxÆéû"PÄÓ)ŠäFLù`ïèX¹ÈÈKjEúLEŸ¥>K÷þ€sJž ¿J®\×$UÖ§zf?£æv!§dhW"ÐìAïâÃ#äL?â0éJÂ]É|oÅËÕ\ãà:í»_÷ ÷#¢õäÍ '+9éñé±N/BŠHjèÙ^4סG{a&ŒHû^i'ÝÇÉ^ôjªÐ4±msÔtqܬh
+壣ÀôÙXF©}C©/#&€ÌŸÅ\IÞ\B>
+jÊùj÷
+ôLHÌÎhÀôÚ¿t?µð£òéÍ©z³TÌ?Å4s&Ú/úlÎÍ誀
+/V\oPoB4]Â}±¯+õךFõü²^¿<=)à~j[E.á>D3âÍr!î=ÌݱGÚa0`°`¢ {$ððÎ- R0GÁ¥cîqœ8?ÂH
+[HÉK"<p
S$KM£eTPò9ZèaÒ'SŠqæì8kD©(X6øfRIýŽÕFãZf\#}_É«æÄÕrâê9q'9q§·
+øùXHy^Âl
+×<Ø)Eå"N-€ùDKÙÄIÔóR 2·H³EÏž²=fEÚzìrµzÒkû׿Þ^ßõÚÁñÈmw8úÔŸùØÝœÝŽo;×·ï£Ýþh0ì·Ý÷¿zÝaÂáñbãÐ6ÁÛuóÒÒ<óLG2°F'~HöŠNBvôÉ+êº
+Þ+ÓJžÂtÀô0)0P8ñ(Êb\1xÈœyeA"2 {£)'žž€Z·Ú×IÉÐ6=â«îÃÅ2Æ¢w»
+ëGNѬ¯)`N~·ÚaÈŒï@#|ÇZjªq¢µZUöc3åÁÿõ7Ã¥ß8vANÑ[L®¢tSœ§R?ÙÏpÄr
ŠTyìïyÓøX"u÷æOÀ(álŽX¬|ö}ÐØšDÉè!)×è¬×@¿P,òâ¬eZZÿdJRJLfR&࣠#®Fqýb¥¹öWl®1A\kàÆ œåàõšú.:¶Z8;€bspÍb +Ê2?Ia_ÊóùKÆIËßÓr~|Ò81Eü0€zR;©f «Ž²¯lVaxcüMž·¿#nÅ3µÁ3ÇãÞ¥çx«ìŽ||Y(+cáJD31&ê3âqtÍÚo÷Bx©m»óîÌ Ì}ézo |ûÚKrÙÄ\ê)Éîcž{œý:%@c§dÐý0ìöÞvû%ø÷_Ø<ÑœÄwWÃ;CºIŒöRÞÞ}J€n£ÝKÚé^Å€k=ÍüV^Ð2Ê:áq£øË€Ù
+_Íg8E^ÙàêºÛ3`eÊØë[T+®P)Óe#? §2Ç Ëû#g°^ï%+p×±üZ435³âaµWKßëÏ?¿|²E(mšµZö¿YÍØkÍ\3ÉÝílÀMëJsá}ØŸ§IÄñn÷°b#ý׿í+Øâ&"VzŽ<T-<C®ném¡díñó$Zö£&÷èó¡ Î[§ ·t~ãÇ3Úvš@Ò/jÃd
+ëLî³Ó=ÃÄ£eE\LÞ.ÌÒ)øý&EšÛ ßK
05ÏJÌ`]šÝ£Ú©l·æ0cÇ?æœÛöijj)ñûbÉaM³7µj÷Œž®vîb;]}?]{¶îäÝ=O÷ÓÕ»§ÛéÎÑíÐóüÝ=/öÓìÒ³qÎêé@X(«UkÕ~ÇéZÆôìÿµn;àS}»[ÿEJ*¯Œ&'ùæö¡uRvzæ?fì!t^WÈY¹Z+ê]®åõ¥³Í¥%Þ"åÄõþ³1ð·Xz€Å³búõ"æÄIxgÃ1ô³Ø¬åFÖs#Or#Os#Ïr#Ïs#/r#1ò9Zvÿ·'~®·öá®|üPKEt7`Ø
+3'isis-database-3_cvs/rules/TACpoids.javaUT 1CG$YGUxèèÍ[{sܶÿ_Ödb}¡4d©=KJª%y¬³§×£x8ÉàYjÆß·úý-Ÿ>ÕN[ÌXGÅŸ°»XÀ ~á7¥Y(ÔþÆ\&qªÙŸâ~Šeèÿ«Å¥ÐûíRu}6Àùg¥¹Ó?g"DäË?Fþ)ý¹*! '<X@.q€ü0Ÿ¹Ñÿ2ŸÙ_ìGè8œ«Aó.¹^ÐTÞúgæç¡ð§Z€#Öp~\EÊD+ÿµPYšÏùRì·º
7b«ãRZ|%¶yêËy*¿Jª¹T_DZj)2æXØá2ö×v&ð®û*N²¯û2$[XCÌâæîaÐgq€§Ñ<^oا7B¯C-r0O IGÐJ.I2qêä ²dÕfÇr}ØžKûqGžÕãô] Clk¹Âò¶<Ù`OØträÓrÇ3œ¥hf{ìŠD¢Åò:lw{û®ÿ/<Ó8e<£»e)öŒxüKȯ±%|œ€"I¥>VÕ¡º©Gì×b%éiíøß³oê\i%3̿ǟ96?ùïvvŸÛÝf;ßï}¿œ·ý'Ï®ï&=v`z%#Ó·Uå%"Óß ÃÈIuÏ2øG6óù}
+JAXÆ$>¢r1@˹"lBoÅã+0¥+)^Á»Oôïy(_r; YæAk$Â1!Cl)4Ñ5ã"ȧð"ô
à§< Y$ØXÙöà+ çqªX*YxÏ8ü×L°e,Á@fê÷Çs>úWNÐ¥í¢ CcøI©ŠÊ1е1þ!Î4èËnëeF[Iv"ª!WFI,gý~«ý¶±ÁÐ ^Šc)Á.@{ôÝ}È`B 8)ܳäÍ÷Èð$ÞŠïû£}ðžx3]ÁÚBÁwÀÊàãéàÍËéò
+£}K#Ýy+°+åÞX
pþ@2ju-æÌ;àÄGÓåmúÀ!&ðînzã7/5!ÛÃp05TL"Ôd°¹°ºFÞO£)Âv9ùsÇ¡àãFÛÆbÎC%*P[£[Ì|>b>{÷ÜB)ÞÙžQ¿ØŒmmý.¬a u` T2œýo·|°fGÅý³Éôõé߯^^M./Ç<?^œŒ|sruñãÕËÉùñéùOW¯N^_]N_OŠ'?ý|uv2µ>UØ7N\c*tBàÑ©éÀÒq×ÁœQE`V©üZKǧNj^ÍC}¹Œ=[¿Ã#³àFeÆ€â1µÉÍËÇ^ ³2}!×êg«ä<]]yd©
ŒYhg°ÊÿGt:§ÕÏ>røãâààíUÀÓñÕkbP/`Û¡f -
œr-ÚÍQ!ËŠ 'I"È/glv¿äiJ©¹å]ñ}Ìx]øì{2t&¹ð%òÉ«ÎñQH²W²6±aŽúæ\sÈð꿳W+ž:FxD1¿#ðÆ;¹
+U«SP·Q,Iùk&áH€f&ÜR.-¡s.ñNñÞ_ÍÂ8Í€J޳€ØY qN]ªKJ¹+øêÖØúrÊmÆÌ&mñÓ!ÇÒÎáoÍXR`âARÊЪ(
*@±ÇsAiä( @vüÂùsÍ^ÜMãDòÓWF0yÇÈu¡KGè#P~`ó6ËLYF÷ÆÇ@Å9g^=Ò e`ß~kDAótdAwyõÿ693yýóhTwþlzOÎLl©pÙò*¬¢ªÆ.¿HeªËe»©1QâûTOñ[F±Jè³Rñÿ×áJx`4jœ>4À{ϱ¡õjùBÕgÕgíš&9Y5j3O«8¢M×ÐçÈ/ÇÖ5$[×Y&zdS§Šš¹ô#à:X8ååÛlkœGy§W¬ŸÚ€cc|©©yâ;øþ÷µY6ÙÓÊûSŒ4-iÖÕ1±YâjãébŒŠ>f¢öÓF÷[ùä|_ZO®úRR*œµ@RmÜ¥ÝpX§j}€é·"@~o+nÒðSxn4ì"Õ
+|eºðû
°$àwñÌœmdPvºgLÉMárnjÿåå§Q®4rÈÚžÿW©DŠrg×rD&YBÙ·ŠÍ?EKK¥2Av{ácAÓ ÚO<ÅQæ$£@&È]ØÁa>`5ª~*B>·Œ"Á\Ùyø"yJÐ%w3hoÙëBï\Só4^> ŽÔè£Ù8Iüñ°çÚÍ/ªZ@ÝtûÎ"ÍTÒð*áÔÊTÍ`u×r6íó
+ã«¢h(:œ/õüÇnê©4wc¶º©Ùð»õäÖ
+òÖŒžB«`ÉWj*¶kÓä
P,w÷pP|3ísGÞ ùRèçy¹ðšSnìÊÜeg3 ]¢÷ÒH¶WÐ`&¶]Žf]ZŸ{TFåËÎ¥úªÉJšŠÀRÝîÄ:)ÚÃCŸÀÐR{§X{Ô¶Å'SK 9¬-6p7;0«è17p%{ä_LAÜÄTíF4/²±ŠÝKÜ1)wÌ¢Çül«ô[t!:\WB2y,©Òb 9Dd®-4Qº·$F²ïG\õ:ÈŠíº ÝíØñ¯.]ÃCêLW÷UlTó+CŸr%RÊ%ÖÁ-[ümó·û þ1aŽÐÇÞ¬z"|7Ñd<Ä3:ðéâ¯á¹TùT\ÕíöèCEñl}QŽ>EÚ:bnQì+Pèù[ìÇÀgNÕïysitO{'6ÉÔÈouväíQ5ùäà9TáG#ayTŠGT+ö§76U$eoA×JÞm~]|b
+|A~låÑÚ2èSµS3¡DÙ.jœ€Kx÷ÎÀU"Pýôí~9}9¥<-
+ò²«×öÝYXjz{»{Ú_Û_àhj'ÕfrÞü'ÌÞê±[:ÍÍe\Ž`;=²hÔ1qGÆW6ºÝÚ£Ç^Jw¿ÒÝRúìKDúì}Ö®aC¥j¶€ÃhJàâ"nw}.+£ßâ|UØóUšûpæD(wöÈËt&fâÛŸvèuH¯%6 æÁPëµ³Xàà%å3ñUÞ#³q8sò
+Ê:;?ºí¢äò`»[³&ŽEóÕ2ä¹vöôõ¹k`í±ªnôÅ9¶á2KZØÁ Û¢}pàÓþ0µ\#§ÈÛA
+Øòï§áª{øž.éb-~Æð0û°Q³1ú¢å×èÈ®Ÿ€µk·ŸïbS\I}×çÀúVÈÇf¡ºCqÁqT€_=«Ÿf¹AóF.ÖMb~á.N8wFpÚ[2ç±#æÎlnÛ{jë87ŸžMOßN:TXd¯ÛzF7×`,ì-3Aµ1Ëmë3ëê!îC5*§®Xt=MÒ¬zÕòv
+õUÞþêÛv1UG
+;ô¿,a7²+JmUôÉÎd:=9^÷,(-qÅ eµåNì
æIÀ¡# P
+)Ìþ=æcŒ³@(šRÊvå:;Ýc¶tjZJg·]ØRñAhÕÎí¶¶kDk"NØ[ªqAå÷À(V¯ Í2lî)¢°xSÒqðÉöúi«L:ÎàšèWs£R¿Çt?Â3Õ·^¹UÑæ[е>¥scj&*! åDÍSô¢¿Êb-yn3ϪÔäšÞfEh<¬®Òê>d -°ð*÷kæF.e$tüú1«»ÃëÃÆaâHîÇ6¯@cT¯~U®`K*Õû°M/ÞLO.ëK©e8ç·wªgõÇö
+Ÿô} ÿÌþõáPµòºBµî;óï ݰÍ~'w}iHNr5©vq|zy4y}\\8£»fœûF3;ÍZç3õmà(Ø¢%aŸ±²MÑõª©uyñpž€Tضp5ù{ýö@mkö±÷æfªp7VÍE1Ú6.ªö4»5ªýO&rI÷ eÒàcðÔSÈÛÅõ:Ì|÷n)6#m%w ²d è« ŽÞ²kÞ@~Nlïvßíó÷ÃYcÇM/ÑSYö457 at __ñë?©~ÙÏã€q¢sºþ\ÆhcÈÖ§Jº3jÃ\ÆÕñ
ä~çµ[Ly«$í;íÜsãÓÆ¿PK1862W
+ç"(isis-database-3_cvs/rules/TailleMin.javaUT €·E$YGUxèèÍYùnÛ8ÿ{ýlP rì*IÛ#©3õ$iE"öÌî¢(Zж²€!%7Ù"O7OÓ·ØßGR§€Ý°*äÇïŸH%<øÄ§©,z¿Õ³$V)Ó)OeÀb5õx,Â,/wüúsUBOxp-9ÅöÃx:ÑÔ?§û{Ã4V·úIªýK¡³0=ç3±ß\È3*ySnúÈçܱÿO%S¡ökÓ ôO¥NëÂÍxzMÑß*&Ê%f¿ZêÔן³,ä`Ø'ô&ãè,$fö¶o`ß°ï0Rq®ÝÞ&BûG<kÁDÊTrk-YÚïtª ôKÖByÊ5XÃgžÏ°ØÓÚÞÚj±-6ä2Å4OöÁM*)Ç{ìÅâ¹`Ïwv~pë¯y^Çñ(ngqŠÙ«âõuÈGp*-Ï
+%%µðaå³u.óìé¥KzÛc»þ.{êP]%à[ì±§Gæ|¶³ûìùK¶ûÓÞó¿ïœxiàÙèšoÙc£äµÌÚv!á¡HSÁf@c%!ã[?ÈÔ\KñQÀµ%KTØ)&ÀÐÛ18l"k]îeð5«}iµpÁÒeZ0Dð@2œí²'YÊà6Σ Ø# _FØÛð}£œOd KÐæJaV¯ÇÊžõ§"ÅÈ+mjmï[Nó€SpÅgW#È7ãÄg³äí~98dlïîþ\$"ó»Ú°#Ãà8Æo¹Te=ÿq5\Å,=¶SkMÙûà.Zsuk} _¬)¶Ÿ¯Œa ¯0øtz-µIÃùqÃá2°L>Q&Cÿ¬?Œ<ù×Õ¯'gýÁ »âüxxõ{ÿô·ã«7W§ýó£ó·«wÇWáexüößWgÇCàn\Ö=¯Kæµdô(f*2üû
+
+X
Þi÷l±wB!.ØxO&5ÍÂMÊÑRúðÉ,ª$âFcr"måû_;§&Îd,li ÇdŸÉíÙ^b2vTnPéµ?kv|§Ú^]4¥Ÿò6hºFžÑÎegMáûI"¯ÈlüuÆ¥Eǯ.Rl6{|µÙ#É&Qf$Êñ4óZÓ
~×Vð!œUG
}(þÈDÈ0ŽæJÍc9fÄ·P¿CÌïJÞ¿MU8>ÝæÆ,¥âÆT-žkÐ,â<€.Ka£8Ô<0Åd¢Ù-r#Ôeg·#Qõ}»0\ÇÑ '£ž·0úÚk;?¡gÈæsâ©¡ôË
çX¬`É¥SyrTsaa+«ZÈ.3ŠKc×?2)S&PkÙ\qiÝjÂ%Æè&ß)ð7DQ4ãì£í[5âXZÒË|:×V!×jßî²4<bMâ(ëê¥ TÿÄ3Â=5Å¡úÈâéM$¡kí©2Q.Ë ³.5š"ÂkØvÕ[± uÏèø=ŽW«¿ß«cVwµ(î:|bE[N€×$ÑZ¢à4¿ôÑ¢Œïm°ÃTQíǯr>P.ßjµ>Ó!#ŸÅªÌÃñï<ÌDo£¿9Ï©øöÅN6L.'RVØãv«bb¿UØàbç
+ñotª[$ñM]ÄIa'=cÖßêúwHÝŸÂéÌèHÚ5^ïqeodŽtK©Þu6ímXÒÅøâ;06*±QmÒc¥]²±¹Ã¬déWÌÍy2Ó
+|¥hëõBùö=ç-âD~ðd,ž}£Š¯Epÿ¯Žëô/Rc¶3¯ÕMŽaRáÆÏsah&ëG·
+ªfÑ1°ßªToȶí/µ¶ßøC.ðXŒÔüùÞÿü¥rE;«è[-]ÎúÃáñùðäâ|!:ª×¶Æò³3)ç%qD_âÄ?ÎPã7AÎJbá©YÀº)Hj{ÖŒZ='"h0:ñš_Èn¬º§4áàOìÓSkÍg,CáÜGgs³^¬tןªÍîÂûIÆÁ'Û¿X^莺9]£!¡9vc3V8TxtÓ&òè(UÜn ¥g
'Å8tjRλ.ÿq<,L¿QuBznÅÀBW€wQÔÎ. at y
+ÏÉ/øéî¥WÌ~Øœ{ùÙ£Ÿ.û^D ºÐå²6ÑÒ@QÐÝ+7:ø!mv,ôPÝÅZ¥o÷Ú>2ÊWÈ
ŠªÊ!$GR\ó6ëÙ~Õ~z¬€çGll·Cüå!Ok"Ñö8¹mª)1Ôpý«7®\0ÚŽhOàXt+ÊdϱéK7ô#oë¥çbôNJ÷0A«qEÂÜIc1Cý>€5AzÄôÆ~«â,aSó·Wõ³Ð®Ð{ÿüÃz€dVÈ\hJ@vÐk^HÝ'Áåkn¯ž<[õTZò
¶ój°}I¯.r·ªò÷/>tïEVE:}Òöv¬Í-Ò6ŠÈ÷)kåêêÜu¡!ºó¯âNýË£âö.ÞÖ0âDZßͩ؟Èe}fµ+ÊkÂeJT¬@µœ|É^êá$ºRåM6Í[&éÔÖN*!5qæZaÙñoÝ!rž§ëØóH§ÒuCQ§ìŒ:ù mÎcßvŽ*öÝ×{ßßrh޳œú_ªÖÚ§Gk±Ur
+RaªöDt×Ëâ+Dk{[·PŽ]-w$éÄJ¹Êi¡jzVövP_YåÈ×ò?ÂTËN§mS9Œ³\F6ôdÛµ<^Û]Lò²ÝÓS»]V\&Ÿ2à©€lŠz² çúÃím{WÇ
+?â©P6À)ð±wdv$"ë(Y~¶çi&<Ä~:sÌI3ÑlçšðåÀœéŸ,IyU¿Jêlè
+ÌJ¯ å_»ÆÍñPm+qNj0PDð.M_êÈèñÈž,]â¿DZH{K{Î#ÀùãbCjŒÁ¶KHœ
+ïÕ&ª(©ÅzOš*·WÙô
+
+ÔŒÞ}mÙÄÚÑ41¯}Ð+» œqÉÚÚh±Ð}WŽ®ói4>ëúF;Ó©+Øu+[ÄR¬(îš>ªÚ>ïB6lt¹>캧¶Ùú)2zºVîòw»ÖâEÝœ=Õw÷GII〻A-.ô_PK
+]7isis-database-3_cvs/scripts/UT
+$YG}$YGUxèèPK
+]7 isis-database-3_cvs/scripts/CVS/UT
+$YG}$YGUxèèPK]7cñ7FÂ'isis-database-3_cvs/scripts/CVS/EntriesUT
+$YG4$YGUxèèEÎA
+Â0
á}O1'è̎ƬEAHZ0`$5¢··ûïŒm
ûh&^:\¬¯of2ȵÄáAÄÀâµâ¢±Â£}dz3ÚgBîpÈHK%Xµ«œ='Wæ[²
>L³&QôÉi¢{ñ
+î¢ûpj7¢Us÷åoPK
+]7·*isis-database-3_cvs/scripts/CVS/RepositoryUT
+$YG4$YGUxèèisis-fish-data/scriptsPK
+]7.à$isis-database-3_cvs/scripts/CVS/RootUT
+$YG
+$YGUxèè/cvsroot/isis-fishPK
+]7(isis-database-3_cvs/scripts/CVS/TemplateUT
+$YG
+$YGUxèèPKa6ýª*,ÈÂÔ-isis-database-3_cvs/scripts/GravityModel.javaUT \
+çE
+$YGUxèèí]ýrÚJ²ÿßOÑ=·c;9{ìÜCllSkp²¹©%Ã`ë\XIxS~Œ^Þb»G_3úBd Få2 ÍôôôtOÿŠG3³WÒßÿþ?;Pc}|oš·wðrÿWºK×±Þgp1±TÇßûÚ+UcÊ€oö2R5žÒ'Š©j
ruîTÆ~k(#À¯10õõY1ØÜëè)¬¯¡ÞL,ªÖßÓ
+"0ÒûêàîMŽ>3Àºc`1cd>à?Î×pÆ4f(CžÜ§µÇ4QvK§æëÃÍ=ÏqJ<ŽàTGÂ¥êÚ00e¿á%QpqhA7 XĹúòÝ{*µS}¿}@Yá;}5ºCXÇÏêp7&&Le"á}œsÞŒî@µñÞW[j£óá[w:>eSfRG㡱^¢Y÷È;Qž¬µÏ1Kõmý¢Þù@58wµvN-šÂUµÕ©__T[puݺj¶k6#¶žãE$6ÒQ}f)êÐt+þÖDî}žSŠžÇÔ)òŠ@Õ+eã
+uíWû<un᳡¢ŸXzžY)»ß²eškœJ~ù:
ÄàjšôìB{B^œÚG
+ÖM^Vö_ìŒÚÿ×í*Õ
+£Ž·³³W²+xf(SÕº¿DVþRŠSñc¡"ôág0ÙØªÀþ¯pðËáÏ¿îÿÃIò§2Á3`ìY
+üéªÜO-6UéÛ!T~,0ÆÚ°Cøé aþ¶»ÿjwÿ~;<øõðà%OOjªŒCžqáϰc¥÷ÿÊ-aÏPÇy޳j£ÊªÚq[éQÈÌ+êÁ?ŽJþuR&Ôº>ML+ÇúpÈzÜÌÂ/Ð,üLDXA6ïÒtͬõÛ[U»\è·Gé*=K7î¥Ô>·#ź£ú¥rÉ?²ŠoÄ$µô±ªT:ôÿX×,öŰö¥ÇƶlÜŽ£¢bg9bøiªæ{°
+6?êZ[¥ÅÌÉÐjãwlÊ£tyÔBY Ùf©ÊÌJm&n0[]Rg»døa€K{¥'C%=m?ý¡OÆé2µÕŒcŠÉfÊvv{.õÿéZrCêžÖJÛþü$*u?Fòdò)]"Á»é:ê]k*öh1œÓ_ØÝrošŠÔëÁ׺`tYö¥§1Mþ`§5F
w€ûš¢jœð¬R©<+Q)DÇéVÆ:ÅÊÚ0§÷|k®Ü2€ÎsV<â4ø?tv5èlBFìÏ× Mã@zÑj¡ªÚ]îèt¢€_?/+AþIŸa#ôI}*ÖW9@N×ôªæfýs¬ÊèjÐ`ÖÄÐdÂH8²]«üšg»Žèbí¶sÄiB)7VAü]m"*8DÁLj÷¢tâ2° g
+eÄ
+EG?èrjoSµo?Êc«S©®öѧ¬B9Pu]¡v.çfÎË2âüÓrÒà""(Cÿlì0eÀiø DVñÍ©çveÒsnCBCŒ-Iv!€ökà°Q(ÒmÉ®Bô£t¿ú)-éI²z²µr)C
+8#=ÉØ- ^0@Ó>FøŸÌÂòbüË)ºVä6®Áœ~ÚîtépÙÅY0ÉBÜ#:Qd_m jþáºö7hæüzpA_žîy
+îLÁÆ7o`Ä?í§^N/«W%¯KÀ'ekØóh=Ru»ß-x¹ÝËÖê*ÕN«þ¯îiœ}^ou;õËZ÷ªÖê^6sþíójå}æ5ùøé«/²[è(lÌ¢uÏ| =ÃNî8Õ~V|+Mn£ jè^ï BGký0/^=$]n#Qr¯ ÅT0
¡+¹!0sí(ñ6"ÞFÈCÇclf·$Oæ€ÆBÝlÄÚ(P]}Áº{L>HRfάM0iºlò=Èô°þ¶öí¢ üPxñ«2°å|T,¹C YNŒ±
)ŠíAøýàëu$â9
+É(õÌ â
+TŽŸÞpÔØê(XœWWß^œüeôn«`"@R·÷GÞË#ºý $§îà-ŠqC7Mý?Ù àH|žcK)p22tðÓ-(*`Y6±2]Œ`ð`õé1×Dú-"·xËšŒØzíÆ¥bÞçe×i|ùâ¥1Ý0£9à²ørHä«ävR¡NåàÖ:aÃcÝŽLbM²á£;õXŒK¿®]tíN»Û<ívZÕwø{ëÐ×Ö¡Ç+rîî|ãŒx6Yý><¶ÂM}*xço¯¿Å;èWòíRîEôBe}ZFÇÃÇ·nvÿÒœ/ì=Jþ4ÅÑ}ÿÁÿ^wàÛG)Š®ÈR-T¹Nó€yH³ê*ûo4ËkF`Š7*ÓÿîØÄ`eè) 'BSòdÃçt¶Ô+Å
6>YÁ Î\ññp
+2Q=Ö¢Ÿh¥Œ<ÇtîÇNFÔDW$9;ç4ZIäŸ$cLÆ ®:Èù±PLéOýxÀÇllϺ"^oaÏÚ|ÌÓ±ÂÁ
`ãkãÆIß3ÏR:Qî](ô ÈõÈ
ûÏöàåÏ.â=;
+Pæ yäBóúÀø$/¥ŠLž¶bÓá0¯mÖ~$€°a#9:(8üÍ#-Ê=LÞNJŒõ¢è9¢õs_Ùö#6B
+S¥¢:îóæu{³ê<'ñ\p4÷ÙÙbpDgfÖÍÂj»2óÉhó1Lžq
+w@ </â@Qç<*BhÍùÁKkþh$nÊCîÚcëENîžÅÆjTµþ¥œÓÈk1ÅXSNÇÍSwÔÚUµÞêV'ÝËjœÑ©5ªãZ÷¬Vmmý÷ûo#o}úòä¶ù~>]·pÒß^ËònFiV!bc¯qsü:·€T+~dÒB¶ÀÇ*$5¹`p¿¡ÖÿuYg«C(gŠ[5CÃ'ûeì#`¬ÐnŠpE䎎®5Ñ4äh5è'§xsÔÖu£As-[³ÞG×ã-®YLVeâ;¹àÔKøR"+!XdIhãŠð»ñPEÊçÃ`?>D[Liß)ë7tëTýÂú«*I<<ušÒ>¯¶j'ÝF³ÓE5Äo[޲ÞhÅLRæ-^YTZXz»0f9%óâ[jäpð( %±apñç2ÏaÎDQÙatìOóEMÎ[î>>¢!ܱ¥®ÈÅ2Û1êâeÊzØÕ³ñœáKÛ·ì¿|ù»
+/
+IJ
+ø=?°+â\óyöp?ëÛ£ýºœ®µÖ)Gôðq)c]ûC°ªYü¹\Öl.§tñÍïBœTOý}ÏžD^gpkI>JæXš@À3Ù4äÔx(Ä3aÆk)³CRLSò¯>]ÿà|÷ž§ño:ŸÆœáV9ÒßÄ·ìrDãX¶8D¬@ÜàUT1oí2@ô©ýª{OÎb¿=HâŽÇÂAõ^1{P°Ë.rZŸräæNÎdëosp¡h}ì\HÜí1ë¡Ñ7w)Êr}$-,ÈÂÔ)¥þæOo`¬YýÇ7$=k5Ûíî»êÅu,\T'õÆí»ÚWµãzÍùÞiU;µ³¶ÒM¥ye«Ú?Å
+_ÇäîÆèîšPÏÑÃãC%EòäâÆqÃÏCcº²
+éo,ñuÌ5,ãP®7œÍb·öFÑÇÖ®Äq!Ï5Šëa'úö©2šÃ!WâW1wÄx9ýš®yGæniFç¹5PtQé(ÿ!po¥cú,ÞÇSœw+ÌÉô)¶ßÝÞ6
+ýxEÛ(!Þ(}oX«X±bõîÞ3Ú¶V&}LïÄ þ÷D5{Ñ7SfÚßÌ\°~€Œy×owú ±Å¢$+1j"wE1Q¢àÛIŸ!&&X`FSðâŽÈ`š+'9¹;ämÂØåØ&e ù6a¯í4Œtº\͹L9åàd7ºo/n>Ž3Ã.Í}×W=,6ô)cš¯ãìÛ«cCŸ/é)UYQº;WÞlUÚ@zOZ¢FnPIzʰ7²§m_ŒvZMQÇný».¥ê³ÙDàeAcièv'è|<u[è/^øëŠܿóçÒÛð
+£%ìË«ãóîûZýìŒàáš`Ç NŠOq/}990¿eFΧn:ÄåæhÄIœ}\mŽJ±ú°€°€]ä±àz)`±1aÕÆ-lgÀóµqãÄí<øÜ2Ëa6Üý§Ã÷ÄðgdOçŸXivè4«@¥
+É=nüD¶ªªHHÍtFR{œ€0Û/7ê¶ŸÎüÑ_eËÀÒÖœ§sïÛwÝ6ØÓo_}ËMxÿ&\Î2Ž1Eæ`œW>nÜžó÷ôØÔ§ÅwKÞ§G¹mMÎÉþÝ,ÀºèÅqÔözö;ö=fqAhÚw&ŸOÇi©&Ší+I±MT¯C·3œ`QÖjÉt·!ŸñáœíqùŒt³¿fBx±CCN*m lþg$<||cÔA_ì
+)þEÆòôÊJèKAQæ¿eTÃé-WÅÇS
+DÛXЊ!DmVoaá2$¶ùXpV÷Þ";,ì: éÕÉ&sS|úV\'€7SrwÞ\6Útøúä"°£;íMë01cÚsEZ Š cdM]uu*p N%®0)ìkL}3cöØ\ês
+O
+è/;Ê+B9JèMQ€ì$ÔnYá)ã}€Ãçìß;ÒÊnÿf5PßLpÁJ¥'åeáHÈ`=¡-€Mi·ñÏE·ÛègN¢{tŒKÿô&ìÅ/ozð3œŸ,Ï*xÑAî6ìé3KÐë6l1M'¬£óÕ«]©øÙb®N·UkÔÞ!êê4í%Ø[ȵQ+o×2%÷Cè«jÅfÝýŽ×Kpüù]$[na7~5þœž]<ÕØ®í ¶tú¶|ÀªÜ¥ßRìx³ÈŸPjk»ýyôQ8/²(9[°I;6µwë\ryNþåzÔ¡Á>¯6ÅÇSÇdÇÚû-Û4$Ö¥Õ[¶y-~Íê#a×<ädOð:ö®S,kŠä
+ä3Ùd»'6d¶Yý YI;cÇß°ðK2{â$è²À|FF/ãVÕX£w¡µº`mÀhÖ:VjŸoПÕÖYœÑmŸ#tTmÕ«o/jÂ[µJCý· *'!®ÎZf`5|Ä㌲ÝÌ o7ÍQT;K,['7b®;ðÐ÷pÌ¢ÃÁà9TK8Ö.÷°Y,ŸÛä²ëÖIIÖ¿$æ³å³ oÞ:ês¶ÞŸöMç1-îËK?µ9Oú-pö¥ÂpÓáæR²
+q?
+èZkÕ±µu
+¬=.ŸZ³ØXfÍ ØvºH8eÃM2?X&ÓÛðYOvØôéN;«
+/ùÐvÑúhİl,}Bo0ún±>'tÏ©œðJ&qÎ6wMÈCØ84ïõÆbý8ÊÃï
+b÷Q;ØùµC·Œ`ø3_üm
6[vXzUÛ¥Ž5óÉOÐ?uÿ»In7o»*O+;ØEÜs)ϵV+ñ·ó»Ù9ýú²Àëz/yÊ,RÖ%P9º×ŽQ§µ`øÁF¿çÀð7mônœÆ¿qœ9àÌf*9hHÏ_1pvøQÁk0ø]úä\ÒèínåîyÝŒòStÆOÞoãÝÀ!pZã\lfýMÈ4NÝð3{ö¥ØõgKæp¯Ü9>Ós}/Â;ñ§ÍooÒòNü321n°|Ã3CªÖ=/"pPTÓÝÈÅcÿeªËcVôÏbïœÖTëT5ïÐØÀk±÷<Ý_ðë#SDw¯äD>ö®Å Ìt<ŠdŽiÈtKIsÐ¥@îèmý¹¬£.
Üó"a¹]ÒwV¥]ÿšÊì G<ø÷Ž!÷¶aÈ£ärþBµ×š»q§ç ó]Î=«üW¯=ΩO{ýRžÓöJŸ3¬òµÓÓf+ãqbû/pzbÆITYÎö«9víöíXð#¬ïoÜúÈ8øÖ¿Úó{l ¬¡À~Bïïh"d2³¡k1f;¥Óq3Šõ#BäçKBrô'tù>%ÒDg|Ýó/Bœùk§ÀÑPKq®é6:µ8Ðrö+isis-database-3_cvs/scripts/ResultName.javaUT ÆF
+$YGUxèèµX[SÛF~÷¯8€qŠ)Ðv*l4cKI6!/EZãMå]uµ2a:ýÁüŸôY!\lø²û]ÎmµÙÜׯjÀØ*¿Ðâlbàý¶·¶~¡OéÇV)^il}jÀ@HÎÊ&pùM
*BHÜB»¢( ×êL³)à˱æ
+56çLó}žP%$Læ©(§¥á 0n*MSñ}VÊk0ëij\œézCèrÉ5Ë`Pfš©'.NÛ²ÓŧpzQíè°Ö
ÀÌ%÷ü^ÃëßÃ6!Ô45fwÌr
+*§}ïQîdÌÜlm=`ÿÆe
++šM=,SeÁÇeÖ$\Çntä#°Œ8¶Àò¢}\l&
+¿å3>Ó<Ÿ4æµBß ì#Übž=7:!7ò0+\{س:-¬*Æ6UÆ&²âÊø &¶@uY
+6ãàjc`y-ŒLɳÊ&.Ÿ ä>1Hep®ÖQß§¶ßd¶ ®LZMøžÇ qd,áðÂvv¶°UahiߨÚn·ÛÚ;[0-r
ͱ±ÙhlnÌ
+Œ(3ã±)o}e3VÛ¶5Ç2H÷`{úÏTÝí{[»{;êE²§!¿îøóªäÞ|&èÕŽ[í-xSïé±; G;|ÞVÿ ö§ô»íݜ휫õTçžÈªXöàŽæ©ŸC9KþbgØ
¹)ö
+´
+`yµlôúŒ%Ú¿ÊKdŒOöç>4KÙ[JÖô4£
+(0+ØôvÌ5®(0õ)fô8L/¿AŠtñwÉq»ªüÏxI
+ûËÐó=ÀÑvú}Å:Çî*%Çò(TÒHD8~O8(»W3%Ui%ê[,:}YUBývʰ
+Ny
ßò?*K<ãdáãL âC¬T«júeMaFÝ1%º ž\N1Ê2>¥@aççJ
+Z;VrNX
F«)#\bNfU\9ÅÒ·šâ
+ú^E"Ò¢rÒºë$Iç|Þo!FBböVàn=ŠÎšÂ$Z;Ù<HwÊðO0YÓH¬úv<
+ÒŽ
+ZSl6j
üBÃÁ?Fµ±8=n¹Á÷s|è¶ñ±ãv¢xàqqßàwñ»WU!|;EÂtZs:ö\#LWï÷°*ÕS·ÑÂîYÞ¡ëu+è»°=<*q)¢ÖKb:ý×±"§{ò¶3Æñ^'ÎÙÅJªÃè0FäÓ[,4i€ñšÈǺ@õÅ÷xàî÷ôEI>PùòȶÙG1©ÜÍL2 PùºæDOs¬ßqÃ#*§>ʪ¡;ø¬û% s±ªîÛöüÅf[Ýu0ô-Ïvn[§täãÜZèÀõû>
+-Â5ųB;]Å4rûóòèû^4OâŽÞ}1Ä€C9â8E³ò8ÄÖ²ý0
+c¿sÕj1<³ñ§ðÇó.[ïêÊì\5OmòyƲ³zà,7qŠÆ}Ëõ"Ç£2»<Nð mÉŽÏè Tg]ÎôºBüè¡çQ0¥öé^RâöuéÂ#+pcÏ0ñÕ£á¢SOøÆÓï977WbœñÞmÎ|íÍ·u7ðÃ0Yœ¡CU[¢õ =pl× S]bIJûãúïy±îäzTÖªR^RÀC¥ñŽ5ªÓCŸcâqó"²ùCñxJÇÑÏ¡€È7Ñ*zŒSÏJ©ª-ÇãEàMøü.ù:3òØ£a]×ýqYkô
a²ÿ\âø`úLH/Û#ŠÃëÇÕy^|êiödÎ_JçjÑ|^$_ZÞ:^,£ÏÌæÜZªVxüõüز#wt÷2á)+1b¶Ò5»Ãoo·°°äÅüÚ¶<Ö pïÜôÿ>³ÆÿPKct7ªëŸm8)isis-database-3_cvs/scripts/RuleUtil.javaUT iCG
+$YGUxèèU[oÛ6~÷¯8+LNZN°¢[nÉ64ÝöLÓÇ23JÔxñêùïû(ÉvEJâíï;WºêoY0yåtül0Ðem] G¹"mÄöan]!d-Õ
²ei+/-
+]âγœ*X·9DUvÁ(eX¥ÓÄé^hé^:.³×~©ýJptÐìÅï¶Fm«Ù7Êÿìl¬_ŠôP³ÂüUa¯ËlxhW ž±UàOá«zaSáVÇãÓÓÒÍJVß7ø âj!Rbp×\;øbJoÈsž;Š<ÓÝ¿1¬¬#YÙjSÚèéj·|gä9ÑP9k§=$âm£ºfça9|àµN«)MÄk:é ï€ëø§trÛL`þá|29¿Èir9œLóËFæÐ1S× ÷ºjîÆ:ÎV€ô>Dà èè¿Á0
+¢gBùÐR*mtØè1¿³±ÑQªiºZÚìâÕpÈ"øž©lð®i_¢à]¶5A4
+g;C9
ŠN lrJwËúhóžoKÌ÷Ñÿlaö6®€i6HÓSO&#Û¹N¹Õ]slÍFE3"Å€+bŒû°
ªáx6W
+@Z]Ž*UL±4,ØùÄ\BÖÒpt;Û ÙnÛFºKgð
Å ¡ýºA>â1ÈõÆ6#êl±¥êj¢,š²cM@"óÙîjÏöý
+?kÔ_ÒŒ¿Ë_bŠÑ6Û¯·÷°UZ÷¶Ò(l±fÑøg8;ÓË0ß]WÑ>Q-ŸxüêMÖÓ>ð±ü
+My«Ë,GaÇš ,è!8D§w/ÓôôKÆëæ^šüº§üÙVàÅIo€¿«Þ+û4ùÑ{àRâuU>»Ø¶Ú7 âiÅñÙAS$] ®ó©«¯÷g>©³³c K£ÇÖZc:Ø©#€Ñí¿¬Uت${Õ_Íé1ãÓè
+ýl¹?¥å#ÂOá;DCvÀcäy.òçHOã»ýªmé®xjóòÅçið?PKªb7Á!!êOªŠ)isis-database-3_cvs/scripts/SiMatrix.javaUT d+G
+$YGUxèèí=isÜ6²í_ÌfË3ÒÆ¥2Öa«Ê:J7/J¹š!FbÇl9ëÿúŸú7Œ/¯ ÑøHö±\òl4}¡5²ö¿üõ!Y#{ñâ.ñ¯o22ÜÉææßñ)^{±GÉË<ó£1yF£_ÝÐÈY§©]Þø)Y$ñuâ~ÎJIϳ7nBwÈ]z~%þUQâgÄŒ8Aaìùó;|GMHvCIF0%ñÝ<?yEÓ&n@Îò«ÀþF)Åâ.ÔÓê«;Vâiž4ûG;úð>!·4IáLšFà8!C7CÊ/°ÜÈœ#EKóËVzx
oâŽèPBßøA@®(ÉS:Ï1¢`òãÑåÓWdzòùqz~>=¹üi³ÞÒ[ÊQùá"ð3Ž+q£ìhGÇç{/ ÈôÙÑˣ˰G'äðôLÉÙôüòhïÕËé99{u~vzqàrA,ÆD;É
1°Ñ£ë©løO Øš<rãÞRðú·@Kf O
ÄÑ5k&Ü!þDq6&oô%ëbÅâ¥dÇä(9còÍK
+L¢ä,pg<&9bxòd48N3=²9ÙÚÚzŒõdóÛ1yu1ÅV5¬m<|ž±ÆxỠʷίî+œPPoL¶ÿoÆ
l}³ýÍíÍ-ôز(ìü îëszëã¯m²ål=%_2/Ýô¡Ûäë}öàþö1¹9![ßb
+MZ@SVË6¹õ°w@ÿÂýËœ%þ"Kw>€°jÊqíÌÀ®4kÇßz9GøçõNGÀèuyãÀûÀFÞœíß©¿ÛÎÖ_ŸpÓj*vöæfqbxÅ+ÏRÚ}Cà0£Ô âëk?ºv^Æ×;ÝÀÝÔuW.ºÙ
+þA
àzÑŸÖ¶'ûÐ,^ø®s÷â(£o³vÀ·3ºà°óÄñÁ[þOýt.Ô9ðczúZRÛ oŠQæg>M=Ý æà~²}Êu¹sÏ©ÛLxyLá¿^°ÔMãè(ÇÝJÅ<p»Ó^Â?Oâ|Ñ·P_ò.(³Ì[?»ëZ ;ÿŠ)
+Ò%2Ð{zÝ¿>ÍŸéÞÆí êÝú!ò3Nþ8«©\v·Ð}wc-ÜÁÇÒmÎ{ÍYàŠiÑ)ß>Ä
+ÊbïÑWFæîÌ@còkÊbèX$^a:83í`
+GžüEâßñÜ!÷KJÇè\ÓîE¿È(í°òìôÞ(Ä5®Aõüÿ]åhýUxÕïª%ÛÉþÇ`<l²MªJ®°±€²ØCŽF0¡YD%R@Ôð€|<ã±¹:ÎU!:ÁÜ¢$,ž MóXHa$ÀQ:ÿpjòÁç'nH#!)ŒD96þøœ*F®ìÛØ÷HÚ
äqIh*ÉSZ!)MÛ(ÅkÄ)`lI|€~UôO§.Q èÕsX¢q]UbªTU%j<rÐåÃ0(Ñ#öXÞ-ÊnøMJª=71éVE2c+-sJIGWyϬRQ¶ýgCE£Tý(ŽË5JPÚÍÆøï;ôäߣ5átn`ÝÞbÑtª=À ÞÒL¥ÚÂ3÷#oÃ6[1Ên±¡ŒíŪE=1}Cà^
S[NpXŸC£ÌZuÿ-Bd,nTß>èË'#ï áÙkæ7
+£ŒUÝccYãzÞ0*ïu1*àI2îa7~7ÞØÔB5L²d÷£#]Øe]*°&éhš±ÉZŸEËHZiaMÐxø
šå}]Ð@@ ñ*[i5fÉÃìËÒÑ«Âã©ÿ¹ÜB^Ð$ŽBp²Vx¯KL€ØEqÎS,ªœé"êªðXTòÆ·P¡úF¯°šŽùÊû
+¯*n€/ xdpDFub€teLw8k]x ášàfŒïkOßw×JQÍÓ¢þÒ0m©.ÿ[þ~¹ Éám!Iò?ìÞcZGÑZD#¯debN!p@Fp-8ÈÞzþ|þ!\xlZ"5Ð=$jÍ~Žî(
+¶Šjè(§ÐzZI0
+RRÏ4ß°'·"g0Y "*ŠOpªÚÊ)Sªêe#(¢Õ«]muHø»Ç ñ7=§7ººúNÄ_Tûe"1"_íMŠë5äF>7ïÐ
\{îÅqâù°,ëçÍ_êFÀ[o7RékêßWÚï>Š&i~Ëb?ò[îCEá»wøÇýôDö`EFkFâ@ܺ
·^Yã2ØÂ1î€Hà-«_)¡%ñZ0÷!4û[²÷M^?1tlu,f7«>áI¡î
Å!{GõŸK±`Çg#»0ó5кU6U§EÕ< §fðì}XSÉsVóPçxzy~ô߯.Î_ÿóôä`\G³EbþåwÑ®1§øœÜ]tôz8@·¬yÑ{hfìsÛÔ-³eWXw,mr
+
5O'Óc4ÀÌéð¶RÉKë.Ò}NçÏlÝËÖuÕäF~fW*æT3Z¬µBÿ¡¶ìA:«ÛÙùÑ^³¢q"»(F>×- mËÝ(çF{¬2]ŒºhÔó12fTÝF¡6VwñÎAþ^*IÆE7±?ÒÜ¿
N~E8yqç·¿åù}YëÙÍnÎÀdÐ@³j%«¥]ïÝEÿÏÜp~ÐDqxßóCòsG)=à·Qø'¿Xú<r¯ D-Ÿä)*K5ÜdüÌÇŠ9Ÿ_4`I«ê×µy§æ~Ë*Žar¢ûªu).ÅõÞT1[úıôú$C·Y+${QŽšðbÁŽôÈM®ócøè-N¡clCAßYM@üTÉPº1{¢Š÷8n3&Z_÷µ8\Pî
+0×îÞôrïÅë3èæ/.ϧÏÂn_ë{úÈè4Ç¡SAÈù)Yï
+±:œ§MGH\©×«<±õžxy1Ø
+Æ=)cA4§°Ê¡ìªÂvc[ÄŸ®Ð¯}Y>É`/jð?X%tøÇvº8ó·Œã±
+{4Ó;°ÿä.îcÅjÜm ÚùÆ®dðigBô¡Ì Ž1Ï^H÷fA >?ÝÝÜ!)ùN4MýwÈP®¯*ãxUwÕbÀÖ!NUájÂn®TÁÂB$,Âäø€*4QÅÄ®
+SÈHWX«šRÙ5Vv
+q©u]ÛêÂËÜ?ìJXíµ±ÚJÕï°êwP5S¢æwM5ãUv»¢(VøZ®\e·#ºÅM1©ÉŽ»§jÇa¯AÏ *š$cN×{Ãsýyµ2ü>Ìbðº3űøÍÎtfË(Ò}z_D.°ÊcÃÏøØÃÃS1Ѳ€á¬³y²u2
+F;ï-²yOhœZµï×§àÅC?åœÄ?p}û«Ië,l7jœD«Yë:¶^¯6Ó6éhaŠ¢xYíËZBXžg|ücÐyf=pK^8>+}ÏôÒXim+kÂWG§Öf%elzÚëïïo°Õgnß,7Ó£wÏÚD\iõÁ]0KîÞçG¹ê8ÔÐùÕóÆþ®º|îê#ôOÝØfÔ8¡MYÄ¢=ÃV}Žd7U®1Bޝ:±WÑÈJRdÔ»qé²{eE¥0uØÀü|hÖ²/"ÚàæñÆà-³µu|hµ
+åÛÜ©šf¥9ó:_ôG}¬PeyK^êLoàœ
Jæj/æv¡fþ¯×0èb
k¬«2¡¬²x4Ò奱µÈkmX_ÓjÐø©9)þBº©õÛÿjM:;s]NÚbÁ{8K{lCyEm^èsø ³*õYçÁ÷XX~ÝÖ[±€2Ýæ~,Î矮g9ÇÓßíBú.§CLd xø##mKEE&§)S«/«DñkM£}a(},ó9ŸæûÔÍ8m<Ú lysòêøÙÁùëÓÃ×ǧ'/vTÝ>69ðQn@ÙžM\?#wÄœýbÕ )À/"Âx~tÈj;x!ØÎžSž?žKÚ&
Kê0!žuhóÈ;5U(ÿf
OÀp\ZEþýo@öUeE1rž1<\?
+·ÈcìÅnúv1|ÌW'Øûeç²Ma1ï¢H;ê·
E3ÆaHI
+®3PiYF»íœóœRªuÝŒ¹Ëì3RÄ6ýhêØOoi²ïÃÍÚôc9šm5%ÔËg Òáfuö®×dð»
dvÿ&Ò$/úÿ 2ÓÎ]T?>BçGrÝ€ÊuŒFKXÍDÚáÑÅ£çÐ¥_Nq/zú¬dö`XøwhËèJŸÎekÑŽâQæ1ÜX%®Òš|ÛÍ?¬w`¹Á]Jüx
+} Öü ëèï*}CŒÿjàé¢w¯Ø'§š(³:ûTP$ßÃø}W
B§æ êáfð¿àÄFj^¶B AáÅÈNÑ@Ò\$*¹»ÖrCt ãu&*
+b}5²³ns,÷ÁÀ-?2±ïø Â1"ØèÃà_çY¶yµpÝ
+~ã&ðûÖrµ^MýÅr ûÂT©ý ×:µR¡:îšâæ(TÂJûWn±k£ñ¶ŽXRÀÄ-ª¿¯ AÔ=ErMÝD÷*ÅþB0žM¬H9R8]þÞmFkžzsŽÁìó6
¯ÊO¥ª*²ÓùÜù,ßH ý-çÝ?E~òÏŽ{²S©Õ©V0(¬FªŸÃ9SkŸÆM>ôcW2jV ø§Ïòaí3ɲãü,?°OƲ×ËÎŒ²Âú4+r
+wRàýSwÈÙïŸWâ¢.>ʳŠõJk
ÇZDwRUUµy«AÉQõZjaFÅœyöY×~PÍ«Û-«.îÒNg$QDÃÁ\ûÏ^=·d3Û8JÑÂcìn Êò.pÛ?À<yÌÛŸý²§y eßMó Qqèà*à¯ïQ6í³åsÜ0§Aß2£KbHÚ@©Gqâ%|çUÏ»¬b6ÆõÓªÄõÈÄÍ!7bu& Kãüêù Gã»å
%ÊÌLïÜP/Û%=ÔË,!ê8º&J¹¶<Q].U4L¢wÊ
+åú&«ÊUÖ4§
+ä2Gy-¿È³÷*ÏŸË<ï³Îs
€9ö5žw,¬_
+Á¬eQÊý(Ò{¯;mX×PhÙežK
'K-®\+Z>×¥ªNéq<Ë€Îm×êáÌø#T]®{<u¹V= Ô±Z
œòì®×ýóç®×ªãU*
+\*ìsjmœñ2-h\°šÀúÒø¢ö°ò rc\ÖIÿ
³lâYuâKȧ2õ§l2³|(fÉÊy²aŠLÂXÖY¶Î~€
KäHêâç v³Ê\zùî!~%]B§d_$ý{¶ «×*éþë€ëO.O÷O!ÍÅœ3H#öñ-~^;Çržû€:ø}H¹íD9W±7Á
+®/·D³ŸhÙŒÖPùi[ØGd÷X_qUVRwQËÐôûÍÑi--± ®VouUy§Ur,f³ÍÊk+¶02«0Þ.hÛ°Í4øK\²®?+T·úxõ®µ¿ç¬IeuKS+JV8ØfÚyAÛQYçUŸ©hËÐUåÄ
+ug¯ZT§ìyIó=3#ív;fòînXÞ#*×0Ú;cÍÍCc4}o!êÄ%|¿¶û»XPÜÇ¢C?Øn§e»Zån!ÅÕn~Í©=Öo_Q7¡mãòg.RâÞÒöÅþ|Àž
{ôW·-KâEñ*Ô;rŰ"F{ä<,_ýîzKÎg.úζÂLXi2e%+ÚÜV^QO^©m[)Ñ¿c¥35w§ü
+GµL6g?ªXá·_]UVQ±¿®]`Ñ×U÷àêž|ʶ¯YnÚÊL4ÇÇISÜyñ
+Ï£8bSšóž ¶Ÿ€·àl=üDžZ×ö®î©V÷Q@©Å6LÙÉxÄ9·lp¶+&UYÁe^ɬGVæ¯qûn¿œŒõ0]ºÍRßã4
+ýŠ-Ne!--œ§qûâ9þJüã^9^1 ŒÜg)NACR1ÍŸ:sÌ
+"ÈP b³Óü5FÑ£;¶Ö-â-6Ú,É3~P~m°Ç6Ç"Þ#¶KšÏg7%ÒÖëüÇú |1>GVÂc=äŒÔd»¶OŠô_Kµº.£Ï2~6ÝÍ_Ïî°žþ0H¡J]ÙWÂImpR:}ÇôÙŒS÷Ï-?¥gÒÛWv/p{/ÛöÇ œèÊPŽZ}W41bQ áû^ïbcÛ?YVž`>Ço騸Ë?lì ©ÉÏnÈÕªàkd2)ëâ"juuÕðgK8Z#×*䯩éõ}Ù^¢TË/ÏWHÜÎ/¶)-=6س߻ôCZ~«wÐb,c4C
+Gya/°kß=]2^òG°lÁ\aÑ6X
êÇÆÏ¶2:ÓéÕv»¿¬ö)i^«P³V«¢¯)ŸJù¡¯Ï q±&ÉâXŸÿX&+OQ««²TÞ/×X)GßC12äÌšŽðf}<ïÓÆÄ+Í:??(f°ø£{ìöóB¬.|ôòn!Ö¹TøæhZÒ@xžòFqp&Ï€ï¡S
ÆÇ
+^M,¢ÀwdÜO*.Ý
+*Tó
+
+ÔfÔ¡e£¬ŒmwB]î h¯ÚGì4_P³~.ÏžéÜUR,ây(ž<'ÉžÒ±¡ºÒI=©pjŸ>ËÚÆ=n6 ðsBKe¿XPÔ%€²*Ýñ²z{Fõæ!1çÖV]Pîlf}ÏJ¥õñjlÀÄÊkž€i»óu<Dÿx€Ç2žîËO/Cf÷`Xß-e=sö×¢
+æRdm,º:fÛ¬«BnqŽœÀ\ÙF*åGgú}1vÛÓTÙ¶NAÝ7ñü
+àïOŸ}ê<yúŽ|Ã˧l;³£.Q³ºQF3
+î[Ëæ¶Øi·Ðd¹gÔ'pÒž°Ÿ[`£ërRìÓŒvÀ[Ã{AÖ®uõÝ€x7©œCe¹Jw8àTŸåy·õ~FnŸöüÛׯžÛXYYBM,PH+ÌžTšºÿ8¶{*ÜÄW¶¡ä®_®Œob7š¯«,göÊcCÚå&ærr³85Õëcåêõ±rúÆ%jŒY×á'xµvyæÔ_ko _>k«@-5àuèG9+¬hºÊøâñcUqggký*ìP¹PH¿ÍÙ&:#Ì.0#9EÓDgÁoªÆr=e3`c\ÇMÉÚ®1èeí96hÑÔÆÄê)Ie¢cm81ÔSêQµ¡y`<ÀËedÕ M¬åEq| Ã<7ñÄ&±LO+;3dk@#Ë)OTæñÅ+¬#å£À/Bìæ<Ž nLþ¶¡ýäoäâ1+Ëì±ÇE¿¡ eCýçÐŒáeøU0&g ÅóG²!!KUG9øgGEVdÎŒjgŒñRs6ÙËÚ9ÖÆšëÌÆs+qO)3àÇT?ó^¬géÀj>z^.±ØõŽ¥²PX߯CÇëâ ZYOã
&ž~$ 8ê2Çj€rŧµYþ[m%7}¢Ý/µ?u¶¥
+åëŧW9?E®éȵOrÌÑæð¡é³W'ûÓNEöØ}׳eNXâ3Ø%ëèþ@ûL/Í[_ÛŠ¿€ë¡Hõ€5Àc浯;¬¿«Ÿ (ÌçVv1Õ>Ÿi9²A_No;®ŸŒ¶í43ÑøÍ\k8ÎöySíTRû!
+c7J|{í¯pO¬ÅÛ*ï?ÛŠéZX7Ñ]j[sè_;ÆÀŽ²Ï¶-{P»l>¡<ñòÞ{&oÈ1Øõ€Š(ŠíöÛ-w[q€ñ9ÃH»ïÎ4E#Ïü8tÓŽ[,ÒãÔè>BŽÛ/m6ôÖ§O/.þ€!Šnô#õ¯o2ÕF§ÆsÍWitíùÏXÕ¢ŒlW íH+54ž_HÐë+%,,ÔôÂ?^zCï&|`Z}¬xܶs>þ~ÜÝ_ÞûÜØ÷ãzÓgÛ2³îybdûæ`*tëÎ`*ðÒ§D¶í ŠÃkþ¶óg:ÆÍWz:âOž1Bßãþ*¹+³ª·©)ðn÷ä:[<ù_UÔÌN«áÝkóqåõ¶é1|UL¥!/=V'ÊÛÎì0TêÌâÅ]Ê
îzh;õûÇ£ç/êþ»€ S$Uò© 8ͯi!äWüÝpRd²[²TØÕ8!TSa¢(l€ÏáªôlßOgnâPÓÆOkÆjûjÛþÑÅÞô|ÿBSžÿ]{ÿðÿPK
+¥]7 isis-database-3_cvs/simulations/UT 5$YG}$YGUxèèPK
+]7isis-database-3_cvs/simulators/UT $YG}$YGUxèèPK
+]7#isis-database-3_cvs/simulators/CVS/UT $YG}$YGUxèèPK
+]7p99*isis-database-3_cvs/simulators/CVS/EntriesUT $YG6$YGUxèèD
+/DefaultSimulator.java/1.19/Tue Nov 06 18:16:14 2007//
+PK
+]7kîæ-isis-database-3_cvs/simulators/CVS/RepositoryUT $YG6$YGUxèèisis-fish-data/simulatorsPK
+]7.à'isis-database-3_cvs/simulators/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7+isis-database-3_cvs/simulators/CVS/TemplateUT $YG$YGUxèèPKf7r.ÔX4isis-database-3_cvs/simulators/DefaultSimulator.javaUT n¯0G$YGUxèèÝ[{sÛÈÿ_b¢ìU /¶ŒÉn"E©
IHfNY eǹºbÀÂ.0xHÖ&úÀ÷îë`zÙ9KéîßôkxýŒúíoÿãŒ"p{yëëh#òöÍð)^£UD74êAË4ñžÿ7ò2õj§=ò?Û/ Ó0c/Z$_{1ÙFá:²7n%qžJní»0%º^DÞ2M(ñbîë0BÐõVwø,
+\äF+öãÂŒ"4 íiºôAŠKÏ¡ALÜÞña|M]²Œcç(ÃLÈ@ÎC`l'^êÁûÜÐ(ßä-rÝ=FD³<"áé@Ü;âÛIAÚoP¿ÐÒ%2Ÿ· Ñ5°o=ß'KJÒ®R¿, 1ù8¿\Ín~"uËÒÍù§Sh\ðÞPÎÊÛl}8^$w ;rÖà=èïF£ù'Ôà|47ÙO,¢©nÍG«KÝ"Ó+k:}BfÅb 6CLVÀl.MlÏ3Å?ÁÀÆ ïkûÂ;Ô»Ùlâu<?ÖLMh\yJŒ €Gn#ì% ëÃäÅÈöÈ(pú=ò?9(ú¶CÉwd"ï¿Æ 6ëŒy{||üÝñ÷o~ì«ZŒz}pðúWpHWvê'3oÂÈQÿgûÆÊ"
+Æà·ÇÄÿ7aÎDßüáÇßÿ ýd§0|ÙæþB~ÊïÞxxwBûÇ"ßK;?ØRô|3dÿï¿a±?ÿprü{Ö鬲ý°w ÇÖv~±×àñéÁP%$N5ìdÝwÀã}tøŸwüÇ ?Â?Ó
+EÁáéÃ{¿?}:Ìáê//ÁA
+"dl€×øo6a÷ýpœöuÿ2\vkvn; Þ]©u!íÆN®ñOä}îÙû¶7
+MpëÙý9þAB?'»ºåØä ;·MâþEdßxÉÝÉN«/-5öÖ^Í<.gþbõ=Ñû`dñ
+c7çp#õßÒ,Ü^ô;{0ŠV$^âÑž?Šð_Ôí4Ü¢uîGÑ~Fí8FÁ*ìF9K"p§õ]·Övm£ÔpàOk«Üù(ã0ðàWGBÙýèP¬ý(DªŒ]ú{ÓMmø4Ùa/5Ê%w[DTÉõ)Fþž-*O_oÇq-;°ÔÌ$&ÅÃ`uÅþsÌc÷ .²²ÏgïSù[ÈòºYÍaãõ=0ní°ßï¢ÈGDämäÝvÂãwF@Ø_Ó~iµÆD?M
@ìLg6lV=!2Ä
+ß%Y]{ëÀNRLž¬1B`qzn`šV3"P
ýé;
+oc@óKadw `ÍD0ÒðqN£buÂ,#ü¿¥h<29//H ôOÔIÄfºYÒh²ÂçrßY{4>hBvÖ7¯Æïk19_'æü}AÈ\N%ÄÅ~ð±Ì?{îX.Ñ8Ûµ¬K©e~SáP©AwQ'KIJ rÞ#î²ÌløNSI¥*0qsFz?×2)hå¬HÖòN*¿ÏÈ{9µ°
+®^}RRŠF ëV
+ìdSúUâRj(sÂ5€ûµÔHŠõÂR]+dE @Ì(+khiGG"DåÊ*S×c¹ob¢bU¢J¬ÏÑßú»+sš£BSCñ@æ=bJmïëC÷úµtËmÃqTµÄóÏØö/ÞXV
+Ç
+î5èµCÖ¢ÒËÉ!ùó(üL$|ÈóYÝÜŠW÷+èQšÞÜ'g,Û0ØŸ
6t¿R÷pPLãdæ€Îµ@pØÓqhI_.Nüê<*Ϫs/Ãä4¶Ù@ÊBqU5»œöf³EL$ÎmeTô3JÈœäOè".º\ÒÎn¹8ÝÆxh}x1Äm!»EÿÒ8Ñj.
׿¿ÇùŸô«ôC2AŠš[ë&YšÓLÀÌz¡.)L ºE+#<6 Fö¯Äå&¡œ¯ëAÍCöÂǹœCãa)&BRIµæL3Á°]Û5BÿªWºõI u=ž°vâ\W{œ?šõ[$Ga#°P)B9YèùèÃh®"£0pSFÔD| ÁupÌ_Lã^QvµÐL&1Ù
+·šnT<keé⎯? LÛu¹
+\OÄ¥6ŒêÞÌb#Ø4Ø:1œ±ýŽÿtµÐn Ô[<Äçìb¢²šÃŒãW±"VdîòóKa
+Ô\ÆYÁ¯e1cë
+Ö+p
+zªlDw
+\ðÊ9°ì«^PbTGêî^EŽ¢¬§Žå=%žø£{5ª]HrÚáÀÆ©nza+\ËRs £I¯ÖIùTªÊÐzÜÜ9p/Þ1G'@n±
+ZÔ/Ê(2¥5[*åËÉXSŽcIŠA¯=œ€o!ýòba/ç%wá¯Å=<+ÎZÎ.Ë0Ûh29ï6«aèèÎþNýãû¶à9Ì_~5œáÅ«6¡Ayw^3óØ`zý÷iìÈÌ\çQª5ŸPU^ÞŒ?&œ²Uhh XŠCySmÜî&%V,^òži#ïy³
dʶÚ<<³œúr/`t×%qža:nI [ž6ôÝÆ§Ê4ü;41Üq¬²}¯X¬×²¶
ùys$¯u5SE±Z(Ë:íèÆùùÄ/Šà ³¹¥ÏOè+÷
+ºsHŠ4ÊËÁdÿà#¢puäjñU
+åëqé1øÌæÃàòÁž|8TqâÂD÷ú*4³Ö®< 1³édºaalòBF%zSa¢byÐ(ðªþ%
+n<'ÎXÕ°áRÅoYm(fŸ£uÁh`ÇTË×®æöúTbV;8Gã¡<5áUѯl®ŽÞ*j| z¥ÚX±ËÁ¿çïaëSk4PO6ñWŠçкs°ÇZSÍ®`««ÿÓìjú0NZÔ€_GUϬå!Uüî
+T}œ:&®;väâ©+âÃ/X
+î;.ůœb»nôÔ¯±Rð:S¥*l=¡*¢_^×¢vpÈý?ãsŠXÆÄ]þzg`šÕoÎHÂÄá_ÿ"Õó³39Ê 9¢·ZyQð9n]³c^YޱðÒºÖëÃ
صÎSšOJ'uPèQ'và`²sØÒ©"XG³n
+gY1u\ó*§|áF"ný×ÿóaKŠòÕaºÃžÍò"
+ÓöPj6=ºï(
+ŸH>æõ>e?pù/ì~Ü7/ï¹×®¬&Ì&;Ø ºöÈø¹}4Fïç²-í\š¬:òGÇmwÍÍùŠ(×5W³Ã=ÐRõÖºZÚö RZH=ñR7#ó
+ß®¡Ë-ì¬KüQhŸÏ¡¹LE|Þ¹K&îú/Hc°ý&Êf¿Ê85ïàWAìº \·:Ñ×SU4ÕÂ$¢74JJK,x6ÐöªBÐ÷¶óØç[ãµ:Ô]ö#Ѱaïó
+s+ìr SÖ+ÎI>Wç,ÅUÏíøô¹»a.Î9± änøØó¿ìÏ6
+êàzvà¬ŽÒØxè¬W?lÔ+ÎXõH¹&ÌšÕÎÉöHùÜ®äš /ÔEÒ*ã÷Ž®r¶ÊKc¶ÍÐùŽRé£f'|*G{òbÇOÚ6îØÛTgÊðÃüÁ3+ß±-,,Ç¿=$j*NÍfw`PŸF
+¹·¡cÏ÷œž¶ÉUbò=²Øøl±ôÂ
+îÌo{ÙùUeŽ&~óé Æc`nµÜºÖcK€$ùšþ3Þ»Ñd¬ÏfÍgº2õjÈ;þB3³¡Ÿí±+ŸÞJ°k0ϳ|Z"z*Ìœ8ëͶžémœh¢1ÆL#ÜËVÙëÎ1Ð O˧¥PO Jý0ʶâ#>rÑáØÜ·V翪¿á5Œ.¡~LU}#>Ø%c6`ú£UX€€^ãÒeºŽ¢s¿èê[oÝ Gm,u?ÎÉ3Û®ñ:óŸÇRׯ_Ó.
+¹Ocó N
+Ñ«QîÖÛŽô;ûm;î'I·a\:9+u>Ʋ×nñ(8VÛÀÃVí;©)F$ÅM=ìŠïÇCE?
+g1ßç!üÔLµ ðJÌã¡,JÎ*Ùlß/xÝß óDnu ÊÓŠr£·Ð9r^HÕÐð{Þð-m4VeY±CÂõAjS&\Ä̵£G«xÎèÆïi DÒìÇ[ßKÞ5Á[)IU³<Àu"(bðºÞd]
òÇM¥]«z¶xVÒöÏøI¡GsU-ÂAæFâÔ»ñÄ[ÌÍX2œ Œ$¹2k
îáAª¿N,:#.+#§&a£6ØK/Á¥bÆ*+Ê$¬$âHMñ`GÙQbûøq!GKÆ£ª¹œÝúw¥ÄwMuZÉl^-ÂÒXC
åxÙKü\2`ÛŠê²àG1lm×Í{.÷î¹Ô++ÉÀvÁEáE¢Œ.iÅe=ççžÖjÆUÔ(
+vmÓ$øTzöªT|µtR
}7+ÆîêÐ8¶£;þá.{ÎÖ$Ê+=j(Ùq>ÚìZ±šj]Øêö
¡6#ê_Ÿ;à#ÆücmvêNšT)j³>r¯"hä2jtÐläPbµÇŽc Ïï+¥í§(Êšv[#45ÕªðVÜëXrSõÑbsOÔåHîø<,ç?²;.KðŠ"uddª.&Ñ"ivʯé·XXª.ÉH_þÄ?ÖCÎGÐùŠURmQYt¯Å×âãGþùaõLŽÆÓŽÓkþªìAA{žËùhöT磱Á×Uñ+ at v÷ÁÍËæù;ÿ@¶ÚpYdÊ>3HÐ>@G4ª^Ðù`þ}ÅH÷QôÊž\&³ù¿u§fJýA'ñdÅO?}y%sý²a}B91_^;iÿ¿
+eLõµÐÍáb¬Ì¹aâC·Bcšõm/Òwlã7Rìü QøòÚOæïA;ëÊ4Ñf@ß N¬4Àn¿gïuË.ÌÉóop÷jήaäarî}Šîs(Z`Û_Uµ¥Ðò¹®
++ŽÅ<#Ï,óÝ©uÑü|aMf³ÅýòÊÀ,ö*Åá©1³Ýõèn.¢0Ù9ËÉêïb"³-u`fÛážêK{+Ï£ÿ¿ÖsúÝ|ù`gÏ2ú&MŸÎ±ïŠñãF~ò_Çž[i|æô&¥ó¥¯
+e||Íœ}FTž}41ëÖÅÈ\L> vº5Òß]RÞ:&·äy;Z{ÁäÔ¶#%ËJ6P^ðzAüEIõbÀ1}ØŒü¬b/ã| Ãü7Ãäùøbúïé0/â,_.Víè"Ö3¢þÙòþàþüPK
+¥]7
+íAisis-database-3_cvs/UT5$YGUxPK
+]7!
+íAGisis-database-3_cvs/analyseplans/UT$YGUxPK
+]7%
+íAisis-database-3_cvs/analyseplans/CVS/UT$YGUxPK]7ÉVâL\,
+€óisis-database-3_cvs/analyseplans/CVS/EntriesUT$YGUxPK
+]7·þÍt/
+€isis-database-3_cvs/analyseplans/CVS/RepositoryUT$YGUxPK
+]7.à)
+€isis-database-3_cvs/analyseplans/CVS/RootUT$YGUxPK
+]7-
+€isis-database-3_cvs/analyseplans/CVS/TemplateUT$YGUxPKgb7šYª
+s.1
+€éisis-database-3_cvs/analyseplans/Calibration.javaUT²a+GUxPKki6_m*éŽ
+)
+€aisis-database-3_cvs/analyseplans/Max.javaUTÙ|ñEUxPK
+]7
+íAŠisis-database-3_cvs/exports/UT$YGUxPKÄ[ž6RÄD©
+Ñ+
+€õisis-database-3_cvs/exports/Abundances.javaUT[UFUxPKÄ[ž6l#«*
+€`isis-database-3_cvs/exports/Biomasses.javaUT[UFUxPK
+]7
+íA¿isis-database-3_cvs/exports/CVS/UT$YGUxPK]7A¬Æ!»Â'
+€ isis-database-3_cvs/exports/CVS/EntriesUT$YGUxPK
+]7ÿ1*
+€'!isis-database-3_cvs/exports/CVS/RepositoryUT$YGUxPK
+]7.à$
+€!isis-database-3_cvs/exports/CVS/RootUT$YGUxPK
+]7(
+€"isis-database-3_cvs/exports/CVS/TemplateUT$YGUxPKÄ[ž6kû§§/
+€^"isis-database-3_cvs/exports/CapturesNombre.javaUT[UFUxPKÄ[ž6¯² .
+€g(isis-database-3_cvs/exports/CapturesPoids.javaUT[UFUxPKÄ[ž6îòË
+ß0
+€z.isis-database-3_cvs/exports/CellsDefinition.javaUT[UFUxPKÄ[ž6qr
ùú
+.
+€ê1isis-database-3_cvs/exports/EffortsMetier.javaUT[UFUxPKÄ[ž6ÇÜs«+
+€ß6isis-database-3_cvs/exports/MetierZone.javaUT[UFUxPKÄ[ž6&ó),
+€°:isis-database-3_cvs/exports/NonActivite.javaUT[UFUxPKÄ[ž6xܵ
+,
+€?isis-database-3_cvs/exports/OwnerMargin.javaUT[UFUxPK«`ž634€Í1
+€¢Disis-database-3_cvs/exports/RegionDefinition.javaUTbcUFUxPKÄ[ž6UYÇ--
+€Hisis-database-3_cvs/exports/RejetsNombre.javaUT[UFUxPKÄ[ž6äpÔ,
+€DNisis-database-3_cvs/exports/RejetsPoids.javaUT[UFUxPKÄ[ž6ÉæÉ
+-
+€wTisis-database-3_cvs/exports/VesselMargin.javaUT[UFUxPKÄ[ž6:6íN¿0
+€jYisis-database-3_cvs/exports/ZonesDefinition.javaUT[UFUxPK
+]7
+íA]isis-database-3_cvs/formules/UT$YGUxPK
+]7!
+íAk]isis-database-3_cvs/formules/CVS/UT$YGUxPK]7NIÓw5g(
+€¿]isis-database-3_cvs/formules/CVS/EntriesUT$YGUxPK
+]7c9Ÿ+
+€O^isis-database-3_cvs/formules/CVS/RepositoryUT$YGUxPK
+]7.à%
+ۀ^isis-database-3_cvs/formules/CVS/RootUT$YGUxPK
+]7)
+€._isis-database-3_cvs/formules/CVS/TemplateUT$YGUxPK
+]7(
+íA_isis-database-3_cvs/formules/Emigration/UT$YGUxPK
+]7,
+íAå_isis-database-3_cvs/formules/Emigration/CVS/UT$YGUxPK
+]7j³£3
+€D`isis-database-3_cvs/formules/Emigration/CVS/EntriesUT$YGUxPK
+]7¹áu""6
+€«`isis-database-3_cvs/formules/Emigration/CVS/RepositoryUT$YGUxPK
+]7.à0
+€6aisis-database-3_cvs/formules/Emigration/CVS/RootUT$YGUxPK
+]74
+€«aisis-database-3_cvs/formules/Emigration/CVS/TemplateUT$YGUxPK
+]7$
+íAbisis-database-3_cvs/formules/Growth/UT$YGUxPK
+]7(
+íAibisis-database-3_cvs/formules/Growth/CVS/UT$YGUxPK
+]7j³£/
+ۀbisis-database-3_cvs/formules/Growth/CVS/EntriesUT$YGUxPK
+]7œT¡Ô2
+€'cisis-database-3_cvs/formules/Growth/CVS/RepositoryUT$YGUxPK
+]7.à,
+ۻcisis-database-3_cvs/formules/Growth/CVS/RootUT$YGUxPK
+]70
+€disis-database-3_cvs/formules/Growth/CVS/TemplateUT$YGUxPK
+]7+
+íA~disis-database-3_cvs/formules/GrowthReverse/UT$YGUxPK
+]7/
+íAÜdisis-database-3_cvs/formules/GrowthReverse/CVS/UT$YGUxPK
+]7j³£6
+€>eisis-database-3_cvs/formules/GrowthReverse/CVS/EntriesUT$YGUxPK
+]7âTW%%9
+€šeisis-database-3_cvs/formules/GrowthReverse/CVS/RepositoryUT$YGUxPK
+]7.à3
+€9fisis-database-3_cvs/formules/GrowthReverse/CVS/RootUT$YGUxPK
+]77
+€±fisis-database-3_cvs/formules/GrowthReverse/CVS/TemplateUT$YGUxPK
+]7)
+íAgisis-database-3_cvs/formules/Immigration/UT$YGUxPK
+]7-
+íAwgisis-database-3_cvs/formules/Immigration/CVS/UT$YGUxPK
+]7j³£4
+€×gisis-database-3_cvs/formules/Immigration/CVS/EntriesUT$YGUxPK
+]7ýký/##7
+€?hisis-database-3_cvs/formules/Immigration/CVS/RepositoryUT$YGUxPK
+]7.à1
+€Ìhisis-database-3_cvs/formules/Immigration/CVS/RootUT$YGUxPK
+]75
+€Biisis-database-3_cvs/formules/Immigration/CVS/TemplateUT$YGUxPK
+]7'
+íAªiisis-database-3_cvs/formules/Migration/UT$YGUxPK
+]7+
+íAjisis-database-3_cvs/formules/Migration/CVS/UT$YGUxPK
+]7j³£2
+€bjisis-database-3_cvs/formules/Migration/CVS/EntriesUT$YGUxPK
+]7Ñüº'!!5
+€Èjisis-database-3_cvs/formules/Migration/CVS/RepositoryUT$YGUxPK
+]7.à/
+€Qkisis-database-3_cvs/formules/Migration/CVS/RootUT$YGUxPK
+]73
+ہkisis-database-3_cvs/formules/Migration/CVS/TemplateUT$YGUxPK
+]7*
+íA+lisis-database-3_cvs/formules/Reproduction/UT$YGUxPK
+]7.
+íAlisis-database-3_cvs/formules/Reproduction/CVS/UT$YGUxPK
+]7j³£5
+ێlisis-database-3_cvs/formules/Reproduction/CVS/EntriesUT$YGUxPK
+]7ŽÕ.¢$$8
+€Rmisis-database-3_cvs/formules/Reproduction/CVS/RepositoryUT$YGUxPK
+]7.à2
+ۇmisis-database-3_cvs/formules/Reproduction/CVS/RootUT$YGUxPK
+]76
+€Xnisis-database-3_cvs/formules/Reproduction/CVS/TemplateUT$YGUxPK
+]7
+íAÁnisis-database-3_cvs/regions/UT$YGUxPK
+]7
+íAoisis-database-3_cvs/regions/CVS/UT$YGUxPK
+]7Û`6ð'
+€coisis-database-3_cvs/regions/CVS/EntriesUT$YGUxPK
+]7.
+€Îoisis-database-3_cvs/regions/CVS/Entries.StaticUT$YGUxPK
+]7LæxÈ*
+€/pisis-database-3_cvs/regions/CVS/RepositoryUT$YGUxPK
+]7.à$
+€¢pisis-database-3_cvs/regions/CVS/RootUT$YGUxPK
+]7'
+íAqisis-database-3_cvs/regions/DemoRegion/UT$YGUxPK
+]7+
+íAeqisis-database-3_cvs/regions/DemoRegion/CVS/UT$YGUxPK
+]7ëZ
+P882
+€Ãqisis-database-3_cvs/regions/DemoRegion/CVS/EntriesUT$YGUxPK]7ŸÌt!5
+€`risis-database-3_cvs/regions/DemoRegion/CVS/RepositoryUT$YGUxPK
+]7.à/
+ۍrisis-database-3_cvs/regions/DemoRegion/CVS/RootUT$YGUxPK
+]73
+€[sisis-database-3_cvs/regions/DemoRegion/CVS/TemplateUT$YGUxPK
+/50ÿbéa+z+9
+€Ásisis-database-3_cvs/regions/DemoRegion/data-backup.sql.gzUT¿
+EUxPK
+š]7,
+íAisis-database-3_cvs/regions/DemoRegion/data/UT;$YGUxPKš]7zê-R9
+€íisis-database-3_cvs/regions/DemoRegion/data/data.1.log.dbUT;$YGUxPKš]7§UÍ A0À8
+€«£isis-database-3_cvs/regions/DemoRegion/data/data.data.dbUT;$YGUxPKš]7Q¹·Ú"0
+9
+€¶åisis-database-3_cvs/regions/DemoRegion/data/data.index.dbUT;$YGUxPK
+]79
+۟isis-database-3_cvs/regions/DemoRegion/data/data.trace.dbUT$YGUxPK
+]7
+íAh isis-database-3_cvs/rules/UT$YGUxPK
+]7
+íAµ isis-database-3_cvs/rules/CVS/UT$YGUxPK]7QYÖàó%
+€
+isis-database-3_cvs/rules/CVS/EntriesUT$YGUxPK
+]7ÄÌ<(
+€>isis-database-3_cvs/rules/CVS/RepositoryUT$YGUxPK
+]7.à"
+€isis-database-3_cvs/rules/CVS/RootUT$YGUxPK
+]7&
+€isis-database-3_cvs/rules/CVS/TemplateUT$YGUxPK5b7S(
&B0+
+€misis-database-3_cvs/rules/Cantonnement.javaUTUa+GUxPK186ÓÔâͪ2
+€ñisis-database-3_cvs/rules/CantonnementPreSimu.javaUT€·EUxPK1863ÁÒW8D@
+€]3isis-database-3_cvs/rules/ChangementParamControlablePresimu.javaUT€·EUxPKsWò6bRIGR*
+€'Cisis-database-3_cvs/rules/GraviteCPUE.javaUTzÖFUxPK186Ó$v®*0
+€ÍUisis-database-3_cvs/rules/InterdictionEngin.javaUT€·EUxPK186Š×¢
+U37
+€Cbisis-database-3_cvs/rules/InterdictionEnginPreSimu.javaUT€·EUxPK<v6€Kð\5
+€Áoisis-database-3_cvs/rules/RecrutementLangoustine.javaUTŸFUxPKEt7`Ø
+3'
+€wisis-database-3_cvs/rules/TACpoids.javaUT1CGUxPK1862W
+ç"(
+€K
isis-database-3_cvs/rules/TailleMin.javaUT€·EUxPK
+]7
+íAýisis-database-3_cvs/scripts/UT
+$YGUxPK
+]7
+íALisis-database-3_cvs/scripts/CVS/UT
+$YGUxPK]7cñ7FÂ'
+€isis-database-3_cvs/scripts/CVS/EntriesUT
+$YGUxPK
+]7·*
+€isis-database-3_cvs/scripts/CVS/RepositoryUT
+$YGUxPK
+]7.à$
+€öisis-database-3_cvs/scripts/CVS/RootUT
+$YGUxPK
+]7(
+€_isis-database-3_cvs/scripts/CVS/TemplateUT
+$YGUxPKa6ýª*,ÈÂÔ-
+ۼisis-database-3_cvs/scripts/GravityModel.javaUT\
+çEUxPKq®é6:µ8Ðrö+
+€â§isis-database-3_cvs/scripts/ResultName.javaUTÆFUxPKct7ªëŸm8)
+€²®isis-database-3_cvs/scripts/RuleUtil.javaUTiCGUxPKªb7Á!!êOªŠ)
+€{²isis-database-3_cvs/scripts/SiMatrix.javaUTd+GUxPK
+¥]7
+íA&Ïisis-database-3_cvs/simulations/UT5$YGUxPK
+]7
+íAyÏisis-database-3_cvs/simulators/UT$YGUxPK
+]7#
+íAËÏisis-database-3_cvs/simulators/CVS/UT$YGUxPK
+]7p99*
+€!Ðisis-database-3_cvs/simulators/CVS/EntriesUT$YGUxPK
+]7kîæ-
+€·Ðisis-database-3_cvs/simulators/CVS/RepositoryUT$YGUxPK
+]7.à'
+€0Ñisis-database-3_cvs/simulators/CVS/RootUT$YGUxPK
+]7+
+€Ñisis-database-3_cvs/simulators/CVS/TemplateUT$YGUxPKf7r.ÔX4
+€úÑisis-database-3_cvs/simulators/DefaultSimulator.javaUTn¯0GUxPKzz1uä
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,30 @@
+<JFrame id="aboutFrame" visible="true" size='{new Dimension(250,180)}' title="isisfish.about.title"
+ layout='{new BorderLayout()}'>
+<!--
+Maximizable="false" Closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <JPanel constraints='"BorderLayout.NORTH"' layout='{new GridBagLayout()}'>
+ <JLabel id="version">
+<!-- Fixme : gridbagconstraints
+ origin="fr.ifremer.isisfish.IsisConfig.getVERSION()"
+ <gridbagconstraints id="gbc_1" insets="5,2,2,2" gridx="0" gridy="0" ipadx="5" ipady="5" fill="1" />
+-->
+ </JLabel>
+ <JLabel text="isisfish.about.text">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="1"/>
+-->
+ </JLabel>
+ <JLabel text="isisfish.about.site">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="2"/>
+-->
+ </JLabel>
+ <JButton text="isisfish.common.ok" actionCommand="cancel">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="3"/>
+-->
+ </JButton>
+ </JPanel>
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,16 @@
+<JFrame visible="true" size='{new Dimension(400,400)}' title="isisfish.monitor.title"
+ layout='{new BorderLayout()}'>
+<!-- Fixme : ApplicationMonitor
+ maximizable="true" closable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+
+ <ApplicationMonitor
+ smtpServer="fr.ifremer.isisfish.IsisConfig.getSmtpServer()"
+ emailFrom="fr.ifremer.isisfish.IsisConfig.getUserMail()"
+ emailTo="fr.ifremer.isisfish.IsisConfig.BUG_REPORT_EMAIL"
+ />
+
+-->
+
+</JFrame>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,18 @@
+<JFrame id="errorFrame" visible="true" size='{new Dimension(250,180)}' title="isisfish.error.title"
+ layout='{new BorderLayout()}'>
+<!-- Fixme : ContextDataSource
+maximizable="false" closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+<ContextDataSource id="error" context="current" source="error"/>
+-->
+
+ <JLabel constraints='"BorderLayout.NORTH"' horizontalAlignment="CENTER"
+ text="isisfish.error.text"/>
+<!-- Fixme : multilabel
+ <multilabel constraints="BorderLayout.CENTER" origin="$error"/>
+-->
+ <JButton constraints='"Button.SOUTH"' text="isisfish.common.ok"/>
+<!--
+ actionCommand="Cancel"
+-->
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JFrame id="exitComment" name="isisfish.exit.title" visible="true" size='{new Dimension(400,100)}' title="isisfish.exit.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Exit.xgl")}'>
+<!--
+ Resizable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelExitComment"' text="isisfish.exit.text"/>
+
+ <JTextArea constraints='"fieldExitComment"' id="fieldExitComment" />
+
+ <JButton constraints='"buttonExitOK"' id="buttonExitOK" text="isisfish.common.ok"/>
+
+<!--
+actionCommand="Saisie.saveCommentAndExit($fieldExitComment/text)"
+-->
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/StatusBar.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ import org.codelutin.widget.StatusBar;
+ </script>
+<!-- Fixme : ActionMonitor
+ <ActionMonitor postThreadCommand="xpath:setVisible($stopCommand, 'false')"
+ progressStartTime="5" messageTime="7"
+ messageDisplayer="$labelStatus" progressDisplayer="$progressStatus"/>
+ -->
+ <JProgressBar id="progressStatus" constraints='"progressStatus"'/>
+
+ <JLabel id="labelStatus" constraints='"labelStatus"'/>
+
+ <JButton id="stopCommand" actionCommand="stopCommand"
+ visible="false" text="isisfish.common.stop" toolTipText="Stop the process"
+ constraints='"stopCommand"'/>
+
+<!-- Fixme : memoryStatus -->
+ <StatusBar constraints='"memoryStatus"'/>
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,109 @@
+<Application title="isisfish.welcome.title" size='{new Dimension(315,114)}' resizable="true" location='{new Point(0,23)}' layout='{new BorderLayout()}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JMenuBar>
+ <JMenu text="isisfish.welcome.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.welcome.menu.synchro" accelerator="accSync"/>
+<!--
+icon="imgSync" mnemonic="mnSync"
+ActionCommand="thread:Welcome.updateVCS()"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.frame">
+<!--
+mnemonic="mnFrame"
+-->
+ <JMenuItem text="isisfish.welcome.menu.simulation" accelerator="accSimul"/>
+<!--
+icon="imgSimul" mnemonic="mnSimul"
+ActionCommand="OutputView('simulator/Simul.xml')"
+-->
+ <JMenuItem text="isisfish.welcome.menu.result" accelerator="accResult"/>
+<!--
+ icon="imgResult" mnemonic="mnResult"
+ ActionCommand="Welcome.openResultView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.input" accelerator="accInput"/>
+<!--
+ icon="imgInput" mnemonic="mnInput"
+ActionCommand="Welcome.openInputView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.script" accelerator="accScript"/>
+<!--
+con="imgScript" mnemonic="mnScript"
+ActionCommand="OutputView('script/Script.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.queue" accelerator="accSimulQueue"/>
+<!--
+ icon="imgSimulQueue" mnemonic="mnSimulQueue"
+ActionCommand="OutputView('simulator/SimulQueue.xml')"
+-->
+ <JSeparator/>
+ <JMenu text="isisfish.welcome.menu.configuration">
+<!--
+icon="imgConfig" mnemonic="mnConfig"
+-->
+ <JMenuItem text="isisfish.welcome.menu.configuration" accelerator="accConfig"/>
+<!--
+ icon="imgConfig" mnemonic="mnConfig"
+ ActionCommand="Welcome.showConfig()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.vcs.configuration" accelerator="accVCSConfig"/>
+<!--
+icon="imgVCSConfig" mnemonic="mnVCSConfig"
+ActionCommand="fr.ifremer.isisfish.versionning.ui.VCSConfigUI.doLaunch()"
+-->
+ </JMenu>
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem text="isisfish.welcome.menu.help" accelerator="accHelp"/>
+<!--
+icon="imgHelp" mnemonic="mnHelp"
+ActionCommand="help"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.monitor" accelerator="accLogMonitor"/>
+<!--
+icon="imgLogMonitor" mnemonic="mnLogMonitor"
+ActionCommand="OutputView('ApplicationMonitor.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Welcome.xgl")}'>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/simulation.jpg"))}'
+ background="white" constraints='"simul"'/>
+<!--
+ border="EmptyBorder(6,6,6,6)" (pour tous)
+-->
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/calc.jpg"))}'
+ background="white" constraints='"result"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/book.jpg"))}'
+ background="white" constraints='"input"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/bookPage.jpg"))}'
+ background="white" constraints='"script"' onActionPerformed='new fr.ifremer.isisfish.ui.script.Script2()'/>
+ </JPanel>
+ <JPanel constraints="BorderLayout.SOUTH">
+ <StatusBar2/>
+ </JPanel>
+</Application>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,71 @@
+<JPanel name="isisfish.cell.title" constraints='"inputCell"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Cell.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Cell" context="current" source="Cell"/>
+-->
+ <!-- Widget -->
+
+ <JComboBox constraints='"fieldCell"' id="fieldCell">
+<!-- Fixme : ComboBoxModel
+origin="$Cell" renderer="name"
+actionCommand='UIHelper.setTreeSelection($tree, $treeModel, $fieldCell/selectedItem)'
+<ComboBoxModel origin="$FisheryRegion/cell"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelCellName"' text="isisfish.cell.name"/>
+ <JTextField constraints='"fieldCellName"' id="fieldCellName">
+<!-- Fixme : DocumentEvents
+origin="$Cell/name"
+ <DocumentEvents onModified="Update($fieldCellName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelCellLatitude"' text="isisfish.cell.latitude"/>
+ <JTextField constraints='"fieldCellLatitude"' id="fieldCellLatitude" editable="false"/>
+<!--
+origin="$Cell/latitude"
+-->
+ <JLabel constraints='"labelCellLongitude"' text="isisfish.cell.longitude"/>
+ <JTextField constraints='"fieldCellLongitude"' id="fieldCellLongitude" editable="false"/>
+<!--
+origin="$Cell/longitude"
+-->
+ <JLabel constraints='"labelCellLand"' text="isisfish.cell.land"/>
+ <JCheckBox constraints='"fieldCellLand"' id="fieldCellLand">
+<!-- Fixme : ItemEvents
+origin="$Cell/land"
+<ItemEvents onStateChanged="Update($fieldCellLand/selected)"/>
+-->
+
+ </JCheckBox>
+
+ <JLabel constraints='"labelCellComment"' text="isisfish.cell.comments"/>
+ <JScrollPane constraints='"fieldCellComment"'>
+ <JTextArea id="fieldCellComment">
+<!--
+origin="$Cell/comment"
+<DocumentEvents onModified="Update($fieldCellComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelCellButtonAction" constraints="panelCellButtonAction"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Cell", $Cell);refreshView($inputCell)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Cell", $Cell);refreshView($inputCell)'
+-->
+ </JPanel>
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,172 @@
+<JPanel name="isisfish.effortDescription.title" constraints='"inputEffortDescription"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="EffortDescription" context="current" source="EffortDescription"/>
+-->
+ <JScrollPane constraints='"fieldEffortDescriptionMetierScrollPane"'>
+ <JList id="fieldEffortDescriptionMetierList" selectionMode="0">
+<!-- Fixme : ListModel and ListSelectionEvents
+renderer="name"
+<ListModel origin="$FisheryRegion/metier"/>
+<ListSelectionEvents onValueChanged="refreshViewPattern('buttonEffortDescriptionAdd.*')"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonEffortDescriptionAdd"' id="buttonEffortDescriptionAdd" text="isisfish.common.add"/>
+<!--
+actionCommand="input.InputEffortDescription.addEffortDescription($SetOfVessels, $fieldEffortDescriptionMetierList/selectedValue)"
+origin="not(getPossibleMetiers($SetOfVessels, $fieldEffortDescriptionMetierList/selectedValue))"
+-->
+ <JScrollPane constraints='"fieldEffortDescriptionEffortDescriptionScrollPane"'>
+ <JList id="fieldEffortDescriptionEffortDescriptionList"
+ selectionMode="0">
+ <!-- Fixme : ListModel and ListSelectionEvents
+origin="$EffortDescription"
+renderer="possibleMetiers/name"
+<ListModel origin="$SetOfVessels/possibleMetiers"/>
+<ListSelectionEvents onValueChanged="input.Input.selectEntity('EffortDescription', $fieldEffortDescriptionEffortDescriptionList/selectedValue)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JPanel constraints='"panelEffortDescriptionEffortDesciption"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <JLabel constraints='"labelEffortDescriptionFishingOperation"' text="isisfish.effortDescription.fishingOperation"/>
+ <JTextField constraints='"fieldEffortDescriptionFishingOperation"' id="fieldEffortDescriptionFishingOperation">
+<!-- Fixme : DocumentEvents
+origin="$EffortDescription/fishingOperation"
+<DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionFishingOperation/text"/>
+</DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionFishingOperationDuration"' text="isisfish.effortDescription.fishingOperationDuration"/>
+ <JTextField constraints='"fieldEffortDescriptionFishingOperationDuration"' id="fieldEffortDescriptionFishingOperationDuration">
+<!-- Fixme : DocumentEvents
+origin="$EffortDescription/fishingOperationDuration/hour" tooltips="in hour"
+<DocumentEvents onModified="Update(3600 * $fieldEffortDescriptionFishingOperationDuration/text, $EffortDescription/fishingOperationDuration)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionGearsNumberPerOperation"' text="isisfish.effortDescription.gearsNumberPerOperation"/>
+ <JTextField constraints='"fieldEffortDescriptionGearsNumberPerOperation"' id="fieldEffortDescriptionGearsNumberPerOperation">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/gearsNumberPerOperation"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionGearsNumberPerOperation/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewSize"' text="isisfish.effortDescription.crewSize"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewSize"' id="fieldEffortDescriptionCrewSize">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewSize"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewSize/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionUnitCostOfFishing"' text="isisfish.effortDescription.unitCostOfFishing"/>
+ <JTextField constraints='"fieldEffortDescriptionUnitCostOfFishing"' id="fieldEffortDescriptionUnitCostOfFishing">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/unitCostOfFishing"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionUnitCostOfFishing/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionFixedCrewSalary"' text="isisfish.effortDescription.fixedCrewSalary"/>
+ <JTextField constraints='"fieldEffortDescriptionFixedCrewSalary"' id="fieldEffortDescriptionFixedCrewSalary">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/fixedCrewSalary"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionFixedCrewSalary/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewFoodCost"' text="isisfish.effortDescription.crewFoodCost"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewFoodCost"'
+ id="fieldEffortDescriptionCrewFoodCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewFoodCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewFoodCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewShareRate"' text="isisfish.effortDescription.crewShareRate"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewShareRate"'
+ id="fieldEffortDescriptionCrewShareRate">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewShareRate"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewShareRate/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionRepairAndMaintenanceGearCost"' text="isisfish.effortDescription.repairAndMaintenanceGearCost"/>
+ <JTextField constraints='"fieldEffortDescriptionRepairAndMaintenanceGearCost"' id="fieldEffortDescriptionRepairAndMaintenanceGearCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/repairAndMaintenanceGearCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionRepairAndMaintenanceGearCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionLandingCosts"' text="isisfish.effortDescription.landingCosts"/>
+ <JTextField constraints='"fieldEffortDescriptionLandingCosts"' id="fieldEffortDescriptionLandingCosts">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/landingCosts"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionLandingCosts/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionOtherRunningCost"' text="isisfish.effortDescription.otherRunningCost"/>
+ <JTextField constraints='"fieldEffortDescriptionOtherRunningCost"' id="fieldEffortDescriptionOtherRunningCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/otherRunningCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionOtherRunningCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JPanel id="panelEffortDescriptionButtonAction" constraints='"panelEffortDescriptionButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("EffortDescription", $EffortDescription);refreshView($inputEffortDescription)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("EffortDescription", $EffortDescription);refreshView($inputEffortDescription)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$EffortDescription"
+actionCommand="input.InputEffortDescription.remove($SetOfVessels, $EffortDescription)"
+-->
+ </JPanel>
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,138 @@
+<JPanel name="isisfish.fisheryRegion.title"
+ constraints='"inputFisheryRegion"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="FisheryRegion" context="current" source="FisheryRegion"/>
+-->
+
+
+ <!-- Widget -->
+
+ <JLabel constraints='"labelRegion"' text="isisfish.fisheryRegion.name"/>
+ <JTextField constraints='"fieldRegion"' id="fieldRegion">
+<!-- Fixme : DocumentEvents
+origin="$RegionStorage/name"
+<DocumentEvents id="updateRegion" onChangedUpdate="Update($fieldRegion/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLimit"' text="isisfish.fisheryRegion.area"/>
+ <JLabel constraints='"labelLatMin"' text="isisfish.fisheryRegion.latitude.min"/>
+ <JTextField constraints='"fieldLatMin"' id="fieldLatMin">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/minLatitude"
+<DocumentEvents onModified="Update($fieldLatMin/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLatMax"' text="isisfish.fisheryRegion.latitude.max"/>
+ <JTextField constraints='"fieldLatMax"' id="fieldLatMax">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/maxLatitude"
+<DocumentEvents onModified="Update($fieldLatMax/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLongMin"' text="isisfish.fisheryRegion.longitude.min"/>
+ <JTextField constraints='"fieldLongMin"' id="fieldLongMin">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/minLongitude"
+<DocumentEvents onModified="Update($fieldLongMin/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelLongMax"' text="isisfish.fisheryRegion.longitude.max"/>
+ <JTextField constraints='"fieldLongMax"' id="fieldLongMax">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/maxLongitude"
+<DocumentEvents onModified="Update($fieldLongMax/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelResolution"' text="isisfish.fisheryRegion.spatial"/>
+ <JLabel constraints='"labelLat"' text="isisfish.fisheryRegion.latitude"/>
+ <JTextField constraints='"fieldCellLengthLatitude"' id="fieldCellLengthLatitude">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/cellLengthLatitude"
+<DocumentEvents onModified="Update($fieldCellLengthLatitude/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelLong"' text="isisfish.fisheryRegion.longitude"/>
+ <JTextField constraints='"fieldCellLengthLongitude"' id="fieldCellLengthLongitude">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/cellLengthLongitude"
+<DocumentEvents onModified="Update($fieldCellLengthLongitude/text)"/>
+-->
+
+ </JTextField>
+
+ <JScrollPane constraints='"fieldMapfiles"'>
+ <JList id="fieldMapfiles">
+<!-- Fixme : ListModel
+ <ListModel origin="$FisheryRegion/mapFileList"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JPanel constraints='"panelButtonMap"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+ <JButton constraints='"buttonAddMap"' id="buttonAddMap" text="isisfish.fisheryRegion.addMap"/>
+<!--
+actionCommand="input.InputFisheryRegion.addMap($FisheryRegion, $fieldMapfiles)"
+-->
+ <JButton constraints='"buttonRemoveMap"' id="buttonRemoveMap" text="isisfish.fisheryRegion.delMap"/>
+<!--
+actionCommand="input.InputFisheryRegion.removeMap($FisheryRegion, $fieldMapfiles)"
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelComment"' text="isisfish.fisheryRegion.comments"/>
+ <JScrollPane constraints='"fieldComment"'>
+ <JTextArea id="fieldComment">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/comment"
+<DocumentEvents onModified="Update($fieldComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JLabel constraints='"labelCellFile1"' text="isisfish.fisheryRegion.selectFile"/>
+ <JLabel constraints='"labelCellFile2"' text="isisfish.fisheryRegion.ofCells"/>
+
+ <JPanel constraints='"panelCellFile"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+ <JTextField constraints='"fieldCellFile"' id="fieldCellFile"/>
+ <JButton constraints='"buttonCellFile"' id="buttonCellFile" text="isisfish.common.ellipsis"/>
+<!--
+actionCommand="input.InputFisheryRegion.loadCellFile($fieldCellFile)"
+-->
+ </JPanel>
+
+ <JPanel id="panelRegionButtonAction" constraints='"panelRegionButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='thread:input.InputFisheryRegion.save("FisheryRegion", $FisheryRegion);refreshView($inputFisheryRegion)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("FisheryRegion", $FisheryRegion);refreshView($inputFisheryRegion)'
+-->
+ <JButton constraints='"buttonCheck"' text="isisfish.common.check"/>
+<!--
+actionCommand='thread:input.InputFisheryRegion.check($FisheryRegion)'
+-->
+ </JPanel>
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,101 @@
+<JPanel name="isisfish.gear.title" constraints='"inputGear"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Gear.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="Gear" context="current" source="Gear"/>
+-->
+
+ <JLabel constraints='"labelGearName"' text="isisfish.gear.name"/>
+ <JTextField constraints='"fieldGearName"' id="fieldGearName">
+<!-- Fixme : DocumentEvents
+origin="$Gear/name"
+<DocumentEvents onModified="Update($fieldGearName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearEffortUnit"' text="isisfish.gear.effortUnit"/>
+ <JTextField constraints='"fieldGearEffortUnit"' id="fieldGearEffortUnit">
+<!-- Fixme : DocumentEvents
+origin="$Gear/effortUnit"
+<DocumentEvents onModified="Update($fieldGearEffortUnit/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearStandardisationFactor"' text="isisfish.gear.standardisationFactor"/>
+ <JTextField constraints='"fieldGearStandardisationFactor"' id="fieldGearStandardisationFactor">
+<!-- Fixme : DocumentEvents
+origin="$Gear/standardisationFactor"
+<DocumentEvents onModified="Update($fieldGearStandardisationFactor/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelGearParamName"' text="isisfish.gear.technicalParameter"/>
+ <JTextField constraints='"fieldGearParamName"' id="fieldGearParamName">
+<!-- Fixme : DocumentEvents
+origin="$Gear/parameterName">
+<DocumentEvents onModified="Update($fieldGearParamName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearParamPossibleValues"' text="isisfish.gear.rangeValues"/>
+ <JComboBox constraints='"fieldGearParamType"' id="fieldGearParamType">
+<!-- Fixme : ComboBoxModel
+firstNull="true"
+origin="$Gear/possibleValue/type"
+actionCommand="update(concat($fieldGearParamType/selectedItem, '[', $fieldGearParamPossibleValue/text, ']'), $Gear/possibleValue)"
+<ComboBoxModel origin="fr.ifremer.isisfish.types.RangeOfValues.getPossibleTypes()"/>
+-->
+
+ </JComboBox>
+ <JTextField constraints='"fieldGearParamPossibleValue"' id="fieldGearParamPossibleValue">
+<!-- Fixme : DocumentEvents
+origin="$Gear/possibleValue/values"
+<DocumentEvents onModified="Update(concat($fieldGearParamType/selectedItem, '[', $fieldGearParamPossibleValue/text, ']'), $Gear/possibleValue)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearComment"' text="isisfish.gear.comments"/>
+ <JScrollPane constraints='"fieldGearComment"'>
+ <JTextArea id="fieldGearComment">
+<!-- Fixme : DocumentEvents
+origin="$Gear/comment"
+<DocumentEvents onModified="Update($fieldGearComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelGearButtonAction" constraints='"panelGearButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.Input.create("Gear")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Gear", $Gear);refreshView($inputGear)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Gear", $Gear);refreshView($inputGear)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Gear"
+actionCommand="input.Input.remove($Gear)"
+-->
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,478 @@
+<JFrame id="input" visible="true" size='{new Dimension(700,500)}' title="isisfish.input.title"
+ layout='{new BorderLayout()}' location='{new Point(0,139)}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+Maximizable="true" Closable="true"
+-->
+
+<!--
+ <ContextDataSource id="EntityModified" context="current" source="EntityModified"/>
+ <ContextDataSource id="RegionStorage" context="current" source="RegionStorage"/>
+ <ContextDataSource id="TopiaContext" context="current" source="TopiaContext"/>
+
+ <WindowEvents id="events"
+ onOpened="input.Input.initContext()"
+ onClosing="input.Input.saveCommentAndExit($RegionStorage)" />
+-->
+
+ <!--
+ | permet de savoir si la region a ete modifiee ou non
+ +-->
+<!--
+ <TopiaEntityEvents id="saveStateWatcher" origin="$TopiaContext"
+ entityModified="input.Input.setEntityModified()"
+ propertyChange="input.Input.setEntityModified()"
+ commit="input.Input.unsetEntityModified('true')"
+ rollback="input.Input.unsetEntityModified('false')" />
+-->
+
+ <JMenuBar id="menu">
+ <JMenu text="isisfish.input.menu.file">
+<!--
+ mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegion" accelerator="accNew"/>
+<!--
+icon="imgImport" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importRegion()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRenameRegion" accelerator="accNew"/>
+<!--
+icon="imgImport" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importRegionAndRename()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegionV2" accelerator="accNew"/>
+<!--
+icon="imgImporter" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importV2Region()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegionSimulation" accelerator="accImportFromSimulation"/>
+<!--
+icon="imgImportFromSimulation" mnemonic="mnImportFromSimulation"
+ActionCommand="thread:input.Input.importRegionFromSimulation($fieldCurrentRegion)"
+-->
+ <JMenuItem text="isisfish.input.menu.exportRegion" accelerator="accExport"/>
+<!--
+icon="imgExport" mnemonic="mnExport"
+ActionCommand="thread:input.Input.exportRegion($RegionStorage)"
+origin="$RegionStorage"
+-->
+ <JMenuItem text="isisfish.input.menu.copyRegion" accelerator="accCopy"/>
+<!--
+icon="imgCopy" mnemonic="mnCopy"
+ActionCommand="thread:input.Input.copyRegion($RegionStorage)"
+origin="$RegionStorage"
+-->
+ <JSeparator/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocaly" accelerator="accRemove"/>
+<!--
+icon="imgRemove" mnemonic="mnRemove"
+ActionCommand="thread:input.Input.removeRegion($RegionStorage, 'false')"
+origin="$RegionStorage"
+-->
+ <JSeparator/>
+ <JMenuItem name="miClose" text="isisfish.input.menu.close" accelerator="accOpen"/>
+<!--
+icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.input.menu.server">
+<!--
+mnemonic="mnVCS"
+-->
+ <JMenuItem text="isisfish.input.menu.addRegion" accelerator="accAdd"/>
+<!--
+icon="imgAdd" mnemonic="mnAdd"
+ActionCommand="thread:input.Input.commitRegionInCVS($RegionStorage)"
+origin="not(isOnRemote($RegionStorage))"
+-->
+ <JMenuItem text="isisfish.input.menu.commit" accelerator="accCommitVCS"/>
+<!--
+icon="imgCommitVCS" mnemonic="mnCommitVCS"
+ActionCommand="thread:input.Input.commitRegionInCVS($RegionStorage)"
+origin="isOnRemote($RegionStorage)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocalyRemotely" accelerator="accRemove"/>
+<!--
+icon="imgRemove" mnemonic="mnRemove"
+origin="isOnRemote($RegionStorage)"
+ActionCommand="thread:input.Input.removeRegion($RegionStorage, 'true')"
+-->
+ </JMenu>
+ <JMenu text="isisfish.input.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem name="miAbout" text="isisfish.input.menu.about" accelerator="accAbout"/>
+<!--
+icon="imgAbout" mnemonic="mnAbout" ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Input.xgl")}'>
+ <JTextField constraints='"fieldNewRegion"' id="fieldNewRegion">
+<!--
+ <DocumentEvents onModified="refreshView($JButtonNewRegion)"/>
+-->
+
+ </JTextField>
+
+ <JButton constraints='"JButtonNewRegion"' id="JButtonNewRegion" text="isisfish.input.newRegion"/>
+<!--
+ origin="$fieldNewRegion/text != ''"
+ actionCommand="input.Input.newRegion($inputPane, $fieldCurrentRegion, $fieldNewRegion/text)"
+-->
+
+ <JComboBox constraints='"fieldCurrentRegion"' id="fieldCurrentRegion">
+<!--
+ origin="$RegionStorage/name" firstNull="true"
+ actionCommand="thread:input.Input.loadRegion($inputPane, $fieldCurrentRegion/selectedItem)"
+-->
+
+<!--
+<ComboBoxModel origin="fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()"/>
+-->
+ </JComboBox>
+
+ <JPanel constraints='"tree"' layout='{new BorderLayout()}'>
+
+<!--
+ <hidablePanel id="treePanel" name="treePanel" origin="$RegionStorage" layout='{new BorderLayout()}'>
+-->
+ <JScrollPane>
+ <JTree id="tree" name="tree">
+<!-- Fixme : NestedTreeModel
+ <NestedTreeModel id="treeModel">
+ <TreeNode id="rootTreeNode" origin="$FisheryRegion">
+ <TreeNode id="cellsTreeNode" name="Cells" type="fr.ifremer.isisfish.entities.Cell">
+ <TreeNode treeOrigin="../.." childsPropertyName="cell"/>
+ </TreeNode>
+ <TreeNode id="zonesTreeNode" name="Zones" type="fr.ifremer.isisfish.entities.Zone">
+ <TreeNode id="zoneNode" treeOrigin="../.." childsPropertyName="zone"/>
+ </TreeNode>
+ <TreeNode name="Ports" type="fr.ifremer.isisfish.entities.Port">
+ <TreeNode treeOrigin="../.." childsPropertyName="port"/>
+ </TreeNode>
+ <TreeNode name="Species" type="fr.ifremer.isisfish.entities.Species">
+ <TreeNode treeOrigin="../.." childsPropertyName="species">
+ <TreeNode name="Populations" type="fr.ifremer.isisfish.entities.Population">
+ <TreeNode treeOrigin="../.." childsPropertyName="getPopulation(.)"/>
+ </TreeNode>
+ </TreeNode>
+ </TreeNode>
+ <TreeNode name="Gears" type="fr.ifremer.isisfish.entities.Gear">
+ <TreeNode treeOrigin="../.." childsPropertyName="gear"/>
+ </TreeNode>
+ <TreeNode name="Metiers" type="fr.ifremer.isisfish.entities.Metier">
+ <TreeNode treeOrigin="../.." childsPropertyName="metier"/>
+ </TreeNode>
+ <TreeNode name="TripTypes" type="fr.ifremer.isisfish.entities.TripType">
+ <TreeNode treeOrigin="../.." childsPropertyName="tripType"/>
+ </TreeNode>
+ <TreeNode name="VesselTypes" type="fr.ifremer.isisfish.entities.VesselType">
+ <TreeNode treeOrigin="../.." childsPropertyName="vesselType"/>
+ </TreeNode>
+ <TreeNode name="SetOfVessels" type="fr.ifremer.isisfish.entities.SetOfVessels">
+ <TreeNode treeOrigin="../.." childsPropertyName="setOfVessels"/>
+ </TreeNode>
+ <TreeNode name="Strategies" type="fr.ifremer.isisfish.entities.Strategy">
+ <TreeNode treeOrigin="../.." childsPropertyName="strategy"/>
+ </TreeNode>
+ </TreeNode>
+ </NestedTreeModel>
+
+ <TreeSelectionEvents id="treeSelectionListener"
+ onValueChanged="input.Input.treeSelectionChanged($inputPane, $tree)"/>
+
+ <TreeRenderer>
+ <DefaultTreeRenderer childsPropertyName="name"/>
+ <DefaultTreeRenderer type="java.lang.String"/>
+ </TreeRenderer>
+-->
+ <!-- used to update Tree when IsisContext is modified -->
+<!--
+ <TopiaEntityEvents id="updateTree" origin="$TopiaContext"
+ commit="input.Input.updateTreeEntityCommit($tree, $treeModel, $e/initialEvent)"
+ rollback="input.Input.updateTreeEntityRollback($tree, $treeModel, $e/initialEvent)"
+ entityRemoved="input.Input.updateTreeEntityRemoved($tree, $treeModel, $e/initialEvent)"/>
+
+-->
+ </JTree>
+ </JScrollPane>
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+ </JPanel>
+ <JPanel id="inputPane">
+
+<!-- Fixme : CardLayout
+layout='{new Cardlayout()}'
+-->
+ <JLabel id="emptyPanel" constraints='"emptyPanel"' horizontalAlignment="0"
+ text="isisfish.input.selectNodeTree"/>
+
+ <!--
+ + FisheryRegion
+ +-->
+ <JPanel constraints='"inputFisheryRegion"' id="inputFisheryRegion" layout='{new BorderLayout()}'>
+ <JSplitPane id="FisheryRegionTab" name="FisheryRegion"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/FisheryRegion.xml"/>
+-->
+ <JPanel id="fisheryRegionMapPanel" layout='{new BorderLayout()}'>
+<!--
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="fisheryRegionMapTool">
+ <OpenMapToolSet id="fisheryRegionMapToolSet" origin="$fisheryRegionMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="fisheryRegionMap" origin="$FisheryRegion"
+ selectionMode="0">
+ <OpenMapEvents id="fisheryRegionMapEvents" mouseMode="Nav"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueCells"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Cells')"
+-->
+ </JPanel>
+
+ <!--
+ + Cell
+ +-->
+ <JPanel constraints='"inputCell"' layout='{new BorderLayout()}'>
+ <JSplitPane id="CellTab" name="Cells"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Cell.xml" id="inputCell"/>
+-->
+ <JPanel id="cellMapPanel" layout='{new BorderLayout()}'>
+<!--
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="cellMapTool">
+ <OpenMapToolSet id="cellMapToolSet" origin="$cellMap"/>
+ </OpenMapToolPanel>
+ <OpenMap constraints='"BorderLayout.CENTER"' id="cellMap"
+ origin="$FisheryRegion" selected="$Cell" selectionMode="1">
+ <OpenMapEvents id="cellMapEvents" mouseMode="Select"
+ onMouseClicked="UIHelper.setTreeSelection($cellMap/selectedCells[1])"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueZones"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Zones')"
+-->
+ </JPanel>
+
+ <!--
+ + Zone
+ +-->
+ <JPanel constraints='"inputZone"' layout='{new BorderLayout()}'>
+ <JSplitPane id="ZoneTab" name="Zones"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Zone.xml" id="inputZone"/>
+-->
+ <JPanel id="zoneMapPanel" layout='{new BorderLayout()}'>
+<!-- Fixme : OpenMapToolPanel, OpenMap
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="zoneMapTool">
+ <OpenMapToolSet id="zoneMapToolSet" origin="$zoneMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="zoneMap" origin="$FisheryRegion" selected="$Zone/cell"
+ selectionMode="2">
+ <OpenMapEvents id="zoneMapEvents" mouseMode="Select"
+ onMouseClicked="Update($zoneMap/selectedCells, $Zone/cell, refreshView($zoneCells))"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continuePorts"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Ports')"
+-->
+ </JPanel>
+
+ <!--
+ + Port
+ +-->
+ <JPanel constraints='"inputPort"' layout='{new BorderLayout()}'>
+ <JSplitPane id="PortTab" name="Ports"
+ oneTouchExpandable="true" dividerLocation="270" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Port.xml" id="inputPort"/>
+-->
+ <JPanel id="portMapPanel" layout='{new BorderLayout()}'>
+<!-- Fixme : OpenMapToolPanel, OpenMap
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="portMapTool">
+ <OpenMapToolSet id="portMapToolSet" origin="$portMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="portMap" origin="$FisheryRegion" selected="$Port/cell"
+ selectionMode="1">
+ <OpenMapEvents id="portMapEvents" mouseMode="Select"
+ onMouseClicked="Update($portMap/selectedCells[1], $Port/cell, refreshView($portCell))"/>
+ </OpenMap>
+-->
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueSpecies"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Species')"
+-->
+ </JPanel>
+
+ <!--
+ + Species
+ +-->
+ <JPanel id="SpeciesTab" constraints='"inputSpecies"' layout='{new BorderLayout()}'>
+<!--
+<xpanel id="inputSpecies" name="Species" xml="input/Species.xml"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continuePopulations"/>
+<!--
+ actionCommand="UIHelper.setTreeSelectionFirstChild($Species)"
+-->
+ </JPanel>
+
+ <!--
+ + Population
+ +-->
+ <JPanel constraints='"inputPopulation"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="PopulationTab" name="Populations">
+<!--
+ <xpanel xml="input/PopulationBasics.xml" id="inputPopulationBasics"/>
+ <xpanel xml="input/PopulationGroup.xml" id="inputPopulationGroup"/>
+ <xpanel xml="input/PopulationEquation.xml" id="inputPopulationEquation"/>
+ <xpanel xml="input/PopulationZones.xml" id="inputPopulationZones"/>
+ <xpanel xml="input/PopulationSeasons.xml" id="inputPopulationSeasonInfo"/>
+ <xpanel xml="input/PopulationCapturability.xml" id="inputCapturability"/>
+ <xpanel xml="input/PopulationRecruitment.xml" id="inputPopulationRecruitment"/>
+ <xpanel xml="input/PopulationMigration.xml" id="inputMigration"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueGears"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Gears')"
+-->
+ </JPanel>
+
+ <!--
+ + Gear
+ +-->
+ <JPanel constraints='"inputGear"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="GearTab" name="Gear">
+<!--
+ <xpanel xml="input/Gear.xml" id="inputGear"/>
+ <xpanel xml="input/Selectivity.xml" id="inputSelectivity"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueMetiers"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Metiers')"
+-->
+ </JPanel>
+
+ <!--
+ + Metier
+ +-->
+ <JPanel constraints='"inputMetier"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="MetierTab" name="Metier" >
+<!--
+ <xpanel xml="input/Metier.xml" id="inputMetier"/>
+ <xpanel xml="input/MetierSeasonInfoZone.xml" id="inputMetierSeasonInfoZone"/>
+ <xpanel xml="input/MetierSeasonInfoSpecies.xml" id="inputMetierSeasonInfoSpecies"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueTripTypes"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('TripTypes')"
+-->
+ </JPanel>
+
+ <!--
+ + TripType
+ +-->
+ <JPanel id="TripTypeTab" constraints='"inputTripType"' layout='{new BorderLayout()}'>
+<!--
+ <xpanel xml="input/TripType.xml" id="inputTripType" name="TripType"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueVesselTypes"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('VesselTypes')"
+-->
+ </JPanel>
+
+ <!--
+ + VesselType
+ +-->
+ <JPanel id="VesselTypeTab" constraints='"inputVesselType"' layout='{new BorderLayout()}'>
+<!--
+ <xpanel xml="input/VesselType.xml" id="inputVesselType" name="VesselType"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueSetOfVessels"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('SetOfVessels')"
+-->
+ </JPanel>
+
+ <!--
+ + SetOfVessels
+ +-->
+ <JPanel constraints='"inputSetOfVessels"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="SetOfVesselsTab" name="SetOfVessels">
+<!--
+ <xpanel xml="input/SetOfVessels.xml" id="inputSetOfVessels"/>
+ <xpanel xml="input/EffortDescription.xml" id="inputEffortDescription"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueStrategies"/>
+<!--
+
+ actionCommand="UIHelper.setTreeSelection('Strategies')"
+-->
+ </JPanel>
+
+ <!--
+ + Strategy
+ +-->
+ <JTabbedPane constraints='"inputStrategy"' id="StrategyTab" name="Strategy" >
+<!--
+ <xpanel xml="input/Strategy.xml" id="inputStrategy"/>
+ <xpanel xml="input/StrategyMonthInfo.xml" id="inputStrategyMonthInfo"/>
+-->
+ </JTabbedPane>
+
+ </JPanel>
+ </JSplitPane>
+
+<!--
+<xpanel constraints='"BorderLayout.SOUTH"' xml="StatusBar.xml"/>
+-->
+
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,74 @@
+<JPanel name="isisfish.metier.title" constraints='"inputMetierCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Metier.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Metier" context="current" source="Metier"/>
+-->
+
+ <JLabel constraints='"labelMetierName"' text="isisfish.metier.name"/>
+ <JTextField constraints='"fieldMetierName"' id="fieldMetierName">
+<!-- Fixme : DocumentEvents
+ origin="$Metier/name"
+<DocumentEvents onModified="Update($fieldMetierName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelMetierGear"' text="isisfish.common.gear"/>
+ <JComboBox constraints='"fieldMetierGear"' id="fieldMetierGear">
+<!-- Fixme : ComboBoxModel
+origin="$Metier/gear" renderer="name" firstNull="true"
+actionCommand="update($fieldMetierGear/selectedItem, $Metier/gear)"
+<ComboBoxModel origin="$FisheryRegion/gear"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelMetierParam"' text="isisfish.metier.rangeValues"/>
+ <JTextField constraints='"fieldMetierParam"' id="fieldMetierParam">
+<!-- Fixme : DocumentEvents
+origin="$Metier/gearParameterValue"
+<DocumentEvents onModified="Update($fieldMetierParam/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelMetierComment"' text="isisfish.metier.comments"/>
+ <JScrollPane constraints='"fieldMetierComment"'>
+ <JTextArea id="fieldMetierComment">
+<!-- Fixme : DocumentEvents
+ origin="$Metier/comment"
+<DocumentEvents onModified="Update($fieldMetierComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelMetierButtonAction" constraints='"panelMetierButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.Input.create("Metier")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Metier", $Metier);refreshView($inputMetier)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Metier", $Metier);refreshView($inputMetier)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Metier"
+actionCommand="input.Input.remove($Metier)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,115 @@
+<JPanel name="isisfish.metierSeasonInfoSpecies.title" constraints='"inputMetierSeasonInfoSpecies"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelMetierSeasonInfo"' text="isisfish.metierSeasonInfoSpecies.selectSeason"/>
+ <JComboBox constraints='"fieldMetierSeasonInfo"' id="fieldMetierSeasonInfo">
+<!-- Fixme : ComboBoxModel
+firstNull="true"
+origin="$MetierSeasonInfo" renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('MetierSeasonInfo', $fieldMetierSeasonInfo/selectedItem)"
+<ComboBoxModel origin="getMetierSeasonInfo($Metier)"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelTargetSpecies"' text="isisfish.metierSeasonInfoSpecies.selectSpecies"/>
+ <JComboBox constraints='"fieldTargetSpecies"' id="fieldTargetSpecies">
+<!-- Fixme : ComboBoxModel
+firstNull="true" renderer="name"
+<ComboBoxModel origin="$FisheryRegion/species"/>
+-->
+
+ </JComboBox>
+
+ <!--
+ | TargetFactor equation
+ +-->
+ <JLabel constraints='"labelTargetFactorEquation"' text="isisfish.metierSeasonInfoSpecies.targetFactor"/>
+
+ <JComboBox constraints='"fieldTargetFactorEquation"' id="fieldTargetFactorEquation">
+<!-- Fixme : ComboBoxModel
+renderer="name" firstNull="true"
+actionCommand="update($fieldTargetFactorEquation/selectedItem/content, $fieldTargetFactorScript/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "TargetFactor")'/>
+-->
+
+ </JComboBox>
+
+ <!-- TODO change Java to $Langage/selectedItem when we can change language -->
+ <JButton constraints='"buttonTargetFactorSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveAsModel("TargetFactor", "Java", $fieldTargetFactorScript/text);refreshView($fieldTargetFactorEquation)'
+-->
+
+ <JButton constraints='"buttonTargetFactorEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor("TargetFactor","new","fr.ifremer.isisfish.equation.TargetSpeciesTargetFactorEquation",$fieldTargetFactorScript/text,$fieldTargetFactorScript)'
+-->
+
+ <JScrollPane constraints='"fieldTargetFactorScript"'>
+<!--
+<editor id="fieldTargetFactorScript" askIfNotSaved="false"
+origin="org.codelutin.util.FileUtil.getTempFile('', '.java')">
+</editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | PrimaryCatch
+ +-->
+ <JCheckBox constraints='"fieldPrimaryCatch"' id="fieldPrimaryCatch"
+ text="isisfish.metierSeasonInfoSpecies.mainSpecies">
+ </JCheckBox>
+
+ <!--
+ | Add
+ +-->
+ <JButton constraints='"buttonMetierSpeciesAddTargetSpecies"' id="buttonMetierSpeciesAddTargetSpecies"
+ text="isisfish.common.add"/>
+<!--
+actionCommand="input.InputMetier.addTargetSpecies($fieldMetierSeasonInfo/selectedItem, $fieldTargetSpecies/selectedItem, $fieldTargetFactorScript/text, $fieldPrimaryCatch/selected)"
+-->
+
+ <JScrollPane constraints='"tableTargetSpecies"'>
+ <JTable id="tableTargetSpecies">
+<!--
+ <tableModel origin="getSpeciesTargetSpecies($MetierSeasonInfo)">
+ <column title="Species" property="species" renderer="name"/>
+ <column title="Target factor" property="targetFactorEquation" renderer="name" editable="true">
+ <tableColumnEditor><EquationTableEditor/></tableColumnEditor>
+ </column>
+ <column title="Main species for the metier" property="primaryCatch"
+ type="boolean" editable="true"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonMetierSpeciesRemoveTargetSpecies"' id="buttonMetierSpeciesRemoveTargetSpecies"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputMetier.removeTargetSpecies(getSpeciesTargetSpecies($MetierSeasonInfo)[$tableTargetSpecies/selectedRow + 1])"
+-->
+
+ <JPanel id="panelMetierSeasonInfoSpeciesButtonAction" constraints='"panelMetierSeasonInfoSpeciesButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoSpecies)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoSpecies)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,84 @@
+<JPanel name="isisfish.metierSeasonInfoZone.title" constraints='"inputMetierSeasonInfoZone"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="MetierSeasonInfo" context="current" source="MetierSeasonInfo"/>
+-->
+ <JLabel constraints='"labelMetierSeasonChoice"' text="isisfish.metierSeasonInfoZone.selectSeason"/>
+ <JComboBox constraints='"fieldMetierSeasonChoice"' id="fieldMetierSeasonChoice">
+<!--
+firstNull="true"
+origin="$MetierSeasonInfo" renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('MetierSeasonInfo', $fieldMetierSeasonChoice/selectedItem)"
+<ComboBoxModel origin="getMetierSeasonInfo($Metier)"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelMetierSeason"' text="isisfish.metierSeasonInfoZone.season"/>
+<!-- Fixme : SeasonIntervalPanel
+ <SeasonIntervalPanel constraints='"displayMetierSeason"' id="displayMetierSeason"
+ origin="$MetierSeasonInfo">
+ <PropertyChangeEvents onChange="Update" propertyName="first">
+ <UpdateOrigin source="$displayMetierSeason/model/first"
+ target="$MetierSeasonInfo/firstMonth"/>
+ </PropertyChangeEvents>
+ <PropertyChangeEvents onChange="Update" propertyName="last">
+ <UpdateOrigin source="$displayMetierSeason/model/last"
+ target="$MetierSeasonInfo/lastMonth"/>
+ </PropertyChangeEvents>
+ </SeasonIntervalPanel>
+-->
+
+ <JLabel constraints='"labelMetierZone"' text="isisfish.common.zone"/>
+ <JScrollPane constraints='"fieldMetierZone"'>
+ <JList id="metierZones">
+<!-- Fixme : ListModel and ListSelectionEvents
+origin="$MetierSeasonInfo/zone" renderer="name"
+<ListModel origin="$FisheryRegion/zone"/>
+<ListSelectionEvents onValueChanged="Update($metierZones/selectedValues)"/>
+-->
+
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelMetierSeasonZoneComment"' text="isisfish.metierSeasonInfoZone.comments"/>
+ <JScrollPane constraints='"fieldMetierSeasonZoneComment"'>
+ <JTextArea id="fieldMetierSeasonZoneComment">
+<!-- Fixme : DocumentEvents
+origin="$MetierSeasonInfo/seasonZoneComment"
+<DocumentEvents onModified="Update($fieldMetierSeasonZoneComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelMetierSeasonInfoZoneButtonAction" constraints='"panelMetierSeasonInfoZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.InputMetier.createSeasonInfo($Metier)'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoZone)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoZone)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$MetierSeasonInfo"
+actionCommand="input.InputMetier.removeSeasonInfo($Metier, $MetierSeasonInfo)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,159 @@
+<JPanel name="isisfish.populationBasics.title" constraints='"inputPopulationBasics"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationBasics.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Population" context="current" source="Population"/>
+-->
+ <JLabel constraints='"labelPopulationBasicsName"' text="isisfish.populationBasics.name"/>
+ <JTextField constraints='"fieldPopulationBasicsName"' id="fieldPopulationBasicsName">
+<!-- Fixme : DocumentEvents
+origin="$Population/name"
+<DocumentEvents onModified="Update($fieldPopulationBasicsName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationBasicsGeographicID"' text="isisfish.populationBasics.geographicID"/>
+ <JTextField constraints='"fieldPopulationBasicsGeographicID"' id="fieldPopulationBasicsGeographicID">
+<!-- Fixme : DocumentEvents
+origin="$Population/geographicId"
+<DocumentEvents onModified="Update($fieldPopulationBasicsGeographicID/text)"/>
+-->
+ </JTextField>
+
+ <!-- TODO radioButton dynamique en age / longueur -->
+
+ <JLabel constraints='"labelPopulationBasicsNbClasses"' text="isisfish.populationBasics.numberGroup"/>
+ <JTextField constraints='"fieldPopulationBasicsNbClasses"' id="fieldPopulationBasicsNbClasses" editable="false"/>
+<!--
+origin="sizePopulationGroup($Population)"
+-->
+
+ <JButton constraints='"buttonPopulationBasicsCreateClasses"'
+ id="buttonPopulationBasicsCreateClasses" text="isisfish.populationBasics.recreateClasses"/>
+<!--
+actionCommand="input.InputPopulation.wizardGroupOpen($Population)"
+-->
+
+ <JLabel constraints='"labelPopulationBasicsMatureClass"' text="isisfish.populationBasics.maturityGroup"/>
+ <JComboBox constraints='"fieldPopulationBasicsMatureClass"'
+ id="fieldPopulationBasicsMatureClass">
+<!--
+firstNull="true"
+origin="$Population/maturityGroup" renderer="concat(population/name, ' - ', id)"
+actionCommand="update($fieldPopulationBasicsMatureClass/selectedItem, $Population/maturityGroup)"
+<ComboBoxModel origin="$Population/populationGroup"/>
+-->
+ </JComboBox>
+
+ <JCheckBox constraints='"fieldPopulationBasicsPlusGroup"' id="fieldPopulationBasicsPlusGroup">
+<!-- Fixme : MouseEvents
+origin="$Population/plusGroup" text="isisfish.populationBasics.plusGroup"
+<MouseEvents onClicked="Update($fieldPopulationBasicsPlusGroup/selected)"/>
+-->
+ </JCheckBox>
+
+ <JTable constraints='"tableAgeLength"'>
+<!-- Fixme : tableModel
+ layDown="true"
+ <tableModel origin="$Population/populationGroup">
+ <column title="Age" property="age"/>
+ <column title="Length" property="length"/>
+ </tableModel>
+-->
+ </JTable>
+
+ <JLabel constraints='"labelPopulationBasicsGrowth"' text="isisfish.populationBasics.growth"/>
+ <JComboBox constraints='"fieldPopulationBasicsGrowth"' id="fieldPopulationBasicsGrowth">
+<!--
+origin="$Population/growth" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationBasicsGrowth/selectedItem/content, $fieldScriptPopulationBasicsGrowth/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Growth")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationBasicsGrowthSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/growth);refreshView($fieldPopulationBasicsGrowth)'
+-->
+
+ <JButton constraints='"buttonPopulationBasicsGrowthEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor and DocumentEvents
+actionCommand='input.Input.openEditor($Population/growth/category,$Population/growth/name,$Population/growth/javaInterface,$Population/growth/content,$fieldScriptPopulationBasicsGrowth)'
+ <editor constraints='"fieldScriptPopulationBasicsGrowth"' askIfNotSaved="false"
+ id="fieldScriptPopulationBasicsGrowth"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/growth/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationGrowth($Population, $fieldScriptPopulationBasicsGrowth/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ <JLabel constraints='"labelPopulationBasicsGrowthReverse"' text="isisfish.populationBasics.growthReverse"/>
+ <JComboBox constraints='"fieldPopulationBasicsGrowthReverse"' id="fieldPopulationBasicsGrowthReverse">
+<!-- Fixme : ComboBoxModel
+origin="$Population/growthReverse" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationBasicsGrowthReverse/selectedItem/content, $fieldScriptPopulationBasicsGrowthReverse/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "GrowthReverse")'/>
+-->
+ </JComboBox>
+ <JButton constraints='"buttonPopulationBasicsGrowthReverseSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/growthReverse);refreshView($fieldPopulationBasicsGrowthReverse)'
+-->
+
+ <JButton constraints='"buttonPopulationBasicsGrowthReverseEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor
+actionCommand='input.Input.openEditor($Population/growthReverse/category,$Population/growthReverse/name,$Population/growthReverse/javaInterface,$Population/growthReverse/content,$fieldScriptPopulationBasicsGrowthReverse)'
+
+ <editor constraints='"fieldScriptPopulationBasicsGrowthReverse"' askIfNotSaved="false" id="fieldScriptPopulationBasicsGrowthReverse" origin="org.codelutin.util.FileUtil.getTempFile($Population/growthReverse/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationGrowthReverse($Population, $fieldScriptPopulationBasicsGrowthReverse/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <JLabel constraints='"labelPopulationBasicsComment"' text="isisfish.population.comments"/>
+ <JScrollPane constraints='"fieldPopulationBasicsComment"'>
+ <JTextArea id="fieldPopulationBasicsComment">
+<!-- Fixme : DocumentEvents
+origin="$Population/comment"
+<DocumentEvents onModified="Update($fieldPopulationBasicsComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationBasicsButtonAction" constraints='"panelPopulationBasicsButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.InputPopulation.create()'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationBasics)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationBasics)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Population"
+actionCommand="input.Input.remove($Population)"
+-->
+
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,43 @@
+<JPanel name="isisfish.populationCapturability.title" constraints='"inputPopulationCapturability"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationCapturability.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationCapturability"' text="isisfish.populationCapturability.selectCoefficient"/>
+
+<!-- Fixme : MatrixPanel and MatrixPanelEvents
+ <MatrixPanel constraints="fieldPopulationCapturability" id="fieldPopulationCapturability"
+ origin="copy($Population/capturability)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldPopulationCapturability/matrix), $Population/capturability)"/>
+ </MatrixPanel>
+-->
+
+ <JLabel constraints='"labelPopulationCapturabilityComment"' text="isisfish.populationCapturability.comments"/>
+ <JScrollPane constraints='"fieldPopulationCapturabilityComment"'>
+ <JTextArea id="fieldPopulationCapturabilityComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/capturabilityComment"
+ <DocumentEvents onModified="Update($fieldPopulationCapturabilityComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationCapturabilityButtonAction" constraints='"panelPopulationCapturabilityButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputCapturability)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,138 @@
+<JPanel name="isisfish.populationEquation.title" constraints='"inputPopulationEquation"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationEquation.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <!--
+ |
+ | NaturalDeathRate
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationNaturalDeathRate"' text="isisfish.populationEquation.naturalDeathRate"/>
+ <JComboBox constraints='"fieldPopulationNaturalDeathRate"' id="fieldPopulationNaturalDeathRate">
+<!-- Fixme : ComboBoxModel
+origin="$Population/naturalDeathRate" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationNaturalDeathRate/selectedItem/content, $fieldScriptPopulationNaturalDeathRate/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "NaturalDeathRate")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationNaturalDeathRateSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($Population/naturalDeathRate);refreshView($fieldPopulationNaturalDeathRate)'
+-->
+
+ <JButton constraints='"buttonPopulationNaturalDeathRateEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/naturalDeathRate/category,$Population/naturalDeathRate/name,$Population/naturalDeathRate/javaInterface,$Population/naturalDeathRate/content,$fieldScriptPopulationNaturalDeathRate)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationNaturalDeathRate"' askIfNotSaved="false"
+ id="fieldScriptPopulationNaturalDeathRate"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/naturalDeathRate/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationNaturalDeathRate($Population, $fieldScriptPopulationNaturalDeathRate/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <!--
+ |
+ | MeanWeight
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationMeanWeight"' text="isisfish.populationEquation.meanWeight"/>
+ <JComboBox constraints='"fieldPopulationMeanWeight"' id="fieldPopulationMeanWeight">
+<!-- Fixme : ComboBoxModel
+ origin="$Population/meanWeight" renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationMeanWeight/selectedItem/content, $fieldScriptPopulationMeanWeight/text)
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "MeanWeight")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMeanWeightSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/meanWeight);refreshView($fieldPopulationMeanWeight)'
+-->
+
+ <JButton constraints='"buttonPopulationMeanWeightEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/meanWeight/category,$Population/meanWeight/name,$Population/meanWeight/javaInterface,$Population/meanWeight/content,$fieldScriptPopulationMeanWeight)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationMeanWeight"' askIfNotSaved="false"
+ id="fieldScriptPopulationMeanWeight"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/meanWeight/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationMeanWeight($Population, $fieldScriptPopulationMeanWeight/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <!--
+ |
+ | Price
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationPrice"' text="isisfish.populationEquation.price"/>
+ <JComboBox constraints='"fieldPopulationPrice"' id="fieldPopulationPrice">
+<!-- Fixme : ComboBoxModel
+ origin="$Population/price" renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationPrice/selectedItem/content, $fieldScriptPopulationPrice/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Price")'/>
+-->
+
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationPriceSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($Population/price);refreshView($fieldPopulationPrice)'
+-->
+
+ <JButton constraints='"buttonPopulationPriceEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/price/category,$Population/price/name,$Population/price/javaInterface,$Population/price/content,$fieldScriptPopulationPrice)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationPrice"' askIfNotSaved="false"
+ id="fieldScriptPopulationPrice"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/price/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationPrice($Population, $fieldScriptPopulationPrice/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+
+ <!--
+ |
+ | Action button
+ |
+ +-->
+
+ <JPanel id="panelPopulationEquationButtonAction" constraints='"panelPopulationEquationButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationEquation)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationEquation)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,159 @@
+<JPanel name="isisfish.populationGroup.title" constraints='"inputPopulationGroup"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="PopulationGroup" context="current" source="PopulationGroup"/>
+-->
+
+ <JLabel constraints='"labelPopulationGroupPopulationGroup"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationGroupPopulationGroup"'>
+<!-- Fixme : ComboBoxModel
+ id="fieldPopulationGroupPopulationGroup" renderer="concat(population/name, ' - ', id)"
+ origin="$PopulationGroup" firstNull="true"
+ actionCommand="input.Input.selectEntity('PopulationGroup', $fieldPopulationGroupPopulationGroup/selectedItem)"
+ <ComboBoxModel origin="$Population/populationGroup"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelPopulationGroupMeanWeight"' text="isisfish.populationGroup.meanWeigth"/>
+ <JTextField constraints='"fieldPopulationGroupMeanWeight"' id="fieldPopulationGroupMeanWeight"/>
+<!--
+ origin="$PopulationGroup/meanWeight" editable="false"
+-->
+
+ <JLabel constraints='"labelPopulationGroupPrice"' text="isisfish.populationGroup.price"/>
+ <JTextField constraints='"fieldPopulationGroupPrice"' id="fieldPopulationGroupPrice"/>
+<!--
+ origin="$PopulationGroup/price" editable="false"
+-->
+ <JLabel constraints='"labelPopulationGroupNaturalDeathRate"' text="isisfish.populationGroup.naturalDeathRate"/>
+<!-- Fixme : matrixPanel
+ <matrixPanel constraints='"fieldPopulationGroupNaturalDeathRate"'
+ id="fieldPopulationGroupNaturalDeathRate"
+ origin="reduce(getSubMatrixOnSemantic($Population/naturalDeathRateMatrix, '0', util:array($PopulationGroup)))" />
+-->
+ <JLabel constraints='"labelPopulationGroupReproductionRate"' text="isisfish.populationGroup.reproductionRate"/>
+ <JTextField constraints='"fieldPopulationGroupReproductionRate"' id="fieldPopulationGroupReproductionRate">
+<!--
+origin="$PopulationGroup/reproductionRate"
+<DocumentEvents onModified="Update($fieldPopulationGroupReproductionRate/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationGroupAge"' text="isisfish.populationGroup.age"/>
+ <JPanel constraints='"panelAge"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+ <!--
+ | Pour les especes en age
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupAge"' layout="BorderLayout"
+ origin="$PopulationGroup/population/species/ageGroupType">
+-->
+
+ <JTextField constraints='"fieldPopulationGroupAge"' id="fieldPopulationGroupAge">
+<!-- Fixme : DocumentEvents
+origin="$PopulationGroup/age"
+<DocumentEvents onModified="Update($fieldPopulationGroupAge/text)"/>
+-->
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+ <!--
+ | Pour les especes en longueur
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupAgeNotEditable"' layout='{new BorderLayout()}'
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField constraints='"fieldPopulationGroupAge"'/>
+<!--
+origin="$PopulationGroup/age" editable="false"
+-->
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationGroupLength"' text="isisfish.populationGroup.length"/>
+ <JPanel constraints='"panelLength"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+ <!--
+ | Pour les especes en age
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupLength"' layout="BorderLayout"
+ origin="$PopulationGroup/population/species/ageGroupType">
+-->
+ <JTextField constraints='"fieldPopulationGroupLength"' id="fieldPopulationGroupLength"/>
+<!--
+origin="$PopulationGroup/length" editable="false"
+-->
+<!--
+ </hidablePanel>
+-->
+ <!--
+ | Pour les especes en longueur
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupMinLength"' layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField id="fieldPopulationGroupMinLength">
+<!-- Fixeme : DocumentEvents
+ origin="$PopulationGroup/minLength" toolTipText="minimum length"
+ <DocumentEvents onModified="Update($fieldPopulationGroupMinLength/text)"/>
+-->
+
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupMaxLength"' layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField id="fieldPopulationGroupMaxLength">
+<!-- Fixme : DocumentEvents
+ origin="$PopulationGroup/maxLength" toolTipText="maximum length"
+ <DocumentEvents onModified="Update($fieldPopulationGroupMaxLength/text)"/>
+-->
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationGroupComment"' text="isisfish.populationGroup.comments"/>
+ <JScrollPane constraints='"fieldPopulationGroupComment"'>
+ <JTextArea id="fieldPopulationGroupComment">
+<!-- Fixme : DocumentEvents
+origin="$PopulationGroup/comment"
+ <DocumentEvents onModified="Update($fieldPopulationGroupComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationGroupButtonAction" constraints='"panelPopulationGroupButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("PopulationGroup", $PopulationGroup);refreshView($inputPopulationGroup)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("PopulationGroup", $PopulationGroup);refreshView($inputPopulationGroup)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,68 @@
+<JPanel name="isisfish.populationMigration.title" constraints="inputPopulationMigration"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ import org.codelutin.widget.StatusBar;
+ </script>
+
+ <JLabel constraints='"labelPopulationMigrationSeasonChooser"' text="isisfish.populationMigration.selectSeason"/>
+ <JComboBox constraints='"fieldPopulationMigrationSeasonChooser"'
+ id="fieldPopulationMigrationSeasonChooser"/>
+<!--
+ firstNull="true"
+ origin="getPopulationSeasonInfo($Population)"
+ actionCommand="input.Input.selectEntityAndRefresh('PopulationSeasonInfo', $fieldPopulationMigrationSeasonChooser/selectedItem, '(fieldUseEquationMigration|hideablePanel)')"
+-->
+ <JCheckBox constraints='"fieldUseEquationMigration"' id="fieldUseEquationMigration" text="isisfish.populationMigration.useEquation">
+<!-- Fixme : ItemEvents
+origin="$PopulationSeasonInfo/useEquationMigration"
+ <ItemEvents onStateChanged="Update($fieldUseEquationMigration/selected, $PopulationSeasonInfo/useEquationMigration, refreshView($hideablePanel))"/>
+-->
+ </JCheckBox>
+
+ <JPanel id="hideablePanel" constraints='"hideablePanel"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+<!--
+ <hidablePanel constraints="fieldUseEquation" layout="BorderLayout"
+ origin="getUseEquationMigration($PopulationSeasonInfo)">
+ <xpanel xml="input/PopulationMigrationEquation.xml"/>
+ </hidablePanel>
+
+ <hidablePanel constraints='"fieldUseMatrix"' layout="BorderLayout"
+ origin="not(getUseEquationMigration($PopulationSeasonInfo))">
+ <tabbedpane id="PopulationMigrationTabbed" constraints="PopulationMigrationTabbed">
+ <xpanel xml="input/PopulationMigrationMigration.xml"/>
+ <xpanel xml="input/PopulationMigrationImmigration.xml"/>
+ <xpanel xml="input/PopulationMigrationEmigration.xml"/>
+ </tabbedpane>
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationMigrationComment"' text="isisfish.populationMigration.comments"/>
+ <JScrollPane constraints='"fieldPopulationMigrationComment"'>
+ <JTextArea id="fieldPopulationMigrationComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/migrationComment"
+ <DocumentEvents onModified="Update($fieldPopulationMigrationComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationMigrationButtonAction" constraints='"panelPopulationMigrationButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+
+ <JButton constraints='"buttonPopulationMigrationSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand="input.Input.save('PopulationSeasonInfo', $PopulationSeasonInfo);refreshView($inputMigration)"
+-->
+
+ <JButton constraints='"buttonPopulationMigrationCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand="input.Input.cancel('PopulationSeasonInfo', $PopulationSeasonInfo);refreshView($inputMigration)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,46 @@
+<JPanel name="isisfish.populationMigrationEmigration.title" constraints='"inputPopulationMigrationEmigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Emigration" context="current" source="Emigration"/>
+-->
+
+ <JLabel constraints='"labelPopulationMigrationEmigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationEmigrationGroupChooser"'
+ id="fieldPopulationMigrationEmigrationGroupChooser"/>
+<!--
+ firstNull="true"
+ origin="getPopulationGroup($Population)"
+-->
+ <JLabel constraints='"labelPopulationMigrationEmigrationCoefficient"'
+ text="isisfish.populationMigrationEmigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationEmigrationCoefficient"'
+ id="fieldPopulationMigrationEmigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationEmigrationDepartureZoneChooser"'
+ text="isisfish.populationMigrationEmigration.departureZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationEmigrationDepartureZoneChooser"'
+ id="fieldPopulationMigrationEmigrationDepartureZoneChooser"/>
+<!--
+origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationEmigrationAdd"
+ text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+actionCommand="input.InputPopulation.addEmigration($fieldPopulationMigrationEmigrationGroupChooser/selectedItem, $fieldPopulationMigrationEmigrationDepartureZoneChooser/selectedItem, $fieldPopulationMigrationEmigrationCoefficient/text)"
+ <MatrixPanel constraints="PopulationMigrationEmigrationTable" id="PopulationMigrationEmigrationTable"
+ origin="copy($PopulationSeasonInfo/emigrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationEMigrationTable/matrix), $PopulationSeasonInfo/emigrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+ <JButton constraints='"buttonRemove"'
+ id="buttonPopulationMigrationEmigrationRemove" text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputPopulation.removeEmigration($PopulationMigrationEmigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,121 @@
+<JPanel name="isisfish.populationMigrationEquation.title" constraints='"inputPopulationMigrationEquation"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationEquation.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <!--
+ | Migration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationMigration"'
+ text="isisfish.common.migration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationMigration"'
+ id="fieldPopulationMigrationEquationMigration">
+<!-- Fixme : ComboBoxModel
+ origin="$PopulationInfoSaison/migrationEquation"
+ renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationMigrationEquationMigration/selectedItem/content, $fieldScriptPopulationMigrationEquationMigration/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Migration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationMigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+
+<!--
+actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/migrationEquation);refreshView($fieldPopulationMigrationEquationMigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationMigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor($PopulationSeasonInfo/migrationEquation/category,$PopulationSeasonInfo/migrationEquation/name,$PopulationSeasonInfo/migrationEquation/javaInterface,$PopulationSeasonInfo/migrationEquation/content,$fieldScriptPopulationMigrationEquationMigration)'
+-->
+
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationMigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationMigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/migrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setMigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationMigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Emigration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationEmigration"' text="isisfish.common.emigration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationEmigration"'
+ id="fieldPopulationMigrationEquationEmigration">
+<!-- Fixme : ComboBoxModel
+origin="$PopulationInfoSaison/emigrationEquation"
+renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationMigrationEquationEmigration/selectedItem/content, $fieldScriptPopulationMigrationEquationEmigration/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Emigration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationEmigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+
+ actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/emigrationEquation);refreshView($fieldPopulationMigrationEquationEmigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationEmigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor($PopulationSeasonInfo/emigrationEquation/category,$PopulationSeasonInfo/emigrationEquation/name,$PopulationSeasonInfo/emigrationEquation/javaInterface,$PopulationSeasonInfo/emigrationEquation/content,$fieldScriptPopulationMigrationEquationEmigration)'
+-->
+
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationEmigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationEmigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/emigrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEmigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationEmigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Immigration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationImmigration"'
+ text="isisfish.common.immigration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationImmigration"'
+ id="fieldPopulationMigrationEquationImmigration">
+<!--Fixme : ComboBoxModel
+origin="$PopulationInfoSaison/immigrationEquation"
+renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationMigrationEquationImmigration/selectedItem/content, $fieldScriptPopulationMigrationEquationImmigration/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Immigration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationImmigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+
+ actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/immigrationEquation);refreshView($fieldPopulationMigrationEquationImmigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationImmigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($PopulationSeasonInfo/immigrationEquation/category,$PopulationSeasonInfo/immigrationEquation/name,$PopulationSeasonInfo/immigrationEquation/javaInterface,$PopulationSeasonInfo/immigrationEquation/content,$fieldScriptPopulationMigrationEquationImmigration)'
+-->
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationImmigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationImmigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/immigrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setImmigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationImmigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,43 @@
+<JPanel name="isisfish.populationMigrationImmigration.title" constraints='"inputPopulationMigrationImmigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Immigration" context="current" source="Immigration"/>
+-->
+ <JLabel constraints='"labelPopulationMigrationImmigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationImmigrationGroupChooser"'
+ id="fieldPopulationMigrationImmigrationGroupChooser"/>
+<!--
+origin="getPopulationGroup($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationImmigrationCoefficient"' text="isisfish.populationMigrationImmigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationImmigrationCoefficient"' id="fieldPopulationMigrationImmigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationImmigrationArrivalZoneChooser"' text="isisfish.populationMigrationImmigration.arrivalZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationImmigrationArrivalZoneChooser"'
+ id="fieldPopulationMigrationImmigrationArrivalZoneChooser"/>
+<!--
+ origin="getPopulationZone($Population)" firstNull="true"
+-->
+
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationImmigrationAdd"
+ text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+ actionCommand="input.InputPopulation.addImmigration($fieldPopulationMigrationImmigrationGroupChooser/selectedItem, $fieldPopulationMigrationImmigrationArrivalZoneChooser/selectedItem, $fieldPopulationMigrationImmigrationCoefficient/text)"
+<MatrixPanel constraints="PopulationMigrationImmigrationTable" id="PopulationMigrationImmigrationTable"
+ origin="copy($PopulationSeasonInfo/immigrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationImmigrationTable/matrix), $PopulationSeasonInfo/immigrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+
+
+ <JButton constraints='"buttonRemove"' id="buttonPopulationImmigrationMigrationRemove"
+ text="isisfish.common.remove"/>
+<!--
+ actionCommand="input.InputPopulation.removeImmigration($PopulationMigrationImmigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,50 @@
+<JPanel name="isisfish.populationMigrationMigration.title" constraints='"inputPopulationMigrationMigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationMigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Migration" context="current" source="Migration"/>
+-->
+
+ <JLabel constraints='"labelPopulationMigrationMigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationGroupChooser"'
+ id="fieldPopulationMigrationMigrationGroupChooser"/>
+
+<!--
+origin="getPopulationGroup($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationMigrationCoefficient"' text="isisfish.populationMigrationMigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationMigrationCoefficient"'
+ id="fieldPopulationMigrationMigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationMigrationDepartureZoneChooser"' text="isisfish.populationMigrationMigration.departureZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationDepartureZoneChooser"'
+ id="fieldPopulationMigrationMigrationDepartureZoneChooser"/>
+<!--
+ origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationMigrationArrivalZoneChooser"' text="isisfish.populationMigrationMigration.arrivalZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationArrivalZoneChooser"'
+ id="fieldPopulationMigrationMigrationArrivalZoneChooser"/>
+<!--
+origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationMigrationAdd" text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+ actionCommand="input.InputPopulation.addMigration($fieldPopulationMigrationMigrationGroupChooser/selectedItem, $fieldPopulationMigrationMigrationDepartureZoneChooser/selectedItem, $fieldPopulationMigrationMigrationArrivalZoneChooser/selectedItem, $fieldPopulationMigrationMigrationCoefficient/text)"
+
+ <MatrixPanel constraints="PopulationMigrationMigrationTable" id="PopulationMigrationMigrationTable"
+ origin="copy($PopulationSeasonInfo/migrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationMigrationTable/matrix), $PopulationSeasonInfo/migrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+ <JButton constraints='"buttonRemove"' id="buttonPopulationMigrationMigrationRemove"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputPopulation.removeMigration($PopulationMigrationMigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,95 @@
+<JPanel name="isisfish.populationRecruitment.title" constraints='"inputPopulationRecruitment"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationRecruitment.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationReproductionEquation"' text="isisfish.populationRecruitment.reproductionEquation"/>
+ <JComboBox constraints='"fieldPopulationReproductionEquation"'
+ id="fieldPopulationReproductionEquation">
+<!-- Fixme : ComboBoxModel
+ firstNull="true"
+ origin="$Population/reproductionEquation" renderer="name"
+ actionCommand="update($fieldPopulationReproductionEquation/selectedItem/content, $fieldScriptPopulationReproductionEquation/text)
+<ComboBoxModel origin="fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext,'Reproduction')" />
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationReproductionEquationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+actionCommand="input.Input.saveEquationAsModel($Population/reproductionEquation);refreshView($fieldPopulationReproductionEquation)"
+-->
+ <JButton constraints='"buttonPopulationReproductionEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor, DocumentEvents
+actionCommand='input.Input.openEditor($Population/reproductionEquation/category,$Population/reproductionEquation/name,$Population/reproductionEquation/javaInterface,$Population/reproductionEquation/content,$fieldScriptPopulationReproductionEquation)'
+<editor constraints="fieldScriptPopulationReproductionEquation" askIfNotSaved="false" id="fieldScriptPopulationReproductionEquation"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/reproductionEquation/content, '.java')">
+ <DocumentEvents onModified="update">
+ <UpdateOrigin
+ target="setEquationReproductionEquation($Population, $fieldScriptPopulationReproductionEquation/text)"/>
+ </DocumentEvents>
+ </editor>
+
+-->
+
+<!-- on utilise une equation maintenant
+ <label constraints="labelPopulationNaturalDeathBirth" text="Natural Death Birth"/>
+ <textfield constraints="fieldPopulationNaturalDeathBirth" id="fieldPopulationNaturalDeathBirth"
+ origin="$Population/naturalDeathBirth">
+ <DocumentEvents onModified="Update($fieldPopulationNaturalDeathBirth/text)"/>
+ </textfield>
+-->
+<!--
+ <multilabel constraints="labelPopulationMonthGapBetweenReproRecrutement">Month Gap BetweenRepro Recruitment</multilabel>
+-->
+ <JTextField constraints='"fieldPopulationMonthGapBetweenReproRecrutement"' id="fieldPopulationMonthGapBetweenReproRecrutement">
+<!-- Fixme : DocumentEvents
+origin="$Population/monthGapBetweenReproRecrutement
+ <DocumentEvents onModified="Update($fieldPopulationMonthGapBetweenReproRecrutement/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationRecruitmentDistribution"' text="isisfish.populationRecruitment.recruitmentDistribution"/>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints="fieldPopulationRecruitmentDistribution" id="fieldPopulationRecruitmentDistribution"
+ origin="copy($Population/recruitmentDistribution)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldPopulationRecruitmentDistribution/matrix), $Population/recruitmentDistribution)"/>
+ </MatrixPanel>
+-->
+ <JButton constraints='"buttonPopulationRecruitmentDistributionNew"' id="buttonPopulationRecruitmentDistributionNew"
+ text="isisfish.common.newMatrix"/>
+<!--
+ actionCommand="input.InputPopulation.createRecruitmentDistribution($Population)"
+-->
+
+ <JLabel constraints='"labelPopulationRecruitmentComment"' text="isisfish.populationRecruitment.comments"/>
+ <JScrollPane constraints='"fieldPopulationRecruitmentComment"'>
+ <JTextArea id="fieldPopulationRecruitmentComment">
+<!--
+ origin="$Population/recruitmentComment"
+<DocumentEvents onRemoveUpdate="Update($fieldPopulationRecruitmentComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationRecruitmentButtonAction" constraints='"panelPopulationRecruitmentButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationRecruitment)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationRecruitment)'
+-->
+
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,155 @@
+<JPanel name="isisfish.populationSeasons.title" constraints='"inputPopulationSeasons"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationSeasons.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="PopulationSeasonInfo" context="current" source="PopulationSeasonInfo"/>
+-->
+
+ <JLabel constraints='"labelPopulationSeasonInfoChooser"' text="isisfish.populationSeasons.selectSeason"/>
+ <JComboBox constraints='"fieldPopulationSeasonInfoChooser"'
+ id="fieldPopulationSeasonInfoChooser">
+<!-- Fixme : ComboBoxModel
+ firstNull="true" origin="$PopulationSeasonInfo"
+renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('PopulationSeasonInfo', $fieldPopulationSeasonInfoChooser/selectedItem)"
+ <ComboBoxModel origin="getPopulationSeasonInfo($Population)"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelPopulationSeasonInterval"' text="isisfish.common.season"/>
+<!-- Fixme : SeasonIntervalPanel, hidablePanel
+ <SeasonIntervalPanel constraints="fieldPopulationSeasonInterval"
+ id="fieldPopulationSeasonInterval" origin="$PopulationSeasonInfo">
+ <PropertyChangeEvents onChange="Update" propertyName="first">
+ <UpdateOrigin source="$fieldPopulationSeasonInterval/model/first"
+ target="$PopulationSeasonInfo/firstMonth"/>
+ </PropertyChangeEvents>
+ <PropertyChangeEvents onChange="Update" propertyName="last">
+ <UpdateOrigin source="$fieldPopulationSeasonInterval/model/last"
+ target="$PopulationSeasonInfo/lastMonth"/>
+ </PropertyChangeEvents>
+ </SeasonIntervalPanel>
+
+ <hidablePanel id="fieldPopulationSeasonGroupChangeHidable"
+ constraints="fieldPopulationSeasonGroupChange"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/population/species/ageGroupType">
+
+ <checkbox id="fieldPopulationSeasonGroupChange"
+ origin="$PopulationSeasonInfo/groupChange" text="isisfish.populationSeasons.changeGroup">
+ <ItemEvents onStateChanged="Update($fieldPopulationSeasonGroupChange/selected)"/>
+ </checkbox>
+ </hidablePanel>
+
+ <hidablePanel id="labelPopulationSeasonGroupChangeLengthHidable"
+ constraints="labelPopulationSeasonGroupChangeLength"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/PopulationSeasons.xgl)"
+ origin="not(getAgeGroupType($PopulationSeasonInfo/population/species))">
+
+ <label constraints="labelPopulationSeasonGroupChangeLengthLabel"
+ text="isisfish.populationSeasons.changeGroup"/>
+
+ <radioButton id="labelPopulationSeasonGroupChangeLengthNoSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthNoSpacialized"
+ buttonGroup="labelPopulationSeasonGroupChangeLengthSpacializedGroup"
+ origin="getSimpleLengthChangeMatrix($PopulationSeasonInfo)"
+ text="isisfish.populationSeasons.noSpacialized">
+ <ItemEvents onStateChanged="Update($labelPopulationSeasonGroupChangeLengthNoSpacialized/selected, $PopulationSeasonInfo/simpleLengthChangeMatrix, input.InputPopulation.toggleSpacializedMatrixLengthChangeOfGroup($PopulationSeasonInfo))"/>
+ </radioButton>
+
+ <radioButton id="labelPopulationSeasonGroupChangeLengthSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthSpacialized"
+ buttonGroup="labelPopulationSeasonGroupChangeLengthSpacializedGroup"
+ origin="not(getSimpleLengthChangeMatrix($PopulationSeasonInfo))"
+ text="isisfish.populationSeasons.spacialized">
+ </radioButton>
+
+ <button text="isisfish.populationSeasons.computeCoefficient"
+ constraints="labelPopulationSeasonGroupChangeLengthButtonCompute"
+ actionCommand='input.InputPopulation.computeMatrixChangeOfGroup($PopulationSeasonInfo)'/>
+
+ <button id="labelPopulationSeasonGroupChangeLengthButtonShow" text="isisfish.populationSeasons.showSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthButtonShow"
+ origin="$labelPopulationSeasonGroupChangeLengthNoSpacialized/selected"
+ actionCommand='input.InputPopulation.showSpacializedMatrixChangeOfGroup($PopulationSeasonInfo)'/>
+
+ </hidablePanel>
+
+ <hidablePanel id="fieldPopulationSeasonGroupChangeLengthHidable"
+ constraints="fieldPopulationSeasonGroupChangeLength"
+ layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationSeasonInfo/population/species))">
+
+ <MatrixPanel id="fieldPopulationSeasonGroupChangeLength"
+ origin="copy($PopulationSeasonInfo/lengthChangeMatrix)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationSeasonGroupChangeLength/matrix), $PopulationSeasonInfo/lengthChangeMatrix)"/>
+ </MatrixPanel>
+
+ </hidablePanel>
+
+-->
+ <JCheckBox constraints='"fieldPopulationSeasonReproduction"' id="fieldPopulationSeasonReproduction">
+<!--
+ origin="$PopulationSeasonInfo/reproduction" text="isisfish.populationSeasons.Reproduction">
+ <ItemEvents onStateChanged="Update($fieldPopulationSeasonReproduction/selected, $PopulationSeasonInfo/reproduction, refreshViewPattern('.*PopulationSeasonReproductionDistributionHidable'))"/>
+-->
+ </JCheckBox>
+
+<!-- Fixme : hidablePanel
+ <hidablePanel id="labelPopulationSeasonReproductionDistributionHidable"
+ constraints="labelPopulationSeasonReproductionDistribution"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/reproduction">
+ <label text="isisfish.populationSeasons.distributionSpawning"/>
+ </hidablePanel>
+
+ <hidablePanel id="fieldPopulationSeasonReproductionDistributionHidable"
+ constraints="fieldPopulationSeasonReproductionDistribution"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/reproduction">
+ <MatrixPanel id="fieldPopulationSeasonReproductionDistribution"
+ origin="copy($PopulationSeasonInfo/reproductionDistribution)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationSeasonReproductionDistribution/matrix), $PopulationSeasonInfo/reproductionDistribution)"/>
+ </MatrixPanel>
+ </hidablePanel>
+-->
+ <JLabel constraints='"labelPopulationSeasonComment"' text="isisfish.populationSeasons.comments"/>
+ <JScrollPane constraints='"fieldPopulationSeasonComment"'>
+ <JTextArea id="fieldPopulationSeasonComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/seasonsComment"
+<DocumentEvents onModified="Update($fieldPopulationSeasonComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationSeasonInfoButtonAction" constraints='"panelPopulationSeasonInfoButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.InputPopulation.createSeasonInfo($Population)'
+ -->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("PopulationSeasonInfo", $PopulationSeasonInfo);refreshView($inputPopulationSeasonInfo);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("PopulationSeasonInfo", $PopulationSeasonInfo);refreshView($inputPopulationSeasonInfo);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$PopulationSeasonInfo"
+ actionCommand="input.InputPopulation.removeSeasonInfo($Population, $PopulationSeasonInfo)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,85 @@
+<JPanel name="isisfish.populationZones.title" constraints='"inputPopulationZones"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationZones.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationZonesPresence"' text="isisfish.populationZones.selectPopulationAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesPresence"'>
+ <JList id="populationZonesPresence">
+<!-- Fixme : ListModel
+ origin="getPopulationZone($Population)"
+ renderer="name"
+ <ListModel origin="$FisheryRegion/zone"/>
+ <ListSelectionEvents
+ onValueChanged="Update($populationZonesPresence/selectedValues, $Population/populationZone, refreshViewPattern('fieldPopulationZones.*'))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationZonesReproduction"' text="isisfish.populationZones.selectSpawningAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesReproduction"'>
+ <JList id="fieldPopulationZonesReproduction">
+<!-- Fixme : ListModel
+ origin="getReproductionZone($Population)"
+ renderer="name"
+ <ListModel origin="getPopulationZone($Population)"/>
+ <ListSelectionEvents
+ onValueChanged="Update($fieldPopulationZonesReproduction/selectedValues, $Population/reproductionZone, refreshView($fieldPopulationMappingZoneReproZoneRecru))"/>
+
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationZonesRecruitment"' text="isisfish.populationZones.selectRecruitmentAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesRecruitment"'>
+ <JList id="fieldPopulationZonesRecruitment">
+<!-- Fixme : ListModel
+ origin="getRecruitmentZone($Population)"
+ renderer="name"
+<ListModel origin="getPopulationZone($Population)"/>
+ <ListSelectionEvents
+ onValueChanged="Update($fieldPopulationZonesRecruitment/selectedValues, $Population/recruitmentZone, refreshView($fieldPopulationMappingZoneReproZoneRecru))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationMappingZoneReproZoneRecru"' text="isisfish.populationZones.betweenSpawningRecruitmentAreas"/>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldPopulationMappingZoneReproZoneRecru"'
+ id="fieldPopulationMappingZoneReproZoneRecru"
+ origin="copy($Population/mappingZoneReproZoneRecru)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationMappingZoneReproZoneRecru/matrix), $Population/mappingZoneReproZoneRecru)"/>
+ </MatrixPanel>
+-->
+<!--
+ <JScrollPane constraints='"fieldPopulationMappingZoneReproZoneRecru"'>
+ <table id="populationMappingReproRecru">
+ <ReproRecruTableModel origin="$Population/mappingZoneReproZoneRecru"
+ list1="getReproductionZone($Population)"
+ list2="getRecruitmentZone($Population)" />
+ </table>
+ </scrollPane>
+-->
+
+ <JPanel id="panelPopulationZoneButtonAction" constraints='"panelPopulationZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Population", $Population);refreshView($fieldPopulationMappingZoneReproZoneRecru);refreshView($inputPopulationZones)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationZones)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,70 @@
+<JPanel name="isisfish.port.title" constraints='"inputPort"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Port.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- ContextDataSource
+ <ContextDataSource id="Port" context="current" source="Port"/>
+-->
+
+ <JLabel constraints='"labelPortName"' text="isisfish.port.name"/>
+ <JTextField constraints='"fieldPortName"' id="fieldPortName">
+<!-- Fixme : DocumentEvents
+origin="$Port/name"
+ <DocumentEvents onModified="Update($fieldPortName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPortCell1"' text="isisfish.port.cell"/>
+ <JScrollPane constraints='"fieldPortCell"'>
+ <JList id="portCell">
+<!-- Fixme : ListModel
+SelectionMode="0" renderer="name"
+ origin="getCell($Port)"
+ <ListModel origin="$FisheryRegion/cell"/>
+ <ListSelectionEvents onValueChanged="Update($portCell/selectedValue, $Port/cell, refreshView($portMap))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPortComment"' text="isisfish.port.comments"/>
+ <JScrollPane constraints='"fieldPortComment"'>
+ <JTextArea id="fieldPortComment">
+<!-- Fixme : DocumentEvents
+ origin="$Port/comment"
+<DocumentEvents onModified="Update($fieldPortComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPortButtonAction" constraints='"panelPortButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+ actionCommand='input.Input.create("Port")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Port", $Port);refreshView($inputPort)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Port", $Port);refreshView($inputPort)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Port"
+ actionCommand="input.Input.remove($Port)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,95 @@
+<JPanel name="isisfish.selectivity.title" constraints='"inputSelectivity"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Selectivity.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelSelectivityPopulation"' text="isisfish.selectivity.selectPopulation"/>
+ <JComboBox constraints='"fieldSelectivityPopulation"' id="fieldSelectivityPopulation">
+<!-- Fixme : ComboBoxModel
+renderer="name" firstNull="true"
+<ComboBoxModel origin="$FisheryRegion/species/population" iterate="true"/>
+-->
+ </JComboBox>
+
+ <!--
+ | Equation de selectivité
+ +-->
+ <JLabel constraints='"labelSelectivityEquation"' text="isisfish.selectivity.equation"/>
+
+ <JComboBox constraints='"fieldSelectivityEquation"' id="fieldSelectivityEquation">
+<!-- Fixme : ComboBoxModel
+ renderer="name" firstNull="true"
+ actionCommand="update($fieldSelectivityEquation/selectedItem/content, $fieldSelectivityScript/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Selectivity")'/>
+-->
+ </JComboBox>
+
+ <!-- TODO change Java to $Langage/selectedItem when we can change language -->
+ <JButton constraints='"buttonSelectivitySaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveAsModel("Selectivity", "Java", $fieldSelectivityScript/text);refreshView($fieldSelectivityEquation)'
+-->
+
+ <JButton constraints='"buttonSelectivityEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor("Selectivity","new","fr.ifremer.isisfish.equation.SelectivityEquation",$fieldSelectivityScript/text,$fieldSelectivityScript)'
+-->
+
+ <JScrollPane constraints='"fieldSelectivityScript"'>
+<!-- Fixme : editor
+ <editor id="fieldSelectivityScript" askIfNotSaved="false" origin="org.codelutin.util.FileUtil.getTempFile('', '.java')">
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Ajouter
+ +-->
+ <JButton constraints='"buttonAddSelectivity"' id="buttonAddSelectivity" text="isisfish.common.add"/>
+<!--
+ origin="$Gear"
+ actionCommand="input.InputGear.addSelectivity($Gear, $fieldSelectivityPopulation/selectedItem, $fieldSelectivityScript/text)"
+-->
+
+ <JScrollPane constraints='"selectivityTable"'>
+ <JTable id="selectivityTable">
+<!--
+ <tableModel origin="$Gear/populationSelectivity">
+ <column title="Population" property="population"/>
+ <column title="Equation" property="equation" editable="true">
+ <tableColumnEditor><EquationTableEditor/></tableColumnEditor>
+ </column>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JPanel constraints='"panelSelectivityRemoveButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Selectivity.xgl")}'>
+ <JButton constraints='"buttonSelectivityRemove"' id="buttonSelectivityRemove" text="isisfish.common.remove"/>
+<!--
+ origin="$Gear/populationSelectivity"
+ actionCommand="input.InputGear.removeSelectivity($Gear, getPopulationSelectivity($Gear)[$selectivityTable/selectedRow + 1])"
+-->
+ </JPanel>
+
+ <JPanel id="panelSelectivityButtonAction" constraints='"panelSelectivityButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Gear", $Gear);refreshView($inputSelectivity)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Gear", $Gear);refreshView($inputSelectivity)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,123 @@
+<JPanel name="isisfish.setOfVessels.title" constraints='"inputSetOfVesselsCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/SetOfVessels.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="SetOfVessels" context="current" source="SetOfVessels"/>
+-->
+
+ <JLabel constraints='"labelSetOfVesselsName"' text="isisfish.setOfVessels.name"/>
+ <JTextField constraints='"fieldSetOfVesselsName"' id="fieldSetOfVesselsName">
+<!-- Fixmee : DocumentEvents
+ origin="$SetOfVessels/name"
+<DocumentEvents onModified="Update($fieldSetOfVesselsName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsPort"' text="isisfish.common.port"/>
+ <JComboBox constraints='"fieldSetOfVesselsPort"' id="fieldSetOfVesselsPort">
+<!-- Fixme : ComboBoxModel
+ origin="$SetOfVessels/port" renderer="name" firstNull="true"
+ actionCommand="update($fieldSetOfVesselsPort/selectedItem, $SetOfVessels/port)"
+ <ComboBoxModel origin="$FisheryRegion/port"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSetOfVesselsVesselType"' text="isisfish.setOfVessels.vesselType"/>
+ <JComboBox constraints='"fieldSetOfVesselsVesselType"' id="fieldSetOfVesselsVesselType">
+<!-- Fixme : ComboBoxModel
+ origin="$SetOfVessels/vesselType" renderer="name" firstNull="true"
+ actionCommand="update($fieldSetOfVesselsVesselType/selectedItem, $SetOfVessels/vesselType)"
+<ComboBoxModel origin="$FisheryRegion/vesselType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSetOfVesselsNumberOfVessels"' text="isisfish.setOfVessels.numberOfVessels"/>
+ <JTextField constraints='"fieldSetOfVesselsNumberOfVessels"' id="fieldSetOfVesselsNumberOfVessels">
+
+<!--
+ origin="$SetOfVessels/numberOfVessels"
+ <DocumentEvents onModified="Update($fieldSetOfVesselsNumberOfVessels/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsFixedCosts"' text="isisfish.setOfVessels.fixedCosts"/>
+ <JTextField constraints='"fieldSetOfVesselsFixedCosts"' id="fieldSetOfVesselsFixedCosts">
+
+<!--
+ origin="$SetOfVessels/fixedCosts"
+<DocumentEvents onModified="Update($fieldSetOfVesselsFixedCosts/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsTechnicalEfficiency"' text="isisfish.setOfVessels.technicalEfficiency"/>
+ <JComboBox constraints='"fieldSetOfVesselsTechnicalEfficiency"' id="fieldSetOfVesselsTechnicalEfficiency">
+
+<!--
+ origin="$SetOfVessels/technicalEfficiencyEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldSetOfVesselsTechnicalEfficiency/selectedItem/content, $fieldScriptSetOfVesselsTechnicalEfficiency/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "TechnicalEfficiency")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonSetOfVesselsTechnicalEfficiencySaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($SetOfVessels/technicalEfficiencyEquation);refreshView($fieldSetOfVesselsTechnicalEfficiency)'
+-->
+ <JButton constraints='"buttonSetOfVesselsTechnicalEfficiencyEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor
+ actionCommand='input.Input.openEditor($SetOfVessels/technicalEfficiencyEquation/category,$SetOfVessels/technicalEfficiencyEquation/name,$SetOfVessels/technicalEfficiencyEquation/javaInterface,$SetOfVessels/technicalEfficiencyEquation/content,$fieldScriptSetOfVesselsTechnicalEfficiency)'
+ <editor constraints="fieldScriptSetOfVesselsTechnicalEfficiency" askIfNotSaved="false"
+ id="fieldScriptSetOfVesselsTechnicalEfficiency"
+ origin="org.codelutin.util.FileUtil.getTempFile($SetOfVessels/technicalEfficiencyEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationTechnicalEfficiency($SetOfVessels, $fieldScriptSetOfVesselsTechnicalEfficiency/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+
+ <JLabel constraints='"labelSetOfVesselsComment"' text="isisfish.setOfVessels.comments"/>
+ <JScrollPane constraints='"fieldSetOfVesselsComment"'>
+ <JTextArea id="fieldSetOfVesselsComment">
+
+<!-- Fixme : DocumentEvents
+ origin="$SetOfVessels/comment"
+<DocumentEvents onModified="Update($fieldSetOfVesselsComment/text)"/>
+-->
+ </JTextArea>
+<!--
+-->
+ </JScrollPane>
+
+ <JPanel id="panelSetOfVesselsButtonAction" constraints='"panelSetOfVesselsButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("SetOfVessels")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+ actionCommand='input.Input.save("SetOfVessels", $SetOfVessels);refreshView($inputSetOfVessels)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("SetOfVessels", $SetOfVessels);refreshView($inputSetOfVessels)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$SetOfVessels"
+ actionCommand="input.Input.remove($SetOfVessels)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,109 @@
+<JPanel name="isisfish.species.title" constraints='"inputSpecies"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Species.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Species" context="current" source="Species"/>
+-->
+
+ <JLabel constraints='"labelSpeciesName"' text="isisfish.species.name"/>
+ <JTextField constraints='"fieldSpeciesName"' id="fieldSpeciesName">
+<!-- Fixme : DocumentEvents
+ origin="$Species/name"
+<DocumentEvents onModified="Update($fieldSpeciesName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesScientificName"' text="isisfish.species.scientificName"/>
+ <JTextField constraints='"fieldSpeciesScientificName"' id="fieldSpeciesScientificName">
+<!-- Fixme : DocumentEvents
+ origin="$Species/scientificName"
+ <DocumentEvents onModified="Update($fieldSpeciesScientificName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesCodeRubbin"' text="isisfish.species.rubbinCode"/>
+ <JTextField constraints='"fieldSpeciesCodeRubbin"' id="fieldSpeciesCodeRubbin">
+<!-- Fixme : DocumentEvents
+ origin="$Species/codeRubbin"
+ <DocumentEvents onModified="Update($fieldSpeciesCodeRubbin/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesCEE"' text="isisfish.species.cee"/>
+ <JTextField constraints="fieldSpeciesCEE" id="fieldSpeciesCEE">
+<!--
+ origin="$Species/codeCEE"
+ <DocumentEvents onModified="Update($fieldSpeciesCEE/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesDynamic"' text="isisfish.species.structured"/>
+
+ <JPanel constraints='"panelFieldSpeciesDynamic"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Species.xgl")}'>
+ <JRadioButton constraints='"fieldSpeciesDynamicAge"' id="fieldSpeciesDynamicAge"
+ text="isisfish.species.age" buttonGroup="structuredGroup"/>
+<!--
+ origin="$Species/ageGroupType"
+ actionCommand="Update($fieldSpeciesDynamicAge/selected)"
+-->
+<!-- Déjà commenté
+ <ItemEvents onStateChanged="Update($fieldSpeciesDynamicAge/selected)"/>
+ </radioButton>
+-->
+ <JRadioButton constraints='"fieldSpeciesDynamicLength"' id="fieldSpeciesDynamicLength"
+ text="isisfish.species.length" buttonGroup="structuredGroup"/>
+<!--
+ origin="not(getAgeGroupType($Species))"
+ actionCommand="Update($fieldSpeciesDynamicAge/selected, $Species/ageGroupType)"
+-->
+ <!-- Déjà commenté
+ <ItemEvents onStateChanged="Update($fieldSpeciesDynamicAge/selected, $Species/ageGroupType)"/>
+ </radioButton>
+ -->
+ </JPanel>
+
+ <JLabel constraints='"labelSpeciesComment"' text="isisfish.species.comments"/>
+ <JScrollPane constraints='"fieldSpeciesComment"'>
+ <JTextArea id="fieldSpeciesComment">
+<!-- Fixme : DocumentEvents
+ origin="$Species/comment"
+<DocumentEvents onModified="Update($fieldSpeciesComment/text)"/>
+<DocumentEvents onModified="Update($fieldSpeciesComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelSpeciesButtonAction" constraints='"panelSpeciesButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Species")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Species", $Species);refreshView($inputSpecies)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Species", $Species);refreshView($inputSpecies)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Species"
+ actionCommand="input.Input.remove($Species)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,113 @@
+<JPanel name="isisfish.strategy.title" constraints='"inputStrategyCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Strategy.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Strategy" context="current" source="Strategy"/>
+-->
+
+ <JLabel constraints='"labelStrategyName"' text="isisfish.strategy.name"/>
+ <JTextField constraints='"fieldStrategyName"' id="fieldStrategyName">
+<!-- Fixme : DocumentEvents
+ origin="$Strategy/name"
+<DocumentEvents onModified="Update($fieldStrategyName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelStrategySetOfVessels"' text="isisfish.common.setOfVessels"/>
+ <JComboBox constraints='"fieldStrategySetOfVessels"' id="fieldStrategySetOfVessels">
+<!-- Fixme : ComboBoxModel
+origin="$Strategy/setOfVessels" renderer="name" firstNull="true"
+ actionCommand="update($fieldStrategySetOfVessels/selectedItem, $Strategy/setOfVessels)"
+<ComboBoxModel origin="$FisheryRegion/setOfVessels"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyProportionSetOfVessels"' text="isisfish.strategy.proportionSetOfVessels"/>
+ <JTextField constraints='"fieldStrategyProportionSetOfVessels"' id="fieldStrategyProportionSetOfVessels">
+<!-- Fixme : DocumentEvents
+origin="$Strategy/proportionSetOfVessels"
+<DocumentEvents onModified="Update($fieldStrategyProportionSetOfVessels/text)"/>
+-->
+ </JTextField>
+
+ <JCheckBox constraints='"fieldUseEquationInactivity"' id="fieldUseEquationInactivity">
+<!-- Fixme : ItemEvents
+ origin="$Strategy/inactivityEquationUsed" text="isisfish.strategy.inactivityEquationUsed"
+<ItemEvents onStateChanged="Update($fieldUseEquationInactivity/selected, $Strategy/inactivityEquationUsed, refreshView($hideablePanelInactivityEquation))"/>
+-->
+ </JCheckBox>
+
+
+ <JPanel id="hideablePanelInactivityEquation" constraints='"hideablePanelInactivityEquation"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Strategy.xgl")}'>
+<!-- Fixme : HidablePanel
+ <hidablePanel constraints='"fieldUseEquation"'
+ origin="getInactivityEquationUsed($Strategy)"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/Strategy.xgl)">
+ <JLabel constraints='"labelStrategyInactivity"' text="isisfish.strategy.inactivity"/>
+ <JComboBox constraints='"fieldStrategyInactivity"' id="fieldStrategyInactivity"
+ origin="$Strategy/inactivityEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldStrategyInactivity/selectedItem/content, $fieldScriptStrategyInactivity/text)">
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Inactivity")'/>
+ </JComboBox>
+
+ <JButton constraints='"buttonStrategyInactivitySaveAsModel"' text="isisfish.common.saveModel"
+ actionCommand='input.Input.saveEquationAsModel($Strategy/inactivityEquation);refreshView($fieldStrategyInactivity)'/>
+
+ <JButton constraints='"buttonStrategyInactivityEquationEditor"' text="isisfish.common.openEditor"
+ actionCommand='input.Input.openEditor($Strategy/inactivityEquation/category,$Strategy/inactivityEquation/name,$Strategy/inactivityEquation/javaInterface,$Strategy/inactivityEquation/content,$fieldScriptStrategyInactivity)'/>
+
+ <editor constraints='"fieldScriptStrategyInactivity"' askIfNotSaved="false"
+ id="fieldScriptStrategyInactivity"
+ origin="org.codelutin.util.FileUtil.getTempFile($Strategy/inactivityEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationInactivity($Strategy, $fieldScriptStrategyInactivity/text)"/>
+ </DocumentEvents>
+ </editor>
+
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelStrategyComment"' text="isisfish.strategy.comments"/>
+ <JScrollPane constraints='"fieldStrategyComment"'>
+ <JTextArea id="fieldStrategyComment">
+<!-- Fixme : DocumentEvents
+ origin="$Strategy/comment"
+<DocumentEvents onModified="Update($fieldStrategyComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelStrategyButtonAction" constraints='"panelStrategyButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Strategy")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Strategy", $Strategy);refreshView($inputStrategy)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Strategy", $Strategy);refreshView($inputStrategy)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Strategy"
+ actionCommand="input.Input.remove($Strategy)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,681 @@
+<JPanel name="isisfish.strategyMonthInfo.title"
+ constraints='"inputStrategyMonthInfo"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <!--
+ |
+ | StrategyMonthInfo January
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo1"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixeme : ContextDataSource
+<ContextDataSource id="StrategyMonthInfo1" context="current"
+ source="Strategy" path="strategyMonthInfo[1]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo1/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType1">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo1/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType1/selectedItem, $StrategyMonthInfo1/tripType)"
+ <JComboBoxModel/>
+-->
+
+<!--
+ origin="$Strategy/setOfVessels/vesselType/tripType"
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo1/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays1">
+<!-- DocumentEvents
+ origin="$StrategyMonthInfo1/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays1/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : Matrix
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion1"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo1/proportionMetier)">
+
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion1/matrix), $StrategyMonthInfo1/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo Febuary
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo2"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo2" context="current"
+ source="Strategy" path="strategyMonthInfo[2]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo2/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType2">
+<!--Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo2/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType2/selectedItem, $StrategyMonthInfo2/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo2/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays2">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo2/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays2/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion2"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo2/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion2/matrix), $StrategyMonthInfo2/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo March
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo3"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+<!--
+ <ContextDataSource id="StrategyMonthInfo3" context="current"
+ source="Strategy" path="strategyMonthInfo[3]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo3/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType3">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo3/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType3/selectedItem, $StrategyMonthInfo3/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo3/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays3">
+<!--
+ origin="$StrategyMonthInfo3/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays3/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion3"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo3/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion3/matrix), $StrategyMonthInfo3/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo April
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo4"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo4" context="current"
+ source="Strategy" path="strategyMonthInfo[4]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo4/month"
+ -->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType4">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo4/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType4/selectedItem, $StrategyMonthInfo4/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo4/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays4">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo4/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays4/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion4"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo4/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion4/matrix), $StrategyMonthInfo4/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo May
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo5"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo5" context="current"
+ source="Strategy" path="strategyMonthInfo[5]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo5/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType5">
+<!-- Fixme : <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+ origin="$StrategyMonthInfo5/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType5/selectedItem, $StrategyMonthInfo5/tripType)"
+-->
+<!--
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo5/numberOfTrips"
+-->
+
+ <JLabel constraints=' "labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays5">
+<!--
+ origin="$StrategyMonthInfo5/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays5/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion5"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo5/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion5/matrix), $StrategyMonthInfo5/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo June
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo6"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!--
+ <ContextDataSource id="StrategyMonthInfo6" context="current"
+ source="Strategy" path="strategyMonthInfo[6]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo6/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType6">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo6/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType6/selectedItem, $StrategyMonthInfo6/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo6/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays6">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo6/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays6/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion6"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo6/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion6/matrix), $StrategyMonthInfo6/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo July
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo7"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo7" context="current"
+ source="Strategy" path="strategyMonthInfo[7]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo7/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType7">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo7/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType7/selectedItem, $StrategyMonthInfo7/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo7/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays7">
+<!-- Fixme : DocumentEvents
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays7/text)"/>
+ origin="$StrategyMonthInfo7/minInactivityDays"
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion7"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo7/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion7/matrix), $StrategyMonthInfo7/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo August
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo8"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!--
+ <ContextDataSource id="StrategyMonthInfo8" context="current"
+ source="Strategy" path="strategyMonthInfo[8]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo8/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType8">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo8/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType8/selectedItem, $StrategyMonthInfo8/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo8/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays8">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo8/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays8/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion8"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo8/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion8/matrix), $StrategyMonthInfo8/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo September
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo9"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo9" context="current"
+ source="Strategy" path="strategyMonthInfo[9]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo9/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType9">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo9/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType9/selectedItem, $StrategyMonthInfo9/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo9/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays9">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo9/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays9/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion9"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo9/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion9/matrix), $StrategyMonthInfo9/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo October
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo10"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo10" context="current"
+ source="Strategy" path="strategyMonthInfo[10]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo10/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType10">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo10/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType10/selectedItem, $StrategyMonthInfo10/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo10/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays10">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo10/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays10/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion10"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo10/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion10/matrix), $StrategyMonthInfo10/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo November
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo11"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo11" context="current"
+ source="Strategy" path="strategyMonthInfo[11]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo11/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType" '
+ id="fieldStrategyMonthInfoTripType11">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo11/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType11/selectedItem, $StrategyMonthInfo11/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo11/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays11">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo11/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays11/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion11"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo11/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion11/matrix), $StrategyMonthInfo11/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo December
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo12"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo12" context="current"
+ source="Strategy" path="strategyMonthInfo[12]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo12/month"
+ -->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType12">
+<!--
+ origin="$StrategyMonthInfo12/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType12/selectedItem, $StrategyMonthInfo12/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo12/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays12">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo12/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays12/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion12"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo12/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion12/matrix), $StrategyMonthInfo12/proportionMetier)"/>
+ </MatrixPanel>
+
+-->
+ </JPanel>
+
+ <!--
+ |
+ | Button action
+ |
+ +-->
+
+ <JPanel constraints='"panelStrategyMonthInfoButtonAction"'
+ id="panelStrategyMonthInfoButtonAction"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Strategy", $Strategy);refreshView($inputStrategyMonthInfo)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Strategy", $Strategy);refreshView($inputStrategyMonthInfo)'
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,79 @@
+<JPanel name="isisfish.tripType.title" constraints='"inputTripType"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/TripType.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="TripType" context="current" source="TripType"/>
+-->
+ <JLabel constraints='"labelTripTypeName"' text="isisfish.tripType.name"/>
+ <JTextField constraints='"fieldTripTypeName"' id="fieldTripTypeName">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/name"
+<DocumentEvents onModified="Update($fieldTripTypeName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeDuration"' text="isisfish.tripType.duration"/>
+
+<!--
+ tooltips="In hours"
+-->
+ <JTextField constraints='"fieldTripTypeDuration"' id="fieldTripTypeDuration">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/tripDuration/hour"
+ tooltips="In hours"
+<DocumentEvents onModified="Update($fieldTripTypeDuration/text * 3600, $TripType/tripDuration)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeMinTimeBetweenTrip"' text="isisfish.tripType.minTime"/>
+ <JTextField constraints='"fieldTripTypeMinTimeBetweenTrip"' id="fieldTripTypeMinTimeBetweenTrip">
+<!-- Fixme : DocumentEvents
+
+ origin="$TripType/minTimeBetweenTrip/hour"
+<DocumentEvents onModified="Update($fieldTripTypeMinTimeBetweenTrip/text * 3600, $TripType/minTimeBetweenTrip)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeComment"' text="isisfish.tripType.comments"/>
+ <JScrollPane constraints='"fieldTripTypeComment"'>
+ <JTextArea id="fieldTripTypeComment">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/comment"
+ <DocumentEvents onModified="Update($fieldTripTypeComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelTripTypeButtonAction" constraints='"panelTripTypeButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("TripType")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("TripType", $TripType);refreshView($inputTripType)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("TripType", $TripType);refreshView($inputTripType)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$TripType"
+ actionCommand="input.Input.remove($TripType)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,117 @@
+<JPanel name="isisfish.vesselType.title" constraints='"inputVesselType"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/VesselType.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="VesselType" context="current" source="VesselType"/>
+-->
+ <JLabel constraints='"labelVesselTypeName"' text="isisfish.vesselType.name"/>
+ <JTextField constraints='"fieldVesselTypeName"' id="fieldVesselTypeName">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/name"
+<DocumentEvents onModified="Update($fieldVesselTypeName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeLength"' text="isisfish.vesselType.length"/>
+ <JTextField constraints='"fieldVesselTypeLength"' id="fieldVesselTypeLength">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/length"
+<DocumentEvents onModified="Update($fieldVesselTypeLength/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeSpeed"' text="isisfish.vesselType.speed"/>
+ <JTextField constraints='"fieldVesselTypeSpeed"' id="fieldVesselTypeSpeed">
+<!-- Fixme : DocumentEvents
+ origin="$VesselType/speed"
+<DocumentEvents onModified="Update($fieldVesselTypeSpeed/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeMaxTripDuration"' text="isisfish.vesselType.maxDuration"/>
+ <JTextField constraints='"fieldVesselTypeMaxTripDuration"' id="fieldVesselTypeMaxTripDuration">
+<!-- Fixeme : DocumentEvents
+origin="$VesselType/maxTripDuration/hour" tooltips="in hour"
+<DocumentEvents onModified="Update(3600 * $fieldVesselTypeMaxTripDuration/text, $VesselType/maxTripDuration)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeActivityRange"' text="isisfish.vesselType.activityRange"/>
+ <JTextField constraints='"fieldVesselTypeActivityRange"' id="fieldVesselTypeActivityRange">
+ <!-- Fixme : DocumentEvents
+origin="$VesselType/activityRange"
+<DocumentEvents onModified="Update($fieldVesselTypeActivityRange/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeMinCrewSize"' text="isisfish.vesselType.miniCrew"/>
+ <JTextField constraints='"fieldVesselTypeMinCrewSize"' id="fieldVesselTypeMinCrewSize">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/minCrewSize"
+<DocumentEvents onModified="Update($fieldVesselTypeMinCrewSize/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeUnitFuelCostOfTravel"' text="isisfish.vesselType.fuelCost"/>
+ <JTextField constraints='"fieldVesselTypeUnitFuelCostOfTravel"' id="fieldVesselTypeUnitFuelCostOfTravel">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/unitFuelCostOfTravel"
+<DocumentEvents onModified="Update($fieldVesselTypeUnitFuelCostOfTravel/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeTripType"' text="isisfish.common.tripType"/>
+ <JScrollPane constraints='"fieldVesselTypeTripType"'>
+ <JList id="vesselTypeTripType">
+<!-- Fixme : ListModel
+ origin="getTripType($VesselType)" renderer="name"
+<ListModel origin="$FisheryRegion/tripType"/>
+<MouseEvents onClicked="Update($vesselTypeTripType/selectedValues, $VesselType/tripType)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+
+ <JLabel constraints='"labelVesselTypeComment"' text="isisfish.vesselType.comments"/>
+ <JScrollPane constraints='"fieldVesselTypeComment"'>
+ <JTextArea id="fieldVesselTypeComment">
+<!-- Fixme : DocumentEvents
+ origin="$VesselType/comment
+ <DocumentEvents onModified="Update($fieldVesselTypeComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelVesselTypeButtonAction" constraints='"panelVesselTypeButtonAction"'>
+<!--
+layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/ActionButton.xgl)"
+-->
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+actionCommand='input.Input.create("VesselType")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+actionCommand='input.Input.save("VesselType", $VesselType);refreshView($inputVesselType)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+actionCommand='input.Input.cancel("VesselType", $VesselType);refreshView($inputVesselType)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$VesselType"
+actionCommand="input.Input.remove($VesselType)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,149 @@
+<JFrame id="wizardGroup" visible="true" size='{new Dimension(400,200)}' title="isisfish.wizardGroupCreation.title"
+ layout='{new BorderLayout()}'>
+<!--
+ Resizable="true" Closable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource, cardPanel
+ <ContextDataSource id="Population" context="current" source="Population"/>
+ <ContextDataSource id="wizardModel" context="current" source="wizardModel"/>
+
+ <cardPanel id="wizardPanels" origin="$wizardModel" constraints="CENTER">
+
+ <panel constraints="singleGroupAge" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="beginGroupAgeTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstAge" text="isisfish.wizardGroupCreation.firstAge"/>
+ <textfield constraints="firstAge" id="firstAge"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstAge/text)"/>
+ </textfield>
+ <label constraints="labelLastAge" text="isisfish.wizardGroupCreation.lastAge"/>
+ <textfield constraints="lastAge" id="lastAge"
+ origin="$wizardModel/last">
+ <DocumentEvents onModified="update($lastAge/text)"/>
+ </textfield>
+ <multilabel constraints="beginGroupAgeHelp">
+First age = minimal age
+Last age = maximal age
+
+gap between to group is 1 year.
+ </multilabel>
+ </panel>
+
+ <panel constraints="beginGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="beginGroupLengthTitle" text="isisfish.wizardGroupCreation.selectGroupLengthType"
+ horizontalAlignment="CENTER"/>
+ <radioButton constraints="beginGroupLengthTypeInput"
+ id="beginGroupLengthTypeInput" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.allValues" origin="$wizardModel/inputType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeInput/selected)"/>
+ </radioButton>
+
+ <radioButton constraints="beginGroupLengthTypeSameSize"
+ id="beginGroupLengthTypeSameSize" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.allGroupsSameSize" origin="$wizardModel/sameSizeType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeSameSize/selected)"/>
+ </radioButton>
+
+ <radioButton constraints="beginGroupLengthTypeGrowthCurve"
+ id="beginGroupLengthTypeGrowthCurve" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.computedGrowthCurve" origin="$wizardModel/growthCurveType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeGrowthCurve/selected)"/>
+ </radioButton>
+ </panel>
+
+ <panel constraints="endInputGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="inputGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstInputLength" text="isisfish.wizardGroupCreation.firstLength"/>
+ <textfield constraints="firstInputLength" id="firstInputLength"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstInputLength/text)"/>
+ </textfield>
+ <label constraints="labelMaximalGroupsLenght" text="isisfish.wizardGroupCreation.maxGroupsLength"/>
+ <textfield constraints="maximalGroupsLenght" id="maximalGroupsLenght"
+ origin="$wizardModel/maxLength">
+ <DocumentEvents onModified="update($maximalGroupsLenght/text)"/>
+ </textfield>
+ <multilabel constraints="inputGroupAgeHelp" text="A semicolon ';' must separe maximal length of each group"/>
+ </panel>
+
+ <panel constraints="endSameSizeGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="sameSizeGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstSizeLength" text="isisfish.wizardGroupCreation.firstLength"/>
+ <textfield constraints="firstSizeLength" id="firstSizeLength"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstSizeLength/text)"/>
+ </textfield>
+ <label constraints="labelSameSizeNumberOfGroup" text="isisfish.wizardGroupCreation.numberGroup"/>
+ <textfield constraints="sameSizeNumberOfGroup" id="sameSizeNumberOfGroup"
+ origin="$wizardModel/numberOfGroup">
+ <DocumentEvents onModified="update($sameSizeNumberOfGroup/text)"/>
+ </textfield>
+ <label constraints="labelWidth" text="isisfish.wizardGroupCreation.groupWidth"/>
+ <textfield constraints="width" id="width"
+ origin="$wizardModel/groupSize">
+ <DocumentEvents onModified="update($width/text)"/>
+ </textfield>
+ <multilabel constraints="sameSizeGroupLengthHelp">
+First length = minimal length of first group
+number of Group = number of group wanted
+Group width = width of group
+ </multilabel>
+ </panel>
+
+ <panel constraints="endGrowthCurveGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="growthCurveGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelGrowthCurveFirstGroup" text="isisfish.wizardGroupCreation.firstGroup"/>
+ <textfield constraints="growthCurveFirstGroup" id="growthCurveFirstGroup"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($growthCurveFirstGroup/text)"/>
+ </textfield>
+ <label constraints="labelNumberOfGroup" text="isisfish.wizardGroupCreation.numberGroups"/>
+ <textfield constraints="numberOfGroup" id="numberOfGroup"
+ origin="$wizardModel/numberOfGroup">
+ <DocumentEvents onModified="update($numberOfGroup/text)"/>
+ </textfield>
+ <label constraints="labelStep" text="isisfish.wizardGroupCreation.timeStep"/>
+ <textfield constraints="step" id="step"
+ origin="$wizardModel/step">
+ <DocumentEvents onModified="update($step/text)"/>
+ </textfield>
+ <multilabel constraints="growthCurveGroupLengthHelp" text="The equation used is the population's growth curve, it needs to be defined first."/>
+ </panel>
+ </cardPanel>
+-->
+ <JPanel id="navButton" constraints='"SOUTH"'>
+ <JButton text="isisfish.common.prev"/>
+<!--
+ origin="not(isBegin($wizardPanels))"
+ actionCommand="prev
+-->
+
+ <JButton text="isisfish.common.next"/>
+<!--
+ origin="not(isEnd($wizardPanels))"
+ actionCommand="next"
+-->
+
+ <JButton text="isisfish.common.finish"/>
+<!--
+ origin="$wizardPanels/end"
+ actionCommand="input.InputPopulation.wizardGroupFinish($wizardPanels/model)"
+-->
+
+ <JButton text="isisfish.common.cancel"/>
+<!--
+ actionCommand="cancel"
+ -->
+ </JPanel>
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,69 @@
+<JPanel name="isisfish.zone.title" constraints='"inputZone"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Zone.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Zone" context="current" source="Zone"/>
+-->
+
+ <JLabel constraints='"labelZoneName"' text="isisfish.zone.name"/>
+ <JTextField constraints='"fieldZoneName"' id="fieldZoneName">
+<!-- Fixme : DocumentEvents
+ origin="$Zone/name"
+ <DocumentEvents onModified="Update($fieldZoneName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelZoneCell1"' text="isisfish.zone.cells"/>
+ <JScrollPane constraints='"fieldZoneCells"'>
+ <JList id="zoneCells">
+<!-- Fixme : ListModel
+ origin="getCell($Zone)" iterate="true" renderer="name"
+ <ListModel origin="$FisheryRegion/cell"/>
+ <ListSelectionEvents onValueChanged="Update($zoneCells/selectedValues, $Zone/cell, refreshView($zoneMap))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelZoneComment"' text="isisfish.zone.comments"/>
+ <JScrollPane constraints='"fieldZoneComment"'>
+ <JTextArea id="fieldZoneComment">
+<!-- Fixme : DocumentEvents
+ origin="$Zone/comment"
+ <DocumentEvents onModified="Update($fieldZoneComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelZoneButtonAction" constraints='"panelZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Zone")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Zone", $Zone);refreshView($inputZone)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Zone", $Zone);refreshView($inputZone)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Zone"
+ actionCommand="input.Input.remove($Zone)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,411 @@
+<JFrame id="script" visible="true" size='{new Dimension(620,400)}' title="isisfish.script.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/script/Script.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : WindowsEvents
+<WindowEvents id="events" onOpened="script.Action.opened()" />
+Maximizable="true" Closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="ScriptStorage" context="current" source="ScriptStorage"/>
+ <ContextDataSource id="ActionLog" context="current" source="ActionLog"/>
+ <ContextDataSource id="ScriptType" context="current" source="ScriptType"/>
+ <ContextDataSource id="canCommit" context="current" source="canCommit"/>
+ <ContextDataSource id="canUpdate" context="current" source="canUpdate"/>
+ <ContextDataSource id="canDiff" context="current" source="canDiff"/>
+ <ContextDataSource id="canDelete" context="current" source="canDelete"/>
+-->
+ <!--
+ | Menu
+ +-->
+
+ <JMenuBar id="scriptMenuBar">
+ <JMenu id="scriptTxtFile" text="isisfish.script.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenu id="scriptNewMenu" text="isisfish.script.menu.new">
+<!--
+mnemonic="mnNew"
+-->
+ <!-- TODO Do it dynamiccly and uses Action.ScriptMapping-->
+ <!-- no change name passed in argument, or change for combo in button bar and in Action.newScript too -->
+ <JMenuItem name="miNewScript" text="isisfish.script.menu.txtNewScript"
+ accelerator="accNewScript"/>
+<!--
+ icon="imgNewScript"
+ mnemonic="mnNewScript"
+ ActionCommand="script.Action.newScript($tree, $treeModel, 'Script')"
+-->
+ <JMenuItem name="miNewSimulator" text="isisfish.script.menu.txtNewSimulator" accelerator="accNewSimulator"/>
+<!--
+ icon="imgNewSimulator"
+mnemonic="mnNewSimulator"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Simulator')"
+-->
+ <JMenuItem name="miNewExport" text="isisfish.script.menu.txtNewExport" accelerator="accNewExport"/>
+<!--
+icon="imgNewExport"
+mnemonic="mnNewExport"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Export')"
+-->
+ <JMenuItem name="miNewRule" text="isisfish.script.menu.txtNewRule" accelerator="accNewRule"/>
+<!--
+icon="imgNewRule"
+mnemonic="mnNewRule"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Rule')"
+-->
+ <JMenuItem name="miNewAnalysePlan" text="isisfish.script.menu.txtNewAnalysePlan" accelerator="accNewAnalysePlan"/>
+<!--
+icon="imgNewAnalysePlan"
+mnemonic="mnNewAnalysePlan"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'AnalysePlan')"
+-->
+ <JMenuItem name="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel" accelerator="accNewEquationModel"/>
+<!--
+icon="imgNewEquationModel"
+mnemonic="mnNewEquationModel"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'EquationModel')"
+-->
+ </JMenu>
+ <JMenuItem name="miSave" text="isisfish.script.menu.save"
+ accelerator="accSave"/>
+<!--
+icon="imgSave"
+mnemonic="mnSave"
+ActionCommand="xpath:save($scriptJedit)"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miImport" text="isisfish.script.menu.txtImport"
+ accelerator="accImport"/>
+<!--
+icon="imgImport"
+mnemonic="mnImport"
+ActionCommand="script.Action.importScript($tree,$treeModel,$ScriptStorage)"
+-->
+ <JMenuItem name="miExport" text="isisfish.script.menu.txtExport"
+ accelerator="accExport"/>
+<!--
+origin="$tree/selectionPaths"
+icon="imgExport"
+ mnemonic="mnExport"
+ActionCommand="script.Action.exportScript($tree)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miDelete" text="isisfish.script.menu.deleteLocaly"
+ accelerator="accDelete"/>
+<!--
+icon="imgDelete"
+mnemonic="mnDelete"
+ActionCommand="script.Action.deleteScript($tree,$ScriptStorage, 'false')"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JSeparator/>
+
+ <JMenuItem name="miClose" text="isisfish.script.menu.close" accelerator="accClose"/>
+<!--
+icon="imgClose"
+mnemonic="mnClose"
+ActionCommand="cancel"
+-->
+ </JMenu>
+
+ <JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit">
+<!--
+mnemonic="mnEdit"
+-->
+ <JMenuItem name="miCut" text="isisfish.script.menu.cut"
+ accelerator="accCut"/>
+<!--
+icon="imgCut"
+mnemonic="mnCut"
+ActionCommand="xpath:cut($scriptJedit)"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JMenuItem name="miCopy" text="isisfish.script.menu.copy"
+ accelerator="accCopy"/>
+<!--
+icon="imgCopy"
+origin="util:isValid($ScriptStorage)"
+mnemonic="mnCopy"
+ActionCommand="xpath:copy($scriptJedit)"
+-->
+ <JMenuItem name="miPaste" text="isisfish.script.menu.paste"
+ accelerator="accPaste"/>
+<!--
+icon="imgPaste"
+origin="util:isValid($ScriptStorage)"
+mnemonic="mnPaste"
+ActionCommand="xpath:paste($scriptJedit)"
+-->
+ <JSeparator/>
+<!-- TODO
+ <JMenuItem name="miFind" text="txtFind" icon="imgFind" mnemonic="mnFind"
+ accelerator="accFind"
+ ActionCommand="find"
+ origin="util:isValid($ScriptStorage)"/>
+-->
+ </JMenu>
+
+ <JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS">
+<!--
+mnemonic="mnVCS"
+-->
+ <JMenuItem name="miCommitVCS" text="isisfish.script.menu.commit"
+ accelerator="accCommitVCS"/>
+ <!--origin="util:isValid($ScriptStorage)"/-->
+<!--
+icon="imgCommitVCS"
+mnemonic="mnCommitVCS"
+ActionCommand="script.Action.commitScript($tree,$ScriptStorage, $scriptJedit/text)"
+origin="$canCommit"
+-->
+ <JMenuItem name="miDiffVCS"
+ text="isisfish.script.menu.diff" accelerator="mnDiffVCS"/>
+<!--
+icon="imgDiffVCS"
+mnemonic="mnDiffVCS"
+ActionCommand="thread:script.Action.diffScript($tree,$ScriptStorage, $scriptJedit/text)"
+origin="$canDiff"
+-->
+ <JMenuItem name="miUpdateVCS" text="isisfish.script.menu.update"/>
+<!--
+icon="imgUpdateVCS"
+mnemonic="mnUpdateVCS" accelerator="accUpdateVCS"
+ActionCommand="script.Action.updateScript($tree,$ScriptStorage)"
+origin="$canUpdate"
+-->
+ <JSeparator/>
+ <JMenuItem name="miDeleteVCS" text="isisfish.script.menu.deleteLocalyServer"
+ accelerator="accDeleteVCS"/>
+<!--
+icon="imgDeleteVCS"
+origin="$canDelete"
+mnemonic="mnDeleteVCS"
+ActionCommand="script.Action.deleteScript($tree,$ScriptStorage, 'true')"
+-->
+ </JMenu>
+ <JMenu id="scriptTxtCode" text="isisfish.script.menu.code">
+<!--
+mnemonic="mnCode"
+-->
+ <JMenuItem name="miCheckSyntax" text="isisfish.script.menu.checkSyntax"
+ accelerator="accCheckSyntax"/>
+<!--
+icon="imgCheckSyntax"
+mnemonic="mnCheckSyntax"
+ActionCommand="script.Action.checkScript($ScriptStorage, $scriptJedit/text)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+-->
+ <JMenuItem name="miEvaluate" text="isisfish.script.menu.evaluate"
+ accelerator="accEvaluate"/>
+<!--
+icon="imgEvaluate"
+mnemonic="mnEvaluate"
+ActionCommand="script.Action.evaluateScript($ScriptStorage, $scriptJedit/text)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+-->
+ </JMenu>
+
+ <JMenu text="isisfish.script.menu.txtHelp">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem name="miEditorHelp" text="isisfish.script.menu.txtEditorHelp"
+ accelerator="accEditorHelp"/>
+<!--
+icon="imgEditorHelp"
+mnemonic="mnEditorHelp"
+ActionCommand="editorHelp"
+-->
+ <JMenuItem name="miJavaHelp" text="isisfish.script.menu.txtJavaHelp"
+ accelerator="accJavaHelp"/>
+<!--
+ icon="imgJavaHelp"
+mnemonic="mnJavaHelp"
+ActionCommand="Help.showURL('JAVA_HELP')"
+-->
+ <JSeparator/>
+ <JMenuItem name="miAbout" text="isisfish.script.menu.about"
+ accelerator="accAbout"/>
+<!--
+ icon="imgAbout"
+ActionCommand="about"
+mnemonic="mnAbout"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <!--
+ | Toolbar
+ +-->
+
+ <JPanel id="buttonBar" constraints='"buttonBar"' layout='{new GridLayout()}'>
+ <JComboBox id="ScriptTypeChoice">
+<!--
+origin="ScriptType"
+renderer="org.codelutin.i18n.I18n._(.)"
+-->
+
+ <!-- no change name in combo box, or change for menu and in Action.newScript too -->
+<!-- Fixme : comboboxmodel
+ <comboboxmodel origin="fr.ifremer.isisfish.ui.script.Action.getScriptTypesNames()"/>
+-->
+ </JComboBox>
+ <JButton constraints='"buttonScriptNew"' id="buttonScriptNew" text="isisfish.script.new"/>
+<!--
+ToolTipText="Create a new script"
+actionCommand="script.Action.newScript($tree, $treeModel, $ScriptTypeChoice/selectedItem)"
+-->
+ <JButton constraints='"buttonScriptSave"' id="buttonScriptSave" text="isisfish.script.save"/>
+<!--
+ToolTipText="Save current script"
+origin="util:isValid($ScriptStorage)"
+actionCommand="script.Action.saveScript($ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptExport"' id="buttonScriptExport" text="isisfish.script.txtExport"/>
+<!--
+ToolTipText="Export selected script(s) to zip archive"
+origin="$tree/selectionPaths"
+actionCommand="script.Action.exportScript($tree)"
+-->
+ <JButton constraints='"buttonScriptCommit"' id="buttonScriptCommit" text="isisfish.script.commit"/>
+<!--
+ToolTipText="Commit script to CVS server"
+origin="$canCommit"
+actionCommand="script.Action.commitScript($tree, $ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptUpdate"' id="buttonScriptUpdate" text="isisfish.script.update"/>
+<!--
+ToolTipText="Update current script from server"
+origin="$canUpdate"
+actionCommand="script.Action.updateScript($tree,$ScriptStorage)"
+-->
+ <JButton constraints='"buttonScriptCut"' id="buttonScriptCut" text="isisfish.script.cut"/>
+<!--
+ToolTipText="Cut current selection (Ctrl-x)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:cut($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptCopy"' id="buttonScriptCopy" text="isisfish.script.copy"/>
+<!--
+ToolTipText="Copy current selection (Ctrl-c)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:copy($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptPaste"' id="buttonScriptPaste" text="isisfish.script.paste"/>
+<!--
+ToolTipText="Paste current selection (Ctrl-v)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:paste($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptCheck"' id="buttonScriptCheck" text="isisfish.script.check"/>
+<!--
+ToolTipText="Check syntax of the current script"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+actionCommand="script.Action.checkScript($ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptEval"' id="buttonScriptEval" text="isisfish.script.evaluate"/>
+<!--
+ToolTipText="Try to eval current script (must be have main method)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+actionCommand="script.Action.evaluateScript($ScriptStorage, $scriptJedit/text)"
+-->
+ </JPanel>
+
+ <!--
+ | Content editor
+ +-->
+
+ <JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="VERTICAL">
+
+<!-- Fixme : pas compris : JSplitPane does not accept constraints
+constraints='"contentPanel"'
+-->
+ <!--
+ | Tree script selection
+ +-->
+ <JScrollPane>
+<!-- Fixme : non plus : JScrollPane does not accept constraints
+constraints='"tree"'
+-->
+ <JTree id="tree" name="tree" rootVisible="false">
+<!-- Fixme : NestedTreeModel, TreeRenderer and TreeSelectionEvents
+ <NestedTreeModel id="treeModel">
+ <TreeNode name="Root">
+ <TreeNode name="Script" userObject="'Script'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.ScriptStorage.getScriptNames()"/>
+ </TreeNode>
+ <TreeNode name="Simulator" userObject="'Simulator'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.SimulatorStorage.getSimulatorNames()"/>
+ </TreeNode>
+ <TreeNode name="Export" userObject="'Export'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.ExportStorage.getExportNames()"/>
+ </TreeNode>
+ <TreeNode name="Rule" userObject="'Rule'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames()"/>
+ </TreeNode>
+ <TreeNode name="AnalysePlan" userObject="'AnalysePlan'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getAnalysePlanNames()"/>
+ </TreeNode>
+ <TreeNode name="EquationModel" userObject="'EquationModel'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.FormuleStorage.getCategories()">
+ <TreeNode treeOrigin=".." childsPropertyName="fr.ifremer.isisfish.datastore.FormuleStorage.getFormuleNames(.)"/>
+ </TreeNode>
+ </TreeNode>
+ </TreeNode>
+ </NestedTreeModel>
+
+ <TreeRenderer>
+ <DefaultTreeRenderer type="fr.ifremer.isisfish.datastore.RegionStorage" childsPropertyName="name"/>
+ <DefaultTreeRenderer type="java.lang.String" childsPropertyName="org.codelutin.i18n.I18n._(.)"/>
+ </TreeRenderer>
+
+ <TreeSelectionEvents id="treeSelectionListener"
+ onValueChanged="thread:script.Action.loadScript($tree, $tree/selectionPath/path[2]/userObject, $tree/selectionPath/lastPathComponent)"/>
+-->
+ </JTree>
+
+ </JScrollPane>
+ <JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="HORIZONTAL">
+
+ <!--
+ | Editor script
+ +-->
+<!-- Fixme : editor
+ <editor id="scriptJedit" constraints='"fieldScriptEdit"'/>
+
+origin="$ScriptStorage/file"
+-->
+ <!--
+ | Log area
+ +-->
+
+ <JScrollPane>
+ <JTextArea id="actionLogArea"
+ editable="false"/>
+<!-- Fixme : Pas compris non plus (constraints)
+constraints='"actionLogArea"'
+origin="$ActionLog"
+-->
+ </JScrollPane>
+ </JSplitPane>
+ </JSplitPane>
+
+ <!--
+ | Status bar
+ +-->
+
+
+<!--
+<xpanel constraints='"scriptStatusBar"' xml="StatusBar.xml"/>
+-->
+
+
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,238 @@
+<JPanel id="simulAdvancedParams" name="isisfish.advancedParameters.title" constraints='"simulAdvancedParams"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JPanel constraints='"panelAdvancedParamsSimulator"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+
+<!--
+border="EtchedBorder"
+-->
+
+ <!--
+ |
+ | Simulator choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsSimulatorSelect"' text="isisfish.advancedParams.simulatorUse"/>
+
+ <JComboBox constraints='"fieldSimulAdvParamsSimulatorSelect"' id="fieldSimulAdvParamsSimulatorSelect">
+<!--
+ origin="$SimulationParameter/simulatorName"
+ actionCommand="update($fieldSimulAdvParamsSimulatorSelect/selectedItem, $SimulationParameter/simulatorName)"
+ <ComboBoxModel origin="fr.ifremer.isisfish.datastore.SimulatorStorage.getSimulatorNames()"/>
+-->
+ </JComboBox>
+
+ <!--
+ |
+ | Local/Remote choice
+ |
+ +-->
+
+ <JCheckBox text="isisfish.advancedParams.localSimulation"
+ constraints='"fieldSimulAdvParamsSimulatorLocal"'
+ id="fieldSimulAdvParamsSimulatorLocal"/>
+<!--
+ origin="$SimulationParameter/local"/
+ actionCommand="Update($fieldSimulAdvParamsSimulatorLocal/selected)"/>
+-->
+ <JCheckBox text="isisfish.advancedParams.subProcessSimulation"
+ constraints='"fieldSimulAdvParamsSimulatorSubProcess"'
+ id="fieldSimulAdvParamsSimulatorSubProcess"/>
+
+<!--
+ origin="$SimulationParameter/subProcess"
+ actionCommand="Update($fieldSimulAdvParamsSimulatorSubProcess/selected)"/>
+-->
+ <!--
+ |
+ | Trace/Cache option
+ |
+ +-->
+
+ <JCheckBox text="isisfish.advancedParams.simulationStatistique"
+ constraints="fieldSimulationStatistique"
+ id="fieldSimulationStatistique"/>
+<!--
+ origin="$SimulationParameter/useStatistic"
+ actionCommand="Update($fieldSimulationStatistique/selected)"/>
+-->
+ <JCheckBox text="isisfish.advancedParams.simulationCache"
+ constraints="fieldSimulationCache"
+ id="fieldSimulationCache"/>
+<!--
+ origin="$SimulationParameter/useOptimization"
+ actionCommand="Update($fieldSimulationCache/selected)"/>
+-->
+ </JPanel>
+
+ <JPanel constraints='"panelAdvancedParamsLogger"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+<!--
+border="EtchedBorder"
+-->
+
+ <!--
+ |
+ | simulator Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsSimulLogger"' text="isisfish.advancedParams.simulLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsSimulLoggerError"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulErrorLevel'
+actionCommand='Update("error", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsSimulLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsSimulLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulInfoLevel'
+actionCommand='Update("info", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsSimulLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/simulLogLevel)'
+-->
+ <!--
+ |
+ | script Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsScriptLogger"' text="isisfish.advancedParams.scriptLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsScriptLoggerError"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptErrorLevel'
+actionCommand='Update("error", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsScriptLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsScriptLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptInfoLevel'
+actionCommand='Update("info", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsScriptLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/scriptLogLevel)'
+-->
+ <!--
+ |
+ | libraries Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsLibLogger"' text="isisfish.advancedParams.libLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsLibLoggerError"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libErrorLevel'
+actionCommand='Update("error", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsLibLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsLibLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libInfoLevel'
+actionCommand='Update("info", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsLibLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/libLogLevel)'
+-->
+ </JPanel>
+ <!--
+ |
+ | Tags values
+ |
+ +-->
+
+ <JPanel constraints='"panelTagValue"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+<!--
+border="EtchedBorder"
+-->
+ <JLabel constraints='"labelTagValue"' text="isisfish.advancedParams.freeParameters"
+ horizontalAlignment="0"/>
+
+ <JLabel constraints='"labelTag"' text="isisfish.common.tag"/>
+ <JTextField constraints='"fieldTag"' id="fieldTag"/>
+ <JLabel constraints='"labelValue"' text="isisfish.common.value"/>
+ <JTextField constraints='"fieldValue"' id="fieldValue"/>
+
+ <JButton constraints='"buttonTagValueAdd"' text="isisfish.common.add"/>
+<!--
+actionCommand="simulator.SimulatorAction.addTagValue($SimulationParameter, $fieldTag/text, $fieldValue/text);refreshView($tableTagValue)"
+-->
+ <JScrollPane constraints='"tableTagValue"'>
+ <JTable id="tableTagValue">
+
+<!--- Fixme : TableModel
+ <tableModel origin="entrySet($SimulationParameter/tagValue)">
+ <column title="Tag" property="key"/>
+ <column title="Value" property="value"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonTagValueRemove"' text="isisfish.common.remove"/>
+<!--
+actionCommand="simulator.SimulatorAction.removeTagValue($SimulationParameter, getValueAt($tableTagValue, $tableTagValue/selectedRow, 0));refreshView($tableTagValue)"
+-->
+ </JPanel>
+
+ <!--
+ |
+ | Save config
+ |
+ +-->
+
+ <JButton constraints='"buttonAdvancedParamsSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+actionCommand="simulator.SimulatorAction.saveTagValue($SimulationParameter/tagValue);simulator.SimulatorAction.saveSimulatorChoice($fieldSimulAdvParamsSimulatorSelect/selectedItem, $fieldSimulAdvParamsSimulatorLocal/selected)"
+-->
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,41 @@
+<JPanel id="simulExport" name="isisfish.export.title" constraints='"simulExport"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Export.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!--
+ <ContextDataSource id="ExportNames" context="current" source="ExportNames"/>
+-->
+ <JScrollPane constraints='"listSimulExportChoose"'>
+ <JList id="listSimulExportChoose" selectionMode="2">
+<!-- Fixme : ListModel
+origin="$SimulationParameter/exportNames"
+ <ListModel origin="$ExportNames"/>
+ <ListSelectionEvents onValueChanged="Update($listSimulExportChoose/selectedValues, $SimulationParameter/exportNames)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createExportClassDocsModel($ExportNames)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulExportFolder"' text="isisfish.export.directory"/>
+
+ <JTextField constraints='"fieldSimulExportFolder"'
+ id="fieldSimulExportFolder">
+<!-- Fixme : DocumentEvents
+origin="$SimulationParameter/exportDirectory"
+ <DocumentEvents onModified="Update($fieldSimulExportFolder/text)"/>
+-->
+ </JTextField>
+
+ <JButton constraints='"buttonSimulExportFolderChoose"' text="isisfish.common.ellipsis"/>
+<!--
+actionCommand="update(org.codelutin.util.FileUtil.getDirectory(), $SimulationParameter/exportDirectory);refreshView($fieldSimulExportFolder)"
+-->
+
+ <JButton constraints='"buttonSimulExportSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+actionCommand="simulator.SimulatorAction.saveExport($SimulationParameter/exportDirectory, $SimulationParameter/exportNames)"
+-->
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,208 @@
+<JPanel id="simulParams" name="isisfish.params.title" constraints='"simulParams"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Params.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="RuleNames" context="current" source="RuleNames"/>
+-->
+ <JLabel constraints='"labelSimulParamsSelect"' text="isisfish.params.loadOldSimulation"/>
+ <JPanel constraints='"panelSimulParamsSelectFilterActions"'>
+ <JButton text="isisfish.params.filter" id="buttonSimulParamsSelectFilter"/>
+<!--
+actionCommand='xpath:fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil.filterSimulation($SimulationFilterModel);refreshView("fieldSimulParamsSelect");
+-->
+ <JButton text="isisfish.params.clearFilter" id="buttonSimulParamsSelectClearFilter"/>
+<!--
+ actionCommand='xpath:selectAll($SimulationFilterModel);refreshView("fieldSimulParamsSelect")'
+-->
+ </JPanel>
+
+ <JComboBox id="fieldSimulParamsSelect" constraints='"fieldSimulParamsSelect"'>
+<!-- Fixme : ComboBoxModel
+origin="$SimulationFilterModel/filteredResult"
+firstNull="true"
+actionCommand="thread:simulator.SimulatorAction.loadOldSimulation($fieldSimulParamsSelect/selectedItem)"
+ <ComboBoxModel origin="$SimulationFilterModel/filteredResult"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSimulParamsName"' text="isisfish.params.simulationName"/>
+ <JTextField constraints='"fieldSimulParamsName"' id="fieldSimulParamsName">
+<!--
+origin="$OldSimulationName"
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSimulParamsDesc"' text="isisfish.params.description"/>
+ <JScrollPane constraints='"fieldSimulParamsDesc"'>
+ <JTextArea id="fieldSimulParamsDesc">
+<!-- Fixme : DocumentEvents
+origin="$SimulationParameter/description"
+ <DocumentEvents onModified="Update($fieldSimulParamsDesc/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsRegion"' text="isisfish.common.region"/>
+ <JComboBox constraints='"fieldSimulParamsRegion"' id="fieldSimulParamsRegion">
+<!-- Fixme : ComboBoxModel
+ origin="$SimulationParameter/regionName"
+ firstNull="true"
+ actionCommand="thread:simulator.SimulatorAction.loadRegion($SimulationParameter, $fieldSimulParamsRegion/selectedItem)"
+ <ComboBoxModel origin="fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelSimulParamsStrategies"' text="isisfish.common.strategies"/>
+ <JScrollPane constraints='"fieldSimulParamsStrategies"'>
+ <JList id="listSimulParamsStrategies" selectionMode="2">
+<!-- Fixme : ListModel and ListSelectionEvents
+origin="$SimulationParameter/strategies"
+<ListModel origin="$RegionStorage/fisheryRegion/strategy" iterate="true"/>
+ <ListSelectionEvents onValueChanged="Update($listSimulParamsStrategies/selectedValues, $SimulationParameter/strategies)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsPopulations"' text="isisfish.common.populations"/>
+ <JScrollPane constraints='"fieldSimulParamsPopulations"'>
+ <JList id="listSimulParamsPopulations" selectionMode="2">
+<!-- Fixme : ListModel, ListSelectionEvents and MousEvents
+origin="$SimulationParameter/populations"
+<ListModel origin="$RegionStorage/fisheryRegion/species/population" iterate="true"/>
+<ListSelectionEvents onValueChanged="Update($listSimulParamsPopulations/selectedValues, $SimulationParameter/populations)"/>
+<MouseEvents onClicked="xpath:setMatrix($simulParamsNumbers, getNumberOf($SimulationParameter, $listSimulParamsPopulations/selectedValues))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsMesures"' text="isisfish.common.rules"/>
+ <JComboBox constraints='"fieldSimulParamsMesuresSelect"' id="fieldSimulParamsMesuresSelect">
+<!-- Fixme : ComboBoxModel and ComboBoxRender
+origin=""
+<ComboBoxModel origin="$RuleNames"/>
+-->
+ <!--<ComboBoxModel origin="fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames()"/>-->
+<!--
+ <ComboBoxRenderer>
+ <SimpleToolTipComboBoxRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleDescriptionsModel($RuleNames)'/>
+ </ComboBoxRenderer>
+-->
+
+ </JComboBox>
+ <JScrollPane constraints='"fieldSimulParamsMesuresList"'>
+ <JList id="listSimulParamsMesuresList" selectionMode="0">
+<!-- Fixme : ListModel, ListSelectionEvents and ListRenderer
+origin=""
+renderer="fr.ifremer.isisfish.datastore.RuleStorage.getName(/)"
+toolTipTextPropertyName="description"
+ <ListModel origin="$SimulationParameter/rules"/>
+ <ListSelectionEvents onValueChanged="fr.ifremer.isisfish.ui.simulator.SimulatorAction.refreshRule($simulParamsRules)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleDescriptionsModel2($SimulationParameter/rules,$buttonSimulParamsMesuresClear,$listSimulParamsMesuresList)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulParamsMesuresAdd"' id="buttonSimulParamsMesuresAdd"
+ text="isisfish.common.add"/>
+<!--
+ actionCommand="xpath:addRule($SimulationParameter, getNewRuleInstance(fr.ifremer.isisfish.datastore.RuleStorage.getRule($fieldSimulParamsMesuresSelect/selectedItem)));refreshView($listSimulParamsMesuresList)"
+-->
+ <JButton constraints='"buttonSimulParamsMesuresRemove"' id="buttonSimulParamsMesuresRemove"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="xpath:removeRule($SimulationParameter, $listSimulParamsMesuresList/selectedValue);refreshView($listSimulParamsMesuresList)"
+-->
+ <JButton constraints='"buttonSimulParamsMesuresClear"' id="buttonSimulParamsMesuresClear"
+ text="isisfish.common.clear"/>
+<!--
+actionCommand="xpath:clearRules($SimulationParameter);refreshView($listSimulParamsMesuresList)"
+-->
+ <!--TODO Doest not work! when calling use an AbstractCollection with no clear implementation text="Clear" actionCommand="xpath:clear($SimulationParameter/rules);refreshView($listSimulParamsMesuresList)"/>-->
+
+ <JLabel constraints='"labelSimulParamsNbAnnees"' text="isisfish.params.numberYear"/>
+ <JTextField constraints='"fieldSimulParamsNbAnnees"' id="fieldSimulParamsNbAnnees">
+<!--
+origin="$SimulationParameter/numberOfYear"
+<DocumentEvents onModified="Update($fieldSimulParamsNbAnnees/text)"/>
+-->
+ </JTextField>
+
+ <JTabbedPane constraints='"fieldSimulParamsTabs"'>
+<!-- Fixme : matrixPanel
+<matrixPanel id="simulParamsNumbers" name="isisfish.params.populationNumbers">
+</matrixPanel>
+-->
+ <tab title="isisfish.params.ruleParameters">
+ <JTable id="simulParamsRules" name="isisfish.params.ruleParameters">
+<!-- Fixme : tableModel
+<tableModel origin="fr.ifremer.isisfish.datastore.RuleStorage.getParameterNames($listSimulParamsMesuresList/selectedValue)">
+ <column title="Name" property="/" renderer="key">
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleParamsModel($listSimulParamsMesuresList/selectedValue)'/>
+-->
+ <!--<RuleParameterColumnRenderer origin="$listSimulParamsMesuresList/selectedValue"/>-->
+<!--
+ </tableColumnRenderer>
+ </column>
+ <column title="Value" editable="true"
+ property="fr.ifremer.isisfish.datastore.RuleStorage.getParameterValue($listSimulParamsMesuresList/selectedValue, /key)"
+ actionEdit="fr.ifremer.isisfish.datastore.RuleStorage.setParameterValue($listSimulParamsMesuresList/selectedValue, $e/object/key, $e/value)">
+ <tableColumnEditor><ParameterColumnEditor origin="$RegionStorage"/></tableColumnEditor>
+ <tableColumnRenderer><SimpleToolTipTableColumnRenderer origin=''/></tableColumnRenderer>
+ </column>
+ </tableModel>
+
+-->
+ </JTable>
+ </tab>
+ </JTabbedPane>
+
+ <JPanel constraints='"dummyPanel"'/>
+ <JPanel id="fieldSimulParamsOptions"
+ constraints='"fieldSimulParamsOptions"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Params.xgl")}'> <!-- TODO la bordure avec le titre -->
+<!--
+text="Options de simulation"
+-->
+ <JCheckBox text="isisfish.params.usePreSimulationScript"
+ constraints='"fieldUseSimulPreScripts"'
+ id="fieldUseSimulPreScripts"/>
+<!--
+origin="$SimulationParameter/usePreScript"
+actionCommand="update($fieldUseSimulPreScripts/selected);xpath:setEnabledAt($simulTabs, 1, $SimulationParameter/usePreScript);simulator.SimulatorAction.selectTab($simulTabs, $SimulationParameter/usePreScript, '1')"
+-->
+ <JCheckBox text="isisfish.params.useAnalysePlan"
+ constraints='"fieldSimulUseAnalysePlan"'
+ id="fieldSimulUseAnalysePlan"/>
+<!--
+origin="$SimulationParameter/useAnalysePlan"
+actionCommand="update($fieldSimulUseAnalysePlan/selected);xpath:setEnabledAt($simulTabs, 2, $SimulationParameter/useAnalysePlan);simulator.SimulatorAction.selectTab($simulTabs, $SimulationParameter/useAnalysePlan, '2')"
+-->
+ <JCheckBox text="isisfish.params.onlyExportSimulation"
+ constraints='"fieldSimulOnlyExport"'
+ id="fieldSimulOnlyExport"/>
+<!--
+origin="$SimulationParameter/onlyExport"
+actionCommand="update($fieldSimulOnlyExport/selected)"
+-->
+ </JPanel>
+
+ <JButton constraints='"buttonSimulParamsSimulate"' id="buttonSimulParamsSimulate"
+ text="isisfish.common.simulate"/>
+<!--
+actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs)"
+-->
+
+ <JButton constraints='"buttonSimulParamsAddQueue"' id="buttonSimulParamsAddQueue"
+ text="isisfish.common.addQueue"/>
+<!--
+actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'true', $simulTabs)"
+-->
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JPanel id="simulPreScripts" name="isisfish.preScript.title"
+ constraints='"simulPreScripts"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/PreScripts.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JScrollPane constraints='"fieldSimulPreScript"'>
+ <JTextArea id="fieldSimulPreScript">
+<!-- Fixme : DocmumentEvents
+origin="$SimulationParameter/preScript"
+ <DocumentEvents onModified="Update($fieldSimulPreScript/text, $SimulationParameter/preScript)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JButton constraints='"buttonBackToParams"' text="isisfish.preScript.backParameter"/>
+<!--
+actionCommand="simulator.SimulatorAction.selectTab($simulTabs, 'true', '0')"
+-->
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,39 @@
+<JPanel id="simulQueue" name="isisfish.queue.title" constraints='"simulQueue"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Queue.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JScrollPane constraints='"queueTable"'>
+ <JTable id="queueTable">
+<!-- Fixme : TableModel a implemanter
+ <tableModel>
+ <SimulationQueueModel id="queueModel"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+ <JScrollPane constraints='"queueTableDone"'>
+ <JTable id="queueTableDone">
+<!--
+ <tableModel>
+ <SimulationDoneQueueModel id="queueModelDone"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulQueueStart"' id="buttonSimulQueueStart" text="isisfish.queue.simulationLaunch"/>
+<!--
+actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationManager.getInstance(), 'true')"
+-->
+ <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueueStart($buttonSimulQueueStart)"-->
+ <JButton constraints='"buttonSimulQueueRemove"' id="buttonSimulQueueRemove" text="isisfish.queue.stopSimulation"/>
+<!--
+ actionCommand="xpath:setStopSimulationRequest(getSimulationControl($queueModel, $queueTable/selectedRow), 'true')"
+-->
+ <JButton constraints='"buttonSimulQueueShowLog"' id="buttonSimulQueueShowLog" text="isisfish.queue.showLog"/>
+<!--
+actionCommand="fr.ifremer.isisfish.ui.simulator.SimulatorAction.showLog($queueTableDone,$queueModelDone,$queueTableDone/selectedRow)"
+-->
+ <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueue($buttonSimulQueueShowLog,$queueTableDone)"-->
+ <!--TODO ne fonctionne pas non plusorigin="$queueTableDone/selectedRow!=-1"-->
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,44 @@
+<JPanel id="ResultChoice" name="isisfish.resultChoice.title"
+ constraints='"ResultChoice"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/ResultChoice.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="ResultNames" context="current" source="ResultNames"/>
+-->
+ <!--
+ |
+ | Result enabled
+ |
+ +-->
+
+ <JPanel constraints='"panelResultNames"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/ResultChoice.xgl")}'>
+
+ <JLabel constraints='"labelResultNames"' text="isisfish.resultChoice.save"
+ horizontalAlignment="0"/>
+ <JScrollPane constraints='"fieldResultNames"'>
+ <!--list id="listResultNames" SelectionMode="2" renderer="org.codelutin.i18n.I18n._(.)"-->
+ <JList id="listResultNames" selectionMode="2">
+<!-- Fixme : ListModel, ListSelectionEvents and listRender
+ origin="$SimulationParameter/resultEnabled"
+ <ListModel origin="$ResultNames"/>
+ <ListSelectionEvents onValueChanged="Update($listResultNames/selectedValues, $SimulationParameter/resultEnabled)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createResultFieldsModel($ResultNames)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonResultNamesSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+ actionCommand="simulator.SimulatorAction.saveResultNames($listResultNames/selectedValues)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,84 @@
+<JPanel id="simulSens" name="isisfish.sens.title" constraints='"simulSens"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Sens.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="AnalysePlanNames" context="current" source="AnalysePlanNames"/>
+-->
+ <!--JScrollPane constraints='"labelSimulParamsAnalysePlans"'>
+ <JTextArea id="AnalysePlanDescription" editable="false" text="isisfish.sens.planAdd"/>
+ </JScrollPane-->
+ <JComboBox constraints='"fieldSimulParamsAnalysePlansSelect"' id="fieldSimulParamsAnalysePlansSelect">
+<!-- Fixme : ComboBoxModel and ComboBoxRenderer
+origin=""
+ <ComboBoxModel origin="$AnalysePlanNames"/>
+ <ComboBoxRenderer>
+ <SimpleToolTipComboBoxRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanDescriptionsModel($AnalysePlanNames)'/>
+ </ComboBoxRenderer>
+-->
+ </JComboBox>
+ <JScrollPane constraints='"fieldSimulParamsAnalysePlansList"'>
+ <JList id="listSimulParamsAnalysePlansList" selectionMode="0">
+<!-- Fixme : ListModel, ListSelectionEvents and ListRenderer
+origin=""
+renderer="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getName(/)"
+toolTipTextPropertyName="description"
+ <ListModel origin="$SimulationParameter/analysePlans"/>
+ <ListSelectionEvents onValueChanged="refreshView($simulParamsAnalysePlans)"/>
+-->
+ <!--ListSelectionEvents onValueChanged="xpath:setText($AnalysePlanDescription, $listSimulParamsAnalysePlansList/selectedValue/description)"/-->
+<!-- <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanDescriptionsModel2($SimulationParameter/analysePlans,$buttonSimulParamsAnalysePlansClear,$listSimulParamsAnalysePlansList)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulParamsAnalysePlansAdd"' id="buttonSimulParamsAnalysePlansAdd"
+ text="isisfish.common.add"/>
+<!--
+actionCommand="xpath:addAnalysePlan($SimulationParameter, getNewAnalysePlanInstance(fr.ifremer.isisfish.datastore.AnalysePlanStorage.getAnalysePlan($fieldSimulParamsAnalysePlansSelect/selectedItem)));refreshView($listSimulParamsAnalysePlansList)"
+-->
+ <JButton constraints='"buttonSimulParamsAnalysePlansRemove"' id="buttonSimulParamsAnalysePlansRemove"
+ text="isisfish.common.remove"/>
+<!--
+ actionCommand="xpath:removeAnalysePlan($SimulationParameter, $listSimulParamsAnalysePlansList/selectedValue);refreshView($listSimulParamsAnalysePlansList)"
+-->
+ <JButton constraints='"buttonSimulParamsAnalysePlansClear"' id="buttonSimulParamsAnalysePlansClear"
+ text="isisfish.common.clear"/>
+<!--
+actionCommand="xpath:clearPlans($SimulationParameter);refreshView($listSimulParamsAnalysePlansList,$simulParamsAnalysePlans)"
+-->
+ <!--TODO Doest not work! when calling use an AbstractCollection with no clear implementation text="Clear" actionCommand="xpath:clear($SimulationParameter/analysePlans);refreshView($listSimulParamsAnalysePlansList)"/>-->
+
+ <JScrollPane constraints="simulParamsAnalysePlans">
+ <JTable id="simulParamsAnalysePlans" name="isisfish.sens.planParameters">
+<!-- Fixme : JTableModel
+ <tableModel origin="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getParameterNames($listSimulParamsAnalysePlansList/selectedValue)">
+ <column title="Name" property="/" renderer="key">
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanParamsModel($listSimulParamsAnalysePlansList/selectedValue)'/>
+ </tableColumnRenderer>
+ </column>
+ <column title="Value" editable="true"
+ property="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getParameterValue($listSimulParamsAnalysePlansList/selectedValue, /key)"
+ actionEdit="fr.ifremer.isisfish.datastore.AnalysePlanStorage.setParameterValue($listSimulParamsAnalysePlansList/selectedValue, $e/object/key, $e/value)">
+ <tableColumnEditor><ParameterColumnEditor origin="$RegionStorage"/></tableColumnEditor>
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin=''/>
+ </tableColumnRenderer>
+ </column>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonBackToParams"' text="isisfish.sens.backParameter"/>
+<!--
+actionCommand="simulator.SimulatorAction.selectTab($simulTabs, 'true', '0')"
+-->
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,34 @@
+<JFrame id="sensWizard" visible="true" size='{new Dimension(400,400)}' title="isisfish.sensibilityWizard.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizard.xgl")}'>
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JPanel constraints='"sensWizardPanel"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizard.xgl")}'>
+ <!--JPanel constraints='"sensWizardPanelContent"'-->
+<!-- Fixme : WizardPanel
+ <WizardPanel id="wizpnl" constraints="sensWizardPanelContentPanel" xml="simulator/SensWizardPanels.xml" onChange="simulator.SensWizard.newTab($wizardPrev, $wizardNext, $wizardFinish, $wizardTabPane)"/>
+-->
+ <!--/panel-->
+ <JPanel constraints='"sensWizardPanelButtons"'>
+ <JButton id="wizardPrev" text="isisfish.common.previous" enabled="false"/>
+<!--
+actionCommand="prev"
+-->
+ <JButton id="wizardNext" text="isisfish.common.next"/>
+<!--
+actionCommand="next"
+-->
+ <JButton id="wizardFinish" text="isisfish.common.finish" enabled="false"/>
+<!--
+actionCommand="finishSensWizard"
+-->
+ <JButton text="isisfish.common.cancel"/>
+<!--
+actionCommand="cancel"
+-->
+ </JPanel>
+ </JPanel>
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,64 @@
+<JPanel name="isisfish.sensWizardPanels.title" id="sensWizardPanels" visible="true"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JTabbedPane id="wizardTabPane" constraints='"wizardTabPane"'>
+ <tab title="isisfish.sensWizardPanels.type">
+ <JPanel name="isisfish.sensWizardPanels.type" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JLabel constraints='"typeSensWizardLabel"' text="isisfish.sensWizardPanels.selectType"/>
+ <JRadioButton constraints='"buttonSimulSensWizardValuesList"' text="isisfish.sensWizardPanels.values" selected="true" buttonGroup="sensWizardPanelsGroup"/>
+ <JRadioButton constraints='"buttonSimulSensWizardScriptsList"' text="isisfish.sensWizardPanels.scripts" buttonGroup="sensWizardPanelsGroup"/>
+ </JPanel>
+ </tab>
+ <tab title="isisfish.sensWizardPanels.values">
+ <JPanel name="isisfish.sensWizardPanels.values" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JPanel constraints='"valuesSensWizardLabelPanel"'>
+ <JLabel constraints='"valuesSensWizardObjectLabel"' text="isisfish.sensWizardPanels.object"/>
+ <JTextField constraints='"valuesSensWizardObjectField"' editable="false"/>
+<!--
+origin=""
+-->
+ <JLabel constraints='"valuesSensWizardFieldLabel"' text="isisfish.sensWizardPanels.field"/>
+ <JTextField constraints='"valuesSensWizardFieldField"' editable="false"/>
+<!--
+origin=""
+-->
+ <JLabel constraints='"valuesSensWizardTypeLabel"' text="isisfish.sensWizardPanels.type"/>
+ <JTextField constraints='"valuesSensWizardTypeField"' editable="false"/>
+<!--
+origin=""
+-->
+ </JPanel>
+ <JPanel constraints='"valuesSensWizardNewValuePanel"'>
+<!--
+text="New Value"
+-->
+ <JTextArea text="isisfish.common.blabla"/> <!-- TODO Peut dependre du type de l'obet -->
+<!--
+origin=""
+-->
+ </JPanel>
+ <JButton constraints='"buttonValuesSensWizardAdd"' id="buttonValuesSensWizardAdd" text="isisfish.sensWizardPanels.add" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardModify"' id="buttonValuesSensWizardModify" text="isisfish.sensWizardPanels.modify" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardRemove"' id="buttonValuesSensWizardRemove" text="isisfish.sensWizardPanels.remove" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardUp"' id="buttonValuesSensWizardUp" text="isisfish.sensWizardPanels.up" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardDown"' id="buttonValuesSensWizardDown" text="isisfish.sensWizardPanels.down" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardClear"' id="buttonValuesSensWizardClear" text="isisfish.sensWizardPanels.clear" actionCommand=""/>
+ <JScrollPane constraints='"fieldSensWizardList"'>
+ <JList id="listSensWizardList">
+<!-- Fixme : ListModel
+origin="" SelectionMode="1" iterate="false"
+ <ListModel origin=""/>
+-->
+ </JList>
+ </JScrollPane>
+ </JPanel>
+ </tab>
+ <tab title="isisfish.sensWizardPanels.validate">
+ <JPanel name="isisfish.sensWizardPanels.validate" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JLabel constraints='"typeSensWizardLabel"' text="isisfish.sensWizardPanels.finish"/>
+ </JPanel>
+ </tab>
+ </JTabbedPane>
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,57 @@
+<JFrame id="simul" visible="true" size='{new Dimension(700,500)}' location='{new Point(0,139)}' title="isisfish.simulation.title" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Simul.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <!--onOpened="simulator.SimulatorAction.opened($simulTabs)"-->
+<!--
+ <WindowEvents id="events"
+ onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulQueueStart,$buttonSimulQueueRemove,$buttonSimulQueueShowLog,$queueTable,$queueTableDone,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
+ onClosing="UIHelper.closeContext()" />
+
+ <ContextDataSource id="OldSimulationName" context="current" source="OldSimulationName"/>
+ <ContextDataSource id="SimulationFilterModel" context="current" source="SimulationFilterModel"/>
+ <ContextDataSource id="SimulationParameter" context="current" source="SimulationParameter"/>
+ <ContextDataSource id="RegionStorage" context="current" source="RegionStorage"/>
+-->
+ <JMenuBar>
+ <JMenu text="isisfish.simulation.menu.file">
+ <JMenuItem name="miClose" text="isisfish.simulation.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+-->
+ </JMenu>
+<!--
+ <JMenu text="txtSimulation" mnemonic="mnSimulation">
+ <JMenuItem name="miSimulate" text="txtSimulate" icon="imgSimulate"
+ mnemonic="mnSimulate" ActionCommand="simulate" accelerator="accSimulate"/>
+ <JMenuItem name="miQueue" text="txtQueue" icon="imgQueue"
+ mnemonic="mnQueue" ActionCommand="queue" accelerator="accQueue"/>
+ </JMenu>
+-->
+ <JMenu text="isisfish.simulation.menu.help">
+<!--
+ mnemonic="mnHelp"
+-->
+ <JMenuItem name="miAbout" text="isisfish.simulation.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <JTabbedPane id="simulTabs" constraints='"simulTabs"'>
+ <tab title='isisfish.Params.title'><Params2/></tab>
+ <tab title='isisfish.PreScripts.title'><PreScripts2/></tab>
+ <tab title='isisfish.Sens.title'><Sens2/></tab>
+ <tab title='isisfish.Export.title'><Export2/></tab>
+ <tab title='isisfish.ResultChoice.title'><ResultChoice2/></tab>
+ <tab title='isisfish.advancedParameters.title'><AdvancedParams2/></tab>
+ <tab title='isisfish.Queue.title'><Queue2/></tab>
+ </JTabbedPane>
+
+
+<!--
+ <StatutBar2 constraints='"statusBar"'/>
+ <JLabel icon="images/fish.jpg" constraints='"fishIcon"'/>
+-->
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,9 @@
+<JFrame visible="true" size='{new Dimension(400,400)}' title="isisfish.simulationQueue.title"
+ layout='{new BorderLayout()}'>
+
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+<xpanel xml="simulator/Queue.xml"/>
+-->
+
+</JFrame>
1
0
r1312 - in branches/isis-fish-3.2.1: . src/java/fr/ifremer/isisfish src/java/fr/ifremer/isisfish/aspect src/java/fr/ifremer/isisfish/datastore src/java/fr/ifremer/isisfish/datastore/migration src/java/fr/ifremer/isisfish/datastore/update src/java/fr/ifremer/isisfish/entities src/java/fr/ifremer/isisfish/equation src/java/fr/ifremer/isisfish/export src/java/fr/ifremer/isisfish/logging src/java/fr/ifremer/isisfish/map src/java/fr/ifremer/isisfish/simulator src/resources/i18n src/uimodel/fr
by sletellier@users.labs.libre-entreprise.org 28 Aug '08
by sletellier@users.labs.libre-entreprise.org 28 Aug '08
28 Aug '08
Author: sletellier
Date: 2008-08-28 08:21:07 +0000 (Thu, 28 Aug 2008)
New Revision: 1312
Modified:
branches/isis-fish-3.2.1/go.sh
branches/isis-fish-3.2.1/pom.xml
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties
branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml
Log:
Premiere pass vers la migration vers jaxx
Modified: branches/isis-fish-3.2.1/go.sh
===================================================================
--- branches/isis-fish-3.2.1/go.sh 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/go.sh 2008-08-28 08:21:07 UTC (rev 1312)
@@ -59,7 +59,7 @@
fi
aspectwerkz=""
-CL=$rep/target/classes #:$rep/target/isis-fish-3.0.0.jar
+CL=$rep/target/classes:$rep/src/resources #:$rep/target/isis-fish-3.0.0.jar
for f in $rep/target/dependency/*.jar; do
CL=$CL:$f
if [ -n "$(echo $f | grep aspectwerkz-jdk5)" ]; then
@@ -68,5 +68,8 @@
done
LOG="-Dlog4j.configuration=file:$rep/src/resources/log4j.properties" # -Dlog4j.debug"
-$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.IsisFish "$@"
+##$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.IsisFish "$@"
+$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.ui.Welcome2 "$@"
+
+
#$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.ui.update.Counter "$@"
Modified: branches/isis-fish-3.2.1/pom.xml
===================================================================
--- branches/isis-fish-3.2.1/pom.xml 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/pom.xml 2008-08-28 08:21:07 UTC (rev 1312)
@@ -63,6 +63,7 @@
</scm>
<build>
+
<plugins>
<!--<plugin>-->
<!--<groupId>lutinplugin</groupId>-->
@@ -246,7 +247,10 @@
<plugin>
<groupId>org.codelutin.jaxx</groupId>
<artifactId>maven-jaxx-plugin</artifactId>
- <version>0.1</version>
+ <version>0.1</version>
+<!-- <configuration>
+ <src>src/uimodel</src>
+ </configuration> -->
<executions>
<execution>
<phase>generate-sources</phase>
@@ -849,7 +853,7 @@
<scope>compile</scope>
</dependency>
- <!-- ssj pour les calculs stockastiques -->
+ <!-- ssj pour les calculs stockastiques
<dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
@@ -899,7 +903,7 @@
<scope>compile</scope>
</dependency>
- <!-- fin ssj pour les calculs stockastiques -->
+ < ! - - fin ssj pour les calculs stockastiques -->
<!-- debut svnkit pour communication subversion -->
<dependency>
@@ -1017,4 +1021,4 @@
</profile>
</profiles>
-</project>
\ No newline at end of file
+</project>
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -94,7 +94,7 @@
return databaseVersion;
}
- static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2008";
+ static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA Ã 2000-2008";
static final public String CONFIG_FILENAME = "isis-config-" + version.getNumber(0);
/** separateur de liste */
@@ -407,7 +407,7 @@
if (backupSessionDirectory == null) {
// le timestamp est en nano (on le veut en ms)
long time = getStartingTime() / 1000;
- // creation de l'unique répertoire de backup pour la session
+ // creation de l'unique répertoire de backup pour la session
String path = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new java.util.Date(time));
backupSessionDirectory = new File(getBackupDirectory(), path);
if (!backupSessionDirectory.exists()) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -170,7 +170,7 @@
config = new IsisConfig();
- // parsing des options à partir des arguments passés
+ // parsing des options ᅵ partir des arguments passᅵs
config.parse(args);
I18n.init(config.getLocale(), config.getEncoding());
@@ -197,17 +197,17 @@
* l'utilisateur
*/
static public void initVCS() {
- // init vcs
- vcs = VCSFactory.createVCS(config);
-
- // check connection status
- vcs.checkProtocol();
-
- // check release
- vcs.checkRelease();
-
- // check file status
- vcs.checkFileStatus();
+// // init vcs
+// vcs = VCSFactory.createVCS(config);
+//
+// // check connection status
+// vcs.checkProtocol();
+//
+// // check release
+// vcs.checkRelease();
+//
+// // check file status
+// vcs.checkFileStatus();
}
/**
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* Cache.aj
*
- * Created: 25 août 06 22:42:47
+ * Created: 25 aoᅵt 06 22:42:47
*
* @author poussin
* @version $Revision$
@@ -106,8 +106,8 @@
Object result = cache.get(key);
if (result == null) {
result = realCall(jp);
-// addListenerFor(key); // pas necessaire car on a la date et pour une date donnée rien ne peut changer
- if (result != null) { // util pour les methodes retournant void, ne fonctionne pas si on met AND !execute(void *(..)) dans l'aspect. En fait fonction seulement si utilisé avec les traces :(
+// addListenerFor(key); // pas necessaire car on a la date et pour une date donnᅵe rien ne peut changer
+ if (result != null) { // util pour les methodes retournant void, ne fonctionne pas si on met AND !execute(void *(..)) dans l'aspect. En fait fonction seulement si utilisᅵ avec les traces :(
cache.put(key, result);
}
} else {
@@ -136,7 +136,7 @@
/**
* Attention pour avoir une chaine en sortie on prend la reprensentation
- * toString des arguments. Mais en utilisant la methode toString implanté
+ * toString des arguments. Mais en utilisant la methode toString implantᅵ
* dans Object.
* <p>
* Pour les objets de style Number ou String, il faut prendre le vrai
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,7 +1,7 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -21,7 +21,7 @@
/* *
* Trace.aj
*
- * Created: 25 août 06 22:19:21
+ * Created: 25 aoᅵt 06 22:19:21
*
* @author poussin
* @version $Revision$
@@ -51,7 +51,7 @@
* Permet de tracer les appels aux methodes utilisateur ainsi que l'execution
* a ces methodes. La difference entre les deux est lors de l'utilisation du
* cache les appels seront superieur a l'execution car certaine valeur seront
- * reutilisé dans le cache
+ * reutilisᅵ dans le cache
*
* @author poussin
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* AnalysePlan.java
*
- * Created: 17 août 2005 11:11:51 CEST
+ * Created: 17 aoᅵt 2005 11:11:51 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -103,9 +103,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public AnalysePlanStorage getAnalysePlan(String name) {
@@ -139,7 +139,7 @@
*/
public Map<String, Class> getParameterNames() throws IsisFishException {
Map<String, Class> result = null;
- // On essai de recuperer les paramètres depuis la classe compilé
+ // On essai de recuperer les paramᅵtres depuis la classe compilᅵ
// si c possible
try {
if (0 == compile(false, null)) {
@@ -149,7 +149,7 @@
} catch (Exception eee) {
log.info(_("isisfish.error.plan.parameter"), eee);
}
- // si on ne reussi pas avec la classe compilé on essai en parsant le
+ // si on ne reussi pas avec la classe compilᅵ on essai en parsant le
// source
if (result == null) {
try {
@@ -258,7 +258,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -270,11 +270,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteAnalysePlanNames() {
@@ -284,7 +284,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2006 Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2006 Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -73,7 +73,7 @@
*
* @param rootSrc repertoire racine des sources
* @param directory le repertoire ou devrait se trouver la classe. Ce
- * répertoire doit etre un sous répertoire de rootSrc
+ * rᅵpertoire doit etre un sous rᅵpertoire de rootSrc
* @param name le nom de la classe
* @param suffix l'extension des fichiers
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -65,22 +65,22 @@
/** Logger for this class */
private static final Log log = LogFactory.getLog(DataStorage.class);
- /** Le nom du storage (nom du dernier répertoire) */
+ /** Le nom du storage (nom du dernier rᅵpertoire) */
protected String name = null;
- /** Le TopiaContext contenant les données */
+ /** Le TopiaContext contenant les donnᅵes */
protected TopiaContext storage = null;
- /** Le TopiaContext contenant les données en memoire */
+ /** Le TopiaContext contenant les donnᅵes en memoire */
protected TopiaContext memstorage = null;
- /** le répertoire contenant les données sur le disque */
+ /** le rᅵpertoire contenant les donnᅵes sur le disque */
private File storageDirectory = null;
/**
- * Permet de créer un nouveau DataStorage
+ * Permet de crᅵer un nouveau DataStorage
*
* @param directory
* repertoire de base du storage
* @param name
- * nom du storage (nom du dernier répertoire)
+ * nom du storage (nom du dernier rᅵpertoire)
*/
protected DataStorage(File directory, String name) {
super(IsisFish.config.getDatabaseDirectory(), directory);
@@ -99,7 +99,7 @@
}
/**
- * @return le fichier contenant la representation text des données
+ * @return le fichier contenant la representation text des donnᅵes
* de la base
*/
protected File getDataBackupFile() {
@@ -109,7 +109,7 @@
}
/**
- * Sauve toute la base avec le schéma dans ls fichier
+ * Sauve toute la base avec le schᅵma dans ls fichier
* <region>/data-backup.sql
*
* @see fr.ifremer.isisfish.datastore.VersionStorage#prepare()
@@ -157,8 +157,8 @@
}
/**
- * @return Retourne une copie de la base de donnée en memoire seulement
- * Util pour les simulations pour l'acces au données rapide
+ * @return Retourne une copie de la base de donnᅵe en memoire seulement
+ * Util pour les simulations pour l'acces au donnᅵes rapide
*/
public TopiaContext getMemStorage() {
if (memstorage == null || memstorage.isClosed()) {
@@ -178,7 +178,7 @@
}
try {
// il faut absolument faire le prepare, car un script de
- // pre-simulation a pu modifier les données et les données
+ // pre-simulation a pu modifier les donnᅵes et les donnᅵes
// de la region dans le fichier existant ne sont plus forcement
// valide, il faut donc le mettre a jour
prepare();
@@ -258,7 +258,7 @@
*
* @param toName
* le nouveau nom de la region
- * @throws IOException si problème lors de la copie
+ * @throws IOException si problᅵme lors de la copie
* @throws TopiaException ???
*/
public void copy(String toName) throws IOException, TopiaException {
@@ -304,13 +304,13 @@
}
/**
- * Renome juste le repertoire, s'il y a besoin de modifier des données dans
+ * Renome juste le repertoire, s'il y a besoin de modifier des donnᅵes dans
* le TopiaContext il faut surcharger cette methode. Il est surement
* necessaire de surcharger cette methode pour aussi modifier l'entre qu'il
* y a dans le cache.
*
* @param toName le nouveau nom
- * @throws StorageException si problème lors du renommage
+ * @throws StorageException si problᅵme lors du renommage
*/
public void rename(String toName) throws StorageException {
File dir = getDirectory();
@@ -321,10 +321,10 @@
/**
* Cree un zip. Le zip contient les memes fichiers lorsqu'on utilise le CVS.
*
- * @return le fichier contenant les données zippées, ce fichier sera
- * automatiquement supprimé à la sortie de l'application s'il existe
+ * @return le fichier contenant les donnᅵes zippᅵes, ce fichier sera
+ * automatiquement supprimᅵ ᅵ la sortie de l'application s'il existe
* encore.
- * @throws IOException si problème lors de la création du zip
+ * @throws IOException si problᅵme lors de la crᅵation du zip
*/
public File createZip() throws IOException {
File result = File.createTempFile("isis-" + getName(), ".zip");
@@ -339,7 +339,7 @@
* @param file
* le fichier dans lequel l'export doit se faire
* @return l'argument file
- * @throws IOException si problème lors de la création du zip
+ * @throws IOException si problᅵme lors de la crᅵation du zip
*/
public File createZip(File file) throws IOException {
prepare();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* CvsStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoᅵt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grᅵgoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -97,9 +97,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public ExportStorage getExport(String name) {
@@ -113,9 +113,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getExportNames() {
File dir = getExportDirectory();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* FormuleStorage.java
*
- * Created: 4 févr. 2006 16:30:59
+ * Created: 4 fᅵvr. 2006 16:30:59
*
* @author poussin
* @version $Revision$
@@ -147,8 +147,8 @@
}
/**
- * Retourne toutes les categories existantes dans les formules sauvegardées
- * ainsi que dans le TopiaContext passé en parametre
+ * Retourne toutes les categories existantes dans les formules sauvegardᅵes
+ * ainsi que dans le TopiaContext passᅵ en parametre
*
* @param context TODO
* @return TODO
@@ -177,7 +177,7 @@
/**
* Retourne toutes les formules sauvegardees ainsi que dans le TopiaContext
- * passé en parametre
+ * passᅵ en parametre
*
* @param category TODO
* @param context TODO
@@ -204,7 +204,7 @@
}
/**
- * Retourne toutes les categories existantes dans les formules sauvegardées
+ * Retourne toutes les categories existantes dans les formules sauvegardᅵes
*
* @return TODO
*/
@@ -222,9 +222,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @param category TODO
* @return Le storage pour la regle
*/
@@ -244,7 +244,7 @@
}
/**
- * creer une nouvelle formule, si la formule existait deja, elle est ecrasé
+ * creer une nouvelle formule, si la formule existait deja, elle est ecrasᅵ
*
* @param category la category de la formule
* @param name le nom de la formule
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2006 Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2006 Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -56,7 +56,7 @@
*
* @param rootSrc repertoire racine des sources
* @param directory le repertoire ou devrait se trouver la classe. Ce
- * répertoire doit etre un sous répertoire de rootSrc
+ * rᅵpertoire doit etre un sous rᅵpertoire de rootSrc
* @param name le nom de la classe
*/
protected JavaSourceStorage(File rootSrc, File directory, String name) {
@@ -84,13 +84,13 @@
}
/**
- * Compile cette classe dans le répertoire par defaut de compilation ({@link IsisConfig#getCompileDirectory()})
+ * Compile cette classe dans le rᅵpertoire par defaut de compilation ({@link IsisConfig#getCompileDirectory()})
*
* @param force si vrai alors meme si le fichier destination est plus recent
* la compilation aura lieu
* @param out le flux sur lequel le resultat de la compilation doit
* apparaitre. Peut-etre null, dans ce cas les sorties standards sont
- * utilisées.
+ * utilisᅵes.
* @return 0 si la compilation a reussi une autre valeur sinon
*/
public int compile(boolean force, PrintWriter out) {
@@ -98,7 +98,7 @@
}
/**
- * Retourne la classe de la rule compilé. Compile le fichier si besoin
+ * Retourne la classe de la rule compilᅵ. Compile le fichier si besoin
*
* @return TODO
* @throws IsisFishException TODO
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* RegionsStorage.java
*
- * Created: 17 août 2005 03:44:57 CEST
+ * Created: 17 aoᅵt 2005 03:44:57 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -168,13 +168,13 @@
}
/**
- * Retourne le nom courant de la région
+ * Retourne le nom courant de la rᅵgion
*
* @return Le nom de la region
* @throws StorageException if db problem
*/
public FisheryRegion getFisheryRegion() throws StorageException {
- // FIXME voir si la methode est vraiment utilisée car le context n'est jamais fermé, ce qui est dérangeant
+ // FIXME voir si la methode est vraiment utilisᅵe car le context n'est jamais fermᅵ, ce qui est dᅵrangeant
try {
TopiaContext tx = getStorage().beginTransaction();
FisheryRegion result = getFisheryRegion(tx);
@@ -196,7 +196,7 @@
* @param name name of region to retrieve
* @throws VCSException if problem with vcs while checkout
* @throws TopiaException if problem while restoring db
- * @return le sotrage après checkout
+ * @return le sotrage aprᅵs checkout
*/
static public RegionStorage checkout(String name) throws VCSException, TopiaException {
checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + "/" + name);
@@ -218,7 +218,7 @@
*
* @param name le nom de la region a recuperer
* @return Le TopiaContext contenant la region, si la region n'existait null
- * est retourné
+ * est retournᅵ
*/
static public RegionStorage getRegion(String name) {
RegionStorage result = regions.get(name);
@@ -248,13 +248,13 @@
}
/**
- * Permet de creer une nouvelle region. Si le nom est deja utilisé en local
+ * Permet de creer une nouvelle region. Si le nom est deja utilisᅵ en local
* ou sur le serveur alors une exception est leve. Sinon le repertoire pour
* accueillir la region est cree
*
* @param name Le nom de la nouvelle region
* @return La nouvelle region
- * @throws StorageException Si le nom est deja uitlisé
+ * @throws StorageException Si le nom est deja uitlisᅵ
*/
static public RegionStorage create(String name) throws StorageException {
if (exists(name)) {
@@ -290,9 +290,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getRegionNames() {
File dir = getRegionDirectory();
@@ -302,9 +302,9 @@
}
/**
- * Retourne la liste de toutes les régions disponible en local
+ * Retourne la liste de toutes les rᅵgions disponible en local
*
- * @return la liste de toutes les régions disponible en local
+ * @return la liste de toutes les rᅵgions disponible en local
*/
static public List<RegionStorage> getRegions() {
List<RegionStorage> result = new ArrayList<RegionStorage>();
@@ -316,7 +316,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -328,11 +328,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteRegionNames() {
@@ -344,7 +344,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002-2005 Code Lutin, Cédric Pineau,
+ * Copyright (C) 2002-2005 Code Lutin, Cédric Pineau,
Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -77,8 +77,8 @@
import fr.ifremer.isisfish.types.Month;
/**
-* Cette classe permet de conserver des résultats de simulation. Elle permet
-* ensuite de les récupérer.
+* Cette classe permet de conserver des résultats de simulation. Elle permet
+* ensuite de les récupérer.
*/
public class ResultStorage implements SimulationResultListener, SimulationResultGetter{ // ResultStorage
@@ -134,7 +134,7 @@
}
/**
- * Retourne le nom de tous les resultats disponibles le nom est constitué
+ * Retourne le nom de tous les resultats disponibles le nom est constitué
* de la date et du nom du resultat
* @return
*/
@@ -167,7 +167,7 @@
}
/**
- * Verifie si un resultat est disponible pour une date donnée
+ * Verifie si un resultat est disponible pour une date donnée
* @param date
* @param name
* @return
@@ -178,7 +178,7 @@
return result;
}
/**
- * Ajoute un resultat comme etant disponible pour une date donnée
+ * Ajoute un resultat comme etant disponible pour une date donnée
* @param date
* @param name
*/
@@ -189,7 +189,7 @@
/**
* Permet de savoir si lorsque l'on ajoutera ce resultat, il sera
- * sauvé ou non.
+ * sauvé ou non.
*/
public boolean isEnabled(String name){
name = name.trim();
@@ -296,7 +296,7 @@
for(int i=0; i<mat.getNbDim(); i++){
// la semantique n'est pas bonne des qu'il y a un null dedans
if(mat.getSemantics(i).contains(null)){
- throw new SimulationException("Erreur le résultat que vous souhaitez enregistrer n'a pas d'information convenable pour la dimension: " + i + " " + mat.getDimensionName(i) );
+ throw new SimulationException("Erreur le résultat que vous souhaitez enregistrer n'a pas d'information convenable pour la dimension: " + i + " " + mat.getDimensionName(i) );
}
}
@@ -342,9 +342,9 @@
}
/**
- * Retourne la liste de tous les résultats. Si le résultat est categorisé
+ * Retourne la liste de tous les résultats. Si le résultat est categorisé
* par une population alors le nom de la population est automatiquement
- * ajouté au nom du résultat
+ * ajouté au nom du résultat
*/
@SuppressWarnings("unchecked")
public List<String> getResultName(){
@@ -381,7 +381,7 @@
* @param date le pas de temps que l'on souhaite
* @param pop la population pour lequelle on souhaite le resultat
* @param name le nom des resultats dont on veut la matrice
- * @return La matrice demandée ou null si aucune matrice ne correspond a
+ * @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
public MatrixND getMatrix(Date date, Population pop, String name){
@@ -423,7 +423,7 @@
* @param date le pas de temps que l'on souhaite
* @param name le nom des resultats dont on veut la matrice
* @param tx TopiaContext a utiliser pour recuperer les resultats et donc les semantiques
- * @return La matrice demandée ou null si aucune matrice ne correspond a
+ * @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
public MatrixND getMatrix(Date date, String name, TopiaContext tx){
@@ -571,7 +571,7 @@
resultMat = MatrixFactory.getInstance().create(name, sem, dimNames);
- // recuperation du resultat pour chaque date de la simulation, de Date(0) à lastDate
+ // recuperation du resultat pour chaque date de la simulation, de Date(0) Ã lastDate
for(Result result: results){
Date d = result.getResultDate();
mat = result.getMatrix();
@@ -665,8 +665,8 @@
// }
// /**
- // * Retourne pour une date données tous les RegleParam qui ont été activé
- // * a la date demandé.
+ // * Retourne pour une date données tous les RegleParam qui ont été activé
+ // * a la date demandé.
// * @return une list de {@link fr.ifremer.nodb.RegleParam}
// */
// public List getActivatedRule(ResultStorage self, Date date){
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* RuleStorage.java
*
- * Created: 17 août 2005 11:11:51 CEST
+ * Created: 17 aoùt 2005 11:11:51 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -78,7 +78,7 @@
/**
* Contruit un nouveau rule storage
*
- * @param rootSrc La region auquelle est attaché la rule
+ * @param rootSrc La region auquelle est attaché la rule
* @param directory le repertoire ou devrait se trouver la rule
* @param name le nom de la rule
*/
@@ -104,9 +104,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandée
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitée
* @return Le storage pour la regle
*/
static public RuleStorage getRule(String name) {
@@ -140,7 +140,7 @@
*/
public Map<String, Class> getParameterNames() throws IsisFishException {
Map<String, Class> result = null;
- // On essai de recuperer les paramètres depuis la classe compilé
+ // On essai de recuperer les paramÚtres depuis la classe compilé
// si c possible
try {
if (0 == compile(false, null)) {
@@ -150,7 +150,7 @@
} catch (Exception eee) {
log.info(_("isisfish.error.compiled.parameter"), eee);
}
- // si on ne reussi pas avec la classe compilé on essai en parsant le
+ // si on ne reussi pas avec la classe compilé on essai en parsant le
// source
if (result == null) {
try {
@@ -260,7 +260,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur VCS
*
* @return liste de noms de regions
@@ -272,11 +272,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur VCS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * VCS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les régions disponible sur le serveur
+ * VCS. Si le serveur n'est pas disponible la liste retournée est
* vide.
*/
static public List<String> getRemoteRuleNames() {
@@ -286,7 +286,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur VCS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* ScriptStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoùt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grégoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -95,9 +95,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandée
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitée
* @return Le storage pour la regle
*/
static public ScriptStorage getScript(String name) {
@@ -115,9 +115,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les régions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les régions disponible en local
*/
static public List<String> getScriptNames() {
File dir = getScriptDirectory();
@@ -125,7 +125,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -137,11 +137,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les régions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournée est
* vide.
*/
static public List<String> getRemoteScriptNames() {
@@ -151,7 +151,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -95,7 +95,7 @@
* Pour la lecture d'une simulation existante
* @param directory repertoire de base du storage
* @param name le nom de la simulation
- * @param parameter les paramètres de la simulation
+ * @param parameter les paramÚtres de la simulation
*/
protected SimulationStorage(File directory, String name, SimulationParameter parameter){
super(directory, name);
@@ -284,7 +284,7 @@
* Permet de force la relecture des parametres et donc que les scripts
* soit charge dans le bon classloader
*
- * @return les paramètres de la simulation après opération
+ * @return les paramÚtres de la simulation aprÚs opération
*/
public SimulationParameter getForceReloadParameter() {
// if parameter allready loaded, write it before reload. To take
@@ -338,9 +338,9 @@
}
/**
- * Indique si la simulation demandée existe ou non
- * @param name le nom de la simulation à tester
- * @return true si la simulation existe déjà
+ * Indique si la simulation demandée existe ou non
+ * @param name le nom de la simulation à tester
+ * @return true si la simulation existe déjÃ
*/
static public boolean exists(String name) {
boolean result;
@@ -350,18 +350,18 @@
}
/**
- * Indique si la simulation demandée existe ou non
- * @param name le nom de la simulation à tester
- * @return true si la simulation existe déjà
+ * Indique si la simulation demandée existe ou non
+ * @param name le nom de la simulation à tester
+ * @return true si la simulation existe déjÃ
*/
static public boolean localyExists(String name) {
return getSimulationNames().contains(name);
}
/**
- * Retourne la simulation demandée.
+ * Retourne la simulation demandée.
* @param name name of the required simulation
- * @return la simulation souhaitée ou null si la simulation n'existe pas
+ * @return la simulation souhaitée ou null si la simulation n'existe pas
*/
static public SimulationStorage getSimulation(String name) {
SimulationStorage result = simulations.get(name);
@@ -380,13 +380,13 @@
}
/**
- * Permet de créer une nouvelle simulation si la simulation existe déjà
- * une exception est levée.
+ * Permet de créer une nouvelle simulation si la simulation existe déjÃ
+ * une exception est levée.
* @param name le nom de la simulation
* @param parameter Les parametres de la simulation
* @return la nouvelle simulation
- * @throws StorageException si problème lors de la création du storage
- * @throws IllegalArgumentException si le nom existe déjà en tant que
+ * @throws StorageException si problÚme lors de la création du storage
+ * @throws IllegalArgumentException si le nom existe déjà en tant que
* simulation
*/
static public SimulationStorage create(String name, SimulationParameter parameter) throws StorageException {
@@ -411,8 +411,8 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
- * @return la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les régions disponible en local
*/
static public List<String> getSimulationNames() {
File dir = getSimulationDirectory();
@@ -420,7 +420,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur CVS
* @return liste de noms de simulations
*/
@@ -431,10 +431,10 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS
- * @return la liste des noms de toutes les régions disponible sur le
- * serveur CVS. Si le serveur n'est pas disponible la liste retournée
+ * @return la liste des noms de toutes les régions disponible sur le
+ * serveur CVS. Si le serveur n'est pas disponible la liste retournée
* est vide.
*/
static public List<String> getRemoteSimulationNames() {
@@ -443,7 +443,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS qui ne sont pas encore en local
* @return liste de noms de simulations
*/
@@ -462,8 +462,8 @@
*/
@Deprecated
public FisheryRegion getFisheryRegion() throws StorageException {
- // FIXME voir si la methode est vraiment utilisée car le context n'est
- // jamais fermé, ce qui est dérangeant
+ // FIXME voir si la methode est vraiment utilisée car le context n'est
+ // jamais fermé, ce qui est dérangeant
try {
TopiaContext tx = getStorage().beginTransaction();
FisheryRegion result = getFisheryRegion(tx);
@@ -503,8 +503,8 @@
* Checkout not existing Simulation localy from server
*
* @param name name of simulation to retrieve
- * @throws VCSException si problème avec le VCS
- * @throws TopiaException si problème lors de l'opération sur la base embarquée
+ * @throws VCSException si problÚme avec le VCS
+ * @throws TopiaException si problÚme lors de l'opération sur la base embarquée
*/
static public void checkout(String name) throws VCSException, TopiaException {
checkout(IsisFish.config.getDatabaseDirectory(), SIMULATION_PATH + "/" + name);
@@ -531,8 +531,8 @@
*
* @param file zipped region file
* @return region storage or null
- * @throws IOException si problème IO lors de la lecture du zip
- * @throws TopiaException si problème lors de la création du contexte
+ * @throws IOException si problÚme IO lors de la lecture du zip
+ * @throws TopiaException si problÚme lors de la création du contexte
*/
public static SimulationStorage importZip(File file) throws IOException, TopiaException {
return importAndRenameZip(file, null);
@@ -544,8 +544,8 @@
* @param file zipped region file
* @param newName new name for the imported simulation
* @return region storage or null
- * @throws IOException si problème IO lors de la lecture du zip
- * @throws TopiaException si problème lors de la création du contexte
+ * @throws IOException si problÚme IO lors de la lecture du zip
+ * @throws TopiaException si problÚme lors de la création du contexte
*/
public static SimulationStorage importAndRenameZip(File file, String newName) throws IOException, TopiaException {
String renameFrom = null;
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* ScriptStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoùt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grᅵgoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -83,9 +83,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public SimulatorStorage getSimulator(String name) {
@@ -103,9 +103,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getSimulatorNames() {
File dir = getSimulatorDirectory();
@@ -114,7 +114,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -126,11 +126,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteSimulatorNames() {
@@ -141,7 +141,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -48,7 +48,7 @@
import java.util.List;
/**
- * Classe permettant de géré l'interaction avec le cvs
+ * Classe permettant de gᅵrᅵ l'interaction avec le cvs
*
* @author poussin
*/
@@ -70,7 +70,7 @@
* il faut que file soit un fichier ou un sous fichiers dans root
*
* @param root le repertoire racine de mise en VCSNone (HOME VCSNone)
- * @param file le fichier a gérer.
+ * @param file le fichier a gᅵrer.
*/
protected VersionStorage(File root, File file) {
this.root = root;
@@ -78,7 +78,7 @@
}
/**
- * Permet de demander la preparation des fichiers pour etre envoyé
+ * Permet de demander la preparation des fichiers pour etre envoyᅵ
* vers le VCSNone
*
*/
@@ -99,7 +99,7 @@
}
/**
- * Indique s'il a deja ete ajouté au cvs. Si file est un repertoire
+ * Indique s'il a deja ete ajoutᅵ au cvs. Si file est un repertoire
* (ex pour Region) alors vrai meme si tous les fichiers du repertoire
* ne sont pas sur le VCSNone
*
@@ -110,26 +110,26 @@
}
/**
- * Permet de savoir si un fichier doit etre géré par le vcs ou non.
- * L'implantation par defaut exclus les répertoires VCSNone, il faut
+ * Permet de savoir si un fichier doit etre gᅵrᅵ par le vcs ou non.
+ * L'implantation par defaut exclus les rᅵpertoires VCSNone, il faut
* toujours appeler le super si on surcharge la methode.
*
* @param file le fichier a tester
- * @return <code>true</code> si le fichier est versionné
+ * @return <code>true</code> si le fichier est versionnᅵ
*/
protected boolean isVersionnableAbleFile(File file) {
return !getVCS().isVersionnableAbleFile(file);
}
/**
- * Donne la liste de tous les fichiers que le VCSNone doit gérer.
+ * Donne la liste de tous les fichiers que le VCSNone doit gᅵrer.
* Par defaut parcours tous les repertoires et ajouter tous les fichiers
- * et repertoire trouvé. Il est possible d'exclure des fichiers et/ou
+ * et repertoire trouvᅵ. Il est possible d'exclure des fichiers et/ou
* repertoire en surchargeant {@link #isVersionnableAbleFile(File)}
*
* @param current le fichier
- * @param result la liste des fichiers à traiter
- * @return La liste des fichiers a géré par le CVS pour un add, remove
+ * @param result la liste des fichiers ᅵ traiter
+ * @return La liste des fichiers a gᅵrᅵ par le CVS pour un add, remove
* update
*/
protected List<File> getFiles(File current, List<File> result) {
@@ -145,12 +145,12 @@
}
/**
- * Donne la liste de tous les fichiers à gérer par le VCSNone.
- * Ceci inclu la liste des répertoires pour aller de ce storage
+ * Donne la liste de tous les fichiers ᅵ gᅵrer par le VCSNone.
+ * Ceci inclu la liste des rᅵpertoires pour aller de ce storage
* jusqu'a la racine VCSNone si withParent est vrai
*
* @param withParent si vrai inclu les parents
- * @return la liste des fichiers trouvés
+ * @return la liste des fichiers trouvᅵs
*/
protected List<File> getFiles(boolean withParent) {
List<File> result = new ArrayList<File>();
@@ -188,7 +188,7 @@
/**
* Permet de supprimer une classe
*
- * @param cvsDelete si vrai alors la classe sera aussi supprimé sur le
+ * @param cvsDelete si vrai alors la classe sera aussi supprimᅵ sur le
* cvs si elle existait. Cela prend effet immediatement (un commit est fait)
* @throws StorageException si pb pendant l'op
*/
@@ -240,12 +240,12 @@
}
/**
- * Permet de ramener tout un répertoire du VCSNone. Utile seulement pour le
+ * Permet de ramener tout un rᅵpertoire du VCSNone. Utile seulement pour le
* premier lancement pour scipts et exports.
*
* @param destDir le repertoire parent
* @param module le repertoire qui peut etre scripts ou exports
- * @throws VCSException si pb pendant l'opération
+ * @throws VCSException si pb pendant l'opᅵration
*
*/
static public void checkout(File destDir, String module) throws VCSException {
@@ -255,7 +255,7 @@
/**
* Retourne la liste des noms de toutes les storages disponible en local
*
- * @param directory le répertoire dans lequel vie l'ensemble des storage
+ * @param directory le rᅵpertoire dans lequel vie l'ensemble des storage
* @return la liste des noms de toutes les storages disponible en local
*/
static public List<String> getStorageNames(File directory) {
@@ -277,10 +277,10 @@
* Retourne la liste des noms de tous les storages disponibles sur le
* serveur VCSNone
*
- * @param directory le répertoire sur le VCSNone ou doivent se trouver
+ * @param directory le rᅵpertoire sur le VCSNone ou doivent se trouver
* les storages (regions, simulations)
* @return la liste des noms de tous les storages disponibles sur le
- * serveur VCSNone. Si le serveur n'est pas disponible la liste retournée
+ * serveur VCSNone. Si le serveur n'est pas disponible la liste retournᅵe
* est vide.
*/
static public List<String> getRemoteStorageNames(File directory) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -70,7 +70,7 @@
result = MigrationChoice.NO_MIGRATION;
// ouverture d'une connexion direct JDBC sur la base
try {
- Connection conn = dbManager.getConnection();
+ Connection conn = null;//dbManager.getConnection();
try {
conn.setAutoCommit(false);
if (VersionNumberUtil.smallerThan(dbVersion, "3.2")) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -154,7 +154,7 @@
* Commence par nettoyer le fichier en supprimant les simulations, script
* et regle de gestion
*
- * Converti ensuite le fichier dans la version 2.3 des données
+ * Converti ensuite le fichier dans la version 2.3 des données
*
* @param file
* @return le nouveau fichier converti et propre
@@ -188,7 +188,7 @@
/**
* Verifie la version du fichier, et le modifie si besoin avant de retourner
- * le flux. Si le fichier est plus récent que la version d'isis, une
+ * le flux. Si le fichier est plus récent que la version d'isis, une
* exception est leve.
* @param file
* @param versionStart
@@ -223,7 +223,7 @@
/**
* Retourne les fichiers xsl qu'il faut appliquer dans l'ordre qu'il faut.
- * @param versionStart la version de départ du fichier
+ * @param versionStart la version de départ du fichier
* @param versionEnd la version auquel doit arriver le fichier
* @return la liste des URLs des fichiers XSL a appliquer, ou null s'il est impossible de trouver les fichiers necessaire.
*/
@@ -251,7 +251,7 @@
/**
* Converti un fichier XML en lui applicant un fichier XSL
* @param sourceFile le fichier source XML
- * @param destFile le fichier résultat de l'opération
+ * @param destFile le fichier résultat de l'opération
* @param stylesheetURL l'url de la feuille de style a appliquer
* @throws Exception
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Cell.
+ * Implantation des operations pour l'entité Cell.
*/
public class CellImpl extends CellAbstract implements Serializable, Cell {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -56,7 +56,7 @@
private static final long serialVersionUID = -2195404062556810283L;
/**
- * Evalue l'equation et retourne le résultat
+ * Evalue l'equation et retourne le résultat
* @param param
* @return
* @throws IsisFishException
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* Formule.java
*
- * Created: 14 févr. 2006 11:32:40
+ * Created: 14 févr. 2006 11:32:40
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -8,7 +8,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Gear.
+ * Implantation des operations pour l'entité Gear.
*/
public class GearImpl extends GearAbstract implements Serializable, Gear {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -9,7 +9,7 @@
import fr.ifremer.isisfish.types.Month;
/**
- * Implantation des operations pour l'entité Metier.
+ * Implantation des operations pour l'entité Metier.
*/
public class MetierImpl extends fr.ifremer.isisfish.entities.MetierAbstract implements Serializable, fr.ifremer.isisfish.entities.Metier {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* MetierSeasonInfoImpl.java
*
- * Created: 23 août 2006 16:25:40
+ * Created: 23 aoùt 2006 16:25:40
*
* @author poussin
* @version $Revision$
@@ -56,7 +56,7 @@
*/
public double getTargetFactor(PopulationGroup group) {
// Par defaut on retourne 1 si dans les donnes rien n'est
- // precisé (20041108: Stef + dom)
+ // precisé (20041108: Stef + dom)
double result = 1;
Species species = group.getPopulation().getSpecies();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Port.
+ * Implantation des operations pour l'entité Port.
*/
public class PortImpl extends fr.ifremer.isisfish.entities.PortAbstract implements Serializable, fr.ifremer.isisfish.entities.Port {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -16,7 +16,7 @@
import org.codelutin.topia.TopiaException;
/**
- * Implantation des operations pour l'entité SetOfVessels.
+ * Implantation des operations pour l'entité SetOfVessels.
*/
public class SetOfVesselsImpl extends fr.ifremer.isisfish.entities.SetOfVesselsAbstract implements Serializable, fr.ifremer.isisfish.entities.SetOfVessels {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Species.
+ * Implantation des operations pour l'entité Species.
*/
public class SpeciesImpl extends fr.ifremer.isisfish.entities.SpeciesAbstract implements Serializable, fr.ifremer.isisfish.entities.Species {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -19,7 +19,7 @@
import fr.ifremer.isisfish.types.Month;
/**
- * Implantation des operations pour l'entité Strategy.
+ * Implantation des operations pour l'entité Strategy.
*/
public class StrategyImpl extends fr.ifremer.isisfish.entities.StrategyAbstract implements Serializable, fr.ifremer.isisfish.entities.Strategy {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* StrategyMonthInfoImpl.java
*
- * Created: 29 août 06 11:30:27
+ * Created: 29 aoùt 06 11:30:27
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* TargetSpeciesImpl.java
*
- * Created: 23 août 2006 16:38:23
+ * Created: 23 aoùt 2006 16:38:23
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -10,7 +10,7 @@
import fr.ifremer.isisfish.types.TimeUnit;
/**
- * Implantation des operations pour l'entité TripType.
+ * Implantation des operations pour l'entité TripType.
*/
public class TripTypeImpl extends fr.ifremer.isisfish.entities.TripTypeAbstract implements Serializable, fr.ifremer.isisfish.entities.TripType {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -10,7 +10,7 @@
import fr.ifremer.isisfish.types.TimeUnit;
/**
- * Implantation des operations pour l'entité VesselType.
+ * Implantation des operations pour l'entité VesselType.
*/
public class VesselTypeImpl extends fr.ifremer.isisfish.entities.VesselTypeAbstract implements Serializable, fr.ifremer.isisfish.entities.VesselType {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Zone.
+ * Implantation des operations pour l'entité Zone.
*/
public class ZoneImpl extends fr.ifremer.isisfish.entities.ZoneAbstract implements Serializable, fr.ifremer.isisfish.entities.Zone {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* EmigrationEquation.java
*
- * Created: 23 août 2006 12:06:02
+ * Created: 23 aoùt 2006 12:06:02
*
* @author poussin
* @version $Revision$
@@ -55,7 +55,7 @@
* @param group le group pour lequel on souhaite le coffecient d'emigration
* @param departureZone la zone de depart
* @return la proportion d'individu a emigrer de la zone de depart
- * pour le groupe passé en argument
+ * pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "departureZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* ImmigrationEquation.java
*
- * Created: 23 août 2006 12:06:32
+ * Created: 23 aoùt 2006 12:06:32
*
* @author poussin
* @version $Revision$
@@ -53,9 +53,9 @@
* @param N effectif de la population
* @param pop la population pour lequel on souhaite le nombre d'immigration
* @param group le group pour lequel on souhaite le nombre d'immigration
- * @param arrivalZone la zone d'arrivé de l'immigration
+ * @param arrivalZone la zone d'arrivé de l'immigration
* @return le nombre d'individu a immigrer dans la zone
- * d'arrivé pour le groupe passé en argument
+ * d'arrivé pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "arrivalZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* Language.java
*
- * Created: 23 août 2006 01:18:19
+ * Created: 23 aoùt 2006 01:18:19
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* MigrationEquation.java
*
- * Created: 23 août 2006 12:05:14
+ * Created: 23 aoùt 2006 12:05:14
*
* @author poussin
* @version $Revision$
@@ -54,9 +54,9 @@
* @param pop la population pour lequel on souhaite le coffecient de migration
* @param group le group pour lequel on souhaite le coffecient de migration
* @param departureZone la zone de depart de migration
- * @param arrivalZone la zone d'arrivé de migration
+ * @param arrivalZone la zone d'arrivé de migration
* @return la proportion d'individu a migrer de la zone de depart a la zone
- * d'arrivé pour le groupe passé en argument
+ * d'arrivé pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "departureZone", "arrivalZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationGrowthReverse.java
*
- * Created: 23 août 2006 01:26:37
+ * Created: 23 aoùt 2006 01:26:37
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationMeanWeight.java
*
- * Created: 23 août 2006 11:14:46
+ * Created: 23 aoùt 2006 11:14:46
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationNaturalDeathRate.java
*
- * Created: 23 août 2006 11:13:57
+ * Created: 23 aoùt 2006 11:13:57
*
* @author poussin
* @version $Revision$
@@ -48,11 +48,11 @@
/**
*
* @param context
- * @param pop la population pour lequel il faut calculer la mortalité naturelle
- * @param group le groupe pour lequel il faut calculer la mortalité naturelle
- * null, si on souhaite la mortalité naturelle du group des naissances
- * @param zone la zone du groupe pour lequel on souhaite la mortalité natrurelle
- * seulement utilisé pour la mortalité naturelle du group des naissances,
+ * @param pop la population pour lequel il faut calculer la mortalité naturelle
+ * @param group le groupe pour lequel il faut calculer la mortalité naturelle
+ * null, si on souhaite la mortalité naturelle du group des naissances
+ * @param zone la zone du groupe pour lequel on souhaite la mortalité natrurelle
+ * seulement utilisé pour la mortalité naturelle du group des naissances,
* sinon null
* @return
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationPrice.java
*
- * Created: 23 août 2006 11:15:17
+ * Created: 23 aoùt 2006 11:15:17
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationReproductionEquation.java
*
- * Created: 23 août 2006 11:11:40
+ * Created: 23 aoùt 2006 11:11:40
*
* @author poussin
* @version $Revision$
@@ -63,7 +63,7 @@
* @param zones la liste des zones de la population (dimension 1 de N)
* @param result la matrice resultat que l'equation doit remplir, il s'agit
* d'un vecteur avec comme semantique la liste des zones de reproduction
- * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;'
+ * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;'
* convient.
*/
@Args({"context", "N", "pop", "month", "prepro", "zoneRepro", "groups", "zones", "result"})
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* SelectivityEquation.java
*
- * Created: 23 août 2006 11:39:38
+ * Created: 23 aoùt 2006 11:39:38
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* TargetSpeciesTargetFactorEquation.java
*
- * Created: 23 août 2006 16:44:40
+ * Created: 23 aoùt 2006 16:44:40
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -39,7 +39,7 @@
/**
* Interface que doivent implanter les classes d'export de resultats
*
- * Le nom du fichier d'export qui sera utilisé sera le basé sur le nom de la
+ * Le nom du fichier d'export qui sera utilisé sera le basé sur le nom de la
* classe d'export
*
* @author poussin
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -62,7 +62,7 @@
* @param simulation La simulation pour lequel il faut faire les exports
* @param destdir le repertoire dans lequel il faut ecrire les exports
* @param exportNames le nom des exports a faire
- * @param compileDir le nom du répertoire ou les classes d'export sont compilées
+ * @param compileDir le nom du répertoire ou les classes d'export sont compilées
*/
static public void doExport(SimulationStorage simulation, File destdir, List<String> exportNames, File compileDir) {
Map<String, Integer> usingFilename = new HashMap<String, Integer>();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -72,12 +72,12 @@
/** pattern to use for simulation appender */
public static final String LOG_PATTERN = "%p|%d{ABSOLUTE}|%F|%L|%M|%m%n";
- /** les catégories rattachées au logger de simulation. */
+ /** les catégories rattachées au logger de simulation. */
private static final String[] simulLoggerToChange = {
"fr.ifremer.isisfish",
};
- /** les catégories rattachées au logger de script. */
+ /** les catégories rattachées au logger de script. */
private static final String[] scriptLoggerToChange = {
"scripts",
"simulators",
@@ -85,7 +85,7 @@
"formules"
};
- /** les catégories rattachées au logger de librairies. */
+ /** les catégories rattachées au logger de librairies. */
private static final String[] libLoggerToChange = {
"org.codelutin"
};
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2002, 2003, 2004, 2005 Code Lutin,
- * Cédric Pineau, Benjamin Poussin
+ * Cédric Pineau, Benjamin Poussin
*
*
* This program is free software; you can redistribute it and/or
@@ -182,7 +182,7 @@
}
/**
- * Retourne la liste des mailles selectionnées
+ * Retourne la liste des mailles selectionnᅵes
*/
public List<Cell> getSelectedCells(){
try {
@@ -368,7 +368,7 @@
}
if(!shapeLoaded){
- // a pas reussi a charger les fichiers demandés, on charge la
+ // a pas reussi a charger les fichiers demandᅵs, on charge la
// carte du monde
String filename = IsisFish.config.getDefaultMapFilename();
String shp = filename + ".shp";
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2002-2005 Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2002-2005 Code Lutin, C?dric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -97,26 +97,26 @@
}
/**
- * Prepare les fichiers qui seront utils à la simulation:
+ * Prepare les fichiers qui seront utils ? la simulation:
* <li> scripts
* <li> rules
* <li> exports
* <li> simulators
* <li> export de la database de la region
* <p>
- * Le tout est zippé et le zip est retourné, il peut-être directement
- * importé dans le SimulationStorage (en le renomant comme il faut
+ * Le tout est zipp? et le zip est retourn?, il peut-?tre directement
+ * import? dans le SimulationStorage (en le renomant comme il faut
* importAndRenameZip).
* <p>
- * Ce zip est automatiquement supprimé a la fin de l'application.
+ * Ce zip est automatiquement supprim? a la fin de l'application.
*
* @param control le controleur
* @param param les parametre de la simulation
* @param compile si vrai la version compile des fichiers Java est aussi
* mise dans le fichier zip. Cela peut servir pour les simulations locales
* pour ne pas recompiler pour chaque simulation avec plan d'analyse
- * @return un zip de simulation pour une simulation pret a être faite
- * @throws SimulationException pour tout problème rencontré (IO,Topia...)
+ * @return un zip de simulation pour une simulation pret a ?tre faite
+ * @throws SimulationException pour tout probl?me rencontr? (IO,Topia...)
*/
static public File prepareSimulationZipFile(SimulationControl control,
SimulationParameter param, boolean compile) throws SimulationException {
@@ -150,7 +150,7 @@
FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
}
- // copie des regles reclamées par les plans d'analyse
+ // copie des regles reclam?es par les plans d'analyse
for(String name : param.getExtraRules()) {
FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
@@ -202,16 +202,16 @@
}
/**
- * Compile les fichiers présent dans le répertoire passé en
- * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
- * et scripts. Seul les fichiers des 3 premiers répertoire sont compilé
- * les fichiers du dernier sont compilé par les dépendances qu'on les autres
+ * Compile les fichiers pr?sent dans le r?pertoire pass? en
+ * parametre, ce r?pertoire est hi?rarchis? en: rules, exports, simulators
+ * et scripts. Seul les fichiers des 3 premiers r?pertoire sont compil?
+ * les fichiers du dernier sont compil? par les d?pendances qu'on les autres
* <p>
* Il permet donc de compiler facilement tous les fichiers pour une
* simulation
*
* @param control le controleur
- * @param directory le répertoire où compiler
+ * @param directory le r?pertoire o? compiler
*/
static public void compileAllFile(SimulationControl control, File directory) {
@@ -220,9 +220,9 @@
//
// Recherche des fichiers a compiler
- // On ne prend pas les scripts, car ils sont tous copiés mais pas
- // forcément util. Lors de la compilation des autres fichiers, les
- // script servant réellement seront automatiquement compilé
+ // On ne prend pas les scripts, car ils sont tous copi?s mais pas
+ // forc?ment util. Lors de la compilation des autres fichiers, les
+ // script servant r?ellement seront automatiquement compilé
List<File> fileToCompile = new ArrayList<File>();
@@ -249,14 +249,14 @@
}
/**
- * Modifie le classloader du thread passé en paramètre.
+ * Modifie le classloader du thread pass? en param?tre.
* <p>
* Sert pour les simulations pour qu'elles puissent trouver les
* script, rule et export
*
* @param thread le thread dont on souhaite modifier le classloader ou null
- * @param directory le répertoire qui servira pour le classloader
- * @return le classe loader modifié
+ * @param directory le r?pertoire qui servira pour le classloader
+ * @return le classe loader modifi?
*/
static public AspectClassLoader changeClassLoader(Thread thread, File directory) {
try {
@@ -328,7 +328,7 @@
* souhaite pas controler la simulation
* @param simulation la simulation a faire
*
- * @return le storage après simulation
+ * @return le storage apr?s simulation
* @throws Exception pour toute erreur
*/
static public SimulationStorage remoteSimulate(SimulationControl control,
@@ -344,9 +344,9 @@
// envoie le zip au serveur de simulation
// appel synchrone pour attendre la fin de la simulation
- // recuperation du zip de la simulation terminé
+ // recuperation du zip de la simulation termin?
Vector<Object> a = new Vector<Object>();
- //fixme : on peut avori control à null ?
+ //fixme : on peut avori control ? null ?
a.add(control.getId());
a.add(FileUtil.fileToByte(zip));
@@ -409,7 +409,7 @@
* @param control le controleur de simulation, peut-etre null si on ne
* souhaite pas controler la simulation
* @param simulation la simulation a faire
- * @return le storage après simulation en locale
+ * @return le storage apr?s simulation en locale
*/
static public SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
SimThread simThread = new SimThread(control, simulation);
@@ -464,7 +464,7 @@
* @param control le controleur de simulation, peut-etre null si on ne
* souhaite pas controler la simulation
* @param simulation la simulation a faire
- * @return le storage après simulation en locale
+ * @return le storage apr?s simulation en locale
*/
static public SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
SimulationStorage result = null;
@@ -500,7 +500,7 @@
parameters = simulation.getForceReloadParameter();
//
- // Activation de l'OAP demandée
+ // Activation de l'OAP demand?e
//
if (parameters.getUseStatistic()) {
message(control, _("isisfish.message.setting.trace.aspects"));
@@ -534,7 +534,7 @@
initSimulationListener(context);
//
- // Lancement du script de simulation selectionné
+ // Lancement du script de simulation selectionn?
//
message(control, _("isisfish.message.simulation.execution"));
@@ -545,7 +545,7 @@
simulatorObject.simulate(context);
//
- // Ajout des nouveaux objets créées durant la simulation
+ // Ajout des nouveaux objets cr??es durant la simulation
//
message(control, _("isisfish.message.add.objets.simulation"));
// on ajoute sur le DBResult car pour les exports peut-etre auront
@@ -709,9 +709,9 @@
public void rollback(TopiaTransactionEvent event) {
log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
// FIXME le jour ou on aura l'isolation on pourra directement
- // ajouter dans un autre TopiaContext les objets ajouté durant la
+ // ajouter dans un autre TopiaContext les objets ajout? durant la
// simulation de cette maniere les objets creer au pas de temps
- // N seront dispo pour etre utilisé au pas de temps N+1
+ // N seront dispo pour etre utilis? au pas de temps N+1
// Sinon une autre methode est de faire cette ajout
// dans l'event rollback qui est leve a la fin de chaque pas de temps
for (TopiaEntity entity : event.getEntities()) {
Modified: branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,17 +1,25 @@
+$labelStatus=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
Checkout\ pom.xml\ to\ %1$s=
Info=Info
Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+Stop\ the\ process=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
could\ not\ filter\ on\ simulations=could not filter on simulations
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+isisfish.Export.title=
+isisfish.Params.title=
+isisfish.PreScripts.title=
+isisfish.Queue.title=
+isisfish.ResultChoice.title=
+isisfish.Sens.title=
isisfish.about.site=site
isisfish.about.text=text
isisfish.about.title=title
@@ -230,7 +238,7 @@
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
isisfish.error.import.scripts.force=Some files already exist, you MUST use option [force] pour force overwrite.
isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
isisfish.error.instanciate=Can't instanciate %1$s
isisfish.error.instanciate.export=Can't instanciate export %1$s
isisfish.error.integer.positif=Your input must be a positif integer (>1)
Modified: branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,17 +1,25 @@
+$labelStatus=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
Checkout\ pom.xml\ to\ %1$s=
Info=Info
Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+Stop\ the\ process=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
could\ not\ filter\ on\ simulations=could not filter on simulations
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+isisfish.Export.title=
+isisfish.Params.title=
+isisfish.PreScripts.title=
+isisfish.Queue.title=
+isisfish.ResultChoice.title=
+isisfish.Sens.title=
isisfish.about.site=http\://isisfish.labs.libre-entreprise.org - by B.Poussin
isisfish.about.text=Simulateur Isis-Fish
isisfish.about.title=A propos...
@@ -230,7 +238,7 @@
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
isisfish.error.import.scripts.force=Certains fichiers existent, vous devez utiliser l'option [force] pour forcer l'\u00E9crasement.
isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
isisfish.error.instanciate=Can't instanciate %1$s
isisfish.error.instanciate.export=Can't instanciate export %1$s
isisfish.error.integer.positif=Your input must be a positif integer (>1)
Modified: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml 2008-08-28 08:21:07 UTC (rev 1312)
@@ -20,7 +20,7 @@
<textfield constraints="valuesSensWizardTypeField" origin="" editable="false"/>
</panel>
<panel contraints="valuesSensWizardNewValuePanel" text="New Value">
- <textarea origin="" text="isisfish.common.blabla"/> <!-- TODO Peut dépendre du type de l'obet -->
+ <textarea origin="" text="isisfish.common.blabla"/> <!-- TODO Peut dependre du type de l'obet -->
</panel>
<button constraints="buttonValuesSensWizardAdd" id="buttonValuesSensWizardAdd" text="isisfish.sensWizardPanels.add" actionCommand=""/>
<button constraints="buttonValuesSensWizardModify" id="buttonValuesSensWizardModify" text="isisfish.sensWizardPanels.modify" actionCommand=""/>
1
0
r1311 - in trunk/isis-fish/src/java/fr/ifremer/isisfish: datastore simulator/launcher simulator/launcher/doc-files ui/simulator ui/widget
by bpoussin@users.labs.libre-entreprise.org 27 Aug '08
by bpoussin@users.labs.libre-entreprise.org 27 Aug '08
27 Aug '08
Author: bpoussin
Date: 2008-08-27 17:07:00 +0000 (Wed, 27 Aug 2008)
New Revision: 1311
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
Log:
- nouvelle implantation de la queue pour permettre a l'utilisateur d'utiliser le bon executor lorsqu'il choisi un launcher
- ajout de doc sur le nouveau simulation service
- modif d'erreur dans le model de table de queue
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -94,7 +94,7 @@
protected boolean useLog;
/**
* Pour la lecture d'une simulation existante
- * @param directory repertoire de base du storage
+ * @param directory repertoire de base du storage (inclu le nom de la sim)
* @param name le nom de la simulation
* @param parameter les paramètres de la simulation
*/
@@ -579,9 +579,13 @@
renameFrom = "^.*?/(.*)$";
renameTo = newName + "/$1";
}
+ log.info(_("Import simulation file %s in directory %s and rename from %s to %s",
+ file, directory, renameFrom, renameTo));
String lastEntry = ZipUtil.uncompressAndRename(file, directory, renameFrom, renameTo);
String name = lastEntry.substring(0, lastEntry.indexOf("/"));
- SimulationStorage result = new SimulationStorage(directory, name, null);
+ log.info(_("Last entry was %s extract name %s", lastEntry, name));
+ File simDir = new File(directory, name);
+ SimulationStorage result = new SimulationStorage(simDir, name, null);
if (result != null) {
File data = result.getDataBackupFile();
if (file.exists()) {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -75,7 +75,7 @@
SimulationControl control, File simulationZip)
throws RemoteException{
String id = control.getId();
-
+ log.info(_("simulate %s with file %s", id, simulationZip));
SimulationStorage simulation = null;
try {
simulation = SimulationStorage.importAndRenameZip(simulationZip, id);
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,553 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+
+import java.util.AbstractQueue;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.PriorityQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.ReentrantLock;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+///////////////////////////////////////////////////////////////////////////
+//
+// not modified code from PriorityBlockingQueue
+//
+///////////////////////////////////////////////////////////////////////////
+/**
+ * It's based on PriorityBlockingQueue code,
+ * because PriorityBlockingQueue use private field for ReentrantLock :(
+ *
+ * @author poussin
+ * @param E
+ */
+public class JDKPriorityBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable {
+
+ private static final long serialVersionUID = 5595510919245408276L;
+ protected final PriorityQueue<E> q;
+ protected final ReentrantLock lock = new ReentrantLock(true);
+ protected final Condition notEmpty = lock.newCondition();
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the default
+ * initial capacity (11) that orders its elements according to
+ * their {@linkplain Comparable natural ordering}.
+ */
+ public JDKPriorityBlockingQueue() {
+ q = new PriorityQueue<E>();
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the specified
+ * initial capacity that orders its elements according to their
+ * {@linkplain Comparable natural ordering}.
+ *
+ * @param initialCapacity the initial capacity for this priority queues
+ * @throws IllegalArgumentException if <tt>initialCapacity</tt> is less
+ * than 1
+ */
+ public JDKPriorityBlockingQueue(int initialCapacity) {
+ q = new PriorityQueue<E>(initialCapacity, null);
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the specified initial
+ * capacity that orders its elements according to the specified
+ * comparator.
+ *
+ * @param initialCapacity the initial capacity for this priority queues
+ * @param comparator the comparator that will be used to order this
+ * priority queues. If {@code null}, the {@linkplain Comparable
+ * natural ordering} of the elements will be used.
+ * @throws IllegalArgumentException if <tt>initialCapacity</tt> is less
+ * than 1
+ */
+ public JDKPriorityBlockingQueue(int initialCapacity,
+ Comparator<? super E> comparator) {
+ q = new PriorityQueue<E>(initialCapacity, comparator);
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> containing the elements
+ * in the specified collection. If the specified collection is a
+ * {@link SortedSet} or a {@link PriorityQueue}, this
+ * priority queues will be ordered according to the same ordering.
+ * Otherwise, this priority queues will be ordered according to the
+ * {@linkplain Comparable natural ordering} of its elements.
+ *
+ * @param c the collection whose elements are to be placed
+ * into this priority queues
+ * @throws ClassCastException if elements of the specified collection
+ * cannot be compared to one another according to the priority
+ * queues's ordering
+ * @throws NullPointerException if the specified collection or any
+ * of its elements are null
+ */
+ public JDKPriorityBlockingQueue(Collection<? extends E> c) {
+ q = new PriorityQueue<E>(c);
+ }
+
+ /**
+ * Inserts the specified element into this priority queues.
+ *
+ * @param e the element to add
+ * @return <tt>true</tt> (as specified by {@link Collection#add})
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean add(E e) {
+ return offer(e);
+ }
+
+ /**
+ * Inserts the specified element into this priority queues.
+ *
+ * @param e the element to add
+ * @return <tt>true</tt> (as specified by {@link Queue#offer})
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean offer(E e) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ boolean ok = q.offer(e);
+ assert ok;
+ notEmpty.signal();
+ return true;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Inserts the specified element into this priority queues. As the queues is
+ * unbounded this method will never block.
+ *
+ * @param e the element to add
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public void put(E e) {
+ offer(e); // never need to block
+ }
+
+ /**
+ * Inserts the specified element into this priority queues. As the queues is
+ * unbounded this method will never block.
+ *
+ * @param e the element to add
+ * @param timeout This parameter is ignored as the method never blocks
+ * @param unit This parameter is ignored as the method never blocks
+ * @return <tt>true</tt>
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean offer(E e, long timeout, TimeUnit unit) {
+ return offer(e); // never need to block
+ }
+
+ public E poll() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.poll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E take() throws InterruptedException {
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ try {
+ while (q.size() == 0) {
+ notEmpty.await();
+ }
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ E x = q.poll();
+ assert x != null;
+ return x;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E poll(long timeout, TimeUnit unit) throws InterruptedException {
+ long nanos = unit.toNanos(timeout);
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ for (;;) {
+ E x = q.poll();
+ if (x != null) {
+ return x;
+ }
+ if (nanos <= 0) {
+ return null;
+ }
+ try {
+ nanos = notEmpty.awaitNanos(nanos);
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E peek() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.peek();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns the comparator used to order the elements in this queues,
+ * or <tt>null</tt> if this queues uses the {@linkplain Comparable
+ * natural ordering} of its elements.
+ *
+ * @return the comparator used to order the elements in this queues,
+ * or <tt>null</tt> if this queues uses the natural
+ * ordering of its elements
+ */
+ public Comparator<? super E> comparator() {
+ return q.comparator();
+ }
+
+ public int size() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.size();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Always returns <tt>Integer.MAX_VALUE</tt> because
+ * a <tt>PriorityBlockingQueue</tt> is not capacity constrained.
+ * @return <tt>Integer.MAX_VALUE</tt>
+ */
+ public int remainingCapacity() {
+ return Integer.MAX_VALUE;
+ }
+
+ /**
+ * Removes a single instance of the specified element from this queues,
+ * if it is present. More formally, removes an element {@code e} such
+ * that {@code o.equals(e)}, if this queues contains one or more such
+ * elements. Returns {@code true} if and only if this queues contained
+ * the specified element (or equivalently, if this queues changed as a
+ * result of the call).
+ *
+ * @param o element to be removed from this queues, if present
+ * @return <tt>true</tt> if this queues changed as a result of the call
+ */
+ public boolean remove(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.remove(o);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns {@code true} if this queues contains the specified element.
+ * More formally, returns {@code true} if and only if this queues contains
+ * at least one element {@code e} such that {@code o.equals(e)}.
+ *
+ * @param o object to be checked for containment in this queues
+ * @return <tt>true</tt> if this queues contains the specified element
+ */
+ public boolean contains(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.contains(o);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an array containing all of the elements in this queues.
+ * The returned array elements are in no particular order.
+ *
+ * <p>The returned array will be "safe" in that no references to it are
+ * maintained by this queues. (In other words, this method must allocate
+ * a new array). The caller is thus free to modify the returned array.
+ *
+ * <p>This method acts as bridge between array-based and collection-based
+ * APIs.
+ *
+ * @return an array containing all of the elements in this queues
+ */
+ public Object[] toArray() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toArray();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public String toString() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toString();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * @throws UnsupportedOperationException {@inheritDoc}
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ public int drainTo(Collection<? super E> c) {
+ if (c == null) {
+ throw new NullPointerException();
+ }
+ if (c == this) {
+ throw new IllegalArgumentException();
+ }
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ int n = 0;
+ E e;
+ while ((e = q.poll()) != null) {
+ c.add(e);
+ ++n;
+ }
+ return n;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * @throws UnsupportedOperationException {@inheritDoc}
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ public int drainTo(Collection<? super E> c, int maxElements) {
+ if (c == null) {
+ throw new NullPointerException();
+ }
+ if (c == this) {
+ throw new IllegalArgumentException();
+ }
+ if (maxElements <= 0) {
+ return 0;
+ }
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ int n = 0;
+ E e;
+ while (n < maxElements && (e = q.poll()) != null) {
+ c.add(e);
+ ++n;
+ }
+ return n;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Atomically removes all of the elements from this queues.
+ * The queues will be empty after this call returns.
+ */
+ public void clear() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ q.clear();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an array containing all of the elements in this queues; the
+ * runtime type of the returned array is that of the specified array.
+ * The returned array elements are in no particular order.
+ * If the queues fits in the specified array, it is returned therein.
+ * Otherwise, a new array is allocated with the runtime type of the
+ * specified array and the size of this queues.
+ *
+ * <p>If this queues fits in the specified array with room to spare
+ * (i.e., the array has more elements than this queues), the element in
+ * the array immediately following the end of the queues is set to
+ * <tt>null</tt>.
+ *
+ * <p>Like the {@link #toArray()} method, this method acts as bridge between
+ * array-based and collection-based APIs. Further, this method allows
+ * precise control over the runtime type of the output array, and may,
+ * under certain circumstances, be used to save allocation costs.
+ *
+ * <p>Suppose <tt>x</tt> is a queues known to contain only strings.
+ * The following code can be used to dump the queues into a newly
+ * allocated array of <tt>String</tt>:
+ *
+ * <pre>
+ * String[] y = x.toArray(new String[0]);</pre>
+ *
+ * Note that <tt>toArray(new Object[0])</tt> is identical in function to
+ * <tt>toArray()</tt>.
+ *
+ * @param a the array into which the elements of the queues are to
+ * be stored, if it is big enough; otherwise, a new array of the
+ * same runtime type is allocated for this purpose
+ * @return an array containing all of the elements in this queues
+ * @throws ArrayStoreException if the runtime type of the specified array
+ * is not a supertype of the runtime type of every element in
+ * this queues
+ * @throws NullPointerException if the specified array is null
+ */
+ public <T> T[] toArray(T[] a) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toArray(a);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an iterator over the elements in this queues. The
+ * iterator does not return the elements in any particular order.
+ * The returned <tt>Iterator</tt> is a "weakly consistent"
+ * iterator that will never throw {@link
+ * ConcurrentModificationException}, and guarantees to traverse
+ * elements as they existed upon construction of the iterator, and
+ * may (but is not guaranteed to) reflect any modifications
+ * subsequent to construction.
+ *
+ * @return an iterator over the elements in this queues
+ */
+ public Iterator<E> iterator() {
+ return new Itr(toArray());
+ }
+
+ /**
+ * Snapshot iterator that works off copy of underlying q array.
+ */
+ private class Itr implements Iterator<E> {
+
+ final Object[] array; // Array of all elements
+ int cursor; // index of next element to return;
+ int lastRet; // index of last element, or -1 if no such
+
+ Itr(Object[] array) {
+ lastRet = -1;
+ this.array = array;
+ }
+
+ public boolean hasNext() {
+ return cursor < array.length;
+ }
+
+ public E next() {
+ if (cursor >= array.length) {
+ throw new NoSuchElementException();
+ }
+ lastRet = cursor;
+ return (E) array[cursor++];
+ }
+
+ public void remove() {
+ if (lastRet < 0) {
+ throw new IllegalStateException();
+ }
+ Object x = array[lastRet];
+ lastRet = -1;
+ // Traverse underlying queues to find == element,
+ // not just a .equals element.
+ lock.lock();
+ try {
+ for (Iterator it = q.iterator(); it.hasNext();) {
+ if (it.next() == x) {
+ it.remove();
+ return;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ }
+
+ /**
+ * Saves the state to a stream (that is, serializes it). This
+ * merely wraps default serialization within lock. The
+ * serialization strategy for items is left to underlying
+ * Queue. Note that locking is not needed on deserialization, so
+ * readObject is not defined, just relying on default.
+ */
+ private void writeObject(java.io.ObjectOutputStream s)
+ throws java.io.IOException {
+ lock.lock();
+ try {
+ s.defaultWriteObject();
+ } finally {
+ lock.unlock();
+ }
+ }
+}
+
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -61,10 +61,11 @@
/** le launcher a utilise pour les simulations */
protected SimulatorLauncher launcher;
- public SimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher,
- BlockingQueue<Runnable> workQueue) {
+ public SimulationExecutor(SimulationService simulationService,
+ SimulatorLauncher launcher,
+ SimulationQueue workQueue) {
super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
- 0L, TimeUnit.MILLISECONDS, workQueue);
+ 0L, TimeUnit.MILLISECONDS, (BlockingQueue)workQueue);
this.simulationService = simulationService;
this.launcher = launcher;
lastCorePoolSize = prestartAllCoreThreads();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -52,6 +52,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulationJob.class);
+ transient protected String id;
/** l'ensemble des post actions a effectuer pour ce job */
protected Set<PostAction> postActions = new HashSet<PostAction>();
/** Le {@link SimulationService} dans lequel a ete cree ce job */
@@ -85,6 +86,13 @@
this.postActions.remove(postAction);
}
+ public String getId() {
+ if (id == null) {
+ id = getItem().getControl().getId();
+ }
+ return id;
+ }
+
/**
* demande l'annulation/arret de ce job. Si ce job n'etait pas encore actif
* un {@link SimulationServiceListener#simulationStop} est leve. Sinon
@@ -97,11 +105,11 @@
// on essaie d'enlever ce job de la queue, au cas ou il ne serait pas
// encore lance
if (simulationService.cancel(this)) {
- // on a pu annuler avec le lancement, on notify un stop puisqu'on
+ // on a pu annuler avant le lancement, on notify un stop puisqu'on
// ne passera jamais dans le run()
simulationService.fireStopEvent(this);
}
- item.getControl().stopSimulation();
+ item.getControl().setStopSimulationRequest(true);
}
public SimulationJob getParentJob() {
@@ -125,7 +133,11 @@
}
public int compareTo(SimulationJob o) {
- return this.priority - o.priority;
+ int result = this.priority - o.priority;
+ if (result == 0) {
+ result = this.getId().compareTo(o.getId());
+ }
+ return result;
}
/**
@@ -137,8 +149,12 @@
public void run() {
try {
SimulationControl control = item.getControl();
+ String id = control.getId();
+ if (control.isStopSimulationRequest()) {
+ log.info(_("Not start simulation %s because user ask stop", id));
+ return ;
+ }
SimulationParameter param = item.getParameter();
- String id = control.getId();
log.debug("Start simulation: " + id);
simulationService.fireStartEvent(this);
@@ -147,7 +163,7 @@
// simulation les unes apres les autres
Iterator<SimulationJob> i =
new SimulationService.PrepareSimulationJob(simulationService, this);
- while (i.hasNext()) {
+ while (!control.isStopSimulationRequest() && i.hasNext()) {
log.info(_("Generate next simulation"));
SimulationJob subjob = i.next();
subjob.setLauncher(getLauncher());
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,160 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.ReentrantLock;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Multi tail PriorityBlockingQueue.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationQueue extends JDKPriorityBlockingQueue<SimulationJob> {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationQueue.class);
+ protected SimulationQueue parent = null;
+ protected List<SimulationQueue> childs = new LinkedList<SimulationQueue>();
+
+ public SimulationQueue() {
+ }
+
+
+ public SimulationQueue(SimulationQueue parent) {
+ parent.addChild(this);
+ }
+
+ public void addChild(SimulationQueue c) {
+ childs.add(c);
+ c.parent = this;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ boolean result = false;
+ for (SimulationQueue child : childs) {
+ result = child.remove(o) || result;
+ }
+ result = q.remove(o) || result;
+ return result;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+
+ @Override
+ public boolean offer(SimulationJob e) {
+ boolean result = super.offer(e);
+ for (SimulationQueue child : childs) {
+ final ReentrantLock lock = child.lock;
+ lock.lock();
+ try {
+ child.notEmpty.signal();
+ } finally {
+ lock.unlock();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob peek() {
+ SimulationJob result = super.peek();
+ if (result == null && parent != null) {
+ result = parent.peek();
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob poll() {
+ SimulationJob result = super.poll();
+ if (result == null && parent != null) {
+ result = parent.peek();
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob take() throws InterruptedException {
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ SimulationJob result = null;
+ try {
+ try {
+ while (q.size() == 0 && parent != null && null == parent.poll()) {
+ notEmpty.await();
+ }
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ if (result == null) {
+ result = q.poll();
+ }
+ assert result != null;
+ return result;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public SimulationJob poll(long timeout, TimeUnit unit) throws InterruptedException {
+ long nanos = unit.toNanos(timeout);
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ for (;;) {
+ SimulationJob result = poll();
+ if (result != null) {
+ return result;
+ }
+ if (nanos <= 0) {
+ return null;
+ }
+ try {
+ nanos = notEmpty.awaitNanos(nanos);
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+
+}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -117,14 +117,19 @@
// (sans doute ajoute un boolean, simulationListAsQueue = true|false)
protected boolean autoLaunch = true;
- /** L'executor utilise pour creer toutes les sous simulations des plans independants */
- protected ExecutorService subSimulationComputationExecutor = Executors.newSingleThreadExecutor();
- /** Tous les types de {@link SimulatorLauncher} disponibles, et leur executors associe */
- protected Map<SimulatorLauncher, SimulationExecutor> executors;
+ /** L'executor utilise pour creer toutes les sous simulations des plans
+ * independants */
+ protected ExecutorService subSimulationComputationExecutor =
+ Executors.newSingleThreadExecutor();
+ /** Tous les types de {@link SimulatorLauncher} disponibles, et leur
+ * executors associe */
+ protected Map<SimulatorLauncher, SimulationExecutor> executors =
+ new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
/** Le nombre d'erreur pour les SimulatorLauncher */
- protected Map<SimulatorLauncher, MutableInt> launcherError;
+ protected Map<SimulatorLauncher, MutableInt> launcherError =
+ new HashMap<SimulatorLauncher, MutableInt>();
/** La queue contenant toutes les simulations a faire */
- protected PriorityBlockingQueue<Runnable> queue = new PriorityBlockingQueue<Runnable>();
+ protected SimulationQueue queue = new SimulationQueue();
/** Contient les identifiants des simulations presentes dans {@ link #jobs}*/
protected Set<String> idJobs = new HashSet<String>();
@@ -139,21 +144,30 @@
*/
protected SimulationService() {
// on cree un executor par type SimulatorLauncher
- executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
- launcherError = new HashMap<SimulatorLauncher, MutableInt>();
Properties prop = IsisFish.config.getOptionStartsWith(SIMULATION_LAUNCHER);
for (String key : prop.stringPropertyNames()) {
String value = prop.getProperty(key);
try {
SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil.newInstance(value);
- SimulationExecutor se = new SimulationExecutor(this, sl, queue);
- executors.put(sl, se);
- launcherError.put(sl, new MutableInt(0));
+ addSimulationLauncher(sl);
} catch (Exception eee) {
log.warn(_("Can't instantiate %s", value), eee);
}
}
}
+
+ /**
+ * Permet d'ajouter un nouveau SimulatorLauncher. Cela cree automatiquement
+ * un executor pour ce SimulatorLauncher. S'il y avait deja un
+ * SimulatorLauncher de ce type un nouveau est ajoute.
+ * @param sl le SimulatorLauncher a ajouter
+ */
+ public void addSimulationLauncher(SimulatorLauncher sl) {
+ SimulationQueue executorQueue = new SimulationQueue(queue);
+ SimulationExecutor se = new SimulationExecutor(this, sl, executorQueue);
+ executors.put(sl, se);
+ launcherError.put(sl, new MutableInt(0));
+ }
public Collection<SimulationExecutor> getSimulationExecutors() {
return executors.values();
@@ -313,11 +327,27 @@
// l'item est fini d'etre initialise, on peut l'ajouter a la queue
// sauf si c'etait un plan independant ou se seront les sous simu
// qui seront dans la queue
- queue.add(job);
+ submit(job);
}
}
+ protected void submit(SimulationJob job) {
+ SimulatorLauncher launcher = job.getLauncher();
+ // on ajoute a la queue qui utilise le launcher defini dans le job
+ if (launcher != null) {
+ for (SimulatorLauncher l : executors.keySet()) {
+ if (launcher == l) {
+ SimulationExecutor executor = executors.get(l);
+ executor.execute(job);
+ return;
+ }
+ }
+ }
+ // dernier recours on ajoute a la queue sans launcher
+ queue.add(job);
+ }
+
/**
* Permet de resoumettre un job qui a ete pris par un thread mais qu'il
* ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
@@ -327,7 +357,7 @@
* @param item l'item a resoumettre
*/
protected void resubmit(SimulationJob job) {
- queue.add(job);
+ submit(job);
}
/**
@@ -337,7 +367,7 @@
* @param job
*/
protected void submitSubJob(SimulationJob job) {
- queue.add(job);
+ submit(job);
}
/**
@@ -377,7 +407,8 @@
e.pause();
}
// il faut bien penser a supprimer le launcher pour qu'un autre executor
- // puisse y mettre le sien
+ // puisse y mettre le sien. FIXME: est ce le bon choix si l'utilisateur avait
+ // force un launcher particulier, ne faudrait t'il pas prevenir l'utilisateur ?
job.setLauncher(null);
resubmit(job);
}
@@ -526,13 +557,6 @@
}
}
- static public void message(SimulationControl control, String message) {
- log.info(message);
- if (control != null) {
- control.setText(message);
- }
- }
-
/**
* Prepare les fichiers qui seront utils à la simulation:
* <li> scripts
@@ -573,12 +597,12 @@
// backup pour toutes les simulations, pour eviter que l'utilisateur
// ne puisse le modifier en meme temps
- message(control, _("isisfish.message.backup.database.progress"));
+ control.setText(_("isisfish.message.backup.database.progress"));
RegionStorage region = RegionStorage.getRegion(param.getRegionName());
TopiaContext tc = region.getStorage().beginTransaction();
tc.backup(regionXML, true);
tc.closeContext();
- message(control, _("isisfish.message.backup.database.finished"));
+ control.setText(_("isisfish.message.backup.database.finished"));
// copie de toutes regles a utiliser
List<Rule> rules = param.getRules();
@@ -652,7 +676,7 @@
*/
protected void compileAllFile(SimulationControl control, File directory) {
- message(control, "Scripts and rules Compilation");
+ control.setText("Scripts and rules Compilation");
long currentTime = System.nanoTime();
//
@@ -681,7 +705,7 @@
CompileHelper.compile(directory, fileToCompile, directory, null);
long time = System.nanoTime() - currentTime;
- message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
+ control.setText(_("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -19,13 +19,15 @@
package fr.ifremer.isisfish.simulator.launcher;
+import static org.codelutin.i18n.I18nf._;
+
import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Map;
-import static org.codelutin.i18n.I18nf._;
-
-import java.util.Set;
import java.util.WeakHashMap;
import javax.swing.JProgressBar;
import javax.swing.table.AbstractTableModel;
@@ -33,6 +35,11 @@
import org.apache.commons.logging.LogFactory;
/**
+ * Model de table pour suivre l'evolution des differentes simulations en cours.
+ *
+ * <p>
+ * <b>ATTENTION</b> Cette classe doit supporter les acces concurrents car
+ * plusieurs threads peuvent etre simultanement en train de faire de simulation
*
* @author poussin
* @version $Revision$
@@ -52,17 +59,85 @@
_("isisfish.queue.status"),
_("isisfish.queue.progression"),
};
+ /** columns types */
+ protected Class[] columnClass = new Class[]{
+ String.class, // id
+ String.class, // analyse plan number
+ String.class, // local, remote, batch
+ String.class, // text
+ JProgressBar.class // progress
+ };
+
+
protected SimulationService simulationService;
protected ArrayList<SimulationJob> jobs;
- /** progress bar (one for each row) */
+ protected Map<String, SimulationJob> jobIds;
+ /** progress bar (one for each row) */
protected Map<SimulationJob, JProgressBar> progress =
new WeakHashMap<SimulationJob, JProgressBar>();
- public SimulationServiceTableModel(SimulationService simulationService, Set<SimulationJob> jobs) {
+ protected AbstractJobListener jobListener;
+ protected ControlListener controlListener;
+
+ public SimulationServiceTableModel(SimulationService simulationService,
+ boolean forDoToJobs) {
this.simulationService = simulationService;
- this.jobs = new ArrayList<SimulationJob>(jobs);
+ if (forDoToJobs) {
+ jobListener = new JobToDoListener(simulationService, this);
+ } else {
+ jobListener = new JobDoneListener(simulationService, this);
+ }
+ controlListener = new ControlListener(simulationService, this);
+ simulationService.addSimulationServiceListener(jobListener);
+ jobListener.setData();
}
+
+ public void addJob(SimulationJob job) {
+ String id = job.getItem().getControl().getId();
+ log.info("************* Try do add job " + id);
+ synchronized(jobs) {
+ log.info("++++++++++Try do add job" + id);
+ if (!contains(job)) {
+ log.info("----------Add job" + id);
+ jobs.add(job);
+ jobIds.put(id, job);
+ fireTableRowsInserted(jobs.size() - 1, jobs.size() - 1);
+ }
+ }
+ }
+ public void removeJob(SimulationJob job) {
+ synchronized(jobs) {
+ int index = jobs.indexOf(job);
+ if (index >= 0) {
+ jobs.remove(index);
+ fireTableRowsDeleted(index, index);
+ }
+ }
+ }
+ public ArrayList<SimulationJob> getJobs() {
+ return jobs;
+ }
+
+ public void setJobs(ArrayList<SimulationJob> jobs) {
+ this.jobs = jobs;
+ synchronized(jobs) {
+ jobIds = new HashMap<String, SimulationJob>(jobs.size());
+ for (SimulationJob job : jobs) {
+ jobIds.put(job.getItem().getControl().getId(), job);
+ }
+ fireTableDataChanged();
+ }
+ }
+
+ public boolean contains(SimulationJob job) {
+ String id = job.getItem().getControl().getId();
+ synchronized (jobs) {
+ boolean result = jobIds.containsKey(id);
+ return result;
+ }
+ }
+
protected JProgressBar getProgressBar(SimulationJob job) {
JProgressBar result = progress.get(job);
if (result == null) {
@@ -88,6 +163,16 @@
return result;
}
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ return columnClass[columnIndex];
+ }
+
+ @Override
+ public String getColumnName(int column) {
+ return columnHeader[column];
+ }
+
public Object getValueAt(int rowIndex, int columnIndex) {
SimulationJob job = jobs.get(rowIndex);
SimulationControl control = job.getItem().getControl();
@@ -107,7 +192,11 @@
}
break;
case 2:
- result = job.getLauncher().toString();
+ if (job.getLauncher() == null) {
+ result = "not started";
+ } else {
+ result = job.getLauncher().toString();
+ }
break;
case 3:
if (control != null) {
@@ -131,4 +220,91 @@
return result;
}
+ protected interface AbstractJobListener extends SimulationServiceListener {
+ public void setData();
+ }
+
+ class JobDoneListener implements AbstractJobListener, SimulationServiceListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public JobDoneListener(SimulationService simulationService,
+ SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ setData();
+ }
+
+ public void setData() {
+ model.setJobs(new ArrayList<SimulationJob>(simulationService.getJobDones()));
+ }
+
+ public void simulationStart(SimulationJob job) {
+ // nothing to do
+ }
+
+ public void simulationStop(SimulationJob job) {
+ model.addJob(job);
+ }
+
+ }
+
+ class JobToDoListener implements AbstractJobListener, SimulationServiceListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public JobToDoListener(SimulationService simulationService,
+ SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ setData();
+ }
+
+ public void setData() {
+ model.setJobs(new ArrayList<SimulationJob>(simulationService.getJobs()));
+ for (SimulationJob job : model.getJobs()) {
+ job.getItem().getControl().addPropertyChangeListener(
+ controlListener);
+ }
+ }
+
+ public void simulationStart(SimulationJob job) {
+ model.addJob(job);
+ job.getItem().getControl().addPropertyChangeListener(
+ model.controlListener);
+ }
+
+ public void simulationStop(SimulationJob job) {
+ model.removeJob(job);
+ job.getItem().getControl().removePropertyChangeListener(
+ model.controlListener);
+ }
+
+ }
+
+ class ControlListener implements PropertyChangeListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public ControlListener(SimulationService simulationService, SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ SimulationControl control = (SimulationControl)evt.getSource();
+ String id = control.getId();
+ synchronized(model.jobs) {
+ SimulationJob jobs = model.jobIds.get(id);
+ int index = model.getJobs().indexOf(id);
+ if (index >= 0) {
+ fireTableRowsUpdated(index, index);
+ }
+ }
+ }
+
+ }
}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
===================================================================
(Binary files differ)
Property changes on: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,118 @@
+<h1>Launcher</h1>
+
+<h2>To do</h2>
+<li> voir pourquoi l'interface de visu des simulations en cours ne se
+rafraichi pas
+<li> supprimer le SimulationItem et tout mettre dans SimulationJob (reflechir
+si au niveau design c'est une bonne chose
+<li> faire une interface graphique de monitoring des Executors (nombre de
+threads actif, nombre de simulations terminer, nombre de simulation
+explicitement pour cet executor, afficher l'etat pause/resume/error et
+permettre de modifier l'etat. Avec le nombre
+de jobs dans la queue pour tous les Executors. Permettre de soumettre toutes
+les simulations d'un executor sur un autre executor. (par exemple si un
+executor est mis en pause a cause des erreurs, cela permet a l'utilisateur
+d'utiliser un autre executor sans devoir annuler/relancer toutes ces
+simulations.
+<li> ajouter dans l'interface de vision des simulations en cours, de
+modifier le launcher des simulations non lancee.
+<li> tester les differents launcher
+<li> trouver une solution pour que les jobs soumis pour un launcher
+particulier soit bien executer par l'executor de ce launcher. (penser au
+changement de priority avec resoumission si ce choix est pris, c-a-d que le
+job s'appercoit qu'il va etre utilise par le mauvais Executor, il ne fait
+pas la simu et la resoumet a queue en augmentant la priority pour que le job
+qui devait etre fait maintenant ne le soit pas dans 10ans).
+Une autre possibilite d'implantation est que chaque executor est une queue
+propre, et lorsque celle-ci est vide il vont piocher dans la queue commune.
+Pour cela, simplement implanter un nouveau type de queue qui permette
+d'avoir une queue mere. Lors de la soumission au SimulationService soit le
+job est directement soumis au bon executor soit ajoute a la queue general.
+(ajouter un bool qui permette lors de report d'erreur de resoumettre un job
+avec launcher fixe par l'utilisateur sur la queue general ou non.
+
+<h2>Architecture global</h2>
+<img src="doc-files/isis-simulation.png" alt="archi"/>
+
+<h2>Principe general</h2>
+<p>
+Les simulations sont soumises au {@link SimulationService} via sa methode
+submit. Un objet {@link SimulationJob} est alors cree et ajoute a la liste
+des simulations presentes ({@link SimulationService#getJobs}). Si la
+simulation est une simple simulation ou une simulation avec plan d'analyse
+dependant, elle est alors directement ajoutee a la queue de simulation
+(simulation a faire). Si
+la simulation utilise un plan d'analyse independant, un thread est
+specialement utilise pour generer toutes les simulations du plan, celles-ci
+sont alors ajoutee a la queue, mais n'apparaitront dans la liste des
+simulations qu'au moment ou un thread de simulation executera reellement le
+job.
+</p>
+
+<p>
+Lorsqu'un thread recupere un job dans la queue, il leve un event {@link
+SimulationListener#start}, la simulation est alors ajoutee a la liste des
+simulations visibles si elle ne l'etait pas encore.
+</p>
+
+<p>
+Une fois terminees, les simulations finissent dans la liste des simulations
+terminees.
+</p>
+
+<p>
+Le {@link SimulationService#autoLaunch} permet d'indique si le service est
+actif ou non. S'il n'est pas actif, il accepte les simulations mais ne les
+execute pas (elles sont en attente). S'il est actif alors les differents
+{@link SimulationExecutor}) prenent les jobs de la queue pour faire les
+simulations.
+</p>
+
+<h2>SimulationExecutor</h2>
+<p>
+Lors de sa creation le {@link SimulationService} a initialise different
+{@link SimulationExecutor} en fonction de la configuration. Ces {@link
+SimulationExecutor} sont responsable de l'execution des simulations de la
+queue. Chaque {@link SimulationExecutor} a un {@link SimulatorLauncher}
+qu'il utilise si la simulation n'a pas encore de {@link SimulatorLauncher}
+d'assigne.
+</p>
+<p>
+Un {@link SimulationExecutor} peut etre mis en pause puis relance. Lorsqu'il
+est en pause, il termine les simulations en cours mais n'en reprend pas de
+nouvelle. Cela permet d'arrete un {@link SimulationExecutor} particulier
+sans devoir arreter tout le service de simulation.
+</p>
+<p>Si un {@link SimulationExecutor} prend un job ayant deja un {@link
+SimulatorLauncher} d'assigne, il utilise alors ce launcher plutot que le
+sien. Ce choix est derangeant lorsque l'on souhaite utilise un nombre de
+thread limite pour un launcher particulier, mais il est le plus raisonnable
+car l'autre possibilite est que le job soit resoumis au {@link
+SimulationService} jusqu'a ce que le bon {@link SimulationExecutor} le
+prenne pour l'executer. On risque dans ce cas d'arriver a une forte
+consommation CPU si le seul {@link SimulationExecutor} disponible ne gere
+pas les jobs en queue.
+</p>
+
+<h2>SimulationJob</h2>
+
+<p>
+Le simulation Job encapsule l'appel pour que les implantantations des {@link
+SimulatorLauncher} soit la plus simple possible. Il gere les simulations
+avec plan dependant, les exports depandes par l'utilisateur, ainsi que
+l'effacement des simulations si seul les exports interessait l'utilisateur.
+</p>
+
+<p>
+Si le job n'arrive pas a utilise le {@link SimulatorLauncher} il en notifie
+le {@link SimulationService} qui resoumet le job dans la queue pour qu'un
+autre {@link SimulationExecutor} prenne ce job. Si trop d'erreurs sont
+notifiees pour un meme {@link SimulatorLauncher}, le {@link
+SimulatorService} prend alors la decision d'arreter l'executor associe.
+</p>
+<p>
+Pour les simulations ou l'utilisateur avait fixe un {@link
+SimulatorLauncher} particulier en cas de notification d'erreur au {@link
+SimulationService} ce {@link SimulatorLauncher} n'est plus pris en compte et
+n'importe quel {@link SimulatorLauncher} peut faire cette simulation.
+</p>
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -6,8 +6,31 @@
package fr.ifremer.isisfish.ui.simulator;
+import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTableModel;
+import java.awt.Component;
+import javax.swing.GroupLayout;
+import javax.swing.JProgressBar;
+import javax.swing.JTable;
+import javax.swing.LayoutStyle;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.TableCellRenderer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.log.UserLog;
+import org.jdesktop.beansbinding.AutoBinding;
+import org.jdesktop.beansbinding.BeanProperty;
+import org.jdesktop.beansbinding.Binding;
+import org.jdesktop.beansbinding.BindingGroup;
+import org.jdesktop.beansbinding.Bindings;
+import org.jdesktop.beansbinding.ELProperty;
/**
*
@@ -15,19 +38,60 @@
*/
public class Queue extends javax.swing.JPanel {
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationServiceTableModel.class);
+
+ public class JProgressBarTableCellRenderer implements TableCellRenderer {
+ public Component getTableCellRendererComponent(JTable table,
+ Object value, boolean isSelected, boolean hasFocus,
+ int row, int column) {
+ return (JProgressBar) value;
+ }
+ }// JProgressBarTableCellRenderer
+
/** Creates new form Queue */
public Queue() {
initComponents();
SimulationService ss = SimulationService.getService();
- modelJobs = new SimulationServiceTableModel(ss, ss.getJobs());
- modelJobDones = new SimulationServiceTableModel(ss, ss.getJobDones());
+
+ modelJobs = new SimulationServiceTableModel(ss, true);
+ modelJobDones = new SimulationServiceTableModel(ss, false);
+
+ tableJobs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ tableJobs.setDefaultRenderer(JProgressBar.class,
+ new JProgressBarTableCellRenderer());
+ tableJobDones.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ tableJobDones.setDefaultRenderer(JProgressBar.class,
+ new JProgressBarTableCellRenderer());
+
tableJobs.setModel(modelJobs);
tableJobDones.setModel(modelJobDones);
}
+ private void stopSimulation(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ SimulationJob job = modelJobs.getJob(i);
+ job.stop();
+ log.info(_("User stop simulation %s", job.getItem().getControl().getId()));
+ }
+ }
+
+ private void viewLog(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ SimulationJob job = modelJobs.getJob(i);
+ String id = job.getItem().getControl().getId();
+ try {
+ SimulationLoggerUtil.showSimulationLogConsole(id);
+ } catch (Exception eee) {
+ UserLog.error(_("Can't open log for %s", id), eee);
+ }
+ }
+ }
private void initComponents() {
- bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
+ bindingGroup = new BindingGroup();
tableJobsScroll = new javax.swing.JScrollPane();
tableJobs = new javax.swing.JTable();
@@ -43,12 +107,18 @@
autoLaunchButton.setText("Auto Launch");
- org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jButton1, org.jdesktop.beansbinding.ELProperty.create("${action.enabled}"), autoLaunchButton, org.jdesktop.beansbinding.BeanProperty.create("selected"));
+ Binding binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ_WRITE,
+ SimulationService.getService(), ELProperty.create("${autoLaunch}"),
+ autoLaunchButton, BeanProperty.create("selected"));
bindingGroup.addBinding(binding);
jButton1.setText("Stop simulation");
- binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobs, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton1, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ,
+ tableJobs, ELProperty.create("${selectedElement != null}"),
+ jButton1, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
@@ -61,7 +131,10 @@
jButton2.setText("View log");
- binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobDones, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton2, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ,
+ tableJobDones, ELProperty.create("${selectedElement != null}"),
+ jButton2, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
@@ -72,33 +145,33 @@
}
});
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(autoLaunchButton)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2))
- .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
- .addComponent(tableJobsScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
+ .addComponent(tableJobDonesScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
+ .addComponent(tableJobsScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addComponent(tableJobsScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(tableJobsScroll, GroupLayout.PREFERRED_SIZE, 140, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(tableJobDonesScroll, GroupLayout.PREFERRED_SIZE, 140, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(autoLaunchButton)
.addComponent(jButton1)
.addComponent(jButton2))
@@ -108,17 +181,6 @@
bindingGroup.bind();
}
- private void stopSimulation(java.awt.event.ActionEvent evt) {
- int i = tableJobs.getSelectedRow();
- if (i >= 0) {
- modelJobs.getJob(i).stop();
- }
- }
-
- private void viewLog(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
-
protected SimulationServiceTableModel modelJobs;
protected SimulationServiceTableModel modelJobDones;
protected javax.swing.JToggleButton autoLaunchButton;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -62,6 +62,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.codelutin.log.UserLog;
/**
@@ -76,8 +77,8 @@
static public Object opened(Context uiContext, AbstractFrame frame,
TopiaContext isisContext, JTabbedPane tabs,
- JButton start, JButton remove,JButton showLog,
- JTable table,JTable tableDone,
+// JButton start, JButton remove,JButton showLog,
+// JTable table,JTable tableDone,
JButton removeAnalysePlan,
JList listAnalysePlan,
JButton removeRule,
@@ -124,14 +125,14 @@
tabs.setEnabledAt(1, false); // disable prescript tab
tabs.setEnabledAt(2, false); // disable analyse plan tab
- // add simulation queue button listeners
- SimulatorListeners.initSimulQueueButtonsListener(
- start,
- remove,
- showLog,
- table,
- tableDone
- );
+// // add simulation queue button listeners
+// SimulatorListeners.initSimulQueueButtonsListener(
+// start,
+// remove,
+// showLog,
+// table,
+// tableDone
+// );
// add rule around button listeners
SimulatorListeners.initButtonRemoveIfItemSelected(removeRule, listRule);
@@ -266,17 +267,14 @@
if (simulId == null || "".equals(simulId) ||
SimulationStorage.localyExists(simulId) ||
SimulationService.getService().exists(simulId)) {
- log.error("Can't start simulation, bad id: " + simulId);
- throw new SimulationException(_("isisfish.error.start"));
- }
- SimulationParameter p = param.copy();
+ UserLog.error(_("Can't start simulation, bad id: %s", simulId));
+ } else {
+ SimulationParameter p = param.copy();
- SimulationService.getService().submit(simulId, p, 0);
-
- selectTab(tabs, true, 6);
- //TODO Voir si cela fonctionne
- frame.refreshView("buttonSimulQueueShowLog");
- frame.refreshView("buttonSimulQueueRemove");
+ SimulationService.getService().submit(simulId, p, 0);
+
+ selectTab(tabs, true, 6);
+ }
} catch (Exception eee) {
log.error("Can't start simulation", eee);
return new OutputView("Error.xml", "error", eee.getMessage());
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -44,44 +44,44 @@
}
- public static void initSimulQueueButtonsListener(
- final JButton start, final JButton remove, final JButton showLog,
- final JTable table, final JTable tableDone) {
+// public static void initSimulQueueButtonsListener(
+// final JButton start, final JButton remove, final JButton showLog,
+// final JTable table, final JTable tableDone) {
+//
+// SimulationService.getService().addPropertyChangeListener("autoLaunch",
+// new PropertyChangeListener() {
+// public void propertyChange(PropertyChangeEvent evt) {
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// }
+// });
+//
+// table.getModel().addTableModelListener(new TableModelListener() {
+// public void tableChanged(TableModelEvent e) {
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// }
+// });
+//
+// table.getSelectionModel().addListSelectionListener(
+// new ListSelectionListener() {
+// public void valueChanged(ListSelectionEvent e) {
+// remove.setEnabled(isSimulRemoveButtonEnabled(table));
+// }
+// });
+//
+// tableDone.getSelectionModel().addListSelectionListener(
+// new ListSelectionListener() {
+// public void valueChanged(ListSelectionEvent e) {
+// showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
+// }
+// }
+// );
+//
+// // apply it now
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// remove.setEnabled(isSimulRemoveButtonEnabled(table));
+// showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
+// }
- SimulationService.getService().addPropertyChangeListener("autoLaunch",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- start.setEnabled(isSimulStartButtonEnabled(table));
- }
- });
-
- table.getModel().addTableModelListener(new TableModelListener() {
- public void tableChanged(TableModelEvent e) {
- start.setEnabled(isSimulStartButtonEnabled(table));
- }
- });
-
- table.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- remove.setEnabled(isSimulRemoveButtonEnabled(table));
- }
- });
-
- tableDone.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
- }
- }
- );
-
- // apply it now
- start.setEnabled(isSimulStartButtonEnabled(table));
- remove.setEnabled(isSimulRemoveButtonEnabled(table));
- showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
- }
-
public static void initButtonRemoveIfItemSelected(
final JButton button, final JList list) {
if (button == null || list == null) {
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,54 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.widget;
+
+
+import fr.ifremer.isisfish.IsisFish;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.Resource;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class VCSConnectionState extends JLabel {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(VCSConnectionState.class);
+
+ public VCSConnectionState() {
+ Icon icon;
+ boolean connected = IsisFish.vcs.isConnected();
+ if (connected) {
+ icon = Resource.getIcon("images/stock_connect.png");
+ } else {
+ icon = Resource.getIcon("images/stock_disconnect.png");
+ }
+ setIcon(icon);
+ }
+
+}
1
0
r1310 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/actions java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/simulator java/fr/ifremer/isisfish/simulator/launcher java/fr/ifremer/isisfish/ui/simulator uimodel/fr/ifremer/isisfish/ui uimodel/fr/ifremer/isisfish/ui/simulator
by bpoussin@users.labs.libre-entreprise.org 22 Aug '08
by bpoussin@users.labs.libre-entreprise.org 22 Aug '08
22 Aug '08
Author: bpoussin
Date: 2008-08-22 22:46:00 +0000 (Fri, 22 Aug 2008)
New Revision: 1310
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml
Log:
- tout reecrit le SimulationManager qui se nome maintenent SimulationService
Il permet facilement de pluger de nouvelle facon de simuler (obligatoire pour
caparmor)
tout ca n'est pas encore tester, mais ca compile
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -27,8 +27,9 @@
import fr.ifremer.isisfish.actions.SimulationAction;
import fr.ifremer.isisfish.actions.VCSAction;
import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.vcs.VCS;
-import fr.ifremer.isisfish.vcs.VCSNone;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
@@ -572,7 +573,7 @@
SIMULATOR_CLASSFILE("simulator.classfile", _("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
/** prevu pour l'architecture de lancement en plugin: local, isis-server, caparmor, ... */
- SIMULATOR_LAUNCHER("simulator.launcher", _("isisfish.config.main.localSimulator.description"), "local"),
+ SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localDefault", _("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
SIMULATOR_SERVER("simulation.server", _("isisfish.config.main.simulationServer.description"), "http://simulateur.ifremer.fr:9090"),
/** le login a utiliser pour les launcher distant, le type du launcher est ajouter a la cle (car 1 login par launcher) */
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -31,7 +31,6 @@
package fr.ifremer.isisfish;
-import com.sun.tools.internal.xjc.generator.util.ExistingBlockReference;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
@@ -40,7 +39,7 @@
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.swix.LayoutConverter;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.types.Month;
@@ -55,7 +54,6 @@
import fr.ifremer.isisfish.vcs.VCSActionEvent;
import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
-import fr.ifremer.isisfish.vcs.VCSNone;
import fr.ifremer.isisfish.vcs.VetoableActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
@@ -78,6 +76,7 @@
import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
import org.codelutin.util.VersionNumber;
+import org.swixml.SwingEngine;
import static javax.swing.JOptionPane.showOptionDialog;
@@ -369,7 +368,7 @@
*/
static public void launchUI() {
// init simulater manager
- SimulationManager.getInstance();
+ SimulationService.getService();
if (config.isLaunchUI()) {
// init IsisTray
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -53,9 +53,9 @@
import org.jdesktop.jdic.tray.TrayIcon;
import fr.ifremer.isisfish.simulator.SimulationControl;
-import fr.ifremer.isisfish.simulator.SimulationManager;
-import fr.ifremer.isisfish.simulator.SimulationQueueEvent;
-import fr.ifremer.isisfish.simulator.SimulationQueueListener;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
/**
@@ -63,7 +63,7 @@
*
*/
-public abstract class IsisTray implements SimulationQueueListener, PropertyChangeListener {
+public abstract class IsisTray implements SimulationServiceListener, PropertyChangeListener {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(IsisTray.class);
@@ -95,35 +95,25 @@
}
log.info("Use System tray: " + instance.getClass().getName());
instance.setToolTip(_(NO_SIMULATION_TEXT));
- SimulationManager.getInstance().addSimulationQueueListener(instance);
+ SimulationService.getService().addSimulationServiceListener(instance);
}
return instance;
}
/* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- }
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationWillBeRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- }
- /* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStart(SimulationQueueEvent e) {
- SimulationControl control = SimulationManager.getInstance().getControl(e.getId());
+ public void simulationStart(SimulationJob job) {
+ SimulationControl control = job.getItem().getControl();
control.addPropertyChangeListener(this);
- getInstance().setToolTip(_(SIMULATION_TEXT, e.getId(), control.getProgress(), control.getProgressMax()));
+ getInstance().setToolTip(_(SIMULATION_TEXT, control.getId(), control.getProgress(), control.getProgressMax()));
getInstance().setImage(TRAY_IMAGE_START);
}
/* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStop(SimulationQueueEvent e) {
- SimulationControl control = SimulationManager.getInstance().getControl(e.getId());
+ public void simulationStop(SimulationJob job) {
+ SimulationControl control = job.getItem().getControl();
control.removePropertyChangeListener(this);
getInstance().setToolTip(_(NO_SIMULATION_TEXT));
getInstance().setImage(TRAY_IMAGE_STOP);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -24,8 +24,11 @@
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.simulator.SimulationHelper;
+import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
@@ -72,7 +75,7 @@
}
}
- SimulationHelper.simulate(simulId, params, false);
+ SimulationService.getService().submit(simulId, params, 0);
}
/**
@@ -81,32 +84,17 @@
* @param zip Zip de la simulation
* @param parameterFile parametre optionnel pour la simulation
*/
- public static void simulateWithSimulation(String simulId, File parameterFile, File simulationZip) throws Exception {
- SimulationParameter params = null;
- if (parameterFile != null && parameterFile.exists()) {
- Properties props = new Properties();
- FileInputStream inStream = new FileInputStream(parameterFile);
- props.load(inStream);
- inStream.close();
+ public static void simulateWithSimulation(String simulId, File simulationZip) throws Exception {
+ log.info("id:" + simulId + ", zip:" + simulationZip);
- params = new SimulationParameter();
- params.fromProperties(props);
- }
- log.info("id:" + simulId + ", zip:" + simulationZip + (params!=null?" with parameters":""));
-
- // import de cette simulation
String name = simulId + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
- // import de la simulation avec un autre nom
- SimulationStorage sim = SimulationStorage.importAndRenameZip(simulationZip, name);
- if (params != null) {
- sim.setParameter(params);
- }
+ SimulationControl control = new SimulationControl(name);
// lancement de la simulation
- SimulationHelper.simulate(null, sim);
+ SimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
- sim.getStorage().closeContext();
-
+ simulation.getStorage().closeContext();
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -78,6 +78,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulationStorage.class);
+ /** cache des simulation storage */
@SuppressWarnings("unchecked")
static protected Map<String, SimulationStorage> simulations =
(Map<String, SimulationStorage>) new ReferenceMap();
@@ -548,15 +549,39 @@
* @throws TopiaException si problème lors de la création du contexte
*/
public static SimulationStorage importAndRenameZip(File file, String newName) throws IOException, TopiaException {
+ SimulationStorage result = importAndRenameZip(getSimulationDirectory(), file, newName);
+ // put result in cache
+ simulations.put(result.getName(), result);
+ return result;
+ }
+
+ /**
+ * import zipped simulation in specific directory, result is not put in cache
+ *
+ * @param directory where we want new simulation storage
+ * @param file zipped region file
+ * @param newName new name for the imported simulation
+ * @return region storage or null
+ * @throws IOException si problème IO lors de la lecture du zip
+ * @throws TopiaException si problème lors de la création du contexte
+ */
+ public static SimulationStorage importAndRenameZip(File directory, File file, String newName) throws IOException, TopiaException {
+ if (!directory.exists()) {
+ directory.mkdirs();
+ }
+ if(!directory.isDirectory()) {
+ throw new IllegalArgumentException(_("directory %s must be a directory",
+ directory.getAbsolutePath()));
+ }
String renameFrom = null;
String renameTo = null;
if (newName != null) {
renameFrom = "^.*?/(.*)$";
renameTo = newName + "/$1";
}
- String lastEntry = ZipUtil.uncompressAndRename(file, getSimulationDirectory(), renameFrom, renameTo);
+ String lastEntry = ZipUtil.uncompressAndRename(file, directory, renameFrom, renameTo);
String name = lastEntry.substring(0, lastEntry.indexOf("/"));
- SimulationStorage result = SimulationStorage.getSimulation(name);
+ SimulationStorage result = new SimulationStorage(directory, name, null);
if (result != null) {
File data = result.getDataBackupFile();
if (file.exists()) {
@@ -568,7 +593,7 @@
}
return result;
}
-
+
/**
* Extract the region of a given simulation in a
* @param regionName the name of the region to export
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,454 +0,0 @@
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-import org.codelutin.log.LutinLog;
-import org.codelutin.log.LutinLogFactory;
-
-import javax.swing.JComponent;
-import javax.swing.JProgressBar;
-import javax.swing.JTable;
-import javax.swing.event.EventListenerList;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableModel;
-import java.awt.Component;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstract model for a set of simulation (should not be named QueueModel but SetModel).
- * <p/>
- * This layer implememnts TableModel and PropertyChangeListener logic.
- * <p/>
- * Sub class should normally just implements SimulationQueueListener interface
- * (and the two abstract methods to obtain data from {@link #queue}
- *
- * @author chemit
- */
-public abstract class AbstractSimulationQueueModel extends JComponent
- implements TableModel, SimulationQueueListener, PropertyChangeListener {
-
- /** @return list of ids of simulations contained in this model */
- protected abstract List<String> getSimulationIds();
-
- /** @return map of QueueItems (indexed by id) */
- protected abstract Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap();
-
- /** to use log facility, just put in your code: log.info("..."); */
- protected static LutinLog log = LutinLogFactory.getLutinLog(AbstractSimulationQueueModel.class);
-
- /** List of listeners */
- protected EventListenerList listenerList = new EventListenerList();
-
- /** the simulator manager */
- protected SimulationManager queue;
-
- /** header names */
- protected String[] header = new String[]{_("isisfish.queue.id"), _("isisfish.queue.plan"), _("isisfish.queue.name"), _("isisfish.queue.local"), _("isisfish.queue.status"), _("isisfish.queue.progression")};
-
- /** columns types */
- protected Class[] columnClass = new Class[]{
- String.class, // id
- String.class, // analyse plan number
- Boolean.class, // in queue
- String.class, // local, remote, batch
- String.class, // text
- JProgressBar.class // progress
- };
-
- /** progress bar (one for each row) */
- protected Map<String, JProgressBar> progress = new HashMap<String, JProgressBar>();
-
- protected AbstractSimulationQueueModel() {
- this(SimulationManager.getInstance());
- }
-
- protected AbstractSimulationQueueModel(SimulationManager queue) {
- this.queue = queue;
- if (queue == null) {
- this.queue = SimulationManager.getInstance();
- }
- this.queue.addSimulationQueueListener(this);
-
- // add this model as listener on all already done simulations
- for (String id : this.getSimulationIds()) {
- SimulationControl control = getSimulationControl(id);
- if (control != null) {
- control.addPropertyChangeListener(this);
- }
- }
- }
-
- /** @param queue The queue to set. */
- public void setQueue(SimulationManager queue) {
- this.queue = queue;
- fireTableDataChanged();
- }
-
- /** @return the manager used */
- protected SimulationManager getQueue() {
- return queue;
- }
-
- /**
- * @param index rowIndex to check
- * @return <code>true</code> if this is a valid rowIndex,
- * <code>false</code> otherwise
- */
- protected boolean isRowIndexValid(int index) {
- return index > -1 && index < getRowCount();
- }
-
- /**
- * @param id id of the simulation to use
- * @return the rowIndex of the given simulation,
- */
- protected int getSimulationIndex(String id) {
- return getSimulationIds().indexOf(id);
- }
-
- /**
- * @param rowIndex the rowIndex of the simulation in table
- * @return the id of the simulation given
- */
- protected String getSimulationId(int rowIndex) {
- if (rowIndex < 0 || rowIndex >= getSimulationIds().size()) return "";
- return getSimulationIds().get(rowIndex);
- }
-
- /**
- * @param id id of the QueueItem to find
- * @return the queueItem found via his id
- */
- protected SimulationManager.SimulationItem getItem(String id) {
- return getQueueItemsAsMap().get(id);
- }
-
- /**
- * @param rowIndex rowIndex of the QueueItem to find
- * @return the queueItem found via his rowIndex
- */
- protected SimulationManager.SimulationItem getItem(int rowIndex) {
- String id = getSimulationId(rowIndex);
- return id == null ? null : getQueueItemsAsMap().get(id);
- }
-
- /**
- * @param id id of simulation to use
- * @return the SimulationControl of the given simulation
- */
- protected SimulationControl getSimulationControl(String id) {
- SimulationControl result = queue.getControl(id);
- if (result == null) {
- log.user(_("isisfish.error.invalid.simulation.id", id, getSimulationIds()));
- }
- return result;
- }
-
- public SimulationControl getSimulationControl(int rowIndex) {
- String id = getSimulationId(rowIndex);
- SimulationControl result = getSimulationControl(id);
- return result;
- }
- /**
- * @param id id of the simulation used
- * @return the SimulationParameter associated to the simulation given
- */
- protected SimulationParameter getSimulationParameter(String id) {
- SimulationParameter result = null;
- SimulationManager.SimulationItem item = getItem(id);
- if (item != null) {
- result = item.param;
- } else {
- log.user(_("isisfish.error.invalid.simulation.index.availables", id, getSimulationIds()));
- }
- return result;
- }
-
- protected JProgressBar getProgressBar(String id) {
- JProgressBar result = progress.get(id);
- if (result == null) {
- result = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
- result.setStringPainted(true);
- progress.put(id, result);
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent evt) {
- SimulationControl control = (SimulationControl) evt.getSource();
- int row = getSimulationIndex(control.getId());
- fireTableRowsUpdated(row, row);
- }
-
- /////////////////////////////////////////////
- // SimulationQueueListener implementation
- /////////////////////////////////////////////
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStart(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStop(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /////////////////////////////////////////////
- // TableModel implementation
- /////////////////////////////////////////////
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getRowCount()
- */
-
- public int getRowCount() {
- return getSimulationIds().size();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- public int getColumnCount() {
- return header.length;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnName(int)
- */
- public String getColumnName(int column) {
- return header[column];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnClass(int)
- */
- public Class<?> getColumnClass(int columnIndex) {
- return columnClass[columnIndex];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return false;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- public Object getValueAt(int rowIndex, int columnIndex) {
- if (rowIndex >= getSimulationIds().size()) {
- return "error";
- }
-
- String id = getSimulationId(rowIndex);
-
- SimulationControl control = getSimulationControl(id);
-
- SimulationParameter param = getSimulationParameter(id);
-
- Object result = "";
-
- switch (columnIndex) {
- case 0:
- result = id;
- break;
- case 1:
- int number = param.getAnalysePlanNumber();
- if (number >= 0) {
- result = number;
- } else {
- result = _("isisfish.common.no");
- }
- break;
- case 2:
- result = param.getInQueue();
- break;
- case 3:
- if (param.getLocal()) {
- if (param.isSubProcess()) {
- result = "batch";
- } else {
- result = "local";
- }
- } else {
- result = "remote";
- }
- break;
- case 4:
- if (control != null) {
- if (control.isStopSimulationRequest()) {
- result = _("isisfish.launch.stop");
- } else {
- result = control.getText();
- }
- }
- break;
- case 5:
- JProgressBar pb = getProgressBar(id);
- if (control != null) {
- pb.setMaximum(control.getProgressMax());
- pb.setValue(control.getProgress());
- pb.setString(control.date.getMonth() + "/" + control.date.getYear());
- }
- result = pb;
- break;
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
- */
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- // table is not editable
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#addTableModelListener(javax.swing.event.TableModelListener)
- */
- public void addTableModelListener(TableModelListener l) {
- listenerList.add(TableModelListener.class, l);
- if (l instanceof JTable) {
- ((JTable) l).setDefaultRenderer(JProgressBar.class, new JProgressBarTableCellRenderer());
- }
-
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#removeTableModelListener(javax.swing.event.TableModelListener)
- */
- public void removeTableModelListener(TableModelListener l) {
- listenerList.remove(TableModelListener.class, l);
- }
-
- /**
- * Notifies all listeners that all cell values in the table's
- * rows may have changed. The number of rows may also have changed
- * and the <code>JTable</code> should redraw the
- * table from scratch. The structure of the table (as in the order of the
- * columns) is assumed to be the same.
- *
- * @see TableModelEvent
- * @see EventListenerList
- * @see JTable#tableChanged(TableModelEvent)
- */
- public void fireTableDataChanged() {
- fireTableChanged(new TableModelEvent(this));
- }
-
- /**
- * Notifies all listeners that the table's structure has changed.
- * The number of columns in the table, and the names and types of
- * the new columns may be different from the previous state.
- * If the <code>JTable</code> receives this event and its
- * <code>autoCreateColumnsFromModel</code>
- * flag is set it discards any table columns that it had and reallocates
- * default columns in the order they appear in the model. This is the
- * same as calling <code>setModel(TableModel)</code> on the
- * <code>JTable</code>.
- *
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableStructureChanged() {
- fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been inserted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsInserted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been updated.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsUpdated(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.UPDATE));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been deleted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsDeleted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE));
- }
-
- /**
- * Notifies all listeners that the value of the cell at
- * <code>[row, column]</code> has been updated.
- *
- * @param row row of cell which has been updated
- * @param column column of cell which has been updated
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableCellUpdated(int row, int column) {
- fireTableChanged(new TableModelEvent(this, row, row, column));
- }
-
- /**
- * Forwards the given notification event to all
- * <code>TableModelListeners</code> that registered
- * themselves as listeners for this table model.
- *
- * @param e the event to be forwarded
- * @see #addTableModelListener
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableChanged(TableModelEvent e) {
- // Guaranteed to return a non-null array
- Object[] listeners = listenerList.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event
- for (int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == TableModelListener.class) {
- ((TableModelListener) listeners[i + 1]).tableChanged(e);
- }
- }
- }
-
- public class JProgressBarTableCellRenderer implements TableCellRenderer {
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- return (JProgressBar) value;
- }
- }// JProgressBarTableCellRenderer
-}// AbstractSimulationQueueModel
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,171 +0,0 @@
-/* *##%
- * Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * PlanManager.java
- *
- * Created: 5 janv. 07 12:39:28
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Iterator;
-
-import bsh.Interpreter;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-
-/**
- * Permet de generer les parametres des simulations utilisant une plan d'analyse
- *
- * La methode hasNext appelle toutes les methodes beforeSimulation des plans
- * d'analyse. Apres une simulation il faut aussi appeler setLastSimulation
- * pour que les méthodes afterSimulation des plans d'analyses soit executes.
- *
- * Si une des methodes afterSimulation retourne false alors il n'y aura
- * pas de prochaine simulation.
- *
- * @author poussin
- */
-public class PlanGenerator implements Iterable<SimulationStorage>, Iterator<SimulationStorage> {
-
- protected String id = null;
- protected SimulationControl control = null;
- protected SimulationParameter param = null;
- protected File zip = null;
- protected AnalysePlanContext planContext = null;
- protected SimulationStorage nextSimulation = null;
- protected int lastSimulationNumber = -1;
- /** contient la valeur retourne par les methodes afterSimulation de tous les plans */
- protected boolean doNext = true;
-
- public PlanGenerator(String id, SimulationControl control, SimulationParameter param) {
- this.id = id;
- this.control = control;
- this.param = param;
- this.planContext = new AnalysePlanContext(id, param);
- try {
- // appel de init sur chaque plan
- for (AnalysePlan plan : param.getAnalysePlans()) {
- plan.init(planContext);
- }
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.preplan.script"), eee);
- }
- }
-
- /**
- * @param zip The zip to set.
- */
- public void setZip(File zip) {
- this.zip = zip;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Iterable#iterator()
- */
- public Iterator<SimulationStorage> iterator() {
- return this;
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext() {
- try {
- // if user request stop simulation, stop all futur planned simulation
- // and if last doNext is false not do next simulation
- boolean result = !control.isStopSimulationRequest() && doNext;
- if (result) {
- // si deja creer on ne le refet pas
- if (nextSimulation == null) {
- // Prepration de la simulation a faire
- // create next id simulation
- int number = param.getAnalysePlanNumber() + 1;
- String simId = id + "_" + number;
- param.setAnalysePlanNumber(number);
-
- nextSimulation = SimulationStorage.importAndRenameZip(zip, simId);
- nextSimulation.getParameter().setAnalysePlanNumber(number);
-
- // appel de tous les plans pour modifier la simulation
- for (AnalysePlan plan : param.getAnalysePlans()) {
- result = result && plan.beforeSimulation(planContext, nextSimulation);
- if (!result) {
- // delete created simulation, that don't be done
- nextSimulation.delete(false);
- nextSimulation = null;
- break;
- }
- }
- doNext = result;
- }
- }
- return result;
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evalute.plan.script"), eee);
- }
- }
-
- public void setLastSimulation(SimulationStorage lastSimulation) {
- try {
- doNext = true;
- boolean result = true;
-
- // appel de tous les plans pour modifier la simulation
- for (AnalysePlan plan : param.getAnalysePlans()) {
- result = plan.afterSimulation(planContext, lastSimulation);
- doNext = doNext && result;
- }
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.plan.script"), eee);
- }
-
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#next()
- */
- public SimulationStorage next() {
- hasNext(); // pour etre sur qu'il a ete appele au moins une fois
- SimulationStorage result = nextSimulation;
- nextSimulation = null;
- return result;
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#remove()
- */
- public void remove() {
- throw new UnsupportedOperationException();
- }
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,81 +0,0 @@
-/**
-* SimulationCheckpointThread.java
-*
-* Created: Wed Aug 28 2002
-*
-* @author <poussin at codelutin.com>
-* Copyright Code Lutin
-* @version $Revision: 1187 $
-*
-* Mise a jour: $Date: 2008-03-19 01:26:10 +0100 (mer, 19 mar 2008) $
-* par : $Author: tchemit $
-*/
-
-package fr.ifremer.isisfish.simulator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-import java.io.InputStream;
-
-/**
- * This thread is responsable to synchronized SimulationControl used localy with
- * remote simulation control for remote simulation.
- *
- * This thread dead when {@link SimulationControl#isRunning()} is false
- *
- * @author poussin
- */
-public class SimulationCheckpointExternalProcessThread extends Thread { // SimulationCheckpointThread
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(SimulationCheckpointExternalProcessThread.class);
-
- protected SimulationControl control = null;
- protected SimulationStorage simulation = null;
- protected Process process = null;
- // on l'appel plutot out que in, car c le output du process lance
- protected InputStream out = null;
-
- public SimulationCheckpointExternalProcessThread(SimulationControl control,
- SimulationStorage simulation, Process process) {
- this.control = control;
- this.simulation = simulation;
- this.process = process;
- out = process.getInputStream();
-
- }
-
- public void run(){
- int sleepTime = 2000;
- int error = 0;
- while(true){
- try{
- out.skip(out.available());
- Thread.sleep(sleepTime);
- // on ne lit pas le stop, car le stop ne peut-etre appeler
- // que par l'utilisateur qui est de ce cote de la machine
- simulation.readControl(control, "stop");
-
- if (control.isStopSimulationRequest()) {
- // FIXME, un destroy du process est peut-etre un peu violent ?
- process.destroy();
- // passe artificiellement le control a fini
- control.stopSimulation();
- }
- if (!control.isRunning()) {
- return;
- }
- } catch (Exception eee) {
- log.debug("Can't update control for " + control.getId(), eee);
- }
- }
-
- }
-
-} // SimulationCheckpointThread
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,92 +0,0 @@
-/**
-* SimulationCheckpointRemoteThread.java
-*
-* Created: Wed Aug 28 2002
-*
-* @author <poussin at codelutin.com>
-* Copyright Code Lutin
-* @version $Revision$
-*
-* Mise a jour: $Date$
-* par : $Author$
-*/
-
-package fr.ifremer.isisfish.simulator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.xmlrpc.XmlRpcClient;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-
-/**
- * This thread is responsable to synchronized SimulationControl used localy with
- * remote simulation control for remote simulation.
- *
- * This thread dead when {@link SimulationControl#isRunning()} is false
- *
- * @author poussin
- */
-public class SimulationCheckpointRemoteThread extends Thread { // SimulationCheckpointRemoteThread
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(SimulationCheckpointRemoteThread.class);
-
- protected SimulationControl control = null;
- int badId = 0;
-
- public SimulationCheckpointRemoteThread(SimulationControl control) {
- this.control = control;
- }
-
- public void run(){
- int sleepTime = 2000;
- while(true){
- try{
- Thread.sleep(sleepTime);
-
- updateControl(control);
- // on remet de le temps normal, vu que la connexion a reussi
- sleepTime = 2000;
-
- if (!control.isRunning()) {
- return;
- }
-
- } catch (Exception eee) {
- // on supporte 10 erreurs puis ensuite on quitte le thread.
- if ( badId++ > 10){
- log.error("Error !!! ", eee);
- break;
- }else{
- // on a echouer sur une tentative, on allonge un
- // peu le temps
- sleepTime += 2000;
- }
- }
- }
-
- }
-
- public void updateControl(SimulationControl control) throws Exception {
- // essai l'ancienne etait en dur: "http://localhost:9090"
- IsisConfig config = IsisFish.config;
- XmlRpcClient c = new XmlRpcClient(config.getSimulatorServer());
- c.setBasicAuthentication(config.getSimulatorUsername(), config.getSimulatorPassword());
-
- Vector a = new Vector();
- a.add(control.getUpdateHashtable());
- Hashtable<String, Object> result = (Hashtable<String, Object>)c.execute("checkPoint", a);
- // on remet de le temps normal, vu que la connexion a reussi
- control.updateFromHashtable(result);
- }
-
-} // SimulationCheckpointRemoteThread
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -117,6 +117,31 @@
getResultManager().addSimulationResultListener((SimulationResultListener)l);
}
}
+
+ public void closeDB() {
+ if (db != null) {
+ try {
+ db.closeContext();
+ } catch (TopiaException eee) {
+ if (log.isDebugEnabled()) {
+ log.debug("Can't close simulation topia context", eee);
+ }
+ }
+ }
+ }
+
+ public void closeDBResult() {
+ if (dbResult != null) {
+ try {
+ dbResult.commitTransaction();
+ dbResult.closeContext();
+ } catch (TopiaException eee) {
+ if (log.isDebugEnabled()) {
+ log.debug("Can't close simulation result topia context", eee);
+ }
+ }
+ }
+ }
/**
* Remove simulation listener, if listener is {@link SimulationResultListener}, it's
@@ -130,12 +155,12 @@
}
}
- protected void fireBeforeSimulation() {
+ public void fireBeforeSimulation() {
for(SimulationListener l : simulationListeners) {
l.beforeSimulation(this);
}
}
- protected void fireAfterSimulation() {
+ public void fireAfterSimulation() {
for(SimulationListener l : simulationListeners) {
l.afterSimulation(this);
}
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,120 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * SimulationQueueModel.java
- *
- * Created: 18 août 2006 00:05:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import fr.ifremer.isisfish.datastore.SimulationInformation;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-import static org.codelutin.i18n.I18nf._;
-
-/**
- * Model that represents a set of done or stopped simulations
- *
- * @author tchemit
- */
-
-public class SimulationDoneQueueModel extends AbstractSimulationQueueModel {
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel()
- */
- public SimulationDoneQueueModel() {
- super();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel(SimulationManager)
- */
- public SimulationDoneQueueModel(SimulationManager queue) {
- super(queue);
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getSimulationIds()
- */
- protected java.util.List<String> getSimulationIds() {
- return getQueue().getDoneIds();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getQueueItemsAsMap()
- */
- protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
- return getQueue().mapDones;
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationAdded(SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationRemoved(SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- // when a simulation is removed from first model
- // it could appear here (if it checks certain conditions : see
- // the options dedicated to done simulation in
- // IsisConfig.SIMULATION_SHOW_ONLY_XXX properties)
- int pos = getSimulationIndex(e.getId());
- if (isRowIndexValid(pos)) {
- log.info(" in done model for " + e.getId() + " pos " + pos);
- fireTableRowsInserted(pos, pos);
-
- // on indique si la simulation a ete annulee
- SimulationControl control = getSimulationControl(e.getId());
- log.info("isStopSimulationRequest : "+control.isStopSimulationRequest());
- if (control.isStopSimulationRequest()) {
- control.setText(_("isisfish.queue.cancelled"));
- }
-
- // on change le message pour dire qu'il y a eu une erreur
- try {
- SimulationManager.SimulationItem item = getQueueItemsAsMap().get(e.getId());
- if (!item.hasSimulation()) {
- SimulationInformation infos = item.getSimulation().getInformation();
- if (infos.hasError()) {
- log.error(_("isisfish.error.while.simulation", infos.getException()));
- control.setText(_("isisfish.message.stop.with.error"));
- }
- }
- } catch (Exception eee) {
- log.warn(_("isisfish.error.obtain.information.file", e.getId()), eee);
- }
- control.addPropertyChangeListener(this);
- }
-
- }
-
-}// SimulationDoneQueueModel
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,730 +0,0 @@
-/*
- * *##% Copyright (C) 2002-2005 Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307, USA. ##%
- */
-
-/*******************************************************************************
- * SimulatorHelper.java
- *
- * Created: Wed Aug 14 2002
- *
- * @author <poussin at codelutin.com> Copyright Code Lutin
- *
- * @version $Revision$
- *
- * Mise a jour: $Date$ par : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-import java.util.Vector;
-
-import org.apache.commons.lang.time.DurationFormatUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.xmlrpc.XmlRpcClient;
-import org.codelutin.profiling.LutinTrace;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.topia.event.TopiaTransactionEvent;
-import org.codelutin.topia.event.TopiaTransactionListener;
-import org.codelutin.topia.persistence.TopiaEntity;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.ObjectUtil;
-import org.codelutin.util.StringUtil;
-import org.codelutin.util.ZipUtil;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.aspect.AspectClassLoader;
-import fr.ifremer.isisfish.aspect.Cache;
-import fr.ifremer.isisfish.aspect.Trace;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-import fr.ifremer.isisfish.datastore.ExportStorage;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.datastore.ScriptStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.util.CompileHelper;
-
-/**
- * <p>
- * Objet permettant de faire une simulation. Pour l'utiliser il faut creer une
- * instance de l'objet, puis appeler la methode simulate avec tous les
- * arguements qu'elle attend.
- *
- */
-public class SimulationHelper { // SimulatorHelper
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(SimulationHelper.class);
-
- static private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
-
- static public void message(SimulationControl control, String message) {
- log.info(message);
- if (control != null) {
- control.setText(message);
- }
- }
-
- /**
- * Prepare les fichiers qui seront utils à la simulation:
- * <li> scripts
- * <li> rules
- * <li> exports
- * <li> simulators
- * <li> export de la database de la region
- * <p>
- * Le tout est zippé et le zip est retourné, il peut-être directement
- * importé dans le SimulationStorage (en le renomant comme il faut
- * importAndRenameZip).
- * <p>
- * Ce zip est automatiquement supprimé a la fin de l'application.
- *
- * @param control le controleur
- * @param param les parametre de la simulation
- * @param compile si vrai la version compile des fichiers Java est aussi
- * mise dans le fichier zip. Cela peut servir pour les simulations locales
- * pour ne pas recompiler pour chaque simulation avec plan d'analyse
- * @return un zip de simulation pour une simulation pret a être faite
- * @throws SimulationException pour tout problème rencontré (IO,Topia...)
- */
- static public File prepareSimulationZipFile(SimulationControl control,
- SimulationParameter param, boolean compile) throws SimulationException {
- try {
- File tmpDirectory = FileUtil.createTempDirectory("isisfish-simultation-", "-preparation");
- //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
- File regionXML = new File(tmpDirectory, SimulationStorage.DATA_BACKUP_FILENAME);
-
- // sauvegarde des parametres
- Properties prop = param.toProperties();
- //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
- File f = new File(tmpDirectory, SimulationStorage.PARAMETERS_FILENAME);
- FileOutputStream out = new FileOutputStream(f);
- //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
- prop.store(out, "Parameters");
- out.close();
-
- // backup pour toutes les simulations, pour eviter que l'utilisateur
- // ne puisse le modifier en meme temps
- message(control, _("isisfish.message.backup.database.progress"));
- RegionStorage region = RegionStorage.getRegion(param.getRegionName());
- TopiaContext tc = region.getStorage().beginTransaction();
- tc.backup(regionXML, true);
- tc.closeContext();
- message(control, _("isisfish.message.backup.database.finished"));
-
- // copie de toutes regles a utiliser
- List<Rule> rules = param.getRules();
- for (Rule rule : rules) {
- String name = RuleStorage.getName(rule);
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
- }
- // copie des regles reclamées par les plans d'analyse
- for(String name : param.getExtraRules()) {
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
- }
-
- // copie de toutes regles a utiliser
- List<AnalysePlan> plans = param.getAnalysePlans();
- for (AnalysePlan plan : plans) {
- String name = AnalysePlanStorage.getName(plan);
- FileUtil.copy(new File(AnalysePlanStorage.getAnalysePlanDirectory(), name + ".java"),
- new File(tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH + File.separator + name + ".java"));
- }
-
- // copie de tous les exports a utiliser
- for (String name : param.getExportNames()) {
- name = name.endsWith(".java")?name:name + ".java";
- FileUtil.copy(new File(ExportStorage.getExportDirectory(), name),
- new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name));
- }
-
- // copie de tous les scripts a utiliser
- FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(), tmpDirectory, ".*\\.java$");
-
- // copie de tous les simulateurs a utiliser
- FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(), param.getSimulatorName()),
- new File(tmpDirectory, SimulatorStorage.SIMULATOR_PATH + File.separator + param.getSimulatorName()));
-
- if (compile) {
- compileAllFile(control, tmpDirectory);
- }
-
- // creation du zip
- File result = new File(tmpDirectory.getPath() + ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, tmpDirectory, null);
-
- // poussin 20071015: remove temp directory
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory", tmpDirectory));
- }
-
- return result;
- } catch (IOException eee) {
- throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
- } catch (TopiaException eee) {
- throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
- }
-
- }
-
- /**
- * Compile les fichiers présent dans le répertoire passé en
- * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
- * et scripts. Seul les fichiers des 3 premiers répertoire sont compilé
- * les fichiers du dernier sont compilé par les dépendances qu'on les autres
- * <p>
- * Il permet donc de compiler facilement tous les fichiers pour une
- * simulation
- *
- * @param control le controleur
- * @param directory le répertoire où compiler
- */
- static public void compileAllFile(SimulationControl control, File directory) {
-
- message(control, "Scripts and rules Compilation");
- long currentTime = System.nanoTime();
-
- //
- // Recherche des fichiers a compiler
- // On ne prend pas les scripts, car ils sont tous copiés mais pas
- // forcément util. Lors de la compilation des autres fichiers, les
- // script servant réellement seront automatiquement compilé
-
- List<File> fileToCompile = new ArrayList<File>();
-
- List<File> tmp = FileUtil.find(new File(directory, ExportStorage.EXPORT_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, SimulatorStorage.SIMULATOR_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- //
- // Compilation
- //
-
- CompileHelper.compile(directory, fileToCompile, directory, null);
- long time = System.nanoTime() - currentTime;
- message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
-
- }
-
- /**
- * Modifie le classloader du thread passé en paramètre.
- * <p>
- * Sert pour les simulations pour qu'elles puissent trouver les
- * script, rule et export
- *
- * @param thread le thread dont on souhaite modifier le classloader ou null
- * @param directory le répertoire qui servira pour le classloader
- * @return le classe loader modifié
- */
- static public AspectClassLoader changeClassLoader(Thread thread, File directory) {
- try {
-// String [] urls = System.getProperty("java.class.path","").split(File.pathSeparator);
-// URL [] classpath = new URL[urls.length + 1];
-// for (int i=0; i<urls.length; i++) {
-// classpath[i] = new File(urls[i]).toURL();
-// }
-// classpath[classpath.length - 1] = directory.toURL();
-// URLClassLoader loader = new URLClassLoader(classpath, null);
- URL [] classpath = new URL[]{directory.toURI().toURL(),
- // poussin 20080821
- // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
- IsisFish.config.getCompileDirectory().toURI().toURL()
- };
- //URL [] classpath = new URL[]{directory.toURL()};
- AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
- thread.setContextClassLoader(loader);
- log.info("Classloader used for simulation: " + loader + " " + Arrays.toString(loader.getURLs()));
- return loader;
- } catch (MalformedURLException eee) {
- // on leve un runtime, car normalement cette erreur est pratiquement
- // impossible car on creer l'url a partir d'un File ce qui ne pose
- // noralement pas de probleme
- throw new IsisFishRuntimeException(_("isisfish.error.change.classloader", directory), eee);
- }
- }
-
- /**
- * Ajoute dans le Simulation manager une nouvelle simulation avec les
- * elements passes en parametre
- * @param simulId l'id de la simulation (la date est automatiquement ajoutee)
- * @param param les parametres de la simulation
- * @param inQueue si la simulation doit etre faite en queue
- * @throws SimulationException si l'identifiant n'est pas correct
- */
- static public void simulate(String simulId, SimulationParameter param,
- boolean inQueue) throws SimulationException {
- try {
- simulId += " " + dateFormat.format(new java.util.Date());
-
- if (simulId == null || "".equals(simulId) || SimulationStorage.localyExists(simulId) || SimulationManager.getInstance().exists(simulId)) {
- log.error("Can't start simulation, bad id: " + simulId);
- throw new SimulationException(_("isisfish.error.start"));
- }
- SimulationParameter p = param.copy();
- p.setInQueue(inQueue);
-
- SimulationManager.getInstance().addSimulation(simulId, p);
- } catch (Exception eee) {
- throw new SimulationException("Can't add simulation", eee);
- }
- }
-
- static public SimulationStorage simulate(SimulationControl control, SimulationStorage simulation) throws Exception {
- SimulationStorage result;
- if (simulation.getParameter().getLocal()) {
- if (simulation.getParameter().isSubProcess()) {
- result = subProcessSimulate(control, simulation);
- } else {
- result = localSimulate(control, simulation);
- }
- } else {
- result = remoteSimulate(control, simulation);
- }
- return result;
- }
-
- /**
- * execute la simulation en remote
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- *
- * @return le storage après simulation
- * @throws Exception pour toute erreur
- */
- static public SimulationStorage remoteSimulate(SimulationControl control,
- SimulationStorage simulation) throws Exception {
- // export en zip du storage
- File zip = simulation.createZip();
-
- if (control != null) {
- // creation du thread de surveillance de la simulation distante
- // qui sert a mettre a jour les valeurs de control
- new SimulationCheckpointRemoteThread(control).start();
- }
-
- // envoie le zip au serveur de simulation
- // appel synchrone pour attendre la fin de la simulation
- // recuperation du zip de la simulation terminé
- Vector<Object> a = new Vector<Object>();
- //fixme : on peut avori control à null ?
- a.add(control.getId());
- a.add(FileUtil.fileToByte(zip));
-
- // lancement de la simulation
- XmlRpcClient c = new XmlRpcClient(IsisFish.config.getSimulatorServer());
- c.setBasicAuthentication(IsisFish.config.getSimulatorUsername(),
- IsisFish.config.getSimulatorPassword());
- byte[] callResult = (byte[])c.execute("simulate", a);
-
- // ecriture du resultat dans un fichier
- File tmpzip = FileUtil.byteToFile(callResult);
-
- // remplacement du storage local par le storage recu
- simulation.closeStorage();
- simulation.delete(false);
- SimulationStorage result;
- result = SimulationStorage.importAndRenameZip(tmpzip, control.getId());
- return result;
- }
-
- static public SimulationStorage subProcessSimulate(SimulationControl control,
- SimulationStorage simulation) throws Exception {
-
- String simulationId = simulation.getName();
-
- // on ferme le SimulationStorage pour ne pas interferer avec le process
- simulation.closeStorage();
-
- String java = System.getProperty("java.home") +
- File.separator + "bin" + File.separator + "java";
- String classpath = System.getProperty("java.class.path");
-
- // prepare le process
- ProcessBuilder processBuilder = new ProcessBuilder(java, "-classpath", classpath,
- IsisFish.class.getName(),
- "--simulate", simulationId);
- processBuilder.redirectErrorStream(true);
-
- // demarrage du process
- Process process = processBuilder.start();
-
- if (control != null) {
- // prepare de thread de surveillance du process si control n'est pas null
- Thread monitor = new SimulationCheckpointExternalProcessThread(control, simulation, process);
- }
-
- // on attend que la simulation soit fini
- process.waitFor();
-
- // on retourne directement le simulation storage passe en argument
- // car la simulation a ete faite avec
- return simulation;
- }
-
- /**
- * fait la simulation en local dans un nouveau thread, cela permet
- * pour chaque simulation d'avoir les bons scripts dans le classloader
- * et non pas d'utiliser les scripts d'une autre simulation
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- * @return le storage après simulation en locale
- */
- static public SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
- SimThread simThread = new SimThread(control, simulation);
- // add simulation logger, we can't make it before since we need thread name
- // anyway since if accept only log from simThread, no need to init it before
- String simulLogLevel = simulation.getParameter().getSimulLogLevel();
- String scriptLogLevel = simulation.getParameter().getScriptLogLevel();
- String libLogLevel = simulation.getParameter().getLibLogLevel();
- try {
- simulation.addSimulationLogger(simulLogLevel,scriptLogLevel,libLogLevel,simThread.getName());
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.add.logger.simulation ", e));
- }
- }
- try {
- simThread.start();
- try {
- simThread.join();
- } catch (InterruptedException eee) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.wait.simThread"), eee);
- }
- }
- } finally {
- // remove simulation logger (no more need since thread is dead)
- simulation.removeSimulationLogger();
- }
- return simulation;
- }
-
- static public class SimThread extends Thread {
- protected SimulationControl control;
- protected SimulationStorage simulation;
-
- public SimThread(SimulationControl control, SimulationStorage simulation) {
- super("SimThread " + (control!=null?control.getId():""));
- this.control = control;
- this.simulation = simulation;
- }
- @Override
- public void run() {
- simulation = localSimulateSameThread(control, simulation);
- }
- }
-
- /**
- * Cree le simulation context, creer le ClassLoader, met en place les AOP,
- * met a jour des informations sur la simulation et lance la simulation en
- * local
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- * @return le storage après simulation en locale
- */
- static public SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
- SimulationStorage result = null;
- String jvmVersion = System.getProperty("java.runtime.version");
- log.info(SimpleDateFormat.getInstance().format(new java.util.Date())
- + " Java version: " + jvmVersion + " Isis-fish version: "
- + IsisFish.config.getVersion());
- long start = System.nanoTime();
- simulation.getInformation().setSimulationStart(new java.util.Date());
- AspectClassLoader classLoader;
-// DeploymentHandle traceHandle = null;
-// DeploymentHandle cacheHandle = null;
- try {
- File rootDirectory = simulation.getDirectory();
-
- //
- // changement de classloader
- //
- classLoader = changeClassLoader(Thread.currentThread(), rootDirectory);
-
- //
- // Creation et initialisation du context de simulation
- //
- SimulationContext context = SimulationContext.get();
- context.setClassLoader(classLoader);
- context.setScriptDirectory(rootDirectory);
- context.setSimulationStorage(simulation);
- context.setSimulationControl(control!=null?control:new SimulationControl(simulation.getName()));
-
- SimulationParameter parameters = simulation.getParameter();
- parameters.setIsisFishVersion(IsisFish.config.getVersion());
- // forceReload, save all modification in parameter and reread it
- parameters = simulation.getForceReloadParameter();
-
- //
- // Activation de l'OAP demandée
- //
- if (parameters.getUseStatistic()) {
- message(control, _("isisfish.message.setting.trace.aspects"));
-//// SystemDefinition def = SystemDefinitionContainer.getDefinitionFor(
-//// Thread.currentThread().getContextClassLoader(), "tests"
-//// );
-//// DeploymentScope deploymentScope = def.getDeploymentScope("deployUndeployUsingPreparedPointcut");
-//
-// traceHandle = Deployer.deploy(Trace.class, classLoader);
- classLoader.deploy(Trace.class);
- }
- if (parameters.getUseOptimization()) {
- message(control, _("isisfish.message.setting.cache.aspects"));
-// cacheHandle = Deployer.deploy(Cache.class, classLoader);
- classLoader.deploy(Cache.class);
- }
-
- // recherche du simulateur a utiliser
- String simulatorName = parameters.getSimulatorName();
- SimulatorStorage simulator = SimulatorStorage
- .getSimulator(simulatorName);
- Simulator simulatorObject = simulator.getNewSimulatorInstance();
-
- // on se met listener sur tc pour connaitre tous les nouveaux objets
- ObjectCreationListener objectCreationListener = new ObjectCreationListener();
- context.getDB().addTopiaTransactionListener(objectCreationListener);
-
- //
- // Ajout des listeners pour la simulation
- //
- initSimulationListener(context);
-
- //
- // Lancement du script de simulation selectionné
- //
- message(control, _("isisfish.message.simulation.execution"));
-
- //
- // Call listener simulation (used per example for prescript)
- //
- context.fireBeforeSimulation();
- simulatorObject.simulate(context);
-
- //
- // Ajout des nouveaux objets créées durant la simulation
- //
- message(control, _("isisfish.message.add.objets.simulation"));
- // on ajoute sur le DBResult car pour les exports peut-etre auront
- // nous besoin de ces nouveaux objets, et durant la simulation
- // les resultats sont recuperer dans le DBResult
- TopiaContext add = context.getDbResult();
- for (TopiaEntity e : objectCreationListener.getNewObjects()) {
- log.debug("Add new object: " + e + "(" + e.getClass().getName() + ")");
- add.add(e);
- }
- add.commitTransaction();
-
- //
- // Call listener simulation (used per example for export)
- //
- context.fireAfterSimulation();
-
- message(control, _("isisfish.message.simulation.ended"));
-
- simulation.getInformation().setSimulationEnd(new java.util.Date());
-
- } catch (OutOfMemoryError eee) {
- log.error(_("isisfish.error.during.simulation"),eee);
- simulation.getInformation().setException(eee);
- throw new SimulationException(_("isisfish.error.out.memory"), eee);
- } catch (Exception eee) {
- log.error(_("isisfish.error.during.simulation"),eee);
- simulation.getInformation().setException(eee);
- throw new SimulationException(_("isisfish.error.during.simulation"), eee);
- } finally {
- //
- // Finaly close all TopiaContext used during simulation
- //
-
- SimulationContext context = SimulationContext.get();
- TopiaContext tx;
-
- tx = context.db;
- if (tx != null) {
- try {
- tx.closeContext();
- } catch (TopiaException eee) {
- if (log.isDebugEnabled()) {
- log.debug("Can't close simulation topia context", eee);
- }
- }
- }
- tx = context.dbResult;
- if (tx != null) {
- try {
- tx.commitTransaction();
- tx.closeContext();
- } catch (TopiaException eee) {
- if (log.isDebugEnabled()) {
- log.debug("Can't close simulation result topia context", eee);
- }
- }
- }
-
- try {
- // close all transaction
- if (context != null && context.getSimulationStorage() != null) {
- context.getSimulationStorage().closeMemStorage();
- context.getSimulationStorage().closeStorage();
- }
- } catch (TopiaException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Can't close all transaction", eee);
- }
- }
-
-// //
-// // disassociate SimulationContext
-// //
-// if (cacheHandle != null) {
-// try {
-// Deployer.undeploy(cacheHandle);
-// } catch (Exception eee) {
-// log.warn("Can't undeploy Cache", eee);
-// }
-// }
-// // undeploy trace after cache, because is registered before
-// if (traceHandle != null) {
-// try {
-// Deployer.undeploy(traceHandle);
-// } catch (Exception eee) {
-// log.warn("Can't undeploy Trace", eee);
-// }
-// }
- SimulationContext.remove();
-
- //
- // Affichage des statistiques
- //
- long end = System.nanoTime();
- log.info("Simulation time: " + DurationFormatUtils.formatDuration((end-start)/1000000, "s'.'S"));
- SimulationParameter param = simulation.getParameter();
- if (param.getUseStatistic()) {
- String trace = Trace.printStatistiqueAndClear();
- simulation.getInformation().setStatistic(trace);
- }
- if (param.getUseOptimization()) {
- String cache = Cache.printStatistiqueAndClear();
- simulation.getInformation().setOptimizationUsage(cache);
- }
-
- LutinTrace.printStatistiqueAndClear();
-
- }
- return result;
- }
-
-
- static public void initSimulationListener(SimulationContext context) throws Exception {
- SimulationStorage simulation = context.getSimulationStorage();
- // enregistrement des listeners de resultat
- // - ResultStorage
- context.addSimulationListener(simulation.getResultStorage());
-
- // - TODO: mexico xml result
- // - TODO: vle result
- String simListener = context.getSimulationStorage().getParameter().getTagValue().get("SimulationListener");
- if (simListener != null) {
- String [] simListeners = StringUtil.split(simListener, ",");
- for (String l : simListeners) {
- context.addSimulationListener((SimulationListener)ObjectUtil.create(l));
- }
- }
-
- // enregistrement des listeners de simulation
- // - prescript (before simulation)
- // - export (after simulation)
- context.addSimulationListener(new SimulationPreScript());
- // si le simulateur est de type SimulationStep il faut ajouter les regles
- context.addSimulationListener(new SimulationExportResultWrapper());
- }
-
- static public class ObjectCreationListener implements TopiaTransactionListener {
-
- /** List qui contient tous les objets creer durant la simulation */
- protected List<TopiaEntity> newObjects = new ArrayList<TopiaEntity>();
-
- /**
- * @return Returns the newObjects.
- */
- public List<TopiaEntity> getNewObjects() {
- return this.newObjects;
- }
-
- /* (non-Javadoc)
- * @see org.codelutin.topia.event.TopiaTransactionListener#commit(org.codelutin.topia.event.TopiaTransactionEvent)
- */
- public void commit(TopiaTransactionEvent event) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.codelutin.topia.event.TopiaTransactionListener#rollback(org.codelutin.topia.event.TopiaTransactionEvent)
- */
- public void rollback(TopiaTransactionEvent event) {
- log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
- // FIXME le jour ou on aura l'isolation on pourra directement
- // ajouter dans un autre TopiaContext les objets ajouté durant la
- // simulation de cette maniere les objets creer au pas de temps
- // N seront dispo pour etre utilisé au pas de temps N+1
- // Sinon une autre methode est de faire cette ajout
- // dans l'event rollback qui est leve a la fin de chaque pas de temps
- for (TopiaEntity entity : event.getEntities()) {
- if (event.isCreate(entity)) {
- log.debug("New object detected during simulation: " + entity + "(" + entity.getClass().getName() + ")");
- newObjects.add(entity);
- }
- }
- }
- }
-
-} // SimulatorHelper
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,1110 +0,0 @@
-/* *##%
- * Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * SimulationManager.java
- *
- * Created: 5 janv. 07 11:12:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.types.Date;
-import java.beans.PropertyChangeEvent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18nf._;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.ListenerSet;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-
-/**
- * Singleton servant a lancer les simulations au travers d'un thread unique
- *
- * @author poussin
- */
-public class SimulationManager {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(SimulationManager.class);
-
- static protected SimulationManager instance = null;
-
- // FIXME pouvoir configurer ceci en fichier de config
- // FIXME ainsi que la mise a false, lors de la simulation de la derniere
- // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
- protected boolean autoLaunch = true;
-
- protected ListenerSet<SimulationQueueListener> listeners = new ListenerSet<SimulationQueueListener>();
- protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
-
-// protected SimulationThread localThread;
-// protected SimulationThread remoteThread;
-
- protected ExecutorService localExecutor;
- protected ExecutorService remoteExecutor;
-
-// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation local*/
-// protected PriorityBlockingQueue<QueueItem> localQueue = new PriorityBlockingQueue<QueueItem>();
-// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation remote*/
-// protected PriorityBlockingQueue<QueueItem> remoteQueue = new PriorityBlockingQueue<QueueItem>();
-// /** La liste des simulations terminées */
-// protected LinkedHashSet<SimulationItem> dones = new LinkedHashSet<SimulationItem>();
-
-// /** une liste des id (local et remote) */
-// protected ArrayList<String> ids = new ArrayList<String>();
- /** une map id->simItem pour accelerer les acces */
- protected Map<String, SimulationItem> map = new LinkedHashMap<String, SimulationItem>();
-
-// /** une liste des id des simulations terminées */
-// protected ArrayList<String> idDones = new ArrayList<String>();
- /** une map id->simItem pour accelerer les acces aux simulation terminées */
- protected Map<String, SimulationItem> mapDones = new LinkedHashMap<String, SimulationItem>();
-
- static public SimulationManager getInstance() {
- if (instance == null) {
- instance = new SimulationManager();
- }
- return instance;
- }
-
- /**
- * Cree l'objet et lance les deux threads de simulation (local/remote)
- */
- protected SimulationManager() {
-// localThread = new SimulationThread("local", this, localQueue);
-// remoteThread = new SimulationThread("remote", this, remoteQueue);
-//
-// localThread.start();
-// remoteThread.start();
-
- // TODO passer ces valeurs en valeur configurable
- int cpus = 1; // FIXME les logs ne sont pas multi-thread (il se melange a priori)
-// int cpus = Runtime.getRuntime().availableProcessors();
- int MAX_REMOTE_SIMULATION = 1;
- log.info(_("Launch Simulation executor with %s cpu(s) for local, and %s" +
- " process for remote", cpus, MAX_REMOTE_SIMULATION));
- localExecutor = Executors.newFixedThreadPool(cpus);
- remoteExecutor = Executors.newFixedThreadPool(MAX_REMOTE_SIMULATION);
- }
-
-
- /**
- * @return Returns the autoLaunch.
- */
- public boolean isAutoLaunch() {
- return this.autoLaunch;
- }
-
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(propertyName, listener);
- }
-
- /**
- * @param autoLaunch The autoLaunch to set.
- */
- public void setAutoLaunch(boolean autoLaunch) {
- synchronized (this) {
- boolean oldValue = this.autoLaunch;
- this.autoLaunch = autoLaunch;
- if (this.autoLaunch) {
- this.notifyAll();
- }
- propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
- }
- }
-
- public void waitAutoLaunch() {
- synchronized(this) {
- while (!isAutoLaunch()) {
- try {
- log.info("autoLaunch is false waiting queue start");
- this.wait();
- } catch (InterruptedException eee) {
- log.warn("Error during wait autoLaunch flag", eee);
- }
- }
- }
- }
-
- /**
- * Cree l'objet de gestion de la simulation en interne et le place dans la
- * bonne queue de simulation (local/remote). Appel le
- * {@link #fireAddEvent(String, SimulationItem)}
- * @param id l'id de simulation
- * @param param les paramètres de la simulation
- */
- public void addSimulation(String id, SimulationParameter param) throws Exception {
- ExecutorService executor = null;
- Runnable job = null;
- if (param.getLocal()) {
- executor = localExecutor;
- log.debug(_("isisfish.message.add.queue", id));
- } else {
- executor = remoteExecutor;
- log.debug(_("isisfish.message.add.queue.remote", id));
- }
-
-
-
- // on construit le bon type de SimulationItem pour le job
- SimulationItem item = null;
- if (param.getUseAnalysePlan()) {
- // c un plan d'analyse, il peut etre independant ou dependant
- if (!param.isIndependentPlan()) {
- item = new SimulationItemPlan(id, param);
- job = new SimulationJob(this, item);
- } else {
- // on met dans la queue local le process de generation de toutes
- // les simus
- item = new SimulationItemPlanIndependent(id, param);
- job = new PrepareIndependentSimulationJob(this, executor, item);
- executor = localExecutor; // change after job creation, because job need reel executor
- }
- } else {
- // une simulation normal
- item = new SimulationItem(id, param);
- log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated());
- job = new SimulationJob(this, item);
- }
- fireAddEvent(id, item); // must be before thread notification because thread look in map
- executor.execute(job);
- }
-
- /**
- * Envoie le signal stop a la simulation et la supprime de la liste des
- * simulation disponible en appelant {@link #fireRemoveEvent(String)}
- *
- * @param id l'id de simulation
- */
- public void removeSimulation(String id) {
- SimulationItem item = map.get(id);
- if (item != null) {
- item.control.setStopSimulationRequest(true);
- }
- fireRemoveEvent(id);
- }
-
- /**
- * Retourne une liste toujours dans le meme ordre des ids de simulation
- * a faire
- * @return
- */
- public List<String> getIds() {
- List<String> result = new ArrayList<String>(map.keySet());
- return result;
- }
-
- /**
- * Retourne une liste toujours dans le meme ordre des ids de simulation
- * a faire
- * @return
- */
- public List<String> getDoneIds() {
- List<String> result = new ArrayList<String>(mapDones.keySet());
- return result;
- }
-
- /**
- * @param id l'id de simulation
- * @return <code>true</code> si un identifiant est utilisé pour une simulation
- */
- public boolean exists(String id) {
- //TODO Doit-on tenir compte des simulations terminées ?
- boolean result;
- result = map.containsKey(id);
- return result;
- }
- /**
- * @param id l'id de simulation
- * @return <code>true</code> si l'identifiant est utilisé pour une simulation terminée
- */
- public boolean existsDone(String id) {
- boolean result;
- result = mapDones.containsKey(id);
- return result;
- }
-
-
- public void addSimulationQueueListener(SimulationQueueListener l) {
- listeners.add(l);
- }
-
- public void removeSimulationQueueListener(SimulationQueueListener l) {
- listeners.remove(l);
- }
-
- protected void fireAddEvent(String id, SimulationItem item) {
-// ids.add(id);
- map.put(id, item);
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationAdded(e);
- }
- }
-
- protected void fireRemoveEvent(String id) {
- if (map.containsKey(id)) {
- // add the simulation in done model
- // check if we should keep the simulation in done model
- if (mustShowSimulationDone(id)) {
-// idDones.add(id);
- SimulationItem queueItem = map.get(id);
-// dones.add(queueItem);
- mapDones.put(id, queueItem);
- }
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationWillBeRemoved(e);
- }
-// ids.remove(id);
- map.remove(id);
- }
- }
-
- protected void fireStartEvent(String id, SimulationItem item) {
- if (!exists(id) && item.isIndependent()) {
- // la simulation qui vient d'etre lancee n'existe pas, c parce qu'il
- // s'agit d'une simulation de plan, on l'ajoute a la liste pour que
- // l'utilisateur puisse la visualiser. On ne le fait pas pour les
- // plan dependant car, il partage le meme controleur, donc
- // l'utilisateur voit deja ce qui se passe
- fireAddEvent(id, item);
- }
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationStart(e);
- }
- }
-
- protected void fireStopEvent(String id) {
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationStop(e);
- }
- }
-
- /**
- * @param id id of simulation
- * @return Returns the parameters.
- */
- public SimulationParameter getParameter(String id) {
- return map.get(id).param;
- }
-
- /**
- * @param id id of simulation
- * @return Returns the controls.
- */
- public SimulationControl getControl(String id) {
- SimulationControl result = null;
- SimulationItem item = map.get(id);
- if (item == null) {
- // try to find it in done simulation
- item = mapDones.get(id);
- }
- if (item != null) {
- result = item.control;
- }
- return result;
- }
-
- /**
- * @param id simulation id
- * @return <code>tru</code> if we should add in simulation done model
- * the corresponding simulation
- */
- protected boolean mustShowSimulationDone(String id) {
- IsisConfig config = IsisFish.config;
-
- boolean result = !config.isSimulationShowOnlyError();
- try {
-
- SimulationItem item = map.get(id);
-
- if (result || (!(item instanceof SimulationItemPlan) &&
- item.getSimulation().getInformation().hasError())) {
- result = true;
- }
-
-// if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
-// // on ne met jamais dans la queue done les simulations de plan
-// // sauf si elle echoue
-// result = false;
-//// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
-// } else if (!(config.isSimulationShowOnlyError() &&
-// !(item instanceof SimulationItemPlan) &&
-// item.getSimulation().getInformation().hasError())) {
-// result = false;
-// }
- } catch (Exception eee) {
- log.debug("Ne devrait pas arriver", eee);
- // I don't known how it could appear, but in doubt, show it!
- }
- return result;
- }
-
-// /**
-// * Thread permettant de faire les simulations se trouvant dans la queue
-// * passée en parametre.
-// * <p>
-// * Si la simulation prise dans la queue n'existe plus, au moment ou on
-// * souhaite l'utiliser dans le {@link SimulationManager} alors elle est
-// * passée et on en recherche une autre.
-// *
-// * @author poussin
-// */
-// static class SimulationThread extends Thread {
-// protected SimulationManager simulationManager;
-// protected BlockingQueue<QueueItem> queue;
-//
-// /**
-// *
-// * @param name just small name to differenciate thread (local/remote)
-// * @param simulationManager le manager de simulation
-// * @param queue la queue de simulations
-// */
-// public SimulationThread(String name, SimulationManager simulationManager, BlockingQueue<QueueItem> queue) {
-// super("Simulation Thread " + name);
-// this.simulationManager = simulationManager;
-// this.queue = queue;
-// }
-//
-// /* (non-Javadoc)
-// * @see java.lang.Thread#run()
-// */
-// @Override
-// public void run() {
-// log.info("Start simulation thread");
-// while (true) {
-// // simItem qui sert a faire la simulation courante
-// QueueItem simItem = null;
-// try {
-// //
-// // recheche d'une simulation
-// //
-// while (simItem == null) {
-// log.debug("try to take simulation");
-// simItem = queue.take();
-// log.debug("Just take " + simItem.id);
-// if (!simulationManager.exists(simItem.id)) {
-// // on ne le retrouve pas dans la map, la simulation
-// // a donc ete supprimée par l'utilisateur on passe a la
-// // suivante
-// simItem = null;
-// } else if (!simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
-// // don't use simItem, because is queue and queue is not launched
-// queue.add(simItem);
-// simItem = null;
-// // sleep 1s. Because all other simItem is in queue too
-// // this sleep permit to user to put not queue simItem,
-// // with out eat cpu
-// sleep(1000);
-// }
-// }
-//
-// log.debug("use if has next simulation: " + simItem.id);
-// if (simItem.hasNext()) {
-// SimulationStorage sim = simItem.getSimulation();
-// String simId = sim.getName();
-// log.debug("Start simulation: " + simId);
-// SimulationControl control = simItem.control;
-// // set date to 0 at beginning of simulation
-// control.setDate(new Date());
-// control.setProgress(0);
-// control.setStarted(true);
-//
-// simulationManager.fireStartEvent(simItem.id);
-// try {
-// sim = SimulationHelper.simulate(control, sim);
-// simItem.setLastSimulation(sim);
-// } finally {
-// simulationManager.fireStopEvent(simItem.id);
-// }
-// // copie les exports de simulation dans le repertoire
-// // souhaiter par l'utilisateur
-// SimulationParameter param = sim.getParameter();
-// if (param.getExportNames() != null && param.getExportNames().size() > 0) {
-// File exportDir = IsisConfig.getResultExportDirectory(sim.getDirectory());
-// FileUtil.copyAndRenameRecursively(
-// exportDir,
-// new File(param.getExportDirectory()),
-// exportDir.getName(), simItem.id);
-//// FileUtil.copyAndRenameRecursively(
-//// exportDir,
-//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-//// IsisConfig.RESULT_EXPORT, simItem.id);
-// }
-//
-// if (simItem.hasNext() && simulationManager.exists(simItem.id)) {
-// // il y a encore des simulations a faire pour cet simItem
-// // on le remet dans la queue (on ne fait pas les autres
-// // simulations de cet simItem
-// // tout de suite car l'simItem peut-etre un simItem de queue
-// // moins prioritaire que les autres simulations
-// // il faut donc qu'il reprenne sa place dans l'ordre)
-//
-// queue.add(simItem);
-// } else {
-// // Si l'utilisateur souhaite seulement les exports
-// // on supprimer la/les simulations. Il faut le faire
-// // lorsqu'il n'y a plus de next car le calcul des plans
-// // peut avoir besoin des simulations precedentes
-// if (param.getOnlyExport()) {
-// if (param.getUseAnalysePlan()) {
-// for(File file : FileUtil.find(
-// IsisConfig.getSimulationDirectory(),
-// simItem.id + "_[0-9]+$", false)) {
-// log.debug("Delete simulation " + file);
-// FileUtil.deleteRecursively(file);
-// }
-// } else {
-// sim.delete(false);
-// }
-// }
-// simulationManager.fireRemoveEvent(simItem.id);
-//
-// if (simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
-// // if simItem is last in queue, stop the queue after that
-// QueueItem [] items = queue.toArray(new QueueItem[queue.size()]);
-// if (items.length > 0) {
-// QueueItem last = items[items.length-1];
-// if (!last.param.getInQueue()) {
-// // la derniere n'est pas en queue, donc plus de simulation en queue
-// simulationManager.setAutoLaunch(false);
-// }
-// } else {
-// // aucun simulation, donc forcement plus en queue non plus
-// simulationManager.setAutoLaunch(false);
-// }
-// }
-// }
-// }
-//
-//// } catch (Exception eee) {
-// } catch (Throwable eee) {
-// try {
-// // on sauvegarde l'erreur rencontrée, elle sera traité lors
-// // du fireRemoveEvent
-// simItem.lastSimulation.getInformation().setException(eee);
-// } catch (Exception e) {
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation.information.file", simItem.id), eee);
-// }
-// } finally {
-// // error during simulation, remove bad simulation
-// simulationManager.fireRemoveEvent(simItem.id);
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation", simItem.id), eee);
-// }
-// }
-//
-// } finally {
-// simItem = null;
-// }
-// }
-// }
-// }
-
-// /**
-// * Utilise pour les simulations avec plan d'analyse dependant
-// */
-// static class SimulationPlanJob implements Runnable {
-//
-// protected SimulationManager simulationManager;
-// protected SimulationItemPlan item;
-//
-// public SimulationPlanJob(SimulationManager simulationManager, SimulationItemPlan item) {
-// this.simulationManager = simulationManager;
-// this.item = item;
-// }
-//
-// public void run() {
-// try {
-// log.debug("use if has next simulation: " + item.id);
-// // on traite tout l'simItem dans le meme thread
-// while (simulationManager.exists(item.id) && item.hasNext()) {
-// SimulationStorage sim = item.getSimulation();
-// String simId = sim.getName();
-// log.debug("Start simulation: " + simId);
-// SimulationControl control = item.control;
-// // set date to 0 at beginning of simulation
-// control.setDate(new Date());
-// control.setProgress(0);
-// control.setStarted(true);
-//
-// simulationManager.fireStartEvent(item.id);
-// try {
-// sim = SimulationHelper.simulate(control, sim);
-// item.setLastSimulation(sim);
-// } finally {
-// simulationManager.fireStopEvent(item.id);
-// }
-// // copie les exports de simulation dans le repertoire
-// // souhaiter par l'utilisateur
-// SimulationParameter param = sim.getParameter();
-// if (param.getExportNames() != null &&
-// param.getExportNames().size() > 0) {
-// File exportDir = IsisConfig.getResultExportDirectory(
-// sim.getDirectory());
-// FileUtil.copyAndRenameRecursively(
-//
-// exportDir,
-// new File(param.getExportDirectory()),
-// exportDir.getName(), item.id);
-//// FileUtil.copyAndRenameRecursively(
-//// exportDir,
-//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-//// IsisConfig.RESULT_EXPORT, simItem.id);
-// }
-// }
-//
-// if (item.lastSimulation != null) {
-// SimulationParameter param = item.param;
-// // Si l'utilisateur souhaite seulement les exports
-// // on supprimer la/les simulations. Il faut le faire
-// // lorsqu'il n'y a plus de next car le calcul des plans
-// // peut avoir besoin des simulations precedentes
-// if (param.getOnlyExport()) {
-// if (param.getUseAnalysePlan()) {
-// for (File file : FileUtil.find(
-// IsisConfig.getSimulationDirectory(),
-// item.id + "_[0-9]+$", false)) {
-// log.debug("Delete simulation " + file);
-// FileUtil.deleteRecursively(file);
-// }
-// } else {
-// item.lastSimulation.delete(false);
-// }
-// }
-// }
-// // on previent que c la fin de la simulation
-// simulationManager.fireRemoveEvent(item.id);
-// } catch (Throwable eee) {
-// try {
-// // on sauvegarde l'erreur rencontrée, elle sera traité lors
-// // du fireRemoveEvent
-// if (item.lastSimulation != null) {
-// item.lastSimulation.getInformation().setException(eee);
-// }
-// } catch (Exception e) {
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
-// }
-// } finally {
-// // error during simulation, remove bad simulation
-// simulationManager.fireRemoveEvent(item.id);
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation", item.id), eee);
-// }
-// }
-//
-// } finally {
-// item = null;
-// }
-// }
-//
-// }
-
- class PrepareIndependentSimulationJob implements Runnable {
-
- protected SimulationManager simulationManager;
- protected ExecutorService executor;
- protected SimulationItem item;
-
- public PrepareIndependentSimulationJob(SimulationManager simulationManager,
- ExecutorService executor,
- SimulationItem item) {
- this.simulationManager = simulationManager;
- this.executor = executor;
- this.item = item;
- }
-
- public void run() {
- simulationManager.waitAutoLaunch();
- // l'item est independant, on ajoute toutes ces simulations en plus
- // mais pas dans la map pour qu'il n'y ait bien que l'initiale
- // plus celles en cours d'affichees
- while (item.hasNext()) {
- try {
- executor.execute(new SimulationJob(simulationManager, item.next()));
- } catch (Exception eee) {
- log.error("Can't add simulation: " + item, eee);
- }
- }
-
- }
-
- }
-
- /**
- * Utilise pour les simulations sans plan d'analyse ou des plans independant
- */
- class SimulationJob implements Runnable {
-
- protected SimulationManager simulationManager;
- protected SimulationItem simItem;
-
- /**
- *
- * @param simulationManager
- * @param parentId si ce job est le resulat d'un plan d'analyse
- * independant, sinon null ou la meme valeur que id
- * @param id l'identifiant de la simulation (avec _N pour ceux qui
- * proviennent d'un plan d'analyse)
- * @param zip le zip contenant la simulation
- */
- public SimulationJob(SimulationManager simulationManager,
- SimulationItem item) {
- this.simulationManager = simulationManager;
- this.simItem = item;
- }
-
- public void run() {
- log.info("Start simulation : " + simItem.id);
- simulationManager.waitAutoLaunch();
- try {
- // si l'simItem exist encore (que l'utilisateur ne la pas retire)
- log.info("id: " + simItem.getPlanIdOrId() + " exists ? " +
- simulationManager.exists(simItem.getPlanIdOrId()) +
- " hasNext ? " + simItem.hasNext());
- while (simulationManager.exists(simItem.getPlanIdOrId()) &&
- simItem.hasNext()) {
- SimulationItem item = simItem.next();
- try {
- String id = item.id;
-
- log.debug("Start simulation: " + id);
- SimulationStorage simulation = item.getSimulation();
- SimulationControl control = item.control;
- // set date to 0 at beginning of simulation
- control.setDate(new Date());
- control.setProgress(0);
- control.setStarted(true);
-
- simulationManager.fireStartEvent(id, item);
- try {
- simulation = SimulationHelper.simulate(control, simulation);
- item.setLastSimulation(simulation);
- } finally {
- simulationManager.fireStopEvent(id);
- }
- // copie les exports de simulation dans le repertoire
- // souhaiter par l'utilisateur
- SimulationParameter param = simulation.getParameter();
- if (param.getExportNames() != null &&
- param.getExportNames().size() > 0) {
- File exportDir = SimulationStorage.getResultExportDirectory(
- simulation.getDirectory());
- FileUtil.copyAndRenameRecursively(
- exportDir,
- new File(param.getExportDirectory()),
- // FIXME, est-ce bien parentId et pas id ?
- exportDir.getName(), id);
-// FileUtil.copyAndRenameRecursively(
-// exportDir,
-// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-// IsisConfig.RESULT_EXPORT, simItem.id);
- }
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations.
- // pour les plan dependant il faut le faire apres toutes
- // les simulations
- if (simItem.isIndependent() && param.getOnlyExport()) {
- simulation.delete(false);
- }
- // on previent que c la fin de la simulation
- simulationManager.fireRemoveEvent(id);
- } catch (Throwable eee) {
- try {
- // on sauvegarde l'erreur rencontrée, elle sera traité lors
- // du fireRemoveEvent
- item.getSimulation().getInformation().setException(eee);
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
- }
- } finally {
- // error during simulation, remove bad simulation
- simulationManager.fireRemoveEvent(item.id);
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation", item.id), eee);
- }
- }
- }
- }
- } catch (Exception eee) {
- log.error("Can't take next simulation: " + simItem.id, eee);
- }
- // suppression des simulations pour les plans dependants
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations. Il faut le faire
- // lorsqu'il n'y a plus de next car le calcul des plans
- // peut avoir besoin des simulations precedentes
- if (!simItem.isIndependent() && simItem.param.getOnlyExport()) {
- for (File file : FileUtil.find(
- SimulationStorage.getSimulationDirectory(),
- simItem.id + "_[0-9]+$", false)) {
- log.debug("Delete simulation " + file);
- FileUtil.deleteRecursively(file);
- }
- }
-
- if (!simItem.control.isRunning() && simItem.hasSimulation()) {
- // c'etait la derniere simulation du plan, on arrete le plan
- simulationManager.fireStopEvent(simItem.id);
- simulationManager.fireRemoveEvent(simItem.id);
- }
- }
- }
-
- /**
- * Une simulation a faire sans plan d'experience
- */
- public class SimulationItem {
-
- protected String id;
- protected SimulationParameter param;
- protected SimulationItemPlan planItem = null;
- protected File zip;
- protected SimulationControl control;
- protected SimulationStorage lastSimulation = null;
-
- protected SimulationItem() {
- }
-
- public boolean isIndependent() {
- return true;
- }
-
- /**
- * Utilise pour servir sous simItem pour les items de plan d'experience
- * @param id
- * @param control
- * @param sim
- */
- public SimulationItem(SimulationItemPlan planItem, SimulationControl control,
- SimulationStorage sim) {
- this.planItem = planItem;
- this.id = sim.getName();
- param = sim.getParameter();
- this.control = control;
- lastSimulation = sim;
- }
-
- /**
- * Retourne l'id du plan qui a genere cet item, si cet item n'est
- * pas genere par un plan, retourne directement l'id
- * @return
- */
- public String getPlanIdOrId() {
- String result = id;
- if (hasPlanItem()) {
- result = getPlanItem().id;
- }
- return result;
- }
-
- public SimulationItemPlan getPlanItem() {
- return planItem;
- }
-
- /**
- * Si renvoi vrai, cela veut dire que cette simulation a ete generee
- * par un plan d'experience
- *
- * @return
- */
- public boolean hasPlanItem() {
- boolean result = planItem != null;
- return result;
- }
-
- /**
- * creer un simItem de simulation et prepare le zip
- * @param id
- * @param param
- */
- public SimulationItem(String id, SimulationParameter param) {
- this.id = id;
- this.param = param;
- this.control = new SimulationControl(id);
- zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
- }
-
- public boolean hasSimulation() {
- boolean result = lastSimulation != null;
- return result;
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- public SimulationStorage getSimulation() throws Exception {
- if (lastSimulation == null) {
- lastSimulation = SimulationStorage.importAndRenameZip(zip, id);
- }
- return lastSimulation;
- }
-
- /**
- * Appelé apres que la simulation est vraiment eu lieu. On en a besoin
- * car pour une simulation distante apres la simulation le storage
- * a ete changé par rapport au storage initialement cree pour la
- * simulation
- *
- * @param lastSimulation The lastSimulation to set.
- */
- public void setLastSimulation(SimulationStorage lastSimulation) {
- this.lastSimulation = lastSimulation;
- if (hasPlanItem()) {
- getPlanItem().setLastSimulation(lastSimulation);
- }
- }
-
- /**
- * @return <code>true</code> s'il y a encore une simulation si on
- * utilise un plan et qu'il dit qu'il y en a encore, ou si la simulation
- * n'a pas encore ete faite.
- */
- public boolean hasNext() {
- boolean result;
- result = !control.isStarted();
- return result;
- }
-
- /**
- * Ce retourne lui meme, car il n'y a pas de plan
- * @return
- */
- public SimulationItem next() throws Exception {
- return this;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- boolean result = false;
- if (obj instanceof SimulationItem) {
- result = param.equals(((SimulationItem)obj).param);
- }
- return result;
- }
-
- @Override
- public int hashCode() {
- int hash = 3;
- hash = 53 * hash + (this.param != null ? this.param.hashCode() : 0);
- return hash;
- }
-
- }
-
- /**
- * Une simulation a faire qui contient un plan d'experience dependant
- */
- public class SimulationItemPlan extends SimulationItem
- implements PropertyChangeListener {
- // FIXME a mettre en config MAX_SIMULATION_PLAN
- // nombre maximal de simulation de plan par simulation
- // (pour eviter les plans qui ne retroune jamais faux
- protected static final int MAX_SIMULATION_PLAN = 10000;
-
- protected int simulationNumber = 0;
- protected int simulationFinished = 0;
- protected PlanGenerator plan = null;
-
- public SimulationItemPlan(String id, SimulationParameter param) {
- this.id = id;
- this.param = param;
- this.control = new SimulationControl(id);
- // ne pas inverser la creation de PlanGenerator et du zip.
- // car le init des plans est fait dans le constructeur de
- // PlanGenerator, et le init peut modifier les parametres
- // de simulation
- if (!param.getUseAnalysePlan()) {
- throw new SimulationException("Your simulation is not a plan:" + id);
- }
-
- plan = new PlanGenerator(id, control, param);
- zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
- plan.setZip(zip);
- }
-
- @Override
- public boolean isIndependent() {
- return false;
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- @Override
- public SimulationStorage getSimulation() throws Exception {
- throw new UnsupportedOperationException("Plan item don't have simulation");
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- public SimulationStorage getNextSimulation() throws Exception {
- SimulationStorage result;
- result = plan.next();
- simulationNumber++;
- lastSimulation = result;
- return result;
- }
-
- /**
- * Appelé apres que la simulation est vraiment eu lieu. On en a besoin
- * car pour une simulation distante apres la simulation le storage
- * a ete changé par rapport au storage initialement cree pour la
- * simulation
- *
- * @param lastSimulation The lastSimulation to set.
- */
- @Override
- public void setLastSimulation(SimulationStorage lastSimulation) {
- this.lastSimulation = lastSimulation;
- plan.setLastSimulation(lastSimulation);
- }
-
- /**
- * @return <code>true</code> s'il y a encore une simulation si on
- * utilise un plan et qu'il dit qu'il y en a encore, ou si la simulation
- * n'a pas encore ete faite.
- */
- @Override
- public boolean hasNext() {
- boolean result;
- result = simulationNumber < MAX_SIMULATION_PLAN &&
- ((plan != null && plan.hasNext()) || lastSimulation == null);
- return result;
- }
-
- /**
- * On utilise le meme control pour les plans dependants
- * @return
- */
- @Override
- public SimulationItem next() throws Exception {
- SimulationStorage sim = getNextSimulation();
- SimulationItem result = new SimulationItem(this, control, sim);
- return result;
- }
-
- public void propertyChange(PropertyChangeEvent evt) {
- // Attention il faut bien que toutes les simultions soit
- // genere (ou qu'il en reste au moins une en cours
- // sinon, la condition est tout de suite vrai et la simulation
- // s'arrete. Ce qui est normalement le cas ici, car on utilise
- // le meme executor pour genere les simultions que pour les faire
- // et les generes est mis en premier dans l'executor, mais si
- // on est multi cpu, et que le temps de simulation est inferieur
- // au temps de generation des simulations, on pourrai finir par
- // avoir un probleme.
-
- if (Boolean.FALSE.equals(evt.getNewValue())) {
- simulationFinished++;
- control.setProgress(simulationFinished);
- control.setText(simulationFinished + " / " + simulationNumber);
- if (simulationFinished >= simulationNumber) {
- log.info("All simulations have been executed: " + simulationFinished);
- control.stopSimulation();
- String id = control.getId();
- SimulationManager.this.fireStopEvent(id);
- SimulationManager.this.fireRemoveEvent(id);
- }
- }
- }
-
- }
-
- /**
- * Une simulation a faire qui contient un plan d'experience independant
- */
- public class SimulationItemPlanIndependent extends SimulationItemPlan {
-
- public SimulationItemPlanIndependent(String id, SimulationParameter param) {
- super(id, param);
- }
-
- @Override
- public boolean isIndependent() {
- return true;
- }
-
- /**
- * On utilise un nouveau control pour les plans independants
- * @return
- */
- @Override
- public SimulationItem next() throws Exception {
- SimulationStorage sim = getNextSimulation();
- control.setProgressMax(simulationNumber);
- SimulationControl control = new SimulationControl(sim.getName());
- control.addPropertyChangeListener("running", this);
- SimulationItem result = new SimulationItem(this, control, sim);
- return result;
- }
-
- }
-
-}
-
-
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -124,15 +124,6 @@
protected String exportDirectory = "/tmp";
- /** La simulation doit etre faite en local */
- protected boolean local = true;
-
- /** La simulation doit etre faite dans un sous process */
- protected boolean subProcess = false;
-
- /** La simulation doit etre lancé dans la queue de simulation (non prioritaire)*/
- protected boolean inQueue = false;
-
/** utilisation du script de pre simulation */
protected boolean usePreScript = false;
@@ -275,9 +266,6 @@
}
result.setProperty("exports", exportList);
- result.setProperty("local", String.valueOf(local));
- result.setProperty("subProcess", String.valueOf(subProcess));
- result.setProperty("inQueue", String.valueOf(inQueue));
result.setProperty("usePreScript", String.valueOf(usePreScript));
result.setProperty("preScript", preScript);
result.setProperty("useAnalysePlan", String.valueOf(useAnalysePlan));
@@ -418,9 +406,6 @@
}
}
- local = Boolean.parseBoolean(props.getProperty("local", "true"));
- subProcess = Boolean.parseBoolean(props.getProperty("subProcess", "false"));
- inQueue = Boolean.parseBoolean(props.getProperty("inQueue", "false"));
usePreScript = Boolean.parseBoolean(props.getProperty("usePreScript",
"false"));
preScript = props.getProperty("preScript");
@@ -672,42 +657,6 @@
}
/**
- * @return Returns the local.
- */
- public boolean getLocal() {
- return this.local;
- }
-
- /**
- * @param local The local to set.
- */
- public void setlocal(boolean local) {
- this.local = local;
- }
-
- public void setSubProcess(boolean subProcess) {
- this.subProcess = subProcess;
- }
-
- public boolean isSubProcess() {
- return subProcess;
- }
-
- /**
- * @return Returns the inQueue.
- */
- public boolean getInQueue() {
- return this.inQueue;
- }
-
- /**
- * @param inQueue The inQueue to set.
- */
- public void setInQueue(boolean inQueue) {
- this.inQueue = inQueue;
- }
-
- /**
* @return Returns the useOptimization.
*/
public boolean getUseOptimization() {
@@ -972,8 +921,6 @@
result.simulatorName = simulatorName;
result.useOptimization = useOptimization;
result.useStatistic = useStatistic;
- result.local = local;
- result.inQueue = inQueue;
result.usePreScript = usePreScript;
result.preScript = preScript;
result.useAnalysePlan = useAnalysePlan;
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,64 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * SimulationQueueEvent.java
- *
- * Created: 17 août 2006 22:00:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.EventObject;
-
-
-/**
- * @author poussin
- *
- */
-
-public class SimulationQueueEvent extends EventObject {
-
- /** simulation id */
- protected String id;
-
- /**
- * @param source
- */
- public SimulationQueueEvent(Object source, String id) {
- super(source);
- this.id = id;
- }
-
- /**
- * @return Returns the id.
- */
- public String getId() {
- return this.id;
- }
-
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,55 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * SimulationQueueListener.java
- *
- * Created: 17 août 2006 21:59:02
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.EventListener;
-
-
-/**
- * @author poussin
- *
- */
-
-public interface SimulationQueueListener extends EventListener {
-
- /** call when one simulation is added to the queue */
- public void simulationAdded(SimulationQueueEvent e);
- /** call when one simulation will be removed from the queue */
- public void simulationWillBeRemoved(SimulationQueueEvent e);
- /** call when one simulation begin */
- public void simulationStart(SimulationQueueEvent e);
- /** call when one simulation stop */
- public void simulationStop(SimulationQueueEvent e);
-
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,99 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * SimulationQueueModel.java
- *
- * Created: 18 août 2006 00:05:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/** @author poussin */
-
-public class SimulationQueueModel extends AbstractSimulationQueueModel {
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel()
- */
- public SimulationQueueModel() {
- super();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel(SimulationManager)
- */
- public SimulationQueueModel(SimulationManager queue) {
- super(queue);
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getSimulationIds()
- */
- protected java.util.List<String> getSimulationIds() {
- return getQueue().getIds();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getQueueItemsAsMap()
- */
- protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
- return getQueue().map;
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- int row = getRowCount();
- fireTableRowsInserted(row, row);
- SimulationControl control = getSimulationControl(e.getId());
- if (control != null) {
- control.addPropertyChangeListener(this);
- } else {
- log.warn("Simulation without controler: " + e.getId());
- }
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- String id = e.getId();
- SimulationControl control = getSimulationControl(e.getId());
- if (control != null) {
- control.removePropertyChangeListener(this);
- }
- int row = getSimulationIndex(id);
- if (isRowIndexValid(row)) {
- fireTableRowsDeleted(row, row);
- }
- progress.remove(id);
- }
-
-} // SimulationQueueModel
\ No newline at end of file
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -34,8 +34,6 @@
/**
* This interface is used when simulator have all code for simulation.
- * This is the old interface for simulator, now we prefer to used
- * {@link SimulatorStep}
*
* @author poussin
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -44,6 +44,8 @@
import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
/**
* Cette classe permet de lancer un serveur XML-RPC qui attend des demandes
@@ -121,12 +123,13 @@
String id = (String) params.get(0);
File zip = FileUtil.byteToFile((byte[]) params.get(1));
- SimulationStorage simulation = SimulationStorage.importAndRenameZip(zip, id);
SimulationControl control = new SimulationControl(id);
+ SimulationStorage simulation = null;
simulationControls.put(id, control);
try {
- simulation = SimulationHelper.localSimulate(control, simulation);
+ SimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ simulation = launcher.simulate(null, control, zip);
zip = simulation.createZip();
byte [] result = FileUtil.fileToByte(zip);
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,413 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.aspect.AspectClassLoader;
+import fr.ifremer.isisfish.aspect.Cache;
+import fr.ifremer.isisfish.aspect.Trace;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationException;
+import fr.ifremer.isisfish.simulator.SimulationExportResultWrapper;
+import fr.ifremer.isisfish.simulator.SimulationListener;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.SimulationPreScript;
+import fr.ifremer.isisfish.simulator.Simulator;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.rmi.RemoteException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.profiling.LutinTrace;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.topia.event.TopiaTransactionEvent;
+import org.codelutin.topia.event.TopiaTransactionListener;
+import org.codelutin.topia.persistence.TopiaEntity;
+import org.codelutin.util.ObjectUtil;
+import org.codelutin.util.StringUtil;
+
+/**
+ * Fait une simulation dans la meme jvm
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class InProcessSimulatorLauncher implements SimulatorLauncher {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(InProcessSimulatorLauncher.class);
+
+ public SimulationStorage simulate(SimulationService simulationService,
+ SimulationControl control, File simulationZip)
+ throws RemoteException{
+ String id = control.getId();
+
+ SimulationStorage simulation = null;
+ try {
+ simulation = SimulationStorage.importAndRenameZip(simulationZip, id);
+ simulation = localSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", id), eee);
+ simulation.getInformation().setException(eee);
+ }
+ return simulation;
+ }
+
+ public int maxSimulationThread() {
+ return 1;
+ }
+
+ @Override
+ public String toString() {
+ return _("in Process");
+ }
+
+ protected void message(SimulationControl control, String message) {
+ log.info(message);
+ if (control != null) {
+ control.setText(message);
+ }
+ }
+
+ /**
+ * fait la simulation en local dans un nouveau thread, cela permet
+ * pour chaque simulation d'avoir les bons scripts dans le classloader
+ * et non pas d'utiliser les scripts d'une autre simulation
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ * @return le storage après simulation en locale
+ */
+ protected SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
+ SimThread simThread = new SimThread(control, simulation);
+ // add simulation logger, we can't make it before since we need thread name
+ // anyway since if accept only log from simThread, no need to init it before
+ String simulLogLevel = simulation.getParameter().getSimulLogLevel();
+ String scriptLogLevel = simulation.getParameter().getScriptLogLevel();
+ String libLogLevel = simulation.getParameter().getLibLogLevel();
+ try {
+ simulation.addSimulationLogger(simulLogLevel,scriptLogLevel,libLogLevel,simThread.getName());
+ } catch (Exception e) {
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.add.logger.simulation ", e));
+ }
+ }
+ try {
+ simThread.start();
+ try {
+ simThread.join();
+ } catch (InterruptedException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.wait.simThread"), eee);
+ }
+ }
+ } finally {
+ // remove simulation logger (no more need since thread is dead)
+ simulation.removeSimulationLogger();
+ }
+ return simulation;
+ }
+
+ protected class SimThread extends Thread {
+ protected SimulationControl control;
+ protected SimulationStorage simulation;
+
+ public SimThread(SimulationControl control, SimulationStorage simulation) {
+ super("SimThread " + (control!=null?control.getId():""));
+ this.control = control;
+ this.simulation = simulation;
+ }
+ @Override
+ public void run() {
+ simulation = localSimulateSameThread(control, simulation);
+ }
+ }
+
+ /**
+ * Modifie le classloader du thread passé en paramètre.
+ * <p>
+ * Sert pour les simulations pour qu'elles puissent trouver les
+ * script, rule et export
+ *
+ * @param thread le thread dont on souhaite modifier le classloader ou null
+ * @param directory le répertoire qui servira pour le classloader
+ * @return le classe loader modifié
+ */
+ protected AspectClassLoader changeClassLoader(Thread thread, File directory) {
+ try {
+ URL [] classpath = new URL[]{directory.toURI().toURL(),
+ // poussin 20080821
+ // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
+ IsisFish.config.getCompileDirectory().toURI().toURL()
+ };
+ //URL [] classpath = new URL[]{directory.toURL()};
+ AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
+ thread.setContextClassLoader(loader);
+ log.info("Classloader used for simulation: " + loader + " " +
+ Arrays.toString(loader.getURLs()));
+ return loader;
+ } catch (MalformedURLException eee) {
+ // on leve un runtime, car normalement cette erreur est pratiquement
+ // impossible car on creer l'url a partir d'un File ce qui ne pose
+ // noralement pas de probleme
+ throw new IsisFishRuntimeException(_("isisfish.error.change.classloader", directory), eee);
+ }
+ }
+
+ /**
+ * Cree le simulation context, creer le ClassLoader, met en place les AOP,
+ * met a jour des informations sur la simulation et lance la simulation en
+ * local
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ * @return le storage après simulation en locale
+ */
+ protected SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
+ SimulationStorage result = null;
+ String jvmVersion = System.getProperty("java.runtime.version");
+ log.info(SimpleDateFormat.getInstance().format(new java.util.Date())
+ + " Java version: " + jvmVersion + " Isis-fish version: "
+ + IsisConfig.getVersion());
+ long start = System.nanoTime();
+ simulation.getInformation().setSimulationStart(new java.util.Date());
+ AspectClassLoader classLoader;
+ try {
+ File rootDirectory = simulation.getDirectory();
+
+ //
+ // changement de classloader
+ //
+ classLoader = changeClassLoader(Thread.currentThread(), rootDirectory);
+
+ //
+ // Creation et initialisation du context de simulation
+ //
+ SimulationContext context = SimulationContext.get();
+ context.setClassLoader(classLoader);
+ context.setScriptDirectory(rootDirectory);
+ context.setSimulationStorage(simulation);
+ context.setSimulationControl(control!=null?control:new SimulationControl(simulation.getName()));
+
+ SimulationParameter parameters = simulation.getParameter();
+ parameters.setIsisFishVersion(IsisConfig.getVersion());
+ // forceReload, save all modification in parameter and reread it
+ parameters = simulation.getForceReloadParameter();
+
+ //
+ // Activation de l'OAP demandée
+ //
+ if (parameters.getUseStatistic()) {
+ message(control, _("isisfish.message.setting.trace.aspects"));
+ classLoader.deploy(Trace.class);
+ }
+ if (parameters.getUseOptimization()) {
+ message(control, _("isisfish.message.setting.cache.aspects"));
+ classLoader.deploy(Cache.class);
+ }
+
+ // recherche du simulateur a utiliser
+ String simulatorName = parameters.getSimulatorName();
+ SimulatorStorage simulator = SimulatorStorage
+ .getSimulator(simulatorName);
+ Simulator simulatorObject = simulator.getNewSimulatorInstance();
+
+ // on se met listener sur tc pour connaitre tous les nouveaux objets
+ ObjectCreationListener objectCreationListener = new ObjectCreationListener();
+ context.getDB().addTopiaTransactionListener(objectCreationListener);
+
+ //
+ // Ajout des listeners pour la simulation
+ //
+ initSimulationListener(context);
+
+ //
+ // Lancement du script de simulation selectionné
+ //
+ message(control, _("isisfish.message.simulation.execution"));
+
+ //
+ // Call listener simulation (used per example for prescript)
+ //
+ context.fireBeforeSimulation();
+ simulatorObject.simulate(context);
+
+ //
+ // Ajout des nouveaux objets créées durant la simulation
+ //
+ message(control, _("isisfish.message.add.objets.simulation"));
+ // on ajoute sur le DBResult car pour les exports peut-etre auront
+ // nous besoin de ces nouveaux objets, et durant la simulation
+ // les resultats sont recuperer dans le DBResult
+ TopiaContext add = context.getDbResult();
+ for (TopiaEntity e : objectCreationListener.getNewObjects()) {
+ log.debug("Add new object: " + e + "(" + e.getClass().getName() + ")");
+ add.add(e);
+ }
+ add.commitTransaction();
+
+ //
+ // Call listener simulation (used per example for export)
+ //
+ context.fireAfterSimulation();
+
+ message(control, _("isisfish.message.simulation.ended"));
+
+ simulation.getInformation().setSimulationEnd(new java.util.Date());
+
+ } catch (OutOfMemoryError eee) {
+ log.error(_("isisfish.error.during.simulation"),eee);
+ simulation.getInformation().setException(eee);
+ throw new SimulationException(_("isisfish.error.out.memory"), eee);
+ } catch (Exception eee) {
+ log.error(_("isisfish.error.during.simulation"),eee);
+ simulation.getInformation().setException(eee);
+ throw new SimulationException(_("isisfish.error.during.simulation"), eee);
+ } finally {
+ //
+ // Finaly close all TopiaContext used during simulation
+ //
+
+ SimulationContext context = SimulationContext.get();
+ TopiaContext tx;
+
+ context.closeDB();
+ context.closeDBResult();
+
+ try {
+ // close all transaction
+ if (context != null && context.getSimulationStorage() != null) {
+ context.getSimulationStorage().closeMemStorage();
+ context.getSimulationStorage().closeStorage();
+ }
+ } catch (TopiaException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't close all transaction", eee);
+ }
+ }
+
+ SimulationContext.remove();
+
+ //
+ // Affichage des statistiques
+ //
+ long end = System.nanoTime();
+ log.info("Simulation time: " + DurationFormatUtils.formatDuration(
+ (end-start)/1000000, "s'.'S"));
+ SimulationParameter param = simulation.getParameter();
+ if (param.getUseStatistic()) {
+ String trace = Trace.printStatistiqueAndClear();
+ simulation.getInformation().setStatistic(trace);
+ }
+ if (param.getUseOptimization()) {
+ String cache = Cache.printStatistiqueAndClear();
+ simulation.getInformation().setOptimizationUsage(cache);
+ }
+
+ LutinTrace.printStatistiqueAndClear();
+
+ }
+ return result;
+ }
+
+ protected void initSimulationListener(SimulationContext context) throws Exception {
+ SimulationStorage simulation = context.getSimulationStorage();
+ // enregistrement des listeners de resultat
+ // - ResultStorage
+ context.addSimulationListener(simulation.getResultStorage());
+
+ // - TODO: mexico xml result
+ // - TODO: vle result
+ String simListener = context.getSimulationStorage().getParameter().getTagValue().get("SimulationListener");
+ if (simListener != null) {
+ String [] simListeners = StringUtil.split(simListener, ",");
+ for (String l : simListeners) {
+ context.addSimulationListener((SimulationListener)ObjectUtil.create(l));
+ }
+ }
+
+ // enregistrement des listeners de simulation
+ // - prescript (before simulation)
+ // - export (after simulation)
+ context.addSimulationListener(new SimulationPreScript());
+ // si le simulateur est de type SimulationStep il faut ajouter les regles
+ context.addSimulationListener(new SimulationExportResultWrapper());
+ }
+
+ protected class ObjectCreationListener implements TopiaTransactionListener {
+
+ /** List qui contient tous les objets creer durant la simulation */
+ protected List<TopiaEntity> newObjects = new ArrayList<TopiaEntity>();
+
+ /**
+ * @return Returns the newObjects.
+ */
+ public List<TopiaEntity> getNewObjects() {
+ return this.newObjects;
+ }
+
+ /* (non-Javadoc)
+ * @see org.codelutin.topia.event.TopiaTransactionListener#commit(org.codelutin.topia.event.TopiaTransactionEvent)
+ */
+ public void commit(TopiaTransactionEvent event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.codelutin.topia.event.TopiaTransactionListener#rollback(org.codelutin.topia.event.TopiaTransactionEvent)
+ */
+ public void rollback(TopiaTransactionEvent event) {
+ log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
+ // FIXME le jour ou on aura l'isolation on pourra directement
+ // ajouter dans un autre TopiaContext les objets ajouté durant la
+ // simulation de cette maniere les objets creer au pas de temps
+ // N seront dispo pour etre utilisé au pas de temps N+1
+ // Sinon une autre methode est de faire cette ajout
+ // dans l'event rollback qui est leve a la fin de chaque pas de temps
+ for (TopiaEntity entity : event.getEntities()) {
+ if (event.isCreate(entity)) {
+ log.debug("New object detected during simulation: " + entity + "(" + entity.getClass().getName() + ")");
+ newObjects.add(entity);
+ }
+ }
+ }
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,179 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.rmi.RemoteException;
+import java.util.Hashtable;
+import java.util.Vector;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.xmlrpc.XmlRpcClient;
+import org.codelutin.util.FileUtil;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class IsisFishServerSimulationLauncher implements SimulatorLauncher {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(IsisFishServerSimulationLauncher.class);
+
+ public SimulationStorage simulate(SimulationService simulationService, SimulationControl control, File simulationZip) throws RemoteException {
+ String simulationId = control.getId();
+ SimulationStorage simulation = null;
+ try {
+ simulation = SimulationStorage.importAndRenameZip(
+ simulationZip, simulationId);
+ simulation = remoteSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", simulationId), eee);
+ simulation.getInformation().setException(eee);
+ }
+
+ // on retourne directement le simulation storage passe en argument
+ // car la simulation a ete faite avec
+ return simulation;
+
+ }
+
+ public int maxSimulationThread() {
+ // FIXME a rendre configurable
+ return 1;
+ }
+
+ /**
+ * execute la simulation en remote
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ *
+ * @return le storage après simulation
+ * @throws Exception pour toute erreur
+ */
+ public SimulationStorage remoteSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
+ // export en zip du storage
+ File zip = simulation.createZip();
+
+ if (control != null) {
+ // creation du thread de surveillance de la simulation distante
+ // qui sert a mettre a jour les valeurs de control
+ new SimulationCheckpointRemoteThread(control).start();
+ }
+
+ // envoie le zip au serveur de simulation
+ // appel synchrone pour attendre la fin de la simulation
+ // recuperation du zip de la simulation terminé
+ Vector<Object> a = new Vector<Object>();
+ //fixme : on peut avori control à null ?
+ a.add(control.getId());
+ a.add(FileUtil.fileToByte(zip));
+
+ // lancement de la simulation
+ XmlRpcClient c = new XmlRpcClient(IsisFish.config.getSimulatorServer());
+ c.setBasicAuthentication(IsisFish.config.getSimulatorUsername(),
+ IsisFish.config.getSimulatorPassword());
+ byte[] callResult = (byte[])c.execute("simulate", a);
+
+ // ecriture du resultat dans un fichier
+ File tmpzip = FileUtil.byteToFile(callResult);
+
+ // remplacement du storage local par le storage recu
+ simulation.closeStorage();
+ simulation.delete(false);
+ SimulationStorage result;
+ result = SimulationStorage.importAndRenameZip(tmpzip, control.getId());
+ return result;
+ }
+
+ /**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+ protected class SimulationCheckpointRemoteThread extends Thread { // SimulationCheckpointRemoteThread
+
+ protected SimulationControl control = null;
+ int badId = 0;
+
+ public SimulationCheckpointRemoteThread(SimulationControl control) {
+ this.control = control;
+ }
+
+ public void run() {
+ int sleepTime = 2000;
+ while (true) {
+ try {
+ Thread.sleep(sleepTime);
+
+ updateControl(control);
+ // on remet de le temps normal, vu que la connexion a reussi
+ sleepTime = 2000;
+
+ if (!control.isRunning()) {
+ return;
+ }
+
+ } catch (Exception eee) {
+ // on supporte 10 erreurs puis ensuite on quitte le thread.
+ if (badId++ > 10) {
+ log.error("Error !!! ", eee);
+ break;
+ } else {
+ // on a echouer sur une tentative, on allonge un
+ // peu le temps
+ sleepTime += 2000;
+ }
+ }
+ }
+
+ }
+
+ public void updateControl(SimulationControl control) throws Exception {
+ // essai l'ancienne etait en dur: "http://localhost:9090"
+ IsisConfig config = IsisFish.config;
+ XmlRpcClient c = new XmlRpcClient(config.getSimulatorServer());
+ c.setBasicAuthentication(config.getSimulatorUsername(), config.getSimulatorPassword());
+
+ Vector a = new Vector();
+ a.add(control.getUpdateHashtable());
+ Hashtable<String, Object> result = (Hashtable<String, Object>) c.execute("checkPoint", a);
+ // on remet de le temps normal, vu que la connexion a reussi
+ control.updateFromHashtable(result);
+ }
+ } // SimulationCheckpointRemoteThread
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import static org.codelutin.i18n.I18nf._;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Un executor qui utilise un certain type de {@link SimulatorLauncher} pour
+ * executer les jobs soumis dans la queue de {@link SimulationService}
+ * <p>
+ * Les fonctionnalites en plus par rapport a un {@link ThreadPoolExecutor} sont:
+ * <li> la possibilite de suspendre l'executor puis ensuite de le relancer
+ * <li> l'utilisation de beforeExecute pour fixer le {@link SimulationLauncher}
+ * du job
+ * <p>
+ * Il est aussi possible d'ecoute l'etat de l'attribut pause
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationExecutor extends ThreadPoolExecutor {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationExecutor.class);
+
+ protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
+ /** vrai si cet executor est en pause */
+ protected boolean pause = false;
+ /** le nombre de thread utilise avant la pause */
+ protected int lastCorePoolSize;
+ /** le simulation service qui a cree cet executor */
+ protected SimulationService simulationService;
+ /** le launcher a utilise pour les simulations */
+ protected SimulatorLauncher launcher;
+
+ public SimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher,
+ BlockingQueue<Runnable> workQueue) {
+ super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
+ 0L, TimeUnit.MILLISECONDS, workQueue);
+ this.simulationService = simulationService;
+ this.launcher = launcher;
+ lastCorePoolSize = prestartAllCoreThreads();
+ log.info(_("SimulationExecutor started with %s thread for %s", lastCorePoolSize, launcher));
+ }
+
+ public SimulationService getSimulationService() {
+ return simulationService;
+ }
+
+ public SimulatorLauncher getLauncher() {
+ return launcher;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(propertyName, listener);
+ }
+
+ /**
+ * Met les threads en attente si pause est vrai, et fixe le
+ * {@link SimulatorLauncher} a utiliser pour par la tache.
+ * Si la tache a deja un {@link SimulatorLauncher} d'assigne, on ne fait
+ * pas la tache
+ *
+ * @param t le thread qui va executer la tache
+ * @param r
+ */
+ @Override
+ protected void beforeExecute(Thread t, Runnable r) {
+ super.beforeExecute(t, r);
+
+ // en premier lieu il faut que SimulationService autorise le lancement
+ getSimulationService().waitAutoLaunch();
+
+ // ensuite si cet executor est en pause, on tu le thread apres avoir
+ // resoumis la simulation
+ if (isPause()) {
+ // on est en pause, il faut remettre la tache et tuer le thread
+ // un simple suspend du thread n'est pas bon, car la tache ne
+ // serait alors jamais executer et ce n'est pas forcement ce que
+ // l'on souhaite
+ if (r instanceof SimulationItem) {
+ SimulationService.getService().resubmit((SimulationJob)r);
+ }
+ throw new RuntimeException(_("Normal stop thread, this is not an error"));
+ }
+ if (r instanceof SimulationJob) {
+ SimulationJob job = (SimulationJob)r;
+ if (job.getLauncher() == null) {
+ // si la tache a deja un launcher, on l'utilise sinon on lui
+ // indique d'utilise le notre. C'est seul facon propre et sans
+ // risque de pouvoir choisir un launcher (en l'assignant au job
+ // avant d'arriver ici). Car l'autre solution serait de remettre
+ // la tache dans la queue et d'attendre que le bon executor
+ // la prenne, mais en fait cela impliquerait que dans le
+ // launcher on puisse refaire un test pour savoir si on doit
+ // reellement faire la tache ou non (trop compliquer pour
+ // l'implantation de launcher). et surtout on risquerait de
+ // boucler sans jamais executer la tache, s'il n'existe pas
+ // d'executor avec ce launcher ou qu'il est arrete. Dans ce
+ // dernier cas s'etait a l'utilisateur d'etre coherant, c-a-d
+ // de ne pas arreter un executor puis ensuite de demander
+ // explicitement a l'utiliser
+ job.setLauncher(launcher);
+ }
+ } else {
+ log.warn(_("Jobs submited is not ItemSimulation but was %s", r.getClass().getName()));
+ }
+ }
+
+ public boolean isPause() {
+ return pause;
+ }
+
+ /**
+ * demande au thread d'arreter de prendre de nouvelle tache
+ */
+ public void pause() {
+ setPause(true);
+ }
+
+ /**
+ * indique au thread de recommencer a prendre de nouvelle tache
+ */
+ public void resume() {
+ setPause(false);
+ }
+
+ /**
+ * Change la valeur de la variable pause, si pause est alors vrai
+ * notifie tous les threads en attente
+ * @param autoLaunch The autoLaunch to set.
+ */
+ public void setPause(boolean pause) {
+ boolean oldValue = this.pause;
+ synchronized (this) {
+ this.pause = pause;
+ if (this.pause) {
+ lastCorePoolSize = getCorePoolSize();
+ setCorePoolSize(0);
+ } else {
+ setCorePoolSize(lastCorePoolSize);
+ // on recree tous les threads qui avait ete tue par la pause
+ prestartAllCoreThreads();
+ }
+ }
+ propertyListeners.firePropertyChange("pause", oldValue, this.pause);
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,83 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.io.File;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Objet representant un simulation qui doit etre faite
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationItem {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationItem.class);
+
+ /** le control pour la simulation */
+ protected SimulationControl control;
+ protected SimulationParameter parameter;
+ /** le zip contenant la simulation prete a etre executee */
+ protected File simulationZip;
+
+ public SimulationItem(SimulationControl control, SimulationParameter param,
+ File simulationZip) {
+ this.control = control;
+ this.parameter = param;
+ this.simulationZip = simulationZip;
+ }
+
+ public SimulationControl getControl() {
+ return control;
+ }
+
+ /**
+ * Permet de mettre le zip apres construction de l'objet. Cela est util
+ * car la construction du zip prend du temps, et on souhaite pouvoir le
+ * monitorer et donc il faut que l'item exist pour etre vu dans la console
+ * de queue de simulation.
+ * <p>
+ * Normalement seul l'objet SimulationService doit pouvoir appeler cette
+ * method, elle est donc protected
+ *
+ * @param simulationZip
+ */
+ protected void setSimulationZip(File simulationZip) {
+ this.simulationZip = simulationZip;
+ }
+
+ public SimulationParameter getParameter() {
+ return parameter;
+ }
+
+ public File getSimulationZip() {
+ return simulationZip;
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,254 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.types.Date;
+import java.io.File;
+import static org.codelutin.i18n.I18nf._;
+
+import java.rmi.RemoteException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
+
+/**
+ * Classe responsable de la simulation d'un {@link SimulationItem}. Pour cela
+ * il utilise le {@link SimulatorLauncher}. Si la simulation echoue
+ * a cause d'une RemoteException alors le job est resoumis dans la queue
+ * de simulation par l'appel de la methode
+ * {@link SimulationService#reportError}.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationJob implements Runnable, Comparable<SimulationJob> {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationJob.class);
+
+ /** l'ensemble des post actions a effectuer pour ce job */
+ protected Set<PostAction> postActions = new HashSet<PostAction>();
+ /** Le {@link SimulationService} dans lequel a ete cree ce job */
+ protected SimulationService simulationService;
+ /** si non null contient le {@link SimulationJob} qui a genere ce job, ca
+ * veut dire que ce job est du a un plan d'analyse*/
+ protected SimulationJob parentJob;
+ /** item contenant les infos de la simulation */
+ protected SimulationItem item;
+ /** la priorite de cet item dans la queue */
+ protected int priority;
+ /** Le launcher a utiliser pour simuler cet item */
+ protected SimulatorLauncher launcher;
+
+ public SimulationJob(SimulationService simulationService, SimulationItem item, int priority) {
+ this(simulationService, null, item, priority);
+ }
+
+ public SimulationJob(SimulationService simulationService, SimulationJob parentJob, SimulationItem item, int priority) {
+ this.simulationService = simulationService;
+ this.parentJob = parentJob;
+ this.item = item;
+ this.priority = priority;
+ }
+
+ public void addPostAction(PostAction postAction) {
+ this.postActions.add(postAction);
+ }
+
+ public void removePostAction(PostAction postAction) {
+ this.postActions.remove(postAction);
+ }
+
+ /**
+ * demande l'annulation/arret de ce job. Si ce job n'etait pas encore actif
+ * un {@link SimulationServiceListener#simulationStop} est leve. Sinon
+ * il le sera lorsque la simulation se sera convenablement arretee.
+ * <p>
+ * Dans tous les cas une demande d'arret sur le control de la simulation
+ * est fait.
+ */
+ public void stop() {
+ // on essaie d'enlever ce job de la queue, au cas ou il ne serait pas
+ // encore lance
+ if (simulationService.cancel(this)) {
+ // on a pu annuler avec le lancement, on notify un stop puisqu'on
+ // ne passera jamais dans le run()
+ simulationService.fireStopEvent(this);
+ }
+ item.getControl().stopSimulation();
+ }
+
+ public SimulationJob getParentJob() {
+ return parentJob;
+ }
+
+ public SimulationItem getItem() {
+ return item;
+ }
+
+ public void setLauncher(SimulatorLauncher launcher) {
+ this.launcher = launcher;
+ }
+
+ public SimulatorLauncher getLauncher() {
+ return launcher;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public int compareTo(SimulationJob o) {
+ return this.priority - o.priority;
+ }
+
+ /**
+ * Fait la simulation. La simulation en elle meme est delegue au
+ * {@link SimulatorLauncher}. Le travail restant ici est le nettoyage,
+ * la gestion des erreurs ou l'iteration s'il sagit de plan d'analyse
+ * dependant.
+ */
+ public void run() {
+ try {
+ SimulationControl control = item.getControl();
+ SimulationParameter param = item.getParameter();
+ String id = control.getId();
+ log.debug("Start simulation: " + id);
+ simulationService.fireStartEvent(this);
+
+ if (getParentJob() == null && param.getUseAnalysePlan() && !param.isIndependentPlan()) {
+ // on est sur un plan d'analyse dependant, il faut generer les
+ // simulation les unes apres les autres
+ Iterator<SimulationJob> i =
+ new SimulationService.PrepareSimulationJob(simulationService, this);
+ while (i.hasNext()) {
+ log.info(_("Generate next simulation"));
+ SimulationJob subjob = i.next();
+ subjob.setLauncher(getLauncher());
+ subjob.run();
+ }
+
+ // nettoyage si besoin apres toutes les simulations
+ if (param.getOnlyExport()) {
+ for (File file : FileUtil.find(
+ SimulationStorage.getSimulationDirectory(),
+ id + "_[0-9]+$", false)) {
+ log.debug("Delete simulation " + file);
+ FileUtil.deleteRecursively(file);
+ }
+ }
+ } else {
+ // on est sur une simple simulation, ou le resultat d'un plan
+
+ // set date to 0 at beginning of simulation
+ control.setDate(new Date());
+ control.setProgress(0);
+ control.setStarted(true);
+
+ File zip = item.getSimulationZip();
+ SimulationStorage simulation = launcher.simulate(simulationService, control, zip);
+
+ try {
+ // copie les exports de simulation dans le repertoire
+ // souhaiter par l'utilisateur
+ if (param.getExportNames() != null &&
+ param.getExportNames().size() > 0) {
+ File exportDir = SimulationStorage.getResultExportDirectory(
+ simulation.getDirectory());
+ // FIXME verifier que pour les plans on a bien tous les
+ // export, c-a-d que les export son fait dans un sous rep
+ // portant le nom de la simu
+ FileUtil.copyAndRenameRecursively(exportDir,
+ new File(param.getExportDirectory()),
+ exportDir.getName(), id);
+ }
+ } catch (Exception eee) {
+ log.error(_("Can't export simulation %s", id), eee);
+ }
+
+ try {
+ // Si l'utilisateur souhaite seulement les exports
+ // on supprimer la/les simulations.
+ if (param.getOnlyExport()) {
+ // pour les plan dependant il faut le faire apres toutes
+ // les simulations donc pas ici
+ if (getParentJob() == null ||
+ param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ simulation.delete(false);
+ }
+ }
+ } catch (Exception eee) {
+ log.error(_("Can't delete simulation %s ", id), eee);
+ }
+
+ for (PostAction action : postActions) {
+ try {
+ action.finished(this, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do post action %s", action), eee);
+ }
+ }
+ }
+
+ } catch (Throwable eee) {
+ log.warn(_("Can't simulate %s", item.getControl().getId()), eee);
+ if (eee instanceof RemoteException) {
+ simulationService.reportError(getLauncher(), this);
+ } else {
+ // on ne le fait pas pour RemoteException, car la simulation
+ // va etre resoumise
+ for (PostAction action : postActions) {
+ action.exception(this, eee);
+ }
+ }
+ } finally {
+ simulationService.fireStopEvent(this);
+ }
+ }
+
+ /**
+ * Interface permettant d'implanter des actions a faire apres la simulation,
+ * Ces action ne se declenche pas pour les job de plan d'analyse pere
+ */
+ public static interface PostAction {
+ /**
+ * appeler lorsque la simulation s'arrete normalement
+ * @param job le job qui a fait la simulation
+ * @param sim la simulation qui vient d'etre faite
+ */
+ public void finished(SimulationJob job, SimulationStorage sim);
+ /**
+ * appeler lorsque la simulation a echouee
+ * @param job le job qui a fait la simulation
+ * @param eee l'exception qui a ete levee
+ */
+ public void exception(SimulationJob job, Throwable eee);
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,688 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.AnalysePlan;
+import fr.ifremer.isisfish.simulator.AnalysePlanContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationException;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.util.CompileHelper;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.PriorityBlockingQueue;
+import org.apache.commons.lang.mutable.MutableInt;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.util.FileUtil;
+import org.codelutin.util.ListenerSet;
+import org.codelutin.util.ObjectUtil;
+import org.codelutin.util.ZipUtil;
+
+/**
+ * Cette classe est responsable de conservation de toutes les simulations faites
+ * ou a faire. Pour ajouter une nouvelle simulation on appelle la methode
+ * {@link #submit}.
+ * <p>
+ * Cette classe sert aussi de modele pour le moniteur de queue
+ * <p>
+ * Il existe une instance unique pour toute l'application
+ * <p>
+ * Lors de l'instanciation de la classe, l'ensemble des
+ * {@link SimulationLauncher} disponible est recherche dans la configuration
+ * et un executor est cree pour chaque.
+ * <p>
+ * Si un {@link SimulationLauncher} genere trop d'erreur (RemoteException)
+ * Il est alors suspendu pour ne plus etre utilise pour les simulations.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationService {
+
+ static final public String SIMULATION_LAUNCHER = "simulation.launcher";
+ /** nombre maximal de simulation autoriser pour un plan */
+ // FIXME a rendre configurable MAX_PLAN_SIMULATION
+ static final public int MAX_PLAN_SIMULATION = 20000;
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationService.class);
+
+ static protected SimulationService instance = new SimulationService();
+
+ /**
+ * Retourne l'instance du SimulationService a utiliser
+ * @return
+ */
+ static public SimulationService getService() {
+ return instance;
+ }
+
+ protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
+ protected ListenerSet<SimulationServiceListener> listeners = new ListenerSet<SimulationServiceListener>();
+
+ // FIXME pouvoir configurer ceci en fichier de config
+ // FIXME ainsi que la mise a false, lors de la simulation de la derniere
+ // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
+ protected boolean autoLaunch = true;
+
+ /** L'executor utilise pour creer toutes les sous simulations des plans independants */
+ protected ExecutorService subSimulationComputationExecutor = Executors.newSingleThreadExecutor();
+ /** Tous les types de {@link SimulatorLauncher} disponibles, et leur executors associe */
+ protected Map<SimulatorLauncher, SimulationExecutor> executors;
+ /** Le nombre d'erreur pour les SimulatorLauncher */
+ protected Map<SimulatorLauncher, MutableInt> launcherError;
+ /** La queue contenant toutes les simulations a faire */
+ protected PriorityBlockingQueue<Runnable> queue = new PriorityBlockingQueue<Runnable>();
+
+ /** Contient les identifiants des simulations presentes dans {@ link #jobs}*/
+ protected Set<String> idJobs = new HashSet<String>();
+ /** La liste des jobs existant (queue + job demarre) */
+ protected Set<SimulationJob> jobs = new TreeSet<SimulationJob>();
+
+ /** La liste des jobs termines */
+ protected Set<SimulationJob> jobDones = new TreeSet<SimulationJob>();
+
+ /**
+ * Cree une instance et initialise les executors ainsi que le launcherError
+ */
+ protected SimulationService() {
+ // on cree un executor par type SimulatorLauncher
+ executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
+ launcherError = new HashMap<SimulatorLauncher, MutableInt>();
+ Properties prop = IsisFish.config.getOptionStartsWith(SIMULATION_LAUNCHER);
+ for (String key : prop.stringPropertyNames()) {
+ String value = prop.getProperty(key);
+ try {
+ SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil.newInstance(value);
+ SimulationExecutor se = new SimulationExecutor(this, sl, queue);
+ executors.put(sl, se);
+ launcherError.put(sl, new MutableInt(0));
+ } catch (Exception eee) {
+ log.warn(_("Can't instantiate %s", value), eee);
+ }
+ }
+ }
+
+ public Collection<SimulationExecutor> getSimulationExecutors() {
+ return executors.values();
+ }
+
+ public Set<SimulationJob> getJobs() {
+ return jobs;
+ }
+
+ public Set<SimulationJob> getJobDones() {
+ return jobDones;
+ }
+
+ /**
+ * Retourne la liste de tous les {@link SimulatorLauncher} disponible
+ * @return
+ */
+ protected Set<SimulatorLauncher> getSimulatorLaunchers() {
+ return executors.keySet();
+ }
+
+ public void addSimulationServiceListener(SimulationServiceListener l) {
+ listeners.add(l);
+ }
+
+ public void removeSimulationServiceListener(SimulationServiceListener l) {
+ listeners.remove(l);
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(propertyName, listener);
+ }
+
+ /**
+ * Ajoute le job au job en cours previent s'il n'etait pas deja present
+ * les listener {@link SimulationServiceListener#simulationStart}.
+ * @param job
+ */
+ protected void fireStartEvent(SimulationJob job) {
+ // on ajoute au cas on il n'y serait pas
+ if (jobs.add(job)) {
+ idJobs.add(job.getItem().getControl().getId());
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStart(job);
+ }
+ }
+ }
+
+ /**
+ * Supprime le job de la liste des jobs en cours et l'ajoute le job si
+ * besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit
+ * pas d'une simulation lancer par un plan d'analyse).
+ * Les listener sont prevenu par la methode
+ * {@link SimulationServiceListener#simulationStop}.
+ * @param job
+ */
+ protected void fireStopEvent(SimulationJob job) {
+ jobs.remove(job);
+ idJobs.remove(job.getItem().getControl().getId());
+
+ // on ajout au jobDones que les simulations avec erreur ou les
+ // simulation reellement demande par l'utilisateur (pas de simulation
+ // de plan
+ jobDones.add(job);
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStop(job);
+ }
+ }
+
+ /**
+ * Nettoie la liste des jobs faits
+ */
+ public void clearJobDone() {
+ jobDones.clear();
+ // FIXME prevoir quelque chose pour prevenir la console de queue
+ }
+
+ /**
+ * @return Returns the autoLaunch.
+ */
+ public boolean isAutoLaunch() {
+ return this.autoLaunch;
+ }
+
+ /**
+ * @param autoLaunch The autoLaunch to set.
+ */
+ public void setAutoLaunch(boolean autoLaunch) {
+ synchronized (this) {
+ boolean oldValue = this.autoLaunch;
+ this.autoLaunch = autoLaunch;
+ if (this.autoLaunch) {
+ this.notifyAll();
+ }
+ propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
+ }
+ }
+
+ /**
+ * Permet de mettre en attente les threads de simulation si l'utilisateur
+ * a suspendu la queue
+ */
+ protected void waitAutoLaunch() {
+ synchronized(this) {
+ while (!isAutoLaunch()) {
+ try {
+ log.info("autoLaunch is false waiting queue start");
+ this.wait();
+ } catch (InterruptedException eee) {
+ log.warn("Error during wait autoLaunch flag", eee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Permet d'ajouter une nouvelle simulation a la queue. Si la simulation est
+ * simple ou avec un plan d'experience dependant, un nouveau job est cree
+ * et directement ajout a la queue de jobs. S'il la simulation est un plan
+ * ou les simulations sont independantes, toutes les simulations sont
+ * genere et toute ajoute a la queue de simulation. Mais dans ce cas seul
+ * la simulation de depart est ajoute au jobs en cours, les simulations
+ * generees seront ajoutees lors de leur reel execution
+ *
+ * @param id l'identifiant de la simulation
+ * @param param les parametres de la simulation
+ * @param priority la priorite de la simulation
+ */
+ public void submit(String id, SimulationParameter param, int priority) {
+ // on l'ajoute tout de suite a la liste des simulations demandee
+ SimulationControl control = new SimulationControl(id);
+ SimulationItem item = new SimulationItem(control, param, null);
+ SimulationJob job = new SimulationJob(this, item, priority);
+ fireStartEvent(job);
+
+ // on construit le zip de la simulation
+ File zip = prepareSimulationZipFile(control, param, true);
+ item.setSimulationZip(zip);
+
+ if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ // c un plan d'analyse independant, on construit toute les sous simu
+ Runnable task = new PrepareSimulationJob(this, job);
+ subSimulationComputationExecutor.execute(task);
+ } else {
+ // l'item est fini d'etre initialise, on peut l'ajouter a la queue
+ // sauf si c'etait un plan independant ou se seront les sous simu
+ // qui seront dans la queue
+ queue.add(job);
+ }
+
+ }
+
+ /**
+ * Permet de resoumettre un job qui a ete pris par un thread mais qu'il
+ * ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
+ * que le launcher de l'executor ne fonctionne plus (il se met en pause
+ * tout seul)
+ *
+ * @param item l'item a resoumettre
+ */
+ protected void resubmit(SimulationJob job) {
+ queue.add(job);
+ }
+
+ /**
+ * Permet de soumettre a la queue un job provenant d'un plan.
+ * Ce plan ne doit pas apparaitre dans la console de queue.
+ *
+ * @param job
+ */
+ protected void submitSubJob(SimulationJob job) {
+ queue.add(job);
+ }
+
+ /**
+ * Supprime un job de la queue (annulation d'une simulation). Appele
+ * depuis {@link SimulationJob#stop}
+ *
+ * @param job le job a annuler
+ * @return vrai si la simulation a pu etre annulee avant sont lancement
+ * (encore presente dans la queue), faux si la simulation a deja ete
+ * prise par un thread de simulation ou quelle est terminee
+ */
+ protected boolean cancel(SimulationJob job) {
+ boolean result = queue.remove(job);
+ return result;
+ }
+
+ public boolean exists(String id) {
+ boolean result = idJobs.contains(id);
+ return result;
+ }
+
+ /**
+ * Report une erreur pour un launcher, on resoumet le job en supprimant
+ * le launcher utilise
+ *
+ * @param launcher le launcher posant probleme
+ * @param job le job qui n'a pas reussi a se faire
+ */
+ protected void reportError(SimulatorLauncher launcher, SimulationJob job) {
+ MutableInt i = launcherError.get(launcher);
+ i.setValue(i.intValue() + 1);
+ // si on a plus de N error, on stop l'executor associe
+ if (i.intValue() >= 5) {
+ log.error(_("Launcher %s will be stopped because there are too many error (%s)",
+ launcher, i.intValue()));
+ SimulationExecutor e = executors.get(launcher);
+ e.pause();
+ }
+ // il faut bien penser a supprimer le launcher pour qu'un autre executor
+ // puisse y mettre le sien
+ job.setLauncher(null);
+ resubmit(job);
+ }
+
+ /**
+ * Permet de genere les sous simulations d'un plan d'analyse. Pour les
+ * plan independant, on l'utilise en Runnable pour genere tous les plans
+ * possible et les soumettre a la queue. Pour les plans dependant
+ * on l'utilise seulement comme iterator. La methode afterSimulation des plans
+ * est appelee automatiquement a la fin de la simulation grace au mecanisme
+ * de PostAction sur les {@link SimulationJob}.
+ */
+ public static class PrepareSimulationJob implements Runnable, Iterator<SimulationJob>, SimulationJob.PostAction {
+
+ protected SimulationService simulationService;
+ protected AnalysePlanContext planContext;
+ protected SimulationJob job;
+ protected SimulationJob nextJob;
+ protected boolean doNext = true;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected int planNumber = 0;
+
+ public PrepareSimulationJob(SimulationService simulationService,
+ SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+ this.planContext = new AnalysePlanContext(control.getId(), param);
+ }
+
+ /**
+ * genere toutes les sous simulations et les places dans la queue
+ */
+ public void run() {
+ while (hasNext()) {
+ try {
+ SimulationJob subJob = next();
+ simulationService.submitSubJob(subJob);
+ } catch (Exception eee) {
+ log.error(_("Can't add simulation: ", job.getItem().getControl().getId()), eee);
+ }
+ }
+
+ }
+
+ /**
+ * Indique s'il y a encore des simulations dans le plan. Par defaut pour
+ * Eviter les plans sans fin, le nombre de plan genere par simulation
+ * est limite a {@link MAX_PLAN_SIMULATION}
+ *
+ * @return
+ */
+ public boolean hasNext() {
+ try {
+ // if user request stop simulation, stop all futur planned simulation
+ // and if last doNext is false not do next simulation
+ boolean result = !control.isStopSimulationRequest() && doNext;
+ if (result) {
+ // si deja creer on ne le refet pas
+ if (nextJob == null) {
+ // Prepration de la simulation a faire
+ // create next id simulation
+ planNumber++;
+ if (planNumber > MAX_PLAN_SIMULATION) {
+ log.error(_("Analyse plan error, too many simulation for %s : %s", id, planNumber));
+ doNext = false;
+ result = false;
+ } else {
+ String simId = id + "_" + planNumber;
+ param.setAnalysePlanNumber(planNumber);
+
+ File tmpDirectory = FileUtil.createTempDirectory(
+ "isisfish-simultation-", "-preparation");
+ SimulationStorage sim = SimulationStorage.importAndRenameZip(
+ tmpDirectory, job.getItem().getSimulationZip(), simId);
+ sim.getParameter().setAnalysePlanNumber(planNumber);
+
+ // appel de tous les plans pour modifier la simulation
+ for (AnalysePlan plan : param.getAnalysePlans()) {
+ result = result && plan.beforeSimulation(planContext, sim);
+ if (!result) {
+ nextJob = null;
+ break;
+ }
+ }
+ doNext = result;
+ if (result) {
+ File zip = sim.createZip();
+ SimulationItem item = new SimulationItem(control, param, zip);
+ nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ nextJob.addPostAction(this); // pour l'appel des after des plans
+ }
+ // quoi qu'il arrive on supprime le repertoire temporaire
+ if (!FileUtil.deleteRecursively(tmpDirectory)) {
+ log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ }
+ }
+ }
+ }
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException(_("isisfish.error.evalute.plan.script"), eee);
+ }
+
+ }
+
+ public SimulationJob next() {
+ hasNext(); // pour etre sur qu'il a ete appele au moins une fois
+ SimulationJob result = nextJob;
+ nextJob = null;
+ return result;
+
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("Not supported.");
+ }
+
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ doNext = true;
+ boolean result = true;
+
+ // appel de tous les plans pour modifier la simulation
+ for (AnalysePlan plan : sim.getParameter().getAnalysePlans()) {
+ try {
+ result = plan.afterSimulation(planContext, sim);
+ doNext = doNext && result;
+ } catch (Exception eee) {
+ log.error(_("Stop simulation plan, because can't call afterSimulation correctly on plan %s",
+ plan.getClass().getName()), eee);
+ doNext = false;
+ }
+ }
+
+ }
+
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ doNext = false;
+ }
+ }
+
+ static public void message(SimulationControl control, String message) {
+ log.info(message);
+ if (control != null) {
+ control.setText(message);
+ }
+ }
+
+ /**
+ * Prepare les fichiers qui seront utils à la simulation:
+ * <li> scripts
+ * <li> rules
+ * <li> exports
+ * <li> simulators
+ * <li> export de la database de la region
+ * <p>
+ * Le tout est zippé et le zip est retourné, il peut-être directement
+ * importé dans le SimulationStorage (en le renomant comme il faut
+ * importAndRenameZip).
+ * <p>
+ * Ce zip est automatiquement supprimé a la fin de l'application.
+ *
+ * @param control le controleur
+ * @param param les parametre de la simulation
+ * @param compile si vrai la version compile des fichiers Java est aussi
+ * mise dans le fichier zip. Cela peut servir pour les simulations locales
+ * pour ne pas recompiler pour chaque simulation avec plan d'analyse
+ * @return un zip de simulation pour une simulation pret a être faite
+ * @throws SimulationException pour tout problème rencontré (IO,Topia...)
+ */
+ protected File prepareSimulationZipFile(SimulationControl control,
+ SimulationParameter param, boolean compile) throws SimulationException {
+ try {
+ File tmpDirectory = FileUtil.createTempDirectory("isisfish-simultation-", "-preparation");
+ //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
+ File regionXML = new File(tmpDirectory, SimulationStorage.DATA_BACKUP_FILENAME);
+
+ // sauvegarde des parametres
+ Properties prop = param.toProperties();
+ //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
+ File f = new File(tmpDirectory, SimulationStorage.PARAMETERS_FILENAME);
+ FileOutputStream out = new FileOutputStream(f);
+ //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
+ prop.store(out, "Parameters");
+ out.close();
+
+ // backup pour toutes les simulations, pour eviter que l'utilisateur
+ // ne puisse le modifier en meme temps
+ message(control, _("isisfish.message.backup.database.progress"));
+ RegionStorage region = RegionStorage.getRegion(param.getRegionName());
+ TopiaContext tc = region.getStorage().beginTransaction();
+ tc.backup(regionXML, true);
+ tc.closeContext();
+ message(control, _("isisfish.message.backup.database.finished"));
+
+ // copie de toutes regles a utiliser
+ List<Rule> rules = param.getRules();
+ for (Rule rule : rules) {
+ String name = RuleStorage.getName(rule);
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
+ }
+ // copie des regles reclamées par les plans d'analyse
+ for(String name : param.getExtraRules()) {
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
+ }
+
+ // copie de toutes regles a utiliser
+ List<AnalysePlan> plans = param.getAnalysePlans();
+ for (AnalysePlan plan : plans) {
+ String name = AnalysePlanStorage.getName(plan);
+ FileUtil.copy(new File(AnalysePlanStorage.getAnalysePlanDirectory(), name + ".java"),
+ new File(tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH + File.separator + name + ".java"));
+ }
+
+ // copie de tous les exports a utiliser
+ for (String name : param.getExportNames()) {
+ name = name.endsWith(".java")?name:name + ".java";
+ FileUtil.copy(new File(ExportStorage.getExportDirectory(), name),
+ new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name));
+ }
+
+ // copie de tous les scripts a utiliser
+ FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(), tmpDirectory, ".*\\.java$");
+
+ // copie de tous les simulateurs a utiliser
+ FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(), param.getSimulatorName()),
+ new File(tmpDirectory, SimulatorStorage.SIMULATOR_PATH + File.separator + param.getSimulatorName()));
+
+ if (compile) {
+ compileAllFile(control, tmpDirectory);
+ }
+
+ // creation du zip
+ File result = new File(tmpDirectory.getPath() + ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, tmpDirectory, null);
+
+ // poussin 20071015: remove temp directory
+ if (!FileUtil.deleteRecursively(tmpDirectory)) {
+ log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ }
+
+ return result;
+ } catch (IOException eee) {
+ throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
+ } catch (TopiaException eee) {
+ throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
+ }
+
+ }
+
+ /**
+ * Compile les fichiers présent dans le répertoire passé en
+ * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
+ * et scripts. Seul les fichiers des 3 premiers répertoire sont compilé
+ * les fichiers du dernier sont compilé par les dépendances qu'on les autres
+ * <p>
+ * Il permet donc de compiler facilement tous les fichiers pour une
+ * simulation
+ *
+ * @param control le controleur
+ * @param directory le répertoire où compiler
+ */
+ protected void compileAllFile(SimulationControl control, File directory) {
+
+ message(control, "Scripts and rules Compilation");
+ long currentTime = System.nanoTime();
+
+ //
+ // Recherche des fichiers a compiler
+ // On ne prend pas les scripts, car ils sont tous copiés mais pas
+ // forcément util. Lors de la compilation des autres fichiers, les
+ // script servant réellement seront automatiquement compilé
+
+ List<File> fileToCompile = new ArrayList<File>();
+
+ List<File> tmp = FileUtil.find(new File(directory, ExportStorage.EXPORT_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, SimulatorStorage.SIMULATOR_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ //
+ // Compilation
+ //
+
+ CompileHelper.compile(directory, fileToCompile, directory, null);
+ long time = System.nanoTime() - currentTime;
+ message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
+
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface SimulationServiceListener {
+
+ /**
+ * Notifie start of simulation
+ * @param job job that responsable to simulation
+ */
+ public void simulationStart(SimulationJob job);
+
+ /**
+ * Notifie end of simulation
+ * @param job job that responsable to simulation
+ */
+ public void simulationStop(SimulationJob job);
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,134 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.util.ArrayList;
+import java.util.Map;
+import static org.codelutin.i18n.I18nf._;
+
+import java.util.Set;
+import java.util.WeakHashMap;
+import javax.swing.JProgressBar;
+import javax.swing.table.AbstractTableModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationServiceTableModel extends AbstractTableModel {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationServiceTableModel.class);
+
+ protected final static String[] columnHeader = new String[]{
+ _("isisfish.queue.id"),
+ _("isisfish.queue.plan"),
+ _("isisfish.queue.launcher"),
+ _("isisfish.queue.status"),
+ _("isisfish.queue.progression"),
+ };
+ protected SimulationService simulationService;
+ protected ArrayList<SimulationJob> jobs;
+ /** progress bar (one for each row) */
+ protected Map<SimulationJob, JProgressBar> progress =
+ new WeakHashMap<SimulationJob, JProgressBar>();
+
+ public SimulationServiceTableModel(SimulationService simulationService, Set<SimulationJob> jobs) {
+ this.simulationService = simulationService;
+ this.jobs = new ArrayList<SimulationJob>(jobs);
+ }
+
+ protected JProgressBar getProgressBar(SimulationJob job) {
+ JProgressBar result = progress.get(job);
+ if (result == null) {
+ result = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
+ result.setStringPainted(true);
+ progress.put(job, result);
+ }
+ return result;
+ }
+
+ public SimulationJob getJob(int row) {
+ SimulationJob result = jobs.get(row);
+ return result;
+ }
+
+ public int getRowCount() {
+ int result = jobs.size();
+ return result;
+ }
+
+ public int getColumnCount() {
+ int result = columnHeader.length;
+ return result;
+ }
+
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ SimulationJob job = jobs.get(rowIndex);
+ SimulationControl control = job.getItem().getControl();
+ String id = control.getId();
+ SimulationParameter param = job.getItem().getParameter();
+
+ Object result = "";
+
+ switch (columnIndex) {
+ case 0:
+ result = id;
+ break;
+ case 1:
+ if (param.getUseAnalysePlan()) {
+ int number = param.getAnalysePlanNumber();
+ result = number;
+ }
+ break;
+ case 2:
+ result = job.getLauncher().toString();
+ break;
+ case 3:
+ if (control != null) {
+ if (control.isStopSimulationRequest()) {
+ result = _("isisfish.launch.stop");
+ } else {
+ result = control.getText();
+ }
+ }
+ break;
+ case 4:
+ JProgressBar pb = getProgressBar(job);
+ if (control != null) {
+ pb.setMaximum(control.getProgressMax());
+ pb.setValue(control.getProgress());
+ pb.setString(control.getDate().getMonth() + "/" + control.getDate().getYear());
+ }
+ result = pb;
+ break;
+ }
+ return result;
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.rmi.RemoteException;
+
+/**
+ * Interface devant etre implanter par les classes souhaitants etre utilisees
+ * comme plugin de simulation (CapArmor, SubProcess, ...)
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface SimulatorLauncher {
+
+ /**
+ * Execute une simulation et retourne le storage ou est stocker la
+ * simulation
+ *
+ * @param simulationService le {@link SimulationService} qui a initie
+ * la simulation
+ * @param control le control de la simulation
+ * @param simulationZip le zip contenant la simulation prete a etre executee
+ * @return le storage contenant la simulation qui vient d'etre faite
+ * ou null en fait au lieu de faire une seul simulation, plusieurs ou ete
+ * faite par exemple tout un plan d'analyse. Cette classe est tout de meme
+ * responsable du stockage de chaque simulation dans des storages.
+ * <b>IMPORTANT</b> Quoi qu'il arrive
+ *
+ * @throws java.rmi.RemoteException Si pour l'execution de la simulation
+ * on utilise des resources distantes (serveurs) et que ceux si non pas pu
+ * etre contacte. Dans ce cas la simulation n'a pas ete faite et cette
+ * exception est levee.
+ */
+ public SimulationStorage simulate(SimulationService simulationService,
+ SimulationControl control, File simulationZip)
+ throws RemoteException;
+
+ /**
+ * Retourne le nombre maximal de thread de simulation simultane supporte
+ * @return un nombre superieur a 0
+ */
+ public int maxSimulationThread();
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,158 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.io.InputStream;
+import java.rmi.RemoteException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SubProcessSimulationLauncher implements SimulatorLauncher {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SubProcessSimulationLauncher.class);
+
+ public SimulationStorage simulate(SimulationService simulationService, SimulationControl control, File simulationZip) throws RemoteException {
+ String simulationId = control.getId();
+ SimulationStorage simulation = null;
+ try {
+ simulation = SimulationStorage.importAndRenameZip(
+ simulationZip, simulationId);
+ simulation = subProcessSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", simulationId), eee);
+ simulation.getInformation().setException(eee);
+ }
+
+ // on retourne directement le simulation storage passe en argument
+ // car la simulation a ete faite avec
+ return simulation;
+
+ }
+
+ public int maxSimulationThread() {
+ int result = Runtime.getRuntime().availableProcessors();
+ return result;
+ }
+
+ public SimulationStorage subProcessSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
+
+ String simulationId = control.getId();
+ // on ferme le SimulationStorage pour ne pas interferer avec le process
+ simulation.closeStorage();
+
+ String java = System.getProperty("java.home") +
+ File.separator + "bin" + File.separator + "java";
+ String classpath = System.getProperty("java.class.path");
+
+ // prepare le process
+ ProcessBuilder processBuilder = new ProcessBuilder(
+ java, "-classpath", classpath,
+ IsisFish.class.getName(),
+ "--simulate", simulationId);
+ processBuilder.redirectErrorStream(true);
+
+ // demarrage du process
+ Process process = processBuilder.start();
+
+ if (control != null) {
+ // prepare de thread de surveillance du process si control n'est pas null
+ Thread monitor = new SimulationCheckpointExternalProcessThread(
+ control, simulation, process);
+ monitor.start();
+ }
+
+ // on attend que la simulation soit fini
+ process.waitFor();
+ return simulation;
+ }
+
+ /**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+ protected class SimulationCheckpointExternalProcessThread extends Thread { // SimulationCheckpointThread
+
+ /**
+ * Logger for this class
+ */
+ protected SimulationControl control = null;
+ protected SimulationStorage simulation = null;
+ protected Process process = null;
+ // on l'appel plutot out que in, car c le output du process lance
+ protected InputStream out = null;
+
+ public SimulationCheckpointExternalProcessThread(SimulationControl control,
+ SimulationStorage simulation, Process process) {
+ this.control = control;
+ this.simulation = simulation;
+ this.process = process;
+ out = process.getInputStream();
+
+ }
+
+ @Override
+ public void run() {
+ int sleepTime = 2000;
+ int error = 0;
+ while (true) {
+ try {
+ out.skip(out.available());
+ Thread.sleep(sleepTime);
+ // on ne lit pas le stop, car le stop ne peut-etre appeler
+ // que par l'utilisateur qui est de ce cote de la machine
+ simulation.readControl(control, "stop");
+
+ if (control.isStopSimulationRequest()) {
+ // FIXME, un destroy du process est peut-etre un peu violent ?
+ process.destroy();
+ // passe artificiellement le control a fini
+ control.stopSimulation();
+ }
+ if (!control.isRunning()) {
+ return;
+ }
+ } catch (Exception eee) {
+ log.debug("Can't update control for " + control.getId(), eee);
+ }
+ }
+
+ }
+ }
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,133 @@
+/*
+ * Queue.java
+ *
+ * Created on 22 août 2008, 23:01
+ */
+
+package fr.ifremer.isisfish.ui.simulator;
+
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTableModel;
+
+/**
+ *
+ * @author poussin
+ */
+public class Queue extends javax.swing.JPanel {
+
+ /** Creates new form Queue */
+ public Queue() {
+ initComponents();
+ SimulationService ss = SimulationService.getService();
+ modelJobs = new SimulationServiceTableModel(ss, ss.getJobs());
+ modelJobDones = new SimulationServiceTableModel(ss, ss.getJobDones());
+ tableJobs.setModel(modelJobs);
+ tableJobDones.setModel(modelJobDones);
+ }
+
+
+ private void initComponents() {
+ bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
+
+ tableJobsScroll = new javax.swing.JScrollPane();
+ tableJobs = new javax.swing.JTable();
+ tableJobDonesScroll = new javax.swing.JScrollPane();
+ tableJobDones = new javax.swing.JTable();
+ autoLaunchButton = new javax.swing.JToggleButton();
+ jButton1 = new javax.swing.JButton();
+ jButton2 = new javax.swing.JButton();
+
+ tableJobsScroll.setViewportView(tableJobs);
+
+ tableJobDonesScroll.setViewportView(tableJobDones);
+
+ autoLaunchButton.setText("Auto Launch");
+
+ org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jButton1, org.jdesktop.beansbinding.ELProperty.create("${action.enabled}"), autoLaunchButton, org.jdesktop.beansbinding.BeanProperty.create("selected"));
+ bindingGroup.addBinding(binding);
+
+ jButton1.setText("Stop simulation");
+
+ binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobs, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton1, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding.setSourceNullValue(false);
+ binding.setSourceUnreadableValue(false);
+ bindingGroup.addBinding(binding);
+
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ stopSimulation(evt);
+ }
+ });
+
+ jButton2.setText("View log");
+
+ binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobDones, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton2, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding.setSourceNullValue(false);
+ binding.setSourceUnreadableValue(false);
+ bindingGroup.addBinding(binding);
+
+ jButton2.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ viewLog(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(12, 12, 12)
+ .addComponent(autoLaunchButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jButton1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jButton2))
+ .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
+ .addComponent(tableJobsScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(tableJobsScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(autoLaunchButton)
+ .addComponent(jButton1)
+ .addComponent(jButton2))
+ .addContainerGap())
+ );
+
+ bindingGroup.bind();
+ }
+
+ private void stopSimulation(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ modelJobs.getJob(i).stop();
+ }
+ }
+
+ private void viewLog(java.awt.event.ActionEvent evt) {
+ // TODO add your handling code here:
+ }
+
+ protected SimulationServiceTableModel modelJobs;
+ protected SimulationServiceTableModel modelJobDones;
+ protected javax.swing.JToggleButton autoLaunchButton;
+ protected javax.swing.JButton jButton1;
+ protected javax.swing.JButton jButton2;
+ protected javax.swing.JTable tableJobDones;
+ protected javax.swing.JScrollPane tableJobDonesScroll;
+ protected javax.swing.JTable tableJobs;
+ protected javax.swing.JScrollPane tableJobsScroll;
+ private org.jdesktop.beansbinding.BindingGroup bindingGroup;
+
+}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -41,10 +41,10 @@
import static fr.ifremer.isisfish.datastore.SimulationStorage.getSimulation;
import static fr.ifremer.isisfish.datastore.SimulationStorage.getSimulationNames;
import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
-import fr.ifremer.isisfish.simulator.SimulationHelper;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationProperties;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil;
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import org.apache.commons.logging.Log;
@@ -58,6 +58,7 @@
import javax.swing.*;
import javax.swing.table.TableModel;
import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -68,6 +69,7 @@
*/
public class SimulatorAction {
+ static private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulatorAction.class);
@@ -96,9 +98,7 @@
uiContext.setData("RuleNames", RuleStorage.getRuleNames());
// put default value in param
- param.setlocal(true);
param.setSimulatorName(IsisFish.config.getSimulatorClassfile());
- param.setlocal(IsisFish.config.isSimulatorLocal());
param.setTagValue(IsisFish.config.getDefaultTagValueAsMap());
param.setExportDirectory(IsisFish.config.getDefaultExportDirectory().toString());
param.setExportNames(IsisFish.config.getDefaultExportNamesAsList());
@@ -261,7 +261,17 @@
try {
uiContext.setData("SimulationLaunched", false);
- SimulationHelper.simulate(simulId, param, inQueue);
+ simulId += " " + dateFormat.format(new java.util.Date());
+
+ if (simulId == null || "".equals(simulId) ||
+ SimulationStorage.localyExists(simulId) ||
+ SimulationService.getService().exists(simulId)) {
+ log.error("Can't start simulation, bad id: " + simulId);
+ throw new SimulationException(_("isisfish.error.start"));
+ }
+ SimulationParameter p = param.copy();
+
+ SimulationService.getService().submit(simulId, p, 0);
selectTab(tabs, true, 6);
//TODO Voir si cela fonctionne
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.ui.simulator;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.ui.widget.EnabledIfListNotEmpty;
import fr.ifremer.isisfish.ui.widget.EnabledIfItemSelectedInList;
@@ -48,7 +48,7 @@
final JButton start, final JButton remove, final JButton showLog,
final JTable table, final JTable tableDone) {
- SimulationManager.getInstance().addPropertyChangeListener("autoLaunch",
+ SimulationService.getService().addPropertyChangeListener("autoLaunch",
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
start.setEnabled(isSimulStartButtonEnabled(table));
@@ -114,7 +114,7 @@
* <code>false</code> otherwise
*/
public static boolean isSimulStartButtonEnabled(JTable table) {
- return !SimulationManager.getInstance().isAutoLaunch() &&
+ return !SimulationService.getService().isAutoLaunch() &&
(table.getRowCount() > 0);
}
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -66,6 +66,7 @@
<map>
<!-- Les composants ajoutés pour isis -->
<!-- panel -->
+ <entry key="Queue"><value>fr.ifremer.isisfish.ui.simulator.Queue</value></entry>
<entry key="MatrixPanel"><value>org.codelutin.math.matrix.gui.MatrixPanelEditor</value></entry>
<entry key="OpenMapToolPanel"><value>fr.ifremer.isisfish.map.OpenMapToolPanel</value></entry>
<entry key="SeasonIntervalPanel"><value>fr.ifremer.isisfish.ui.widget.IntervalPanel</value></entry>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -144,9 +144,9 @@
<button constraints="buttonSimulParamsSimulate" id="buttonSimulParamsSimulate"
text="isisfish.common.simulate"
actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs)"/>
-
+<!-- La queue n'existe plus
<button constraints="buttonSimulParamsAddQueue" id="buttonSimulParamsAddQueue"
text="isisfish.common.addQueue"
actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'true', $simulTabs)"/>
-
+ -->
</panel>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-15"?>
+<Queue/>
+<!--
<panel id="simulQueue" name="isisfish.queue.title" constraints="simulQueue" layout="XMLGridLayout(fr/ifremer/isisfish/ui/simulator/Queue.xgl)">
<scrollPane constraints="queueTable">
@@ -18,13 +20,11 @@
</scrollPane>
<button constraints="buttonSimulQueueStart" id="buttonSimulQueueStart" text="isisfish.queue.simulationLaunch"
- actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationManager.getInstance(), 'true')"/>
- <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueueStart($buttonSimulQueueStart)"-->
+ actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationService.getService(), 'true')"/>
<button constraints="buttonSimulQueueRemove" id="buttonSimulQueueRemove" text="isisfish.queue.stopSimulation"
- actionCommand="xpath:setStopSimulationRequest(getSimulationControl($queueModel, $queueTable/selectedRow), 'true')"/>
+ actionCommand="xpath:stop(getJob($queueModel, $queueTable/selectedRow), 'true')"/>
<button constraints="buttonSimulQueueShowLog" id="buttonSimulQueueShowLog" text="isisfish.queue.showLog"
actionCommand="fr.ifremer.isisfish.ui.simulator.SimulatorAction.showLog($queueTableDone,$queueModelDone,$queueTableDone/selectedRow)"/>
- <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueue($buttonSimulQueueShowLog,$queueTableDone)"-->
- <!--TODO ne fonctionne pas non plusorigin="$queueTableDone/selectedRow!=-1"-->
</panel>
+-->
\ No newline at end of file
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -4,7 +4,9 @@
layout="BorderLayout" Maximizable="true" Closable="true"
bundle="org.codelutin.i18n.I18nBundleBridge">
+ <Queue/>
+<!--
<xpanel xml="simulator/Queue.xml"/>
-
+-->
</Frame>
1
0
Author: bpoussin
Date: 2008-08-21 16:23:06 +0000 (Thu, 21 Aug 2008)
New Revision: 1309
Modified:
trunk/isis-fish/doc/Todo.rst
Log:
mise a jour du todo
Modified: trunk/isis-fish/doc/Todo.rst
===================================================================
--- trunk/isis-fish/doc/Todo.rst 2008-08-21 16:22:26 UTC (rev 1308)
+++ trunk/isis-fish/doc/Todo.rst 2008-08-21 16:23:06 UTC (rev 1309)
@@ -1,22 +1,40 @@
-Pour la version 3.2.0:
-- parsing d'option
-- vcs
-- equation 1
-- equation 2
-- algo avec maille
+Pour la version 3.2.0.0:
+- suppression du la queue de simulation (et du bouton associe)
+(d)- parsing d'option
+(d)- equation TechnicalEfficiency
+(d)- equation Inactivity
+(d)- algo avec maille
- lancement de simulation dans un process extern qui ecrit sont etat dans un fichier
- suivi de l'etat des fichiers par un thread.
+(d)- passage en I18nf
+(d)- prise en compte modif fichier isis-config existant
+(d)- vcs (attention au merge avec conflit, en svn il faut faire un resolv conflict)
+(d)- interface d'upgrade de script pour nouvelle implatantion vcs
+- mode remote sur caparmor (type de simulation plugable, inprocess, batch, caparmor, remote, ...)
+- sauvegarde des resultats plugable par listener (bd, mexico XML, mexico binaire, socket, ...)
+- passage en UTF-8
+- lors de l'import d'une region le service de migration topia ne se met pas en route
+- nouvelle migration de int -> double StrategyMonthInfo
+Pour la version 3.2.0.1:
+- jaxx + validator
+- utilisation de velocity pour les templates de script
+- interface de saisie des configs
+- import/export de script
+- supprimer la dependance a lutinXML qui est du a MatrixHelper qui l'utilise encore (a supprimer du code, normalement plus personne ne l'utilise)
+- option de lancement -d --debug (voir meme --logLevel [debug,info,warn,error,fatal])
+- icone dans la status bar de l'etat de connexion au svn/serveur
+- Lors de la saisie d'un champs, mettre un message d'information dans la bar de status ou autre pour
+ expliquer ce que l'on souhaite, l'utiliser aussi pour avertir qu'un champs n'est pas utilise dans les calcules
+- expliquer comment debugguer avec NetBeans
+- mettre les valeurs pas defaut sur les champs
+
Pour la version 4.0.0.0:
- db4o (test de perf pour simulation, sauvegarde/rendu des resultats)
-- jaxx + validator
-Pour la version 4.0.0.1:
-- utilisation de velocity pour les templates de script
-
- dans interface de demande de config, proposer le choix de l'emplacement de la base (montre la place disque restante)
- Ajouter dans le wiki, la signification du 3eme chiffre de version (version API de script)
2
1
Author: bpoussin
Date: 2008-08-21 16:22:26 +0000 (Thu, 21 Aug 2008)
New Revision: 1308
Modified:
trunk/isis-fish/src/xmi/isis-fish.zargo
Log:
- modification de StrategyMonthInfo.[numberOfTrips|minInactivityDays] de int en double
Modified: trunk/isis-fish/src/xmi/isis-fish.zargo
===================================================================
(Binary files differ)
1
0
r1307 - in trunk/isis-fish/src/java/fr/ifremer/isisfish: . datastore datastore/migration entities simulator ui/widget vcs
by bpoussin@users.labs.libre-entreprise.org 21 Aug '08
by bpoussin@users.labs.libre-entreprise.org 21 Aug '08
21 Aug '08
Author: bpoussin
Date: 2008-08-21 16:21:52 +0000 (Thu, 21 Aug 2008)
New Revision: 1307
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
Log:
- modification de StrategyMonthInfo.[numberOfTrips|minInactivityDays] de int en double
- correction du lanceur de simulation pour que les threads de l'executor retrouve bien la simu a faire
- amelioration des logs
- vcs fonctionnel
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -123,6 +123,7 @@
protected long startingTime = System.nanoTime();
public IsisConfig() {
+
for (Option o : Option.values()) {
setDefaultOption(o.key, o.defaultValue);
}
@@ -268,10 +269,10 @@
setOption(Option.SIMULATOR_LAUNCHER.key, value);
}
- public boolean isSimulationShowOnlyQueue() {
- Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_QUEUE.key);
- return result;
- }
+// public boolean isSimulationShowOnlyQueue() {
+// Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_QUEUE.key);
+// return result;
+// }
public boolean isSimulationShowOnlyError() {
Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_ERROR.key);
@@ -498,7 +499,7 @@
"password", Option.SIMULATOR_PASSWORD.key,
"simulationServer", Option.SIMULATOR_SERVER.key,
"simulationShowOnlyError", Option.SIMULATION_SHOW_ONLY_ERROR.key,
- "simulationShowOnlyQueue", Option.SIMULATION_SHOW_ONLY_QUEUE.key,
+ "simulationShowOnlyQueue", null, // Option.SIMULATION_SHOW_ONLY_QUEUE.key,
"smtpServer", Option.SMTP_SERVER.key,
"userMail", Option.USER_MAIL.key,
"userName", Option.USER_NAME.key,
@@ -515,8 +516,13 @@
"vcs.typeRepo", null,
"vcs.useSshConnexion", null,
"vcs.userName", null,
+ "version", null,
+ "projectName", null,
+ "simulationReportMail", null,
+
};
+ log.info("Check configuration change");
for(int i=0; i<keys.length;) {
String oldKey = keys[i++];
String newKey = keys[i++];
@@ -524,10 +530,9 @@
String value = getOption(oldKey);
if (value != null) {
mustSave = true;
- if (newKey == null) {
- // pas d'equivalent a la cle, on la supprime
- homefile.remove(oldKey);
- } else {
+ // quoi qu'il arrive on enleve l'ancienne cle
+ homefile.remove(oldKey);
+ if (newKey != null) {
setOption(newKey, value);
}
}
@@ -535,7 +540,16 @@
}
if (mustSave) {
saveForUser();
+ log.info("Config file migration done");
+ try {
+ save(new File("/tmp/test.properties"), true);
+ } catch(Exception eee ){
+ eee.printStackTrace();
+ }
}
+ if (log.isDebugEnabled()) {
+ printConfig();
+ }
}
//////////////////////////////////////////////////
@@ -545,7 +559,7 @@
static public enum Option {
COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
- CONFIG_FILE("config.file", _("isisfish.config.main.configFileName.description"), getUserHome() + File.separator + "." + CONFIG_FILENAME),
+ CONFIG_FILE(CONFIG_FILE_NAME, _("isisfish.config.main.configFileName.description"), CONFIG_FILENAME),
BACKUP_DIRECTORY("backup.directory", _("isisfish.config.main.defaultBackupDirectory.description"), getUserHome() + File.separator + "isis-backup"),
DEFAULT_EXPORT_DIRECTORY("default.export.directory", _("isisfish.config.main.defaultExportDirectory.description"), getUserHome() + File.separator + "isis-export"),
@@ -568,8 +582,8 @@
LOCALE("locale", _("isisfish.config.main.locale.description"), "fr_FR"),
// REGION_MAP("regionMap", _("isisfish.config.main.regionMap.description"), "maps"),
// RESULT_EXPORT("resultExport", String.class, 15, n_("isisfish.config.main.resultExport.description"), "resultExports"),
- SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", _("isisfish.config.main.simulationShowOnlyError.description"), "true"),
- SIMULATION_SHOW_ONLY_QUEUE("simulationShowOnlyQueue", _("isisfish.config.main.simulationShowOnlyQueue.description"), "true"),
+ SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", _("isisfish.config.main.simulationShowOnlyError.description"), "false"),
+// SIMULATION_SHOW_ONLY_QUEUE("simulationShowOnlyQueue", _("isisfish.config.main.simulationShowOnlyQueue.description"), "true"),
// if false no graphical interface
LAUNCH_UI("launch.ui", _("isisfish.config.main.launchUI.description"), "true"),
@@ -582,11 +596,11 @@
// can be None, CVS or SVN. only None or SVN work
VCS_TYPE(VCS.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
- // depend of VCS_TYPE, for SVN can be http or ssh
- VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "http"),
+ // depend of VCS_TYPE, for SVN can be svn, svn+ssh, http or file
+ VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "svn"),
VCS_SSH_KEY_FILE(VCS.VCS_SSH_KEY_FILE, _("isisfish.config.vcs.keyFile.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
// user login to access vcs
- VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), "anonymous"),
+ VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), ""),
VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, _("isisfish.config.vcs.userPassword.description"), ""),
VCS_HOST_NAME(VCS.VCS_HOST_NAME, _("isisfish.config.vcs.hostName.description"), "labs.libre-entreprise.org"),
VCS_PATH(VCS.VCS_PATH, _("isisfish.config.vcs.remotePath.description"), "/svnroot/isis-fish-data"),
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -74,6 +74,7 @@
import org.swixml.ConverterLibrary;
import org.codelutin.i18n.I18n;
+import org.codelutin.log.UserLog;
import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
import org.codelutin.util.VersionNumber;
@@ -125,7 +126,11 @@
// action after init
config.doAction(IsisConfig.Step.AfterInit.ordinal());
- initVCS();
+ try {
+ initVCS();
+ } catch (Exception eee) {
+ log.warn(_("Error during vcs initialisation"), eee);
+ }
log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
@@ -187,21 +192,11 @@
}
-// public static void initVCS() {
-// StringBuilder sb = new StringBuilder();
-// sb.append("connectionState : ").append(vcsConfig.getConnectionState());
-// sb.append("\nhasPreviousConfig : ").append(vcsConfig.hasPreviousConfig());
-// sb.append("\nisTypeChanged : ").append(vcsConfig.isTypeChanged());
-// sb.append("\nneedMigration : ").append(vcsConfig.needMigration());
-// if (vcsConfig.needMigration()) {
-// sb.append("\nmigrationType ").append(vcsConfig.getMigrationType());
-// }
-// for (String s : sb.toString().split("\n")) {
-// log.info(s);
-// }
-//
-// }
-
+ /**
+ * Veto utilise lors de l'init du vcs pour permettre a l'utilisateur de
+ * refuser certaine action. S'il refuse les switchs le vcs est passe en
+ * readonly.
+ */
static class VCSActionAsker implements VetoableActionListener {
public boolean canDoAction(VCS vcs, VCSActionEvent action, File... files) {
@@ -233,23 +228,37 @@
}
+ /**
+ * Permet de faire une demande a l'utilisateur. S'il repond annuler, on
+ * quit l'application
+ *
+ * @param msg
+ * @return
+ */
public static boolean ask(String msg) {
boolean result = true;
int value = JOptionPane.showConfirmDialog(null, msg);
+ if (value == JOptionPane.CANCEL_OPTION) {
+ quit();
+ }
result = value == JOptionPane.OK_OPTION;
return result;
}
+ /**
+ * Switch le vcs vers VCSNone et le sauvegarde pour le prochain lancement
+ */
protected static void switchToNoneVCS() {
- config.setOption(IsisConfig.Option.VCS_PROTOCOLE.key, "none");
+ log.info(_("Switch repository type to none"));
+ config.setOption(IsisConfig.Option.VCS_TYPE.key, VCS.TYPE_NONE);
config.saveForUser();
vcs = VCSFactory.createVCS(config);
}
/**
- * Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
+ * Initialise le VCS et check s'il y a des mises a jour pour prevenir
* l'utilisateur
*/
- static public void initVCS() throws VCSException {
+ static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
VCSActionAsker asker = new VCSActionAsker();
@@ -257,12 +266,18 @@
// Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
File local = config.getDatabaseDirectory();
+ log.info(_("Check state of local repository: %s", local));
+
if (local.exists()) {
if(!vcs.isValidLocalRepository()) {
- if (ask(_("Your database repository don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?"))) {
+ log.info(_("Local repository exists but it's not valide for current vcs: %s", config.getOption(VCS.VCS_TYPE)));
+ if (ask(_("Your database repository: %s\n don't use correct" +
+ " protocol.\nDo you want to make backup of your database" +
+ " and take the correct one ?", local))) {
File localBackup = new File(local.getParentFile(),
local.getName() + "-" +
- new SimpleDateFormat().format(new Date()));
+ new SimpleDateFormat("yyyy-mm-dd-HH-mm-ss").format(new java.util.Date()));
+ log.info(_("Rename data directory to %s", localBackup));
if (!local.renameTo(localBackup)) {
throw new IsisFishRuntimeException(
"Can't rename local repository that don't use svn");
@@ -275,12 +290,12 @@
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
- if (vcs instanceof VCSNone) {
- JOptionPane.showMessageDialog(null, _(
- "No database found and can't get it.\n" +
- "You must go to ISIS-Fish web site and download database manualy."),
- _("Database needed %s", IsisConfig.getVersion()),
- JOptionPane.WARNING_MESSAGE);
+ log.info(_("Local repository don't exist"));
+ if (!vcs.isConnected()) {
+ UserLog.warn(_(
+ "No database version %s found and can't get it.\n" +
+ "You must go to ISIS-Fish web site and download database manualy.",
+ IsisConfig.getDatabaseVersion()));
} else {
// Si on utilise pas le bon tag on change de tag
VersionNumber tag = IsisConfig.getApiVersion();
@@ -316,31 +331,37 @@
throw new IsisFishRuntimeException("Can't find local repository");
}
- // check protocol, user, host
- vcs.checkProtocol();
+ // on s'arrete la si on est pas connecte
+ if (vcs.isConnected()) {
+
+ // check protocol, user, host
+ vcs.checkProtocol();
- // Suivant la version du logiciel et les versions de base disponible
- // il est possiblement obligatoire de ne plus etre sur le trunk, ou
- // de migrer sur un autre tag
+ // Suivant la version du logiciel et les versions de base disponible
+ // il est possiblement obligatoire de ne plus etre sur le trunk, ou
+ // de migrer sur un autre tag
- // si on est sur une branche, on est en developpement, on ne fait donc rien
- if (!vcs.getTag().startsWith("branches")) {
-
- // Si on utilise pas le bon tag on change de tag
- VersionNumber tag = IsisConfig.getApiVersion();
- if (vcs.isTag(tag)) {
- // un tag dispo, on a donc pas la derniere version, on switch
- vcs.setTag(tag);
+ // si on est sur une branche, on est en developpement, on ne fait donc rien
+ if (vcs.getTag().startsWith("branches")) {
+ log.info(_("Use branches, switch not needed"));
} else {
- // pas de tag dispo on retourne sur le trunk
- vcs.setTag(null);
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (vcs.isTag(tag)) {
+ // un tag dispo, on a donc pas la derniere version, on switch
+ vcs.setTag(tag);
+ } else {
+ // pas de tag dispo on retourne sur le trunk
+ vcs.setTag(null);
+ }
}
- }
- // check file status
- vcs.checkFileStatus();
-
+ // check file status
+ vcs.checkFileStatus();
+ }
+ // fin de l'init on supprime le vetoable du vcs
+ vcs.remoteVetoableActionListener(asker);
}
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -423,6 +423,8 @@
tx.execute("DELETE " + Result.class.getName());
tx.commitTransaction();
+ // FIXME le service topia de migration devrait se mettre en
+ // route pour les veilles base apres le restore
tx.closeContext();
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -109,6 +109,8 @@
"alter table SETOFVESSELS add column TECHNICALEFFICIENCYEQUATION VARCHAR(255);",
"alter table STRATEGY add column INACTIVITYEQUATIONUSED BIT default false;",
"alter table STRATEGY add column INACTIVITYEQUATION VARCHAR(255);",
+ "alter table STRATEGYMONTHINFO alter NUMBEROFTRIPS double;",
+ "alter table STRATEGYMONTHINFO alter MININACTIVITYDAYS double;",
};
for (String sql : sqls) {
log.info("try " + sql);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -145,7 +145,7 @@
* @see fr.ifremer.isisfish.entities.StrategyMonthInfoAbstract#setMinInactivityDays(int)
*/
@Override
- public void setMinInactivityDays(int value) {
+ public void setMinInactivityDays(double value) {
super.setMinInactivityDays(value);
computeNumberOfTrips();
}
@@ -158,8 +158,8 @@
double inactivity = getStrategy().getInactivityDays(getMonth());
if(tripType != null && tripType.getTripDuration() != null && inactivity >= 0){
int nbDayMonth = getMonth().getNumbersOfDays();
- double result = (int)((nbDayMonth - inactivity) / tripType.getTripDuration().getDay());
- setNumberOfTrips((int)result);
+ double result = (nbDayMonth - inactivity) / tripType.getTripDuration().getDay();
+ setNumberOfTrips(result);
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -267,7 +267,11 @@
// }
// classpath[classpath.length - 1] = directory.toURL();
// URLClassLoader loader = new URLClassLoader(classpath, null);
- URL [] classpath = new URL[]{directory.toURI().toURL()};
+ URL [] classpath = new URL[]{directory.toURI().toURL(),
+ // poussin 20080821
+ // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
+ IsisFish.config.getCompileDirectory().toURI().toURL()
+ };
//URL [] classpath = new URL[]{directory.toURL()};
AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
thread.setContextClassLoader(loader);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -114,7 +114,8 @@
// remoteThread.start();
// TODO passer ces valeurs en valeur configurable
- int cpus = Runtime.getRuntime().availableProcessors();
+ int cpus = 1; // FIXME les logs ne sont pas multi-thread (il se melange a priori)
+// int cpus = Runtime.getRuntime().availableProcessors();
int MAX_REMOTE_SIMULATION = 1;
log.info(_("Launch Simulation executor with %s cpu(s) for local, and %s" +
" process for remote", cpus, MAX_REMOTE_SIMULATION));
@@ -182,6 +183,7 @@
*/
public void addSimulation(String id, SimulationParameter param) throws Exception {
ExecutorService executor = null;
+ Runnable job = null;
if (param.getLocal()) {
executor = localExecutor;
log.debug(_("isisfish.message.add.queue", id));
@@ -198,21 +200,22 @@
// c un plan d'analyse, il peut etre independant ou dependant
if (!param.isIndependentPlan()) {
item = new SimulationItemPlan(id, param);
- executor.execute(new SimulationJob(this, item));
+ job = new SimulationJob(this, item);
} else {
// on met dans la queue local le process de generation de toutes
// les simus
item = new SimulationItemPlanIndependent(id, param);
- localExecutor.execute(
- new PrepareIndependentSimulationJob(this, executor, item));
+ job = new PrepareIndependentSimulationJob(this, executor, item);
+ executor = localExecutor; // change after job creation, because job need reel executor
}
} else {
// une simulation normal
item = new SimulationItem(id, param);
log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated());
- executor.execute(new SimulationJob(this, item));
+ job = new SimulationJob(this, item);
}
fireAddEvent(id, item); // must be before thread notification because thread look in map
+ executor.execute(job);
}
/**
@@ -359,22 +362,28 @@
* the corresponding simulation
*/
protected boolean mustShowSimulationDone(String id) {
+ IsisConfig config = IsisFish.config;
- boolean result = true;
+ boolean result = !config.isSimulationShowOnlyError();
try {
- IsisConfig config = IsisFish.config;
SimulationItem item = map.get(id);
- if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
- // on ne met jamais dans la queue done les simulations de plan
- // sauf si elle echoue
- result = false;
-// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
- } else if (!(config.isSimulationShowOnlyError() &&
- !(item instanceof SimulationItemPlan) &&
+
+ if (result || (!(item instanceof SimulationItemPlan) &&
item.getSimulation().getInformation().hasError())) {
- result = false;
+ result = true;
}
+
+// if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
+// // on ne met jamais dans la queue done les simulations de plan
+// // sauf si elle echoue
+// result = false;
+//// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
+// } else if (!(config.isSimulationShowOnlyError() &&
+// !(item instanceof SimulationItemPlan) &&
+// item.getSimulation().getInformation().hasError())) {
+// result = false;
+// }
} catch (Exception eee) {
log.debug("Ne devrait pas arriver", eee);
// I don't known how it could appear, but in doubt, show it!
@@ -703,6 +712,9 @@
simulationManager.waitAutoLaunch();
try {
// si l'simItem exist encore (que l'utilisateur ne la pas retire)
+ log.info("id: " + simItem.getPlanIdOrId() + " exists ? " +
+ simulationManager.exists(simItem.getPlanIdOrId()) +
+ " hasNext ? " + simItem.hasNext());
while (simulationManager.exists(simItem.getPlanIdOrId()) &&
simItem.hasNext()) {
SimulationItem item = simItem.next();
@@ -844,6 +856,12 @@
return planItem;
}
+ /**
+ * Si renvoi vrai, cela veut dire que cette simulation a ete generee
+ * par un plan d'experience
+ *
+ * @return
+ */
public boolean hasPlanItem() {
boolean result = planItem != null;
return result;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -35,16 +35,13 @@
import java.util.Iterator;
import java.util.Observable;
-import org.codelutin.xml.XMLable;
-
/**
* Classe permettant de d'ecrire un interval. Cette interval est un peu
* particulier car il est circulaire. Par exemple si min=0, max=100, first=75 et
* bien last peut etre egal à 25 donc inferieur a first. Dans ce cas si l'on
* demande contains 50 il repond faux et contains 99 retourne vrai.
*/
-public class Interval extends Observable implements Serializable, Cloneable,
- XMLable { // Interval
+public class Interval extends Observable implements Serializable, Cloneable { // Interval
/**
*
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -44,7 +44,7 @@
/**
* can be http, ssh, pserver, ...
*/
- public static final String VCS_PROTOCOLE = "vcs.protocole";
+ public static final String VCS_PROTOCOLE = "vcs.protocol";
/**
* ssh key file
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -51,7 +51,7 @@
* @param config
* @return usable VCSNone
*/
- static public VCSNone createVCS(IsisConfig config) {
+ static public VCS createVCS(IsisConfig config) {
Properties aliases = new Properties();
// for empty and TYPE_NONE we used this class
aliases.setProperty("", VCSNone.class.getName());
@@ -60,7 +60,7 @@
// FIXME active this line when svn and CVS are implemented
// aliases.setProperty(TYPE_CVS, VCSCVS.class.getName());
- VCSNone result = null;
+ VCS result = null;
String type = config.getOption(VCS.VCS_TYPE);
// try to convert if type is not class name but an alias
String classname = aliases.getProperty(type, type);
@@ -75,7 +75,7 @@
try {
Class clazz = (Class) ConvertUtils.convert(classname, Class.class);
- result = (VCSNone) ConstructorUtils.invokeConstructor(clazz,
+ result = (VCS) ConstructorUtils.invokeConstructor(clazz,
new Object[]{dataDir, protocol, host, path, sshKeyFile, login, password});
} catch (Exception eee) {
log.error(_("Can't instanciate wanted VCS (%s), use default",
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -61,8 +61,13 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSSVN.class);
-
+
+ static enum ConnectionState {
+ NOT_TESTED, OFF_LINE, ON_LINE
+ }
+
protected SVNClientManager svnManager = null;
+ protected ConnectionState connectionState = ConnectionState.NOT_TESTED;
public VCSSVN(File localRepository,
String protocol, String host, String path,
@@ -109,38 +114,66 @@
boolean result = svn.exists();
return result;
}
-
+
+ public boolean isConnected() {
+ if (connectionState == ConnectionState.NOT_TESTED) {
+ try {
+ SVNURL url = getRemoteURL();
+ getSVNManager().getWCClient().doGetProperty(url, "",
+ SVNRevision.HEAD,
+ SVNRevision.HEAD, false);
+ connectionState = ConnectionState.ON_LINE;
+ log.info(_("Connection to serveur available, switch on line: %s",
+ getRemoteRepository()));
+ } catch(SVNException eee) {
+ log.info(_("Can't connect to serveur, switch to off line: %s",
+ getRemoteRepository()));
+ connectionState = ConnectionState.OFF_LINE;
+ }
+ }
+ boolean result = connectionState == ConnectionState.ON_LINE;
+ return result;
+ }
+
@Override
public void checkProtocol() throws VCSException {
try {
File localRoot = getLocalRepository();
- SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(
+ localRoot, SVNRevision.WORKING);
SVNURL url = info.getURL();
+ SVNURL rootUrl = info.getRepositoryRootURL();
+ String path = url.toDecodedString().substring(rootUrl.toDecodedString().length());
- // si un des constituants de l'url a change on fait un switch relocate
- boolean mustSwitch = false;
- if (!url.getProtocol().equals(getProtocol())) {
- log.info(_("repository protocol change from %s to %s",
- url.getProtocol(), getProtocol()));
- mustSwitch = true;
- }
- if (!url.getUserInfo().equals(getLogin())) {
- log.info(_("repository user change from %s to %s",
- url.getUserInfo(), getLogin()));
- mustSwitch = true;
- }
- if (!url.getHost().equals(getHost())) {
- log.info(_("repository host change from %s to %s",
- url.getHost(), getHost()));
- mustSwitch = true;
- }
-
- if (mustSwitch) {
+// // si un des constituants de l'url a change on fait un switch relocate
+// boolean mustSwitch = false;
+// if (!url.getProtocol().equals(getProtocol())) {
+// log.info(_("repository protocol change from %s to %s",
+// url.getProtocol(), getProtocol()));
+// mustSwitch = true;
+// }
+// if (!url.getUserInfo() != null !url.getUserInfo().equals(getLogin())) {
+// log.info(_("repository user change from %s to %s",
+// url.getUserInfo(), getLogin()));
+// mustSwitch = true;
+// }
+// if (!url.getHost().equals(getHost())) {
+// log.info(_("repository host change from %s to %s",
+// url.getHost(), getHost()));
+// mustSwitch = true;
+// }
+//
+// if (mustSwitch) {
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(path, false);
+ if (!url.equals(newUrl)) {
if (fireAction(VCSActionEvent.SWITCH_PROTOCOL)) {
- String path = url.getPath();
- int port = url.getPort();
- SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
- getHost(), port, path, true);
+// String path = url.getPath();
+// int port = url.getPort();
+// SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+// getHost(), port, path, true);
+ log.info(_("Switch repository %s from %s to %s",
+ localRoot, url, newUrl));
getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
}
}
@@ -158,14 +191,12 @@
* fichiers
*/
public void checkFileStatus() throws VCSException {
- if (isConnected()) {
- Map<File, SVNStatus> status = getRemoteStatus(null, true);
+ Map<File, SVNStatus> status = getRemoteStatus(null, true);
// si des fichiers ont ete mis a jour sur le serveur on se synchronise
- if (status.size() > 0) {
- if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
- status.keySet().toArray(new File[status.size()]))) {
- update(null, true);
- }
+ if (status.size() > 0) {
+ if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
+ status.keySet().toArray(new File[status.size()]))) {
+ update(null, true);
}
}
}
@@ -355,7 +386,7 @@
handler);
return result;
} catch (SVNException eee) {
- throw new VCSException("Can't add file", eee);
+ throw new VCSException("Can't status file", eee);
}
}
@@ -396,7 +427,7 @@
handler);
return result;
} catch (SVNException eee) {
- throw new VCSException("Can't add file", eee);
+ throw new VCSException("Can't status file", eee);
}
}
@@ -420,10 +451,6 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isConnected() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
public boolean isOnRemote(File file) throws VCSException {
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -511,7 +538,8 @@
public String getTag() throws VCSException {
try {
File localRoot = getLocalRepository();
- SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(
+ localRoot, SVNRevision.WORKING);
String url = info.getURL().toDecodedString();
String result = "/trunk";
if (!url.endsWith("/trunk")) {
@@ -545,7 +573,10 @@
SVNURL newUrl = getRemoteURL();
newUrl = newUrl.appendPath(tag, true);
- getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ log.info(_("Switch repository tag from %s to %s",
+ currantTag, tag));
+ getSVNManager().getUpdateClient().doSwitch(
+ localRoot, newUrl, SVNRevision.HEAD, true);
}
}
} catch (SVNException eee) {
1
0
r1306 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/vcs test/fr/ifremer/isisfish/vcs
by bpoussin@users.labs.libre-entreprise.org 20 Aug '08
by bpoussin@users.labs.libre-entreprise.org 20 Aug '08
20 Aug '08
Author: bpoussin
Date: 2008-08-20 13:06:19 +0000 (Wed, 20 Aug 2008)
New Revision: 1306
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
Log:
tout est code, et teste en test unitaire, y'a plus qu'a tester en grandeur nature (vcs, option)
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -52,10 +52,14 @@
import fr.ifremer.isisfish.util.StringConverter;
import fr.ifremer.isisfish.util.TimeUnitConverter;
import fr.ifremer.isisfish.vcs.VCS;
+import fr.ifremer.isisfish.vcs.VCSActionEvent;
import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
+import fr.ifremer.isisfish.vcs.VCSNone;
+import fr.ifremer.isisfish.vcs.VetoableActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.LogFactory;
import static org.codelutin.i18n.I18nf._;
@@ -63,6 +67,7 @@
import org.codelutin.math.matrix.DoubleBigVector;
import org.codelutin.math.matrix.MatrixFactory;
import java.util.Locale;
+import javax.swing.JOptionPane;
import org.apache.commons.logging.Log;
import org.swixat.SwiXAT;
import org.swixat.model.Context;
@@ -197,6 +202,49 @@
//
// }
+ static class VCSActionAsker implements VetoableActionListener {
+
+ public boolean canDoAction(VCS vcs, VCSActionEvent action, File... files) {
+ boolean result = true;
+ if (action == VCSActionEvent.SWITCH_PROTOCOL) {
+ result = ask(_("Protocol to access repository script has changed.\n" +
+ "Do you want to switch your repository ?"));
+ if (!result) {
+ // l'utilisateur ne souhaite pas changer de protocol,
+ // on force le repo en read-only pour eviter les erreurs
+ vcs.setWriteable(false);
+ }
+ } else if (action == VCSActionEvent.SWITCH) {
+ result = ask(_("You don't use correction repository script for" +
+ " your application version %s.\nDo you want to switch" +
+ " your repository ?", IsisConfig.getVersion()));
+ if (!result) {
+ // l'utilisateur ne souhaite pas changer de branche,
+ // on force le repo en read-only pour eviter les erreurs
+ vcs.setWriteable(false);
+ }
+ } else if (action == VCSActionEvent.UPDATE_REPOSITORY) {
+ result = ask(_("Your repository is not up to date.\n" +
+ "Do you want to update your repository ?\n\n" +
+ "Remote modified file is\n%s", Arrays.toString(files)));
+ }
+ return result;
+ }
+
+ }
+
+ public static boolean ask(String msg) {
+ boolean result = true;
+ int value = JOptionPane.showConfirmDialog(null, msg);
+ result = value == JOptionPane.OK_OPTION;
+ return result;
+ }
+
+ protected static void switchToNoneVCS() {
+ config.setOption(IsisConfig.Option.VCS_PROTOCOLE.key, "none");
+ config.saveForUser();
+ vcs = VCSFactory.createVCS(config);
+ }
/**
* Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
* l'utilisateur
@@ -204,49 +252,67 @@
static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
+ VCSActionAsker asker = new VCSActionAsker();
+ vcs.addVetoableActionListener(asker);
// Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
File local = config.getDatabaseDirectory();
if (local.exists()) {
if(!vcs.isValidLocalRepository()) {
- File localBackup = new File(local.getParentFile(),
- local.getName() + "-" +
- new SimpleDateFormat().format(new Date()));
- if (!local.renameTo(localBackup)) {
- throw new IsisFishRuntimeException(
- "Can rename local repository that don't use svn");
+ if (ask(_("Your database repository don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?"))) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat().format(new Date()));
+ if (!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException(
+ "Can't rename local repository that don't use svn");
+ }
+ } else {
+ switchToNoneVCS();
}
}
}
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
- // Si on utilise pas le bon tag on change de tag
- VersionNumber tag = IsisConfig.getApiVersion();
- if (!vcs.isTag(tag)) {
- // pas de tag pour cette version, on checkout le trunk
- tag = null;
- }
+ if (vcs instanceof VCSNone) {
+ JOptionPane.showMessageDialog(null, _(
+ "No database found and can't get it.\n" +
+ "You must go to ISIS-Fish web site and download database manualy."),
+ _("Database needed %s", IsisConfig.getVersion()),
+ JOptionPane.WARNING_MESSAGE);
+ } else {
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (!vcs.isTag(tag)) {
+ // pas de tag pour cette version, on checkout le trunk
+ tag = null;
+ }
- vcs.checkout(tag, false);
+ // initialise le repo local
+ vcs.checkout(tag, false);
- AnalysePlanStorage.checkout();
- ExportStorage.checkout();
- FormuleStorage.checkout();
- RuleStorage.checkout();
- ScriptStorage.checkout();
- SimulatorStorage.checkout();
+ // ajoute les repertoires qu'il faut
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
- vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false);
- vcs.update(new File(local, RegionStorage.REGION_PATH), false);
- try {
- RegionStorage.checkout("DemoRegion");
- } catch (TopiaException eee) {
- log.warn("Can't checkout DemoRegion", eee);
+ // on ne prend pas toutes les simu ni toutes les regions
+ vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false);
+ vcs.update(new File(local, RegionStorage.REGION_PATH), false);
+ try {
+ RegionStorage.checkout("DemoRegion");
+ } catch (TopiaException eee) {
+ log.warn("Can't checkout DemoRegion", eee);
+ }
}
}
if (!local.exists()) {
+ // arrive ici le repo devrait exister
throw new IsisFishRuntimeException("Can't find local repository");
}
@@ -274,6 +340,7 @@
// check file status
vcs.checkFileStatus();
+
}
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -20,24 +20,11 @@
package fr.ifremer.isisfish.vcs;
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-import fr.ifremer.isisfish.datastore.ExportStorage;
-import fr.ifremer.isisfish.datastore.FormuleStorage;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.datastore.ScriptStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.util.VersionNumber;
/**
*
@@ -52,6 +39,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(AbstractVCS.class);
+ protected Set<VetoableActionListener> listeners = new HashSet<VetoableActionListener>();
protected File localRepository;
protected String protocol;
protected String host;
@@ -59,6 +47,7 @@
protected File sshKeyFile;
protected String login;
protected String password;
+ protected boolean writeable = true;
public AbstractVCS(File localRepository,
String protocol, String host, String path,
@@ -72,6 +61,39 @@
this.password = password;
}
+ public void addVetoableActionListener(VetoableActionListener l) {
+ listeners.add(l);
+ }
+
+ public void remoteVetoableActionListener(VetoableActionListener l) {
+ listeners.remove(l);
+ }
+
+ public void setWriteable(boolean value) {
+ this.writeable = value;
+ }
+
+ protected boolean fireAction(VCSActionEvent e, File ... files) {
+ boolean result = true;
+ if (listeners.size() > 0) {
+ // on evite la concurrence
+ VetoableActionListener[] ls =
+ listeners.toArray(new VetoableActionListener[listeners.size()]);
+ for (VetoableActionListener l : ls) {
+ result = result && l.canDoAction(this, e, files);
+ if (!result) {
+ // on s'arrete des qu'il y en a un qui ne souhaite pas
+ // qu'on fasse l'action
+ break;
+ }
+ }
+ }
+ if (!result) {
+ log.info("Canceled action: " + e);
+ }
+ return result;
+ }
+
public File getLocalRepository() {
return localRepository;
}
@@ -156,22 +178,9 @@
String filename = file.getName();
return !".svn".equals(filename) && !"CVS".equals(filename) &&
!filename.endsWith("~") &&
- // si le fichier n'appartient pas a loca repository, il ne pourra pas etre versionne
+ // si le fichier n'appartient pas a loca repository,
+ // il ne pourra pas etre versionne
file.getAbsolutePath().startsWith(getLocalRepository().getAbsolutePath());
}
- /**
- * Verifie si tous les fichiers du repository local sont les dernieres
- * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
- * en mode interactif (mode graphique), on lui propose de mettre a jour
- * les fichiers, avec la possibilite de voir les changements sur les
- * fichiers
- */
- public void checkFileStatus() throws VCSException {
- if (isConnected()) {
- // si des fichiers ont ete mis a jour sur le serveur on se synchronise
- // FIXME a faire
- }
- }
-
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -67,6 +67,18 @@
public static final String VCS_USER_PASSWORD = "vcs.password";
/**
+ * Ajout un listener pouvant interdire les actions du vcs
+ * @param l
+ */
+ public void addVetoableActionListener(VetoableActionListener l);
+
+ /**
+ * Supprime un listener pouvant interdire les actions du vcs
+ * @param l
+ */
+ public void remoteVetoableActionListener(VetoableActionListener l);
+
+ /**
* Get local repository directory
*/
public File getLocalRepository();
@@ -83,24 +95,14 @@
* @return
*/
public boolean isWriteable() throws VCSException;
+
+ /**
+ * Permit to force repository to read-only if value is false, otherwize
+ * use normal rules.
+ * @param value
+ */
+ public void setWriteable(boolean value);
-// /**
-// * Get the server address of the local file
-// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
-// *
-// * @param f file that we want to know the source
-// * @return
-// */
-// public String getLocalRepositorySource(File f) throws VCSException;
-//
-// /**
-// * Get the root server address of the local repository
-// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
-// *
-// * @return
-// */
-// public String getLocalRepositoryRoot() throws VCSException;
-
/**
* Commit specified files, if files is null, all files are commited
* @param files files to commit
@@ -125,14 +127,6 @@
*/
public void checkout(VersionNumber tag, boolean recurse) throws VCSException;
-// /**
-// * switch to new protocole, can be used to switch between anonymous and
-// * authenticate protocole
-// * @param protocoleType
-// * @throws fr.ifremer.isisfish.vcs.VCSException
-// */
-// public void switchProtocole(String protocoleType) throws VCSException;
-
/**
* Delete and commit files in server repository
* @param files file to delete
@@ -223,7 +217,7 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file, boolean recurse) throws VCSException;
+ public List<File> update(File file, boolean recurse) throws VCSException;
/**
* Verifie la connexion et si le protocole a change, switch le repository
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -0,0 +1,42 @@
+/* *##%
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.vcs;
+
+/**
+ * Represente une action VCS que l'on souhaite faire
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public enum VCSActionEvent {
+
+ CHECKOUT, // when checkout
+ COMMIT, // when commit
+ UPDATE, // when update
+ UPDATE_REPOSITORY, // when checkFileStatus
+ SWITCH, // when setTag
+ SWITCH_PROTOCOL, // when checkProtocol
+ DELETE, // when delete
+ ADD // when add
+
+}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -19,7 +19,6 @@
package fr.ifremer.isisfish.vcs;
-import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -181,26 +180,18 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file, boolean recurse) throws VCSException {
+ public List<File> update(File file, boolean recurse) throws VCSException {
throw new VCSException("Can't update file with dummy VCS");
}
-// public String getLocalRepositorySource(File f) throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-//
-// public String getLocalRepositoryRoot() throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-//
-// public String getLocalRepositoryTag() throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-
public void checkProtocol() throws VCSException {
// nothing to do
}
+ public void checkFileStatus() throws VCSException {
+ // nothing to do
+ }
+
public boolean isWriteable() throws VCSException {
return false;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -22,9 +22,14 @@
import static org.codelutin.i18n.I18nf._;
import java.io.File;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.VersionNumber;
@@ -36,9 +41,12 @@
import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.wc.ISVNOptions;
+import org.tmatesoft.svn.core.wc.ISVNStatusHandler;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNInfo;
import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNStatus;
+import org.tmatesoft.svn.core.wc.SVNStatusType;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
/**
@@ -128,11 +136,13 @@
}
if (mustSwitch) {
- String path = url.getPath();
- int port = url.getPort();
- SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
- getHost(), port, path, true);
- getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ if (fireAction(VCSActionEvent.SWITCH_PROTOCOL)) {
+ String path = url.getPath();
+ int port = url.getPort();
+ SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+ getHost(), port, path, true);
+ getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ }
}
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
@@ -140,37 +150,31 @@
}
-
-
+ /**
+ * Verifie si tous les fichiers du repository local sont les dernieres
+ * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
+ * en mode interactif (mode graphique), on lui propose de mettre a jour
+ * les fichiers, avec la possibilite de voir les changements sur les
+ * fichiers
+ */
+ public void checkFileStatus() throws VCSException {
+ if (isConnected()) {
+ Map<File, SVNStatus> status = getRemoteStatus(null, true);
+ // si des fichiers ont ete mis a jour sur le serveur on se synchronise
+ if (status.size() > 0) {
+ if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
+ status.keySet().toArray(new File[status.size()]))) {
+ update(null, true);
+ }
+ }
+ }
+ }
+
protected SVNURL getRemoteURL() throws SVNException {
SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
return remoteURL;
}
-
-// public String getLocalRepositoryRoot() throws VCSException {
-// try {
-// File localRoot = getLocalRepository();
-// SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
-// SVNURL url = info.getCopyFromURL();
-// String result = url.toDecodedString();
-// return result;
-// } catch (SVNException eee) {
-// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
-// }
-// }
-//
-// public String getLocalRepositorySource(File f) throws VCSException {
-// try {
-// // TODO perhaps, check if file is in getLocalRepository() file ?
-// SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
-// SVNURL url = info.getURL();
-// String result = url.toDecodedString();
-// return result;
-// } catch (SVNException eee) {
-// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
-// }
-// }
-
+
/**
* Retourne l'url du repository distant
* ex: ssh+svn://labs.le.org/svnroot/isis-fish/data/branches/3.2
@@ -206,10 +210,19 @@
}
public void commit(List<File> files, String msg) throws VCSException {
+ if (!isWriteable()) {
+ throw new VCSException("You can't commit file, this repository is readonly");
+ }
+ if (files == null) {
+ files = Arrays.asList(getLocalRepository());
+ }
+ if (fireAction(VCSActionEvent.COMMIT, files.toArray(new File[files.size()]))) {
+ commitWithoutCheck(files, msg);
+ }
+ }
+
+ protected void commitWithoutCheck(List<File> files, String msg) throws VCSException {
try {
- if (files == null) {
- files = Arrays.asList(getLocalRepository());
- }
SVNCommitInfo commitInfo = getSVNManager().getCommitClient()
.doCommit(files.toArray(new File[files.size()]),
false, // keep lock
@@ -220,20 +233,25 @@
} catch (SVNException eee) {
throw new VCSException("Can't commit files", eee);
}
- }
+ }
public void add(List<File> files, String msg) throws VCSException {
+ if (!isWriteable()) {
+ throw new VCSException("You can't add file, this repository is readonly");
+ }
try {
- for (File file : files) {
- // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
- getSVNManager().getWCClient().doAdd(file,
- true, // force add to allready added file (no error)
- false, // don't create dir if not exist
- true, // add parent dir if is not versionned
- false, // no recurse
- false); // don't add ignore file
+ if (fireAction(VCSActionEvent.ADD, files.toArray(new File[files.size()]))) {
+ for (File file : files) {
+ // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
+ getSVNManager().getWCClient().doAdd(file,
+ true, // force add to allready added file (no error)
+ false, // don't create dir if not exist
+ true, // add parent dir if is not versionned
+ false, // no recurse
+ false); // don't add ignore file
+ }
+ commitWithoutCheck(files, msg);
}
- commit(files, msg);
} catch (SVNException eee) {
throw new VCSException("Can't add file", eee);
}
@@ -241,35 +259,147 @@
public void checkout(VersionNumber tag, boolean recurse) throws VCSException {
try {
- String tagPath = "/trunk/";
- if (tag != null) {
- tagPath = "/tags/" + tag + "/";
- }
+ if (fireAction(VCSActionEvent.CHECKOUT, getLocalRepository())) {
+ String tagPath = "/trunk/";
+ if (tag != null) {
+ tagPath = "/tags/" + tag + "/";
+ }
- SVNURL source = getRemoteURL().appendPath(tagPath, false);
+ SVNURL source = getRemoteURL().appendPath(tagPath, false);
- File destDir = getLocalRepository();
- destDir.mkdirs();
-
- getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
- SVNRevision.HEAD, recurse);
+ File destDir = getLocalRepository();
+ destDir.mkdirs();
+
+ getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
+ SVNRevision.HEAD, recurse);
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't checkout"), eee);
}
}
public void delete(List<File> files, String msg) throws VCSException {
- try {
- for (File file : files) {
- // FIXME check argument in documentation
- getSVNManager().getWCClient().doDelete(file, true, msg != null, false);
+ if (!isWriteable()) {
+ throw new VCSException("You can't delete file, this repository is readonly");
+ }
+ try {
+ if (fireAction(VCSActionEvent.DELETE, files.toArray(new File[files.size()]))) {
+ for (File file : files) {
+ getSVNManager().getWCClient().doDelete(file,
+ true, // force la deletion
+ true, // delete local file too
+ false); // is not just a test
+ }
+ commitWithoutCheck(files, msg);
}
- commit(files, msg);
} catch (SVNException eee) {
throw new VCSException("Can't add file", eee);
}
}
+// protected String statusToString(SVNStatus status) {
+// SVNStatusType type = status.getRemoteContentsStatus();
+//
+// String result = "'" + type.getCode() + "' '" + type.getID() + "' " + type.toString();
+// type = status.getContentsStatus();
+// result += "|'" + type.getCode() + "' '" + type.getID() + "' " + type.toString();
+//
+// return result;
+// }
+
+ /**
+ * Recherhce le status des fichiers locaux, ne retourne jamais les fichiers
+ * NOMAL ou NONE sauf si demande explicitement via wanted
+ *
+ * @param file le repertoire a partir duquel on souhaite le status
+ * @param recurse si l'on souhaite le faire recursivement
+ * @param wanted l'ensemble des status type que l'on recheche, si vide
+ * recherche tous les statuts
+ * @return une map avec comme cle le File local et en valeur le status
+ * @throws fr.ifremer.isisfish.vcs.VCSException
+ */
+ protected Map<File, SVNStatus> getLocalStatus(File file, boolean recurse, SVNStatusType ... wanted) throws VCSException {
+ try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
+
+ final Map<File, SVNStatus> result = new HashMap<File, SVNStatus>();
+ final Set<SVNStatusType> acceptedStatusType =
+ new HashSet<SVNStatusType>(Arrays.asList(wanted));
+
+ ISVNStatusHandler handler = new ISVNStatusHandler() {
+ public void handleStatus(SVNStatus status) throws SVNException {
+ if ((acceptedStatusType.size() == 0 &&
+ status.getContentsStatus() != SVNStatusType.STATUS_NONE &&
+ status.getContentsStatus() != SVNStatusType.STATUS_NORMAL) ||
+ acceptedStatusType.contains(status.getContentsStatus())) {
+ File statusFile = status.getFile();
+ if (statusFile.exists() && (!statusFile.isDirectory() ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED)) {
+ // on ne met pas les repertoires pere dans le status
+ // car en fait ca veut dire qu'un fichier/rep dans ce
+ // repertoire a ete ajout/modifier/delete, et on l'aura
+ // aussi dans les resultats et ca suffit
+ result.put(statusFile, status);
+ }
+ }
+ }
+ };
+ getSVNManager().getStatusClient().doStatus(file,
+ recurse,
+ false, // on remote
+ !acceptedStatusType.contains(SVNStatusType.STATUS_NORMAL), // report only change file,
+ acceptedStatusType.contains(SVNStatusType.STATUS_IGNORED), // includeIgnored,
+ handler);
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
+ }
+
+ protected Map<File, SVNStatus> getRemoteStatus(File file, boolean recurse, SVNStatusType ... wanted) throws VCSException {
+ try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
+
+ final Map<File, SVNStatus> result = new HashMap<File, SVNStatus>();
+ final Set<SVNStatusType> acceptedStatusType =
+ new HashSet<SVNStatusType>(Arrays.asList(wanted));
+
+ ISVNStatusHandler handler = new ISVNStatusHandler() {
+ public void handleStatus(SVNStatus status) throws SVNException {
+ if ((acceptedStatusType.size() == 0 &&
+ status.getRemoteContentsStatus() != SVNStatusType.STATUS_NONE &&
+ status.getRemoteContentsStatus() != SVNStatusType.STATUS_NORMAL) ||
+ acceptedStatusType.contains(status.getRemoteContentsStatus())) {
+ File statusFile = status.getFile();
+ if (statusFile.exists() && (!statusFile.isDirectory() ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED)) {
+ // on ne met pas les repertoires pere dans le status
+ // car en fait ca veut dire qu'un fichier/rep dans ce
+ // repertoire a ete ajout/modifier/delete, et on l'aura
+ // aussi dans les resultats et ca suffit
+ result.put(statusFile, status);
+ }
+ }
+ }
+ };
+ getSVNManager().getStatusClient().doStatus(file,
+ recurse,
+ true, // on remote
+ !acceptedStatusType.contains(SVNStatusType.STATUS_NORMAL), // report only change file,
+ acceptedStatusType.contains(SVNStatusType.STATUS_IGNORED), // includeIgnored,
+ handler);
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
+ }
+
public Map<File, String> getChanglog(List<File> files) {
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -299,31 +429,65 @@
}
public boolean isUpToDate(File file) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ try {
+ SVNStatus status = getSVNManager().getStatusClient().doStatus(file,
+ true); // on remote
+ boolean result = true; // FIXME status.getContentsStatus().
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
}
- public boolean update(File file, boolean recurse) throws VCSException {
+ public List<File> update(File file, boolean recurse) throws VCSException {
+ List<File> result = new ArrayList<File>();
try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
if (!accept(file)) {
throw new VCSException("Can't update file that not in local repository");
}
- while (!file.getParentFile().exists()) {
- update(file.getParentFile(), false);
+ if (fireAction(VCSActionEvent.UPDATE, file)) {
+ // si le repertoire pere, n'est pas encore dans le repo local
+ // il faut aussi l'ajouter
+ if (!file.getParentFile().exists()) {
+ update(file.getParentFile(), false);
+ }
+ getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
+
+ // recherche de tous les fichiers locaux en conflit
+ Map<File, SVNStatus> status = getLocalStatus(file, recurse, SVNStatusType.STATUS_CONFLICTED);
+ if (status.size() > 0) {
+ result.addAll(status.keySet());
+ // on supprime les conflits pour pouvoir commiter convenablement
+ // les fichiers
+ getSVNManager().getWCClient().doResolve(file, recurse);
+ }
}
- getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
} catch (SVNException eee) {
throw new VCSException("Can't update files", eee);
}
- return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
+ return result;
}
public boolean isWriteable() throws VCSException {
- String login = getLogin();
- String tag = getTag();
+
+ // si on est clairement en anonyme
+ boolean result = writeable;
+ if (writeable) {
+ // check normal rules
+ String login = getLogin();
+ result = result && login != null && !"".equals(login) && !"anonymous".equals(login);
+ // meme s'il n'y a pas d'utilisateur, mais qu'on utilise le protocole file:// on est writeable
+ result = result || getProtocol().startsWith("file");
+ // ou que le repertoire n'est pas utilisable pour ce type de vcs
+ result = result && isValidLocalRepository();
+ // ou que l'on est dans un tag, donc par convention not writeable
+ result = result && !getTag().startsWith("/tags");
+ }
- boolean result = login != null && !"".equals(login) && !"anonymous".equals(login);
- result = result && !tag.startsWith("/tags");
-
+ // on indique que l'utilisateur n'a pas le droit d'ecrire
return result;
}
@@ -348,9 +512,15 @@
try {
File localRoot = getLocalRepository();
SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
- String root = info.getCopyFromURL().toDecodedString();
String url = info.getURL().toDecodedString();
- String result = url.substring(root.length());
+ String result = "/trunk";
+ if (!url.endsWith("/trunk")) {
+ // on est pas sur le trunk, on est soit sur un tag ou une
+ // branche, dans les deux cas, il faut descendre de 2 /
+ int i = url.lastIndexOf("/");
+ i = url.lastIndexOf("/", i-1);
+ result = url.substring(i);
+ }
return result;
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
@@ -363,13 +533,21 @@
if (version != null) {
tag = "/tags/" + version;
}
+
+ String currantTag = getTag();
+ if (!tag.equals(currantTag)) {
+ // on ne fait le switch que si le tag change rellement, sinon
+ // c equivalent a faire un update, ce que l'on ne souhaite pas
+ // forcement
+ if (fireAction(VCSActionEvent.SWITCH)) {
+ File localRoot = getLocalRepository();
- File localRoot = getLocalRepository();
-
- SVNURL newUrl = getRemoteURL();
- newUrl = newUrl.appendPath(tag, true);
-
- getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(tag, true);
+
+ getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ }
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package fr.ifremer.isisfish.vcs;
+
+import java.io.File;
+
+/**
+ * Permet a une action d'etre interdite avant qu'elle ne soit faite. Pour cela
+ * Il faut implanter cette classe pour surveiller les actions, et l'enregistrer
+ * en tant que listener d'action sur le vcs.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface VetoableActionListener {
+
+ /**
+ * Permet d'arreter l'action qui souhaite etre faite, si on retourne false
+ * @param vcs le vcs qui va faire l'action
+ * @param action l'action que l'on souhaite faire
+ * @param files les fichiers impactes par l'action
+ * @return vrai si l'action peut-etre faite, false pour interdire l'action
+ */
+ public boolean canDoAction(VCS vcs, VCSActionEvent action, File ... files);
+
+}
Modified: trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -52,6 +52,7 @@
static File template = new File("/tmp/testsvn-template");
static File remoteRepo = new File("/tmp/testsvn-repo");
static File localRepo = new File("/tmp/testsvn-local");
+ static File localRepoTrunk = new File("/tmp/testsvn-localTrunk");
static {
try {
@@ -65,6 +66,9 @@
if (localRepo.exists()) {
FileUtil.deleteRecursively(localRepo);
}
+ if (localRepoTrunk.exists()) {
+ FileUtil.deleteRecursively(localRepoTrunk);
+ }
// creation de l'instance de notre VCS pour les tests
// on le fait au debut pour que la l'init de la lib svn soit fait
@@ -200,9 +204,21 @@
@Test
public void testAll() throws Exception {
System.out.println("checkout");
+ // trunk contient une copie complete de trunk, elle permet de test
+ // status lors que l'on fait des commits sur le trunk sur instance
+ VCSSVN trunk = new VCSSVN(
+ localRepoTrunk,
+ "file",
+ "",
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data",
+ null,
+ "", "");
+ trunk.checkout(null, true);
+
// on ne checkout rien juste le .svn dans le repertoire racine
instance.checkout(null, false);
assertTrue(instance.getLocalRepository().exists());
+ assertTrue(instance.getTag().startsWith("/trunk"));
// update scripts dir
instance.update(new File(instance.getLocalRepository(), "scripts"), true);
@@ -224,11 +240,56 @@
instance.delete(Arrays.asList(demo), "suppression d'une region");
assertFalse(demo.exists());
+ // ajout d'un fichier sur le trunk avant passage sur le tag
+ File fileToAdd = new File(instance.getLocalRepository(), "newfile.txt");
+ String lecontent = "Le nouveau fichier";
+ FileUtil.writeString(fileToAdd, lecontent);
+ instance.add(Arrays.asList(fileToAdd), "ajout d'un fichier");
+
// test switchTag
instance.setTag(new VersionNumber(3, 1, 0));
+ assertTrue(instance.getTag().startsWith("/tags/3.1.0"));
assertEquals(fileContentTag, FileUtil.readAsString(version));
assertTrue(demo.exists());
+ // recherche du status des fichiers
+ File fileVersion = new File(trunk.getLocalRepository(), "scripts" + File.separator + "version.txt");
+ File fileDeleted = new File(trunk.getLocalRepository(), "regions" + File.separator + "DemoRegion");
+ Map map = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(2, map.size()); // version.txt modifie, DemoRegion supprimee
+ assertTrue(map.containsKey(fileVersion));
+ assertTrue(map.containsKey(fileDeleted));
+
+ // modif dans repo trunk de version pour qu'il y ait un conflit
+ FileUtil.writeString(fileVersion, "Le nouveau content de version");
+
+ // update global du repo trunk
+ List<File> conflictFile = trunk.update(null, true);
+ System.out.println("conflictFile: " + conflictFile);
+ assertEquals(1, conflictFile.size());
+ assertTrue(conflictFile.contains(fileVersion));
+
+ File fileAdded = new File(trunk.getLocalRepository(), "newfile.txt");
+ assertEquals(lecontent, FileUtil.readAsString(fileAdded));
+ assertFalse(fileDeleted.exists());
+
+ // recherche du status des fichiers en remote, il ne doit plus y avoir de diff
+ Map map2 = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map2.size());
+
+ // il doit toujours y avoir version.txt qui est modifier localement
+ Map map3 = trunk.getLocalStatus(trunk.getLocalRepository(), true);
+ assertEquals(1, map3.size());
+ assertTrue(map3.containsKey(fileVersion));
+
+ // on commit le fichier version.txt pour verifier qu'en local et remote
+ // il n'y a plus de modif
+ trunk.commit(Arrays.asList(fileVersion), "Commit fichier version, avec les conflits");
+ Map map4 = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map4.size());
+ Map map5 = trunk.getLocalStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map5.size());
+
}
@@ -240,7 +301,14 @@
System.out.println("add");
List<File> files = new ArrayList<File>();
String msg = "";
- instance.add(files, msg);
+ instance.setTag(new VersionNumber(3, 1, 0));
+ try {
+ instance.add(files, msg);
+ assertFalse("Une exception aurait du etre leve, car instance est" +
+ " sur un tag, donc en readonly", true);
+ } catch(VCSException eee) {
+ assertTrue("On a bien pas la droit d'ajouter des fichiers", true);
+ }
}
/**
1
0
r1305 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/actions java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/vcs test/fr/ifremer/isisfish/vcs
by bpoussin@users.labs.libre-entreprise.org 19 Aug '08
by bpoussin@users.labs.libre-entreprise.org 19 Aug '08
19 Aug '08
Author: bpoussin
Date: 2008-08-19 18:37:13 +0000 (Tue, 19 Aug 2008)
New Revision: 1305
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
Log:
Nouvelle implantation de vcs fonctionne avec les tests unitaires pour:
- checkout
- update
- delete
- setTag
- isTag
Par contre svn+ssh n'arrive pas a s'authentifier
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -80,19 +80,37 @@
protected final static VersionNumber version = new VersionNumber(3, 2, 0, 0);
protected final static VersionNumber databaseVersion = new VersionNumber(
version.getNumber(0), version.getNumber(1));
+ protected final static VersionNumber apiVersion = new VersionNumber(
+ version.getNumber(0), version.getNumber(1), version.getNumber(2));
public static VersionNumber getVersionNumber() {
return version;
}
+ /**
+ * le nombre global ex: 3.2.0.0
+ * @return
+ */
static public String getVersion() {
String result = version.toString();
return result;
}
+ /**
+ * La version de la base ex: 3.2
+ * @return
+ */
public static VersionNumber getDatabaseVersion() {
return databaseVersion;
}
+
+ /**
+ * La version de l'api de programmation ex: 3.2.0
+ * @return
+ */
+ public static VersionNumber getApiVersion() {
+ return apiVersion;
+ }
static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2008";
static final public String CONFIG_FILENAME = "isis-config-" + version.getNumber(0);
@@ -572,7 +590,7 @@
VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, _("isisfish.config.vcs.userPassword.description"), ""),
VCS_HOST_NAME(VCS.VCS_HOST_NAME, _("isisfish.config.vcs.hostName.description"), "labs.libre-entreprise.org"),
VCS_PATH(VCS.VCS_PATH, _("isisfish.config.vcs.remotePath.description"), "/svnroot/isis-fish-data"),
- VCS_TAG(VCS.VCS_TAG, _("isisfish.config.vcs.remoteDatabase.description"), "/trunk"),
+// VCS_TAG(VCS.VCS_TAG, _("isisfish.config.vcs.remoteDatabase.description"), "/trunk"),
// TYPE_REPO_PROPERTY_KEY = newConfigPropertyKey("typeRepo", VCSTypeRepo.class, 9, n_("isisfish.config.vcs.typeRepo.description"), "TAG"),
// PROJECT_NAME_PROPERTY_KEY = newConfigPropertyKey("projectName", String.class, 11, n_("isisfish.config.main.projectName.description"), "Isis-Fish"),
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -33,6 +33,7 @@
import com.sun.tools.internal.xjc.generator.util.ExistingBlockReference;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
@@ -51,8 +52,10 @@
import fr.ifremer.isisfish.util.StringConverter;
import fr.ifremer.isisfish.util.TimeUnitConverter;
import fr.ifremer.isisfish.vcs.VCS;
+import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
import java.io.File;
+import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.LogFactory;
import static org.codelutin.i18n.I18nf._;
@@ -66,7 +69,9 @@
import org.swixml.ConverterLibrary;
import org.codelutin.i18n.I18n;
+import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
+import org.codelutin.util.VersionNumber;
import static javax.swing.JOptionPane.showOptionDialog;
@@ -196,16 +201,77 @@
* Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
* l'utilisateur
*/
- static public void initVCS() {
+ static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
- // check connection status
+ // Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
+ File local = config.getDatabaseDirectory();
+ if (local.exists()) {
+ if(!vcs.isValidLocalRepository()) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat().format(new Date()));
+ if (!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException(
+ "Can rename local repository that don't use svn");
+ }
+ }
+ }
+
+ // Si le repo local n'existe pas on fait un check out complet
+ if (!local.exists()) {
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (!vcs.isTag(tag)) {
+ // pas de tag pour cette version, on checkout le trunk
+ tag = null;
+ }
+
+ vcs.checkout(tag, false);
+
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
+
+ vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false);
+ vcs.update(new File(local, RegionStorage.REGION_PATH), false);
+ try {
+ RegionStorage.checkout("DemoRegion");
+ } catch (TopiaException eee) {
+ log.warn("Can't checkout DemoRegion", eee);
+ }
+ }
+
+ if (!local.exists()) {
+ throw new IsisFishRuntimeException("Can't find local repository");
+ }
+
+ // check protocol, user, host
vcs.checkProtocol();
- // check release
- vcs.checkRelease();
+ // Suivant la version du logiciel et les versions de base disponible
+ // il est possiblement obligatoire de ne plus etre sur le trunk, ou
+ // de migrer sur un autre tag
+ // si on est sur une branche, on est en developpement, on ne fait donc rien
+ if (!vcs.getTag().startsWith("branches")) {
+
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (vcs.isTag(tag)) {
+ // un tag dispo, on a donc pas la derniere version, on switch
+ vcs.setTag(tag);
+ } else {
+ // pas de tag dispo on retourne sur le trunk
+ vcs.setTag(null);
+ }
+ }
+
+
// check file status
vcs.checkFileStatus();
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -57,7 +57,7 @@
File dest = config.getDatabaseDirectory();
File file = new File(dest, "pom.xml");
log.info(_("Checkout pom.xml to %s", file));
- vcs.update(Arrays.asList(file));
+ vcs.update(file, false);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -199,7 +199,7 @@
* @return le sotrage après checkout
*/
static public RegionStorage checkout(String name) throws VCSException, TopiaException {
- checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + "/" + name);
+ checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + File.separator + name);
RegionStorage region = getRegion(name);
if (region != null) {
File file = region.getDataBackupFile();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -31,6 +31,7 @@
package fr.ifremer.isisfish.datastore;
+import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.vcs.VCS;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -46,6 +47,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import org.codelutin.util.VersionNumber;
/**
* Classe permettant de géré l'interaction avec le cvs
@@ -231,7 +233,7 @@
*/
public void update() throws VCSException {
prepare();
- getVCS().update(Arrays.asList(getFile()));
+ getVCS().update(getFile(), true);
}
public boolean isUpToDate() throws VCSException {
@@ -240,7 +242,7 @@
}
/**
- * Permet de ramener tout un répertoire du VCSNone. Utile seulement pour le
+ * Permet de ramener tout un répertoire du VCS. Utile seulement pour le
* premier lancement pour scipts et exports.
*
* @param destDir le repertoire parent
@@ -249,7 +251,15 @@
*
*/
static public void checkout(File destDir, String module) throws VCSException {
- getVCS().checkout(destDir, module, true);
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (!getVCS().isTag(tag)) {
+ // pas de tag pour cette version, on checkout le trunk
+ tag = null;
+ }
+
+ File file = new File(destDir, module);
+ getVCS().update(file, true);
}
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -37,6 +37,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.topia.TopiaException;
+import org.codelutin.util.VersionNumber;
/**
*
@@ -55,19 +56,17 @@
protected String protocol;
protected String host;
protected String path;
- protected String tag;
protected File sshKeyFile;
protected String login;
protected String password;
public AbstractVCS(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
this.localRepository = localRepository;
this.protocol = protocol;
this.host = host;
this.path = path;
- this.tag = tag;
this.sshKeyFile = sshKeyFile;
this.login = login;
this.password = password;
@@ -85,34 +84,41 @@
return protocol;
}
- public void setProtocol(String protocol) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setProtocol(String protocol) throws VCSException {
this.protocol = protocol;
+ checkProtocol();
}
public String getHost() {
return host;
}
- public void setHost(String host) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setHost(String host) throws VCSException {
this.host = host;
+ checkProtocol();
}
public String getPath() {
return path;
}
- public void setPath(String path) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setPath(String path) throws VCSException {
this.path = path;
+ checkProtocol();
}
- public String getTag() {
- return tag;
- }
-
- public void setTag(String tag) {
- this.tag = tag;
- }
-
public File getSshKeyFile() {
return sshKeyFile;
}
@@ -125,8 +131,13 @@
return login;
}
- public void setLogin(String login) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setLogin(String login) throws VCSException {
this.login = login;
+ checkProtocol();
}
public String getPassword() {
@@ -143,74 +154,13 @@
public boolean isVersionnableAbleFile(File file) {
String filename = file.getName();
- return !".svn".equals(filename) && !"CVS".equals(filename) && !filename.endsWith("~");
+ return !".svn".equals(filename) && !"CVS".equals(filename) &&
+ !filename.endsWith("~") &&
+ // si le fichier n'appartient pas a loca repository, il ne pourra pas etre versionne
+ file.getAbsolutePath().startsWith(getLocalRepository().getAbsolutePath());
}
/**
- * Verifie la connexion et si le protocole a change, switch le repository
- * pour utiliser le nouveau protocole. Si on est en mode interface (mode
- * graphique) et que le switch se passe mal, demande a l'utilisateur
- * de nouvelle valeur pour le protocole (+ identifiant, ...)
- */
- public void checkProtocol() throws VCSException {
- if (isConnected()) {
- // Si le repo local exist mais n'est pas en svn, on renome ce repertoire
- // FIXME a faire
- File local = getLocalRepository();
- if(local.exists()) {
- File svn = new File(local, ".svn");
- if (!svn.exists()) {
- File localBackup = new File(local.getParentFile(),
- local.getName() + "-" +
- new SimpleDateFormat().format(new Date()));
- if(!local.renameTo(localBackup)) {
- throw new IsisFishRuntimeException("Can rename local repository that don't use svn");
- }
- }
- }
-
- // Si le repo local n'existe pas on fait un check out complet
- if (!local.exists()) {
- // On modifie la version a a checkouter pour etre sur d'avoir la bonne
-
- AnalysePlanStorage.checkout();
- ExportStorage.checkout();
- FormuleStorage.checkout();
- RuleStorage.checkout();
- ScriptStorage.checkout();
- SimulatorStorage.checkout();
-
- checkout(getLocalRepository(), SimulationStorage.SIMULATION_PATH, false);
- checkout(getLocalRepository(), RegionStorage.REGION_PATH, false);
- try {
- RegionStorage.checkout("DemoRegion");
- } catch (TopiaException eee) {
- log.warn("Can't checkout DemoRegion", eee);
- }
- }
-
- if (!local.exists()) {
- throw new IsisFishRuntimeException("Can't find local repository");
- }
- // si le protocole a change on le change
-// if (getLocalTag() != )
- // FIXME a faire
- }
- }
-
- /**
- * Verifie que l'utilisateur utilise la bonne version de script en fonction
- * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
- * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
- */
- public void checkRelease() throws VCSException {
- if (isConnected()) {
- // Si on utilise pas la bonne branche on change de branche
- // FIXME a faire
- }
- }
-
- /**
* Verifie si tous les fichiers du repository local sont les dernieres
* version par rapport au serveur. Si ce n'est pas le cas et que l'on est
* en mode interactif (mode graphique), on lui propose de mettre a jour
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -58,10 +58,6 @@
*/
public static final String VCS_PATH = "vcs.path";
/**
- * repository tag to used ex: "/branches/3.2" or "HEAD", "/trunk" or ""
- */
- public static final String VCS_TAG = "vcs.tag";
- /**
* user login to access vcs ex: bpoussin
*/
public static final String VCS_USER_NAME = "vcs.username";
@@ -74,33 +70,39 @@
* Get local repository directory
*/
public File getLocalRepository();
-
+
/**
- * Get the server address of the local file
- * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
- *
- * @param f file that we want to know the source
+ * Return true, if local repository is valid repository for actuel vcs
* @return
*/
- public String getLocalRepositorySource(File f) throws VCSException;
+ public boolean isValidLocalRepository();
/**
- * Get the root server address of the local repository
- * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
- *
+ * Return true, if local repository is writeable
+ * (use trunk and is not anonymous)
* @return
*/
- public String getLocalRepositoryRoot() throws VCSException;
+ public boolean isWriteable() throws VCSException;
+// /**
+// * Get the server address of the local file
+// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
+// *
+// * @param f file that we want to know the source
+// * @return
+// */
+// public String getLocalRepositorySource(File f) throws VCSException;
+//
+// /**
+// * Get the root server address of the local repository
+// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
+// *
+// * @return
+// */
+// public String getLocalRepositoryRoot() throws VCSException;
+
/**
- * Usefull to permit to use VCSNone as filter
- * @param pathname
- * @return
- */
- public boolean accept(File pathname);
-
- /**
- * Commit specified files
+ * Commit specified files, if files is null, all files are commited
* @param files files to commit
* @param msg message used to commit
* @throws fr.ifremer.isisfish.vcs.VCSException
@@ -116,32 +118,22 @@
public void add(List<File> files, String msg) throws VCSException;
/**
- * get repository module on server and put it in destDir
- * @param destDir destination directory
- * @param module module name
+ * get repository on server and put it in localdir
+ * @param tag tag to used, null = /trunk other is tags/[tag]
* @param recurse if file is directory checkout sub file
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public void checkout(File destDir, String module, boolean recurse) throws VCSException;
+ public void checkout(VersionNumber tag, boolean recurse) throws VCSException;
+// /**
+// * switch to new protocole, can be used to switch between anonymous and
+// * authenticate protocole
+// * @param protocoleType
+// * @throws fr.ifremer.isisfish.vcs.VCSException
+// */
+// public void switchProtocole(String protocoleType) throws VCSException;
+
/**
- * Change repository tag, used when we use some tag and we want to go to
- * trunk.
- * @param version version to go, if null trunk is used, otherwize
- * tags/version is used
- * @throws fr.ifremer.isisfish.vcs.VCSException
- */
- public void switchTag(VersionNumber version) throws VCSException;
-
- /**
- * switch to new protocole, can be used to switch between anonymous and
- * authenticate protocole
- * @param protocoleType
- * @throws fr.ifremer.isisfish.vcs.VCSException
- */
- public void switchProtocole(String protocoleType) throws VCSException;
-
- /**
* Delete and commit files in server repository
* @param files file to delete
* @param msg message for commit
@@ -155,7 +147,7 @@
* @param files
* @return changelog for each file
*/
- public Map<File, String> getChanglog(List<File> files);
+ public Map<File, String> getChanglog(List<File> files) throws VCSException;
/**
* show diff between local file and repository file
@@ -176,13 +168,13 @@
* get list of new or modified files on server
* @return list of modified or new files
*/
- public List<File> getUpdatedFile();
+ public List<File> getUpdatedFile() throws VCSException;
/**
* Ask if there are some new or modified files on server
* @return true if new file available
*/
- public boolean haveUpdate();
+ public boolean haveUpdate() throws VCSException;
/**
* Get connection state.
@@ -203,7 +195,7 @@
* @param version version number like 3.2
* @return true if tag found with this name
*/
- public boolean isTag(VersionNumber version);
+ public boolean isTag(VersionNumber version) throws VCSException;
/**
* Check if file is uptodate
@@ -231,7 +223,7 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(List<File> files) throws VCSException;
+ public boolean update(File file, boolean recurse) throws VCSException;
/**
* Verifie la connexion et si le protocole a change, switch le repository
@@ -250,11 +242,69 @@
*/
void checkFileStatus() throws VCSException;
+// /**
+// * Verifie que l'utilisateur utilise la bonne version de script en fonction
+// * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
+// * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+// */
+// void checkRelease(VersionNumber version) throws VCSException;
+
+ String getHost();
+
+ String getLogin();
+
+ String getPassword();
+
+ String getPath();
+
+ String getProtocol();
+
+ File getSshKeyFile();
+
/**
- * Verifie que l'utilisateur utilise la bonne version de script en fonction
- * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
- * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+ * retourne le tag reellement utilise, par exemple si on a fait un
+ * setTag(3.2.0) cette methode retourne "/tags/3.2.0", pour setTag(null)
+ * on retourne "/trunk"
+ * @return
+ * @throws fr.ifremer.isisfish.vcs.VCSException
*/
- void checkRelease() throws VCSException;
+ String getTag() throws VCSException;
+ /**
+ * Change repository tag, used when we use some tag and we want to go to
+ * trunk.
+ * @param version version to go, if null trunk is used, otherwize
+ * tags/version is used
+ * @throws fr.ifremer.isisfish.vcs.VCSException
+ */
+ public void setTag(VersionNumber version) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setHost(String host) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setLogin(String login) throws VCSException;
+
+ void setPassword(String password);
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setPath(String path) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setProtocol(String protocol) throws VCSException;
+
+ void setSshKeyFile(File sshKeyFile);
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -69,7 +69,6 @@
String protocol = config.getOption(VCS.VCS_PROTOCOLE);
String host = config.getOption(VCS.VCS_HOST_NAME);
String path = config.getOption(VCS.VCS_PATH);
- String tag = config.getOption(VCS.VCS_TAG);
File sshKeyFile = config.getOptionAsFile(VCS.VCS_SSH_KEY_FILE);
String login = config.getOption(VCS.VCS_USER_NAME);
String password = config.getOption(VCS.VCS_USER_PASSWORD);
@@ -77,11 +76,11 @@
try {
Class clazz = (Class) ConvertUtils.convert(classname, Class.class);
result = (VCSNone) ConstructorUtils.invokeConstructor(clazz,
- new Object[]{dataDir, protocol, host, path, tag, sshKeyFile, login, password});
+ new Object[]{dataDir, protocol, host, path, sshKeyFile, login, password});
} catch (Exception eee) {
log.error(_("Can't instanciate wanted VCS (%s), use default",
config.getOption(VCS.VCS_TYPE)), eee);
- result = new VCSNone(dataDir, protocol, host, path, tag, sshKeyFile, login, password);
+ result = new VCSNone(dataDir, protocol, host, path, sshKeyFile, login, password);
}
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -47,17 +47,22 @@
static private Log log = LogFactory.getLog(VCSNone.class);
public VCSNone(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
- super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
+ super(localRepository, protocol, host, path, sshKeyFile, login, password);
}
+ public boolean isValidLocalRepository() {
+ return true;
+ }
+
+
/**
* look on server if version is tag repository
* @param version version number like 3.2
* @return true if tag found with this name
*/
- public boolean isTag(VersionNumber version) {
+ public boolean isTag(VersionNumber version) throws VCSException {
return false;
}
@@ -65,7 +70,7 @@
* Ask if there are some new or modified files on server
* @return true if new file available
*/
- public boolean haveUpdate() {
+ public boolean haveUpdate() throws VCSException {
return false;
}
@@ -73,7 +78,7 @@
* get list of new or modified files on server
* @return list of modified or new files
*/
- public List<File> getUpdatedFile() {
+ public List<File> getUpdatedFile() throws VCSException {
return new ArrayList<File>();
}
@@ -108,7 +113,7 @@
* @param b // FIXME
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public void checkout(File destDir, String module, boolean b) throws VCSException {
+ public void checkout(VersionNumber tag, boolean b) throws VCSException {
throw new VCSException("Can't checkout with dummy VCS");
}
@@ -176,25 +181,35 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(List<File> files) throws VCSException {
+ public boolean update(File file, boolean recurse) throws VCSException {
throw new VCSException("Can't update file with dummy VCS");
}
- public void switchTag(VersionNumber version) throws VCSException {
- // do nothing
+// public String getLocalRepositorySource(File f) throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+//
+// public String getLocalRepositoryRoot() throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+//
+// public String getLocalRepositoryTag() throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+
+ public void checkProtocol() throws VCSException {
+ // nothing to do
}
- public void switchProtocole(String protocoleType) throws VCSException {
- // do nothing
+ public boolean isWriteable() throws VCSException {
+ return false;
}
- public String getLocalRepositorySource(File f) throws VCSException {
- throw new VCSException("Not supported.");
+ public void setTag(VersionNumber version) throws VCSException {
+ // do nothing
}
- public String getLocalRepositoryRoot() throws VCSException {
- throw new VCSException("Not supported.");
+ public String getTag() throws VCSException {
+ return null;
}
-
-
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -19,12 +19,10 @@
package fr.ifremer.isisfish.vcs;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import static org.codelutin.i18n.I18nf._;
-import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -33,6 +31,10 @@
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
+import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.wc.ISVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNInfo;
@@ -51,21 +53,21 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSSVN.class);
-
- protected String protocol;
- protected String host;
- protected String path;
- protected String tag;
- protected File sshKeyFile;
- protected String login;
- protected String password;
-
+
protected SVNClientManager svnManager = null;
public VCSSVN(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
- super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
+ super(localRepository, protocol, host, path, sshKeyFile, login, password);
+ if (protocol.startsWith("file")) {
+ FSRepositoryFactory.setup();
+ } else if (protocol.startsWith("http")) {
+ DAVRepositoryFactory.setup();
+ } else {
+ //svn://, svn+xxx:// (svn+ssh:// in particular)
+ SVNRepositoryFactoryImpl.setup();
+ }
}
protected SVNClientManager getSVNManager() {
@@ -75,12 +77,16 @@
if (getProtocol().contains("ssh")) {
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
- options.setPropertyValue("svnkit.ssh2.key", getSshKeyFile().getAbsolutePath());
- options.setPropertyValue("svnkit.ssh2.username", login);
- if (passwd != null && !"".equals(passwd)) {
- options.setPropertyValue("svnkit.ssh2.passphrase", passwd);
- }
- svnManager = SVNClientManager.newInstance(options);
+// options.setPropertyValue("svnkit.ssh2.key", getSshKeyFile().getAbsolutePath());
+// options.setPropertyValue("svnkit.ssh2.username", login);
+// if (passwd != null && !"".equals(passwd)) {
+// options.setPropertyValue("svnkit.ssh2.passphrase", passwd);
+// }
+ ISVNAuthenticationManager auth =
+ SVNWCUtil.createDefaultAuthenticationManager(
+ SVNWCUtil.getDefaultConfigurationDirectory(),
+ login, passwd, sshKeyFile, passwd, false);
+ svnManager = SVNClientManager.newInstance(options, auth);
} else {
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
svnManager = SVNClientManager.newInstance(options, login, passwd);
@@ -89,34 +95,81 @@
return svnManager;
}
- protected SVNURL getRemoteURL() throws SVNException {
- SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
- return remoteURL;
+ public boolean isValidLocalRepository() {
+ File local = getLocalRepository();
+ File svn = new File(local, ".svn");
+ boolean result = svn.exists();
+ return result;
}
-
- public String getLocalRepositoryRoot() throws VCSException {
+
+ @Override
+ public void checkProtocol() throws VCSException {
try {
File localRoot = getLocalRepository();
SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
- SVNURL url = info.getCopyFromURL();
- String result = url.toDecodedString();
- return result;
+ SVNURL url = info.getURL();
+
+ // si un des constituants de l'url a change on fait un switch relocate
+ boolean mustSwitch = false;
+ if (!url.getProtocol().equals(getProtocol())) {
+ log.info(_("repository protocol change from %s to %s",
+ url.getProtocol(), getProtocol()));
+ mustSwitch = true;
+ }
+ if (!url.getUserInfo().equals(getLogin())) {
+ log.info(_("repository user change from %s to %s",
+ url.getUserInfo(), getLogin()));
+ mustSwitch = true;
+ }
+ if (!url.getHost().equals(getHost())) {
+ log.info(_("repository host change from %s to %s",
+ url.getHost(), getHost()));
+ mustSwitch = true;
+ }
+
+ if (mustSwitch) {
+ String path = url.getPath();
+ int port = url.getPort();
+ SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+ getHost(), port, path, true);
+ getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
}
+
}
- public String getLocalRepositorySource(File f) throws VCSException {
- try {
- // TODO perhaps, check if file is in getLocalRepository() file ?
- SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
- SVNURL url = info.getURL();
- String result = url.toDecodedString();
- return result;
- } catch (SVNException eee) {
- throw new VCSException(_("Can't get address on serveur of local repository"), eee);
- }
+
+
+ protected SVNURL getRemoteURL() throws SVNException {
+ SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
+ return remoteURL;
}
+
+// public String getLocalRepositoryRoot() throws VCSException {
+// try {
+// File localRoot = getLocalRepository();
+// SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+// SVNURL url = info.getCopyFromURL();
+// String result = url.toDecodedString();
+// return result;
+// } catch (SVNException eee) {
+// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+// }
+// }
+//
+// public String getLocalRepositorySource(File f) throws VCSException {
+// try {
+// // TODO perhaps, check if file is in getLocalRepository() file ?
+// SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
+// SVNURL url = info.getURL();
+// String result = url.toDecodedString();
+// return result;
+// } catch (SVNException eee) {
+// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+// }
+// }
/**
* Retourne l'url du repository distant
@@ -125,15 +178,23 @@
*/
public String getRemoteRepository() {
String proto = getProtocol();
+ String user = getLogin();
String host = getHost();
String path = getPath();
- String tag = getTag();
- if (tag == null && "".equals(tag)) {
- tag = "/trunk";
+ String result = null;
+
+ if (proto.startsWith("file")) {
+ result = proto + "://" + path;
+ } else {
+ if (user == null) {
+ user = "";
+ } else if (!"".equals(user)) {
+ user = user + "@";
+ }
+
+ result = proto + "://" + user + host + path;
}
-
- String result = proto + "://" + host + path + tag;
return result;
}
@@ -146,9 +207,15 @@
public void commit(List<File> files, String msg) throws VCSException {
try {
+ if (files == null) {
+ files = Arrays.asList(getLocalRepository());
+ }
SVNCommitInfo commitInfo = getSVNManager().getCommitClient()
.doCommit(files.toArray(new File[files.size()]),
- false, msg, false, true);
+ false, // keep lock
+ msg,
+ false, // force
+ true); // recurse
log.debug("to revision " + commitInfo.getNewRevision());
} catch (SVNException eee) {
throw new VCSException("Can't commit files", eee);
@@ -158,7 +225,7 @@
public void add(List<File> files, String msg) throws VCSException {
try {
for (File file : files) {
- // FIXME check argument in documentation
+ // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
getSVNManager().getWCClient().doAdd(file,
true, // force add to allready added file (no error)
false, // don't create dir if not exist
@@ -172,14 +239,22 @@
}
}
- public void checkout(File destDir, String module, boolean recurse) throws VCSException {
+ public void checkout(VersionNumber tag, boolean recurse) throws VCSException {
try {
- SVNURL source = getRemoteURL().appendPath(module, false);
- File destination = new File(destDir, module);
- getSVNManager().getUpdateClient().doCheckout(source, destination, null,
+ String tagPath = "/trunk/";
+ if (tag != null) {
+ tagPath = "/tags/" + tag + "/";
+ }
+
+ SVNURL source = getRemoteURL().appendPath(tagPath, false);
+
+ File destDir = getLocalRepository();
+ destDir.mkdirs();
+
+ getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
SVNRevision.HEAD, recurse);
} catch (SVNException eee) {
- throw new VCSException(_("Can't checkout file %s", module), eee);
+ throw new VCSException(_("Can't checkout"), eee);
}
}
@@ -223,32 +298,81 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isTag(VersionNumber version) {
+ public boolean isUpToDate(File file) throws VCSException {
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isUpToDate(File file) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public boolean update(File file, boolean recurse) throws VCSException {
+ try {
+ if (!accept(file)) {
+ throw new VCSException("Can't update file that not in local repository");
+ }
+ while (!file.getParentFile().exists()) {
+ update(file.getParentFile(), false);
+ }
+ getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
+ } catch (SVNException eee) {
+ throw new VCSException("Can't update files", eee);
+ }
+ return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
}
- public boolean update(List<File> files) throws VCSException {
- for (File file : files) {
+ public boolean isWriteable() throws VCSException {
+ String login = getLogin();
+ String tag = getTag();
+
+ boolean result = login != null && !"".equals(login) && !"anonymous".equals(login);
+ result = result && !tag.startsWith("/tags");
+
+ return result;
+ }
+
+ public boolean isTag(VersionNumber version) throws VCSException {
+ boolean result = version == null; // le trunk exist toujours
+ if (!result) {
try {
- getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, true);
+ SVNURL url = getRemoteURL();
+ url = url.appendPath("tags/" + version, true);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(url, null, SVNRevision.HEAD);
+ // si le tag n'existe pas, on n'arrive pas ici car une exception
+ // est leve, et donc result reste a faux
+ result = info != null;
} catch (SVNException eee) {
- throw new VCSException("Can't update files", eee);
+ log.debug(_("Tag %s don't exist", version));
}
}
- return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
+ return result;
}
- public void switchTag(VersionNumber version) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public String getTag() throws VCSException {
+ try {
+ File localRoot = getLocalRepository();
+ SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ String root = info.getCopyFromURL().toDecodedString();
+ String url = info.getURL().toDecodedString();
+ String result = url.substring(root.length());
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
}
- public void switchProtocole(String protocoleType) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public void setTag(VersionNumber version) throws VCSException {
+ try {
+ String tag = "/trunk";
+ if (version != null) {
+ tag = "/tags/" + version;
+ }
+
+ File localRoot = getLocalRepository();
+
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(tag, true);
+
+ getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
}
-
}
Modified: trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -20,355 +20,340 @@
package fr.ifremer.isisfish.vcs;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import junit.framework.TestCase;
+import org.codelutin.util.FileUtil;
import org.codelutin.util.VersionNumber;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNClientManager;
+import org.tmatesoft.svn.core.wc.SVNRevision;
/**
*
* @author poussin
*/
-public class VCSSVNTest {
+public class VCSSVNTest extends TestCase {
- VCSSVN instance = null;
+ static VCSSVN instance = null;
public VCSSVNTest() {
}
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
+ static final String fileContentTag = "Version 3.1.0";
+ static final String fileContentTrunk = "Version 3.2.0";
+
+ static File template = new File("/tmp/testsvn-template");
+ static File remoteRepo = new File("/tmp/testsvn-repo");
+ static File localRepo = new File("/tmp/testsvn-local");
- @AfterClass
- public static void tearDownClass() throws Exception {
+ static {
+ try {
+ // un peu de nettoyage
+ if (template.exists()) {
+ FileUtil.deleteRecursively(template);
+ }
+ if (remoteRepo.exists()) {
+ FileUtil.deleteRecursively(remoteRepo);
+ }
+ if (localRepo.exists()) {
+ FileUtil.deleteRecursively(localRepo);
+ }
+
+ // creation de l'instance de notre VCS pour les tests
+ // on le fait au debut pour que la l'init de la lib svn soit fait
+ // par la classe elle meme et ainsi tester que ca marche
+ instance = new VCSSVN(
+ localRepo,
+ "file",
+ "",
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data",
+ null,
+ "", "");
+
+
+ ///////////////////////////////////////////////////////////////////
+ //
+ // Creation d'un repo local avec un trunk et un tag
+ // durant le test, on modifie version.txt pour utiliser
+ // fileContentTrunk et modifier le contenu. On peut alors tester
+ // le changement de tag en fonction du contenu du fichier
+ ///////////////////////////////////////////////////////////////////
+
+ // creation d'un template de directory
+ new File(template, "regions" + File.separator + "DemoRegion" + File.separator + "data").mkdirs();
+ new File(template, "simulations" + File.separator + "simu1" + File.separator + "data").mkdirs();
+ new File(template, "scripts").mkdirs();
+ FileUtil.writeString(new File(template, "scripts" + File.separator + "version.txt"), fileContentTag);
+
+ // creation du repo pour les tests
+ SVNRepositoryFactory.createLocalRepository(remoteRepo, false, true);
+
+ // ajout de source dans le repo
+ SVNURL svnURL = SVNURL.parseURIDecoded("file://" + remoteRepo.getAbsolutePath());
+ SVNURL svnRoot = svnURL.appendPath("isis-fish-data", false);
+ SVNURL svnTrunk = svnRoot.appendPath("trunk", false);
+ SVNURL svnTags = svnRoot.appendPath("tags", false);
+
+ SVNClientManager svnManager = SVNClientManager.newInstance();
+ // creation de l'arborescence
+ svnManager.getCommitClient().doMkDir(new SVNURL[]{svnRoot, svnTrunk, svnTags}, "add dir");
+ svnManager.getCommitClient().doImport(template, svnTrunk, "initial import", true, true);
+
+ svnManager.getCopyClient().doCopy(svnTrunk, SVNRevision.HEAD, svnTags.appendPath("3.1.0", false), false, true, "Create tag");
+
+
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+//// "svn+ssh",
+// "file",
+// "localhost",
+// "/tmp/svnkit/repos/isis-fish-data",
+// new File("/home/poussin/.ssh/id_dsa"),
+// "poussin", "");
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+// "svn",
+// "labs.libre-entreprise.org",
+// "/svnroot/isis-fish-data",
+// null,
+// "anonymous", "anonymous");
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+// "svn+ssh",
+// "labs.libre-entreprise.org",
+// "/svnroot/isis-fish-data",
+// null,
+// "anonymous", "anonymous");
+ } catch (Exception eee) {
+ throw new RuntimeException(eee);
+ }
}
- @Before
- public void setUp() {
-// instance = new VCSSVN(config);
+ @Override
+ protected void tearDown() throws Exception {
}
/**
* Test of getSVNManager method, of class VCSSVN.
*/
@Test
- public void getSVNManager() {
+ public void testgetSVNManager() {
System.out.println("getSVNManager");
- VCSSVN instance = null;
- SVNClientManager expResult = null;
SVNClientManager result = instance.getSVNManager();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ assertNotNull(result);
}
/**
* Test of getRemoteURL method, of class VCSSVN.
*/
@Test
- public void getRemoteURL() throws Exception {
+ public void testgetRemoteURL() throws Exception {
System.out.println("getRemoteURL");
- VCSSVN instance = null;
- SVNURL expResult = null;
+ SVNURL expResult = SVNURL.create("file", null, "", -1,
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data", true);
SVNURL result = instance.getRemoteURL();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
-
+
/**
- * Test of getLocalRepositoryRoot method, of class VCSSVN.
- */
- @Test
- public void getLocalRepositoryRoot() throws Exception {
- System.out.println("getLocalRepositoryRoot");
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getLocalRepositoryRoot();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of getLocalRepositorySource method, of class VCSSVN.
- */
- @Test
- public void getLocalRepositorySource() throws Exception {
- System.out.println("getLocalRepositorySource");
- File f = null;
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getLocalRepositorySource(f);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of getRemoteRepository method, of class VCSSVN.
- */
- @Test
- public void getRemoteRepository() {
- System.out.println("getRemoteRepository");
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getRemoteRepository();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
* Test of isVersionnableAbleFile method, of class VCSSVN.
*/
@Test
- public void isVersionnableAbleFile() {
+ public void testisVersionnableAbleFile() {
System.out.println("isVersionnableAbleFile");
- File file = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.isVersionnableAbleFile(file);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ {
+ // un fichier special, on refuse
+ File file = new File(".svn");
+ boolean expResult = false;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
+ {
+ // Pas dans le repository local, on refuse
+ File file = new File("Toto.java");
+ boolean expResult = false;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
+ {
+ // enfin un bout fichier :)
+ File file = new File(instance.getLocalRepository(), "Toto.java");
+ boolean expResult = true;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
}
-
+
/**
- * Test of commit method, of class VCSSVN.
+ * Test of checkout method, of class VCSSVN.
*/
@Test
- public void commit() throws Exception {
- System.out.println("commit");
- List<File> files = null;
- String msg = "";
- VCSSVN instance = null;
- instance.commit(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ public void testAll() throws Exception {
+ System.out.println("checkout");
+ // on ne checkout rien juste le .svn dans le repertoire racine
+ instance.checkout(null, false);
+ assertTrue(instance.getLocalRepository().exists());
+
+ // update scripts dir
+ instance.update(new File(instance.getLocalRepository(), "scripts"), true);
+ File version = new File(instance.getLocalRepository(), "scripts" + File.separator + "version.txt");
+ assertTrue(version.exists());
+ assertEquals(fileContentTag, FileUtil.readAsString(version));
+
+ // modification du fichier version.txt
+ FileUtil.writeString(version, fileContentTrunk);
+ instance.commit(null, "modif du fichier version");
+ assertEquals(fileContentTrunk, FileUtil.readAsString(version));
+
+ // recuperation de DemoRegion
+ File demo = new File(instance.getLocalRepository(), "regions" + File.separator + "DemoRegion");
+ instance.update(demo, true);
+ assertTrue(demo.exists());
+
+ // suppression de DemoRegion
+ instance.delete(Arrays.asList(demo), "suppression d'une region");
+ assertFalse(demo.exists());
+
+ // test switchTag
+ instance.setTag(new VersionNumber(3, 1, 0));
+ assertEquals(fileContentTag, FileUtil.readAsString(version));
+ assertTrue(demo.exists());
+
}
+
/**
* Test of add method, of class VCSSVN.
*/
@Test
- public void add() throws Exception {
+ public void testadd() throws Exception {
System.out.println("add");
- List<File> files = null;
+ List<File> files = new ArrayList<File>();
String msg = "";
- VCSSVN instance = null;
instance.add(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
- * Test of checkout method, of class VCSSVN.
- */
- @Test
- public void checkout() throws Exception {
- System.out.println("checkout");
- File destDir = null;
- String module = "";
- boolean recurse = false;
- VCSSVN instance = null;
- instance.checkout(destDir, module, recurse);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of delete method, of class VCSSVN.
- */
- @Test
- public void delete() throws Exception {
- System.out.println("delete");
- List<File> files = null;
- String msg = "";
- VCSSVN instance = null;
- instance.delete(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
* Test of getChanglog method, of class VCSSVN.
*/
@Test
- public void getChanglog() {
+ public void testgetChanglog() {
System.out.println("getChanglog");
- List<File> files = null;
- VCSSVN instance = null;
- Map<File, String> expResult = null;
+ List<File> files = new ArrayList<File>();
+ Map<File, String> expResult = new HashMap<File, String>();
Map<File, String> result = instance.getChanglog(files);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getDiff method, of class VCSSVN.
*/
@Test
- public void getDiff() throws Exception {
+ public void testgetDiff() throws Exception {
System.out.println("getDiff");
File file = null;
- VCSSVN instance = null;
String expResult = "";
String result = instance.getDiff(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getFileList method, of class VCSSVN.
*/
@Test
- public void getFileList() throws Exception {
+ public void testgetFileList() throws Exception {
System.out.println("getFileList");
File directory = null;
- VCSSVN instance = null;
List<String> expResult = null;
List<String> result = instance.getFileList(directory);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getUpdatedFile method, of class VCSSVN.
*/
@Test
- public void getUpdatedFile() {
+ public void testgetUpdatedFile() {
System.out.println("getUpdatedFile");
- VCSSVN instance = null;
List<File> expResult = null;
List<File> result = instance.getUpdatedFile();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of haveUpdate method, of class VCSSVN.
*/
@Test
- public void haveUpdate() {
+ public void testhaveUpdate() {
System.out.println("haveUpdate");
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.haveUpdate();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isConnected method, of class VCSSVN.
*/
@Test
- public void isConnected() {
+ public void testisConnected() {
System.out.println("isConnected");
- VCSSVN instance = null;
- boolean expResult = false;
+ boolean expResult = true;
boolean result = instance.isConnected();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isOnRemote method, of class VCSSVN.
*/
@Test
- public void isOnRemote() throws Exception {
+ public void testisOnRemote() throws Exception {
System.out.println("isOnRemote");
File file = null;
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.isOnRemote(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isTag method, of class VCSSVN.
*/
@Test
- public void isTag() {
+ public void testisTag() throws Exception {
System.out.println("isTag");
- VersionNumber version = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.isTag(version);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ {
+ VersionNumber version = new VersionNumber(3,1,0);
+ boolean expResult = true;
+ boolean result = instance.isTag(version);
+ assertEquals(expResult, result);
+ }
+ {
+ VersionNumber version = new VersionNumber(3,2,0);
+ boolean expResult = false;
+ boolean result = instance.isTag(version);
+ assertEquals(expResult, result);
+ }
}
/**
* Test of isUpToDate method, of class VCSSVN.
*/
@Test
- public void isUpToDate() throws Exception {
+ public void testisUpToDate() throws Exception {
System.out.println("isUpToDate");
File file = null;
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.isUpToDate(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
- /**
- * Test of update method, of class VCSSVN.
- */
- @Test
- public void update() throws Exception {
- System.out.println("update");
- List<File> files = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.update(files);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of switchTag method, of class VCSSVN.
- */
- @Test
- public void switchTag() throws Exception {
- System.out.println("switchTag");
- VersionNumber version = null;
- VCSSVN instance = null;
- instance.switchTag(version);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of switchProtocole method, of class VCSSVN.
- */
- @Test
- public void switchProtocole() throws Exception {
- System.out.println("switchProtocole");
- String protocoleType = "";
- VCSSVN instance = null;
- instance.switchProtocole(protocoleType);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
}
\ No newline at end of file
1
0