[coinor-cgl] 10/14: New upstream version 0.59.9+repack1

Anton Gladky gladk at moszumanska.debian.org
Mon Jun 5 14:44:08 UTC 2017


This is an automated email from the git hooks/post-receive script.

gladk pushed a commit to branch experimental
in repository coinor-cgl.

commit 201493bb1c61f78c3c63a1c876d84aac57004dfe
Author: Anton Gladky <gladk at debian.org>
Date:   Mon Jun 5 16:37:46 2017 +0200

    New upstream version 0.59.9+repack1
---
 MSVisualStudio/v10/Cgl.sln                         |   76 -
 MSVisualStudio/v10/CglUnitTest/CglUnitTest.vcxproj |  239 ---
 MSVisualStudio/v10/libCgl/libCgl.vcxproj           |  528 -------
 MSVisualStudio/v9/Cgl.sln                          |   83 -
 MSVisualStudio/v9/CglUnitTest/CglUnitTest.vcproj   |  399 -----
 MSVisualStudio/v9/libCgl/libCgl.vcproj             | 1402 -----------------
 Makefile.am                                        |    4 +-
 Makefile.in                                        |  103 +-
 configure                                          |  258 +++-
 configure.ac                                       |    6 +-
 src/CglAllDifferent/Makefile.in                    |    5 +
 src/CglClique/CglClique.cpp                        |   72 +-
 src/CglClique/CglClique.hpp                        |    6 +-
 src/CglClique/CglCliqueHelper.cpp                  |    8 +-
 src/CglClique/Makefile.in                          |    5 +
 src/CglCutGenerator.cpp                            |    2 +-
 src/CglDuplicateRow/CglDuplicateRow.cpp            |   14 +-
 src/CglDuplicateRow/CglDuplicateRow.hpp            |    2 +-
 src/CglDuplicateRow/Makefile.in                    |    5 +
 src/CglFlowCover/CglFlowCover.cpp                  |   39 +-
 src/CglFlowCover/CglFlowCover.hpp                  |   14 +-
 src/CglFlowCover/Makefile.in                       |    5 +
 src/CglGMI/CglGMI.cpp                              |  146 +-
 src/CglGMI/Makefile.in                             |    5 +
 src/CglGomory/CglGomory.cpp                        |  194 ++-
 src/CglGomory/CglGomoryTest.cpp                    |    2 +-
 src/CglGomory/Makefile.in                          |    5 +
 src/CglKnapsackCover/CglKnapsackCover.cpp          |  399 ++---
 src/CglKnapsackCover/CglKnapsackCover.hpp          |   15 +-
 src/CglKnapsackCover/CglKnapsackCoverTest.cpp      |    2 +-
 src/CglKnapsackCover/Makefile.in                   |    5 +
 src/CglLandP/CglLandP.cpp                          |    2 +-
 src/CglLandP/CglLandP.hpp                          |    2 +-
 src/CglLandP/CglLandPMessages.cpp                  |    2 +-
 src/CglLandP/CglLandPMessages.hpp                  |    2 +-
 src/CglLandP/CglLandPSimplex.cpp                   |    2 +-
 src/CglLandP/CglLandPSimplex.hpp                   |    2 +-
 src/CglLandP/CglLandPTabRow.cpp                    |    2 +-
 src/CglLandP/CglLandPTabRow.hpp                    |    2 +-
 src/CglLandP/CglLandPTest.cpp                      |    2 +-
 src/CglLandP/CglLandPUtils.cpp                     |    2 +-
 src/CglLandP/CglLandPUtils.hpp                     |    2 +-
 src/CglLandP/CglLandPValidator.cpp                 |   32 +-
 src/CglLandP/CglLandPValidator.hpp                 |    9 +-
 src/CglLandP/Makefile.in                           |    5 +
 src/CglLiftAndProject/Makefile.in                  |    5 +
 src/CglMessage.cpp                                 |    4 +-
 src/CglMessage.hpp                                 |    2 +-
 src/CglMixedIntegerRounding/Makefile.in            |    5 +
 .../CglMixedIntegerRounding2.cpp                   |   96 +-
 src/CglMixedIntegerRounding2/Makefile.in           |    5 +
 src/CglOddHole/CglOddHole.cpp                      |    2 +-
 src/CglOddHole/CglOddHole.hpp                      |    2 +-
 src/CglOddHole/CglOddHoleTest.cpp                  |    2 +-
 src/CglOddHole/Makefile.in                         |    5 +
 src/CglParam.hpp                                   |    2 +-
 src/CglPreProcess/CglPreProcess.cpp                | 1585 ++++++++++++++++++--
 src/CglPreProcess/CglPreProcess.hpp                |    2 +
 src/CglPreProcess/Makefile.in                      |    5 +
 src/CglProbing/CglProbing.cpp                      |  366 ++++-
 src/CglProbing/CglProbing.hpp                      |   36 +-
 src/CglProbing/CglProbingTest.cpp                  |    2 +-
 src/CglProbing/Makefile.in                         |    5 +
 src/CglRedSplit/CglRedSplit.cpp                    |    2 +-
 src/CglRedSplit/CglRedSplit.hpp                    |    2 +-
 src/CglRedSplit/CglRedSplitParam.cpp               |    2 +-
 src/CglRedSplit/CglRedSplitParam.hpp               |    2 +-
 src/CglRedSplit/CglRedSplitTest.cpp                |    2 +-
 src/CglRedSplit/Makefile.in                        |    5 +
 src/CglRedSplit2/Makefile.in                       |    5 +
 src/CglResidualCapacity/Makefile.in                |    5 +
 src/CglSimpleRounding/CglSimpleRounding.cpp        |    2 +-
 src/CglSimpleRounding/CglSimpleRounding.hpp        |    2 +-
 src/CglSimpleRounding/CglSimpleRoundingTest.cpp    |    2 +-
 src/CglSimpleRounding/Makefile.in                  |    5 +
 src/CglStored.cpp                                  |    2 +-
 src/CglStored.hpp                                  |    2 +-
 src/CglTreeInfo.cpp                                |  104 +-
 src/CglTreeInfo.hpp                                |   20 +-
 src/CglTwomir/CglTwomir.cpp                        |    2 +-
 src/CglTwomir/CglTwomir.hpp                        |    2 +-
 src/CglTwomir/CglTwomirTest.cpp                    |    2 +-
 src/CglTwomir/Makefile.am                          |    2 +-
 src/CglTwomir/Makefile.in                          |    5 +
 src/CglZeroHalf/Cgl012cut.cpp                      |    4 +-
 src/CglZeroHalf/Cgl012cut.hpp                      |    2 +-
 src/CglZeroHalf/CglZeroHalf.cpp                    |   21 +-
 src/CglZeroHalf/CglZeroHalf.hpp                    |    2 +-
 src/CglZeroHalf/CglZeroHalfTest.cpp                |    2 +-
 src/CglZeroHalf/Makefile.am                        |    2 +-
 src/CglZeroHalf/Makefile.in                        |    5 +
 src/Makefile.am                                    |    2 +-
 src/Makefile.in                                    |    5 +
 src/config_cgl_default.h                           |    4 +-
 test/Makefile.am                                   |    2 +-
 test/Makefile.in                                   |    5 +
 test/unitTest.cpp                                  |    2 +-
 97 files changed, 2992 insertions(+), 3490 deletions(-)

diff --git a/MSVisualStudio/v10/Cgl.sln b/MSVisualStudio/v10/Cgl.sln
deleted file mode 100644
index cb69af8..0000000
--- a/MSVisualStudio/v10/Cgl.sln
+++ /dev/null
@@ -1,76 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCgl", "libCgl\libCgl.vcxproj", "{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CglUnitTest", "CglUnitTest\CglUnitTest.vcxproj", "{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCoinUtils", "..\..\..\CoinUtils\MSVisualStudio\v10\libCoinUtils\libCoinUtils.vcxproj", "{C4867F15-438D-4FF8-8388-62FBAAA9786C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libOsi", "..\..\..\Osi\MSVisualStudio\v10\libOsi\libOsi.vcxproj", "{7D98E2CB-876E-4F75-9F71-77D3FE87E149}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libClp", "..\..\..\Clp\MSVisualStudio\v10\libClp\libClp.vcxproj", "{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libOsiClp", "..\..\..\Clp\MSVisualStudio\v10\libOsiClp\libOsiClp.vcxproj", "{02D45875-A8CF-41B9-990B-3699C0ECFE10}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|Win32.ActiveCfg = Debug|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|Win32.Build.0 = Debug|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|x64.ActiveCfg = Debug|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|x64.Build.0 = Debug|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|Win32.ActiveCfg = Release|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|Win32.Build.0 = Release|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|x64.ActiveCfg = Release|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|x64.Build.0 = Release|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|Win32.Build.0 = Debug|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|x64.ActiveCfg = Debug|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|x64.Build.0 = Debug|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|Win32.ActiveCfg = Release|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|Win32.Build.0 = Release|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|x64.ActiveCfg = Release|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|x64.Build.0 = Release|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|Win32.Build.0 = Debug|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|x64.ActiveCfg = Debug|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|x64.Build.0 = Debug|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|Win32.ActiveCfg = Release|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|Win32.Build.0 = Release|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|x64.ActiveCfg = Release|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|x64.Build.0 = Release|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|Win32.Build.0 = Debug|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|x64.ActiveCfg = Debug|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|x64.Build.0 = Debug|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|Win32.ActiveCfg = Release|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|Win32.Build.0 = Release|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|x64.ActiveCfg = Release|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|x64.Build.0 = Release|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|Win32.Build.0 = Debug|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|x64.ActiveCfg = Debug|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|x64.Build.0 = Debug|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|Win32.ActiveCfg = Release|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|Win32.Build.0 = Release|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|x64.ActiveCfg = Release|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|x64.Build.0 = Release|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|Win32.ActiveCfg = Debug|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|Win32.Build.0 = Debug|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|x64.ActiveCfg = Debug|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|x64.Build.0 = Debug|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|Win32.ActiveCfg = Release|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|Win32.Build.0 = Release|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|x64.ActiveCfg = Release|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/MSVisualStudio/v10/CglUnitTest/CglUnitTest.vcxproj b/MSVisualStudio/v10/CglUnitTest/CglUnitTest.vcxproj
deleted file mode 100644
index 05243ad..0000000
--- a/MSVisualStudio/v10/CglUnitTest/CglUnitTest.vcxproj
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}</ProjectGuid>
-    <RootNamespace>CglUnitTest</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\. [...]
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR="..\\..\\..\\..\\Data\\Sample";TESTDIR="..\\..\\..\\test\\CglTestData";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libCoinUtils.lib;libOsi.lib;libClp.lib;libOsiClp.lib;libCgl.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\. [...]
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR="..\\..\\..\\..\\Data\\Sample";TESTDIR="..\\..\\..\\test\\CglTestData";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libCoinUtils.lib;libOsi.lib;libClp.lib;libOsiClp.lib;libCgl.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\. [...]
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR="..\\..\\..\\..\\Data\\Sample";TESTDIR="..\\..\\..\\test\\CglTestData";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libCoinUtils.lib;libOsi.lib;libClp.lib;libOsiClp.lib;libCgl.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\. [...]
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR="..\\..\\..\\..\\Data\\Sample";TESTDIR="..\\..\\..\\test\\CglTestData";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libCoinUtils.lib;libOsi.lib;libClp.lib;libOsiClp.lib;libCgl.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\src\CglClique\CglCliqueTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglFlowCover\CglFlowCoverTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglGomory\CglGomoryTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglKnapsackCover\CglKnapsackCoverTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2Test.cpp" />
-    <ClCompile Include="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRoundingTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglOddHole\CglOddHoleTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglProbing\CglProbingTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglRedSplit\CglRedSplitTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglResidualCapacity\CglResidualCapacityTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglSimpleRounding\CglSimpleRoundingTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglTwomir\CglTwomirTest.cpp" />
-    <ClCompile Include="..\..\..\test\unitTest.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\Clp\MSVisualStudio\v10\libClp\libClp.vcxproj">
-      <Project>{4f8f7d1c-3a9e-444d-8ee9-77f33fa05994}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\..\Clp\MSVisualStudio\v10\libOsiClp\libOsiClp.vcxproj">
-      <Project>{02d45875-a8cf-41b9-990b-3699c0ecfe10}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\..\CoinUtils\MSVisualStudio\v10\libCoinUtils\libCoinUtils.vcxproj">
-      <Project>{c4867f15-438d-4ff8-8388-62fbaaa9786c}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <Private>true</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\..\Osi\MSVisualStudio\v10\libOsi\libOsi.vcxproj">
-      <Project>{7d98e2cb-876e-4f75-9f71-77d3fe87e149}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\libCgl\libCgl.vcxproj">
-      <Project>{dbea3904-f0b8-408a-9e1a-6497febe8c42}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/MSVisualStudio/v10/libCgl/libCgl.vcxproj b/MSVisualStudio/v10/libCgl/libCgl.vcxproj
deleted file mode 100644
index c782066..0000000
--- a/MSVisualStudio/v10/libCgl/libCgl.vcxproj
+++ /dev/null
@@ -1,528 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}</ProjectGuid>
-    <RootNamespace>libCgl</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Common.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Debug.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Common.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Release.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Common.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Debug.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Common.props" />
-    <Import Project="..\..\..\..\BuildTools\MSVisualStudio\v10\Release.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\src\CglDuplicateRow;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglFlowCover;..\..\..\src\CglClique;..\..\..\src\CglOddHole;..\..\..\src\CglKnapsackCover;..\..\..\src\CglGomory;..\..\..\src\CglPreProcess;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglProbing;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\..\..\Clp\src\OsiClp;..\..\..\..\Clp\src;..\..\..\..\CoinUtils\src;..\..\. [...]
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\src\CglDuplicateRow;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglFlowCover;..\..\..\src\CglClique;..\..\..\src\CglOddHole;..\..\..\src\CglKnapsackCover;..\..\..\src\CglGomory;..\..\..\src\CglPreProcess;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglProbing;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\..\..\Clp\src\OsiClp;..\..\..\..\Clp\src;..\..\..\..\CoinUtils\src;..\..\. [...]
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\src\CglDuplicateRow;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglFlowCover;..\..\..\src\CglClique;..\..\..\src\CglOddHole;..\..\..\src\CglKnapsackCover;..\..\..\src\CglGomory;..\..\..\src\CglPreProcess;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglProbing;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\..\..\Clp\src\OsiClp;..\..\..\..\Clp\src;..\..\..\..\CoinUtils\src;..\..\. [...]
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\src\CglDuplicateRow;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglFlowCover;..\..\..\src\CglClique;..\..\..\src\CglOddHole;..\..\..\src\CglKnapsackCover;..\..\..\src\CglGomory;..\..\..\src\CglPreProcess;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglProbing;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\..\..\Clp\src\OsiClp;..\..\..\..\Clp\src;..\..\..\..\CoinUtils\src;..\..\. [...]
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\src\CglAllDifferent\CglAllDifferent.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglClique\CglClique.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglClique\CglCliqueHelper.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglCutGenerator.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglDuplicateRow\CglDuplicateRow.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglFlowCover\CglFlowCover.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglGMI\CglGMI.cpp" />
-    <ClCompile Include="..\..\..\src\CglGMI\CglGMIParam.cpp" />
-    <ClCompile Include="..\..\..\src\CglGomory\CglGomory.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglKnapsackCover\CglKnapsackCover.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandP.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPMessages.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPSimplex.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPTabRow.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPUtils.cpp" />
-    <ClCompile Include="..\..\..\src\CglLandP\CglLandPValidator.cpp" />
-    <ClCompile Include="..\..\..\src\CglLiftAndProject\CglLiftAndProject.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglMessage.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRounding.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglOddHole\CglOddHole.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglParam.cpp" />
-    <ClCompile Include="..\..\..\src\CglPreProcess\CglPreProcess.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglProbing\CglProbing.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglRedSplit2\CglRedSplit2.cpp" />
-    <ClCompile Include="..\..\..\src\CglRedSplit2\CglRedSplit2Param.cpp" />
-    <ClCompile Include="..\..\..\src\CglRedSplit2\CglRedSplit2Test.cpp" />
-    <ClCompile Include="..\..\..\src\CglRedSplit\CglRedSplit.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglRedSplit\CglRedSplitParam.cpp" />
-    <ClCompile Include="..\..\..\src\CglResidualCapacity\CglResidualCapacity.cpp" />
-    <ClCompile Include="..\..\..\src\CglResidualCapacity\CglResidualCapacityTest.cpp" />
-    <ClCompile Include="..\..\..\src\CglSimpleRounding\CglSimpleRounding.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglStored.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglTreeInfo.cpp" />
-    <ClCompile Include="..\..\..\src\CglTwomir\CglTwomir.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\..\src\CglZeroHalf\Cgl012cut.cpp" />
-    <ClCompile Include="..\..\..\src\CglZeroHalf\CglZeroHalf.cpp" />
-    <ClCompile Include="..\..\..\src\CglZeroHalf\CglZeroHalfTest.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\src\CglAllDifferent\CglAllDifferent.hpp" />
-    <ClInclude Include="..\..\..\src\CglClique\CglClique.hpp" />
-    <ClInclude Include="..\..\..\src\CglConfig.h" />
-    <ClInclude Include="..\..\..\src\CglCutGenerator.hpp" />
-    <ClInclude Include="..\..\..\src\CglDuplicateRow\CglDuplicateRow.hpp" />
-    <ClInclude Include="..\..\..\src\CglFlowCover\CglFlowCover.hpp" />
-    <ClInclude Include="..\..\..\src\CglGMI\CglGMI.hpp" />
-    <ClInclude Include="..\..\..\src\CglGMI\CglGMIParam.hpp" />
-    <ClInclude Include="..\..\..\src\CglGomory\CglGomory.hpp" />
-    <ClInclude Include="..\..\..\src\CglKnapsackCover\CglKnapsackCover.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandP.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandPMessages.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandPSimplex.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandPTabRow.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandPUtils.hpp" />
-    <ClInclude Include="..\..\..\src\CglLandP\CglLandPValidator.hpp" />
-    <ClInclude Include="..\..\..\src\CglLiftAndProject\CglLiftAndProject.hpp" />
-    <ClInclude Include="..\..\..\src\CglMessage.hpp" />
-    <ClInclude Include="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRounding.hpp" />
-    <ClInclude Include="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2.hpp" />
-    <ClInclude Include="..\..\..\src\CglOddHole\CglOddHole.hpp" />
-    <ClInclude Include="..\..\..\src\CglParam.hpp" />
-    <ClInclude Include="..\..\..\src\CglPreProcess\CglPreProcess.hpp" />
-    <ClInclude Include="..\..\..\src\CglProbing\CglProbing.hpp" />
-    <ClInclude Include="..\..\..\src\CglRedSplit2\CglRedSplit2.hpp" />
-    <ClInclude Include="..\..\..\src\CglRedSplit2\CglRedSplit2Param.hpp" />
-    <ClInclude Include="..\..\..\src\CglRedSplit\CglRedSplit.hpp" />
-    <ClInclude Include="..\..\..\src\CglRedSplit\CglRedSplitParam.hpp" />
-    <ClInclude Include="..\..\..\src\CglResidualCapacity\CglResidualCapacity.hpp" />
-    <ClInclude Include="..\..\..\src\CglSimpleRounding\CglSimpleRounding.hpp" />
-    <ClInclude Include="..\..\..\src\CglStored.hpp" />
-    <ClInclude Include="..\..\..\src\CglTreeInfo.hpp" />
-    <ClInclude Include="..\..\..\src\CglTwomir\CglTwomir.hpp" />
-    <ClInclude Include="..\..\..\src\CglZeroHalf\Cgl012cut.hpp" />
-    <ClInclude Include="..\..\..\src\CglZeroHalf\CglZeroHalf.hpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/MSVisualStudio/v9/Cgl.sln b/MSVisualStudio/v9/Cgl.sln
deleted file mode 100644
index 6081a5b..0000000
--- a/MSVisualStudio/v9/Cgl.sln
+++ /dev/null
@@ -1,83 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCgl", "libCgl\libCgl.vcproj", "{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CglUnitTest", "CglUnitTest\CglUnitTest.vcproj", "{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}"
-	ProjectSection(ProjectDependencies) = postProject
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42} = {DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C} = {C4867F15-438D-4FF8-8388-62FBAAA9786C}
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994} = {4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10} = {02D45875-A8CF-41B9-990B-3699C0ECFE10}
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149} = {7D98E2CB-876E-4F75-9F71-77D3FE87E149}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCoinUtils", "..\..\..\CoinUtils\MSVisualStudio\v9\libCoinUtils\libCoinUtils.vcproj", "{C4867F15-438D-4FF8-8388-62FBAAA9786C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libOsi", "..\..\..\Osi\MSVisualStudio\v9\libOsi\libOsi.vcproj", "{7D98E2CB-876E-4F75-9F71-77D3FE87E149}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libClp", "..\..\..\Clp\MSVisualStudio\v9\libClp\libClp.vcproj", "{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libOsiClp", "..\..\..\Clp\MSVisualStudio\v9\libOsiClp\libOsiClp.vcproj", "{02D45875-A8CF-41B9-990B-3699C0ECFE10}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|Win32.ActiveCfg = Debug|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|Win32.Build.0 = Debug|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|x64.ActiveCfg = Debug|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Debug|x64.Build.0 = Debug|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|Win32.ActiveCfg = Release|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|Win32.Build.0 = Release|Win32
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|x64.ActiveCfg = Release|x64
-		{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}.Release|x64.Build.0 = Release|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|Win32.Build.0 = Debug|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|x64.ActiveCfg = Debug|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Debug|x64.Build.0 = Debug|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|Win32.ActiveCfg = Release|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|Win32.Build.0 = Release|Win32
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|x64.ActiveCfg = Release|x64
-		{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}.Release|x64.Build.0 = Release|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|Win32.Build.0 = Debug|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|x64.ActiveCfg = Debug|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Debug|x64.Build.0 = Debug|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|Win32.ActiveCfg = Release|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|Win32.Build.0 = Release|Win32
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|x64.ActiveCfg = Release|x64
-		{C4867F15-438D-4FF8-8388-62FBAAA9786C}.Release|x64.Build.0 = Release|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|Win32.Build.0 = Debug|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|x64.ActiveCfg = Debug|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Debug|x64.Build.0 = Debug|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|Win32.ActiveCfg = Release|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|Win32.Build.0 = Release|Win32
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|x64.ActiveCfg = Release|x64
-		{7D98E2CB-876E-4F75-9F71-77D3FE87E149}.Release|x64.Build.0 = Release|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|Win32.Build.0 = Debug|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|x64.ActiveCfg = Debug|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Debug|x64.Build.0 = Debug|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|Win32.ActiveCfg = Release|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|Win32.Build.0 = Release|Win32
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|x64.ActiveCfg = Release|x64
-		{4F8F7D1C-3A9E-444D-8EE9-77F33FA05994}.Release|x64.Build.0 = Release|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|Win32.ActiveCfg = Debug|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|Win32.Build.0 = Debug|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|x64.ActiveCfg = Debug|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Debug|x64.Build.0 = Debug|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|Win32.ActiveCfg = Release|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|Win32.Build.0 = Release|Win32
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|x64.ActiveCfg = Release|x64
-		{02D45875-A8CF-41B9-990B-3699C0ECFE10}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/MSVisualStudio/v9/CglUnitTest/CglUnitTest.vcproj b/MSVisualStudio/v9/CglUnitTest/CglUnitTest.vcproj
deleted file mode 100644
index 7975735..0000000
--- a/MSVisualStudio/v9/CglUnitTest/CglUnitTest.vcproj
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="CglUnitTest"
-	ProjectGUID="{2775A6EA-AAC5-4A94-BCDF-CE353DCCA7BE}"
-	RootNamespace="CglUnitTest"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\ [...]
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR=\"..\\..\\..\\..\\Data\\Sample\";TESTDIR=\"..\\..\\..\\test\\CglTestData\""
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\ [...]
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR=\"..\\..\\..\\..\\Data\\Sample\";TESTDIR=\"..\\..\\..\\test\\CglTestData\""
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\ [...]
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR=\"..\\..\\..\\..\\Data\\Sample\";TESTDIR=\"..\\..\\..\\test\\CglTestData\""
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglLandP;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\src\CglSimpleRounding;..\..\..\src\CglTwomir;..\..\..\src;..\..\..\..\Osi\src\Osi;..\..\ [...]
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;COIN_HAS_OSICLP;SAMPLEDIR=\"..\\..\\..\\..\\Data\\Sample\";TESTDIR=\"..\\..\\..\\test\\CglTestData\""
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\src\CglClique\CglCliqueTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglFlowCover\CglFlowCoverTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGomory\CglGomoryTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglKnapsackCover\CglKnapsackCoverTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2Test.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRoundingTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglOddHole\CglOddHoleTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglProbing\CglProbingTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit\CglRedSplitTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglResidualCapacity\CglResidualCapacityTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglSimpleRounding\CglSimpleRoundingTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglTwomir\CglTwomirTest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\test\unitTest.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/MSVisualStudio/v9/libCgl/libCgl.vcproj b/MSVisualStudio/v9/libCgl/libCgl.vcproj
deleted file mode 100644
index b61847f..0000000
--- a/MSVisualStudio/v9/libCgl/libCgl.vcproj
+++ /dev/null
@@ -1,1402 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="libCgl"
-	ProjectGUID="{DBEA3904-F0B8-408A-9E1A-6497FEBE8C42}"
-	RootNamespace="libCgl"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..\src;..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\..\BuildTools\headers;..\..\..\..\CoinUtils\inc;..\..\..\..\CoinUtils\src;..\..\..\..\Osi\src\Osi [...]
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				RuntimeTypeInfo="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\src;..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\..\BuildTools\headers;..\..\..\..\CoinUtils\inc;..\..\..\..\CoinUtils\src;..\..\..\..\Osi\src\Osi [...]
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				RuntimeTypeInfo="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-				CompileAs="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..\src;..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\..\BuildTools\headers;..\..\..\..\CoinUtils\inc;..\..\..\..\CoinUtils\src;..\..\..\..\Osi\src\Osi [...]
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				RuntimeTypeInfo="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\src;..\..\..\src\CglClique;..\..\..\src\CglDuplicateRow;..\..\..\src\CglFlowCover;..\..\..\src\CglGomory;..\..\..\src\CglKnapsackCover;..\..\..\src\CglMixedIntegerRounding;..\..\..\src\CglMixedIntegerRounding2;..\..\..\src\CglOddHole;..\..\..\src\CglPreProcess;..\..\..\src\CglProbing;..\..\..\src\CglRedSplit;..\..\..\src\CglResidualCapacity;..\..\..\..\BuildTools\headers;..\..\..\..\CoinUtils\inc;..\..\..\..\CoinUtils\src;..\..\..\..\Osi\src\Osi [...]
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				RuntimeTypeInfo="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-				CompileAs="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="..\..\..\src\CglZeroHalf\Cgl012cut.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglAllDifferent\CglAllDifferent.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglClique\CglClique.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglClique\CglCliqueHelper.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglCutGenerator.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglDuplicateRow\CglDuplicateRow.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglFlowCover\CglFlowCover.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGMI\CglGMI.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGMI\CglGMIParam.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGomory\CglGomory.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglKnapsackCover\CglKnapsackCover.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandP.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPMessages.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPSimplex.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPTabRow.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPUtils.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPValidator.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLiftAndProject\CglLiftAndProject.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMessage.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRounding.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglOddHole\CglOddHole.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglParam.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglPreProcess\CglPreProcess.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglProbing\CglProbing.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit\CglRedSplit.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit2\CglRedSplit2.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit2\CglRedSplit2Param.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit\CglRedSplitParam.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglResidualCapacity\CglResidualCapacity.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglSimpleRounding\CglSimpleRounding.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglStored.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglTreeInfo.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglTwomir\CglTwomir.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="2"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						Optimization="0"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						BasicRuntimeChecks="3"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglZeroHalf\CglZeroHalf.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="..\..\..\src\CglZeroHalf\Cgl012cut.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglAllDifferent\CglAllDifferent.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglClique\CglClique.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglConfig.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglCutGenerator.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglDuplicateRow\CglDuplicateRow.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglFlowCover\CglFlowCover.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGMI\CglGMI.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGMI\CglGMIParam.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglGomory\CglGomory.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglKnapsackCover\CglKnapsackCover.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandP.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPMessages.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPSimplex.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPTabRow.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPUtils.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLandP\CglLandPValidator.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglLiftAndProject\CglLiftAndProject.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMessage.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding\CglMixedIntegerRounding.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglMixedIntegerRounding2\CglMixedIntegerRounding2.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglOddHole\CglOddHole.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglParam.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglPreProcess\CglPreProcess.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglProbing\CglProbing.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit\CglRedSplit.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit2\CglRedSplit2.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit2\CglRedSplit2Param.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglRedSplit\CglRedSplitParam.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglResidualCapacity\CglResidualCapacity.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglSimpleRounding\CglSimpleRounding.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglStored.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglTreeInfo.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglTwomir\CglTwomir.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\src\CglZeroHalf\CglZeroHalf.hpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/Makefile.am b/Makefile.am
index fb07656..1e80a5d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: Makefile.am 1051 2011-10-13 20:36:00Z stefan $
+## $Id: Makefile.am 1256 2015-02-07 19:56:21Z tkr $
 
 # Author:  Andreas Waechter           IBM    2006-04-13
 
@@ -74,7 +74,7 @@ addlibsdir = $(DESTDIR)$(datadir)/coin/doc/Cgl
 install-data-hook:
 	@$(mkdir_p) "$(addlibsdir)"
 if COIN_HAS_PKGCONFIG
-	PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@ \
+	PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@:$(DESTDIR)$(pkgconfiglibdir) \
 	$(PKG_CONFIG) --libs cgl > $(addlibsdir)/cgl_addlibs.txt
 else
 if COIN_CXX_IS_CL
diff --git a/Makefile.in b/Makefile.in
index 1fb70d4..42ef658 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -153,6 +153,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -333,6 +337,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
@@ -389,8 +394,10 @@ CLEANFILES =
 
 # Files that are generated and should be cleaned with make distclean
 DISTCLEANFILES = $(am__append_3) $(VPATH_DISTCLEANFILES)
-DocFiles = README AUTHORS LICENSE
+DocFiles = README AUTHORS LICENSE 
 DocInstallDir = $(datadir)/coin/doc/$(PACKAGE_NAME)
+COIN_HAS_DOXYGEN = @COIN_HAS_DOXYGEN_TRUE at TRUE
+COIN_HAS_LATEX = @COIN_HAS_LATEX_TRUE at TRUE
 all: all-recursive
 
 .SUFFIXES:
@@ -878,7 +885,7 @@ uninstall-local: uninstall-doc
 
 install-data-hook:
 	@$(mkdir_p) "$(addlibsdir)"
- at COIN_HAS_PKGCONFIG_TRUE@	PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@ \
+ at COIN_HAS_PKGCONFIG_TRUE@	PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@:$(DESTDIR)$(pkgconfiglibdir) \
 @COIN_HAS_PKGCONFIG_TRUE@	$(PKG_CONFIG) --libs cgl > $(addlibsdir)/cgl_addlibs.txt
 @COIN_CXX_IS_CL_TRUE@@COIN_HAS_PKGCONFIG_FALSE@	echo "-libpath:`$(CYGPATH_W) @abs_lib_dir@` libCgl.lib @CGLLIB_LIBS_INSTALLED@" > $(addlibsdir)/cgl_addlibs.txt
 @COIN_CXX_IS_CL_FALSE@@COIN_HAS_PKGCONFIG_FALSE@	echo -L at abs_lib_dir@ -lCgl @CGLLIB_LIBS_INSTALLED@ > $(addlibsdir)/cgl_addlibs.txt
@@ -886,12 +893,100 @@ install-data-hook:
 uninstall-hook:
 	rm -f $(addlibsdir)/cgl_addlibs.txt
 
-install-doc: $(DocFiles)
+doxygen-docs: 
+	if test "$(COIN_HAS_DOXYGEN)" = TRUE; then \
+	  if test -d "doxydoc/"; then \
+	    doxygen doxydoc/doxygen.conf;\
+	  fi;\
+	fi
+
+pdf-doxygen-docs: doxygen-docs
+	if test "$(COIN_HAS_DOXYGEN)" = TRUE; then \
+	  if test -d "doxydoc/latex"; then \
+       	    if test "$(COIN_HAS_LATEX)" = TRUE; then \
+	      cd doxydoc/latex;\
+	      $(MAKE) pdf;\
+	      cd -;\
+	    fi;\
+	  fi;\
+	fi
+
+clean-doxygen-docs:
+	if test -d "doxydoc/"; then \
+	  cd doxydoc ;\
+	  rm -rf html latex *.log *.tag;\
+	fi
+
+install-doxygen-docs: doxygen-docs
+	if test "$(COIN_HAS_DOXYGEN)" = TRUE; then \
+	  if test -d "doxydoc/"; then \
+	    test -d "$(DESTDIR)$(DocInstallDir)/doxydoc" || $(mkdir_p) "$(DESTDIR)$(DocInstallDir)/doxydoc"; \
+	    $(INSTALL_DATA) @coin_doxy_tagname@ "$(DESTDIR)$(DocInstallDir)/@coin_doxy_tagname@";\
+	    if test -f "doxydoc/latex/refman.pdf"; then \
+	      $(INSTALL_DATA) doxydoc/latex/refman.pdf "$(DESTDIR)$(DocInstallDir)";\
+	    fi;\
+	    if test -d "doxydoc/html"; then \
+	      test -d "$(DESTDIR)$(DocInstallDir)/doxydoc/search/" || $(mkdir_p) "$(DESTDIR)$(DocInstallDir)/doxydoc/search/"; \
+	      $(INSTALL_DATA) doxydoc/html/*.* "$(DESTDIR)$(DocInstallDir)/doxydoc";\
+	      $(INSTALL_DATA) doxydoc/html/search/*.* "$(DESTDIR)$(DocInstallDir)/doxydoc/search";\
+            fi;\
+          fi;\
+        fi
+
+uninstall-doxygen-docs:
+	if test -d "$(DESTDIR)$(DocInstallDir)/doxydoc/"; then \
+	  rm -rf "$(DESTDIR)$(DocInstallDir)/doxydoc/"; \
+	fi
+	if test -f "$(DESTDIR)$(DocInstallDir)/refman.pdf"; then \
+	  rm -f "$(DESTDIR)$(DocInstallDir)/refman.pdf"; \
+	fi
+
+all-doxygen-docs:
+	for dir in $(subdirs) ; do \
+	  do_project=true;\
+	  for proj in $(COIN_SKIP_DOXYGEN); do\
+	    if test $$dir = $$proj; then\
+	      do_project=false;\
+	    fi;\
+	  done;\
+	  if test -r $$dir/doxydoc & $$do_project = true; then \
+	    (cd $$dir ; $(MAKE) doxygen-docs) \
+	  fi ; \
+	done ; 
+
+clean-all-doxygen-docs:
+	for dir in $(subdirs) ; do \
+	  if test -r $$dir/doxydoc ; then \
+	    (cd $$dir ; $(MAKE) clean-doxygen-docs) \
+	  fi ; \
+	done ; 
+
+install-all-doxygen-docs: all-doxygen-docs
+	for dir in $(subdirs) ; do \
+	  do_project=true;\
+	  for proj in $(COIN_SKIP_DOXYGEN); do\
+	    if test $$dir = $$proj; then\
+	      do_project=false;\
+	    fi;\
+	  done;\
+	  if test -r $$dir/doxydoc & $$do_project = true; then \
+	    (cd $$dir ; $(MAKE) install-doxygen-docs) \
+	  fi ; \
+	done ; 
+
+uninstall-all-doxygen-docs:
+	for dir in $(subdirs) ; do \
+	  if test -r $$dir/doxydoc ; then \
+	    (cd $$dir ; $(MAKE) uninstall-doxygen-docs) \
+	  fi ; \
+	done ; 
+
+install-doc: $(DocFiles) 
 	test -z "$(DocInstallDir)" || $(mkdir_p) "$(DESTDIR)$(DocInstallDir)"
 	for file in $(DocFiles); do \
 	  if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
 	  if test -f "$$dir$$file"; then $(INSTALL_DATA) "$$dir$$file" "$(DESTDIR)$(DocInstallDir)/$$file"; fi; \
-	done
+	done 
 
 uninstall-doc:
 	for file in $(DocFiles); do \
diff --git a/configure b/configure
index 2ce33a2..d75c1e0 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for Cgl 0.58.9.
+# Generated by GNU Autoconf 2.59 for Cgl 0.59.9.
 #
 # Report bugs to <cgl at list.coin-or.org>.
 #
@@ -429,8 +429,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='Cgl'
 PACKAGE_TARNAME='cgl'
-PACKAGE_VERSION='0.58.9'
-PACKAGE_STRING='Cgl 0.58.9'
+PACKAGE_VERSION='0.59.9'
+PACKAGE_STRING='Cgl 0.59.9'
 PACKAGE_BUGREPORT='cgl at list.coin-or.org'
 
 ac_unique_file="src/CglMessage.hpp"
@@ -472,7 +472,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os ALWAYS_FALSE_TRUE ALWAYS_FALSE_FALSE have_svnversion CGL_SVN_REV CDEFS ADD_CFLAGS DBG_CFLAGS OPT_CFLAGS sol_cc [...]
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os ALWAYS_FALSE_TRUE ALWAYS_FALSE_FALSE have_svnversion CGL_SVN_REV CDEFS ADD_CFLAGS DBG_CFLAGS OPT_CFLAGS sol_cc [...]
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1005,7 +1005,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Cgl 0.58.9 to adapt to many kinds of systems.
+\`configure' configures Cgl 0.59.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1071,7 +1071,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Cgl 0.58.9:";;
+     short | recursive ) echo "Configuration of Cgl 0.59.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1094,6 +1094,9 @@ Optional Features:
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-dependency-linking
+                          disable linking library dependencies into shared
+                          libraries
   --disable-pkg-config    disable use of pkg-config (if available)
   --disable-interpackage-dependencies
                           disables deduction of Makefile dependencies from
@@ -1275,7 +1278,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-Cgl configure 0.58.9
+Cgl configure 0.59.9
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1295,7 +1298,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Cgl $as_me 0.58.9, which was
+It was created by Cgl $as_me 0.59.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1821,7 +1824,7 @@ _ACEOF
 
 
 # Capture libtool library version, if given.
- coin_libversion=9:9:8
+ coin_libversion=10:9:9
 
 
 
@@ -2062,7 +2065,7 @@ fi
 	       comps="xlc gcc pgcc icc cc"
 	     fi
 	     ;;
-  *-*-darwin*) comps="clang gcc" ;;
+  *-*-darwin*) comps="clang gcc cc" ;;
   *-linux-gnu*) comps="gcc cc pgcc icc xlc" ;;
   *-linux-*) comps="xlc gcc cc pgcc icc" ;;
   *)         comps="xlc_r xlc cc gcc pgcc icc" ;;
@@ -3219,7 +3222,7 @@ case $build in
       fi ;;
   *-*-solaris*)
   	     comps="CC xlC_r aCC g++ c++ pgCC icpc gpp cxx cc++ cl FCC KCC RCC" ;;
-  *-darwin*) comps="g++ c++ CC" ;;
+  *-darwin*) comps="clang++ g++ c++ CC" ;;
   *-linux-gnu*)
              comps="g++ c++ pgCC icpc gpp cxx cc++ cl FCC KCC RCC xlC_r aCC CC" ;;
           *) comps="xlC_r aCC CC g++ c++ pgCC icpc gpp cxx cc++ cl FCC KCC RCC" ;;
@@ -3656,7 +3659,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 coin_cxx_is_cl=false
 # It seems that we need to cleanup something here for the Windows
 case "$CXX" in
-  clang* ) ;;
+  clang* | */clang*) ;;
   cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
     sed -e 's/^void exit (int);//' confdefs.h >> confdefs.hh
     mv confdefs.hh confdefs.h
@@ -4056,7 +4059,7 @@ echo "$as_me: Will use MPI C++ compiler $MPICXX" >&6;}
   CXX="$MPICXX"
 fi
 
-# correct the LD variable in a build with MS or intel compiler
+# correct the LD variable in a build with MS or Intel-windows compiler
 case "$CXX" in
   clang* ) ;;
   cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
@@ -4089,31 +4092,30 @@ echo "$as_me: error: Shared libraries are disabled by user, but this is not feas
   fi
   enable_shared=yes;
 else
-  # On Cygwin and AIX, building DLLs doesn't work
   case $build in
     *-cygwin* | *-mingw*)
       coin_disable_shared=yes
       if test x"$enable_shared" = xyes; then
         case "$CC" in
           clang* )
-            { echo "$as_me:$LINENO: WARNING: DLL building not supported. I'm disabling your choice." >&5
-echo "$as_me: WARNING: DLL building not supported. I'm disabling your choice." >&2;}
+            { echo "$as_me:$LINENO: WARNING: Building of DLLs not supported in this configuration." >&5
+echo "$as_me: WARNING: Building of DLLs not supported in this configuration." >&2;}
             ;;
           cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
-            { echo "$as_me:$LINENO: DLL building not supported, but will build with -MD(d) instead of -MT(d)." >&5
-echo "$as_me: DLL building not supported, but will build with -MD(d) instead of -MT(d)." >&6;}
+            { echo "$as_me:$LINENO: Building of DLLs not supported in this configuration." >&5
+echo "$as_me: Building of DLLs not supported in this configuration." >&6;}
             ;;
           *gcc*)
-	    if test x"$enable_dependency_linking" = xyes; then
+            if test x"$enable_dependency_linking" = xyes; then
               coin_disable_shared=no
             else
-              { echo "$as_me:$LINENO: WARNING: To build shared libraries with gcc on CYGWIN or MSys, use --enable-dependency-linking" >&5
-echo "$as_me: WARNING: To build shared libraries with gcc on CYGWIN or MSys, use --enable-dependency-linking" >&2;}
+              { echo "$as_me:$LINENO: WARNING: Dependency linking seems to be disabled, so shared libraries (DLLs) will not be built" >&5
+echo "$as_me: WARNING: Dependency linking seems to be disabled, so shared libraries (DLLs) will not be built" >&2;}
             fi
             ;;
           *)
-            { echo "$as_me:$LINENO: WARNING: DLL building not supported. I'm disabling your choice." >&5
-echo "$as_me: WARNING: DLL building not supported. I'm disabling your choice." >&2;}
+            { echo "$as_me:$LINENO: WARNING: Building of DLLs not supported in this configuration." >&5
+echo "$as_me: WARNING: Building of DLLs not supported in this configuration." >&2;}
             ;;
         esac
       fi
@@ -4122,8 +4124,8 @@ echo "$as_me: WARNING: DLL building not supported. I'm disabling your choice." >
       coin_disable_shared=yes
       platform=AIX
       if test x"$enable_shared" = xyes; then
-        { echo "$as_me:$LINENO: WARNING: Shared objects are not supported. I'm disabling your choice." >&5
-echo "$as_me: WARNING: Shared objects are not supported. I'm disabling your choice." >&2;}
+        { echo "$as_me:$LINENO: WARNING: Shared objects are not supported." >&5
+echo "$as_me: WARNING: Shared objects are not supported." >&2;}
       fi
     ;;
   esac
@@ -4544,7 +4546,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='cgl'
- VERSION='0.58.9'
+ VERSION='0.59.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5840,7 +5842,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5843 "configure"' > conftest.$ac_ext
+  echo '#line 5845 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -6974,7 +6976,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:6977:" \
+echo "$as_me:6979:" \
      "checking for Fortran 77 compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
 { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -8041,11 +8043,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8044: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8046: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8048: \$? = $ac_status" >&5
+   echo "$as_me:8050: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8309,11 +8311,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8312: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8314: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8316: \$? = $ac_status" >&5
+   echo "$as_me:8318: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8413,11 +8415,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8416: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8418: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8420: \$? = $ac_status" >&5
+   echo "$as_me:8422: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10758,7 +10760,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10761 "configure"
+#line 10763 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10858,7 +10860,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10861 "configure"
+#line 10863 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13202,11 +13204,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13205: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13207: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13209: \$? = $ac_status" >&5
+   echo "$as_me:13211: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13306,11 +13308,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13309: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13311: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13313: \$? = $ac_status" >&5
+   echo "$as_me:13315: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14876,11 +14878,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14879: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14881: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14883: \$? = $ac_status" >&5
+   echo "$as_me:14885: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14980,11 +14982,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14983: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14985: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14987: \$? = $ac_status" >&5
+   echo "$as_me:14989: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17187,11 +17189,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17190: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17192: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17194: \$? = $ac_status" >&5
+   echo "$as_me:17196: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17455,11 +17457,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17458: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17460: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17462: \$? = $ac_status" >&5
+   echo "$as_me:17464: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17559,11 +17561,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17562: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17564: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:17566: \$? = $ac_status" >&5
+   echo "$as_me:17568: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -20251,7 +20253,6 @@ echo "$as_me: Build is \"$build\"." >&6;}
   case $build in
     *-mingw*)
       CYGPATH_W=echo
-      mydos2unix=
       ;;
   esac
 
@@ -20449,13 +20450,37 @@ if test "${enable_dependency_linking+set}" = set; then
   enableval="$enable_dependency_linking"
   dependency_linking="$enableval"
 else
-  dependency_linking=no
+  dependency_linking=auto
 fi;
 
-# ToDo
-# For now, don't use the -no-undefined flag, since the Makefiles are
-# not yet set up that way.  But we need to fix this, when we want
-# to comile DLLs under Windows.
+if test "$dependency_linking" = auto; then
+  # On Cygwin and AIX, building DLLs doesn't work
+  dependency_linking=no
+  if test x"$coin_disable_shared" = xno; then
+    case $build in
+      *-cygwin* | *-mingw*)
+        case "$CC" in
+          clang* )
+            dependency_linking=yes
+            ;;
+          cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
+            dependency_linking=no
+            ;;
+          *gcc*)
+            dependency_linking=yes
+            ;;
+          *)
+            dependency_linking=yes
+            ;;
+        esac
+        ;;
+      *)
+        dependency_linking=yes
+        ;;
+    esac
+  fi
+fi
+
 if test "$dependency_linking" = yes ;
 then
   LT_LDFLAGS="-no-undefined"
@@ -26670,6 +26695,42 @@ else
 echo "${ECHO_T}no" >&6
 fi
 
+# Extract the first word of "latex", so it can be a program name with args.
+set dummy latex; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_coin_have_latex+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$coin_have_latex"; then
+  ac_cv_prog_coin_have_latex="$coin_have_latex" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_coin_have_latex="yes"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_coin_have_latex" && ac_cv_prog_coin_have_latex="no"
+fi
+fi
+coin_have_latex=$ac_cv_prog_coin_have_latex
+if test -n "$coin_have_latex"; then
+  echo "$as_me:$LINENO: result: $coin_have_latex" >&5
+echo "${ECHO_T}$coin_have_latex" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
 
 # Look for the dot tool from the graphviz package, unless the user has
 # disabled it.
@@ -26734,6 +26795,26 @@ coin_doxy_tagname=doxydoc/${PACKAGE}_doxy.tag
 coin_doxy_logname=doxydoc/${PACKAGE}_doxy.log
 
 
+
+if test $coin_have_doxygen = yes; then
+  COIN_HAS_DOXYGEN_TRUE=
+  COIN_HAS_DOXYGEN_FALSE='#'
+else
+  COIN_HAS_DOXYGEN_TRUE='#'
+  COIN_HAS_DOXYGEN_FALSE=
+fi
+
+
+
+if test $coin_have_latex = yes; then
+  COIN_HAS_LATEX_TRUE=
+  COIN_HAS_LATEX_FALSE='#'
+else
+  COIN_HAS_LATEX_TRUE='#'
+  COIN_HAS_LATEX_FALSE=
+fi
+
+
 # Process the list of project names and massage them into possible doxygen
 # doc'n directories. Prefer 1) classic external, source processed using
 # a project-specific doxygen.conf, we use the tag file; 2) classic
@@ -26753,32 +26834,28 @@ for proj in $tmp ; do
 echo $ECHO_N "checking for doxygen doc'n for $proj ... $ECHO_C" >&6
   doxytag=${lc_proj}_doxy.tag
   doxyfound=no
-  for chkProj in $coin_subdirs ; do
-    if test "$chkProj" = "$proj" ; then
-      # proj will be configured, hence doxydoc present in build tree
-      doxysrcdir="${srcdir}/${proj}"
-      # AC_MSG_NOTICE([Considering $doxysrcdir (base)])
-      if test -d "$doxysrcdir" ; then
-	# with a doxydoc directory?
-	doxydir="$doxysrcdir/doxydoc"
-	# AC_MSG_NOTICE([Considering $doxydir (base)])
-	# AC_MSG_NOTICE([Subdirs: $coin_subdirs)])
-	if test -d "$doxydir" ; then
-	  # use tag file; don't process source
-	  eval doxydir="`pwd`/${proj}/doxydoc"
-	  coin_doxy_tagfiles="$coin_doxy_tagfiles $doxydir/$doxytag=$doxydir/html"
-	  echo "$as_me:$LINENO: result: $doxydir (tag)" >&5
+  # proj will be configured, hence doxydoc present in build tree
+  doxysrcdir="${srcdir}/../${proj}"
+  # AC_MSG_NOTICE([Considering $doxysrcdir (base)])
+  if test -d "$doxysrcdir" ; then
+    # with a doxydoc directory?
+    doxydir="$doxysrcdir/doxydoc"
+    # AC_MSG_NOTICE([Considering $doxydir (base)])
+    # AC_MSG_NOTICE([Subdirs: $coin_subdirs)])
+    if test -d "$doxydir" ; then
+      # use tag file; don't process source
+      doxydir="../${proj}/doxydoc"
+      coin_doxy_tagfiles="$coin_doxy_tagfiles $doxydir/$doxytag=../../$doxydir/html"
+      echo "$as_me:$LINENO: result: $doxydir (tag)" >&5
 echo "${ECHO_T}$doxydir (tag)" >&6
-	  coin_doxy_excludes="$coin_doxy_excludes */${proj}"
-	else
-	  # will process the source -- nothing further to be done here
-	  echo "$as_me:$LINENO: result: $doxysrcdir (src)" >&5
+      coin_doxy_excludes="$coin_doxy_excludes */${proj}"
+    else
+      # will process the source -- nothing further to be done here
+      echo "$as_me:$LINENO: result: $doxysrcdir (src)" >&5
 echo "${ECHO_T}$doxysrcdir (src)" >&6
-	fi
-	doxyfound=yes
-      fi
     fi
-  done
+    doxyfound=yes
+  fi
   # Not built, fall back to installed tag file
   if test $doxyfound = no ; then
     eval doxydir="${datadir}/coin/doc/${proj}/doxydoc"
@@ -27196,6 +27273,20 @@ echo "$as_me: error: conditional \"COIN_HAS_OSIDYLP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${COIN_HAS_DOXYGEN_TRUE}" && test -z "${COIN_HAS_DOXYGEN_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"COIN_HAS_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"COIN_HAS_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${COIN_HAS_LATEX_TRUE}" && test -z "${COIN_HAS_LATEX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"COIN_HAS_LATEX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"COIN_HAS_LATEX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
@@ -27467,7 +27558,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by Cgl $as_me 0.58.9, which was
+This file was extended by Cgl $as_me 0.59.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27530,7 +27621,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-Cgl config.status 0.58.9
+Cgl config.status 0.59.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -27966,9 +28057,14 @@ s, at COIN_HAS_OSIDYLP_FALSE@,$COIN_HAS_OSIDYLP_FALSE,;t t
 s, at CGL_SUBDIRS@,$CGL_SUBDIRS,;t t
 s, at CGL_SUBLIBS@,$CGL_SUBLIBS,;t t
 s, at coin_have_doxygen@,$coin_have_doxygen,;t t
+s, at coin_have_latex@,$coin_have_latex,;t t
 s, at coin_doxy_usedot@,$coin_doxy_usedot,;t t
 s, at coin_doxy_tagname@,$coin_doxy_tagname,;t t
 s, at coin_doxy_logname@,$coin_doxy_logname,;t t
+s, at COIN_HAS_DOXYGEN_TRUE@,$COIN_HAS_DOXYGEN_TRUE,;t t
+s, at COIN_HAS_DOXYGEN_FALSE@,$COIN_HAS_DOXYGEN_FALSE,;t t
+s, at COIN_HAS_LATEX_TRUE@,$COIN_HAS_LATEX_TRUE,;t t
+s, at COIN_HAS_LATEX_FALSE@,$COIN_HAS_LATEX_FALSE,;t t
 s, at coin_doxy_tagfiles@,$coin_doxy_tagfiles,;t t
 s, at coin_doxy_excludes@,$coin_doxy_excludes,;t t
 s, at LIBEXT@,$LIBEXT,;t t
diff --git a/configure.ac b/configure.ac
index 0b242dd..5dc1aba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: configure.ac 1213 2014-08-28 01:53:45Z tkr $
+## $Id: configure.ac 1359 2016-02-22 19:20:13Z tkr $
 
 # Author:  Andreas Waechter            IBM    2006-04-13
 
@@ -12,7 +12,7 @@
 
 AC_PREREQ(2.59)
 
-AC_INIT([Cgl],[0.58.9],[cgl at list.coin-or.org])
+AC_INIT([Cgl],[0.59.9],[cgl at list.coin-or.org])
 
 AC_COPYRIGHT([
 Copyright 2006 International Business Machines and others.
@@ -41,7 +41,7 @@ AC_CANONICAL_BUILD
 # the source root directory contains definition of where to find those
 # externals.  The following macro ensures that those externals are
 # retrieved by svn if they are not there yet.
-AC_COIN_PROJECTDIR_INIT(Cgl,9:9:8)
+AC_COIN_PROJECTDIR_INIT(Cgl,10:9:9)
 
 # Check if user wants to produce debugging code
 AC_COIN_DEBUG_COMPILE(Cgl)
diff --git a/src/CglAllDifferent/Makefile.in b/src/CglAllDifferent/Makefile.in
index c110827..1964e7b 100644
--- a/src/CglAllDifferent/Makefile.in
+++ b/src/CglAllDifferent/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglClique/CglClique.cpp b/src/CglClique/CglClique.cpp
index c928c68..5d2b1f1 100644
--- a/src/CglClique/CglClique.cpp
+++ b/src/CglClique/CglClique.cpp
@@ -1,4 +1,4 @@
-// $Id: CglClique.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglClique.cpp 1330 2016-01-26 19:35:16Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -28,6 +28,7 @@ CglClique::CglClique(bool setPacking, bool justOriginalRows) :
    sp_row_ind(0),
    node_node(0),
    petol(-1.0),
+   maxNumber_(5000),
    do_row_clique(true),
    do_star_clique(true),
    scl_next_node_rule(SCL_MAX_XJ_MAX_DEG),
@@ -58,6 +59,7 @@ CglClique::CglClique(const CglClique& rhs)
     sp_row_ind(rhs.sp_row_ind),
     node_node(rhs.node_node),
     petol(rhs.petol),
+    maxNumber_(rhs.maxNumber_),
     do_row_clique(rhs.do_row_clique),
     do_star_clique(rhs.do_star_clique),
     scl_next_node_rule(rhs.scl_next_node_rule),
@@ -109,7 +111,15 @@ CglClique::generateCuts(const OsiSolverInterface& si, OsiCuts & cs,
    // Just original rows
    if (justOriginalRows_&&info.inTree) 
      sp_numrows = CoinMin(info.formulation_rows,sp_numrows);
-     
+   
+#ifndef MAX_CGLCLIQUE_ROWS
+#define MAX_CGLCLIQUE_ROWS 100000
+#endif
+   if (sp_numrows > MAX_CGLCLIQUE_ROWS) {
+     //printf("sp_numrows is %d\n",sp_numrows);
+     deleteSetPackingSubMatrix();
+     return; // too many
+   }
 
    createSetPackingSubMatrix(si);
    fgraph.edgenum = createNodeNode();
@@ -843,6 +853,9 @@ CglFakeClique::assignSolver(OsiSolverInterface * fakeSolver)
   if (probing_)
     probing_->refreshSolver(fakeSolver_);
 }
+#ifdef COIN_HAS_CLP
+#include "OsiClpSolverInterface.hpp"
+#endif
 // Generate cuts
 void
 CglFakeClique::generateCuts(const OsiSolverInterface& si, OsiCuts & cs,
@@ -851,14 +864,59 @@ CglFakeClique::generateCuts(const OsiSolverInterface& si, OsiCuts & cs,
   if (fakeSolver_) {
     assert (si.getNumCols()==fakeSolver_->getNumCols());
     fakeSolver_->setColLower(si.getColLower());
-    fakeSolver_->setColSolution(si.getColSolution());
+    const double * solution = si.getColSolution();
+    fakeSolver_->setColSolution(solution);
     fakeSolver_->setColUpper(si.getColUpper());
+    // get and set branch and bound cutoff
+    double cutoff;
+    si.getDblParam(OsiDualObjectiveLimit,cutoff);
+    fakeSolver_->setDblParam(OsiDualObjectiveLimit,COIN_DBL_MAX);
+#ifdef COIN_HAS_CLP
+    OsiClpSolverInterface * clpSolver
+      = dynamic_cast<OsiClpSolverInterface *> (fakeSolver_);
+    if (clpSolver) {
+      // fix up fake solver
+      const ClpSimplex * siSimplex = clpSolver->getModelPtr();
+      // need to set djs
+      memcpy(siSimplex->primalColumnSolution(),
+	     si.getReducedCost(),si.getNumCols()*sizeof(double));
+      fakeSolver_->setDblParam(OsiDualObjectiveLimit,cutoff);
+    }
+#endif
+    const CoinPackedMatrix * matrixByRow = si.getMatrixByRow();
+    const double * elementByRow = matrixByRow->getElements();
+    const int * column = matrixByRow->getIndices();
+    const CoinBigIndex * rowStart = matrixByRow->getVectorStarts();
+    const int * rowLength = matrixByRow->getVectorLengths();
+    const double * rowUpper = si.getRowUpper();
+    const double * rowLower = si.getRowLower();
+    
+    // Scan all rows looking for possibles
+    int numberRows = si.getNumRows();
+    double tolerance = 1.0e-3;
+    for (int iRow=0;iRow<numberRows;iRow++) {
+      CoinBigIndex start = rowStart[iRow];
+      CoinBigIndex end = start + rowLength[iRow];
+      double upRhs = rowUpper[iRow]; 
+      double loRhs = rowLower[iRow]; 
+      double sum = 0.0;
+      for (CoinBigIndex j=start;j<end;j++) {
+	int iColumn=column[j];
+	double value = elementByRow[j];
+	sum += solution[iColumn]*value;
+      }
+      if (sum<loRhs-tolerance||sum>upRhs+tolerance) {
+	// add as cut
+	OsiRowCut rc;
+	rc.setLb(loRhs);
+	rc.setUb(upRhs);
+	rc.setRow(end-start,column+start,elementByRow+start,false);
+	CoinAbsFltEq equal(1.0e-12);
+	cs.insertIfNotDuplicate(rc,equal);
+      }
+    }
     CglClique::generateCuts(*fakeSolver_,cs,info);
     if (probing_) {
-      // get and set branch and bound cutoff
-      double cutoff;
-      si.getDblParam(OsiDualObjectiveLimit,cutoff);
-      fakeSolver_->setDblParam(OsiDualObjectiveLimit,cutoff);
       probing_->generateCuts(*fakeSolver_,cs,info);
     }
   } else {
diff --git a/src/CglClique/CglClique.hpp b/src/CglClique/CglClique.hpp
index 7bab1df..288052d 100644
--- a/src/CglClique/CglClique.hpp
+++ b/src/CglClique/CglClique.hpp
@@ -1,4 +1,4 @@
-// $Id: CglClique.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglClique.hpp 1330 2016-01-26 19:35:16Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -86,6 +86,8 @@ public:
 
     void setMinViolation(double minviol) { petol = minviol; }
     double getMinViolation() const { return petol; }
+    /// Maximum number of binaries for looking at all
+    inline void setMaxNumber(int value) { maxNumber_ = value; }
 
 private:
 
@@ -157,6 +159,8 @@ protected:
 
     /** The primal tolerance in the solverinterface. */
     double petol;
+    /// Maximum number of binaries for looking at all
+    int maxNumber_; 
 
     /** data for the star clique algorithm */
 
diff --git a/src/CglClique/CglCliqueHelper.cpp b/src/CglClique/CglCliqueHelper.cpp
index 2b13a8c..f010c69 100644
--- a/src/CglClique/CglCliqueHelper.cpp
+++ b/src/CglClique/CglCliqueHelper.cpp
@@ -1,4 +1,4 @@
-// $Id: CglCliqueHelper.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglCliqueHelper.cpp 1330 2016-01-26 19:35:16Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -31,7 +31,7 @@ CglClique::selectFractionalBinaries(const OsiSolverInterface& si)
        if (si.isBinary(i))
 	 n++;
      }
-     if (n<5000)
+     if (n<maxNumber_)
        lclPetol=-1.0e-5;
    }
    const double* x = si.getColSolution();
@@ -90,7 +90,11 @@ void
 CglClique::selectRowCliques(const OsiSolverInterface& si,int numOriginalRows)
 {
    const int numrows = si.getNumRows();
+#ifndef INTEL_COMPILER
    std::vector<int> clique(numrows, 1);
+#else
+   std::vector<int> clique(numrows);
+#endif
 
    int i, j, k;
    
diff --git a/src/CglClique/Makefile.in b/src/CglClique/Makefile.in
index f7794b6..e4cfbf4 100644
--- a/src/CglClique/Makefile.in
+++ b/src/CglClique/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglCutGenerator.cpp b/src/CglCutGenerator.cpp
index f9b5181..07fbb25 100644
--- a/src/CglCutGenerator.cpp
+++ b/src/CglCutGenerator.cpp
@@ -1,4 +1,4 @@
-// $Id: CglCutGenerator.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglCutGenerator.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglDuplicateRow/CglDuplicateRow.cpp b/src/CglDuplicateRow/CglDuplicateRow.cpp
index ea31e7b..8634570 100644
--- a/src/CglDuplicateRow/CglDuplicateRow.cpp
+++ b/src/CglDuplicateRow/CglDuplicateRow.cpp
@@ -1,4 +1,4 @@
-// $Id: CglDuplicateRow.cpp 1200 2014-03-07 16:54:42Z forrest $
+// $Id: CglDuplicateRow.cpp 1287 2015-04-15 15:02:39Z forrest $
 // Copyright (C) 2004, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -38,7 +38,7 @@ void CglDuplicateRow::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
     return;
   }
   if ((mode_&3)!=0) {
-    generateCuts12(si,cs,info);
+    // bug generateCuts12(si,cs,info);
   } else if ((mode_&4)!=0) {
     generateCuts4(si,cs,info);
   } else {
@@ -202,7 +202,7 @@ void CglDuplicateRow::generateCuts12(const OsiSolverInterface & si, OsiCuts & cs
 	  for (int j=last;j<i;j++) {
 	    int jColumn = which[j];
 	    // skip if already fixed
-	    if (!colUpper2[jColumn])
+	    if (!colUpper2[jColumn]||columnLower[jColumn])
 	      continue;
 	    int nGeJ=0;
 	    int nEqualJ=0;
@@ -223,7 +223,7 @@ void CglDuplicateRow::generateCuts12(const OsiSolverInterface & si, OsiCuts & cs
 	    for (int k=j+1;k<i;k++) {
 	      int kColumn = which[k];
 	      // skip if already fixed
-	      if (!colUpper2[kColumn])
+	      if (!colUpper2[kColumn]||columnLower[kColumn])
 		continue;
 	      int nK=columnLength[kColumn];
 	      double objValueK = objective[kColumn]*direction;
@@ -804,7 +804,7 @@ void CglDuplicateRow::generateCuts12(const OsiSolverInterface & si, OsiCuts & cs
 	    } else {
 	      // found
 #ifndef COIN_DEVELOP
-              if (logLevel_>1)
+	      if (logLevel_>1)
 #endif 
 		printf("***Make %d %d %d >=2 and take out rows %d %d %d\n",
 		       columnB1,column0,column1,
@@ -3040,11 +3040,15 @@ void CglDuplicateRow::generateCuts8(const OsiSolverInterface & si, OsiCuts & cs,
       }
     }
   }
+  delete[] whichP;
   int * dups = new int [2*numberCliques];
   int * fixed = new int[CoinMax(numberIntegers,numberCliques)];
   memset(fixed,0,numberIntegers*sizeof(int));
   outDupsEtc(numberIntegers, numberCliques, dups,
 	     cliqueStart, cliqueType, entry, fixed, printit ? 2 : 1);
+  delete[] cliqueStart;
+  delete[] entry;
+  delete[] cliqueType;
   int nFixed=0;
   CoinPackedVector ubs;
   for (int i=0;i<numberColumns;i++) {
diff --git a/src/CglDuplicateRow/CglDuplicateRow.hpp b/src/CglDuplicateRow/CglDuplicateRow.hpp
index 5460963..b40f969 100644
--- a/src/CglDuplicateRow/CglDuplicateRow.hpp
+++ b/src/CglDuplicateRow/CglDuplicateRow.hpp
@@ -1,4 +1,4 @@
-// $Id: CglDuplicateRow.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglDuplicateRow.hpp 1119 2013-04-06 20:24:18Z stefan $
 // Copyright (C) 2004, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglDuplicateRow/Makefile.in b/src/CglDuplicateRow/Makefile.in
index 21f8641..5132b87 100644
--- a/src/CglDuplicateRow/Makefile.in
+++ b/src/CglDuplicateRow/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglFlowCover/CglFlowCover.cpp b/src/CglFlowCover/CglFlowCover.cpp
index b473013..1078d60 100644
--- a/src/CglFlowCover/CglFlowCover.cpp
+++ b/src/CglFlowCover/CglFlowCover.cpp
@@ -1,4 +1,4 @@
-// $Id: CglFlowCover.cpp 1207 2014-07-13 09:21:59Z forrest $
+// $Id: CglFlowCover.cpp 1346 2016-02-09 16:14:47Z forrest $
 //-----------------------------------------------------------------------------
 // name:     Cgl Lifted Simple Generalized Flow Cover Cut Generator
 // author:   Yan Xu                email: yan.xu at sas.com
@@ -25,7 +25,6 @@
 // added #define to get rid of warnings (so uncomment if =true)
 //#define CGLFLOW_DEBUG2
 static bool CGLFLOW_DEBUG=false;
-static bool doLift=true;
 #include <iomanip>
 //-------------------------------------------------------------------
 // Overloaded operator<< for printing VUB and VLB.
@@ -36,6 +35,9 @@ std::ostream& operator<<( std::ostream& os, const CglFlowVUB &v )
   return os; 
 }
 
+// Initialize static memeber
+int CglFlowCover::numFlowCuts_ = 0;
+
 //-------------------------------------------------------------------
 // Determine row types. Find the VUBS and VLBS. 
 //-------------------------------------------------------------------  
@@ -226,9 +228,11 @@ CglFlowCover::flowPreprocess(const OsiSolverInterface& si)
 void CglFlowCover::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
 				const CglTreeInfo info)
 {
+  static int count=0;
   if (getMaxNumCuts() <= 0) return;
     
   if (getNumFlowCuts() >= getMaxNumCuts()) return;
+  ++count;
 
 #if 0
   bool preInit = false;
@@ -346,7 +350,6 @@ CglFlowCover::CglFlowCover()
   :
   CglCutGenerator(),
   maxNumCuts_(2000),
-  numFlowCuts_(0),
   EPSILON_(1.0e-6),
   UNDEFINED_(-1),
   INFTY_(1.0e30),
@@ -370,7 +373,6 @@ CglFlowCover::CglFlowCover (const CglFlowCover & source)
   :
   CglCutGenerator(source), 
   maxNumCuts_(source.maxNumCuts_),
-  numFlowCuts_(source.numFlowCuts_),
   EPSILON_(source.EPSILON_),
   UNDEFINED_(source.UNDEFINED_),
   INFTY_(source.INFTY_),
@@ -380,6 +382,7 @@ CglFlowCover::CglFlowCover (const CglFlowCover & source)
   numCols_(source.numCols_),
   doneInitPre_(source.doneInitPre_)
 { 
+  setNumFlowCuts(source.numFlowCuts_);
   if (numCols_ > 0) {
     vubs_ = new CglFlowVUB [numCols_];
     vlbs_ = new CglFlowVLB [numCols_];
@@ -418,13 +421,14 @@ CglFlowCover::operator=(const CglFlowCover& rhs)
   if (this != &rhs) {
     CglCutGenerator::operator=(rhs);
     maxNumCuts_ = rhs.maxNumCuts_;
-    numFlowCuts_ = rhs.numFlowCuts_;
     EPSILON_ = rhs.EPSILON_;
     UNDEFINED_ = rhs.UNDEFINED_;
     INFTY_ = rhs.INFTY_;
     TOLERANCE_ = rhs.TOLERANCE_;
     numRows_ = rhs.numRows_;
     numCols_ = rhs.numCols_;
+    //    numFlowCuts_ = rhs.numFlowCuts_;
+    setNumFlowCuts(rhs.numFlowCuts_);
     doneInitPre_ = rhs.doneInitPre_;
     if (numCols_ > 0) {
       vubs_ = new CglFlowVUB [numCols_];
@@ -481,16 +485,28 @@ CglFlowCover::generateOneFlowCut( const OsiSolverInterface & si,
     
   CglFlowVLB VLB;
   CglFlowVUB VUB;
+  static int count=0;
+  ++count;
   CGLFLOW_DEBUG=false;
-  doLift=true;
+  bool doLift=true;
   // Get integer types
   const char * columnType = si.getColType ();
   for (i = 0; i < rowLen; ++i) {
     if ( xlp[ind[i]] - floor(xlp[ind[i]]) > EPSILON_ && ceil(xlp[ind[i]]) - xlp[ind[i]] > EPSILON_ )
       break;
   }
+  if (i != rowLen) {
+    for (int j = 0; j < rowLen; ++j) {
+      if ( fabs(coef[j])<=EPSILON_) {
+	doLift = false;
+	break;
+      }
+    }
+  } else {
+    doLift = false;
+  }
 
-  if (i == rowLen)  {
+  if (!doLift)  {
     delete [] sign;
     delete [] up; 
     delete [] x;   
@@ -549,7 +565,7 @@ CglFlowCover::generateOneFlowCut( const OsiSolverInterface & si,
 
     if ( columnType[ind[i]]==1 ) {   // Binary variable
       value = coef[i];
-      if (value > EPSILON_)
+      if (value > 0.0)
 	sign[i] = CGLFLOW_COL_BINPOS;
       else {
 	sign[i] = CGLFLOW_COL_BINNEG;
@@ -561,7 +577,7 @@ CglFlowCover::generateOneFlowCut( const OsiSolverInterface & si,
     }
     else {   
       value = coef[i];
-      if (value > EPSILON_)
+      if (value > 0.0)
 	sign[i] = CGLFLOW_COL_CONTPOS;
       else {
 	sign[i] = CGLFLOW_COL_CONTNEG;
@@ -1175,7 +1191,8 @@ CglFlowCover::generateOneFlowCut( const OsiSolverInterface & si,
 #endif
     cutLen = j;
     // Skip if no elements ? - bug somewhere
-    assert (cutLen);
+    if (cutLen == 0)
+        return false;
         
     // Recheck the violation.
     violation = 0.0;
@@ -1258,7 +1275,7 @@ CglFlowCover::determineOneRowType(const OsiSolverInterface& si,
     return CGLFLOW_ROW_UNDEFINED;
   if (sense == 'R')
     return CGLFLOW_ROW_UNINTERSTED; // Could be fixed
-
+    
   CglFlowRowType rowType = CGLFLOW_ROW_UNDEFINED;
   // Get integer types
   const char * columnType = si.getColType ();
diff --git a/src/CglFlowCover/CglFlowCover.hpp b/src/CglFlowCover/CglFlowCover.hpp
index f85c1d4..eea070f 100644
--- a/src/CglFlowCover/CglFlowCover.hpp
+++ b/src/CglFlowCover/CglFlowCover.hpp
@@ -1,4 +1,4 @@
-// $Id: CglFlowCover.hpp 1194 2014-02-14 10:53:22Z forrest $
+// $Id: CglFlowCover.hpp 1119 2013-04-06 20:24:18Z stefan $
 //-----------------------------------------------------------------------------
 // name:     Cgl Lifted Simple Generalized Flow Cover Cut Generator
 // author:   Yan Xu                email: yan.xu at sas.com
@@ -182,9 +182,9 @@ public:
     /**@name Functions to query and set the number of cuts have been
        generated. */
     //@{
-    inline int getNumFlowCuts() { return numFlowCuts_; }
-    inline void setNumFlowCuts(int fc) { numFlowCuts_ = fc; }
-    inline void incNumFlowCuts(int fc = 1) { numFlowCuts_ += fc; } 
+    static int getNumFlowCuts() { return numFlowCuts_; }
+    static void setNumFlowCuts(int fc) { numFlowCuts_ = fc; }
+    static void incNumFlowCuts(int fc = 1) { numFlowCuts_ += fc; } 
     //@}
 
     //-------------------------------------------------------------------------
@@ -331,10 +331,8 @@ private:
     //------------------------------------------------------------------------
     // Private member data
     
-    /** The maximum number of flow cuts to be generated. Default is 2000. */
+    /** The maximum number of flow cuts to be generated. Default is 1000. */
     int maxNumCuts_;
-    /** The number flow cuts found.*/
-    int numFlowCuts_;
     /** Tolerance used for numerical purpose. */
     double EPSILON_;
     /** The variable upper bound of a flow is not indentified yet.*/
@@ -349,6 +347,8 @@ private:
     int numRows_;
     /** The number columns of the problem.*/
     int numCols_;
+    /** The number flow cuts found.*/
+    static int numFlowCuts_;
     /** Indicate whether initial flow preprecessing has been done. */
     bool doneInitPre_;
     /** The array of CglFlowVUBs. */
diff --git a/src/CglFlowCover/Makefile.in b/src/CglFlowCover/Makefile.in
index 9649b0f..bddbd7c 100644
--- a/src/CglFlowCover/Makefile.in
+++ b/src/CglFlowCover/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglGMI/CglGMI.cpp b/src/CglGMI/CglGMI.cpp
index cbaf316..3a5f374 100644
--- a/src/CglGMI/CglGMI.cpp
+++ b/src/CglGMI/CglGMI.cpp
@@ -26,6 +26,7 @@
 #include "CoinFactorization.hpp"
 #include "CglGMI.hpp"
 #include "CoinFinite.hpp"
+#include "CoinRational.hpp"
 
 //-------------------------------------------------------------------
 // Generate GMI cuts
@@ -889,9 +890,10 @@ bool CglGMI::scaleCutIntegral(double* cutElem, int* cutIndex, int cutNz,
   long maxdnom = 1000; 
   long numerator = 0, denominator = 0;
   // Initialize gcd and lcm
-  if (nearestRational(cutRhs, maxdelta, maxdnom, numerator, denominator)) {
-    gcd = labs(numerator);
-    lcm = denominator;
+  CoinRational r = CoinRational(cutRhs, maxdelta, maxdnom);
+  if (r.getNumerator() != 0){
+     gcd = labs(r.getNumerator());
+     lcm = r.getDenominator();
   }
   else{
 #if defined GMI_TRACE_CLEAN
@@ -903,9 +905,10 @@ bool CglGMI::scaleCutIntegral(double* cutElem, int* cutIndex, int cutNz,
     if (solver->isContinuous(cutIndex[i]) && !param.getINTEGRAL_SCALE_CONT()) {
       continue;
     }
-    if(nearestRational(cutElem[i], maxdelta, maxdnom, numerator, denominator)) {
-      gcd = computeGcd(gcd,labs(numerator));
-      lcm *= denominator/(computeGcd(lcm,denominator));
+    CoinRational r = CoinRational(cutElem[i], maxdelta, maxdnom);
+    if (r.getNumerator() != 0){
+       gcd = computeGcd(gcd, r.getNumerator());
+       lcm *= r.getDenominator()/(computeGcd(lcm,r.getDenominator()));
     }
     else{
 #if defined GMI_TRACE_CLEAN
@@ -930,137 +933,6 @@ bool CglGMI::scaleCutIntegral(double* cutElem, int* cutIndex, int cutNz,
 } /* scaleCutIntegral */
 
 /************************************************************************/
-/* arguments:
- * val = double precision value that must be converted
- * maxdelta = max allowed difference between val and the rational computed
- * maxdnom = max allowed denominator
- * numerator = the numerator will be stored here if successful
- * denominator = the denominator will be stored here if successful
- * returns true if successful, false if not.
- *
- * This function is based on SCIPrealToRational() from SCIP, scip at zib.de.
- * The copyright of SCIP and of this function belongs to ZIB.
- * We explicitly obtained the rights to license this function under GPL 
- * from ZIB. More information can be obtained from the authors.
- *
- * Copyright (C) 2012 Konrad-Zuse-Zentrum                           
- *                    fuer Informationstechnik Berlin
- */
-bool CglGMI::nearestRational(double val, double maxdelta, long maxdnom,
-			      long& numerator, long& denominator)
-{
-
-  /// Denominators that should be tried for the integral scaling phase.
-  /// These values are taken from SCIP.
-  static const double simplednoms[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 
-				       8.0, 9.0, 11.0, 12.0, 13.0, 14.0, 
-				       15.0, 16.0, 17.0, 18.0, 19.0, 25.0, 
-				       -1.0};
-
-  double a, b;
-  double g0, g1, gx;
-  double h0, h1, hx;
-  double delta0, delta1;
-  double epsilon;
-  int i;
-
-  /* try the simple denominators first: each value of the simplednoms table 
-   * multiplied by powers of 10 is tried as denominator
-   */
-  for (i = 0; simplednoms[i] > 0.0; ++i) {
-    double num, dnom;
-    double ratval0, ratval1;
-    double diff;
-    
-    /* try powers of 10 (including 10^0) */
-    dnom = simplednoms[i];
-    while (dnom <= maxdnom) {
-      num = floor(val * dnom);
-      ratval0 = num/dnom;
-      ratval1 = (num+1.0)/dnom;
-      diff = fabs(val - ratval0);
-      if (diff < maxdelta) {
-	numerator = (long)num;
-	denominator = (long)dnom;
-	return true;
-      }
-      diff = fabs(val - ratval1);
-      if (diff < maxdelta) {
-	numerator = (long)(num+1.0);
-	denominator = (long)dnom;
-	return true;
-      }
-      dnom *= 10.0;
-    }
-  }
-
-  /* the simple denominators didn't work: calculate rational
-   * representation with arbitrary denominator */
-  epsilon = maxdelta/2.0;
-
-  b = val;
-  a = floor(b + epsilon);
-  g0 = a;
-  h0 = 1.0;
-  g1 = 1.0;
-  h1 = 0.0;
-  delta0 = val - g0/h0;
-  delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
-  
-  while ((fabs(delta0) > maxdelta) && (fabs(delta1) > maxdelta)) {
-    if ((b-a) < epsilon || h0 < 0 || h1 < 0)
-      return false;
-
-    b = 1.0 / (b - a);
-    a = floor(b + epsilon);
-    
-    if (a < 0.0)
-      return false;
-    gx = g0;
-    hx = h0;
-    
-    g0 = a * g0 + g1;
-    h0 = a * h0 + h1;
-    
-    g1 = gx;
-    h1 = hx;
-    
-    if (h0 > maxdnom)
-      return false;
-    
-    delta0 = val - g0/h0;
-    delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
-  }
-
-  if (fabs(g0) > (LONG_MAX >> 4) || h0 > (LONG_MAX >> 4))
-    return false;
-
-  if (h0 > 0.5)
-    return false;
-
-  if (delta0 < -maxdelta) {
-    if (fabs(delta1) > maxdelta)
-      return false;
-    numerator = (long)(g0 - 1.0);
-    denominator = (long)h0;
-  }
-  else if (delta0 > maxdelta) {
-    if (fabs(delta1) > maxdelta)
-      return false;
-    numerator = (long)(g0 + 1.0);
-    denominator = (long)h0;
-  }
-  else{
-    numerator = (long)g0;
-    denominator = (long)h0;
-  }
-  if ((denominator < 1) || 
-      (fabs(val - (double)(numerator)/(double)(denominator)) > maxdelta))
-    return false;
-  return true;
-} /* nearestRational */
-
-/************************************************************************/
 long CglGMI::computeGcd(long a, long b) {
   // This is the standard Euclidean algorithm for gcd
   long remainder = 1;
diff --git a/src/CglGMI/Makefile.in b/src/CglGMI/Makefile.in
index c0255bf..981b0ec 100644
--- a/src/CglGMI/Makefile.in
+++ b/src/CglGMI/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglGomory/CglGomory.cpp b/src/CglGomory/CglGomory.cpp
index 7f06e60..a6e9bde 100644
--- a/src/CglGomory/CglGomory.cpp
+++ b/src/CglGomory/CglGomory.cpp
@@ -9,9 +9,9 @@
 #include <cassert>
 #include <iostream>
 //#define CGL_DEBUG 1
-//#ifdef NDEBUG
+#ifdef NDEBUG
 //#undef NDEBUG
-//#endif
+#endif
 #include "CoinPragma.hpp"
 #include "CoinHelperFunctions.hpp"
 #include "CoinPackedVector.hpp"
@@ -72,10 +72,10 @@ void CglGomory::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
 	  intVar[i] = 2; // other
 	} else {
 	  // negative bounds - I am not sure works
-	  intVar[i] = 0;
+	  intVar[i] = 3;
 	}
       } else {
-	intVar[i] = 0;
+	intVar[i] = 4;
       }
     } else {
       intVar[i]=0;
@@ -345,7 +345,7 @@ void CglGomory::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
 inline double above_integer(double value) {
   double value2=floor(value);
   double value3=floor(value+0.5);
-  if (fabs(value3-value)<1.0e-7*(fabs(value3)+1.0))
+  if (fabs(value3-value)<1.0e-9*(fabs(value3)+1.0))
     return 0.0;
   return value-value2;
 }
@@ -555,10 +555,14 @@ CglGomory::generateCuts(
 #else
   double relaxation = factorization.conditionNumber();
 #endif
+  // if very small be a bit more careful
+  if (relaxation<1.0e-10)
+    relaxation=1.0/sqrt(relaxation);
 #ifdef COIN_DEVELOP_z
   if (relaxation>1.0e49)
     printf("condition %g\n",relaxation);
 #endif
+  //printf("condition %g %g\n",relaxation,conditionNumberMultiplier_);
   relaxation *= conditionNumberMultiplier_;
   double bounds[2]={-COIN_DBL_MAX,0.0};
   int iColumn,iRow;
@@ -829,14 +833,14 @@ CglGomory::generateCuts(
 	}
 	assert (nn==1);
 	array.clear();
-	work.checkClear();
+	//work.checkClear();
       }
 #endif
       array.clear();
       assert(intVar[iColumn]&&reducedValue<1.0-away&&reducedValue>away);
       {
 #ifdef CGL_DEBUG
-	cutVector.checkClear();
+	//cutVector.checkClear();
 #endif
 	// get row of tableau
 	double one =1.0;
@@ -879,6 +883,8 @@ CglGomory::generateCuts(
 	// adjustment to rhs
 	double rhs=0.0;
 	int number=0;
+	// number of terms (so includes modifications and cancellations)
+	int numberCoefficients=0;
 #ifdef CGL_DEBUG_GOMORY
 	    if (!gomory_try)
 	      printf("start for basic column %d\n",iColumn);
@@ -951,6 +957,7 @@ CglGomory::generateCuts(
 	      }
 	      if (fabs(coefficient)>= COIN_INDEXED_TINY_ELEMENT) {
 		cutElement[j] = coefficient;
+		numberCoefficients++;
 		cutIndex[number++]=j;
 		// If too many - break from loop
 		if (number>limit) 
@@ -1015,7 +1022,11 @@ CglGomory::generateCuts(
 		 k<rowStart[iRow]+rowLength[iRow];k++) {
 	      int jColumn=column[k];
 	      double value=rowElements[k];
+	      double oldValue=cutElement[jColumn];
 	      cutVector.quickAdd(jColumn,-coefficient*value);
+	      numberCoefficients++;
+	      if (!intVar[jColumn]&&!oldValue) 
+		numberNonInteger++;
 	    }
 	  }
 	}
@@ -1025,18 +1036,30 @@ CglGomory::generateCuts(
 	double sum=0.0;
 	rhs = - rhs;
 	int n = cutVector.getNumElements();
+	// If too many - just clear vector and skip
+	if (n>limit) {
+	  cutVector.clear();
+	  continue;
+	}
 #if MORE_GOMORY_CUTS==1||MORE_GOMORY_CUTS==3
 	double violation2=violation;
 #endif
 	number=0;
+	numberNonInteger=0;
+	double sumCoefficients=0.0;
 	for (j=0;j<n;j++) {
 	  int jColumn =cutIndex[j];
 	  double value=-cutElement[jColumn];
+	  sumCoefficients += fabs(value);
+	  if (fabs(colsol[jColumn])>10.0)
+	    sumCoefficients += 2.0*fabs(value);
 	  cutElement[jColumn]=0.0;
 	  if (fabs(value)>1.0e-8) {
 	    sum+=value*colsol[jColumn];
 	    packed[number]=value;
 	    cutIndex[number++]=jColumn;
+	    if (!intVar[jColumn])
+	      numberNonInteger++;
           } else {
 #define LARGE_BOUND 1.0e20
             // small - adjust rhs if rhs reasonable
@@ -1057,6 +1080,8 @@ CglGomory::generateCuts(
               sum+=value*colsol[jColumn];
               packed[number]=value;
               cutIndex[number++]=jColumn;
+	      if (!intVar[jColumn])
+		numberNonInteger++;
             } 
           }
 	}
@@ -1100,6 +1125,7 @@ CglGomory::generateCuts(
 	  }
 #endif
 #endif
+	  bool cleanedCut=numberNonInteger>0;
 	  if (!numberNonInteger&&number) {
 #ifdef CGL_DEBUG
 	    assert (sizeof(Rational)==sizeof(double));
@@ -1135,6 +1161,7 @@ CglGomory::generateCuts(
 	    }
 	    if (lcm>0&&numberNonSmall) {
 	      double multiplier = lcm;
+	      cleanedCut=true;
 	      int nOverflow = 0; 
 	      for (j=0; j<number+1;j++) {
 		double value = fabs(packed[j]);
@@ -1219,11 +1246,33 @@ CglGomory::generateCuts(
 	    CoinFillN(cutElement,number+1,0.0);
 	  } else {
 	    // relax rhs a tiny bit
+	    //#define CGL_GOMORY_OLD_RELAX
+#ifndef CGL_GOMORY_OLD_RELAX
+#if 0
+	    double rhs2=rhs;
+	    rhs2 += 1.0e-8;
+	    // relax if lots of elements for mixed gomory
+	    if (number>=20) {
+	      rhs2  += 1.0e-7*(static_cast<double> (number/20));
+	    }
+#endif
+	    rhs += 1.0e-7;
+	    if (numberCoefficients>=10||true) {
+	      rhs  += 1.0e-7*sumCoefficients+1.0e-8*numberCoefficients;
+	    }
+#if 0
+	    if (numberCoefficients>number*3)
+	    printf("old rhs %.18g new %.18g - n,nNon,nC,sumC %d,%d,%d %g\n",
+		   rhs2,rhs,number,numberNonInteger,numberCoefficients,
+		   sumCoefficients);
+#endif
+#else
 	    rhs += 1.0e-8;
 	    // relax if lots of elements for mixed gomory
 	    if (number>=20) {
 	      rhs  += 1.0e-7*(static_cast<double> (number/20));
 	    }
+#endif
 	  }
 	  // Take off tiny elements
 	  // for first pass reject
@@ -1240,6 +1289,8 @@ CglGomory::generateCuts(
 	      if (value<CGL_GOMORY_TINY_ELEMENT) {
 		int iColumn = cutIndex[i];
 		if (colUpper[iColumn]-colLower[iColumn]<LARGE_BOUND) {
+		  if (intVar[iColumn])
+		    numberNonInteger--;
 		  // weaken cut
 		  if (packed[i]>0.0) 
 		    rhs -= value*colLower[iColumn];
@@ -1254,6 +1305,7 @@ CglGomory::generateCuts(
 	      } else {
 		int iColumn = cutIndex[i];
 		if (colUpper[iColumn]!=colLower[iColumn]||globalCuts) {
+		  value=fabs(value);
 		  largest=CoinMax(largest,value);
 		  smallest=CoinMin(smallest,value);
 		  cutIndex[number]=cutIndex[i];
@@ -1261,10 +1313,13 @@ CglGomory::generateCuts(
 		} else {
 		  // fixed so subtract out
 		  rhs -= packed[i]*colLower[iColumn];
+		  if (intVar[iColumn])
+		    numberNonInteger--;
 		}
 	      }
 	    }
-	    if (largest>1.0e10*smallest||(number>20&&smallest<number*1.0e-6)) {
+	    if (largest>1.0e10*smallest||(number>20&&smallest<number*1.0e-6)||
+		numberNonInteger<-10) {
 	      number=limit+1; //reject
 	      numberNonInteger=1;
 	    } else if (largest>1.0e9*smallest) {
@@ -1275,12 +1330,85 @@ CglGomory::generateCuts(
 #if MORE_GOMORY_CUTS==1||MORE_GOMORY_CUTS==3
 	      accurate=false;
 #endif
+	    } else {
+#define TRY7 2
+#define PRINT_NUMBER 0
+#if PRINT_NUMBER
+	      if (number==PRINT_NUMBER) {
+		printf("==========\n<= %.18g ",rhs);
+		for (int i=0;i<PRINT_NUMBER;i++)
+		  printf("%.18g ",packed[i]);
+		printf("\n");
+	      }
+#endif
+	      if (number>limit)  
+		continue;
+#if TRY7==1
+	      // Just scale
+	      double multiplier = 1.0/sqrt(largest*smallest);
+	      for (int i=0;i<number;i++)
+		packed[i] *= multiplier;
+	      rhs *= multiplier;
+	      if (number==PRINT_NUMBER) {
+		printf("multiplier %g %g %g\n",
+		       multiplier,smallest,largest);
+	      }
+#elif TRY7==2
+	      // Look at ratio
+	      double scaleFactor=fabs(rhs);
+	      for (int i=0;i<number;i++) {
+		double value=packed[i];
+		double ratio = fabs(rhs/value);
+		double nearest=floor(ratio+0.5);
+		if (fabs(ratio-nearest)<1.0e-6 && nearest >= 1.0) {
+		  int iColumn=cutIndex[i];
+		  if (intVar[iColumn]) {
+		    if (colLower[iColumn]>=0.0) {
+		      if (value>0.0) {
+			// better if smaller
+			if (ratio>nearest) {
+			  packed[i]=scaleFactor/nearest;
+			}			  
+		      } else {
+			// better if larger
+			if (ratio<nearest) {
+			  packed[i]=-scaleFactor/nearest;
+			}			  
+		      }
+		      //if (value!=packed[i])
+		      //printf("column %d rhs %.18g element %g ratio %.18g - new element %.18g\n",
+		      //       iColumn,rhs,value,ratio,packed[i]);
+		      //assert (fabs(value-packed[i])<1.0e-4);
+		    } else {
+		      //printf("column %d rhs %g element %g ratio %.18g - bounds %g,%g\n",
+			   //  iColumn,rhs,value,ratio,colLower[iColumn],colUpper[iColumn]);
+		    }
+		  }
+		}
+	      }
+#endif
+#if PRINT_NUMBER
+	      if (number==PRINT_NUMBER) {
+		printf("after %.18g ",rhs);
+		for (int i=0;i<PRINT_NUMBER;i++)
+		  printf("%.18g ",packed[i]);
+		printf("\n");
+	      }
+#endif
 	    }
 	  }
 	  if (number<limit||!numberNonInteger) {
 	    bounds[1]=rhs;
 	    if (number>50&&numberNonInteger)
 	      bounds[1] = rhs+tolerance6+1.0e-8*fabs(rhs); // weaken
+#if GOMORY_RELAX_NUMBER
+	    else if (number>GOMORY_RELAX_NUMBER&&numberNonInteger>1)
+	      bounds[1] = rhs+tolerance6+1.0e-8*fabs(rhs); // weaken
+#endif
+	    // if close to integer - round up
+	    double nearest=floor(bounds[1]+0.5);
+	    if (bounds[1]<nearest&&bounds[1]>nearest-1.0e-4)
+	      bounds[1]=nearest;
 	    double test = CoinMin(largestFactor*largestFactorMultiplier_,
 				  relaxation);
 	    if (number>5&&numberNonInteger&&test>1.0e-20) {
@@ -1297,10 +1425,58 @@ CglGomory::generateCuts(
 #else
 	    {
 #endif
+	      // tidy
+	      if (!cleanedCut) {
+		double range=0.0;
+		for (int k=0;k<number;k++) {
+		  int iColumn=cutIndex[k];
+		  double thisRange=CoinMin(colUpper[iColumn]-colLower[iColumn],1000.0);
+		  range += thisRange;
+		}
+		// see if close to integer
+		bool close=fabs(bounds[1]-floor(bounds[1]+0.5))*range<1.0e-6;
+		if (close) {
+		  for (int k=0;k<number;k++) {
+		    if(fabs(packed[k]-floor(packed[k]+0.5))*range>1.0e-6) {
+		      close=false;
+		      break;
+		    }
+		  }
+		  if (close) {
+#ifdef PRINT_MORE
+		    bool printIt=false;
+		    for (int k=0;k<number;k++) {
+		      if(fabs(packed[k]-floor(packed[k]+0.5))>1.0e-12) {
+		        printIt=true;
+		        break;
+		      }
+		    }
+		    if (printIt) {
+		      printf("yy %.18g >= ",bounds[1]);
+  		      for (int k=0;k<number;k++) {
+		        printf("(%d,%.18g) ",cutIndex[k],packed[k]);
+		      }
+		      printf("\n");
+		    }
+#endif
+		    bounds[1]=floor(bounds[1]+0.5);
+		    for (int k=0;k<number;k++) {
+		      packed[k]=floor(packed[k]+0.5);
+		    }
+		  }
+		}
+	      }
 	      OsiRowCut rc;
 	      rc.setRow(number,cutIndex,packed,false);
 	      rc.setLb(bounds[0]);
-	      rc.setUb(bounds[1]);   
+	      rc.setUb(bounds[1]);
+#ifdef CGL_DEBUG
+	      if (debugger) {
+		assert(!debugger->invalidCut(rc));
+		if(debugger->invalidCut(rc))
+		  abort();
+	      }
+#endif
 #if MORE_GOMORY_CUTS<2
 	      nTotalEls -= number;
 	      cs.insert(rc);
diff --git a/src/CglGomory/CglGomoryTest.cpp b/src/CglGomory/CglGomoryTest.cpp
index 5cf11b9..c47db05 100644
--- a/src/CglGomory/CglGomoryTest.cpp
+++ b/src/CglGomory/CglGomoryTest.cpp
@@ -1488,7 +1488,7 @@ CglGomoryUnitTest(
     double lpRelaxAfter=siP->getObjValue(); 
     std::cout<<"LP value with cuts: "<<lpRelaxAfter<<std::endl;
     //assert( eq(lpRelaxAfter, 2592.1908295194507) );
-    assert( lpRelaxAfter> 2550.0 );
+    assert( lpRelaxAfter> 2545.0 );
     assert( lpRelaxBefore < lpRelaxAfter );
     assert(lpRelaxAfter < 3089.1);
     
diff --git a/src/CglGomory/Makefile.in b/src/CglGomory/Makefile.in
index 6126cdc..cdb2919 100644
--- a/src/CglGomory/Makefile.in
+++ b/src/CglGomory/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglKnapsackCover/CglKnapsackCover.cpp b/src/CglKnapsackCover/CglKnapsackCover.cpp
index e78e462..c11db75 100644
--- a/src/CglKnapsackCover/CglKnapsackCover.cpp
+++ b/src/CglKnapsackCover/CglKnapsackCover.cpp
@@ -1,4 +1,4 @@
-// $Id: CglKnapsackCover.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglKnapsackCover.cpp 1357 2016-02-22 14:43:10Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -111,6 +111,14 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
       vlbRow[k]=-10; // fixed
     }
   }
+  // tolerance for tight rows
+  double tightTolerance = 1.0e-5;
+  if (!info.inTree) {
+    if (!info.pass)
+      tightTolerance = 1.0e4;
+    else
+      tightTolerance = 1.0e-1;
+  }
 
   int rowIndex;
   int numberVub=0;
@@ -199,12 +207,12 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
     effectiveUpper[rowIndex] = upRhs;
     effectiveLower[rowIndex] = loRhs;
     bool possible = false;
-    if (fabs(sum-upRhs)<1.0e-5) {
+    if (fabs(sum-upRhs)<tightTolerance) {
       possible=true;
     } else {
       effectiveUpper[rowIndex]=COIN_DBL_MAX;
     }
-    if (fabs(sum-loRhs)<1.0e-5) {
+    if (fabs(sum-loRhs)<tightTolerance) {
       possible=true;
     } else {
       effectiveLower[rowIndex]=-COIN_DBL_MAX;
@@ -271,7 +279,7 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
      rowIndex = toCheck[ii];
      if (rowIndex < 0 || rowIndex >= nRows)
 	continue;
-     if (vub[rowIndex]==-2)
+     if (vub[rowIndex]==-2) 
        continue;
      whichRow_=ii;
 
@@ -348,48 +356,62 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
           double thisCoefficient=thisElement[i];
           int replace = 0;
           if (vubRow[iColumn]>=0) {
-            iRow = vubRow[iColumn];
-            if (vub[iRow]==iColumn&&iRow!=rowIndex) {
-              vubCoefficient = vubValue[iRow];
+            int jRow = vubRow[iColumn];
+            if (vub[jRow]==iColumn&&jRow!=rowIndex) {
+              double vbCoefficient = vubValue[jRow];
               // break it out - may be able to do better
               if (dSign*thisCoefficient>0.0) {
                 // we want valid lower bound on continuous
-                if (effectiveLower[iRow]>-1.0e20&&vubCoefficient>0.0) 
+                if (effectiveLower[jRow]>-1.0e20&&vbCoefficient>0.0) {
                   replace=-1;
-                else if (effectiveUpper[iRow]<1.0e20&&vubCoefficient<0.0) 
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+                } else if (effectiveUpper[jRow]<1.0e20&&vbCoefficient<0.0) {
                   replace=1;
-                // q assert (replace!=-1);
-                // q assert (replace!=1);
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+		}
               } else {
                 // we want valid upper bound on continuous
-                if (effectiveLower[iRow]>-1.0e20&&vubCoefficient<0.0) 
+                if (effectiveLower[jRow]>-1.0e20&&vbCoefficient<0.0) {
                   replace=-1;
-                else if (effectiveUpper[iRow]<1.0e20&&vubCoefficient>0.0) 
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+                } else if (effectiveUpper[jRow]<1.0e20&&vbCoefficient>0.0) { 
                   replace=1;
-                //assert (replace!=-1);
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+		}
               }
             }
           }
           if (vlbRow[iColumn]>=0) {
-            iRow = vlbRow[iColumn];
-            if (vub[iRow]==iColumn&&iRow!=rowIndex) {
-              vubCoefficient = vlbValue[iRow];
+            int jRow = vlbRow[iColumn];
+            if (vub[jRow]==iColumn&&jRow!=rowIndex) {
+              double vbCoefficient = vlbValue[jRow];
               // break it out - may be able to do better
               if (dSign*thisCoefficient>0.0) {
                 // we want valid lower bound on continuous
-                if (effectiveLower[iRow]>-1.0e20&&vubCoefficient>0.0) 
+                if (effectiveLower[jRow]>-1.0e20&&vbCoefficient>0.0) {
                   replace=-1;
-                else if (effectiveUpper[iRow]<1.0e20&&vubCoefficient<0.0) 
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+                } else if (effectiveUpper[jRow]<1.0e20&&vbCoefficient<0.0) { 
                   replace=1;
-                //assert (replace!=1);
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+		}
               } else {
                 // we want valid upper bound on continuous
-                if (effectiveLower[iRow]>-1.0e20&&vubCoefficient<0.0) 
+                if (effectiveLower[jRow]>-1.0e20&&vbCoefficient<0.0) {
                   replace=-1;
-                else if (effectiveUpper[iRow]<1.0e20&&vubCoefficient>0.0) 
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+                } else if (effectiveUpper[jRow]<1.0e20&&vbCoefficient>0.0) {
                   replace=1;
-                //q assert (replace!=-1);
-                //assert (replace!=1);
+		  iRow=jRow;
+		  vubCoefficient = vbCoefficient;
+		}
               }
             }
           }
@@ -447,6 +469,10 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
 	  continue; // no good
 	}
       }
+#ifdef CGL_DEBUG
+      for (int i=0;i<nCols;i++)
+	assert (!complement[i]);
+#endif
       if (!deriveAKnapsack(si, cs, krow, rowType[itry], b, complement, 
 			   xstar, rowIndex, 
 			   length,thisColumnIndex,thisElement)) {
@@ -690,14 +716,14 @@ void CglKnapsackCover::generateCuts(const OsiSolverInterface& si, OsiCuts& cs,
       // Reset xstar and complement to their initialized values for the next
       // go-around 
       int k;
-      if (fabs(b-rowUpper[rowIndex]) > epsilon_) {
+      // could get == if (fabs(b-rowUpper[rowIndex]) > epsilon_) {
 	for(k=0; k<krow.getNumElements(); k++) {
 	  if (complement[krow.getIndices()[k]]){
 	    xstar[krow.getIndices()[k]]= 1.0-xstar[krow.getIndices()[k]];
 	    complement[krow.getIndices()[k]]=0;
 	  }
 	}
-      }
+	//}
       krow.setVector(0,NULL,NULL);
 #ifdef CGL_DEBUG
       int nnow = cs.sizeRowCuts();
@@ -818,6 +844,9 @@ CglKnapsackCover::liftAndUncomplementAndAdd(
   }
   
   if (goodCut) {
+    //int extendedCut = gubifyCut(cut);
+    //if (extendedCut)
+    //printf("XX extended cut\n");
     // Uncomplement the complemented variables in the cut
     int k;
     //if (fabs(b-rowub)> epsilon_) {
@@ -889,7 +918,11 @@ CglKnapsackCover::deriveAKnapsack(
        double & b,
        int *  complement,
        double *  xstar,
-       int /*rowIndex*/,
+       int
+#ifdef PRINT_DEBUG 
+       rowIndex
+#endif
+       ,
        int numberElements,
        const int * index,
        const double * element)
@@ -897,7 +930,7 @@ CglKnapsackCover::deriveAKnapsack(
 
   // Fix to https://projects.coin-or.org/Cbc/ticket/30
   {
-    // On investiagtion looks as if it can happen without being a bug
+    // On investigation looks as if it can happen without being a bug
     if (numberElements==0) return 0;
   }
 
@@ -1020,7 +1053,7 @@ CglKnapsackCover::deriveAKnapsack(
 
 #ifdef PRINT_DEBUG
       printf("*** Doubleton Row is ");
-      for(i=0; i<2; i++){
+      for(int i=0; i<2; i++){
 	int iColumn = indices[i];
 	sum += elements[i]*xstar[iColumn];
 	printf("%d (coeff = %g, value = %g} ",indices[i],
@@ -1083,7 +1116,7 @@ CglKnapsackCover::deriveAKnapsack(
     if (krow.getElements()[i]> b){
       fixedBnd.insert(krow.getIndices()[i],complement[krow.getIndices()[i]]);
 #ifdef PRINT_DEBUG   
-      printf("Variable %i being fixed to %i due to row %i.\n",
+      printf("Variable %i being fixed to %i due to row %d.\n",
 	     krow.getIndices()[i],complement[krow.getIndices()[i]],rowIndex); 
 #endif
       fixed = 1;      
@@ -1150,7 +1183,11 @@ CglKnapsackCover::deriveAKnapsack(
 int 
 CglKnapsackCover::findLPMostViolatedMinCover(
       int nCols,
-      int /*row*/,
+      int
+#ifdef PRINT_DEBUG 
+      row
+#endif
+      ,
       CoinPackedVector & krow,
       double & b,
       double * xstar, 
@@ -1362,7 +1399,11 @@ Lp relax of most violated minimal cover: row %i has cover of size %i.\n",
 int 
 CglKnapsackCover::findExactMostViolatedMinCover(
         int nCols,
-        int /*row*/,
+	int
+#ifdef PRINT_DEBUG 
+	row
+#endif
+	,
         CoinPackedVector & krow,
         double b, 
         double *  xstar, 
@@ -1535,7 +1576,11 @@ CglKnapsackCover::findExactMostViolatedMinCover(
 //-------------------------------------------------------------------
 int
 CglKnapsackCover::findPseudoJohnAndEllisCover(
-					      int /*row*/,
+					      int
+#ifdef PRINT_DEBUG 
+					      row
+#endif
+      ,
      CoinPackedVector & krow,
      double & b,
      double * xstar, 
@@ -1782,7 +1827,11 @@ CglKnapsackCover::findPseudoJohnAndEllisCover(
 //-------------------------------------------------------------------
 int
 CglKnapsackCover::findJohnAndEllisCover(
-					int /*row*/,
+      int
+#ifdef PRINT_DEBUG 
+      row
+#endif
+      ,
      CoinPackedVector & krow,
      double & b,
      double * xstar, 
@@ -2028,7 +2077,11 @@ CglKnapsackCover::findJohnAndEllisCover(
 //-------------------------------------------------------------------
 int
 CglKnapsackCover::findGreedyCover(
-				  int /*row*/,
+      int
+#ifdef PRINT_DEBUG 
+      row
+#endif
+      ,
      CoinPackedVector & krow,
      double & b,
      double * xstar,
@@ -2854,84 +2907,7 @@ CglKnapsackCover::liftUpDownAndUncomplementAndAdd(
 	   cutRhs, sum);
 #endif
     
-#ifdef GUBCOVER
-  if (numberCliques_) {
-    int n = cut.getNumElements();
-    const int * ind3;
-    const double * els3;
-    ind3 = cut.getIndices();
-    els3 = cut.getElements();
-    const CoinPackedMatrix * matrixByRow = solver_->getMatrixByRow();
-    const double * elementByRow = matrixByRow->getElements();
-    const int * column = matrixByRow->getIndices();
-    const CoinBigIndex * rowStart = matrixByRow->getVectorStarts();
-    const int * rowLength = matrixByRow->getVectorLengths();
-    int numberColumns = solver_->getNumCols();
-    double * els = elements_;
-    double * els2 = els+numberColumns;
-    for (i=0;i<n;i++) 
-      els[ind3[i]]=els3[i];
-    for (i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
-      int iColumn = column[i];
-      els2[iColumn]=elementByRow[i];
-    }
-#if CGL_DEBUG
-    bool found=false;
-#endif
-    for (i=0;i<n;i++) {
-      int iColumn = ind3[i];
-      // complement doesn't seem to work?
-      if (!complement_[iColumn]) {
-	if (oneFixStart_[iColumn]>=0) {
-	  for (int j=oneFixStart_[iColumn];j<zeroFixStart_[iColumn];j++) {
-	    int iClique = whichClique_[j];
-	    for (int k=cliqueStart_[iClique];k<cliqueStart_[iClique+1];k++) {
-	      int jColumn = sequenceInCliqueEntry(cliqueEntry_[k]);
-	      if (!els[jColumn]&&els2[jColumn]) {
-		assert (jColumn!=iColumn);
-		if (!complement_[jColumn]&&oneFixesInCliqueEntry(cliqueEntry_[k])) {
-		  //if (els2[iColumn]<0.0||els2[jColumn]<0.0)
-		    //printf("true els %g (c%d) and %g (c%d)\n",
-		    //   els2[iColumn],complement_[iColumn],
-		    //   els2[jColumn],complement_[jColumn]);
-		  if (fabs(els2[jColumn])>=fabs(els2[iColumn])) {
-#if CGL_DEBUG
-		    if (!found) {
-		      found=true;
-		      printf("Good cut can be improved");
-		      for (i=0;i<n;i++) 
-			printf("(%d,%g) ",ind3[i],els3[i]);
-		      printf("<= %g\n",b);
-		    }
-		    printf("can add! %d %d\n",iColumn,jColumn);
-#endif
-		    els[jColumn]=els[iColumn];
-		    cut.insert(jColumn,els[jColumn]);
-		    // recompute as may have changed
-		    ind3 = cut.getIndices();
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-    // zero out
-    n = cut.getNumElements();
-    ind3 = cut.getIndices();
-    for (i=0;i<n;i++) 
-      els[ind3[i]]=0.0;
-    for (i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
-      int iColumn = column[i];
-      els2[iColumn]=0.0;
-    }
-    for (i=0;i<numberColumns;i++) {
-      assert (!els[i]);
-      assert (!els2[i]);
-    }
-  }
-#endif
+    gubifyCut(cut);
     // de-complement
     int k;
     const int s = cut.getNumElements();
@@ -3128,80 +3104,7 @@ CglKnapsackCover::seqLiftAndUncomplementAndAdd(
     printf("The cutRhs = %g, and the alpha_j*xstar_j sum is %g\n\n", cutRhs, sum);
 #endif
     
-#ifdef GUBCOVER
-  if (numberCliques_) {
-    int n = cut.getNumElements();
-    const int * ind3;
-    const double * els3;
-    ind3 = cut.getIndices();
-    els3 = cut.getElements();
-    const CoinPackedMatrix * matrixByRow = solver_->getMatrixByRow();
-    const double * elementByRow = matrixByRow->getElements();
-    const int * column = matrixByRow->getIndices();
-    const CoinBigIndex * rowStart = matrixByRow->getVectorStarts();
-    const int * rowLength = matrixByRow->getVectorLengths();
-    int numberColumns = solver_->getNumCols();
-    double * els = elements_;
-    double * els2 = els+numberColumns;
-    for (i=0;i<n;i++) 
-      els[ind3[i]]=els3[i];
-    for (i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
-      int iColumn = column[i];
-      els2[iColumn]=elementByRow[i];
-    }
-#if CGL_DEBUG
-    bool found=false;
-#endif
-    for (i=0;i<n;i++) {
-      int iColumn = ind3[i];
-      // complement doesn't seem to work?
-      if (!complement_[iColumn]) {
-	if (oneFixStart_[iColumn]>=0) {
-	  for (int j=oneFixStart_[iColumn];j<zeroFixStart_[iColumn];j++) {
-	    int iClique = whichClique_[j];
-	    for (int k=cliqueStart_[iClique];k<cliqueStart_[iClique+1];k++) {
-	      int jColumn = sequenceInCliqueEntry(cliqueEntry_[k]);
-	      if (!els[jColumn]&&els2[jColumn]) {
-		assert (jColumn!=iColumn);
-		if (!complement_[jColumn]&&oneFixesInCliqueEntry(cliqueEntry_[k])) {
-		  //if (els2[iColumn]<0.0||els2[jColumn]<0.0)
-		    //printf("true els %g (c%d) and %g (c%d)\n",
-		    //   els2[iColumn],complement_[iColumn],
-		    //   els2[jColumn],complement_[jColumn]);
-		  if (fabs(els2[jColumn])>=fabs(els2[iColumn])) {
-#if CGL_DEBUG
-		    if (!found) {
-		      found=true;
-		      printf("Good cut can be improved");
-		      for (i=0;i<n;i++) 
-			printf("(%d,%g) ",ind3[i],els3[i]);
-		      printf("<= %g\n",b);
-		    }
-		    printf("can add! %d %d\n",iColumn,jColumn);
-#endif
-		    els[jColumn]=els[iColumn];
-		    cut.insert(jColumn,els[jColumn]);
-		    // recompute as may have changed
-		    ind3 = cut.getIndices();
-		  }
-		}
-	      }
-	    }
-	  }
-	}
-      }
-    }
-    // zero out
-    n = cut.getNumElements();
-    ind3 = cut.getIndices();
-    for (i=0;i<n;i++) 
-      els[ind3[i]]=0.0;
-    for (i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
-      int iColumn = column[i];
-      els2[iColumn]=0.0;
-    }
-  }
-#endif
+    gubifyCut(cut);
     int k;
     const int s = cut.getNumElements();
     const int * indices = cut.getIndices();
@@ -3285,7 +3188,7 @@ CglKnapsackCover::liftCoverCut(
   // Define lambda to be the "cover excess". 
   // By definition, lambda > 0. If this is not the case, something's screwy. Exit gracefully.
   double lambda = sum-b;
-  if (lambda < epsilon_) {
+  if (lambda < epsilon2_) {
 #ifdef PRINT_DEBUG
     printf("lambda < epsilon....aborting. \n");
     std::cout << "lambda " << lambda << " epsilon " << epsilon_ << std::endl;
@@ -3425,7 +3328,14 @@ CglKnapsackCover::liftCoverCut(
       // complement doesn't seem to work?
       if (!complement_[iColumn]) {
 	if (oneFixStart_[iColumn]>=0) {
+	  /* I (JJF) don't think this is valid for more than one clique
+	     Best would be to choose largest set of additions - but that means code
+	     and I don't really understand existing code
+	   */
+	  bool skipClique=false;
 	  for (int j=oneFixStart_[iColumn];j<zeroFixStart_[iColumn];j++) {
+	    if (skipClique)
+	      break;
 	    int iClique = whichClique_[j];
 	    for (int k=cliqueStart_[iClique];k<cliqueStart_[iClique+1];k++) {
 	      int jColumn = sequenceInCliqueEntry(cliqueEntry_[k]);
@@ -3437,6 +3347,7 @@ CglKnapsackCover::liftCoverCut(
 		    //   els2[iColumn],complement_[iColumn],
 		    //   els2[jColumn],complement_[jColumn]);
 		  if (fabs(els2[jColumn])>=fabs(els2[iColumn])) {
+		    skipClique=true;
 #if CGL_DEBUG
 		    if (!found) {
 		      found=true;
@@ -3481,6 +3392,106 @@ CglKnapsackCover::liftCoverCut(
 #endif
   return goodCut;
 }
+// For testing gub stuff
+int 
+CglKnapsackCover::gubifyCut(CoinPackedVector & cut)
+{
+  int goodCut=0;
+#ifdef GUBCOVER
+  if (numberCliques_) {
+    int n = cut.getNumElements();
+    const int * ind3;
+    const double * els3;
+    ind3 = cut.getIndices();
+    els3 = cut.getElements();
+    const CoinPackedMatrix * matrixByRow = solver_->getMatrixByRow();
+    const double * elementByRow = matrixByRow->getElements();
+    const int * column = matrixByRow->getIndices();
+    const CoinBigIndex * rowStart = matrixByRow->getVectorStarts();
+    const int * rowLength = matrixByRow->getVectorLengths();
+    int numberColumns = solver_->getNumCols();
+    double * els = elements_;
+    double * els2 = els+numberColumns;
+    bool good = true;
+    for (int i=0;i<n;i++) {
+      int iColumn = ind3[i];
+      // complement doesn't seem to work?
+      if (!complement_[iColumn]) {
+	els[iColumn]=els3[i];
+      } else {
+	good=false;
+	break;
+      }
+    }
+    for (int i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
+      int iColumn = column[i];
+      els2[iColumn]=elementByRow[i];
+    }
+    if (good) {
+#if CGL_DEBUG
+      bool found=false;
+#endif
+      for (int i=0;i<n;i++) {
+	int iColumn = ind3[i];
+	if (oneFixStart_[iColumn]>=0) {
+	  /* I (JJF) don't think this is valid for more than one clique
+	     Best would be to choose largest set of additions - but that means code
+	     and I don't really understand existing code
+	   */
+	  bool skipClique=false;
+	  for (int j=oneFixStart_[iColumn];j<zeroFixStart_[iColumn];j++) {
+	    if (skipClique)
+	      break;
+	    int iClique = whichClique_[j];
+	    for (int k=cliqueStart_[iClique];k<cliqueStart_[iClique+1];k++) {
+	      int jColumn = sequenceInCliqueEntry(cliqueEntry_[k]);
+	      if (!els[jColumn]&&els2[jColumn]) {
+		assert (jColumn!=iColumn);
+		if (!complement_[jColumn]&&oneFixesInCliqueEntry(cliqueEntry_[k])) {
+		  //if (els2[iColumn]<0.0||els2[jColumn]<0.0)
+		  //printf("true els %g (c%d) and %g (c%d)\n",
+		  //   els2[iColumn],complement_[iColumn],
+		  //   els2[jColumn],complement_[jColumn]);
+		  if (fabs(els2[jColumn])>=fabs(els2[iColumn])) {
+		    skipClique=true;
+#if CGL_DEBUG
+		    if (!found) {
+		      found=true;
+		      printf("Good cut can be improved");
+		      for (int i=0;i<n;i++) 
+			printf("(%d,%g) ",ind3[i],els3[i]);
+		      //printf("<= %g\n",b);
+		    }
+		    printf("can add! %d %d\n",iColumn,jColumn);
+#endif
+		    goodCut=1;
+#if 1
+		    els[jColumn]=els[iColumn];
+		    cut.insert(jColumn,els[jColumn]);
+		    // recompute as may have changed
+		    ind3 = cut.getIndices();
+#endif
+		  }
+		}
+	      }
+	    }
+	  }
+	}
+      }
+    }
+    // zero out
+    n = cut.getNumElements();
+    ind3 = cut.getIndices();
+    for (int i=0;i<n;i++) 
+      els[ind3[i]]=0.0;
+    for (int i=rowStart[whichRow_];i<rowStart[whichRow_]+rowLength[whichRow_];i++) {
+      int iColumn = column[i];
+      els2[iColumn]=0.0;
+    }
+  }
+#endif
+  return goodCut;
+}
 
 //-------------------------------------------------------------------
 // A goto-less implementation of the Horowitz-Sahni exact solution 
@@ -3669,12 +3680,12 @@ CglKnapsackCover::CglKnapsackCover (const CglKnapsackCover & source) :
   numberCliques_=source.numberCliques_;
   numberColumns_=source.numberColumns_;
   if (numberCliques_) {
-    cliqueType_ = new cliqueType [numberCliques_];
+    cliqueType_ = new CliqueType [numberCliques_];
     CoinMemcpyN(source.cliqueType_,numberCliques_,cliqueType_);
     cliqueStart_ = new int [numberCliques_+1];
     CoinMemcpyN(source.cliqueStart_,(numberCliques_+1),cliqueStart_);
     int n = cliqueStart_[numberCliques_];
-    cliqueEntry_ = new cliqueEntry [n];
+    cliqueEntry_ = new CliqueEntry [n];
     CoinMemcpyN(source.cliqueEntry_,n,cliqueEntry_);
     oneFixStart_ = new int [numberColumns_];
     CoinMemcpyN(source.oneFixStart_,numberColumns_,oneFixStart_);
@@ -3748,12 +3759,12 @@ CglKnapsackCover::operator=(const CglKnapsackCover& rhs)
       numberCliques_=rhs.numberCliques_;
       numberColumns_=rhs.numberColumns_;
       if (numberCliques_) {
-	cliqueType_ = new cliqueType [numberCliques_];
+	cliqueType_ = new CliqueType [numberCliques_];
 	CoinMemcpyN(rhs.cliqueType_,numberCliques_,cliqueType_);
 	cliqueStart_ = new int [numberCliques_+1];
 	CoinMemcpyN(rhs.cliqueStart_,(numberCliques_+1),cliqueStart_);
 	int n = cliqueStart_[numberCliques_];
-	cliqueEntry_ = new cliqueEntry [n];
+	cliqueEntry_ = new CliqueEntry [n];
 	CoinMemcpyN(rhs.cliqueEntry_,n,cliqueEntry_);
 	oneFixStart_ = new int [numberColumns_];
 	CoinMemcpyN(rhs.oneFixStart_,numberColumns_,oneFixStart_);
@@ -3983,9 +3994,9 @@ CglKnapsackCover::createCliques( OsiSolverInterface & si,
     }
   }
   if (numberCliques_>0) {
-    cliqueType_ = new cliqueType [numberCliques_];
+    cliqueType_ = new CliqueType [numberCliques_];
     cliqueStart_ = new int [numberCliques_+1];
-    cliqueEntry_ = new cliqueEntry [numberEntries];
+    cliqueEntry_ = new CliqueEntry [numberEntries];
     oneFixStart_ = new int [numberColumns_];
     zeroFixStart_ = new int [numberColumns_];
     endFixStart_ = new int [numberColumns_];
diff --git a/src/CglKnapsackCover/CglKnapsackCover.hpp b/src/CglKnapsackCover/CglKnapsackCover.hpp
index 1ccd517..b0e81d6 100644
--- a/src/CglKnapsackCover/CglKnapsackCover.hpp
+++ b/src/CglKnapsackCover/CglKnapsackCover.hpp
@@ -1,4 +1,4 @@
-// $Id: CglKnapsackCover.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglKnapsackCover.hpp 1201 2014-03-07 17:24:04Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -226,7 +226,9 @@ void liftUpDownAndUncomplementAndAdd(
       double const *ww,
       double & z, 
       int * x);
-
+  /// For testing gub stuff
+  int gubifyCut(CoinPackedVector & cut);
+public:
   /** Creates cliques for use by probing.
       Only cliques >= minimumSize and < maximumSize created
       Can also try and extend cliques as a result of probing (root node).
@@ -234,6 +236,7 @@ void liftUpDownAndUncomplementAndAdd(
   */
   int createCliques( OsiSolverInterface & si, 
 		    int minimumSize=2, int maximumSize=100, bool extendCliques=false);
+private:
   /// Delete all clique information
   void deleteCliques();
   //@}
@@ -267,12 +270,12 @@ void liftUpDownAndUncomplementAndAdd(
   /// Clique type
   typedef struct {
     unsigned int equality:1; //  nonzero if clique is ==
-  } cliqueType;
-  cliqueType * cliqueType_;
+  } CliqueType;
+  CliqueType * cliqueType_;
   /// Start of each clique
   int * cliqueStart_;
   /// Entries for clique
-  cliqueEntry * cliqueEntry_;
+  CliqueEntry * cliqueEntry_;
   /** Start of oneFixes cliques for a column in matrix or -1 if not
       in any clique */
   int * oneFixStart_;
@@ -289,7 +292,7 @@ void liftUpDownAndUncomplementAndAdd(
       So first clique mentioned in row is always 0.  If no entries for row
       then no cliques.  If sequence > numberColumns then not in clique.
   */
-  //cliqueEntry * cliqueRow_;
+  //CliqueEntry * cliqueRow_;
   /// cliqueRow_ starts for each row
   //int * cliqueRowStart_;
   //@}
diff --git a/src/CglKnapsackCover/CglKnapsackCoverTest.cpp b/src/CglKnapsackCover/CglKnapsackCoverTest.cpp
index 69ae19a..a9e02c4 100644
--- a/src/CglKnapsackCover/CglKnapsackCoverTest.cpp
+++ b/src/CglKnapsackCover/CglKnapsackCoverTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglKnapsackCoverTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglKnapsackCoverTest.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglKnapsackCover/Makefile.in b/src/CglKnapsackCover/Makefile.in
index 51fc63a..0ca5285 100644
--- a/src/CglKnapsackCover/Makefile.in
+++ b/src/CglKnapsackCover/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglLandP/CglLandP.cpp b/src/CglLandP/CglLandP.cpp
index be32a4e..1b8db05 100644
--- a/src/CglLandP/CglLandP.cpp
+++ b/src/CglLandP/CglLandP.cpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     07/21/05
 //
-// $Id: CglLandP.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandP.cpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandP.hpp b/src/CglLandP/CglLandP.hpp
index 2bc27b3..64447e7 100644
--- a/src/CglLandP/CglLandP.hpp
+++ b/src/CglLandP/CglLandP.hpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     07/21/05
 //
-// $Id: CglLandP.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandP.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPMessages.cpp b/src/CglLandP/CglLandPMessages.cpp
index 5fbeac6..8505a0c 100644
--- a/src/CglLandP/CglLandPMessages.cpp
+++ b/src/CglLandP/CglLandPMessages.cpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     21/07/05
 //
-// $Id: CglLandPMessages.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPMessages.cpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPMessages.hpp b/src/CglLandP/CglLandPMessages.hpp
index be2c7c9..aab24c4 100644
--- a/src/CglLandP/CglLandPMessages.hpp
+++ b/src/CglLandP/CglLandPMessages.hpp
@@ -4,7 +4,7 @@
 //           CNRS, Aix-Marseille Universites
 // Date:     02/23/08
 //
-// $Id: CglLandPMessages.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPMessages.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPSimplex.cpp b/src/CglLandP/CglLandPSimplex.cpp
index 79a7e8d..9b5c0bb 100644
--- a/src/CglLandP/CglLandPSimplex.cpp
+++ b/src/CglLandP/CglLandPSimplex.cpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     21/07/05
 //
-// $Id: CglLandPSimplex.cpp 1152 2013-10-29 14:52:29Z forrest $
+// $Id: CglLandPSimplex.cpp 1153 2013-10-29 14:54:34Z forrest $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPSimplex.hpp b/src/CglLandP/CglLandPSimplex.hpp
index 02c0cd3..e572c43 100644
--- a/src/CglLandP/CglLandPSimplex.hpp
+++ b/src/CglLandP/CglLandPSimplex.hpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     21/07/05
 //
-// $Id: CglLandPSimplex.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPSimplex.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPTabRow.cpp b/src/CglLandP/CglLandPTabRow.cpp
index 5ff0443..2a12277 100644
--- a/src/CglLandP/CglLandPTabRow.cpp
+++ b/src/CglLandP/CglLandPTabRow.cpp
@@ -4,7 +4,7 @@
 //           CNRS, Aix-Marseille Universites
 // Date:     02/23/08
 //
-// $Id: CglLandPTabRow.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPTabRow.cpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPTabRow.hpp b/src/CglLandP/CglLandPTabRow.hpp
index bbac155..88ef4c2 100644
--- a/src/CglLandP/CglLandPTabRow.hpp
+++ b/src/CglLandP/CglLandPTabRow.hpp
@@ -4,7 +4,7 @@
 //           CNRS, Aix-Marseille Universites
 // Date:     02/23/08
 //
-// $Id: CglLandPTabRow.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPTabRow.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPTest.cpp b/src/CglLandP/CglLandPTest.cpp
index 18603cd..5c87bf8 100644
--- a/src/CglLandP/CglLandPTest.cpp
+++ b/src/CglLandP/CglLandPTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglLandPTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPTest.cpp 1122 2013-04-06 20:39:53Z stefan $
 // Copyright (C) 2000-2009, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglLandP/CglLandPUtils.cpp b/src/CglLandP/CglLandPUtils.cpp
index 07b4737..b5a2306 100644
--- a/src/CglLandP/CglLandPUtils.cpp
+++ b/src/CglLandP/CglLandPUtils.cpp
@@ -4,7 +4,7 @@
 //           CNRS, Aix-Marseille Universites
 // Date:     02/23/08
 //
-// $Id: CglLandPUtils.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPUtils.cpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPUtils.hpp b/src/CglLandP/CglLandPUtils.hpp
index 79af174..5317f38 100644
--- a/src/CglLandP/CglLandPUtils.hpp
+++ b/src/CglLandP/CglLandPUtils.hpp
@@ -4,7 +4,7 @@
 //           CNRS, Aix-Marseille Universites
 // Date:     02/23/08
 //
-// $Id: CglLandPUtils.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPUtils.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
diff --git a/src/CglLandP/CglLandPValidator.cpp b/src/CglLandP/CglLandPValidator.cpp
index ce729cb..939fbf8 100644
--- a/src/CglLandP/CglLandPValidator.cpp
+++ b/src/CglLandP/CglLandPValidator.cpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     11/22/05
 //
-// $Id: CglLandPValidator.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPValidator.cpp 1302 2015-08-14 15:48:32Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
@@ -23,8 +23,16 @@
 
 namespace LAP
 {
-std::vector<std::string> Validator::rejections_;
 
+const char* Validator::rejections_[DummyEnd] =
+{
+   "Cut was accepted.",
+   "Violation of the cut is too small.",
+   "There is a small coefficient we can not get rid off.",
+   "Dynamic of coefficient is too important.",
+   "Cut is too dense.",
+   "Cleaned cut is empty."
+};
 
 /** Clean an OsiCut
 \return 1 if min violation is too small
@@ -304,24 +312,6 @@ Validator::Validator(double maxFillIn,
         scale_(scale),
         rhsScale_(rhsScale),
         numRejected_(DummyEnd,0)
-{
-    fillRejectionReasons();
-}
-
-
-void
-Validator::fillRejectionReasons()
-{
-    if (rejections_.size() == 0)
-    {
-        rejections_.resize(DummyEnd) ;
-        rejections_[NoneAccepted] = "Cut was accepted";
-        rejections_[SmallViolation] = "Violation of the cut is too small ";
-        rejections_[SmallCoefficient] = "There is a small coefficient we can not get rid off.";
-        rejections_[BigDynamic] = "Dynamic of coefficinet is too important. ";
-        rejections_[DenseCut] = "Cut is too dense.";
-        rejections_[EmptyCut] = "Cleaned cut is empty";
-    }
-}
+{ }
 
 } /* Ends namespace LAP.*/
diff --git a/src/CglLandP/CglLandPValidator.hpp b/src/CglLandP/CglLandPValidator.hpp
index 13d1a69..b9e363d 100644
--- a/src/CglLandP/CglLandPValidator.hpp
+++ b/src/CglLandP/CglLandPValidator.hpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     11/22/05
 //
-// $Id: CglLandPValidator.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglLandPValidator.hpp 1302 2015-08-14 15:48:32Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //---------------------------------------------------------------------------
@@ -93,11 +93,11 @@ public:
     }
     /** @} */
 
-    const std::string& failureString(RejectionsReasons code) const
+    const char* failureString(RejectionsReasons code) const
     {
         return rejections_[static_cast<int> (code)];
     }
-    const std::string& failureString(int code) const
+    const char* failureString(int code) const
     {
         return rejections_[ code];
     }
@@ -110,7 +110,6 @@ public:
         return numRejected_[ code];
     }
 private:
-    static void fillRejectionReasons();
     /** max percentage of given formulation fillIn should be accepted for cut fillin.*/
     double maxFillIn_;
     /** max ratio between smallest and biggest coefficient */
@@ -122,7 +121,7 @@ private:
     /** Scale of right-hand-side.*/
     double rhsScale_;
     /** Strings explaining reason for rejections */
-    static std::vector<std::string> rejections_;
+    static const char* rejections_[DummyEnd];
     /** Number of cut rejected for each of the reasons.*/
     std::vector<int> numRejected_;
 };
diff --git a/src/CglLandP/Makefile.in b/src/CglLandP/Makefile.in
index ddb4e82..9654b1d 100644
--- a/src/CglLandP/Makefile.in
+++ b/src/CglLandP/Makefile.in
@@ -152,6 +152,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -332,6 +336,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglLiftAndProject/Makefile.in b/src/CglLiftAndProject/Makefile.in
index 471e01f..ae9d0fe 100644
--- a/src/CglLiftAndProject/Makefile.in
+++ b/src/CglLiftAndProject/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglMessage.cpp b/src/CglMessage.cpp
index ad1259e..3e45884 100644
--- a/src/CglMessage.cpp
+++ b/src/CglMessage.cpp
@@ -1,4 +1,4 @@
-// $Id: CglMessage.cpp 1113 2013-04-06 13:28:20Z stefan $
+// $Id: CglMessage.cpp 1230 2014-11-18 11:10:45Z forrest $
 // Copyright (C) 2005, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -20,7 +20,7 @@ static Cgl_message us_english[]=
   {CGL_FIXED,2,1,"%d variables fixed"},
   {CGL_PROCESS_STATS,3,1,"%d fixed, %d tightened bounds, %d strengthened rows, %d substitutions"},
   {CGL_SLACKS,8,1,"%d inequality constraints converted to equality constraints"},
-  {CGL_PROCESS_STATS2,4,1,"processed model has %d rows, %d columns (%d integer) and %d elements"},
+  {CGL_PROCESS_STATS2,4,1,"processed model has %d rows, %d columns (%d integer (%d of which binary)) and %d elements"},
   {CGL_PROCESS_SOS1,5,1,"%d SOS with %d members"},
   {CGL_PROCESS_SOS2,6,2,"%d SOS (%d members out of %d) with %d overlaps - too much overlap or too many others"},
   {CGL_UNBOUNDED,7,1,"Continuous relaxation is unbounded!"},
diff --git a/src/CglMessage.hpp b/src/CglMessage.hpp
index abebe2c..5f080e8 100644
--- a/src/CglMessage.hpp
+++ b/src/CglMessage.hpp
@@ -1,4 +1,4 @@
-// $Id: CglMessage.hpp 1113 2013-04-06 13:28:20Z stefan $
+// $Id: CglMessage.hpp 1105 2013-03-19 12:43:52Z forrest $
 // Copyright (C) 2005, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglMixedIntegerRounding/Makefile.in b/src/CglMixedIntegerRounding/Makefile.in
index 1e69040..618a7f1 100644
--- a/src/CglMixedIntegerRounding/Makefile.in
+++ b/src/CglMixedIntegerRounding/Makefile.in
@@ -136,6 +136,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -316,6 +320,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglMixedIntegerRounding2/CglMixedIntegerRounding2.cpp b/src/CglMixedIntegerRounding2/CglMixedIntegerRounding2.cpp
index 920896a..177b0a3 100644
--- a/src/CglMixedIntegerRounding2/CglMixedIntegerRounding2.cpp
+++ b/src/CglMixedIntegerRounding2/CglMixedIntegerRounding2.cpp
@@ -19,7 +19,11 @@
 #include "CoinPackedVector.hpp"
 
 #include "CglMixedIntegerRounding2.hpp"
-
+//#define CGL_DEBUG2 2
+#if CGL_DEBUG2
+static int xxxxxx=0;
+static int yyyyyy=1687;
+#endif
 //-----------------------------------------------------------------------------
 // Generate Mixed Integer Rounding inequality
 //------------------------------------------------------------------- 
@@ -838,10 +842,31 @@ CglMixedIntegerRounding2::generateMirCuts(
 
 	// if a cut was found, insert it into cs
 	if (hasCut)  {
+	  // look at cut to see if unstable
+	  const CoinPackedVector & row = cMirCut.row();
+	  int n=row.getNumElements();
+	  const double * elements = row.getElements();
+	  double largest = 0.0;
+	  double smallest = COIN_DBL_MAX;
+	  for (int i=0;i<n;i++) {
+	    double value = fabs(elements[i]);
+	    largest=CoinMax(largest,value);
+	    smallest=CoinMin(smallest,value);
+	  }
+	  if (largest>1.0e8*smallest||largest>1.0e7||smallest<1.0e-5) {
+#if CGL_DEBUG2
+	    printf("Unstable Mixed cut %g <= ",cMirCut.lb());
+	    const int * columns = row.getIndices();
+	    for (int i=0;i<n;i++) 
+	      printf("(%d,%g) ",columns[i],elements[i]);
+	    printf("<= %g\n",cMirCut.ub());
+#endif
+	  } else {
 #if CGL_DEBUG
-	  std::cout << "MIR cut generated " << std::endl;
+	    std::cout << "MIR cut generated " << std::endl;
 #endif
-	  cs.insert(cMirCut);
+	    cs.insert(cMirCut);
+	  }
 	}
 
       }
@@ -1080,7 +1105,14 @@ CglMixedIntegerRounding2::boundSubstitution(
       continue;
     }
 
-    if (fabs(coefCol) < EPSILON_) continue;
+    if (fabs(coefCol) < EPSILON_) {
+      // relax as far as possible
+      if (coefCol<0.0)
+	rhsMixedKnapsack -= coefCol*colUpperBound[indCol];
+      else
+	rhsMixedKnapsack -= coefCol*colLowerBound[indCol];
+      continue;
+    }
     // set the coefficients of the integer variables
     if ( (indCol < numCols_)  && (integerType_[indCol]) ) {
       // Copy the integer variable to the vector mixedKnapsack
@@ -1430,21 +1462,30 @@ CglMixedIntegerRounding2::cMirSeparation(
   double cutRHS = rhsBestCut;
   double violation = 0.0;
   double normCut = 0.0;
-  //double smallest=COIN_DBL_MAX;
+#if CGL_DEBUG2
+  double smallest=COIN_DBL_MAX;
+#endif
   double largest=0.0;
   // Also weaken by small coefficients
   for ( j = 0; j < cutLen; ++j) {
     int column = cutInd[j];
     double value = cutCoef[column];
-    //smallest=CoinMin(smallest,fabs(value));
+#if CGL_DEBUG2
+    smallest=CoinMin(smallest,fabs(value));
+    normCut += value * value;
+#endif
     largest=CoinMax(largest,fabs(value));
-    //normCut += value * value;
   }
-  //normCut=sqrt(normCut);
-  //printf("smallest %g largest %g norm %g\n",
-  //	 smallest,largest,normCut);
   double testValue=CoinMax(1.0e-6*largest,1.0e-12);
-  //normCut=0.0;
+#if CGL_DEBUG2
+  normCut=sqrt(normCut);
+  printf("smallest %g largest %g norm %g - %d elements - rhs %g - %d\n",
+  	 smallest,largest,normCut,cutLen,cutRHS,xxxxxx);
+  xxxxxx++;
+  if (xxxxxx==yyyyyy)
+    printf("trouble\n");
+  normCut=0.0;
+#endif
   int n=0;
   for ( j = 0; j < cutLen; ++j) {
     int column = cutInd[j];
@@ -1453,15 +1494,44 @@ CglMixedIntegerRounding2::cMirSeparation(
       violation += value * xlp[column];
       normCut += value * value;
       cutInd[n++]=column;
+#if CGL_DEBUG2
+      printf("taking %d %g\n",column,value);
+#endif
     } else if (value) {
       cutCoef[column]=0.0;
       // Weaken
       if (value>0.0) {
+#if CGL_DEBUG2
+	printf("not taking %d %g - lb %g - rhs -> %g\n",column,value,
+	       colLowerBound[column],
+	       cutRHS - value*colLowerBound[column]);
+#endif
         // Allow for at lower bound
-        cutRHS -= value*colLowerBound[column];
+	double modification = value*colLowerBound[column];
+	if (colLowerBound[column]>0.0) {
+#if CGL_DEBUG2
+	  printf("weakening modification from %g to zero\n",
+		 modification);
+#endif
+	  modification=0.0;
+	}
+        cutRHS -= modification;
       } else {
+#if CGL_DEBUG2
+	printf("not taking %d %g - ub %g - rhs -> %g\n",column,value,
+	       colUpperBound[column],
+	       cutRHS - value*colUpperBound[column]);
+#endif
         // Allow for at upper bound
-        cutRHS -= value*colUpperBound[column];
+	double modification = value*colUpperBound[column];
+	if (colUpperBound[column]<0.0) {
+#if CGL_DEBUG2
+	  printf("weakening modification from %g to zero\n",
+		 modification);
+#endif
+	  modification=0.0;
+	}
+        cutRHS -= modification;
       }
     }
   }
diff --git a/src/CglMixedIntegerRounding2/Makefile.in b/src/CglMixedIntegerRounding2/Makefile.in
index fa04ebc..0a80fff 100644
--- a/src/CglMixedIntegerRounding2/Makefile.in
+++ b/src/CglMixedIntegerRounding2/Makefile.in
@@ -136,6 +136,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -316,6 +320,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglOddHole/CglOddHole.cpp b/src/CglOddHole/CglOddHole.cpp
index de6d60b..c550a0d 100644
--- a/src/CglOddHole/CglOddHole.cpp
+++ b/src/CglOddHole/CglOddHole.cpp
@@ -1,4 +1,4 @@
-// $Id: CglOddHole.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglOddHole.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglOddHole/CglOddHole.hpp b/src/CglOddHole/CglOddHole.hpp
index 4ee6795..3b80caa 100644
--- a/src/CglOddHole/CglOddHole.hpp
+++ b/src/CglOddHole/CglOddHole.hpp
@@ -1,4 +1,4 @@
-// $Id: CglOddHole.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglOddHole.hpp 1119 2013-04-06 20:24:18Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglOddHole/CglOddHoleTest.cpp b/src/CglOddHole/CglOddHoleTest.cpp
index a0e5b85..dc198df 100644
--- a/src/CglOddHole/CglOddHoleTest.cpp
+++ b/src/CglOddHole/CglOddHoleTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglOddHoleTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglOddHoleTest.cpp 1122 2013-04-06 20:39:53Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglOddHole/Makefile.in b/src/CglOddHole/Makefile.in
index c84b5e9..5d38324 100644
--- a/src/CglOddHole/Makefile.in
+++ b/src/CglOddHole/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglParam.hpp b/src/CglParam.hpp
index 56d73ac..4463ef5 100644
--- a/src/CglParam.hpp
+++ b/src/CglParam.hpp
@@ -5,7 +5,7 @@
 //           email: fmargot at andrew.cmu.edu
 // Date:     11/24/06
 //
-// $Id: CglParam.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglParam.hpp 1122 2013-04-06 20:39:53Z stefan $
 //
 // This code is licensed under the terms of the Eclipse Public License (EPL).
 //-----------------------------------------------------------------------------
diff --git a/src/CglPreProcess/CglPreProcess.cpp b/src/CglPreProcess/CglPreProcess.cpp
index 7dce0ff..c6b9eb2 100644
--- a/src/CglPreProcess/CglPreProcess.cpp
+++ b/src/CglPreProcess/CglPreProcess.cpp
@@ -19,6 +19,7 @@
 #include "CglCutGenerator.hpp"
 #include "CoinTime.hpp"
 #include "CoinSort.hpp"
+#include "CoinDenseFactorization.hpp"
 #include "CoinBuild.hpp"
 #include "CoinHelperFunctions.hpp"
 #include "CoinWarmStartBasis.hpp"
@@ -26,6 +27,7 @@
 #include "CglProbing.hpp"
 #include "CglDuplicateRow.hpp"
 #include "CglClique.hpp"
+//#define PRINT_DEBUG 1
 //#define COIN_DEVELOP 1 
 #ifdef COIN_DEVELOP
 static int whichMps=0;
@@ -256,7 +258,7 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 	}
       }
     }
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
     printf("Current number of integers is %d\n",currentNumber);
 #endif
     // now look at continuous
@@ -321,14 +323,18 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 	    bool equality=false;
 	    int nC=0;
 	    int xxxx=0;
+#if CBC_USEFUL_PRINTING
 	    bool badCount=false;
+#endif
 	    for (CoinBigIndex j=start;j<end;j++) {
 	      int iRow = row[j];
 	      if (count[iRow]>1) {
 		singletonRow=false;
 		//printf("col %d row%d element %g - row count %d\n",iColumn,iRow,element[j],count[iRow]);
+#if CBC_USEFUL_PRINTING
 		if (count[iRow]==999999)
 		  badCount=true;
+#endif
 		if (element[j]==1.0) {
 		  if ((xxxx&1)==0)
 		    xxxx |= 1;
@@ -373,9 +379,11 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 		}
 	      }
 	    }
+#if CBC_USEFUL_PRINTING
 	    if (!model->isInteger(iColumn)&&false)
 	      printf("%d has %d rows with >1 - state network %s interaction %s\n",iColumn,nC,xxxx>3 ? "bad" : "good",
 		     badCount ? "too much" : "ok");
+#endif
 	    // If not good here then mark rows
 	    if (!thisGood) {
 	      for (CoinBigIndex j=start;j<end;j++) {
@@ -800,9 +808,11 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 		  size[iRow]++;
 		}
 	      }
+#if CBC_USEFUL_PRINTING
 	      for (i=0;i<nRowB;i++)
 		if (size[i]<2)
 		  printf("%d entries in row %d\n",size[i],i);
+#endif
 	    }
 	    for (i=0;i<nColB;i++)
 	      whichCol[i]=i;
@@ -987,7 +997,9 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 	    goodInteger=true;
 	  }
 	  if (goodInteger) {
+#if CBC_USEFUL_PRINTING
 	    printf("Block %d can be integer\n",iBlock);
+#endif
 	    for (i=0;i<nCol;i++) {
 	      if (columnBlock[i]==iBlock) {
 		int iBack = back[i];
@@ -1014,12 +1026,12 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
     }
     numberIntegers=numberNonZero;
     if (allGood&&numberObj) {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
       int numberPossible = 0;
 #endif
       for (iColumn=0;iColumn<numberColumns;iColumn++) {
 	if (upper[iColumn]>lower[iColumn]&&objective[iColumn]&&!model->isInteger(iColumn)) {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	  numberPossible++;
 #endif
 	  if (upper[iColumn]<=lower[iColumn]+10) {
@@ -1028,16 +1040,16 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
 	  }
 	}
       }
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
       printf("ZZZZYY CglPreProcess analysis says all (%d) continuous with costs could be made integer - %d were\n",numberPossible,numberIntegers-numberNonZero);
 #endif
     }
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
     if (numberZero)
       printf("ZZZZYY %d continuous with zero cost were made integer\n",numberZero);
 #endif
     numberIntegers += numberZero;
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
     if (numberEq||numberEqI)
       printf("ZZZZYY %d rows made equality from continuous, %d from integer\n",numberEq,numberEqI);
 #endif
@@ -1049,10 +1061,12 @@ static int makeIntegers2(OsiSolverInterface * model,int mode)
   delete [] count;
   return (totalNumberIntegers);
 }
-//#define CGL_WRITEMPS 
+//#define CGL_WRITEMPS 1 
 #ifdef CGL_WRITEMPS
+#if CGL_WRITEMPS>1
 extern double * debugSolution;
 extern int debugNumberColumns;
+#endif
 static int mpsNumber=0;
 static void writeDebugMps(const OsiSolverInterface * solver,
 			  const char * where,
@@ -1061,8 +1075,10 @@ static void writeDebugMps(const OsiSolverInterface * solver,
   mpsNumber++;
   char name[20];
   sprintf(name,"presolve%2.2d.mps",mpsNumber);
-  printf("saving %s from %s\n",name,where);
+  printf("saving %s from %s - %d row, %d columns\n",
+	 name,where,solver->getNumRows(),solver->getNumCols());
   solver->writeMpsNative(name,NULL,NULL,0,1,0);
+#if CGL_WRITEMPS>1
   if (pinfo&&debugSolution) {
     int n = solver->getNumCols();
     if (n<debugNumberColumns) {
@@ -1099,6 +1115,7 @@ static void writeDebugMps(const OsiSolverInterface * solver,
 	   newSolver->getObjValue());
     delete newSolver;
   }
+#endif
 }
 #else
 #define writeDebugMps(x,y,z)
@@ -1108,15 +1125,23 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
 				    int makeEquality, int numberPasses,
 				    int tuning)
 {
-#if 0
+#ifdef CGL_WRITEMPS
    bool rcdActive = true ;
    std::string modelName ;
    model.getStrParam(OsiProbName,modelName) ;
+   writeDebugMps(&model,"IPP:preProcessNonDefault",0) ;
    std::cout
      << "  Attempting to activate row cut debugger for "
      << modelName << " ... " ;
-   writeDebugMps(&model,"IPP:preProcessNonDefault",0) ;
-   model.activateRowCutDebugger(modelName.c_str()) ;
+   if (!appData_) {
+     model.activateRowCutDebugger(modelName.c_str()) ;
+   } else {
+     // see if passed in
+     double * solution = CoinCopyOfArray(reinterpret_cast<double *>(appData_),
+					 model.getNumCols());
+     model.activateRowCutDebugger(solution);
+     delete [] solution;
+   }
    if (model.getRowCutDebugger())
      std::cout << "on optimal path." << std::endl ;
    else if (model.getRowCutDebuggerAlways())
@@ -1132,6 +1157,11 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
    }
 # endif
   originalModel_ = & model;
+  if (tuning>=1000000) {
+    numberPasses=tuning/1000000;
+    tuning %= 1000000;
+    //minimumLength = tuning;
+  }
   numberSolvers_ = numberPasses;
   model_ = new OsiSolverInterface * [numberSolvers_];
   modifiedModel_ = new OsiSolverInterface * [numberSolvers_];
@@ -1141,8 +1171,6 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
     modifiedModel_[i]=NULL;
     presolve_[i]=NULL;
   }
-  // Put presolve option on
-  tuning |= 8;
   // clear original
   delete [] originalColumn_;
   delete [] originalRow_;
@@ -1165,14 +1193,16 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
   else if (numberPasses<=2)
     numberModifiedPasses=2; // fairly lightweight preprocessing
   if (tuning>=10000) {
-    numberModifiedPasses=(tuning-10000)/10000;
+    numberModifiedPasses=tuning/10000;
     tuning %= 10000;
     //minimumLength = tuning;
   }
+  if ((tuning&1)!=0)
+    options_ |= 16; // heavy stuff
   //bool heavyProbing = (tuning&1)!=0;
   int makeIntegers = (tuning&6)>>1;
   // See if we want to do initial presolve
-  int doInitialPresolve = (tuning&8)>>3;
+  int doInitialPresolve = 1;
   if (numberSolvers_<2)
     doInitialPresolve=0;
   // We want to add columns
@@ -1329,7 +1359,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
 	  if (nBadObj*10<nGoodObj) {
 	    justOnesWithObj=true;
 	    makeEquality=3;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 	    printf("trying SOS as all costs there\n");
 #endif
 	  }
@@ -1940,12 +1970,12 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
 	if (move) {
 	  // can move objective
 	  numberMoved++;
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	  if (rhs)
 	    printf("ZZZ on col %d move %g offset %g\n",
 		   jColumn,move,move*rhs);
 #endif
-	  offset += move*rhs;
+	  offset -= move*rhs;
 	  for (CoinBigIndex j=rowStart[iRow];j<rowStart[iRow]+rowLength[iRow];j++) {
 	    int iColumn = column[j];
 	    if (iColumn!=jColumn) {
@@ -1960,7 +1990,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       }
     }
   }
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
   if (numberMoved)
     printf("ZZZ %d costs moved\n",numberMoved);
 #endif
@@ -2058,14 +2088,49 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
   }
   OsiSolverInterface * returnModel=NULL;
   int numberChanges;
-  if ((tuning&128)!=0) {
-    // take out cliques
-    OsiSolverInterface * newSolver=cliqueIt(*startModel2,0.0001);
+  if ((tuning&(128+1))!=0) {
+    OsiSolverInterface * newSolver=NULL;
+    if ((tuning&2048)!=0) {
+      CglProbing generator1;
+      generator1.setUsingObjective(false);
+      generator1.setMaxPass(1);
+      generator1.setMaxPassRoot(1);
+      generator1.setMaxLook(100);
+      generator1.setRowCuts(3);
+      generator1.setMaxElements(300);
+      generator1.setMaxProbeRoot(startModel2->getNumCols());
+      CoinThreadRandom randomGenerator;
+      CglTreeProbingInfo info(startModel2);
+      info.level = 0;
+      info.formulation_rows = startModel2->getNumRows();
+      info.inTree = false;
+      info.options = !numberProhibited_ ? 0 : 2;
+      info.randomNumberGenerator=&randomGenerator;
+      info.pass=4;
+      generator1.setMode(8);
+      OsiCuts cs;
+      generator1.generateCutsAndModify(*startModel2,cs,&info);
+      OsiSolverInterface * temp = generator1.cliqueModel(startModel2,2);
+      OsiSolverInterface * temp2 = cliqueIt(*temp,0.0001);
+      delete temp;
+      if (temp2) {
+	if (temp2->getNumRows()<startModel2->getNumRows()) {
+	  delete newSolver;
+	  newSolver = temp2;
+	} else {
+	  delete temp2;
+	}
+      }
+    } else {
+      // take out cliques
+      newSolver=cliqueIt(*startModel2,0.0001);
+    }
     if (newSolver) {
       if (startModel2 == modifiedModel_[0])
 	modifiedModel_[0]=newSolver;
       delete startModel2;
       startModel2=newSolver;
+      newSolver->setHintParam(OsiDoDualInInitial, true, OsiHintTry);
       newSolver->initialSolve();
       assert (newSolver->isProvenOptimal());
       //printf("new size %d rows, %d columns\n",
@@ -2108,7 +2173,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
   if (!startModel2->isProvenOptimal()) {
     if (!startModel2->isProvenDualInfeasible()) {
       handler_->message(CGL_INFEASIBLE,messages_)<< CoinMessageEol ;
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
       startModel2->writeMps("infeas");
 #endif
     } else {
@@ -2139,7 +2204,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       tuning &= ~USECGLCLIQUE;
     if ((options_&4)!=0)
       allPlusOnes=false;
-    if (allPlusOnes||(tuning&USECGLCLIQUE)!=0) {
+    if ((allPlusOnes&&(options_&8)==0)||(tuning&USECGLCLIQUE)!=0) {
 #if 1
       // put at beginning
       int nAdd= ((tuning&(64+USECGLCLIQUE))==64+USECGLCLIQUE&&allPlusOnes) ? 2 : 1;
@@ -2158,7 +2223,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
 	  cliqueGen->setMinViolation(-3.0);
 	generator_[0]=cliqueGen;
       }
-      if (allPlusOnes) {
+      if ((allPlusOnes||(tuning&256)!=0)&&(options_&4)==0) {
 	CglDuplicateRow * dupCuts =new CglDuplicateRow(oldModel);
 	if ((tuning&256)!=0)
 	  dupCuts->setMaximumDominated(numberColumns);
@@ -2235,12 +2300,14 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
                 integer2 = valueB;
               }
             }
+#if CBC_USEFUL_PRINTING
             if (debug&&0) {
               printf("%d %d elements%selement %g and %d %d elements%selement %g <= %g\n",
                      iColumn1,columnLength[iColumn1],integer1 ? " (integer) " : " ",value1,
                      iColumn2,columnLength[iColumn2],integer2 ? " (integer) " : " ",value2,
                      upper);
             }
+#endif
             if (debug>0) {
               if (value1>0.0&&objective[iColumn1]*direction<0.0) {
                 // will push as high as possible so make ==
@@ -2357,11 +2424,20 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       // maybe we can fix some
       int numberFixed = 
       reducedCostFix(*presolvedModel);
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
       if (numberFixed)
 	printf("%d variables fixed on reduced cost\n",numberFixed);
 #endif
+#if CGL_WRITEMPS
+      const OsiRowCutDebugger *debugger = presolvedModel->getRowCutDebugger();
+      if (debugger) 
+	printf("Contains optimal before modified\n") ;
+#endif
       OsiSolverInterface * newModel = modified(presolvedModel,constraints,numberChanges,iPass-doInitialPresolve,numberModifiedPasses);
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(newModel->getRowCutDebugger());
+#endif
       returnModel=newModel;
       if (!newModel) {
         break;
@@ -2370,7 +2446,7 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       oldModel=newModel;
       writeDebugMps(newModel,"ordinary3",NULL);
       if (!numberChanges&&!numberFixed) {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	printf("exiting after pass %d of %d\n",iPass,numberSolvers_);
 #endif
         numberSolvers_=iPass+1;
@@ -2378,10 +2454,19 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       }
     }
   }
+#if CGL_WRITEMPS
+  const OsiRowCutDebugger *debugger = returnModel->getRowCutDebugger();
+  if (debugger) 
+    printf("Contains optimal before tighten\n") ;
+#endif
   if (returnModel) {
     if (returnModel->getNumRows()) {
       // tighten bounds
       int infeas = tightenPrimalBounds(*returnModel);
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
       if (infeas) {
         delete returnModel;
 	for (int iPass=0;iPass<numberSolvers_;iPass++) {
@@ -2610,13 +2695,36 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
     delete [] mark;
     delete [] sosRow;
   }
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
   if (returnModel) {
     if (makeIntegers) 
       makeIntegers2(returnModel,makeIntegers);
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
+    numberIntegers=0;
+    int numberBinary=0;
+    int numberColumns=returnModel->getNumCols();
+    for (int i=0;i<numberColumns;i++) {
+      if (returnModel->isInteger(i)) {
+	numberIntegers++;
+	if (returnModel->isBinary(i)) {
+	  numberBinary++;
+	}
+      }
+    }
     handler_->message(CGL_PROCESS_STATS2,messages_)
-      <<returnModel->getNumRows()<<returnModel->getNumCols()
-      <<numberIntegers<<returnModel->getNumElements()
+      <<returnModel->getNumRows()<<numberColumns
+      <<numberIntegers<<numberBinary<<returnModel->getNumElements()
       <<CoinMessageEol;
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
     // If can make some cuts then do so
     if (rowType_) {
       int numberRows = returnModel->getNumRows();
@@ -2656,6 +2764,10 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
       }
     }
   }
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
 #if 0
   if (returnModel) {
     int numberColumns = returnModel->getNumCols();
@@ -2812,6 +2924,11 @@ CglPreProcess::preProcessNonDefault(OsiSolverInterface & model,
     //exit(2);
   }
 #endif
+  writeDebugMps(returnModel,"returnModel",NULL);
+#if CGL_WRITEMPS
+      if (debugger) 
+	assert(returnModel->getRowCutDebugger());
+#endif
   return returnModel;
 }
 
@@ -3284,7 +3401,7 @@ CglPreProcess::tightenPrimalBounds(OsiSolverInterface & model,double factor)
 		      }
 		    }
 		    if (rhsAdjust) {
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 		      printf("FFor column %d bounds %g, %g on row %d bounds %g, %g coefficient was changed from %g to %g with rhs adjustment of %g\n",
 			     iColumn,colLower[iColumn],colUpper[iColumn],
 			     iRow,rowLower[iRow],rowUpper[iRow],
@@ -3294,7 +3411,7 @@ CglPreProcess::tightenPrimalBounds(OsiSolverInterface & model,double factor)
 			model.setRowLower(iRow,rowLower[iRow]-rhsAdjust);
 		      if (rowUpper[iRow]<1.0e20)
 			model.setRowUpper(iRow,rowUpper[iRow]-rhsAdjust);
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 		      printf("FFor column %d bounds %g, %g on row %d bounds %g, %g coefficient was changed from %g to %g with rhs adjustment of %g\n",
 			     iColumn,colLower[iColumn],colUpper[iColumn],
 			     iRow,rowLower[iRow],rowUpper[iRow],
@@ -3302,10 +3419,10 @@ CglPreProcess::tightenPrimalBounds(OsiSolverInterface & model,double factor)
 #endif
 		    }
                     element[j]=newValue;
-		    handler_->message(CGL_ELEMENTS_CHANGED2,messages_)
+ 		    handler_->message(CGL_ELEMENTS_CHANGED2,messages_)
 		      <<iRow<<iColumn<<value<<newValue
 		      <<CoinMessageEol;
-#ifdef CGL_DEBUG
+#if CGL_WRITEMPS
                     const OsiRowCutDebugger * debugger = model.getRowCutDebugger();
                     if (debugger&&debugger->numberColumns()==numberColumns) {
                       const double * optimal = debugger->optimalSolution();
@@ -3362,6 +3479,8 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
                         saveHint2,saveStrength2);
   OsiSolverInterface * clonedCopy=NULL;
   double saveObjectiveValue = modelIn.getObjValue();
+  // Make sure cutoff is ignored
+  modelIn.setDblParam(OsiDualObjectiveLimit,1.0e50);
   if (!modelIn.isProvenOptimal()) {
     CoinWarmStartBasis *slack =
       dynamic_cast<CoinWarmStartBasis *>(modelIn.getEmptyWarmStart()) ;
@@ -3424,7 +3543,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	      model->setColLower(iColumn,value2);
 	      model->setColUpper(iColumn,value2);
 	    } else {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	      printf("NPASS=%d, ipass %d var %d values %g %g %g\n",
 		     numberSolvers_,iPass,iColumn,model->getColLower()[iColumn],
 		     value,model->getColUpper()[iColumn]);
@@ -3469,7 +3588,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	model->setColSolution(solution);
 	delete [] solution;
       }
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
       {
 	int numberColumns = model->getNumCols();
 	int numberRows = model->getNumRows();
@@ -3513,15 +3632,19 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	  if(rowActivity[i]<rowLower[i]) {
 	    if (rowActivity[i]<rowLower[i]-1000.0*primalTolerance) {
 	      feasible=false;
+#if CBC_USEFUL_PRINTING
 	      printf("Bad row %d %g <= %g <= %g\n",
 		     i,rowLower[i],rowActivity[i],rowUpper[i]);
+#endif
 	    }
 	    rowActivity[i]=rowLower[i];
 	  } else if(rowActivity[i]>rowUpper[i]) {
 	    if (rowActivity[i]>rowUpper[i]+1000.0*primalTolerance) {
 	      feasible=false;
+#if CBC_USEFUL_PRINTING
 	      printf("Bad row %d %g <= %g <= %g\n",
 		     i,rowLower[i],rowActivity[i],rowUpper[i]);
+#endif
 	    }
 	    rowActivity[i]=rowUpper[i];
 	  }
@@ -3544,10 +3667,18 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	  model->setHintParam(OsiDoPresolveInInitial,true,OsiHintTry);
 	}
       }
+      model->setHintParam(OsiDoDualInInitial, true, OsiHintTry);
       model->initialSolve();
       numberIterationsPost_ += model->getIterationCount();
       if (!model->isProvenOptimal()) {
-#ifdef COIN_DEVELOP
+	// try without basis
+	CoinWarmStartBasis * basis = dynamic_cast<CoinWarmStartBasis *> (model->getEmptyWarmStart());
+	model->setWarmStart(basis);
+	delete basis;
+	model->initialSolve();
+      }
+      if (!model->isProvenOptimal()) {
+#if COIN_DEVELOP
 	  whichMps++;
 	  sprintf(nameMps,"bad2_%d",whichMps);
 	  model->writeMps(nameMps);
@@ -3626,7 +3757,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	      double value = solutionM[iColumn];
 	      value = CoinMax(value,columnLower[iColumn]);
 	      value = CoinMin(value,columnUpper[iColumn]);
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	      printf ("assuming %d fixed to solution of %g (was %g) - bounds %g %g, old bounds and sol %g %g\n",
 		      jColumn,value,solutionM2[jColumn],columnLower2[jColumn],columnUpper2[jColumn],
 		      columnLower[iColumn],columnUpper[iColumn]);
@@ -3634,7 +3765,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	      modelM2->setColUpper(jColumn,value);
 	    }
 	  } else {
-#if 0
+#if CBC_USEFUL_PRINTING
 	    if (columnUpper2[jColumn]>columnLower2[jColumn]&&!modelM2->isInteger(jColumn)) {
 	      double value = solutionM[iColumn];
 	      value = CoinMax(value,columnLower[iColumn]);
@@ -3696,7 +3827,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	  model->setColLower(iColumn,value2);
 	  model->setColUpper(iColumn,value2);
 	} else {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	  printf("NPASS=%d, ipass end var %d values %g %g %g\n",
 		 numberSolvers_,iColumn,model->getColLower()[iColumn],
 		 value,model->getColUpper()[iColumn]);
@@ -3759,7 +3890,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 	    for (j=columnStart[iColumn];
 		 j<columnStart[iColumn]+columnLength[iColumn];j++) {
 	      int iRow=row[j];
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	      if (rowLower[iRow]>-1.0e20&&rowUpper[iRow]<1.0e20)
 		printf("odd row with both bounds %d %g %g - element %g\n",
 		       iRow,rowLower[iRow],rowUpper[iRow],element[j]);
@@ -3802,7 +3933,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
 		rowActivity[iRow] += movement*element[j];
 	      }
 	    } else {
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
 	      printf("Unable to move %d\n",iColumn);
 #endif
 	    }
@@ -3866,7 +3997,7 @@ CglPreProcess::postProcess(OsiSolverInterface & modelIn
   double testObj = 1.0e-8*CoinMax(fabs(saveObjectiveValue),
 				  fabs(objectiveValue))+1.0e-4;
   if (!originalModel_->isProvenOptimal()) {
-#ifdef COIN_DEVELOP
+#if COIN_DEVELOP
     whichMps++;
     sprintf(nameMps,"bad3_%d",whichMps);
     originalModel_->writeMps(nameMps);
@@ -3916,6 +4047,31 @@ static int gcd(int a, int b)
   }
   return b;
 }
+#define CGL_PREPROCESS_DENSE_CODE
+#define F77_FUNC(x,y) x##_
+/* Type of Fortran integer translated into C */
+#ifndef ipfint
+//typedef ipfint FORTRAN_INTEGER_TYPE ;
+typedef int ipfint;
+typedef const int cipfint;
+#endif
+//#define COIN_HAS_LAPACK
+//#include "CoinFactorization.hpp"
+#ifdef CGL_PREPROCESS_DENSE_CODE
+// using simple lapack interface
+extern "C" 
+{
+  /** LAPACK Fortran subroutine DGETRF. */
+  void F77_FUNC(dgetrf,DGETRF)(ipfint * m, ipfint *n,
+                               double *A, ipfint *ldA,
+                               ipfint * ipiv, ipfint *info);
+  /** LAPACK Fortran subroutine DGETRS. */
+  void F77_FUNC(dgetrs,DGETRS)(char *trans, cipfint *n,
+                               cipfint *nrhs, const double *A, cipfint *ldA,
+                               cipfint * ipiv, double *B, cipfint *ldB, ipfint *info,
+			       int trans_len);
+}
+#endif
 /* Return model with useful modifications.  
    If constraints true then adds any x+y=1 or x-y=0 constraints
    If NULL infeasible
@@ -3937,6 +4093,10 @@ CglPreProcess::modified(OsiSolverInterface * model,
     if (newModel->isBinary(iColumn))
       number01Integers++;
   }
+#if CBC_USEFUL_PRINTING>0
+  printf("At beginning of modified %d rows and %d columns (pass %d - doing %d minor passes)\n",
+	 numberRows,numberColumns,iBigPass,numberPasses);
+#endif
   OsiRowCut ** whichCut = new OsiRowCut * [numberRows+1];
   memset(whichCut, 0, (numberRows+1)*sizeof(OsiRowCut *));
   numberChanges=0;
@@ -3959,10 +4119,935 @@ CglPreProcess::modified(OsiSolverInterface * model,
       break;
     }
   }
-#endif
+#endif 
   bool feasible=true;
   int firstGenerator=0;
   int lastGenerator=numberCutGenerators_;
+  bool useSolution=getCutoff()<1.0e20;
+#if 1
+  // Do triple stuff
+  if (iBigPass==0) {
+    // Row copy
+    CoinPackedMatrix matrixByRow(*newModel->getMatrixByRow());
+    const double * elementByRow = matrixByRow.getElements();
+    const int * column = matrixByRow.getIndices();
+    const CoinBigIndex * rowStart = matrixByRow.getVectorStarts();
+    const int * rowLength = matrixByRow.getVectorLengths();
+
+    // Column copy
+    CoinPackedMatrix  matrixByCol(*newModel->getMatrixByCol());
+    //const double * element = matrixByCol.getElements();
+    const int * row = matrixByCol.getIndices();
+    const CoinBigIndex * columnStart = matrixByCol.getVectorStarts();
+    const int * columnLength = matrixByCol.getVectorLengths();
+
+    const double * rowLower = newModel->getRowLower();
+    const double * rowUpper = newModel->getRowUpper();
+    const double * columnLower = newModel->getColLower();
+    const double * columnUpper = newModel->getColUpper();
+#define TRIPLE_ROWS 4
+#define TRIPLE_COLS 3 
+    // just allow TRIPLE_ROWS rows
+    double el[TRIPLE_COLS][2*TRIPLE_ROWS];
+    double rhs[2*TRIPLE_ROWS],lower[TRIPLE_ROWS],upper[TRIPLE_ROWS];
+    double modifiedRhs[2*TRIPLE_ROWS],scaleFactor[2*TRIPLE_ROWS];
+    memset(modifiedRhs,0,sizeof(modifiedRhs));
+    memset(scaleFactor,0,sizeof(scaleFactor));
+    int rowNumber[2*TRIPLE_ROWS];
+    double colLower[TRIPLE_COLS],colUpper[TRIPLE_COLS];
+#if CBC_USEFUL_PRINTING>0
+    int binary[TRIPLE_COLS];
+    int colNumber[TRIPLE_COLS];
+#endif
+    unsigned char result[2*TRIPLE_ROWS][2*TRIPLE_ROWS];
+    int rowType[2*TRIPLE_ROWS];
+#define MAX_ELS 20
+#define MAX_LOOK_ROWS 40
+#define MAX_LOOK_COLS 32 // for more go to long 
+    unsigned int bitMask[MAX_LOOK_ROWS];
+    int * which = new int [2*numberColumns+3*numberRows+
+			   MAX_LOOK_ROWS+MAX_LOOK_COLS];
+    int * marked = which+MAX_LOOK_COLS;
+    int * whichRow = marked+numberColumns;
+    int * markRow = whichRow+MAX_LOOK_ROWS;
+    int * backwardRow = markRow+numberRows;
+    int * backwardColumn = backwardRow+numberRows;
+    int * rowTypeAll = backwardColumn+numberColumns;
+    memset(marked,0,numberColumns*sizeof(int));
+    memset(markRow,0,numberRows*sizeof(int));
+    for (int iRow=0;iRow<numberRows;iRow++) {
+      int type=0;
+      if (rowLower[iRow]!=rowUpper[iRow]) {
+	if (rowLower[iRow]>-1.0e30) {
+	  if (rowUpper[iRow]<1.0e30) {
+	    type=2;
+	  } else {
+	    type=1;
+	  }
+	} else {
+	  if (rowUpper[iRow]<1.0e30) {
+	    type=2;
+	  } else {
+	    type=0;
+	  }
+	}
+      } else {
+	type=3;
+      }
+      if (rowType_&&rowType_[iRow])
+	type=0; // not allowed if may be cut
+      rowTypeAll[iRow]=type;
+    }
+    // clean model
+    for (int iColumn=0;iColumn<numberColumns;iColumn++) {
+      if (newModel->isInteger(iColumn)) {
+	double lower = columnLower[iColumn];
+	double upper = columnUpper[iColumn];
+	double saveLower=lower;
+	double saveUpper=upper;
+	if (lower!=ceil(lower)) {
+	  if (fabs(lower-floor(lower+0.5))<1.0e-6)
+	    lower = floor(lower+0.5);
+	  else
+	    lower = ceil(lower);
+	  newModel->setColLower(iColumn,lower);
+	}
+	if (upper!=floor(upper)) {
+	  if (fabs(upper-floor(upper+0.5))<1.0e-6)
+	    upper = floor(upper+0.5);
+	  else
+	    upper = floor(upper);
+	  newModel->setColUpper(iColumn,upper);
+	}
+	if (lower>upper) {
+	  char generalPrint[100];
+	  sprintf(generalPrint,"%d input bounds %g %g",
+		  iColumn,saveLower,saveUpper);
+	  handler_->message(CGL_GENERAL, messages_)
+	    << generalPrint
+	    << CoinMessageEol;
+	  handler_->message(CGL_INFEASIBLE,messages_)
+	    <<CoinMessageEol;
+	  feasible=false;
+	}
+	if (lower<0.0) {
+	  // take out for now
+	  for (CoinBigIndex j=columnStart[iColumn];
+	       j<columnStart[iColumn]+columnLength[iColumn];j++) {
+	    int iRow = row[j];
+	    rowTypeAll[iRow]=0;
+	  }
+	}
+      }
+    }
+#if CBC_USEFUL_PRINTING>0
+    int nFreed=0;
+#endif
+    for (int iColumn=0;iColumn<numberColumns;iColumn++) {
+      if (!feasible)
+	break;
+      if (newModel->isInteger(iColumn) && columnLength[iColumn]<=MAX_ELS
+	  && columnLength[iColumn]>1&&columnLower[iColumn]==0.0&&
+	  columnUpper[iColumn]==1.0) {
+	int nMarked=0;
+	backwardColumn[iColumn]=0;
+	marked[iColumn]=1;
+	which[nMarked++]=iColumn;
+	int nMarkRow = 0;
+	for (CoinBigIndex j=columnStart[iColumn];
+	     j<columnStart[iColumn]+columnLength[iColumn];j++) {
+	  int iRow = row[j];
+	  markRow[iRow]=nMarkRow+1;
+	  backwardRow[iRow]=nMarkRow;
+	  bitMask[nMarkRow]=0;
+	  if (!rowTypeAll[iRow]) {
+	    // no good
+	    bitMask[nMarkRow] = 0xffffffff;
+	  }
+	  whichRow[nMarkRow++]=iRow;
+	}
+	for (CoinBigIndex j=columnStart[iColumn];
+	     j<columnStart[iColumn]+columnLength[iColumn];j++) {
+	  int iRow = row[j];
+	  if (rowLength[iRow]<=3) {
+	    for (CoinBigIndex k=rowStart[iRow];
+	     k<rowStart[iRow]+rowLength[iRow];k++) {
+	      int kColumn = column[k];
+	      if (!marked[kColumn]) {
+		int iMask = backwardRow[iRow];
+		if (nMarked==MAX_LOOK_COLS) {
+		  // say row no good
+		  bitMask[iMask] = 0xffffffff;
+		  continue;
+		} else if (bitMask[iMask] == 0xffffffff) {
+		  continue;
+		}
+		backwardColumn[kColumn]=nMarked;
+		marked[kColumn]=nMarked+1;
+		which[nMarked++]=kColumn;
+	      }
+	      int iMask = backwardRow[iRow];
+	      int iShift = backwardColumn[kColumn];
+	      bitMask[iMask] |= (1<<iShift);
+	    }
+	  }
+	}
+	// See if any match
+	for (int iLook = 0;iLook<nMarkRow-1;iLook++) {
+	  unsigned int mask = bitMask[iLook];
+	  if (mask&&mask!=0xffffffff&&markRow) {
+	    int nMatch=0;
+	    // count bits
+	    int nBits=0;
+	    for (int i=0;i<nMarked;i++) {
+	      if ((mask&1)!=0)
+		nBits++;
+	      mask = mask>>1;
+	    }
+	    mask=bitMask[iLook];
+	    for (int jLook=iLook+1;jLook<nMarkRow;jLook++) {
+	      if (bitMask[jLook]==mask) 
+		nMatch++;
+	    }
+	    if (nMatch) {
+#if CBC_USEFUL_PRINTING>0
+	      printf("For column %d %d matches on size %d\n",
+		     iColumn,nMatch,nBits);
+	      if (nMatch>1) {
+		printf("WHAT NOW\n");
+	      }
+#endif
+	      // Pad out here
+	      int jColumn1=-1,jColumn2=-1;
+	      int iRow1=whichRow[iLook];
+	      int iRow2=-1;
+	      for (int jLook=iLook+1;jLook<nMarkRow;jLook++) {
+		if (bitMask[jLook]==mask) {
+		  iRow2=whichRow[jLook];
+		  break;
+		}
+	      }
+	      rowNumber[0]=iRow1;
+	      rowNumber[1]=iRow2;
+	      colLower[0]=0.0;
+	      colUpper[0]=1.0;
+#if CBC_USEFUL_PRINTING>0
+	      binary[0]=1;
+	      int nCol=nBits;
+#endif
+	      assert (rowLength[iRow1]<=3);
+	      int nRow=2;
+	      for (int j=0;j<2;j++) {
+		int iRow=rowNumber[j];
+		lower[j]=rowLower[iRow];
+		upper[j]=rowUpper[iRow];
+		for (CoinBigIndex k=rowStart[iRow];
+		     k<rowStart[iRow]+rowLength[iRow];k++) {
+		  int kColumn = column[k];
+		  if (kColumn==iColumn) {
+		    el[0][j]=elementByRow[k];
+		  } else if (kColumn==jColumn1) {
+		    el[1][j]=elementByRow[k];
+		  } else if (kColumn==jColumn2) {
+		    el[2][j]=elementByRow[k];
+		  } else if (jColumn1<0) {
+		    jColumn1=kColumn;
+		    el[1][j]=elementByRow[k];
+		    colLower[1]=columnLower[kColumn];
+		    colUpper[1]=columnUpper[kColumn];
+#if CBC_USEFUL_PRINTING>0
+		    binary[1]=0;
+		    if (!colLower[1]&&colUpper[1]==1.0&&newModel->isInteger(kColumn))
+		      binary[1]=1;
+#endif
+		  } else if (jColumn2<0) {
+		    jColumn2=kColumn;
+		    el[2][j]=elementByRow[k];
+		    colLower[2]=columnLower[kColumn];
+		    colUpper[2]=columnUpper[kColumn];
+#if CBC_USEFUL_PRINTING>0
+		    binary[2]=0;
+		    if (!colLower[2]&&colUpper[2]==1.0&&newModel->isInteger(kColumn))
+		      binary[2]=1;
+#endif
+		  } else {
+		    abort();
+		  }
+		}
+	      }
+	      if (jColumn1<0) {
+#if CBC_USEFUL_PRINTING>0
+		printf("**Why jColumn1 negative\n");
+#endif
+		continue;
+	      }
+#if CBC_USEFUL_PRINTING>0
+	      colNumber[0]=iColumn;
+	      colNumber[1]=jColumn1;
+	      colNumber[2]=jColumn2;
+#endif
+	      // do something
+	      assert (columnLower[iColumn]==0.0);
+	      assert (columnUpper[iColumn]==1.0);
+	      if (nBits==2) {
+#if CBC_USEFUL_PRINTING>0
+		printf("iColumn %d %g %g binary\n",iColumn,colLower[0],
+		       colUpper[0]);
+		printf("jColumn1 %d %g %g %s\n",jColumn1,colLower[1],
+		       colUpper[1],newModel->isInteger(jColumn1) 
+		       ? "integer" : "continuous");
+		for (int i=0;i<2;i++) {
+		  printf("%d row %d %g <= %g*x0%s%g*x1 <= %g\n",
+			 i,rowNumber[i],lower[i],el[0][i],
+			 el[1][i]>0.0 ? " +" : " -",fabs(el[1][i]),upper[i]);
+		}
+#endif
+		double lower1[2],upper1[2];
+		lower1[0]=lower1[1]=colLower[1];
+		upper1[0]=upper1[1]=colUpper[1];
+		double l,u;
+		// binary at 0
+		l=lower[0];
+		u=upper[0];
+		if (el[1][0]>0.0) {
+		  lower1[0]=CoinMax(lower1[0],l/el[1][0]);
+		  upper1[0]=CoinMin(upper1[0],u/el[1][0]);
+		} else {
+		  lower1[0]=CoinMax(lower1[0],u/el[1][0]);
+		  upper1[0]=CoinMin(upper1[0],l/el[1][0]);
+		}
+		l=lower[1];
+		u=upper[1];
+		if (el[1][1]>0.0) {
+		  lower1[0]=CoinMax(lower1[0],l/el[1][1]);
+		  upper1[0]=CoinMin(upper1[0],u/el[1][1]);
+		} else {
+		  lower1[0]=CoinMax(lower1[0],u/el[1][1]);
+		  upper1[0]=CoinMin(upper1[0],l/el[1][1]);
+		}
+		l=lower[0]-el[0][0];
+		u=upper[0]-el[0][0];
+		if (el[1][0]>0.0) {
+		  lower1[1]=CoinMax(lower1[1],l/el[1][0]);
+		  upper1[1]=CoinMin(upper1[1],u/el[1][0]);
+		} else {
+		  lower1[1]=CoinMax(lower1[1],u/el[1][0]);
+		  upper1[1]=CoinMin(upper1[1],l/el[1][0]);
+		}
+		l=lower[1]-el[0][1];
+		u=upper[1]-el[0][1];
+		if (el[1][1]>0.0) {
+		  lower1[1]=CoinMax(lower1[1],l/el[1][1]);
+		  upper1[1]=CoinMin(upper1[1],u/el[1][1]);
+		} else {
+		  lower1[1]=CoinMax(lower1[1],u/el[1][1]);
+		  upper1[1]=CoinMin(upper1[1],l/el[1][1]);
+		}
+		if (CoinMin(lower1[0],lower1[1])>colLower[1]) { 
+#if CBC_USEFUL_PRINTING>0
+		  printf("for jColumn1 0-bounds %g,%g 1-bounds %g,%g\n",
+			 lower1[0],upper1[0],lower1[1],upper1[1]);
+#endif
+		  double value = CoinMin(lower1[0],lower1[1]);
+		  if (newModel->isInteger(jColumn1)) 
+		    value = ceil(value-1.0e-5);
+#if CBC_USEFUL_PRINTING>0
+		  printf("increasing lb on %d from %g to %g\n",
+			 jColumn1,colLower[1],value);
+#endif
+		  colLower[1]=value;
+		  newModel->setColLower(jColumn1,value);
+		}
+		if (CoinMax(upper1[0],upper1[1])<colUpper[1]) { 
+#if CBC_USEFUL_PRINTING>0
+		  printf("for jColumn1 0-bounds %g,%g 1-bounds %g,%g\n",
+			 lower1[0],upper1[0],lower1[1],upper1[1]);
+#endif
+		  double value = CoinMax(upper1[0],upper1[1]);
+		  if (newModel->isInteger(jColumn1)) 
+		    value = floor(value+1.0e-5);
+#if CBC_USEFUL_PRINTING>0
+		  printf("decreasing ub on %d from %g to %g\n",
+			 jColumn1,colUpper[1],value);
+#endif
+		  colUpper[1]=value;
+		  newModel->setColUpper(jColumn1,value);
+		}
+		if (lower1[0]>colUpper[1] || upper1[0]<colLower[1]) {
+#if CBC_USEFUL_PRINTING>0
+		  printf("for jColumn1 0-bounds %g,%g 1-bounds %g,%g\n",
+			 lower1[0],upper1[0],lower1[1],upper1[1]);
+		  printf("fixing %d to 1\n",iColumn);
+#endif
+		  colLower[0]=1.0;
+		  newModel->setColLower(iColumn,1.0);
+		  nMarkRow=0; // stop looking
+		}
+		if (lower1[1]>colUpper[1] || upper1[1]<colLower[1]) {
+#if CBC_USEFUL_PRINTING>0
+		  printf("for jColumn1 0-bounds %g,%g 1-bounds %g,%g\n",
+			 lower1[0],upper1[0],lower1[1],upper1[1]);
+		  printf("fixing %d to 0\n",iColumn);
+#endif
+		  colUpper[0]=0.0;
+		  newModel->setColLower(iColumn,0.0);
+		  nMarkRow=0; // stop looking
+		}
+		if (colLower[0]>colUpper[0]||
+		    colLower[1]>colUpper[1]+1.0e-6) {
+#if CBC_USEFUL_PRINTING>0
+		  printf("** infeasible\n");
+#endif
+		  feasible = false;
+		}
+	      } else {
+#if CBC_USEFUL_PRINTING>0
+		printf("iColumn %d %g %g binary\n",iColumn,colLower[0],
+		       colUpper[0]);
+		printf("jColumn1 %d %g %g %s\n",jColumn1,colLower[1],
+		       colUpper[1],newModel->isInteger(jColumn1) 
+		       ? "integer" : "continuous");
+		printf("jColumn2 %d %g %g %s\n",jColumn2,colLower[2],
+		       colUpper[2],newModel->isInteger(jColumn2) 
+		       ? "integer" : "continuous");
+		for (int i=0;i<2;i++) {
+		  printf("%d row %d %g <= %g*x0%s%g*x1%s%g*x2 <= %g\n",
+			 i,rowNumber[i],lower[i],el[0][i],
+			 el[1][i]>0.0 ? " +" : " -",fabs(el[1][i]),
+			 el[2][i]>0.0 ? " +" : " -",fabs(el[2][i]),upper[i]);
+		}
+#endif
+		// Find other doubleton rows
+		for (CoinBigIndex j1=columnStart[jColumn1];
+		     j1<columnStart[jColumn1]+columnLength[jColumn1];j1++) {
+		  int iRow = row[j1];
+		  if (rowLength[iRow]==2 && rowTypeAll[iRow]) {
+		    CoinBigIndex start=rowStart[iRow];
+		    bool good=false;
+		    if (jColumn1==column[start]&&jColumn2==column[start+1]) {
+		      good=true;
+		      el[1][nRow]=elementByRow[start];
+		      el[2][nRow]=elementByRow[start+1];
+		    } else if (jColumn1==column[start+1]&&jColumn2==column[start]) {
+		      good=true;
+		      el[1][nRow]=elementByRow[start+1];
+		      el[2][nRow]=elementByRow[start];
+		    }
+		    if (good) {
+		      rowNumber[nRow]=iRow;
+		      lower[nRow]=rowLower[iRow];
+		      upper[nRow]=rowUpper[iRow];
+		      el[0][nRow]=0.0;
+#if CBC_USEFUL_PRINTING>0
+		      printf("%d row %d %g <= %g*x0%s%g*x1%s%g*x2 <= %g\n",
+			     nRow,iRow,lower[nRow],el[0][nRow],
+			     el[1][nRow]>0.0 ? " +" : " -",fabs(el[1][nRow]),
+			     el[2][nRow]>0.0 ? " +" : " -",fabs(el[2][nRow]),upper[nRow]);
+#endif
+		      nRow++;
+		      if (nRow==TRIPLE_ROWS)
+			break;
+		    }
+		  }
+		}
+	      }
+	      // Now put in <= form
+	      int nLook = nRow;
+	      // types 1 <=, -1 >= 2 first ==, -2 second ==, 3 <= from range, -3 >= from range
+	      for (int i=0;i<nRow;i++) {
+		rowType[i]=1;
+		if (lower[i]<-1.0e20) {
+		  rhs[i]=upper[i];
+		} else if (upper[i]>1.0e20) {
+		  rowType[i]=-1;
+		  rhs[i]=-lower[i];
+		  for (int j=0;j<nBits;j++)
+		    el[j][i]=-el[j][i];
+		} else if (lower[i]==upper[i]) {
+		  rhs[i]=upper[i];
+		  rowType[i]=2;
+		  rowType[nLook]=-2;
+		  rowNumber[nLook]=rowNumber[i];
+		  rhs[nLook]=-upper[i];
+		  for (int j=0;j<nBits;j++)
+		    el[j][nLook]=-el[j][i];
+		  nLook++;
+		} else {
+		  rhs[i]=upper[i];
+		  rowType[i]=3;
+		  rowType[nLook]=-3;
+		  rowNumber[nLook]=rowNumber[i];
+		  rhs[nLook]=-lower[i];
+		  for (int j=0;j<nBits;j++)
+		    el[j][nLook]=-el[j][i];
+		  nLook++;
+		}
+	      }
+	      // scale
+	      for (int i=0;i<nRow;i++) {
+		double largest=0.0;
+		double smallest=COIN_DBL_MAX;
+		for (int k=1;k<nBits;k++) {
+		  double value = fabs(el[k][i]);
+		  if (value) {
+		    largest=CoinMax(largest,value);
+		    smallest=CoinMin(smallest,value);
+		  }
+		}
+		scaleFactor[i]=1.0/sqrt(largest*smallest);
+	      }
+	      // Look at all possible combinations
+	      // For now just look at first
+	      // also ignore bounds (should subtract out lbs from rhs)
+	      assert (nBits<=3);
+	      memset(result,0,sizeof(result));
+	      // bottom 4 bits for 0, next 4 for 1
+	      // 0 not stronger, 1 ==, 2 stronger (els)
+	      // 0 not stronger, 4 ==, 8 stronger (rhs)
+	      for (int j=0;j<2;j++) {
+		for (int k=0;k<nLook;k++) 
+		  modifiedRhs[k]=scaleFactor[k]*(rhs[k]-j*el[0][k]);
+		for (int k1=0;k1<nLook;k1++) { 
+		  for (int k2=0;k2<nLook;k2++) { 
+		    if (k1!=k2 && rowNumber[k1]!=rowNumber[k2]) {
+		      int stronger=8;
+		      if (modifiedRhs[k1]>modifiedRhs[k2]+1.0e-7) {
+			stronger=0;
+		      } else if (modifiedRhs[k1]>modifiedRhs[k2]-1.0e-7) {
+			stronger=4;
+		      }
+		      if (stronger) {
+			int strongerEl=2;
+			for (int k3=1;k3<nBits;k3++) {
+			  if (scaleFactor[k1]*el[k3][k1]<scaleFactor[k2]*el[k3][k2]-1.0e-9) {
+			    stronger=0;
+			    break;
+			  } else if (scaleFactor[k1]*el[k3][k1]<scaleFactor[k2]*el[k3][k2]+1.0e-9) {
+			    strongerEl=1;
+			  }
+			}
+			if (stronger) {
+			  stronger |= strongerEl;
+			}
+			result[k1][k2] |= static_cast<unsigned char>(stronger <<(4*j));
+		      }
+		    }
+		  }
+		}
+	      }
+	      int dropped=-1;
+	      for (int k1=0;k1<nLook;k1++) {
+		for (int k2=0;k2<nLook;k2++) {
+		  if (k1!=k2 && rowNumber[k1]!=rowNumber[k2]) {
+		    int state0 = result[k1][k2]&15;
+		    int state1 = result[k1][k2]>>4;
+		    if (state0&&state1) {
+		      if (state0==5) {
+			if (state1==5) {
+			  // same
+			  if (abs(rowType[k1])==1)
+			    dropped=k1;
+			  else
+			    dropped=k2;
+#if CBC_USEFUL_PRINTING>0
+			  printf("ZZZsame ");
+#endif
+			} else if (state1==9) {
+			  // drop second
+			  dropped=k2;
+#if CBC_USEFUL_PRINTING>0
+			  printf("ZZZfirst ");
+#endif
+			} else {
+#if CBC_USEFUL_PRINTING>0
+			  printf("ZZYY ");
+#endif
+			}
+		      } else if (state0==9) {
+			// drop second
+			dropped=k2;
+#if CBC_USEFUL_PRINTING>0
+			printf("ZZZsecond ");
+#endif
+		      } else {
+#if CBC_USEFUL_PRINTING>0
+			printf("ZZYY ");
+#endif
+		      }
+#if CBC_USEFUL_PRINTING>0
+		      printf("row %d (%d) and row %d (%d) status at 0 is %d status at 1 is %d\n",
+			     k1,rowNumber[k1],k2,rowNumber[k2],
+			     state0,state1);
+#endif
+		      if (dropped>=0)
+			break;
+		    }
+		  }
+		}
+		if (dropped>=0)
+		  break;
+	      }
+	      if (dropped>=0) {
+		int iRow=rowNumber[dropped];
+		// Think if ranged or ==
+		if (rowLower[iRow]<-1.0e30||rowUpper[iRow]>1.0e30) {
+		  newModel->setRowLower(iRow,-COIN_DBL_MAX);
+		  newModel->setRowUpper(iRow,COIN_DBL_MAX);
+#if CBC_USEFUL_PRINTING>0
+		  nFreed++;
+#endif
+		} else {
+#if CBC_USEFUL_PRINTING>0
+		  printf("XXXYYY - shouldn't drop ranged/equality row????\n");
+#endif
+		}
+	      }
+	      // stop rest
+	      for (int jLook=iLook;jLook<nMarkRow;jLook++) {
+		if (bitMask[jLook]==mask) 
+		  bitMask[jLook]=0;
+	      }
+	    }
+	  }
+	}
+	for (int i=0;i<nMarked;i++) {
+	  marked[which[i]]=0;
+	}
+	for (int i=0;i<nMarkRow;i++) {
+	  markRow[whichRow[i]]=0;
+	}
+      }
+    }
+#if CBC_USEFUL_PRINTING>0
+    if(nFreed)
+      printf("%d rows freed up\n",nFreed);
+#endif
+    delete [] which;
+  }
+#endif
+#if 0
+  // Do domination stuff
+  if (iBigPass==0) {
+    // Row copy
+    CoinPackedMatrix matrixByRow(*newModel->getMatrixByRow());
+    const double * elementByRow = matrixByRow.getElements();
+    const int * column = matrixByRow.getIndices();
+    const CoinBigIndex * rowStart = matrixByRow.getVectorStarts();
+    const int * rowLength = matrixByRow.getVectorLengths();
+
+    // Column copy
+    CoinPackedMatrix  matrixByCol(*newModel->getMatrixByCol());
+    //const double * element = matrixByCol.getElements();
+    const int * row = matrixByCol.getIndices();
+    const CoinBigIndex * columnStart = matrixByCol.getVectorStarts();
+    const int * columnLength = matrixByCol.getVectorLengths();
+
+    const double * rowLower = newModel->getRowLower();
+    const double * rowUpper = newModel->getRowUpper();
+    const double * columnLower = newModel->getColLower();
+    const double * columnUpper = newModel->getColUpper();
+    // get sizes for canonical form (overestimate if free columns)
+    int nRows=numberRows;
+    CoinBigIndex nEls=matrixByRow.getNumElements();
+    for (int iRow=0;iRow<numberRows;iRow++) {
+      if (rowLower[iRow]>-1.0e30&&rowUpper[iRow]<1.0e30) {
+	nRows++;
+	nEls += rowLength[iRow];
+      }
+    }
+    int * rowNumber = new int[3*nRows+numberColumns];
+    int * rowBinary = rowNumber+nRows;
+    int * rowPos = rowBinary+nRows;
+    int * whichColumn = rowPos+nRows;
+    double * elementByRow2 = new double [nEls+numberColumns+nRows];
+    double * columnValue = elementByRow2+nEls;
+    double * rhs = columnValue+numberColumns;
+    int * column2 = new int [nEls];
+    CoinBigIndex * rowStart2 = new CoinBigIndex[nRows+1];
+    char * marked = new char [numberColumns+nRows];
+    char * markedRow = marked + numberColumns;
+    for (int iColumn=0;iColumn<numberColumns;iColumn++) {
+      columnValue[iColumn]=0.0;
+      if (columnLower[iColumn]<-1.0e10&&columnUpper[iColumn]>1.0e10) {
+	marked[iColumn]=-1;
+      } else if (fabs(columnUpper[iColumn])<fabs(columnLower[iColumn])) {
+	// flip
+	marked[iColumn]=2;
+	columnValue[iColumn]=-columnUpper[iColumn];
+	if (newModel->isInteger(iColumn) &&
+	    columnUpper[iColumn]==columnLower[iColumn]+1) 
+	  marked[iColumn]=3;
+      } else {
+	marked[iColumn]=0;
+	columnValue[iColumn]=columnLower[iColumn];
+	if (newModel->isInteger(iColumn) &&
+	    columnUpper[iColumn]==columnLower[iColumn]+1) 
+	  marked[iColumn]=1;
+      }
+    }
+    nRows=0;
+    nEls=0;
+    rowStart2[0]=0;
+    for (int iRow=0;iRow<numberRows;iRow++) {
+      CoinBigIndex start = rowStart[iRow];
+      CoinBigIndex end = start + rowLength[iRow];
+      for (int iTry=0;iTry<2;iTry++) {
+	double multiplier;
+	double rhsValue;
+	if (!iTry) {
+	  multiplier=1.0;
+	  rhsValue = rowUpper[iRow];
+	} else {
+	  multiplier=-1.0;
+	  rhsValue = -rowLower[iRow];
+	}
+	if (rhsValue<1.0e30) {
+	  char typeRow=iTry;
+	  int nPos=0;
+	  int nInt=0;
+	  double largest=0.0;
+	  double smallest=COIN_DBL_MAX;
+	  for (CoinBigIndex k=start;k<end;k++) {
+	    int kColumn = column[k];
+	    int type = marked[kColumn];
+	    double value = multiplier*elementByRow[k];
+	    if (type<0) {
+	      nEls=rowStart2[nRows];
+	      typeRow=-1;;
+	      break;
+	    } else if ((type&2)!=0) {
+	      value = -value;
+	    }
+	    if ((type&1)!=0)
+	      nInt++;
+	    rhsValue -= value*columnValue[kColumn];
+	    elementByRow2[nEls]=value;
+	    if (value>0.0)
+	      nPos++;
+	    largest=CoinMax(fabs(value),largest);
+	    smallest=CoinMin(fabs(value),smallest);
+	    column2[nEls++]=kColumn;
+	  }
+	  if (typeRow>=0 && smallest*1.0e7>largest) {
+	    double scale = sqrt(largest*smallest);
+	    if (fabs(rhsValue)>1.0e6*scale||
+		(rhsValue&&fabs(rhsValue)<1.0e-6*scale)) {
+	      scale=0.0;
+	    } else if (rhsValue) {
+	      scale=1.0/fabs(rhsValue);
+	    }
+	    if (scale) {
+	      rhs[nRows]=scale*rhsValue;
+	      for (CoinBigIndex k=rowStart2[nRows];k<nEls;k++) 
+		elementByRow2[k] *= scale;
+	      rowPos[nRows]=nPos;
+	      markedRow[nRows]=typeRow;
+	      rowBinary[nRows]=nInt;
+	      rowNumber[nRows++]=iRow;
+	      rowStart2[nRows]=nEls;
+	    } else {
+	      nEls=rowStart2[nRows];
+	    }
+	  }
+	}
+      }
+    }
+    memset(columnValue,0,numberColumns*sizeof(double));
+    double tolerance = 1.0e-9;
+    for (int iRow=0;iRow<nRows;iRow++) {
+      CoinBigIndex start = rowStart2[iRow];
+      CoinBigIndex end = rowStart2[iRow+1];
+      int n=0;
+      int nInt=rowBinary[iRow];
+      for (CoinBigIndex k=start;k<end;k++) {
+	int kColumn = column2[k];
+	double value = elementByRow2[k];
+	columnValue[kColumn]=value;
+	whichColumn[n++]=kColumn;
+      }
+      double rhsValue=rhs[iRow];
+      int nPos=rowPos[iRow];
+      int nNeg=n-nPos;
+      // initially only short integer rows
+      if (n>3)
+	nInt=0;
+      // for first try ignore integers!
+      nInt=0;
+      if (nInt) {
+      } else {
+	for (int jRow=iRow+1;jRow<nRows;jRow++) {
+	  CoinBigIndex start2 = rowStart2[jRow];
+	  CoinBigIndex end2 = rowStart2[jRow+1];
+	  int n2=end2-start2;
+	  int nPos2=rowPos[jRow];
+	  int nNeg2=n2-nPos2;
+	  int nInt2=rowBinary[jRow];
+	  double rhsValue2=rhs[jRow];
+	  // initially only short integer rows
+	  if (n2>3)
+	    nInt2=0;
+	  // for first try ignore integers!
+	  nInt2=0;
+	  if (nInt2) {
+	  } else {
+	    // continuous tests
+	    // -1 iRow may be stronger, +1 jRow may be stronger, 0 continue, 2 == els
+	    int way=2;
+	    if (rhsValue>rhsValue2+tolerance)
+	      way=1;
+	    else if (rhsValue2>rhsValue+tolerance)
+	      way=-1;
+	    if (nNeg2>nNeg) {
+	      // iRow can be stronger
+	      if (nPos2>nPos || way == 1) 
+		way=0;
+	      else
+		way=-1;
+	    } else if (nNeg2==nNeg) {
+	      // iRow can be either way
+	      if (nPos2>nPos) {
+		if (way!=-1)
+		  way=1;
+		else
+		  way=0;
+	      } else if (nPos2<nPos) { 
+		if (way!=1)
+		  way=-1;
+		else
+		  way=0;
+	      }
+	    } else {
+	      // jRow can be stronger
+	      if (nPos2<nPos || way==-1) 
+		way=0;
+	      else
+		way=1;
+	    }
+	    int nHitPos=0;
+	    int nHitNeg=0;
+	    if (way==-1) {
+	      // iRow may be stronger
+	      for (CoinBigIndex k2=start2;k2<end2;k2++) {
+		int kColumn = column2[k2];
+		double value = elementByRow2[k2];
+		double valueI=columnValue[kColumn];
+		if (value>valueI+1.0e-12) {
+		  way=0;
+		  break;
+		} else {
+		  if (valueI<0.0)
+		    nHitNeg++;
+		}
+	      }
+	      if (nHitNeg<nNeg2)
+		way=0;
+	    } else if (way==1) {
+	      // jRow may be stronger
+	      for (CoinBigIndex k2=start2;k2<end2;k2++) {
+		int kColumn = column2[k2];
+		double value = elementByRow2[k2];
+		double valueI=columnValue[kColumn];
+		if (value<valueI-1.0e-12) {
+		  way=0;
+		  break;
+		} else {
+		  if (valueI>0.0)
+		    nHitPos++;
+		}
+	      }
+	      if (nHitPos<nPos)
+		way=0;
+	    } else if (way==2) {
+	      // same number and rhs - could go either way
+	      CoinBigIndex k2;
+	      for (k2=start2;k2<end2;k2++) {
+		int kColumn = column2[k2];
+		double value = elementByRow2[k2];
+		if (value<columnValue[kColumn]-1.0e-12) {
+		  way=-1;
+		  break;
+		} else if (value>columnValue[kColumn]+1.0e-12) {
+		  way=1;
+		  break;
+		}
+	      }
+	      k2++;
+	      if (way==1) {
+		for (;k2<end2;k2++) {
+		  int kColumn = column2[k2];
+		  double value = elementByRow2[k2];
+		  double valueI=columnValue[kColumn];
+		  if (value<valueI-1.0e-12) {
+		    way=0;
+		    break;
+		  } else {
+		    if (valueI>0.0)
+		      nHitPos++;
+		  }
+		}
+		if (nHitPos<nPos)
+		  way=0;
+	      } else if (way==-1) {
+		for (;k2<end2;k2++) {
+		  int kColumn = column2[k2];
+		  double value = elementByRow2[k2];
+		  double valueI=columnValue[kColumn];
+		  if (value>valueI+1.0e-12) {
+		    way=0;
+		    break;
+		  } else {
+		    if (valueI<0.0)
+		      nHitNeg++;
+		  }
+		}
+		if (nHitNeg<nNeg2)
+		  way=0;
+	      }
+	    }
+#if CBC_USEFUL_PRINTING
+	    if (way) {
+	      int iRowX=rowNumber[iRow];
+	      int jRowX=rowNumber[jRow];
+	      CoinBigIndex startI = rowStart[iRowX];
+	      CoinBigIndex endI = startI + rowLength[iRowX];
+	      CoinBigIndex startJ = rowStart[jRowX];
+	      CoinBigIndex endJ = startJ + rowLength[jRowX];
+	      printf("way %d for row %d (%d - %d els) and %d (%d - %d els)\n",
+		     way,iRow,iRowX,endI-startI,jRow,jRowX,endJ-startJ);
+	      printf("%g <= ",rowLower[iRowX]);
+	      if (endI-startI<100&&endJ-startJ<10) {
+		for (CoinBigIndex k=startI;k<endI;k++) 
+		  printf("(%d,%g) ",column[k],elementByRow[k]);
+	      } else {
+		printf("something ");
+	      }
+	      printf("<= %g\n",rowUpper[iRowX]);
+	      printf("%g <= ",rowLower[jRowX]);
+	      if (endI-startI<100&&endJ-startJ<10) {
+		for (CoinBigIndex k=startJ;k<endJ;k++) 
+		  printf("(%d,%g) ",column[k],elementByRow[k]);
+	      } else {
+		printf("something ");
+	      }
+	      printf("<= %g\n",rowUpper[jRowX]);
+	    }
+#endif
+	  }
+	}
+      }
+      for (int j=0;j<n;j++) {
+	int kColumn = whichColumn[j];
+	columnValue[kColumn]=0.0;
+      }
+    }
+    delete [] rowNumber;
+    delete [] elementByRow2;
+    delete [] column2;
+    delete [] rowStart2;
+    delete [] marked;
+  }
+#endif
+  bool noStrengthening = false;
   for (int iPass=0;iPass<numberPasses;iPass++) {
     // Statistics
     int numberFixed=0;
@@ -3971,6 +5056,31 @@ CglPreProcess::modified(OsiSolverInterface * model,
     info.pass = iPass;
     info.options=0;
     int numberChangedThisPass=0;
+#if 1
+    // look at cliques every time
+    if ((options_&32)!=0) {
+      OsiSolverInterface * temp=cliqueIt(*newModel,0.0001);
+      if (temp) {
+#if CBC_USEFUL_PRINTING
+	printf("bigpass %d pass %d after cliques %d rows, before %d\n",
+	       iBigPass,iPass,temp->getNumRows(),newModel->getNumRows());
+#endif
+	if (temp->getNumRows()<newModel->getNumRows()) {
+	  numberChangedThisPass += newModel->getNumRows()-temp->getNumRows();
+	  delete newModel;
+	  newModel = temp;
+	  numberRows = newModel->getNumRows();
+	} else {
+	  delete temp;
+	}
+      } else {
+#if CBC_USEFUL_PRINTING
+	printf("bigpass %d pass %d no more cliques %d rows\n",
+	       iBigPass,iPass,newModel->getNumRows());
+#endif
+      }
+    }
+#endif
     /*
       needResolve    solution is stale
       rebuilt   constraint system deleted and recreated (implies initialSolve)
@@ -3994,15 +5104,56 @@ CglPreProcess::modified(OsiSolverInterface * model,
         // skip duplicate rows except once
         dupRow = dynamic_cast<CglDuplicateRow *> (generator_[iGenerator]);
 	cliqueGen = dynamic_cast<CglClique *> (generator_[iGenerator]);
-        if ((dupRow||cliqueGen)&&(iPass/*||iBigPass*/))
+        if (cliqueGen&&iPass)
+            continue;
+        if (dupRow&&(iPass||iBigPass))
             continue;
         probingCut = dynamic_cast<CglProbing *> (generator_[iGenerator]);
+#if CBC_USEFUL_PRINTING>0
+	double time1 = CoinCpuTime();
+#endif
 	if (!probingCut) {
 	  generator_[iGenerator]->generateCuts(*newModel,cs,info);
 	} else {
 	  info.options=64;
-          probingCut->setMode(4);
+          probingCut->setMode(useSolution ? 4 : 4|64);
+	  int saveMaxElements = probingCut->getMaxElementsRoot();
+	  int saveMaxProbe = probingCut->getMaxProbeRoot();
+	  int saveMaxLook = probingCut->getMaxLookRoot();
+	  if (!iBigPass&&!iPass&&(options_&(16|64))!=0) {
+	    noStrengthening = true;
+	    numberPasses=1;
+	    probingCut->setMaxProbeRoot(CoinMax(saveMaxProbe,1000));
+	    probingCut->setMaxElementsRoot(CoinMax(saveMaxElements,2000));
+	    probingCut->setMaxLookRoot(CoinMax(saveMaxLook,
+					       CoinMin(numberColumns,numberRows))/2);
+	    options_ &= ~16;
+	  } else if (iPass||(options_&64)==0) {
+	    // cut back
+	    probingCut->setMaxElementsRoot(probingCut->getMaxElements());
+	    probingCut->setMaxProbeRoot(probingCut->getMaxProbe());
+	    probingCut->setMaxLookRoot(probingCut->getMaxLook());
+	  }
 	  probingCut->generateCutsAndModify(*newModel,cs,&info);
+	  probingCut->setMaxElementsRoot(saveMaxElements);
+	  probingCut->setMaxProbeRoot(saveMaxProbe);
+	  probingCut->setMaxLookRoot(saveMaxLook);
+	  if (!iPass&&(!cs.sizeColCuts()||iBigPass>2))
+	    options_ &= ~64; // switch off heavy
+	}
+#if CBC_USEFUL_PRINTING>0
+	printf("Generator %d took %g seconds\n",
+	       iGenerator,CoinCpuTime()-time1);
+	printf("After probing1 %d row cuts and %d column cuts\n",
+	       cs.sizeRowCuts(),cs.sizeColCuts());
+#endif
+	if (cs.sizeColCuts()&&iPass<numberPasses-100&&!iBigPass) {
+	  // delete all row cuts for now????
+	  int n=cs.sizeRowCuts();
+	  for (int i=n-1;i>=0;i--)
+	    cs.eraseRowCut(i);
+	  for (int i=0;i<numberRows;i++)
+	    whichCut[i]=0;
 	}
 #if 1 //def CLIQUE_ANALYSIS
 	if (probingCut) {
@@ -4025,7 +5176,9 @@ CglPreProcess::modified(OsiSolverInterface * model,
         }
 	if (cliqueGen&&cs.sizeRowCuts()) {
 	  int n = cs.sizeRowCuts();
+#if CBC_USEFUL_PRINTING
 	  printf("%d clique cuts\n",n);
+#endif
 	  OsiSolverInterface * copySolver = newModel->clone();
 	  numberRows=copySolver->getNumRows();
 	  copySolver->applyCuts(cs);
@@ -4039,6 +5192,10 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	  dupCuts.setMode(8);
 	  OsiCuts cs2;
 	  dupCuts.generateCuts(*copySolver,cs2,info);
+#if CBC_USEFUL_PRINTING>0
+	  printf("After probing dupCuts %d row cuts and %d column cuts\n",
+	       cs2.sizeRowCuts(),cs2.sizeColCuts());
+#endif
 	  // -1 not used, -2 delete, -3 not clique
 	  const int * duplicate = dupCuts.duplicate();
 	  // -1 not used, >=0 earliest row affected
@@ -4070,11 +5227,15 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	  n -= nOther;
 	  int newNumberRows = numberRows-numberDrop+n;
 	  bool special = (cliqueGen->getMinViolation()==-3.0);
+#if CBC_USEFUL_PRINTING
 	  printf("could drop %d rows - current nrows %d other %d - new nrows %d\n",
 		 numberDrop,numberRows,nOther,newNumberRows);
+#endif
 	  if (n<=numberDrop||special) {
+#if CBC_USEFUL_PRINTING
 	    printf("Dropping rows current nrows %d - new nrows %d\n",
 		   numberRows,newNumberRows);
+#endif
 	    if (newNumberRows>numberRows) {
 	      // need new array
 	      delete [] whichCut;
@@ -4116,7 +5277,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	  //OsiRowCut & thisCut = cs.rowCut(i);
 	  //thisCut.print();
 	  //}
-	}
+	} 
       } else {
 #ifdef HEAVY_PROBING
         // special probing
@@ -4129,17 +5290,31 @@ CglPreProcess::modified(OsiSolverInterface * model,
         generator1.setMaxLook(100);
         generator1.setRowCuts(3);
 	if (heavyProbing) {
-	  generator1.setMaxElements(300);
+	  generator1.setMaxElements(400);
+	  //generator1.setMaxLook(10000);
 	  generator1.setMaxProbeRoot(model->getNumCols());
 	}
 	// out for now - think about cliques
         if(!generator1.snapshot(*newModel,NULL,false)) {
-          generator1.createCliques(*newModel,2,1000,true);
+          generator1.createCliques(*newModel,2,1000);
           // To get special stuff
           info.pass=4;
           CoinZeroN(whichCut,numberRows);
-          generator1.setMode(4);
+          generator1.setMode(16+4);
           generator1.generateCutsAndModify(*newModel,cs,&info);
+#if CBC_USEFUL_PRINTING>0
+	  printf("After probing clique stuff %d row cuts and %d column cuts\n",
+	       cs.sizeRowCuts(),cs.sizeColCuts());
+#endif
+	  // can we extend cliques?
+	  // make fake model
+	  OsiSolverInterface * fakeModel = generator1.cliqueModel(newModel,1);
+	  // if above added rows then take out duplicates
+	  OsiSolverInterface * fakeModel2 = cliqueIt(*fakeModel,0.0);
+	  delete fakeModel;
+	  //delete fakeModel2;
+	  delete newModel;
+	  newModel=fakeModel2;
 #ifdef CLIQUE_ANALYSIS
 	  printf("special probing\n");
 	  info.analyze(*newModel);
@@ -4172,7 +5347,8 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	Deleting all rows and rebuilding invalidates everything, initialSolve will
 	be required.
 	*/
-	needResolve = true ;
+	if (useSolution)
+	  needResolve = true ;
 	rebuilt = true ;
         // Easier to recreate entire matrix
         const CoinPackedMatrix * rowCopy = newModel->getMatrixByRow();
@@ -4188,12 +5364,52 @@ CglPreProcess::modified(OsiSolverInterface * model,
         for (iRow=0;iRow<numberRows;iRow++) {
 	  keepRow[iRow]=0;
           OsiRowCut * thisCut = whichCut[iRow];
-          whichCut[iRow]=NULL;
+          //whichCut[iRow]=NULL;
           if (rowLower[iRow]>-1.0e20||rowUpper[iRow]<1.0e20) {
 #if 0
 	    if (thisCut) {
-	      printf("Cut on row %d\n",iRow);
-	      thisCut->print();
+	      double * allColumns = new double[numberColumns];
+	      int which[]={0,8,11,19,21,29,30,38,42,61,77,90,104,105,7,37};
+	      memset(allColumns,0,numberColumns*sizeof(double));
+	      for (int k=0;k<sizeof(which)/sizeof(int);k++) {
+		allColumns[which[k]]=1.0;
+	      }
+	      double lb = thisCut->lb();
+	      double ub = thisCut->ub();
+	      CoinPackedVector row = thisCut->row();
+	      printf("Cut on row %d - %g <= ",iRow,lb);
+	      bool feas1=true;
+	      double sum1=0.0;
+	      for (int k = 0; k < row.getNumElements(); ++k) {
+		CoinBigIndex j = row.getIndices()[k];
+		double value = row.getElements()[k];
+		printf("(%d,%g) ",j,value);
+		sum1 += value*allColumns[j];
+	      }
+	      if (sum1<lb-1.0e-3||sum1>ub+1.0e-3) {
+		printf(" ******** ");
+		feas1 = false;
+	      }
+	      printf("<= %g\n",ub);
+	      printf("Old row %g <= ",rowLower[iRow]);
+	      bool feas2=true;
+	      double sum2=0.0;
+              int start=rowStart[iRow];
+	      int end = start + rowLength[iRow];
+	      for (int k = start; k < end; ++k) {
+		CoinBigIndex j = column[k];
+		double value = rowElements[k];
+		printf("(%d,%g) ",j,value);
+		sum2 += value*allColumns[j];
+	      }
+	      if (sum2<rowLower[iRow]-1.0e-3||sum2>rowUpper[iRow]+1.0e-3) {
+		printf(" ******** ");
+		feas2 = false;
+	      }
+	      printf("<= %g\n",rowUpper[iRow]);
+	      if (feas1 && !feas2)
+		abort();
+	      delete [] allColumns;
 	    }
 #endif
             if (!thisCut) {
@@ -4292,9 +5508,9 @@ CglPreProcess::modified(OsiSolverInterface * model,
 		      int interesting=0;
 		      double saveLo=lo;
 		      double saveUp=up;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 		      double nearestLo0=lo;
-            double nearestLo1=lo;
+		      double nearestLo1=lo;
 #endif
 		      double nearestUp0=up;
 		      double nearestUp1=up;
@@ -4305,7 +5521,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			double exact = lo/multiple;
 			if (fabs(exact-floor(exact+0.5))>1.0e-4) {
 			  interesting +=1;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  nearestLo0 = ceil(exact)*multiple;
 #endif
 			} 
@@ -4314,7 +5530,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			exact = lo/multiple;
 			if (fabs(exact-floor(exact+0.5))>1.0e-4) {
 			  interesting +=2;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  nearestLo1 = ceil(exact)*multiple;
 #endif
 			}
@@ -4336,7 +5552,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			} 
 		      }
 		      if (interesting) {
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			printf("Row %d interesting %d lo,up %g,%g singleton %d value %g bounds %g,%g - gcd %g\n",iRow,interesting,saveLo,saveUp,kInt,singletonValue,
 			       columnLower[kInt],columnUpper[kInt],multiple);
 			printf("Orig lo,up %g,%g %d\n",rowLower[iRow],rowUpper[iRow],end-start);
@@ -4349,13 +5565,13 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			printf("\n");
 #endif
 			if(columnLower[kInt]) {
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  printf("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n"); //think
 #endif
 			  interesting=0;
 			}
 			newValue = singletonValue;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			double newLoRhs = rowLower[iRow];
 			double newUpRhs = rowUpper[iRow];
 			if ((interesting&3)!=0) {
@@ -4364,24 +5580,24 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			}
 #endif
 			if (saveLo==saveUp&&((interesting&5)==5||(interesting&10)==10)) {
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  printf("INFEAS? ");
 #endif
 			  interesting=0; //ninfeas++;
 			}
 			if ((interesting&12)) {
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  double value2 = newValue;
 			  newUpRhs = nearestUp0;
 #endif
 			  newValue = nearestUp0-nearestUp1;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			  if (newValue!=value2) {
 			    printf("??? old newvalue %g ",newValue);
 			  }
 #endif
 			}
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			printf("guess is new lo %g, new up %g, new value %g\n",
 			       newLoRhs,newUpRhs,newValue);
 #endif
@@ -4393,7 +5609,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 		      if (!smallestSum&&interesting==2&&!saveLo&&saveUp>1.0e20) {
 			newValue = multiple*floor(exact);
 			newValue *= multiplier;
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 			printf("New coefficient for %d will be %g\n",kInt,newValue);
 #endif
 		      } else {
@@ -4425,7 +5641,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 			       rowLower[iRow],rowUpper[iRow]);
 		} else {
 		  // strengthened to zero!
-#ifdef CLP_INVESTIGATE
+#if CBC_USEFUL_PRINTING>1
 		  printf("CglPreProcess - element strenthened to zero!\n");
 #endif
 		  int * cols = CoinCopyOfArray(column+start,length);
@@ -4472,8 +5688,13 @@ CglPreProcess::modified(OsiSolverInterface * model,
                 }
                 if (n1!=nFree) 
 		  good=false;
+		if (noStrengthening && n > n1) {
+		  good=false;
+		  //printf("Skipping row %d strengthened row has %d (%d)\n",
+		  //	 iRow,n,n1);
+		}
                 if (good) {
-#if 0
+#if PRINT_DEBUG >1
                   printf("Original row %.8d %g <= ",iRow,rowLower[iRow]);
                   for ( i=0;i<n1;i++) 
 		    printf("%g * x%d ",rowElements[start+i],column[start+i]);
@@ -4510,6 +5731,27 @@ CglPreProcess::modified(OsiSolverInterface * model,
             }
           }
         }
+	// Get rid of all whichCut not in cs
+	std::sort(whichCut,whichCut+numberRows);
+	int nCuts=cs.sizeRowCuts();
+	OsiRowCut ** tempCuts = new OsiRowCut * [nCuts+1];
+	for (int i=0;i<nCuts;i++)
+	  tempCuts[i]=cs.rowCutPtr(i);
+	std::sort(tempCuts,tempCuts+nCuts);
+	tempCuts[nCuts]=CoinMax(whichCut[numberRows-1],tempCuts[nCuts-1])+1;
+	int iCut=0;
+	void * cut = tempCuts[0];
+	for (int i=0;i<numberRows;i++) {
+	  OsiRowCut * thisCut = whichCut[i];
+	  if (!thisCut)
+	    continue;
+	  while (cut<thisCut)
+	    cut = tempCuts[++iCut];
+	  if (cut>thisCut) 
+	    delete thisCut;
+	  whichCut[i]=NULL;
+	}
+	delete [] tempCuts;
 	if (rowType_) {
 	  assert (numberRowType_==numberRows);
 	  int numberRowType_=0;
@@ -4538,6 +5780,10 @@ CglPreProcess::modified(OsiSolverInterface * model,
         newModel->deleteRows(numberRows,del);
         newModel->addRows(build);
         numberRows = newModel->getNumRows();
+#if CBC_USEFUL_PRINTING>0
+	printf("After build %d rows and %d columns (%d rows strengthened)\n",
+	       numberRows,newModel->getNumCols(),numberStrengthened);
+#endif
 	if (basis) {
 	  assert (numberRows==basis->getNumArtificial());
 	  newModel->setWarmStart(basis);
@@ -4575,7 +5821,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	// we could look harder for infeasibilities 
 	assert (info.numberVariables()==numberColumns);
 	int number01 = info.numberIntegers();
-	const cliqueEntry * entry = info.fixEntries();
+	const CliqueEntry * entry = info.fixEntries();
 	const int * toZero = info.toZero();
 	const int * toOne = info.toOne();
 	const int * which = info.integerVariable();
@@ -4750,7 +5996,7 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	/*
 	  Nontrivial bound changes will invalidate current solution.
 	*/
-	if (thisCut->effectiveness() > 1.0) {
+	if (thisCut->effectiveness() > 1.0 && useSolution) {
 	  needResolve = true ;
 	}
 	const CoinPackedVector & lbs = thisCut->lbs() ;
@@ -4826,7 +6072,15 @@ CglPreProcess::modified(OsiSolverInterface * model,
 	  //dynamic_cast<CoinWarmStartBasis *>(newModel->getEmptyWarmStart()) ;
 	  //newModel->setWarmStart(slack);
 	  //delete slack ;
+	  bool saveHint;
+	  OsiHintStrength saveStrength;
+	  newModel->getHintParam(OsiDoPresolveInInitial,saveHint,saveStrength);
+	  // Do presolves
+	  if ((numberFixed+numberTwo)*4>numberColumns)
+	    newModel->setHintParam(OsiDoPresolveInInitial,true,OsiHintTry);
+	  newModel->setHintParam(OsiDoDualInInitial,true,OsiHintTry);
 	  newModel->initialSolve() ;
+	  newModel->setHintParam(OsiDoPresolveInInitial,saveHint,saveStrength);
 	} else {
 	  newModel->resolve() ;
 	}
@@ -4852,9 +6106,10 @@ CglPreProcess::modified(OsiSolverInterface * model,
       break;
     numberChanges +=  numberChangedThisPass;
     if (iPass<numberPasses-1) {
-      if ((!numberFixed&&numberChangedThisPass<1000*(numberRows+numberColumns))||iPass==numberPasses-2) {
+      int multiplier = (numberPasses>10) ? numberRows+1000 : 1;
+      if ((!numberFixed&&numberChangedThisPass*multiplier<numberRows+numberColumns)||iPass==numberPasses-2) {
         // do special probing at end - but not if very last pass
-	if (iBigPass<numberSolvers_-1) {
+	if (iBigPass<numberSolvers_-1 && numberPasses > 4) {
 	  firstGenerator=-1;
 	  lastGenerator=0;
 	}
@@ -5293,7 +6548,7 @@ CglPreProcess::update(const OsiPresolve * pinfo,
   if (rowType_) {
     const int * original = pinfo->originalRows();
     int numberRows = solver->getNumRows();
-#ifdef COIN_DEVELOP
+#if CBC_USEFUL_PRINTING>1
     int nMarked1=0;
     for (int i=0;i<pinfo->getNumRows();i++) {
       if (rowType_[i])
@@ -5377,7 +6632,9 @@ CglPreProcess::someFixed(OsiSolverInterface & model,
     numberToFix = static_cast<int> ((numberColumns-numberContinuous) *(1.0-fractionToKeep));
   numberToFix = CoinMax(numberToFix,numberThrow);
   numberToFix = CoinMin(number,numberToFix);
+#if CBC_USEFUL_PRINTING
   printf("%d columns fixed\n",numberToFix);
+#endif
   for (i=0;i<numberToFix;i++) {
     int iColumn = sort[i];
     double value = solution[iColumn];
@@ -5748,7 +7005,7 @@ CglPreProcess::cliqueIt(OsiSolverInterface & model,
   const double *rowLower = model.getRowLower() ;
   const double *rowUpper = model.getRowUpper() ;
   int numberRows = model.getNumRows() ;
-  //int numberColumns = model.getNumCols() ;
+  int numberColumns = model.getNumCols() ;
   // Column copy of matrix
   //const double * element = model.getMatrixByCol()->getElements();
   //const int * row = model.getMatrixByCol()->getIndices();
@@ -5760,51 +7017,143 @@ CglPreProcess::cliqueIt(OsiSolverInterface & model,
   const int * column = matrixByRow.getIndices();
   const CoinBigIndex * rowStart = matrixByRow.getVectorStarts();
   const int * rowLength = matrixByRow.getVectorLengths();
-  char * type = new char [numberRows];
-  int numberElements=0;
+  char * type = new char [numberRows+3*numberColumns];
+  char * numberInColumn = type+numberRows;
+  char * negativeInColumn = numberInColumn+numberColumns;
+  char * positiveInColumn = negativeInColumn+numberColumns;
+  memset(numberInColumn,0,3*numberColumns);
+  // First pass to mark columns
   int numberCliques=0;
+  //int numberOddCliques=0;
   for (int i=0;i<numberRows;i++) {
     type[i]=-1;
-    if (rowUpper[i]!=1.0||
-	(rowLower[i]>0.0&&rowLower[i]!=1.0))
-      continue;
-    bool possible = true;
-    CoinBigIndex start = rowStart[i];
-    CoinBigIndex end = start + rowLength[i];
-    int n=0;
-    for (CoinBigIndex j=start;j<end;j++) {
-      int iColumn = column[j];
-      if (upper[iColumn]==1.0&&lower[iColumn]==0.0&&
-	  model.isInteger(iColumn)&&elementByRow[j]==1.0) {
-	n++;
-      } else {
+    double rupper=rowUpper[i];
+    double rlower=rowLower[i];
+    if (rupper==1.0&&(rlower<=0.0||rlower==1.0)) {
+      bool possible = true;
+      CoinBigIndex start = rowStart[i];
+      CoinBigIndex end = start + rowLength[i];
+      int n=0;
+      for (CoinBigIndex j=start;j<end;j++) {
+	int iColumn = column[j];
+	if (upper[iColumn]==1.0&&lower[iColumn]==0.0&&
+	    model.isInteger(iColumn)&&elementByRow[j]==1.0) {
+	  n++;
+	} else {
+	  possible=false;
+	  break;
+	}
+      }
+      if (n>1000)
 	possible=false;
-	break;
+      if (possible) {
+	for (CoinBigIndex j=start;j<end;j++) {
+	  int iColumn = column[j];
+	  if (numberInColumn[iColumn]<100)
+	    numberInColumn[iColumn]++;
+	}
+	numberCliques++;
+	if (rowLower[i]>0.0)
+	  type[i]=1;
+	else
+	  type[i]=0;
       }
-    }
-    // temp fix to get working faster for client
-    if (rowLower[i]>0.0||n!=2)
-      possible=false;
-    if (possible) {
-      numberElements+=n;
-      numberCliques++;
-      if (rowLower[i]>0.0)
-	type[i]=1;
+    } else if ((rupper==0.0||rlower==0.0)&&rowLength[i]==2) {
+      int multiplier;
+      if (rupper==0.0&&rlower<-1.0e20)
+	multiplier=1;
+      else if (rlower==0.0&&rupper>1.0e20)
+	multiplier=-1;
       else
-	type[i]=0;
+	multiplier=0;
+      if (multiplier) {
+	CoinBigIndex start = rowStart[i];
+	if (fabs(elementByRow[start])==1.0&&
+	    fabs(elementByRow[start+1])==1.0) {
+	  if (elementByRow[start]*elementByRow[start+1]==-1.0) {
+	    int iPColumn,iNColumn;
+	    if (multiplier*elementByRow[start]==1.0) {
+	      iPColumn = column[start];
+	      iNColumn = column[start+1];
+	    } else {
+	      iNColumn = column[start];
+	      iPColumn = column[start+1];
+	    }
+	    if (upper[iPColumn]==1.0&&lower[iPColumn]==0.0&&
+		model.isInteger(iPColumn)&&
+		upper[iNColumn]==1.0&&lower[iNColumn]==0.0&&
+		model.isInteger(iNColumn)) {
+	      type[i]=-2;
+	      if (positiveInColumn[iPColumn]<100)
+		positiveInColumn[iPColumn]++;
+	      if (negativeInColumn[iNColumn]<100)
+		negativeInColumn[iNColumn]++;
+	    }
+	  }
+	}
+      }
+    }
+  }
+#if CBC_USEFUL_PRINTING>0
+  // look at odd cliques
+  int nOdd=0;
+  for (int iColumn=0;iColumn<numberColumns;iColumn++) {
+    if (!numberInColumn[iColumn]&&negativeInColumn[iColumn]>1) {
+      nOdd++;
+    }
+  }
+  if (nOdd)
+    printf("%d possible odd cliques?\n",nOdd);
+#endif
+  double numberElements=0;
+  if (numberCliques>CoinMax(1,static_cast<int>(cliquesNeeded*numberRows))) {
+    numberCliques=0;
+    for (int i=0;i<numberRows;i++) {
+      if (type[i]>=0) {
+	bool possible = true;
+	int n=0;
+	CoinBigIndex start = rowStart[i];
+	CoinBigIndex end = start + rowLength[i];
+	for (CoinBigIndex j=start;j<end;j++) {
+	  int iColumn = column[j];
+	  if (numberInColumn[iColumn]<2) {
+	    possible=false;
+	    break;
+	  } else {
+	    n++;
+	  }
+	}
+	if (possible) {
+	  numberElements+=n*(n-1); 
+	  numberCliques++;
+	} else {
+	  type[i]=-1;
+	}
+      }
     }
   }
   OsiSolverInterface * newSolver = NULL;
   if (numberCliques>CoinMax(1,static_cast<int>(cliquesNeeded*numberRows))) {
+    if (numberElements<5.0e7&&numberElements<numberCliques*100) {
+#if CBC_USEFUL_PRINTING>0
+      printf("%d cliques needing 2 * %g ints\n",
+	     numberCliques,numberElements);
+#endif
 #ifdef BRON_TIMES
-    double time1 = CoinCpuTime();
+      double time1 = CoinCpuTime();
 #endif
-    CglBK bk(model,type,numberElements);
-    bk.bronKerbosch();
-    newSolver = bk.newSolver(model);
+      CglBK bk(model,type,static_cast<int>(numberElements));
+      bk.bronKerbosch();
+      newSolver = bk.newSolver(model);
 #ifdef BRON_TIMES
-    printf("Time %g - bron called %d times\n",CoinCpuTime()-time1,numberTimesX);
+      printf("Time %g - bron called %d times\n",CoinCpuTime()-time1,numberTimesX);
+#endif
+    } else {
+#if CBC_USEFUL_PRINTING>0
+      printf("*** %d cliques needing 2 * %g ints\n",
+	     numberCliques,numberElements);
 #endif
+    }
   }
   delete [] type;
   return newSolver;
@@ -5854,6 +7203,7 @@ CglBK::CglBK(const OsiSolverInterface & model, const char * rowType,
   originalRow_ = new int [numberElements];
   dominated_ = new int [numberRows_];
   CoinZeroN(dominated_,numberRows_);
+  //int inputNumber=numberElements;
   numberElements=0;
   numberPossible_=0;
   rowType_=rowType;
@@ -5940,6 +7290,7 @@ CglBK::CglBK(const OsiSolverInterface & model, const char * rowType,
 	int iRow = row[j];
 	if (rowType[iRow]>=0&&!dominated_[iRow]) {
 	  assert(element[j]==1.0);
+#if 0
 	  CoinBigIndex r=rowStart[iRow];
 	  assert (rowLength[iRow]==2);
 	  int kColumn = column[r];
@@ -5947,6 +7298,16 @@ CglBK::CglBK(const OsiSolverInterface & model, const char * rowType,
 	    kColumn=column[r+1];
 	  originalRow_[numberElements]=iRow;
 	  otherColumn_[numberElements++]=kColumn;
+#else
+	  for (CoinBigIndex r=rowStart[iRow];r<rowStart[iRow]+rowLength[iRow];r++) {
+	    int kColumn = column[r];
+	    if (kColumn!=iColumn) {
+	      originalRow_[numberElements]=iRow;
+	      otherColumn_[numberElements++]=kColumn;
+	    }
+	  }
+	    
+#endif
 	}
       }
       if (numberElements>start_[iColumn]) {
@@ -5954,6 +7315,7 @@ CglBK::CglBK(const OsiSolverInterface & model, const char * rowType,
       }
     }
   }
+  //printf("input number %d, computed number %d\n",inputNumber,numberElements);
   start_[numberColumns_]=numberElements;
   numberCandidates_=numberPossible_;
   numberIn_=0;
@@ -6062,7 +7424,12 @@ CglBK::bronKerbosch()
 	  int jColumn = otherColumn_[j];
 	  if (mark_[jColumn]) {
 	    int iRow=originalRow_[j];
-	    dominated_[iRow]++;
+	    /* only get rid of <= cliques
+	       can we find dominating clique??
+	       should really look further if dominating clique also == 
+	       or could make that == */
+	    if (rowType_[iRow]==0)
+	      dominated_[iRow]++;
 	  }
 	}
       }
@@ -6208,8 +7575,10 @@ CglBK::newSolver(const OsiSolverInterface & model)
     }
   }
   int nAdd=cliqueMatrix_->getNumRows();
+#if CBC_USEFUL_PRINTING>0
   printf ("%d rows can be deleted with %d new cliques\n",
 	  nDelete,nAdd);
+#endif
 
   OsiSolverInterface * newSolver = NULL;
   if (nDelete>nAdd) {
@@ -6227,6 +7596,12 @@ CglBK::newSolver(const OsiSolverInterface & model)
     //const int * rowLength = cliqueMatrix_->getVectorLengths();
     assert (cliqueMatrix_->getNumElements()==rowStart[nAdd]);
     newSolver->addRows(nAdd,rowStart,column,elementByRow,lower,upper);
+#if PRINT_DEBUG
+    for (int i=0;i<nAdd;i++) {
+      if (rowStart[i+1]-rowStart[i]>10)
+	printf("Clique %d has %d entries\n",i,rowStart[i+1]-rowStart[i]);
+    }
+#endif
     delete [] lower;
     delete [] upper;
   }
diff --git a/src/CglPreProcess/CglPreProcess.hpp b/src/CglPreProcess/CglPreProcess.hpp
index 58c6e4f..65c04ca 100644
--- a/src/CglPreProcess/CglPreProcess.hpp
+++ b/src/CglPreProcess/CglPreProcess.hpp
@@ -347,6 +347,8 @@ private:
       2 - don't do probing
       4 - don't do duplicate rows
       8 - don't do cliques
+      16 - some heavy probing options
+      64 - very heavy probing
   */
   int options_;
   /** Row types (may be NULL) 
diff --git a/src/CglPreProcess/Makefile.in b/src/CglPreProcess/Makefile.in
index 1f4e4da..fc93dd5 100644
--- a/src/CglPreProcess/Makefile.in
+++ b/src/CglPreProcess/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglProbing/CglProbing.cpp b/src/CglProbing/CglProbing.cpp
index 59c1932..e569995 100644
--- a/src/CglProbing/CglProbing.cpp
+++ b/src/CglProbing/CglProbing.cpp
@@ -1,5 +1,4 @@
-// $Id: CglProbing.cpp 1202 2014-03-17 13:58:06Z forrest $
-
+// $Id: CglProbing.cpp 1321 2016-01-02 09:46:06Z forrest $
 // Copyright (C) 2002, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -1336,11 +1335,12 @@ int CglProbing::generateCutsAndModify(const OsiSolverInterface & si,
   }
   int saveMode = mode_;
   bool rowCliques=false;
-  if (!mode_) {
+  if (!(mode_&15)) {
     if (info->pass!=4||info->inTree) {
       mode_=1;
     } else {
       saveMode=1; // make sure do just once
+      mode_=0;
       rowCliques=true;
     }
   }
@@ -1651,7 +1651,6 @@ int CglProbing::gutsOfGenerateCuts(const OsiSolverInterface & si,
   if (fabs(cutoff)>1.0e30)
     assert (cutoff>1.0e30);
   int mode=mode_;
-  
   int nCols=si.getNumCols(); 
 
   // get integer variables
@@ -1867,7 +1866,7 @@ int CglProbing::gutsOfGenerateCuts(const OsiSolverInterface & si,
 	if (info->strengthenRow&&!info->pass&&(rowLower[i]<-1.0e20||rowUpper[i]>1.0e20)) {
 	  int nPlus=0;
 	  int nMinus=0;
-	  for (CoinBigIndex j=rowStart[i];j<rowStart[i+1];j++) {
+	  for (CoinBigIndex j=rowStart[i];j<rowStart[i]+rowLength[i];j++) {
 	    int jColumn=column[j];
 	    if (intVar[jColumn]&&colLower[jColumn]==0.0&&colUpper[jColumn]==1.0) {
 	      double value=elements[j];
@@ -1885,7 +1884,7 @@ int CglProbing::gutsOfGenerateCuts(const OsiSolverInterface & si,
 	  double effectiveness=0.0;
 	  if (nPlus==1&&rowUpper[i]>0.0&&rowUpper[i]<1.0e10) {
 	    // can make element smaller
-	    for (CoinBigIndex j=rowStart[i];j<rowStart[i+1];j++) {
+	    for (CoinBigIndex j=rowStart[i];j<rowStart[i]+rowLength[i];j++) {
 	      double value=elements[j];
 	      if (value>0.0) {
 		elements[j] -= rowUpper[i];
@@ -1897,7 +1896,7 @@ int CglProbing::gutsOfGenerateCuts(const OsiSolverInterface & si,
 	    rowUpper[i]=0.0;
 	  } else if (nMinus==1&&rowLower[i]<0.0&&rowLower[i]>-1.0e10) {
 	    // can make element smaller in magnitude
-	    for (CoinBigIndex j=rowStart[i];j<rowStart[i+1];j++) {
+	    for (CoinBigIndex j=rowStart[i];j<rowStart[i]+rowLength[i];j++) {
 	      double value=elements[j];
 	      if (value<0.0) {
 		elements[j] -= rowLower[i];
@@ -2922,6 +2921,29 @@ int CglProbing::gutsOfGenerateCuts(const OsiSolverInterface & si,
   }
   return ninfeas;
 }
+// Choose tighter bounds
+static void cleanBounds(int way,int & nFix,int * index,double * element)
+{
+  CoinSort_2(index,index+nFix,element);
+  int last=-1;
+  int n=0;
+  for (int i=0;i<nFix;i++) {
+    if (index[i]>last) {
+      index[n]=index[i];
+      element[n++]=element[i];
+      last=index[i];
+    } else if (way>0) {
+      // tighter ub
+      if (element[n-1]>element[i]) 
+	element[n-1]=element[i];
+    } else {
+      // tighter lb
+      if (element[n-1]<element[i]) 
+	element[n-1]=element[i];
+    }
+  }
+  nFix=n;
+}
 // Does probing and adding cuts
 int CglProbing::probe( const OsiSolverInterface & si, 
 		       const OsiRowCutDebugger *
@@ -3008,6 +3030,11 @@ int CglProbing::probe( const OsiSolverInterface & si,
     nRowsFake=nRows;
   }
   row_cut rowCut(nRowsFake, !info->inTree);
+  row_cut * rowCutFake = NULL;
+  if ((mode_&8)!=0) {
+    // redo to be more compact
+    rowCutFake = new row_cut(10000, !info->inTree);
+  }
   totalTimesCalled_++;
   const int * column = rowCopy->getIndices();
   const CoinBigIndex * rowStart = rowCopy->getVectorStarts();
@@ -3256,7 +3283,13 @@ int CglProbing::probe( const OsiSolverInterface & si,
 	}
       }
     }
-    int leftTotalStack=maxStack*CoinMax(200,maxProbe);
+    double leftTotalStackD=maxStack;
+    leftTotalStackD *= CoinMax(200,maxProbe);
+    int leftTotalStack;
+    if (leftTotalStackD<COIN_INT_MAX)
+      leftTotalStack=static_cast<int>(leftTotalStackD);
+    else
+      leftTotalStack=COIN_INT_MAX;
 #ifdef PROBING5
     if (!info->inTree&&!info->pass)
       leftTotalStack = 1234567890;
@@ -4544,6 +4577,26 @@ int CglProbing::probe( const OsiSolverInterface & si,
               break;
             }
           }
+	  if (rowCutFake&&!notFeasible&&iway==1) {
+	    assert (j==stackC[0]);
+	    // add to cliques
+	    for (istackC=1;istackC<nstackC;istackC++) {
+	      int icol=stackC[istackC];
+	      // for now back to just 0-1
+	      if (!colUpper[icol]&&!saveL[istackC]&&saveU[istackC]==1.0) {
+		OsiRowCut rc;
+		rc.setLb(-COIN_DBL_MAX);
+		rc.setUb(1.0);
+		index[0]=icol;
+		element[0]=1.0;
+		index[1]=j;
+		element[1]= 1.0;
+		rc.setRow(2,index,element,false);
+		rowCutFake->addCutIfNotDuplicate(rc);
+		//printf("XX x%d + x%d <= 1\n",j,icol);
+	      }
+	    }
+	  }
 	  if (!notFeasible&&saveFixingInfo) {
 	    // save fixing info
 	    assert (j==stackC[0]);
@@ -4592,6 +4645,7 @@ int CglProbing::probe( const OsiSolverInterface & si,
           }
           if (nFix) {
             nTot=nFix;
+	    cleanBounds(1,nFix,index,element);
             cc.setUbs(nFix,index,element);
             nFix=0;
           }
@@ -4611,6 +4665,7 @@ int CglProbing::probe( const OsiSolverInterface & si,
           }
           if (nFix) {
             nTot+=nFix;
+	    cleanBounds(-1,nFix,index,element);
             cc.setLbs(nFix,index,element);
           }
           // could tighten continuous as well
@@ -4670,11 +4725,14 @@ int CglProbing::probe( const OsiSolverInterface & si,
                   // create cut
                   OsiRowCut rc;
                   rc.setLb(-COIN_DBL_MAX);
-                  rc.setUb(colUpper[icol]-down*boundChange);
+		  double newUb = colUpper[icol]-down*boundChange;
+		  if (!intVar[icol]&&newUb>1.0e3)
+		    newUb += 1.0e-7*newUb;
+                  rc.setUb(newUb);
                   index[0]=icol;
                   element[0]=1.0;
                   index[1]=j;
-                  element[1]= - boundChange;
+                  element[1] = -boundChange;
                   // effectiveness is how far j moves
                   double newSol = (colsol[icol]-colUpper[icol])/
                     boundChange;
@@ -4696,12 +4754,15 @@ int CglProbing::probe( const OsiSolverInterface & si,
                      + boundChange*solMove-primalTolerance_)) {
                   // create cut
                   OsiRowCut rc;
-                  rc.setLb(colLower[icol]-down*boundChange);
+		  double newLb = colLower[icol]-down*boundChange;
+		  if (!intVar[icol]&&fabs(newLb)>1.0e3)
+		    newLb -= 1.0e-7*fabs(newLb);
+                  rc.setLb(newLb);
                   rc.setUb(COIN_DBL_MAX);
                   index[0]=icol;
                   element[0]=1.0;
                   index[1]=j;
-                  element[1]=- boundChange;
+                  element[1] = -boundChange;
                   // effectiveness is how far j moves
                   double newSol = (colsol[icol]-colLower[icol])/
                     boundChange;
@@ -5170,6 +5231,7 @@ int CglProbing::probe( const OsiSolverInterface & si,
               }
               if (nFix) {
                 nTot=nFix;
+		cleanBounds(-1,nFix,index,element);
                 cc.setLbs(nFix,index,element);
                 nFix=0;
               }
@@ -5230,6 +5292,7 @@ int CglProbing::probe( const OsiSolverInterface & si,
               }
               if (nFix) {
                 nTot+=nFix;
+		cleanBounds(1,nFix,index,element);
                 cc.setUbs(nFix,index,element);
               }
               // could tighten continuous as well
@@ -5264,11 +5327,14 @@ int CglProbing::probe( const OsiSolverInterface & si,
                   // create cut
                   OsiRowCut rc;
                   rc.setLb(-COIN_DBL_MAX);
-                  rc.setUb(colUpper[icol]+up*boundChange);
+		  double newUb = colUpper[icol]+up*boundChange;
+		  if (!intVar[icol]&&newUb>1.0e3)
+		    newUb += 1.0e-7*newUb;
+                  rc.setUb(newUb);
                   index[0]=icol;
                   element[0]=1.0;
                   index[1]=j;
-                  element[1]= + boundChange;
+                  element[1] = +boundChange;
                   // effectiveness is how far j moves
                   double newSol = (colsol[icol]-colUpper[icol])/
                     boundChange;
@@ -5290,12 +5356,15 @@ int CglProbing::probe( const OsiSolverInterface & si,
                      + boundChange*solMove-primalTolerance_)) {
                   // create cut
                   OsiRowCut rc;
-                  rc.setLb(colLower[icol]+up*boundChange);
+		  double newLb = colLower[icol]+up*boundChange;
+		  if (!intVar[icol]&&fabs(newLb)>1.0e3)
+		    newLb -= 1.0e-7*fabs(newLb);
+                  rc.setLb(newLb);
                   rc.setUb(COIN_DBL_MAX);
                   index[0]=icol;
                   element[0]=1.0;
                   index[1]=j;
-                  element[1]= + boundChange;
+                  element[1] = +boundChange;
                   // effectiveness is how far j moves
                   double newSol = (colsol[icol]-colLower[icol])/
                     boundChange;
@@ -5803,6 +5872,18 @@ int CglProbing::probe( const OsiSolverInterface & si,
     }
   }
 #endif
+  if (rowCutFake) {
+    numberCliques_ = rowCutFake->numberCuts();
+    CoinBigIndex numberElements = 2*numberCliques_;
+    cliqueEntry_  = new CliqueEntry [numberElements];
+    int * column = reinterpret_cast<int *>(cliqueEntry_);
+    numberElements = 0;
+    for (int iCut=0;iCut<numberCliques_;iCut++) {
+      column[numberElements++]=rowCutFake->cut(iCut)->row().getIndices()[0];
+      column[numberElements++]=rowCutFake->cut(iCut)->row().getIndices()[1];
+    }
+  }
+  delete rowCutFake;
   return (ninfeas);
 }
 // Does probing and adding cuts
@@ -5843,7 +5924,13 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
   int * cliqueStack=NULL;
   int * cliqueCount=NULL;
   int * to_01=NULL;
+  int * cliqueAdd = NULL;
+  int maxCliqueAdded=nCols+nRows;
+  int numberCliqueAdded=0;
+  int * cliqueAdd2 = NULL;
   if (!mode_) {
+    cliqueAdd = new int [2*maxCliqueAdded];
+    cliqueAdd2 = cliqueAdd + maxCliqueAdded;
     to_01 = new int[nCols];
     cliqueStack = new int[numberCliques_];
     cliqueCount = new int[numberCliques_];
@@ -6619,6 +6706,7 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 	      }
 	      if (nFix) {
 		nTot=nFix;
+		cleanBounds(1,nFix,index,element);
 		cc.setUbs(nFix,index,element);
 		nFix=0;
 	      }
@@ -6638,6 +6726,7 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 	      }
 	      if (nFix) {
 		nTot+=nFix;
+		cleanBounds(-1,nFix,index,element);
 		cc.setLbs(nFix,index,element);
 	      }
 	      // could tighten continuous as well
@@ -6729,11 +6818,14 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		    // create cut
 		    OsiRowCut rc;
 		    rc.setLb(-COIN_DBL_MAX);
-		    rc.setUb(colUpper[icol]-down*boundChange);
+		    double newUb = colUpper[icol]-down*boundChange;
+		    if (!intVar[icol]&&newUb>1.0e3)
+		      newUb += 1.0e-7*newUb;
+		    rc.setUb(newUb);
 		    index[0]=icol;
 		    element[0]=1.0;
 		    index[1]=j;
-		    element[1]= - boundChange;
+		    element[1] = -boundChange;
 		    // effectiveness is how far j moves
 		    double newSol = (colsol[icol]-colUpper[icol])/
 		      boundChange;
@@ -6756,12 +6848,15 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		      + boundChange*solMove-primalTolerance_)) {
 		    // create cut
 		    OsiRowCut rc;
-		    rc.setLb(colLower[icol]-down*boundChange);
+		    double newLb = colLower[icol]-down*boundChange;
+		    if (!intVar[icol]&&fabs(newLb)>1.0e3)
+		      newLb -= 1.0e-7*fabs(newLb);
+		    rc.setLb(newLb);
 		    rc.setUb(COIN_DBL_MAX);
 		    index[0]=icol;
 		    element[0]=1.0;
 		    index[1]=j;
-		    element[1]=- boundChange;
+		    element[1] = -boundChange;
 		    // effectiveness is how far j moves
 		    double newSol = (colsol[icol]-colLower[icol])/
 		      boundChange;
@@ -6793,6 +6888,13 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
                   // restore
                   cliqueCount[iClique]= cliqueStart_[iClique+1]-cliqueStart_[iClique];
                   if (!size) {
+		    if (numberCliqueAdded<maxCliqueAdded) {
+		      printf("Can add %d (going to 0) to clique %d (%d entries)\n",
+			   j,iClique,cliqueCount[iClique]);
+		      cliqueAdd[numberCliqueAdded]=j;
+		      cliqueAdd2[numberCliqueAdded]=iClique;
+		      numberCliqueAdded++;
+		    }
                     if (logLevel_>1)
                       printf("** could extend clique by adding j!\n");
                   }
@@ -6997,6 +7099,7 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		  }
 		  if (nFix) {
 		    nTot=nFix;
+		    cleanBounds(-1,nFix,index,element);
 		    cc.setLbs(nFix,index,element);
 		    nFix=0;
 		  }
@@ -7019,6 +7122,7 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		  }
 		  if (nFix) {
 		    nTot+=nFix;
+		    cleanBounds(1,nFix,index,element);
 		    cc.setUbs(nFix,index,element);
 		  }
 		  // could tighten continuous as well
@@ -7085,11 +7189,14 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		    // create cut
 		    OsiRowCut rc;
 		    rc.setLb(-COIN_DBL_MAX);
-		    rc.setUb(colUpper[icol]+up*boundChange);
+		    double newUb = colUpper[icol]+up*boundChange;
+		    if (!intVar[icol]&&newUb>1.0e3)
+		      newUb += 1.0e-7*newUb;
+		    rc.setUb(newUb);
 		    index[0]=icol;
 		    element[0]=1.0;
 		    index[1]=j;
-		    element[1]= + boundChange;
+		    element[1] = +boundChange;
 		    // effectiveness is how far j moves
 		    double newSol = (colsol[icol]-colUpper[icol])/
 		      boundChange;
@@ -7112,12 +7219,15 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
 		      + boundChange*solMove-primalTolerance_)) {
 		    // create cut
 		    OsiRowCut rc;
-		    rc.setLb(colLower[icol]+up*boundChange);
+		    double newLb = colLower[icol]+up*boundChange;
+		    if (!intVar[icol]&&fabs(newLb)>1.0e3)
+		      newLb -= 1.0e-7*fabs(newLb);
+		    rc.setLb(newLb);
 		    rc.setUb(COIN_DBL_MAX);
 		    index[0]=icol;
 		    element[0]=1.0;
 		    index[1]=j;
-		    element[1]= + boundChange;
+		    element[1] = +boundChange;
 		    // effectiveness is how far j moves
 		    double newSol = (colsol[icol]-colLower[icol])/
 		      boundChange;
@@ -7147,6 +7257,13 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
                   // restore
                   cliqueCount[iClique]= cliqueStart_[iClique+1]-cliqueStart_[iClique];
                   if (!size) {
+		    if (numberCliqueAdded<maxCliqueAdded) {
+		      printf("Can add %d (going to 1) to clique %d (%d entries)\n",
+			   j,iClique,cliqueCount[iClique]);
+ 		      cliqueAdd[numberCliqueAdded]=j|0x80000000;
+		      cliqueAdd2[numberCliqueAdded]=iClique;
+		      numberCliqueAdded++;
+		    }
                     if (logLevel_>1)
                       printf("** could extend clique by adding j!\n");
                   }
@@ -7325,9 +7442,101 @@ int CglProbing::probeCliques( const OsiSolverInterface & si,
       }
     }
   }
+  if (numberCliqueAdded) {
+    CoinSort_2(cliqueAdd2,cliqueAdd2+numberCliqueAdded,cliqueAdd);
+    // do cliqueStart and cliqueEntry
+    int numberEntries = cliqueStart_[numberCliques_];
+    numberEntries += numberCliqueAdded;
+    CliqueEntry * entry = new CliqueEntry [numberEntries];
+    // use cliqueCount
+    memset(cliqueCount,0,numberCliques_*sizeof(int));
+    for (int i=0;i<numberCliqueAdded;i++) {
+      cliqueCount[cliqueAdd2[i]]++;
+    }
+    int nAdd2 = numberCliqueAdded;
+    int last = cliqueStart_[numberCliques_];
+    int put = last+numberCliqueAdded;
+    cliqueStart_[numberCliques_] = put;
+    for (int iClique=numberCliques_-1;iClique>=0;iClique--) {
+      // add in new
+      for (int i=0;i<cliqueCount[iClique];i++) {
+	--nAdd2;
+	int iColumn = cliqueAdd[nAdd2] &0x7fffffff;
+	bool oneFixes = ((cliqueAdd[nAdd2]&0x80000000)!=0);
+	--put;
+	setSequenceInCliqueEntry(entry[put],iColumn);
+	setOneFixesInCliqueEntry(entry[put],oneFixes);
+	assert(iColumn>=0 && iColumn<numberColumns_);
+      }
+      // move existing
+      int start = cliqueStart_[iClique];
+      for (int i=last-1;i>=start;i--) 
+	entry[--put]=cliqueEntry_[i];
+      last = start;
+      cliqueStart_[iClique]=put;
+    }
+    assert (!put);
+    delete [] cliqueEntry_;
+    cliqueEntry_ = entry;
+    for (int j=0;j<numberEntries;j++) {
+      assert(sequenceInCliqueEntry(cliqueEntry_[j])>=0);
+      assert(sequenceInCliqueEntry(cliqueEntry_[j])<numberColumns_);
+    }
+    // now create other stuff
+    int * which = cliqueAdd;
+    delete [] whichClique_;
+    assert (nCols==numberColumns_);
+    whichClique_ = new int[numberEntries];
+    for (int i=0;i<numberColumns_;i++) {
+      oneFixStart_[i]=0;
+      zeroFixStart_[i]=0;
+      endFixStart_[i]=0;
+    }
+    // Now do column lists
+    // First do counts
+    for (int iClique=0;iClique<numberCliques_;iClique++) {
+      for (int j=cliqueStart_[iClique];j<cliqueStart_[iClique+1];j++) {
+	int iColumn = sequenceInCliqueEntry(cliqueEntry_[j]);
+	if (oneFixesInCliqueEntry(cliqueEntry_[j]))
+	  oneFixStart_[iColumn]++;
+	else
+	  zeroFixStart_[iColumn]++;
+      }
+    }
+    // now get starts and use which and end as counters
+    numberEntries=0;
+    for (int iColumn=0;iColumn<numberColumns_;iColumn++) {
+      if (oneFixStart_[iColumn]>=0) {
+	int n1=oneFixStart_[iColumn];
+	int n2=zeroFixStart_[iColumn];
+	oneFixStart_[iColumn]=numberEntries;
+	which[iColumn]=numberEntries;
+	numberEntries += n1;
+	zeroFixStart_[iColumn]=numberEntries;
+	endFixStart_[iColumn]=numberEntries;
+	numberEntries += n2;
+      }
+    }
+    // now put in
+    for (int iClique=0;iClique<numberCliques_;iClique++) {
+      for (int j=cliqueStart_[iClique];j<cliqueStart_[iClique+1];j++) {
+	int iColumn = sequenceInCliqueEntry(cliqueEntry_[j]);
+	if (oneFixesInCliqueEntry(cliqueEntry_[j])) {
+	  int put = which[iColumn];
+	  which[iColumn]++;
+	  whichClique_[put]=iClique;
+	} else {
+	  int put = endFixStart_[iColumn];
+	  endFixStart_[iColumn]++;
+	  whichClique_[put]=iClique;
+	}
+      }
+    }
+  }
   delete [] cliqueStack;
   delete [] cliqueCount;
   delete [] to_01;
+  delete [] cliqueAdd;
   delete [] stackC0;
   delete [] lo0;
   delete [] up0;
@@ -8036,6 +8245,7 @@ CglProbing::probeSlacks( const OsiSolverInterface & si,
             }
             if (nFix) {
               nTot=nFix;
+	      cleanBounds(1,nFix,index,element);
               cc.setUbs(nFix,index,element);
               nFix=0;
             }
@@ -8055,6 +8265,7 @@ CglProbing::probeSlacks( const OsiSolverInterface & si,
             }
             if (nFix) {
               nTot+=nFix;
+	      cleanBounds(-1,nFix,index,element);
               cc.setLbs(nFix,index,element);
             }
             // could tighten continuous as well
@@ -8300,6 +8511,7 @@ CglProbing::probeSlacks( const OsiSolverInterface & si,
                 }
                 if (nFix) {
                   nTot=nFix;
+		  cleanBounds(-1,nFix,index,element);
                   cc.setLbs(nFix,index,element);
                   nFix=0;
                 }
@@ -8322,6 +8534,7 @@ CglProbing::probeSlacks( const OsiSolverInterface & si,
                 }
                 if (nFix) {
                   nTot+=nFix;
+		  cleanBounds(1,nFix,index,element);
                   cc.setUbs(nFix,index,element);
                 }
                 // could tighten continuous as well
@@ -8623,7 +8836,7 @@ int CglProbing::snapshot ( const OsiSolverInterface & si,
   int returnCode=0;
   int ninfeas= 
     tighten(colLower_, colUpper_, column, rowElements,
-	    rowStart, NULL,rowLength, rowLower_, rowUpper_,
+	    rowStart, rowStartPos,rowLength, rowLower_, rowUpper_,
 	    numberRows_, numberColumns_, intVar, 5, primalTolerance_);
   delete [] rowStartPos;
   if (ninfeas) {
@@ -8655,7 +8868,7 @@ int CglProbing::snapshot ( const OsiSolverInterface & si,
   int * index = new int[numberRows_];
   int nDrop=0,nKeep=0;
   for (i=0;i<numberRows_;i++) {
-    if (rowLower_[i]<-1.0e30&&rowUpper_[i]>1.0e30) {
+    if (rowLower_[i]<-1.0e30&&rowUpper_[i]>1.0e30&&false) {
       index[nDrop++]=i;
     } else {
       rowLower_[nKeep]=rowLower_[i];
@@ -8722,7 +8935,8 @@ void CglProbing::deleteSnapshot()
 // Mode stuff
 void CglProbing::setMode(int mode)
 {
-  if (mode>=0&&mode<3) {
+  int mode2 = mode&7;
+  if (mode2>=0&&mode2<3) {
     // take off bottom bit
     mode_ &= ~15;
     mode_ |= mode;
@@ -8984,12 +9198,12 @@ CglProbing::CglProbing (  const CglProbing & rhs)
   else
     lookedAt_ = NULL;
   if (numberCliques_) {
-    cliqueType_ = new cliqueType [numberCliques_];
+    cliqueType_ = new CliqueType [numberCliques_];
     CoinMemcpyN(rhs.cliqueType_,numberCliques_,cliqueType_);
     cliqueStart_ = new int [numberCliques_+1];
     CoinMemcpyN(rhs.cliqueStart_,(numberCliques_+1),cliqueStart_);
     int n = cliqueStart_[numberCliques_];
-    cliqueEntry_ = new cliqueEntry [n];
+    cliqueEntry_ = new CliqueEntry [n];
     CoinMemcpyN(rhs.cliqueEntry_,n,cliqueEntry_);
     oneFixStart_ = new int [numberColumns_];
     CoinMemcpyN(rhs.oneFixStart_,numberColumns_,oneFixStart_);
@@ -9161,12 +9375,12 @@ CglProbing::operator=(
     else
       lookedAt_ = NULL;
     if (numberCliques_) {
-      cliqueType_ = new cliqueType [numberCliques_];
+      cliqueType_ = new CliqueType [numberCliques_];
       CoinMemcpyN(rhs.cliqueType_,numberCliques_,cliqueType_);
       cliqueStart_ = new int [numberCliques_+1];
       CoinMemcpyN(rhs.cliqueStart_,(numberCliques_+1),cliqueStart_);
       int n = cliqueStart_[numberCliques_];
-      cliqueEntry_ = new cliqueEntry [n];
+      cliqueEntry_ = new CliqueEntry [n];
       CoinMemcpyN(rhs.cliqueEntry_,n,cliqueEntry_);
       oneFixStart_ = new int [numberColumns_];
       CoinMemcpyN(rhs.oneFixStart_,numberColumns_,oneFixStart_);
@@ -9384,9 +9598,9 @@ CglProbing::createCliques( OsiSolverInterface & si,
     }
   }
   if (numberCliques_>0) {
-    cliqueType_ = new cliqueType [numberCliques_];
+    cliqueType_ = new CliqueType [numberCliques_];
     cliqueStart_ = new int [numberCliques_+1];
-    cliqueEntry_ = new cliqueEntry [numberEntries];
+    cliqueEntry_ = new CliqueEntry [numberEntries];
     oneFixStart_ = new int [numberColumns_];
     zeroFixStart_ = new int [numberColumns_];
     endFixStart_ = new int [numberColumns_];
@@ -9557,6 +9771,83 @@ CglProbing::deleteCliques()
   cliqueRowStart_=NULL;
   numberCliques_=0;
 }
+/* Create a fake model by adding cliques
+   if type&4 then delete rest of model first,
+   if 1 then add proper cliques, 2 add fake cliques */
+OsiSolverInterface * 
+CglProbing::cliqueModel(const OsiSolverInterface * model,
+			int type)
+{
+  OsiSolverInterface * newModel = model->clone();
+  if ((type&4)!=0) {
+    int numberRows = newModel->getNumRows();
+    int * which =new int [numberRows];
+    for (int i=0;i<numberRows;i++)
+      which[i]=i;
+    newModel->deleteRows(numberRows,which);
+    delete [] which;
+  }
+  type &= 3;
+  if (type!=2) {
+    CoinBigIndex numberElements = cliqueStart_[numberCliques_];
+    int * column = new int [numberElements];
+    double * element = new double [numberElements];
+    double * rowLower = new double [numberCliques_];
+    double * rowUpper = new double [numberCliques_];
+    numberElements = 0;
+    for (int iClique=0;iClique<numberCliques_;iClique++) {
+      int nMinus=0;
+      for (int j=cliqueStart_[iClique];j<cliqueStart_[iClique+1];j++) {
+	int iColumn = sequenceInCliqueEntry(cliqueEntry_[j]);
+	column[numberElements]=iColumn;
+	double value;
+	if (oneFixesInCliqueEntry(cliqueEntry_[j])) {
+	  value=1.0;
+	} else {
+	  value=-1.0;
+	  nMinus++;
+	}
+	element[numberElements++]=value;
+      }
+      rowLower[iClique]=-COIN_DBL_MAX;
+      rowUpper[iClique]=1-nMinus;
+    }
+    newModel->addRows(numberCliques_,cliqueStart_,column,element,
+		      rowLower,rowUpper);
+    delete [] column;
+    delete [] element;
+    delete [] rowLower;
+    delete [] rowUpper;
+  } else {
+    int numberCuts = numberCliques_;
+    CoinBigIndex numberElements = 2*numberCuts;
+    int * column = new int [numberElements];
+    double * element = new double [numberElements];
+    double * rowLower = new double [numberCuts];
+    double * rowUpper = new double [numberCuts];
+    CoinBigIndex * start = new CoinBigIndex [numberCuts+1];
+    start[0]=0;
+    numberElements = 0;
+    int * entry = reinterpret_cast<int *>(cliqueEntry_);
+    for (int iCut=0;iCut<numberCuts;iCut++) {
+      column[numberElements]=entry[numberElements];
+      element[numberElements++]=1.0; 
+      column[numberElements]=entry[numberElements];
+      element[numberElements++]=1.0; 
+      rowLower[iCut]=0.0;
+      rowUpper[iCut]=1.0;
+      start[iCut+1]=numberElements;
+    }
+    newModel->addRows(numberCuts,start,column,element,
+		      rowLower,rowUpper);
+    delete [] column;
+    delete [] element;
+    delete [] rowLower;
+    delete [] rowUpper;
+    delete [] start;
+  }
+  return newModel;
+}
 /*
   Returns true if may generate Row cuts in tree (rather than root node).
   Used so know if matrix will change in tree.  Really
@@ -9590,7 +9881,7 @@ CglProbing::setupRowCliqueInformation(const OsiSolverInterface & si)
   cliqueRowStart_ = new int [numberRows_+1];
   cliqueRowStart_[0]=0;
   // Temporary array while building list
-  cliqueEntry ** array = new cliqueEntry * [numberRows_];
+  CliqueEntry ** array = new CliqueEntry * [numberRows_];
   // Which cliques in use
   int * which = new int[numberCliques_];
   int * count = new int[numberCliques_];
@@ -9624,7 +9915,7 @@ CglProbing::setupRowCliqueInformation(const OsiSolverInterface & si)
     // find largest cliques
     bool finished=false;
     int numberInThis=0;
-    cliqueEntry * entries = NULL;
+    CliqueEntry * entries = NULL;
     array[iRow]=entries;
     while (!finished) {
       int largest=1;
@@ -9640,7 +9931,7 @@ CglProbing::setupRowCliqueInformation(const OsiSolverInterface & si)
       if (whichClique>=0&&largest<numberFree) {
         if (!numberInThis) {
           int length=rowLength[iRow];
-          entries = new cliqueEntry [length];
+          entries = new CliqueEntry [length];
           array[iRow]=entries;
           for (int i=0;i<length;i++) {
             setOneFixesInCliqueEntry(entries[i],false);
@@ -9699,7 +9990,7 @@ CglProbing::setupRowCliqueInformation(const OsiSolverInterface & si)
   delete [] count;
   delete [] back;
   // Now put info in one array
-  cliqueRow_ = new cliqueEntry [cliqueRowStart_[numberRows_]];
+  cliqueRow_ = new CliqueEntry [cliqueRowStart_[numberRows_]];
   for (iRow=0;iRow<numberRows_;iRow++) {
     if (array[iRow]) {
       int start = cliqueRowStart_[iRow];
@@ -9873,4 +10164,5 @@ CglImplication::generateCpp( FILE * fp)
   fprintf(fp,"0#include \"CglImplication.hpp\"\n");
   fprintf(fp,"3  CglImplication implication;\n");
   return "implication";
+
 }
diff --git a/src/CglProbing/CglProbing.hpp b/src/CglProbing/CglProbing.hpp
index 41ef835..5ca8996 100644
--- a/src/CglProbing/CglProbing.hpp
+++ b/src/CglProbing/CglProbing.hpp
@@ -1,4 +1,4 @@
-// $Id: CglProbing.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglProbing.hpp 1201 2014-03-07 17:24:04Z forrest $
 // Copyright (C) 2002, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -126,6 +126,11 @@ public:
 		    int minimumSize=2, int maximumSize=100);
   /// Delete all clique information
   void deleteCliques();
+  /** Create a fake model by adding cliques
+      if type&4 then delete rest of model first,
+      if 1 then add proper cliques, 2 add fake cliques */
+  OsiSolverInterface * cliqueModel(const OsiSolverInterface * model,
+				   int type);
   //@}
 
   /**@name Get tighter column bounds */
@@ -221,6 +226,26 @@ public:
   /// Get
   int rowCuts() const;
   //@}
+  /// Clique type
+  typedef struct {
+    unsigned int equality:1; //  nonzero if clique is ==
+  } CliqueType;
+
+  /**@name Information on cliques */
+  //@{
+  /// Number of cliques
+  inline int numberCliques() const
+  { return numberCliques_;}
+  /// Clique type
+  inline CliqueType * cliqueType() const
+  { return cliqueType_;}
+  /// Start of each clique
+  inline int * cliqueStart() const
+  { return cliqueStart_;}
+  /// Entries for clique
+  inline CliqueEntry * cliqueEntry() const
+  { return cliqueEntry_;}
+  //@}
 
   /**@name Whether use objective as constraint */
   //@{
@@ -403,14 +428,11 @@ private:
   /// Number of cliques
   int numberCliques_;
   /// Clique type
-  typedef struct {
-    unsigned int equality:1; //  nonzero if clique is ==
-  } cliqueType;
-  cliqueType * cliqueType_;
+  CliqueType * cliqueType_;
   /// Start of each clique
   int * cliqueStart_;
   /// Entries for clique
-  cliqueEntry * cliqueEntry_;
+  CliqueEntry * cliqueEntry_;
   /** Start of oneFixes cliques for a column in matrix or -1 if not
       in any clique */
   int * oneFixStart_;
@@ -425,7 +447,7 @@ private:
       So first clique mentioned in row is always 0.  If no entries for row
       then no cliques.  If sequence > numberColumns then not in clique.
   */
-  cliqueEntry * cliqueRow_;
+  CliqueEntry * cliqueRow_;
   /// cliqueRow_ starts for each row
   int * cliqueRowStart_;
   /// If not null and [i] !=0 then also tighten even if continuous
diff --git a/src/CglProbing/CglProbingTest.cpp b/src/CglProbing/CglProbingTest.cpp
index 7405ca2..0be9a3a 100644
--- a/src/CglProbing/CglProbingTest.cpp
+++ b/src/CglProbing/CglProbingTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglProbingTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglProbingTest.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglProbing/Makefile.in b/src/CglProbing/Makefile.in
index 8cccc89..6914b9f 100644
--- a/src/CglProbing/Makefile.in
+++ b/src/CglProbing/Makefile.in
@@ -134,6 +134,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -314,6 +318,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglRedSplit/CglRedSplit.cpp b/src/CglRedSplit/CglRedSplit.cpp
index f3e24d6..f9bbb34 100644
--- a/src/CglRedSplit/CglRedSplit.cpp
+++ b/src/CglRedSplit/CglRedSplit.cpp
@@ -6,7 +6,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     2/6/05
 //
-// $Id: CglRedSplit.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglRedSplit.cpp 1119 2013-04-06 20:24:18Z stefan $
 //---------------------------------------------------------------------------
 // Copyright (C) 2005, Francois Margot and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglRedSplit/CglRedSplit.hpp b/src/CglRedSplit/CglRedSplit.hpp
index 024efb6..1265b1d 100644
--- a/src/CglRedSplit/CglRedSplit.hpp
+++ b/src/CglRedSplit/CglRedSplit.hpp
@@ -7,7 +7,7 @@
 //           email: fmargot at andrew.cmu.edu
 // Date:     2/6/05
 //
-// $Id: CglRedSplit.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglRedSplit.hpp 1119 2013-04-06 20:24:18Z stefan $
 //-----------------------------------------------------------------------------
 // Copyright (C) 2005, Francois Margot and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglRedSplit/CglRedSplitParam.cpp b/src/CglRedSplit/CglRedSplitParam.cpp
index 8fed118..7d20161 100644
--- a/src/CglRedSplit/CglRedSplitParam.cpp
+++ b/src/CglRedSplit/CglRedSplitParam.cpp
@@ -4,7 +4,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     11/24/06
 //
-// $Id: CglRedSplitParam.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglRedSplitParam.cpp 1122 2013-04-06 20:39:53Z stefan $
 //---------------------------------------------------------------------------
 // Copyright (C) 2006, Francois Margot and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglRedSplit/CglRedSplitParam.hpp b/src/CglRedSplit/CglRedSplitParam.hpp
index a1a2f1e..2601fb2 100644
--- a/src/CglRedSplit/CglRedSplitParam.hpp
+++ b/src/CglRedSplit/CglRedSplitParam.hpp
@@ -5,7 +5,7 @@
 //           email: fmargot at andrew.cmu.edu
 // Date:     11/24/06
 //
-// $Id: CglRedSplitParam.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglRedSplitParam.hpp 1122 2013-04-06 20:39:53Z stefan $
 //-----------------------------------------------------------------------------
 // Copyright (C) 2006, Francois Margot and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglRedSplit/CglRedSplitTest.cpp b/src/CglRedSplit/CglRedSplitTest.cpp
index ff7d2b1..f82f20d 100644
--- a/src/CglRedSplit/CglRedSplitTest.cpp
+++ b/src/CglRedSplit/CglRedSplitTest.cpp
@@ -5,7 +5,7 @@
 //           Carnegie Mellon University, Pittsburgh, PA 15213
 // Date:     2/6/05
 //
-// $Id: CglRedSplitTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglRedSplitTest.cpp 1122 2013-04-06 20:39:53Z stefan $
 //---------------------------------------------------------------------------
 // Copyright (C) 2005, Francois Margot and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglRedSplit/Makefile.in b/src/CglRedSplit/Makefile.in
index f7896be..92e2429 100644
--- a/src/CglRedSplit/Makefile.in
+++ b/src/CglRedSplit/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglRedSplit2/Makefile.in b/src/CglRedSplit2/Makefile.in
index 088dec6..7d491f2 100644
--- a/src/CglRedSplit2/Makefile.in
+++ b/src/CglRedSplit2/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglResidualCapacity/Makefile.in b/src/CglResidualCapacity/Makefile.in
index 4b7cb4e..d9d0022 100644
--- a/src/CglResidualCapacity/Makefile.in
+++ b/src/CglResidualCapacity/Makefile.in
@@ -136,6 +136,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -316,6 +320,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglSimpleRounding/CglSimpleRounding.cpp b/src/CglSimpleRounding/CglSimpleRounding.cpp
index 433762b..599872b 100644
--- a/src/CglSimpleRounding/CglSimpleRounding.cpp
+++ b/src/CglSimpleRounding/CglSimpleRounding.cpp
@@ -1,4 +1,4 @@
-// $Id: CglSimpleRounding.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglSimpleRounding.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglSimpleRounding/CglSimpleRounding.hpp b/src/CglSimpleRounding/CglSimpleRounding.hpp
index 447f744..b93c8bf 100644
--- a/src/CglSimpleRounding/CglSimpleRounding.hpp
+++ b/src/CglSimpleRounding/CglSimpleRounding.hpp
@@ -1,4 +1,4 @@
-// $Id: CglSimpleRounding.hpp 1150 2013-10-21 18:24:45Z tkr $
+// $Id: CglSimpleRounding.hpp 1149 2013-10-21 18:23:53Z tkr $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglSimpleRounding/CglSimpleRoundingTest.cpp b/src/CglSimpleRounding/CglSimpleRoundingTest.cpp
index f6b99c2..69fad46 100644
--- a/src/CglSimpleRounding/CglSimpleRoundingTest.cpp
+++ b/src/CglSimpleRounding/CglSimpleRoundingTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglSimpleRoundingTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglSimpleRoundingTest.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglSimpleRounding/Makefile.in b/src/CglSimpleRounding/Makefile.in
index ef4a351..854a126 100644
--- a/src/CglSimpleRounding/Makefile.in
+++ b/src/CglSimpleRounding/Makefile.in
@@ -136,6 +136,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -316,6 +320,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglStored.cpp b/src/CglStored.cpp
index 658b5b0..2067508 100644
--- a/src/CglStored.cpp
+++ b/src/CglStored.cpp
@@ -35,7 +35,7 @@ CglStored::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
   }
   if (probingInfo_) {
     int number01 = probingInfo_->numberIntegers();
-    const cliqueEntry * entry = probingInfo_->fixEntries();
+    const CliqueEntry * entry = probingInfo_->fixEntries();
     const int * toZero = probingInfo_->toZero();
     const int * toOne = probingInfo_->toOne();
     const int * integerVariable = probingInfo_->integerVariable();
diff --git a/src/CglStored.hpp b/src/CglStored.hpp
index 3e2dabb..07039d9 100644
--- a/src/CglStored.hpp
+++ b/src/CglStored.hpp
@@ -1,4 +1,4 @@
-// $Id: CglStored.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglStored.hpp 1119 2013-04-06 20:24:18Z stefan $
 // Copyright (C) 2005, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglTreeInfo.cpp b/src/CglTreeInfo.cpp
index 345e23d..bf565a5 100644
--- a/src/CglTreeInfo.cpp
+++ b/src/CglTreeInfo.cpp
@@ -1,4 +1,4 @@
-// $Id: CglTreeInfo.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglTreeInfo.cpp 1201 2014-03-07 17:24:04Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -133,8 +133,8 @@ CglTreeProbingInfo::CglTreeProbingInfo (const CglTreeProbingInfo & rhs)
     numberEntries_(rhs.numberEntries_)
 {
   if (numberVariables_) {
-    fixEntry_ = new cliqueEntry [maximumEntries_];
-    memcpy(fixEntry_,rhs.fixEntry_,maximumEntries_*sizeof(cliqueEntry));
+    fixEntry_ = new CliqueEntry [maximumEntries_];
+    memcpy(fixEntry_,rhs.fixEntry_,maximumEntries_*sizeof(CliqueEntry));
     if (numberEntries_<0) {
       // in order
       toZero_ = CoinCopyOfArray(rhs.toZero_,numberIntegers_+1);
@@ -171,8 +171,8 @@ CglTreeProbingInfo::operator=(const CglTreeProbingInfo& rhs)
     maximumEntries_ = rhs.maximumEntries_;
     numberEntries_ = rhs.numberEntries_;
     if (numberVariables_) {
-      fixEntry_ = new cliqueEntry [maximumEntries_];
-      memcpy(fixEntry_,rhs.fixEntry_,maximumEntries_*sizeof(cliqueEntry));
+      fixEntry_ = new CliqueEntry [maximumEntries_];
+      memcpy(fixEntry_,rhs.fixEntry_,maximumEntries_*sizeof(CliqueEntry));
       if (numberEntries_<0) {
 	// in order
 	toZero_ = CoinCopyOfArray(rhs.toZero_,numberIntegers_+1);
@@ -211,14 +211,14 @@ CglTreeProbingInfo::~CglTreeProbingInfo ()
   delete [] fixingEntry_;
 }
 static int outDupsEtc(int numberIntegers, int & numberCliques, int & numberMatrixCliques,
-		      int * & cliqueStart, char * & cliqueType, cliqueEntry *& entry, 
+		      int * & cliqueStart, char * & cliqueType, CliqueEntry *& entry, 
 		      int numberLastTime, int printit)
 {
   bool allNew=false;
   int * whichP = new int [numberIntegers];
   int iClique;
   assert (sizeof(int)==4);
-  assert (sizeof(cliqueEntry)==4);
+  assert (sizeof(CliqueEntry)==4);
   // If lots then get rid of short ones
 #define KEEP_CLIQUES 10000
   if (numberCliques-numberMatrixCliques>KEEP_CLIQUES) {
@@ -440,7 +440,7 @@ static int outDupsEtc(int numberIntegers, int & numberCliques, int & numberMatri
     int * start = new int [nNewC+1];
     char * type = new char [nNewC];
     start[0]=0;
-    cliqueEntry * entryC = new cliqueEntry [size];
+    CliqueEntry * entryC = new CliqueEntry [size];
     int nel=0;
     allNew = true;
     for (int jClique=0;jClique<numberCliques;jClique++) {
@@ -449,7 +449,7 @@ static int outDupsEtc(int numberIntegers, int & numberCliques, int & numberMatri
 	if (kClique>=numberLastTime)
 	  allNew=false;
 	int nn=cliqueStart[kClique+1]-cliqueStart[kClique];
-	memcpy(entryC+nel,entry+cliqueStart[kClique],nn*sizeof(cliqueEntry));
+	memcpy(entryC+nel,entry+cliqueStart[kClique],nn*sizeof(CliqueEntry));
 	nel += nn;
 	type[n++]=cliqueType[kClique];
 	start[n]=nel;
@@ -462,7 +462,7 @@ static int outDupsEtc(int numberIntegers, int & numberCliques, int & numberMatri
 	if (kClique>=numberLastTime)
 	  allNew=false;
 	int nn=cliqueStart[kClique+1]-cliqueStart[kClique];
-	memcpy(entryC+nel,entry+cliqueStart[kClique],nn*sizeof(cliqueEntry));
+	memcpy(entryC+nel,entry+cliqueStart[kClique],nn*sizeof(CliqueEntry));
 	nel += nn;
 	type[n++]=cliqueType[kClique];
 	start[n]=nel;
@@ -499,18 +499,25 @@ static int outDupsEtc(int numberIntegers, int & numberCliques, int & numberMatri
     return -1;
 }
 OsiSolverInterface *
-CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
+CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver,
+			    int numberExtraCliques,const int * starts,
+			    const CliqueEntry * entries,const char * type)
 {
   if (!createSolver)
     return NULL;
   convert();
   if (!numberIntegers_)
     return NULL;
+  bool alwaysDo=false;
+  if (numberExtraCliques<0) {
+    alwaysDo=true;
+    numberExtraCliques=0;
+  }
   bool printit=false;
   int numberCliques=0;
   int numberEntries=0;
   int * cliqueStart = NULL;
-  cliqueEntry * entry = NULL;
+  CliqueEntry * entry = NULL;
   char * cliqueType=NULL;
   int * whichP = new int [numberIntegers_];
   int * whichM = new int [numberIntegers_];
@@ -530,11 +537,14 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
   const double * rowUpper = si.getRowUpper();
   for (int iPass=0;iPass<2;iPass++) {
     if (iPass) {
-      cliqueStart = new int [numberCliques+1];
+      int numberExtraEntries=0;
+      if (numberExtraCliques) 
+	numberExtraEntries = starts[numberExtraCliques];
+      cliqueStart = new int [numberCliques+1+numberExtraCliques];
       cliqueStart[0]=0;
-      entry = new cliqueEntry [numberEntries];
-      cliqueType = new char [numberCliques];
-      whichClique = new int [numberEntries];
+      entry = new CliqueEntry [numberEntries+numberExtraEntries];
+      cliqueType = new char [numberCliques+numberExtraCliques];
+      whichClique = new int [numberEntries+numberExtraEntries];
       numberCliques=0;
       numberEntries=0;
     }
@@ -610,7 +620,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	  for (j=0;j<numberP1;j++) {
 	    int iColumn = whichP[j];
 	    if (iPass) {
-	      cliqueEntry temp;
+	      CliqueEntry temp;
 	      setOneFixesInCliqueEntry(temp,true);
 	      setSequenceInCliqueEntry(temp,iColumn);
 	      entry[numberEntries]=temp;
@@ -620,7 +630,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	  for (j=0;j<numberM1;j++) {
 	    int iColumn = whichM[j];
 	    if (iPass) {
-	      cliqueEntry temp;
+	      CliqueEntry temp;
 	      setOneFixesInCliqueEntry(temp,false);
 	      setSequenceInCliqueEntry(temp,iColumn);
 	      entry[numberEntries]=temp;
@@ -641,6 +651,16 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
       }
     }
 #endif
+    if (numberExtraCliques) {
+      int numberExtraEntries = starts[numberExtraCliques];
+      memcpy(entry+numberEntries,entries,numberExtraEntries*sizeof(CliqueEntry));
+      for (int iClique=0;iClique<numberExtraCliques;iClique++) {
+	cliqueType[numberCliques] = type[iClique];
+	numberCliques++;
+	cliqueStart[numberCliques]=starts[iClique]+numberEntries;
+      }
+      numberEntries += numberExtraEntries;
+    }
     numberMatrixCliques=numberCliques;
     //int size = toZero_[numberIntegers_];
     //char * used = new char [size];
@@ -663,14 +683,14 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 			   iColumn,jColumn,jColumn,iColumn);
 		  //0-0 illegal
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,false);
 		    setSequenceInCliqueEntry(temp,iColumn);
 		    entry[numberEntries]=temp;
 		  }
 		  numberEntries++;
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,false);
 		    setSequenceInCliqueEntry(temp,jColumn);
 		    entry[numberEntries]=temp;
@@ -724,14 +744,14 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 			   iColumn,jColumn,jColumn,iColumn);
 		  // 0-1 illegal
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,false);
 		    setSequenceInCliqueEntry(temp,iColumn);
 		    entry[numberEntries]=temp;
 		  }
 		  numberEntries++;
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,true);
 		    setSequenceInCliqueEntry(temp,jColumn);
 		    entry[numberEntries]=temp;
@@ -772,14 +792,14 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 			   iColumn,jColumn,jColumn,iColumn);
 		  // 1-0 illegal
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,true);
 		    setSequenceInCliqueEntry(temp,iColumn);
 		    entry[numberEntries]=temp;
 		  }
 		  numberEntries++;
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,false);
 		    setSequenceInCliqueEntry(temp,jColumn);
 		    entry[numberEntries]=temp;
@@ -833,14 +853,14 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 			   iColumn,jColumn,jColumn,iColumn);
 		  // 1-1 illegal
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,true);
 		    setSequenceInCliqueEntry(temp,iColumn);
 		    entry[numberEntries]=temp;
 		  }
 		  numberEntries++;
 		  if (iPass) {
-		    cliqueEntry temp;
+		    CliqueEntry temp;
 		    setOneFixesInCliqueEntry(temp,true);
 		    setSequenceInCliqueEntry(temp,jColumn);
 		    entry[numberEntries]=temp;
@@ -940,7 +960,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	int j = cliqueStart[jClique];
 	//assert (cliqueStart[jClique+1]==j+2);
 	for (;j<cliqueStart[jClique+1];j++) {
-	  cliqueEntry eJ = entry[j];
+	  CliqueEntry eJ = entry[j];
 	  int jColumn = sequenceInCliqueEntry(eJ);
 	  if (jColumn>iColumn&&!mark[jColumn]) {
 	    mark[jColumn]=1;
@@ -977,8 +997,8 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	  nStrengthen++;
 	  if (numberEntries+jCount+1>maximumEntries) {
 	    maximumEntries = CoinMax(numberEntries+jCount+1,(maximumEntries*12)/10+100);
-	    cliqueEntry * temp = new cliqueEntry [maximumEntries];
-	    memcpy(temp,entry,numberEntries*sizeof(cliqueEntry));
+	    CliqueEntry * temp = new CliqueEntry [maximumEntries];
+	    memcpy(temp,entry,numberEntries*sizeof(CliqueEntry));
 	    delete [] entry;
 	    entry=temp;
 	    int * tempI = new int [maximumEntries];
@@ -997,7 +1017,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	    delete [] cliqueType;
 	    cliqueType=tempT;
 	  }
-	  cliqueEntry eI;
+	  CliqueEntry eI;
 	  eI.fixes=0;
 	  setSequenceInCliqueEntry(eI,iColumn);
 	  setOneFixesInCliqueEntry(eI,false);
@@ -1025,7 +1045,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	int j = cliqueStart[jClique];
 	//assert (cliqueStart[jClique+1]==j+2);
 	for (;j<cliqueStart[jClique+1];j++) {
-	  cliqueEntry eJ = entry[j];
+	  CliqueEntry eJ = entry[j];
 	  int jColumn = sequenceInCliqueEntry(eJ);
 	  if (jColumn>iColumn&&!mark[jColumn]) {
 	    mark[jColumn]=1;
@@ -1066,8 +1086,8 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	  nStrengthen++;
 	  if (numberEntries+jCount+1>maximumEntries) {
 	    maximumEntries = CoinMax(numberEntries+jCount+1,(maximumEntries*12)/10+100);
-	    cliqueEntry * temp = new cliqueEntry [maximumEntries];
-	    memcpy(temp,entry,numberEntries*sizeof(cliqueEntry));
+	    CliqueEntry * temp = new CliqueEntry [maximumEntries];
+	    memcpy(temp,entry,numberEntries*sizeof(CliqueEntry));
 	    delete [] entry;
 	    entry=temp;
 	    int * tempI = new int [maximumEntries];
@@ -1086,7 +1106,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
 	    delete [] cliqueType;
 	    cliqueType=tempT;
 	  }
-	  cliqueEntry eI;
+	  CliqueEntry eI;
 	  eI.fixes=0;
 	  setSequenceInCliqueEntry(eI,iColumn);
 	  setOneFixesInCliqueEntry(eI,true);
@@ -1123,7 +1143,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
       int n=0;
       double rhs=1.0;
       for (int i=cliqueStart[iClique];i<cliqueStart[iClique+1];i++) {
-	cliqueEntry eI=entry[i];
+	CliqueEntry eI=entry[i];
 	int iColumn = integerVariable_[sequenceInCliqueEntry(eI)];
 	whichP[n]=iColumn;
 	if (oneFixesInCliqueEntry(eI)) {
@@ -1139,7 +1159,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
   }
 #endif
   OsiSolverInterface * newSolver=NULL; 
-  if (numberCliques>numberMatrixCliques) {
+  if (numberCliques>numberMatrixCliques||alwaysDo) {
     newSolver = si.clone();
     // Delete all rows
     int * start = new int [ CoinMax(numberRows,numberCliques+1)];
@@ -1157,7 +1177,7 @@ CglTreeProbingInfo::analyze(const OsiSolverInterface & si,int createSolver)
     for (iClique=0;iClique<numberCliques;iClique++) {
       double rhs=1.0;
       for (int i=cliqueStart[iClique];i<cliqueStart[iClique+1];i++) {
-	cliqueEntry eI=entry[i];
+	CliqueEntry eI=entry[i];
 	int iColumn = integerVariable_[sequenceInCliqueEntry(eI)];
 	column[numberElements]=iColumn;
 	if (oneFixesInCliqueEntry(eI)) {
@@ -1213,8 +1233,8 @@ CglTreeProbingInfo::fixes(int variable, int toValue, int fixedVariable,bool fixe
     if (maximumEntries_>=CoinMax(1000000,10*numberIntegers_))
       return false;
     maximumEntries_ += 100 +maximumEntries_/2;
-    cliqueEntry * temp1 = new cliqueEntry [maximumEntries_];
-    memcpy(temp1,fixEntry_,numberEntries_*sizeof(cliqueEntry));
+    CliqueEntry * temp1 = new CliqueEntry [maximumEntries_];
+    memcpy(temp1,fixEntry_,numberEntries_*sizeof(CliqueEntry));
     delete [] fixEntry_;
     fixEntry_ = temp1;
     int * temp2 = new int [maximumEntries_];
@@ -1222,7 +1242,7 @@ CglTreeProbingInfo::fixes(int variable, int toValue, int fixedVariable,bool fixe
     delete [] fixingEntry_;
     fixingEntry_ = temp2;
   }
-  cliqueEntry entry1;
+  CliqueEntry entry1;
   entry1.fixes=0;
   setOneFixesInCliqueEntry(entry1,fixedTo!=0);
   setSequenceInCliqueEntry(entry1,intFix);
@@ -1302,7 +1322,7 @@ CglTreeProbingInfo::convert()
 	assert (sizeof(int)==4);
 	std::sort(reinterpret_cast<unsigned int *> (fixEntry_)+last,
 		  reinterpret_cast<unsigned int *> (fixEntry_)+n);
-	cliqueEntry temp2;
+	CliqueEntry temp2;
 	temp2.fixes=0;
 	setSequenceInCliqueEntry(temp2,numberVariables_+1);
 	for (int i=last;i<n;i++) {
@@ -1325,7 +1345,7 @@ CglTreeProbingInfo::convert()
 	assert (sizeof(int)==4);
 	std::sort(reinterpret_cast<unsigned int *> (fixEntry_)+last,
 		  reinterpret_cast<unsigned int *> (fixEntry_)+n);
-	cliqueEntry temp2;
+	CliqueEntry temp2;
 	temp2.fixes=0;
 	setSequenceInCliqueEntry(temp2,numberVariables_+1);
 	for (int i=last;i<n;i++) {
diff --git a/src/CglTreeInfo.hpp b/src/CglTreeInfo.hpp
index 1c650c0..4f85aca 100644
--- a/src/CglTreeInfo.hpp
+++ b/src/CglTreeInfo.hpp
@@ -1,4 +1,4 @@
-// $Id: CglTreeInfo.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglTreeInfo.hpp 1201 2014-03-07 17:24:04Z forrest $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -80,7 +80,7 @@ typedef struct {
   //unsigned int oneFixed:1; //  nonzero if variable to 1 fixes all
   //unsigned int sequence:31; //  variable (in matrix) (but also see cliqueRow_)
   unsigned int fixes;
-} cliqueEntry;
+} CliqueEntry;
 
 class CglTreeProbingInfo : public CglTreeInfo {
 public:
@@ -103,7 +103,9 @@ public:
   /// Destructor 
   virtual
     ~CglTreeProbingInfo ();
-  OsiSolverInterface * analyze(const OsiSolverInterface & si, int createSolver=0);
+  OsiSolverInterface * analyze(const OsiSolverInterface & si, int createSolver=0,
+			       int numberExtraCliques=0,const int * starts=NULL,
+			       const CliqueEntry * entries=NULL,const char * type=NULL);
   /** Take action if cut generator can fix a variable 
       (toValue -1 for down, +1 for up)
       Returns true if still room, false if not  */
@@ -121,7 +123,7 @@ public:
   void generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
 		    const CglTreeInfo info) const;
   /// Entries for fixing variables
-  inline cliqueEntry * fixEntries()
+  inline CliqueEntry * fixEntries()
   { convert(); return fixEntry_;}
   /// Starts of integer variable going to zero
   inline int * toZero()
@@ -146,7 +148,7 @@ private:
   void convert();
 protected:
   /// Entries for fixing variables
-  cliqueEntry * fixEntry_;
+  CliqueEntry * fixEntry_;
   /// Starts of integer variable going to zero
   int * toZero_;
   /// Starts of integer variable going to one
@@ -166,13 +168,13 @@ protected:
   /// Number entries in fixingEntry_ (and fixEntry_) or -2 if correct style
   int numberEntries_;
 };
-inline int sequenceInCliqueEntry(const cliqueEntry & cEntry)
+inline int sequenceInCliqueEntry(const CliqueEntry & cEntry)
 { return cEntry.fixes&0x7fffffff;}
-inline void setSequenceInCliqueEntry(cliqueEntry & cEntry,int sequence)
+inline void setSequenceInCliqueEntry(CliqueEntry & cEntry,int sequence)
 { cEntry.fixes = sequence|(cEntry.fixes&0x80000000);}
-inline bool oneFixesInCliqueEntry(const cliqueEntry & cEntry)
+inline bool oneFixesInCliqueEntry(const CliqueEntry & cEntry)
 { return (cEntry.fixes&0x80000000)!=0;}
-inline void setOneFixesInCliqueEntry(cliqueEntry & cEntry,bool oneFixes)
+inline void setOneFixesInCliqueEntry(CliqueEntry & cEntry,bool oneFixes)
 { cEntry.fixes = (oneFixes ? 0x80000000 : 0)|(cEntry.fixes&0x7fffffff);}
 
 #endif
diff --git a/src/CglTwomir/CglTwomir.cpp b/src/CglTwomir/CglTwomir.cpp
index 88debb8..8df0104 100644
--- a/src/CglTwomir/CglTwomir.cpp
+++ b/src/CglTwomir/CglTwomir.cpp
@@ -1,4 +1,4 @@
-// $Id: CglTwomir.cpp 1189 2014-01-10 14:40:18Z forrest $
+// $Id: CglTwomir.cpp 1190 2014-01-10 14:58:55Z forrest $
 // Copyright (C) 2002, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglTwomir/CglTwomir.hpp b/src/CglTwomir/CglTwomir.hpp
index b5be5b9..ba00380 100644
--- a/src/CglTwomir/CglTwomir.hpp
+++ b/src/CglTwomir/CglTwomir.hpp
@@ -1,4 +1,4 @@
-// $Id: CglTwomir.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglTwomir.hpp 1119 2013-04-06 20:24:18Z stefan $
 // Copyright (C) 2002, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglTwomir/CglTwomirTest.cpp b/src/CglTwomir/CglTwomirTest.cpp
index 424716d..3ba05ff 100644
--- a/src/CglTwomir/CglTwomirTest.cpp
+++ b/src/CglTwomir/CglTwomirTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglTwomirTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglTwomirTest.cpp 1120 2013-04-06 20:34:40Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglTwomir/Makefile.am b/src/CglTwomir/Makefile.am
index dd22642..b5e9229 100644
--- a/src/CglTwomir/Makefile.am
+++ b/src/CglTwomir/Makefile.am
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: Makefile.am 1113 2013-04-06 13:28:20Z stefan $
+## $Id: Makefile.am 1105 2013-03-19 12:43:52Z forrest $
 
 # Author:  Andreas Waechter           IBM    2006-04-13
 
diff --git a/src/CglTwomir/Makefile.in b/src/CglTwomir/Makefile.in
index 0c1f17c..bc709b7 100644
--- a/src/CglTwomir/Makefile.in
+++ b/src/CglTwomir/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/CglZeroHalf/Cgl012cut.cpp b/src/CglZeroHalf/Cgl012cut.cpp
index da49f1e..332f5b5 100644
--- a/src/CglZeroHalf/Cgl012cut.cpp
+++ b/src/CglZeroHalf/Cgl012cut.cpp
@@ -1,4 +1,4 @@
-// $Id: Cgl012cut.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: Cgl012cut.cpp 1222 2014-09-14 17:32:18Z forrest $
 // Copyright (C) 2010, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -7,7 +7,7 @@
 #include "CoinTime.hpp"
 #include "Cgl012cut.hpp"
 #include "CglZeroHalf.hpp"
-int MAX_CUTS = 1000;
+static int MAX_CUTS = 10000000;
 //#define PRINT_TABU
 //#define PRINT_CUTS
 //#define PRINT_TIME
diff --git a/src/CglZeroHalf/Cgl012cut.hpp b/src/CglZeroHalf/Cgl012cut.hpp
index 47bbc3c..2814b0a 100644
--- a/src/CglZeroHalf/Cgl012cut.hpp
+++ b/src/CglZeroHalf/Cgl012cut.hpp
@@ -1,4 +1,4 @@
-// $Id: Cgl012cut.hpp 1150 2013-10-21 18:24:45Z tkr $
+// $Id: Cgl012cut.hpp 1149 2013-10-21 18:23:53Z tkr $
 // Copyright (C) 2010, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglZeroHalf/CglZeroHalf.cpp b/src/CglZeroHalf/CglZeroHalf.cpp
index 8244d88..0aa5024 100644
--- a/src/CglZeroHalf/CglZeroHalf.cpp
+++ b/src/CglZeroHalf/CglZeroHalf.cpp
@@ -1,4 +1,4 @@
-// $Id: CglZeroHalf.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglZeroHalf.cpp 1222 2014-09-14 17:32:18Z forrest $
 // Copyright (C) 2010, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
@@ -155,7 +155,7 @@ CglCutGenerator(),
   msense_(NULL),
   flags_(0)
 {
-  // nothing to do here
+  cutInfo_=Cgl012Cut();
 }
 //-------------------------------------------------------------------
 // Copy constructor 
@@ -187,6 +187,8 @@ CglZeroHalf::CglZeroHalf (
     mrhs_ = CoinCopyOfArray(source.mrhs_,mr_);
     msense_ = CoinCopyOfArray(source.msense_,mr_);
   }
+  //cutInfo_ = Cgl012Cut(source.cutInfo_);
+  cutInfo_ = Cgl012Cut();
 }
 
 
@@ -235,7 +237,6 @@ CglZeroHalf::operator=(
     mc_ = rhs.mc_;
     mnz_ = rhs.mnz_;
     flags_ = rhs.flags_;
-    cutInfo_=Cgl012Cut();
     if (mr_) {
       mtbeg_ = CoinCopyOfArray(rhs.mtbeg_,mr_);
       mtcnt_ = CoinCopyOfArray(rhs.mtcnt_,mr_);
@@ -255,6 +256,8 @@ CglZeroHalf::operator=(
       mrhs_ = NULL;
       msense_ = NULL;
     }
+    //cutInfo_=Cgl012Cut(rhs.cutInfo_);
+    cutInfo_=Cgl012Cut();
   }
   return *this;
 }
@@ -330,7 +333,7 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
 	break;
       } else {
 	double value = rowElements[j];
-	if (fabs(value-floor(value+0.5))>1.0e-30) {
+	if (fabs(value-floor(value+0.5))>1.0e-15) {
 	  // not integer coefficient
 	  good=false;
 	  break;
@@ -342,7 +345,7 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
     int iType=1;
     double rhs=1.0e20;
     if (lo>-1.0e20) {
-      if (fabs(lo-floor(lo+0.5))>1.0e-12) {
+      if (fabs(lo-floor(lo+0.5))>1.0e-15) {
 	// not integer coefficient
 	good=false;
       }
@@ -370,6 +373,8 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
       mnz_ += iType*n;
     }
   }
+  int saveMr=mr_;
+  int saveMnz=mnz_;
   if (mnz_) {
     mc_ = numberColumns;
     mtbeg_ = new int [mr_];
@@ -392,7 +397,7 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
 	  break;
 	} else {
 	  double value = rowElements[j];
-	  if (fabs(value-floor(value+0.5))>1.0e-12) {
+	  if (fabs(value-floor(value+0.5))>1.0e-15) {
 	    // not integer coefficient
 	    good=false;
 	    break;
@@ -404,7 +409,7 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
       int iType=1;
       double rhs=1.0e20;
       if (lo>-1.0e20) {
-	if (fabs(lo-floor(lo+0.5))>1.0e-30) {
+	if (fabs(lo-floor(lo+0.5))>1.0e-15) {
 	  // not integer coefficient
 	  good=false;
 	}
@@ -467,6 +472,8 @@ CglZeroHalf::refreshSolver(OsiSolverInterface * solver)
 	}
       }
     }
+    assert(saveMr==mr_);
+    assert(saveMnz==mnz_);
     cutInfo_.ilp_load(mr_,mc_,mnz_,mtbeg_,mtcnt_,mtind_,mtval_,
 	     vlb_,vub_,mrhs_,msense_);
     cutInfo_.alloc_parity_ilp(mr_,mc_,mnz_);
diff --git a/src/CglZeroHalf/CglZeroHalf.hpp b/src/CglZeroHalf/CglZeroHalf.hpp
index abeb489..929269a 100644
--- a/src/CglZeroHalf/CglZeroHalf.hpp
+++ b/src/CglZeroHalf/CglZeroHalf.hpp
@@ -1,4 +1,4 @@
-// $Id: CglZeroHalf.hpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: CglZeroHalf.hpp 1122 2013-04-06 20:39:53Z stefan $
 // Copyright (C) 2010, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglZeroHalf/CglZeroHalfTest.cpp b/src/CglZeroHalf/CglZeroHalfTest.cpp
index 9d1a9ae..2822f56 100644
--- a/src/CglZeroHalf/CglZeroHalfTest.cpp
+++ b/src/CglZeroHalf/CglZeroHalfTest.cpp
@@ -1,4 +1,4 @@
-// $Id: CglZeroHalfTest.cpp 1155 2013-11-10 17:51:42Z tkr $
+// $Id: CglZeroHalfTest.cpp 1154 2013-11-10 17:50:24Z tkr $
 // Copyright (C) 2010, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).
diff --git a/src/CglZeroHalf/Makefile.am b/src/CglZeroHalf/Makefile.am
index a7e5f2f..1b030b4 100644
--- a/src/CglZeroHalf/Makefile.am
+++ b/src/CglZeroHalf/Makefile.am
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: Makefile.am 1166 2013-12-11 09:25:29Z stefan $
+## $Id: Makefile.am 1165 2013-12-11 09:18:38Z stefan $
 
 # Author:  Andreas Waechter           IBM    2006-04-13
 
diff --git a/src/CglZeroHalf/Makefile.in b/src/CglZeroHalf/Makefile.in
index a4c789e..af41dcb 100644
--- a/src/CglZeroHalf/Makefile.in
+++ b/src/CglZeroHalf/Makefile.in
@@ -135,6 +135,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -315,6 +319,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/Makefile.am b/src/Makefile.am
index cd21fea..e7d4463 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: Makefile.am 1171 2013-12-16 14:51:04Z tkr $
+## $Id: Makefile.am 1159 2013-11-21 19:57:09Z stefan $
 
 # Author:  Andreas Waechter           IBM    2006-04-13
 
diff --git a/src/Makefile.in b/src/Makefile.in
index 0f05caa..b567eab 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -145,6 +145,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -325,6 +329,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/src/config_cgl_default.h b/src/config_cgl_default.h
index f66167a..5ae5889 100644
--- a/src/config_cgl_default.h
+++ b/src/config_cgl_default.h
@@ -5,13 +5,13 @@
 /***************************************************************************/
 
 /* Version number of project */
-#define CGL_VERSION "0.58.9"
+#define CGL_VERSION "0.59.9"
 
 /* Major Version number of project */
 #define CGL_VERSION_MAJOR 0
 
 /* Minor Version number of project */
-#define CGL_VERSION_MINOR 58
+#define CGL_VERSION_MINOR 59
 
 /* Release Version number of project */
 #define CGL_VERSION_RELEASE 9
diff --git a/test/Makefile.am b/test/Makefile.am
index ccbb94c..7737f3a 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -2,7 +2,7 @@
 # All Rights Reserved.
 # This file is distributed under the Eclipse Public License.
 
-## $Id: Makefile.am 1113 2013-04-06 13:28:20Z stefan $
+## $Id: Makefile.am 1110 2013-04-06 13:19:05Z stefan $
 
 # Author:  Andreas Waechter           IBM    2006-04-13
 
diff --git a/test/Makefile.in b/test/Makefile.in
index 81db577..33292c8 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -117,6 +117,10 @@ COIN_CXX_IS_CL_FALSE = @COIN_CXX_IS_CL_FALSE@
 COIN_CXX_IS_CL_TRUE = @COIN_CXX_IS_CL_TRUE@
 COIN_HAS_COINUTILS_FALSE = @COIN_HAS_COINUTILS_FALSE@
 COIN_HAS_COINUTILS_TRUE = @COIN_HAS_COINUTILS_TRUE@
+COIN_HAS_DOXYGEN_FALSE = @COIN_HAS_DOXYGEN_FALSE@
+COIN_HAS_DOXYGEN_TRUE = @COIN_HAS_DOXYGEN_TRUE@
+COIN_HAS_LATEX_FALSE = @COIN_HAS_LATEX_FALSE@
+COIN_HAS_LATEX_TRUE = @COIN_HAS_LATEX_TRUE@
 COIN_HAS_OSICLP_FALSE = @COIN_HAS_OSICLP_FALSE@
 COIN_HAS_OSICLP_TRUE = @COIN_HAS_OSICLP_TRUE@
 COIN_HAS_OSICPX_FALSE = @COIN_HAS_OSICPX_FALSE@
@@ -297,6 +301,7 @@ coin_doxy_tagfiles = @coin_doxy_tagfiles@
 coin_doxy_tagname = @coin_doxy_tagname@
 coin_doxy_usedot = @coin_doxy_usedot@
 coin_have_doxygen = @coin_have_doxygen@
+coin_have_latex = @coin_have_latex@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
 have_autoconf = @have_autoconf@
diff --git a/test/unitTest.cpp b/test/unitTest.cpp
index 00feaf0..e941b44 100644
--- a/test/unitTest.cpp
+++ b/test/unitTest.cpp
@@ -1,4 +1,4 @@
-// $Id: unitTest.cpp 1123 2013-04-06 20:47:24Z stefan $
+// $Id: unitTest.cpp 1114 2013-04-06 14:00:12Z stefan $
 // Copyright (C) 2000, International Business Machines
 // Corporation and others.  All Rights Reserved.
 // This code is licensed under the terms of the Eclipse Public License (EPL).

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/coinor-cgl.git



More information about the debian-science-commits mailing list