diff --git a/Code/DanBias.sln b/Code/DanBias.sln
index b02fd49b..68ed1d24 100644
--- a/Code/DanBias.sln
+++ b/Code/DanBias.sln
@@ -25,9 +25,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkDependencies", "Netw
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}"
ProjectSection(ProjectDependencies) = postProject
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2} = {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274} = {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A} = {22C0C4D8-6C43-406A-9CDB-76A4F800971A}
+ {D4985405-3286-4026-BD61-E9E53DC5027E} = {D4985405-3286-4026-BD61-E9E53DC5027E}
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8} = {C933A737-D7BA-4136-95AF-D12310BD6BA8}
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B} = {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasGame", "Game\DanBiasGame\DanBiasGame.vcxproj", "{2A1BC987-AF42-4500-802D-89CD32FC1309}"
@@ -44,19 +44,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameP
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Physics lab", "Physics lab\Physics lab.vcxproj", "{5128BD77-6472-4C4A-BE6F-724AD0E589C2}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletCollision", "Physics\BulletCollision\BulletCollision.vcxproj", "{B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletCollision", "Physics\src\BulletCollision\BulletCollision.vcxproj", "{C933A737-D7BA-4136-95AF-D12310BD6BA8}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletDynamics", "Physics\BulletDynamics\BulletDynamics.vcxproj", "{6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinearMath", "Physics\src\LinearMath\LinearMath.vcxproj", "{D4985405-3286-4026-BD61-E9E53DC5027E}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinearMath", "Physics\LinearMath\LinearMath.vcxproj", "{22C0C4D8-6C43-406A-9CDB-76A4F800971A}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletDynamics", "Physics\src\BulletDynamics\BulletDynamics.vcxproj", "{74EDC06C-85E5-47BC-B42D-F55CE6E9928B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -464,24 +462,6 @@ Global
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Win32.ActiveCfg = Debug|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Win32.Build.0 = Debug|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|x64.ActiveCfg = Debug|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|x64.Build.0 = Debug|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.MinSizeRel|Win32.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.MinSizeRel|x64.ActiveCfg = Release|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Mixed Platforms.Build.0 = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Win32.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Win32.Build.0 = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|x64.ActiveCfg = Release|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|x64.Build.0 = Release|x64
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32
- {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -530,66 +510,66 @@ Global
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Debug|Win32.ActiveCfg = Debug|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Debug|Win32.Build.0 = Debug|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Debug|x64.ActiveCfg = Debug|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Release|Mixed Platforms.Build.0 = Release|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Release|Win32.ActiveCfg = Release|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Release|Win32.Build.0 = Release|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.Release|x64.ActiveCfg = Release|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Debug|Win32.ActiveCfg = Debug|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Debug|Win32.Build.0 = Debug|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Debug|x64.ActiveCfg = Debug|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Release|Mixed Platforms.Build.0 = Release|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Release|Win32.ActiveCfg = Release|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Release|Win32.Build.0 = Release|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.Release|x64.ActiveCfg = Release|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Debug|Win32.ActiveCfg = Debug|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Debug|Win32.Build.0 = Debug|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Debug|x64.ActiveCfg = Debug|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Release|Mixed Platforms.Build.0 = Release|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Release|Win32.ActiveCfg = Release|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Release|Win32.Build.0 = Release|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.Release|x64.ActiveCfg = Release|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Win32.Build.0 = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|x64.ActiveCfg = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Win32.ActiveCfg = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Win32.Build.0 = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|x64.ActiveCfg = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Win32.Build.0 = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|x64.ActiveCfg = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Win32.ActiveCfg = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Win32.Build.0 = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|x64.ActiveCfg = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Win32.Build.0 = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|x64.ActiveCfg = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Mixed Platforms.ActiveCfg = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Mixed Platforms.Build.0 = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Win32.ActiveCfg = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Win32.Build.0 = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|x64.ActiveCfg = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Mixed Platforms.Build.0 = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -606,8 +586,8 @@ Global
{060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A}
{143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A}
{666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A}
- {B84D4C8B-DF9F-4B41-994D-A6FFFA64F274} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
- {6BCE5708-BFA3-4DE3-9942-E521A8A4EFE2} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
- {22C0C4D8-6C43-406A-9CDB-76A4F800971A} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
+ {D4985405-3286-4026-BD61-E9E53DC5027E} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B} = {0D86E569-9C74-47F0-BDB2-390C0C9A084B}
EndGlobalSection
EndGlobal
diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp
index a7d04f86..fb4b8479 100644
--- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp
+++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp
@@ -465,13 +465,13 @@ void GameState::Protocol( ObjPos* pos )
if(privData->object[i]->GetId() == pos->object_ID)
{
privData->object[i]->setPos(world);
-
+ Oyster::Math::Float3 pos = Oyster::Math::Float3(0, 600, 15);
if(i == myId) // playerobj
{
Oyster::Math::Float3 right = Oyster::Math::Float3(world[0], world[1], world[2]);
Oyster::Math::Float3 up = Oyster::Math::Float3(world[4], world[5], world[6]);
Oyster::Math::Float3 objForward = (Oyster::Math::Float3(world[8], world[9], world[10]));
- Oyster::Math::Float3 pos = Oyster::Math::Float3(world[12], world[13], world[14]);
+
Oyster::Math::Float3 cameraLook = camera->GetLook();
@@ -496,6 +496,7 @@ void GameState::Protocol( ObjPos* pos )
camera->UpdateViewMatrix();
}
+ camera->SetPosition(pos);
}
}
}
diff --git a/Code/GamePhysics/GamePhysics.vcxproj b/Code/GamePhysics/GamePhysics.vcxproj
index 813d87c6..a9746245 100644
--- a/Code/GamePhysics/GamePhysics.vcxproj
+++ b/Code/GamePhysics/GamePhysics.vcxproj
@@ -89,7 +89,7 @@
Level3
Disabled
- $(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;$(SolutionDir)Physics\src;%(AdditionalIncludeDirectories)
+ $(SolutionDir)Misc;$(SolutionDir)OysterMath;$(SolutionDir)OysterPhysics3D;$(SolutionDir)Physics\Bullet Source\src;%(AdditionalIncludeDirectories)
_WINDLL;PHYSICS_DLL_EXPORT;%(PreprocessorDefinitions)
false
@@ -97,7 +97,7 @@
true
- $(SolutionDir)Physics/Debug/BulletCollision_Debug.lib;$(SolutionDir)Physics/Debug/BulletDynamics_Debug.lib;$(SolutionDir)Physics/Debug/LinearMath_Debug.lib;%(AdditionalDependencies)
+ $(SolutionDir)Physics/lib/debug/BulletCollision_Debug.lib;$(SolutionDir)Physics/lib/debug/BulletDynamics_Debug.lib;$(SolutionDir)Physics/lib/debug/LinearMath_Debug.lib;%(AdditionalDependencies)
diff --git a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
index ca18dc1c..10a2e336 100644
--- a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
+++ b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp
@@ -67,7 +67,7 @@ void SimpleRigidBody::SetSubscription(EventAction_AfterCollisionResponse functio
void SimpleRigidBody::CallSubsciptMessage(ICustomBody* bodyA, ICustomBody* bodyB, Oyster::Math::Float kineticEnergyLoss)
{
- this->CallSubsciptMessage(bodyA, bodyB, kineticEnergyLoss);
+ return;
}
btDefaultMotionState* SimpleRigidBody::GetMotionState() const
diff --git a/Code/Physics/ALL_BUILD.vcxproj b/Code/Physics/ALL_BUILD.vcxproj
new file mode 100644
index 00000000..545f3181
--- /dev/null
+++ b/Code/Physics/ALL_BUILD.vcxproj
@@ -0,0 +1,244 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ MinSizeRel
+ Win32
+
+
+ RelWithDebInfo
+ Win32
+
+
+
+ {14E546AD-2393-41B9-BAA2-134241286A4E}
+ Win32Proj
+ Win32
+ ALL_BUILD
+
+
+
+ Utility
+ false
+ MultiByte
+ v110
+
+
+ Utility
+ false
+ MultiByte
+ v110
+
+
+ Utility
+ false
+ MultiByte
+ v110
+
+
+ Utility
+ false
+ MultiByte
+ v110
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.20506.1
+ $(Platform)\$(Configuration)\$(ProjectName)\
+ $(Platform)\$(Configuration)\$(ProjectName)\
+ $(Platform)\$(Configuration)\$(ProjectName)\
+ $(Platform)\$(Configuration)\$(ProjectName)\
+
+
+
+ C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\Glut;%(AdditionalIncludeDirectories)
+ $(IntDir)
+ %(Filename).h
+ %(Filename).tlb
+ %(Filename)_i.c
+ %(Filename)_p.c
+
+
+
+
+ C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\Glut;%(AdditionalIncludeDirectories)
+ $(IntDir)
+ %(Filename).h
+ %(Filename).tlb
+ %(Filename)_i.c
+ %(Filename)_p.c
+
+
+
+
+ C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\Glut;%(AdditionalIncludeDirectories)
+ $(IntDir)
+ %(Filename).h
+ %(Filename).tlb
+ %(Filename)_i.c
+ %(Filename)_p.c
+
+
+
+
+ C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\Glut;%(AdditionalIncludeDirectories)
+ $(IntDir)
+ %(Filename).h
+ %(Filename).tlb
+ %(Filename)_i.c
+ %(Filename)_p.c
+
+
+
+
+ Building Custom Rule C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt
+ setlocal
+"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" "-HC:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source" "-BC:/DV1477/Git Repository/Danbias/Code/Physics" --check-stamp-file "C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp"
+if %errorlevel% neq 0 goto :cmEnd
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeSystem.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCCompiler.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCXXCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\WindowsPaths.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeRCCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLU.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLUT.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\BulletConfig.cmake.in;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp
+ false
+ Building Custom Rule C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt
+ setlocal
+"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" "-HC:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source" "-BC:/DV1477/Git Repository/Danbias/Code/Physics" --check-stamp-file "C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp"
+if %errorlevel% neq 0 goto :cmEnd
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeSystem.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCCompiler.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCXXCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\WindowsPaths.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeRCCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLU.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLUT.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\BulletConfig.cmake.in;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp
+ false
+ Building Custom Rule C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt
+ setlocal
+"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" "-HC:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source" "-BC:/DV1477/Git Repository/Danbias/Code/Physics" --check-stamp-file "C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp"
+if %errorlevel% neq 0 goto :cmEnd
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeSystem.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCCompiler.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCXXCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\WindowsPaths.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeRCCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLU.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLUT.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\BulletConfig.cmake.in;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp
+ false
+ Building Custom Rule C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt
+ setlocal
+"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" "-HC:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source" "-BC:/DV1477/Git Repository/Danbias/Code/Physics" --check-stamp-file "C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp"
+if %errorlevel% neq 0 goto :cmEnd
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/Bullet Source/CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeSystem.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCCompiler.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeCXXCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\WindowsPaths.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\2.8.12.2\CMakeRCCompiler.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLU.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindOpenGL.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindGLUT.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\FindPackageMessage.cmake;C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeParseArguments.cmake;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\BulletConfig.cmake.in;C:\DV1477\Git Repository\Danbias\Code\Physics\Bullet Source\CMakeLists.txt;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\generate.stamp
+ false
+
+
+
+
+ Build all projects
+ setlocal
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/CMakeFiles/a6d6ba8aee0513ad68b7d519ca138700/ALL_BUILD.rule;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\ALL_BUILD
+ false
+ Build all projects
+ setlocal
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/CMakeFiles/a6d6ba8aee0513ad68b7d519ca138700/ALL_BUILD.rule;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\ALL_BUILD
+ false
+ Build all projects
+ setlocal
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/CMakeFiles/a6d6ba8aee0513ad68b7d519ca138700/ALL_BUILD.rule;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\ALL_BUILD
+ false
+ Build all projects
+ setlocal
+:cmEnd
+endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
+:cmErrorLevel
+exit /b %1
+:cmDone
+if %errorlevel% neq 0 goto :VCEnd
+ C:/DV1477/Git Repository/Danbias/Code/Physics/CMakeFiles/a6d6ba8aee0513ad68b7d519ca138700/ALL_BUILD.rule;%(AdditionalInputs)
+ C:\DV1477\Git Repository\Danbias\Code\Physics\CMakeFiles\ALL_BUILD
+ false
+
+
+
+
+
+
+
+ C933A737-D7BA-4136-95AF-D12310BD6BA8
+
+
+ 74EDC06C-85E5-47BC-B42D-F55CE6E9928B
+
+
+ 83B388D3-BE71-476A-AA6A-CC7082E3866D
+
+
+ 14DC504E-697F-4178-8E05-87173957FE59
+
+
+ 2CF89262-94E6-4A9F-A29A-1BE6D73DDA85
+
+
+ 80FC7669-D649-4212-8B6F-C0167CE9CB59
+
+
+ D4985405-3286-4026-BD61-E9E53DC5027E
+
+
+ FA9E3157-5228-4CA4-8327-BD0AF11BD390
+
+
+ 53399ED8-C4B0-4F84-9CA8-623049125822
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Code/Physics/BULLET_PHYSICS.sln b/Code/Physics/BULLET_PHYSICS.sln
new file mode 100644
index 00000000..b7c18743
--- /dev/null
+++ b/Code/Physics/BULLET_PHYSICS.sln
@@ -0,0 +1,162 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{14E546AD-2393-41B9-BAA2-134241286A4E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8} = {C933A737-D7BA-4136-95AF-D12310BD6BA8}
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B} = {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D} = {83B388D3-BE71-476A-AA6A-CC7082E3866D}
+ {14DC504E-697F-4178-8E05-87173957FE59} = {14DC504E-697F-4178-8E05-87173957FE59}
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85} = {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59} = {80FC7669-D649-4212-8B6F-C0167CE9CB59}
+ {D4985405-3286-4026-BD61-E9E53DC5027E} = {D4985405-3286-4026-BD61-E9E53DC5027E}
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390} = {FA9E3157-5228-4CA4-8327-BD0AF11BD390}
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletCollision", "src\BulletCollision\BulletCollision.vcxproj", "{C933A737-D7BA-4136-95AF-D12310BD6BA8}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletDynamics", "src\BulletDynamics\BulletDynamics.vcxproj", "{74EDC06C-85E5-47BC-B42D-F55CE6E9928B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletMultiThreaded", "src\BulletMultiThreaded\BulletMultiThreaded.vcxproj", "{83B388D3-BE71-476A-AA6A-CC7082E3866D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletSoftBody", "src\BulletSoftBody\BulletSoftBody.vcxproj", "{14DC504E-697F-4178-8E05-87173957FE59}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletSoftBodySolvers_DX11", "src\BulletMultiThreaded\GpuSoftBodySolvers\DX11\BulletSoftBodySolvers_DX11.vcxproj", "{2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletSoftBodySolvers_OpenCL_Mini", "src\BulletMultiThreaded\GpuSoftBodySolvers\OpenCL\MiniCL\BulletSoftBodySolvers_OpenCL_Mini.vcxproj", "{80FC7669-D649-4212-8B6F-C0167CE9CB59}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "INSTALL", "INSTALL.vcxproj", "{71641E56-5E9E-462B-844F-A9F8A6D82120}"
+ ProjectSection(ProjectDependencies) = postProject
+ {14E546AD-2393-41B9-BAA2-134241286A4E} = {14E546AD-2393-41B9-BAA2-134241286A4E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinearMath", "src\LinearMath\LinearMath.vcxproj", "{D4985405-3286-4026-BD61-E9E53DC5027E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MiniCL", "src\MiniCL\MiniCL.vcxproj", "{FA9E3157-5228-4CA4-8327-BD0AF11BD390}"
+ ProjectSection(ProjectDependencies) = postProject
+ {53399ED8-C4B0-4F84-9CA8-623049125822} = {53399ED8-C4B0-4F84-9CA8-623049125822}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "ZERO_CHECK.vcxproj", "{53399ED8-C4B0-4F84-9CA8-623049125822}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ MinSizeRel|Win32 = MinSizeRel|Win32
+ RelWithDebInfo|Win32 = RelWithDebInfo|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.Debug|Win32.Build.0 = Debug|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.Release|Win32.ActiveCfg = Release|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.Release|Win32.Build.0 = Release|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {14E546AD-2393-41B9-BAA2-134241286A4E}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Debug|Win32.Build.0 = Debug|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Win32.ActiveCfg = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.Release|Win32.Build.0 = Release|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {C933A737-D7BA-4136-95AF-D12310BD6BA8}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Debug|Win32.Build.0 = Debug|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Win32.ActiveCfg = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.Release|Win32.Build.0 = Release|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {74EDC06C-85E5-47BC-B42D-F55CE6E9928B}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.Debug|Win32.Build.0 = Debug|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.Release|Win32.ActiveCfg = Release|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.Release|Win32.Build.0 = Release|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {83B388D3-BE71-476A-AA6A-CC7082E3866D}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.Debug|Win32.ActiveCfg = Debug|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.Debug|Win32.Build.0 = Debug|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.Release|Win32.ActiveCfg = Release|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.Release|Win32.Build.0 = Release|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {14DC504E-697F-4178-8E05-87173957FE59}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.Debug|Win32.Build.0 = Debug|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.Release|Win32.ActiveCfg = Release|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.Release|Win32.Build.0 = Release|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {2CF89262-94E6-4A9F-A29A-1BE6D73DDA85}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.Debug|Win32.ActiveCfg = Debug|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.Debug|Win32.Build.0 = Debug|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.Release|Win32.ActiveCfg = Release|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.Release|Win32.Build.0 = Release|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {80FC7669-D649-4212-8B6F-C0167CE9CB59}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {71641E56-5E9E-462B-844F-A9F8A6D82120}.Debug|Win32.ActiveCfg = Debug|Win32
+ {71641E56-5E9E-462B-844F-A9F8A6D82120}.Release|Win32.ActiveCfg = Release|Win32
+ {71641E56-5E9E-462B-844F-A9F8A6D82120}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {71641E56-5E9E-462B-844F-A9F8A6D82120}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Debug|Win32.Build.0 = Debug|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Win32.ActiveCfg = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.Release|Win32.Build.0 = Release|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {D4985405-3286-4026-BD61-E9E53DC5027E}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.Debug|Win32.Build.0 = Debug|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.Release|Win32.ActiveCfg = Release|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.Release|Win32.Build.0 = Release|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {FA9E3157-5228-4CA4-8327-BD0AF11BD390}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.Debug|Win32.Build.0 = Debug|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.Release|Win32.ActiveCfg = Release|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.Release|Win32.Build.0 = Release|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+ {53399ED8-C4B0-4F84-9CA8-623049125822}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Code/Physics/Bullet Source/AUTHORS b/Code/Physics/Bullet Source/AUTHORS
new file mode 100644
index 00000000..f2cc86dd
--- /dev/null
+++ b/Code/Physics/Bullet Source/AUTHORS
@@ -0,0 +1,22 @@
+
+Bullet Physics Library is an open source project with help from the community at the Physics Forum
+See the forum at http://bulletphysics.com
+
+The project was started by Erwin Coumans
+
+Following people contributed to Bullet
+(random order, please let us know on the forum if your name should be in this list)
+
+Gino van den Bergen: LinearMath classes
+Christer Ericson: parts of the voronoi simplex solver
+Simon Hobbs: 3d axis sweep and prune, Extras/SATCollision, separating axis theorem + SIMD code
+Dirk Gregorius: generic D6 constraint
+Erin Catto: accumulated impulse in sequential impulse
+Nathanael Presson: EPA penetration depth calculation
+Francisco Leon: GIMPACT Concave Concave collision
+Joerg Henrichs: make buildsystem (work in progress)
+Eric Sunshine: jam + msvcgen buildsystem
+Steve Baker: GPU physics and general implementation improvements
+Jay Lee: Double precision support
+KleMiX, aka Vsevolod Klementjev, managed version, rewritten in C# for XNA
+Erwin Coumans: most other source code
diff --git a/Code/Physics/Bullet Source/BspDemo.bsp b/Code/Physics/Bullet Source/BspDemo.bsp
new file mode 100644
index 00000000..4ed414d7
Binary files /dev/null and b/Code/Physics/Bullet Source/BspDemo.bsp differ
diff --git a/Code/Physics/Bullet Source/BulletConfig.cmake.in b/Code/Physics/Bullet Source/BulletConfig.cmake.in
new file mode 100644
index 00000000..f5dc7bdb
--- /dev/null
+++ b/Code/Physics/Bullet Source/BulletConfig.cmake.in
@@ -0,0 +1,25 @@
+# -*- cmake -*-
+#
+# BulletConfig.cmake(.in)
+#
+
+# Use the following variables to compile and link against Bullet:
+# BULLET_FOUND - True if Bullet was found on your system
+# BULLET_USE_FILE - The file making Bullet usable
+# BULLET_DEFINITIONS - Definitions needed to build with Bullet
+# BULLET_INCLUDE_DIR - Directory where Bullet-C-Api.h can be found
+# BULLET_INCLUDE_DIRS - List of directories of Bullet and it's dependencies
+# BULLET_LIBRARIES - List of libraries to link against Bullet library
+# BULLET_LIBRARY_DIRS - List of directories containing Bullet' libraries
+# BULLET_ROOT_DIR - The base directory of Bullet
+# BULLET_VERSION_STRING - A human-readable string containing the version
+
+set ( BULLET_FOUND 1 )
+set ( BULLET_USE_FILE "@BULLET_USE_FILE@" )
+set ( BULLET_DEFINITIONS "@BULLET_DEFINITIONS@" )
+set ( BULLET_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@" )
+set ( BULLET_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@" )
+set ( BULLET_LIBRARIES "@BULLET_LIBRARIES@" )
+set ( BULLET_LIBRARY_DIRS "@LIB_DESTINATION@" )
+set ( BULLET_ROOT_DIR "@CMAKE_INSTALL_PREFIX@" )
+set ( BULLET_VERSION_STRING "@BULLET_VERSION@" )
\ No newline at end of file
diff --git a/Code/Physics/Bullet Source/BulletLicense.txt b/Code/Physics/Bullet Source/BulletLicense.txt
new file mode 100644
index 00000000..2e5680a8
--- /dev/null
+++ b/Code/Physics/Bullet Source/BulletLicense.txt
@@ -0,0 +1,18 @@
+/*
+Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+Free for commercial use, please report projects in the forum at http://www.bulletphysics.org
+
+In case you want to display a Bullet logo in your software: you can download the Bullet logo in various vector formats and high resolution at the download section in http://bullet.googlecode.com
diff --git a/Code/Physics/Bullet Source/CMakeLists.txt b/Code/Physics/Bullet Source/CMakeLists.txt
new file mode 100644
index 00000000..18a089a9
--- /dev/null
+++ b/Code/Physics/Bullet Source/CMakeLists.txt
@@ -0,0 +1,439 @@
+cmake_minimum_required(VERSION 2.4.3)
+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+#this line has to appear before 'PROJECT' in order to be able to disable incremental linking
+SET(MSVC_INCREMENTAL_DEFAULT ON)
+
+PROJECT(BULLET_PHYSICS)
+SET(BULLET_VERSION 2.82)
+
+IF(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+ENDIF(COMMAND cmake_policy)
+
+
+IF (NOT CMAKE_BUILD_TYPE)
+# SET(CMAKE_BUILD_TYPE "Debug")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF (NOT CMAKE_BUILD_TYPE)
+
+SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
+#MESSAGE("CMAKE_CXX_FLAGS_DEBUG="+${CMAKE_CXX_FLAGS_DEBUG})
+
+OPTION(USE_DOUBLE_PRECISION "Use double precision" OFF)
+OPTION(USE_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON)
+
+
+OPTION(USE_MSVC_RUNTIME_LIBRARY_DLL "Use MSVC Runtime Library DLL (/MD or /MDd)" OFF)
+OPTION(USE_MSVC_INCREMENTAL_LINKING "Use MSVC Incremental Linking" OFF)
+
+OPTION(USE_CUSTOM_VECTOR_MATH "Use custom vectormath library" OFF)
+
+IF (USE_CUSTOM_VECTOR_MATH)
+ ADD_DEFINITIONS(-DUSE_SYSTEM_VECTORMATH)
+ IF(WIN32)
+ SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/sse CACHE PATH "Vector Math library include path.")
+ ELSE(WIN32)
+ SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/scalar CACHE PATH "Vector Math library include path.")
+ ENDIF(WIN32)
+ENDIF(USE_CUSTOM_VECTOR_MATH)
+
+
+IF (APPLE OR MSVC)
+ OPTION(BUILD_MULTITHREADING "Use BulletMultiThreading" ON)
+ELSE()
+ OPTION(BUILD_MULTITHREADING "Use BulletMultiThreading" OFF)
+ENDIF()
+
+IF (BUILD_MULTITHREADING)
+ OPTION(USE_MULTITHREADED_BENCHMARK "Use Multithreaded Benchmark" OFF)
+ IF (USE_MULTITHREADED_BENCHMARK)
+ ADD_DEFINITIONS(-DUSE_PARALLEL_SOLVER_BENCHMARK -DUSE_PARALLEL_DISPATCHER_BENCHMARK)
+ ENDIF(USE_MULTITHREADED_BENCHMARK)
+
+ IF (MSVC OR APPLE)
+ OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)" ON)
+ ELSE()
+ OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)" OFF)
+ ENDIF(MSVC OR APPLE)
+
+ IF(MSVC)
+ FIND_PATH(DIRECTX_SDK_BASE_DIR Include/D3D11.h PATH $ENV{DXSDK_DIR} )
+ IF(DIRECTX_SDK_BASE_DIR)
+ OPTION(USE_DX11 "Use DirectX 11" ON)
+ ELSE()
+ OPTION(USE_DX11 "Use DirectX 11" OFF)
+ ENDIF()
+
+ FIND_PATH(AMD_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{ATISTREAMSDKROOT} $ENV{AMDAPPSDKROOT} )
+ IF(AMD_OPENCL_BASE_DIR)
+ #AMD adds an extras slash at the end of the ATISTREAMSDKROOT variable
+ SET(AMD_OPENCL_INCLUDES ${AMD_OPENCL_BASE_DIR}/include )
+ MESSAGE("AMD OPENCL SDK FOUND")
+ IF (CMAKE_CL_64)
+ SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86_64 )
+ ELSE(CMAKE_CL_64)
+ SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86 )
+ ENDIF(CMAKE_CL_64)
+ SET(CMAKE_ATISTREAMSDK_LIBRARY ${CMAKE_ATISTREAMSDK_LIBPATH}/OpenCL.lib )
+ OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" ON)
+ IF (CMAKE_CL_64)
+ SET(CMAK_GLEW_LIBRARY
+ ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glew64s.lib )
+ ELSE(CMAKE_CL_64)
+ SET(CMAK_GLEW_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glew32s.lib )
+ ENDIF(CMAKE_CL_64)
+ ELSE()
+ OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" OFF)
+ ENDIF()
+
+ FIND_PATH(INTEL_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{INTELOCLSDKROOT} )
+ IF(INTEL_OPENCL_BASE_DIR)
+ SET(INTEL_OPENCL_INCLUDES ${INTEL_OPENCL_BASE_DIR}/include )
+ MESSAGE("INTEL OPENCL SDK FOUND")
+ MESSAGE(${INTEL_OPENCL_INCLUDES})
+ IF (CMAKE_CL_64)
+ SET(CMAKE_INTELOCLSDK_LIBPATH ${INTEL_OPENCL_BASE_DIR}/lib/x64 )
+ ELSE(CMAKE_CL_64)
+ SET(CMAKE_INTELOCLSDK_LIBPATH ${INTEL_OPENCL_BASE_DIR}/lib/x86 )
+ ENDIF(CMAKE_CL_64)
+ SET(INTEL_OPENCL_LIBRARIES ${CMAKE_INTELOCLSDK_LIBPATH}/OpenCL.lib)
+ OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" ON)
+ ELSE()
+ OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" OFF)
+ ENDIF()
+
+ FIND_PATH(NVIDIA_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{CUDA_PATH} )
+ IF(NVIDIA_OPENCL_BASE_DIR)
+ SET(NVIDIA_OPENCL_INCLUDES ${NVIDIA_OPENCL_BASE_DIR}/include )
+ MESSAGE("NVIDIA OPENCL SDK FOUND")
+ MESSAGE(${NVIDIA_OPENCL_INCLUDES})
+ IF (CMAKE_CL_64)
+ SET(CMAKE_NVSDKCOMPUTE_LIBPATH ${NVIDIA_OPENCL_BASE_DIR}/lib/x64 )
+ ELSE(CMAKE_CL_64)
+ SET(CMAKE_NVSDKCOMPUTE_LIBPATH ${NVIDIA_OPENCL_BASE_DIR}/lib/Win32 )
+ ENDIF(CMAKE_CL_64)
+ SET(NVIDIA_OPENCL_LIBRARIES ${CMAKE_NVSDKCOMPUTE_LIBPATH}/OpenCL.lib)
+
+ OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" ON)
+ ELSE()
+ OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" OFF)
+ ENDIF()
+ ELSE(MSVC)
+ FIND_PATH(AMD_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{ATISTREAMSDKROOT} $ENV{AMDAPPSDKROOT} )
+ IF(AMD_OPENCL_BASE_DIR)
+ #AMD adds an extras slash at the end of the ATISTREAMSDKROOT variable
+ SET(AMD_OPENCL_INCLUDES ${AMD_OPENCL_BASE_DIR}/include )
+ MESSAGE("AMD OPENCL SDK FOUND")
+ MESSAGE(${AMD_OPENCL_INCLUDES})
+ IF (CMAKE_CL_64)
+ SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86_64 )
+ ELSE(CMAKE_CL_64)
+ SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86 )
+ ENDIF(CMAKE_CL_64)
+ OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" ON)
+ SET(CMAKE_ATISTREAMSDK_LIBRARY OpenCL )
+ ELSE()
+ OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" OFF)
+ ENDIF(AMD_OPENCL_BASE_DIR)
+
+ FIND_PATH(INTEL_OPENCL_INCLUDES CL/cl.h)
+ FIND_PATH(INTEL_OPENCL_ICD_CFG intelocl64.icd /etc/OpenCL/vendors)
+ FIND_LIBRARY(INTEL_OPENCL_LIBRARIES OpenCL PATH /usr/lib64)
+ IF (INTEL_OPENCL_INCLUDES AND INTEL_OPENCL_LIBRARIES AND INTEL_OPENCL_ICD_CFG)
+ MESSAGE("INTEL OPENCL SDK FOUND")
+ MESSAGE(${INTEL_OPENCL_LIBRARIES})
+ OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" ON)
+ ELSE ()
+ MESSAGE("INTEL OPENCL NOT FOUND")
+ OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" OFF)
+ ENDIF ()
+
+
+ FIND_PATH(NVIDIA_OPENCL_INCLUDES CL/cl.h)
+ FIND_PATH(NVIDIA_OPENCL_ICD_CFG nvidia.icd /etc/OpenCL/vendors)
+ FIND_LIBRARY(NVIDIA_OPENCL_LIBRARIES OpenCL PATH /usr/lib64 /usr/local/lib)
+ IF (NVIDIA_OPENCL_INCLUDES AND NVIDIA_OPENCL_LIBRARIES AND NVIDIA_OPENCL_ICD_CFG)
+ MESSAGE("NVidia OPENCL FOUND")
+ MESSAGE(${NVIDIA_OPENCL_LIBRARIES})
+ OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" ON)
+ ELSE ()
+ MESSAGE("NVidia OPENCL NOT FOUND")
+ OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" OFF)
+ ENDIF ()
+ ENDIF(MSVC)
+
+ELSE(BUILD_MULTITHREADING)
+# SET(BUILD_NVIDIA_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for NVidia" FORCE)
+# SET(BUILD_AMD_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for AMD" FORCE)
+# SET(BUILD_INTEL_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for Intel (CPU)" FORCE)
+# SET(BUILD_MINICL_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for MiniCL (Generic CPU)" FORCE)
+# SET(USE_DX11 OFF CACHE BOOL "Use DirectX 11" FORCE)
+# SET(USE_MULTITHREADED_BENCHMARK OFF CACHE BOOL "Use Multithreaded Benchmark" FORCE)
+ENDIF(BUILD_MULTITHREADING)
+
+
+
+
+#SET(CMAKE_EXE_LINKER_FLAGS_INIT "/STACK:10000000 /INCREMENTAL:NO")
+#SET(CMAKE_EXE_LINKER_FLAGS "/STACK:10000000 /INCREMENTAL:NO")
+
+#MESSAGE("MSVC_INCREMENTAL_YES_FLAG"+${MSVC_INCREMENTAL_YES_FLAG})
+
+
+IF(MSVC)
+ IF (NOT USE_MSVC_INCREMENTAL_LINKING)
+ #MESSAGE("MSVC_INCREMENTAL_DEFAULT"+${MSVC_INCREMENTAL_DEFAULT})
+ SET( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:NO")
+
+ STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/INCREMENTAL:NO ${replacementFlags}" )
+ MESSAGE("CMAKE_EXE_LINKER_FLAGS_DEBUG=${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+
+# STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags2 ${CMAKE_EXE_LINKER_FLAGS})
+# SET(CMAKE_EXE_LINKER_FLAGS ${replacementFlag2})
+# STRING(REPLACE "INCREMENTAL:YES" "" replacementFlags3 ${CMAKE_EXTRA_LINK_FLAGS})
+# SET(CMAKE_EXTRA_LINK_FLAGS ${replacementFlag3})
+
+
+ STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags3 ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
+ SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${replacementFlags3})
+ SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO ${replacementFlags3}" )
+
+ ENDIF (NOT USE_MSVC_INCREMENTAL_LINKING)
+
+ IF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
+ #We statically link to reduce dependancies
+ FOREACH(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+ IF(${flag_var} MATCHES "/MD")
+ STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+ ENDIF(${flag_var} MATCHES "/MD")
+ IF(${flag_var} MATCHES "/MDd")
+ STRING(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
+ ENDIF(${flag_var} MATCHES "/MDd")
+ ENDFOREACH(flag_var)
+ ENDIF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
+
+ IF (CMAKE_CL_64)
+ ADD_DEFINITIONS(-D_WIN64)
+ ELSE()
+ OPTION(USE_MSVC_SSE "Use MSVC /arch:sse option" ON)
+ IF (USE_MSVC_SSE)
+ ADD_DEFINITIONS(/arch:SSE)
+ ENDIF()
+ ENDIF()
+ OPTION(USE_MSVC_FAST_FLOATINGPOINT "Use MSVC /fp:fast option" ON)
+ IF (USE_MSVC_FAST_FLOATINGPOINT)
+ ADD_DEFINITIONS(/fp:fast)
+ ENDIF()
+ENDIF(MSVC)
+
+
+
+IF (WIN32)
+OPTION(INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES "Create MSVC projectfiles that can be distributed" OFF)
+
+IF (INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
+ SET (LIBRARY_OUTPUT_PATH ${BULLET_PHYSICS_SOURCE_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
+ SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR})
+ SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BULLET_PHYSICS_SOURCE_DIR})
+ SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BULLET_PHYSICS_SOURCE_DIR})
+ SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BULLET_PHYSICS_SOURCE_DIR})
+ SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BULLET_PHYSICS_SOURCE_DIR})
+ELSE()
+ SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
+ENDIF()
+
+
+
+OPTION(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES "Create MSVC projectfiles with relative paths" OFF)
+OPTION(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES "Add MSVC postfix for executable names (_Debug)" OFF)
+
+SET(CMAKE_DEBUG_POSTFIX "_Debug" CACHE STRING "Adds a postfix for debug-built libraries.")
+SET(CMAKE_MINSIZEREL_POSTFIX "_MinsizeRel" CACHE STRING "Adds a postfix for MinsizeRelease-built libraries.")
+SET(CMAKE_RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo" CACHE STRING "Adds a postfix for ReleaseWithDebug-built libraries.")
+
+
+
+
+
+IF (INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
+SET(CMAKE_SUPPRESS_REGENERATION 1)
+SET(CMAKE_USE_RELATIVE_PATHS 1)
+ENDIF(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
+
+ENDIF (WIN32)
+
+
+OPTION(BUILD_CPU_DEMOS "Build original Bullet CPU demos" ON)
+
+
+
+OPTION(INTERNAL_UPDATE_SERIALIZATION_STRUCTURES "Internal update serialization structures" OFF)
+IF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
+ADD_DEFINITIONS( -DBT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
+ENDIF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
+
+IF (USE_DOUBLE_PRECISION)
+ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION)
+SET( BULLET_DOUBLE_DEF "-DBT_USE_DOUBLE_PRECISION")
+ENDIF (USE_DOUBLE_PRECISION)
+
+IF(USE_GRAPHICAL_BENCHMARK)
+ADD_DEFINITIONS( -DUSE_GRAPHICAL_BENCHMARK)
+ENDIF (USE_GRAPHICAL_BENCHMARK)
+
+IF (WIN32)
+OPTION(USE_GLUT "Use Glut" ON)
+ADD_DEFINITIONS( -D_IRR_STATIC_LIB_ )
+ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
+ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
+ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
+
+IF (USE_GLUT AND MSVC)
+ string (REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+ remove_definitions(-D_WINDOWS )
+ENDIF()
+
+
+
+ELSE(WIN32)
+OPTION(USE_GLUT "Use Glut" ON)
+ENDIF(WIN32)
+
+
+IF(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+ENDIF(COMMAND cmake_policy)
+
+
+# This is the shortcut to finding GLU, GLUT and OpenGL if they are properly installed on your system
+# This should be the case.
+
+FIND_PACKAGE(OpenGL)
+IF (OPENGL_FOUND)
+ MESSAGE("OPENGL FOUND")
+ MESSAGE(${OPENGL_LIBRARIES})
+ELSE (OPENGL_FOUND)
+ MESSAGE("OPENGL NOT FOUND")
+ SET(OPENGL_gl_LIBRARY opengl32)
+ SET(OPENGL_glu_LIBRARY glu32)
+ENDIF (OPENGL_FOUND)
+
+# ADD_DEFINITIONS(-DBT_USE_FREEGLUT)
+
+FIND_PACKAGE(GLU)
+
+IF (USE_GLUT)
+ FIND_PACKAGE(GLUT)
+ IF (GLUT_FOUND)
+ MESSAGE("GLUT FOUND")
+ MESSAGE(${GLUT_glut_LIBRARY})
+ ELSE (GLUT_FOUND)
+ IF (MINGW)
+ MESSAGE ("GLUT NOT FOUND not found, trying to use MINGW glut32")
+ SET(GLUT_glut_LIBRARY glut32)
+ #TODO add better GLUT detection for MinGW
+ SET(GLUT_FOUND TRUE)
+ ENDIF (MINGW)
+ IF (MSVC)
+ SET(GLUT_FOUND TRUE)
+ IF (CMAKE_CL_64)
+ message("Win64 using Glut/glut64.lib")
+ SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut64.lib)
+ ELSE(CMAKE_CL_64)
+ message("Win32 using Glut/glut32.lib")
+ SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut32.lib)
+ ENDIF (CMAKE_CL_64)
+ INCLUDE_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/Glut)
+ ELSE()
+ MESSAGE("GLUT NOT FOUND")
+ ENDIF (MSVC)
+ ENDIF (GLUT_FOUND)
+
+ IF(NOT WIN32)
+ # This is added for linux. This should always work if everything is installed and working fine.
+ INCLUDE_DIRECTORIES(/usr/include /usr/local/include)
+ ENDIF()
+ENDIF(USE_GLUT)
+
+
+OPTION(BUILD_DEMOS "Set when you want to build the demos" ON)
+IF(BUILD_DEMOS)
+ IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos)
+ SUBDIRS(Demos)
+ ENDIF()
+ENDIF(BUILD_DEMOS)
+
+# "Demos_ps3")
+IF (MSVC)
+ IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
+ IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3 AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3)
+ MESSAGE("Demos_ps3 found")
+ SUBDIRS(Demos_ps3)
+ ENDIF()
+ ENDIF()
+ENDIF(MSVC)
+
+
+OPTION(BUILD_EXTRAS "Set when you want to build the extras" ON)
+IF(BUILD_EXTRAS)
+ SUBDIRS(Extras)
+ENDIF(BUILD_EXTRAS)
+
+#Maya Dynamica plugin is moved to http://dynamica.googlecode.com
+
+SUBDIRS(src)
+
+IF("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
+ OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
+ELSE()
+ IF(APPLE AND FRAMEWORK)
+ OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
+ ELSE()
+#by default, don't enable the 'INSTALL' option for Xcode and MSVC projectfiles
+ OPTION(INSTALL_LIBS "Set when you want to install libraries" OFF)
+ ENDIF()
+ENDIF()
+
+IF(INSTALL_LIBS)
+ SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
+ SET (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
+ ## the following are directories where stuff will be installed to
+ SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/bullet/" CACHE PATH "The subdirectory to the header prefix")
+ SET(PKGCONFIG_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
+ IF(NOT WIN32)
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc @ONLY)
+ INSTALL(
+ FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc
+ DESTINATION
+ ${PKGCONFIG_INSTALL_PREFIX})
+ ENDIF(NOT WIN32)
+ENDIF(INSTALL_LIBS)
+
+#INSTALL of other files requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ OPTION(INSTALL_EXTRA_LIBS "Set when you want extra libraries installed" OFF)
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+
+OPTION(BUILD_UNIT_TESTS "Build Unit Tests" OFF)
+
+IF (BUILD_UNIT_TESTS)
+ SUBDIRS(UnitTests)
+ENDIF()
+
+set (BULLET_CONFIG_CMAKE_PATH lib${LIB_SUFFIX}/cmake/bullet )
+list (APPEND BULLET_LIBRARIES LinearMath)
+list (APPEND BULLET_LIBRARIES BulletCollisions)
+list (APPEND BULLET_LIBRARIES BulletDynamics)
+list (APPEND BULLET_LIBRARIES BulletSoftBody)
+set (BULLET_USE_FILE ${CMAKE_INSTALL_PREFIX}/${BULLET_CONFIG_CMAKE_PATH}/UseBullet.cmake)
+configure_file ( ${CMAKE_SOURCE_DIR}/BulletConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
+ @ONLY ESCAPE_QUOTES
+ )
+install ( FILES ${CMAKE_SOURCE_DIR}/UseBullet.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
+ DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
+ )
diff --git a/Code/Physics/Bullet Source/COPYING b/Code/Physics/Bullet Source/COPYING
new file mode 100644
index 00000000..794842d9
--- /dev/null
+++ b/Code/Physics/Bullet Source/COPYING
@@ -0,0 +1,17 @@
+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2011 Erwin Coumans http://bulletphysics.org
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+All files in the Bullet/src folder are under this Zlib license.
+Files in the Extras and Demos folder may have a different license, see the respective files.
diff --git a/Code/Physics/Bullet Source/ChangeLog b/Code/Physics/Bullet Source/ChangeLog
new file mode 100644
index 00000000..f5c85c80
--- /dev/null
+++ b/Code/Physics/Bullet Source/ChangeLog
@@ -0,0 +1,795 @@
+Bullet Continuous Collision Detection and Physics Library
+Primary author and maintainer: Erwin Coumans
+
+This ChangeLog is incomplete, for an up-to-date list of all fixed issues see http://bullet.googlecode.com
+using http://tinyurl.com/yabmjjj
+
+2013 October 23
+ - Bullet 2.82 release
+ - See docs/BulletQuickstart.pdf or issue tracked for details.
+
+2012 September 10
+ - Bullet 2.81 release preparation
+
+2011 September 15
+ - Bullet 2.79 release, revision 2433 (mainly a bugfix release)
+ - Revert a change in 2.78 related to speculative contacts (it has undesired side effects)
+ - Use HACD Hierachical Approximate Convex Decomposition (thanks to Khaled Mammou and Sujeon Kim)
+ - Add Intel cmake-build support for OpenCL accelerated cloth/particle
+ - add premake4 build system support to autogenerate visual studio project files that can be shipped (see msvc folder)
+ - preliminary build support for Google NativeClient, using premake4 (see msvc folder)
+
+
+2011 April 8
+ - Bullet 2.78 release 2383
+ - Added FractureDemo
+ - Added Separatinx Axis Test and Polyhedral Clipping support (See InternalEdgeDemo)
+ - Added speculative contacts as CCD response method (See CcdPhysicsDemo)
+ - OpenCL and DirectCompute cloth as basic support for capsule collision
+
+2010 September 7
+ - autotools now uses CamelCase naming for libraries just like cmake:
+ libbulletdynamics -> libBulletDynamics, libbulletmath -> libLinearMath
+
+2010 July 21
+ - Preparing for Bullet 2.77 release, around revision r2135
+ - Added an OpenCL particle demo, running on NVidia, AMD and MiniCL
+ Thanks to NVidia for the original particle demo from their OpenCL SDK
+ - Added GPU deformable object solvers for OpenCL and DirectCompute, and a DirectX 11 cloth demo
+ Thanks to AMD
+ - Create a separate library for MiniCL,
+ MiniCL is a rudimentary OpenCL wrapper that allows to compile OpenCL kernels for multi-core CPU, using Win32 Threads or Posix
+ - Moved vectormath into Bullet/src, and added a SSE implementation
+ - Added a btParallelConstraintSolver, mainly for PlayStation 3 Cell SPUs (although it runs fine on CPU too)
+
+2010 March 6
+ - Dynamica Maya plugin (and COLLADA support) is moved to http://dynamica.googlecode.com
+
+2010 February
+ - Bullet 2.76 release, revision 2010
+ - support for the .bullet binary file format
+ - btInternalEdgeUtility to adjust unwanted collisions against internal triangle edges
+ - Improved Maya Dynamica plugin with better constraint authoring and .bullet file export
+
+
+2009 September 17
+ - Minor update to Bullet 2.75 release, revision 1776
+ - Support for btConvex2dShape, check out Bullet/Demos/Box2dDemo
+ - Fixes in build systems
+ - Minor fix in btGjkPairDetector
+ - Initialize world transform for btCollisionShape in constructor
+
+
+2009 September 6
+ - Bullet 2.75 release
+ - Added SPH fluid simulation in Extras, not integrated with rigid body / soft body yet
+ Thanks to Rama Hoetzlein to make this contribution available under the ZLib license
+ - add special capsule-capsule collider code in btConvexConvexCollisionAlgorithm, to speed up capsule-ragdolls
+ - soft body improvement: faster building of bending constraints
+ - soft body improvement: allow to disable/enable cluster self-collision
+ - soft body fix: 'exploding' soft bodies when using cluster collision
+ - fix some degenerate cases in continuous convex cast, could impact ray cast/convex cast
+ Thanks to Jacob Langford for the report and reproduction cases, see http://code.google.com/p/bullet/issues/detail?id=250&can=1&start=200
+ - re-enabled split impulse
+ - added btHinge2Constraint, btUniversalConstraint, btGeneric6DofSpringConstraint
+ - demonstrate 2D physics with 2D/3D object interaction
+
+
+2008 December 2
+ - Fix contact refresh issues with btCompoundShape, introduced with btDbvt acceleration structure in btCompoundCollisionAlgorithm
+ - Made btSequentialImpulseConstraintSolver 100% compatible with ODE quickstep
+ constraints can use 'solveConstraint' method or 'getInfo/getInfo2'
+
+2008 November 30
+ - Add highly optimized SIMD branchless PGS/SI solver innerloop
+
+2008 November 12
+ - Add compound shape export to BulletColladaConverter
+ Thanks to JamesH for the report: http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=12&t=2840
+ - Fix compiler build for Visual Studio 6
+ Thanks to JoF for the report: http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2841
+
+2008 November 11
+ - Add CProfileManager::dumpAll() to dump performance statistics to console using printf.
+ - Add support for interaction between btSoftBody and btCollisionObject/btGhostObject
+
+2008 November 8
+ - Fix PosixThreadSupport
+ - Add improved btHeightfieldTerrainShape support and new Demos/TerrainDemo
+ Thanks to tomva, http://code.google.com/p/bullet/issues/detail?id=63&can=1
+ - Moved kinematic character controller from Demos/CharacterDemo into src/BulletDynamics/Character/btKinematicCharacterController.cpp
+
+2008 November 6
+ - reduced default memory pool allocation from 40Mb to 3Mb. This should be more suitable for all platforms, including iPhone
+ - improved CUDA broadphase
+ - IBM Cell SDK 3.x support, fix ibmsdk Makefiles
+ - improved CMake support with 'install' and 'framework option
+
+2008 November 4
+ - add btAxisSweep::resetPool to avoid non-determinism due to shuffled linked list
+ Thanks to Ole for the contribution,
+
+2008 October 30
+ - disabled btTriangleMesh duplicate search by default, it is extremely slow
+ - added Extras/IFF binary chunk serialization library as preparation for in-game native platform serialization (planned COLLADA DOM -> IFF converter)
+
+2008 October 20
+ - added SCE Physics Effects box-box collision detection for SPU/BulletMultiThreaded version
+ See Bullet/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp
+ Thanks to Sony Computer Entertainment Japan, SCEI for the contribution
+
+2008 October 17
+ - Added btGhostObject support, this helps character controller, explosions, triggers and other local spatial queries
+
+2008 October 10
+ - Moved aabb to btBroadphaseProxy, improves rayTest dramatically. Further raytest improvements using the broadphase acceleration structures are planned
+ - Moved BulletMultiThreaded from Extras to /src/BulletMultiThreaded for better integration
+
+
+2008 October 3
+ - Add support for autoconf automake
+ ./autogen.sh and ./configure will create both Makefile and Jamfile. CMake and autogenerated Visual Studio projectfiles remain supported too.
+ - Improved ColladaConverter: plane shape export, and callback for shape construction to allow deletion of memory
+
+2008 Sept 30
+ - Improved Soft Body support, fixed issues related to soft body colliding against concave triangle meshes
+ - Shared more code between regular version and SPU/BulletMultiThreaded, in particular GJK/EPA
+
+2008 Sept 28
+ - Fixed rotation issues in Dynamic Maya Plugin
+
+2008 Sept 11
+ - Enable CCD motion clamping for btDiscreteDynamicsWorld, to avoid tunneling. A more advanced solution will be implemented in btContinuousDynamicsWorld.
+
+2008 Sept 7
+ - Add btScaledBvhTriangleMeshShape, to allow re-use of btBvhTriangleMeshShape of different sizes, without copying of the BVH data.
+
+2008 Sept 5
+ - Enabled Demos/ForkLiftDemo
+ Thanks Roman Ponomarev.
+
+2008 Sept 4
+ - Added btCudaBroadphase in Extras/CUDA: some research into accelerating Bullet using CUDA.
+ Thanks to the particle demo from the NVidia CUDA SDK.
+
+2008 Sept 3
+ - Several bug fixes and contributions related to inertia tensor, memory leaks etc.
+ Thanks to Ole K.
+
+2008 Sept 1
+ - Updated CDTestFramework, with latest version of OPCODE Array SAP. See Extras/CDTestFramework
+ Thanks to Pierre Terdiman for the update
+
+2008 August 25
+ - Walt Disney Studios contributes their in-house Maya Plugin for simulating Bullet physics, with options for other engines such as PhysBam or PhysX.
+ Thanks to Nicola Candussi and Arthur Shek
+
+2008 August 14
+ - Improved performance for btDbvtBroadphase, based on dual dynamic AABB trees (one for static, one for dynamic objects, where objects can move from one to the other tree)
+ Thanks to Nathanael Presson again, for all his work.
+
+2008 July 31
+ - Added Havok .hkx to COLLADA Physics .dae converter patch+information
+ - Fix btSubsimplexConvexCast
+ Thanks to Nacho, http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2422)
+ - Fix in rendering, GL_STENCIL
+ - btTriangleIndexVertexArray indices should be unsigned int/unsigned short int,
+ - Made InternalProcessAllTriangles virtual, thanks to
+ Both thank to Fullmetalcoder, http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2401
+ - clamp impulse for btPoint2PointConstraint
+ Thanks to Martijn Reuvers, http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2418
+ - Free memory of bvh, pass in scaling factor (optional)
+ Thanks to Roy Eltham, http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2375
+
+2008 July 27
+
+btDbvtBroadphase:
+ - Fixed a performance issues reported by 'reltham'
+ - Added btDbvtBroadphase::optimize() for people who want good performances right
+away or don't do dynamics.
+ - fixed compilation issues when DBVT_BP_PROFILE was set.
+btSoftBody:
+ - Fixed singular matrix issues related to polar decomposition (flat meshes).
+DemoApplication:
+ - Shadows (enable/disable through 'g' or DemoApplication::setShadows(bool)).
+ - Texture can be enable/disable through 'u'
+CDFramework:
+ - fixed compilation issues.
+ All thanks to Nathanael Presson
+
+2008 July 10
+ - Added btMultimaterialTriangleMeshShape and MultiMaterialDemo
+ Thanks to Alex Silverman for the contribution
+
+2008 June 30
+ - Added initial support for kinematic character controller
+ Thanks to John McCutchan
+
+2008 April 14
+ - Added ray cast support for Soft Bodies
+ Thanks to Nathanael Presson for the contribution
+
+2008 April 9
+ - Cleanup of Stan Melax ConvexHull, removed Extras/ConvexHull, moved sources into LinearMath/BulletCollision
+
+2008 April 4
+ - Added btSliderConstraint and demo
+ Thanks Roman Ponomarev
+
+2008 April 3
+ - Fixed btMinkowskiSumShape, and added hitpoint to btSubsimplexConvexCast
+
+2008 April 2
+ - Added Extras/CdTestFrameWork
+ Thanks Pierre Terdiman
+
+2008 April 1
+ - Added posix thread (pthread) support
+ Thanks Enrico
+
+2008 March 30
+ - Added Soft Body, cloth, rope and deformable volumes, including demos and interaction
+ Thanks Nathanael Presson for this great contribution
+
+ 2008 March 17
+ - Improved BulletColladaConverter
+ Thanks John McCutchan
+
+2008 March 15
+ - btMultiSapBroadphase in a working state. Needs more optimizations to be fully useable.
+ - Allow btOptimizedBvh to be used for arbitrary objects, not just triangles
+ - added quicksort to btAlignedObjectArray
+ - removed btTypedUserInfo, added btHashMap
+
+2008 March 30
+ - Moved quickstep solver and boxbox into Bullet/src folder
+ Thanks Russell L. Smith for permission to redistribute Open Dynamics Engine quickstep and box-box under the ZLib license
+
+2008 Feb 27
+ - Added initial version for Character Control Demo
+ - Applied fixes to IBM Cell SDK 3.0 build makefiles
+ Thanks Jochen and mojo for reporting/providing patch: http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1922
+
+2008 Feb 8
+ - Bugfixes in ConvexCast support against the world.
+ Thanks to Isgmasa for reporting/providing fix: http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1823
+
+2008 Feb 6
+ - Added btCapsuleShapeX and btCapsuleShapeZ for capsules around X and Z axis (default capsule is around Y)
+
+2008 Feb 3
+ - Added btTypedUserInfo, useful for serialization
+
+2008 Jan 31
+ - Add support for 16 and 32-bit indices for SPU / BulletMultiThreaded version.
+
+2008 Jan 29
+ - Added COLLADA Physics export/serialization/snapshot from any Bullet btDynamicsWorld. Saving the physics world into a text .xml file is useful for debugging etc.
+
+2008 Jan 23
+ - Added Stan Melax Convex Hull utility library in Extras/ConvexHull. This is useful to render non-polyhedral convex objects, and to simplify convex polyhedra.
+
+2008 Jan 14
+ - Add support for batch raycasting on SPU / BulletMultiThreaded
+
+2007 Dec 16
+ - Added btRigidBodyConstructionInfo, to make it easier to set individual setting (and leave other untouched) during rigid body construction.
+ Thanks Vangelis Kokkevis for pointing this out.
+ - Fixed memoryleak in the ConstraintDemo and Raytracer demo.
+ - Fixed issue with clearing forces/gravity at the end of the stepSimulation, instead of during internalSingleStepSimulation.
+ Thanks chunky for pointing this out: http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1780
+ - Disabled additional damping in rigid body by default, but enable it in most demos. Set btRigidBodyConstructionInfo m_additionalDamping to true to enable this.
+ - Removed obsolete QUICKPROF BEGIN/END_PROFILE, and enabled BT_PROFILE. Profiling is enabled by default (see Bullet/Demos/OpenGL/DemoApplication.cpp how to use this).
+ User can switch off profiling by enabling define BT_NO_PROFILE in Bullet/src/btQuickprof.h.
+
+2007 Dec 14
+ - Added Hello World and BulletMultiThreaded demos
+ - Add portable version of BulletMultiThreaded, through SequentialThreadSupport (non-parallel but sharing the same code-path)
+ - Add Cmake support for AllBulletDemos
+
+
+2007 Dec 11
+ - Moved the 'btRigidBody::clearForce' to the end of the stepSimulation, instead of in each substep.
+ See discussion http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1601
+ - Added btConvexPlaneCollisionAlgorithm, makes planes perform better, and prevents tunneling
+ Thanks Andy O'Neil for reporting the performance/functionality issue
+ - Fixes for IBM Cell SDK 3.0
+ Thanks to Jochen Roth for the patch.
+
+2007 Dec 10
+ - Fixes in btHeightfieldTerrainShape
+ Thanks to Jay Lee for the patch.
+
+2007 Dec 9
+ - Only update aabb of active objects
+ Thanks Peter Tchernev for reporting (http://bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1764 )
+ - Added workaround to compile libxml under Visual Studio 2008 Beta 2
+ - Make glui compile under MSVC 9.0 beta (vsnprintf is already defined)
+
+2007 Dec 6
+ - Added DynamicControlDemo, showing dynamic control through constraint motors
+ Thanks to Eddy Boxerman
+ - Add support for generic concave shapes for convex cast.
+ - Added convex cast query to collision world.
+ - Added workaround for OpenGL bug in Mac OS X 10.5.0 (Leopard)
+ - Added concave raycast demo
+ All above thanks to John McCutchan (JMC)
+ - Fixed issues that prevent Linux version to compile.
+ Thanks to Enrico for reporting and patch, see
+ - Fixed misleading name 'numTriangleIndices' into 'numTriangles'
+ Thanks Sean Tasker for reporting:
+
+2007 Nov 28:
+ - Added raycast against trianglemesh. Will be extended to object cast soon.
+ Thanks John McCutchan (JMC)
+ - make getNumPoints const correct, add const getPoints().
+ Thanks Dirk Gregorius
+ - Bugfix: allow btCollisionObjects (non-btRigidBody) to interact properly with btRigidBody for cache-friendly btSequentialImpulseConstraintSolver.
+ Thanks Andy O'Neil for pointing this out.
+ - Bugfix: don't fail if spheres have identical center, use arbitrary separating normal (1,0,0)
+ Thanks Sean Tasker for reporting! http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1681
+
+
+2007, November 20
+ - Added hierarchical profiling
+ - Fixed memory leak in btMultiSapBroadphase,
+ - Fixed hash function (typo, should use 2 proxies)
+ Thanks to Stephen (shatcher) for reporting and fixes! http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1696
+
+2007 Nov 11
+ - Fixed parallel solver (BulletMultiThreaded) friction issue
+ - Terminate Win32 Threads when closing the CcdPhysicsDemo (when USE_PARALLEL_SOLVER/USE_PARALLEL_DISPATCHER is defined)
+
+2007 Nov 6
+ - Added support for 16-bit indices for triangle meshes
+ - Added support for multiple mesh parts using btBvhTriangleMeshShape.
+ Thanks to Tim Johansson
+
+2007 Oct 22
+ - All memory allocations go through btAlignedAlloc/btAlignedFree. User can override this to verify memory leaks
+ - added a few more demos to AllBulletDemos
+ - fix for one of the constructors of btHingeConstraint
+ Thanks Marcus Hennix
+
+2007 Oct 20
+ - included glui, a GLUT/OpenGL based toolkit for some graphical user elements
+ Removed dynamic_cast from glui, to allow linkage without rtti
+ - added Box2D framework using glui, allowing all demos to run within one executable
+ Thanks Erin Catto for the FrameWork skeleton (http://www.box2d.org)
+
+2007 Ocy 17
+ - Allow user to pass in their own memory (stack and pool) allocators, through collisionConfiguration. See demos how to use this
+
+2007 Oct 14
+ - Included working version of Cell SPU parallel optimized version for Libspe2 SPU task scheduler.
+ This version compiles and runs on Playstation 3 Linux and IBM CellBlade, see BulletSpuOptimized.pdf for build instructions
+ (Official Playstation 3 developers can request a SPURS version through Sony PS3 Devnet.)
+ Thanks to IBM 'Extreme Blue' project for the contribution
+ http://www-913.ibm.com/employment/us/extremeblue/
+ Thanks Minh Cuong Tran, Benjamin Hoeferlin, Frederick Roth and Martina Huellmann
+ for various contributions to get this initial Libspe2 parallel version up and running.
+
+2007 Oct 13
+ - made 'btCollisionShape::calculateLocalInertia' const
+ Thanks to cgripeos, see http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1514
+ - applied a large patch to remove warnings
+ Thanks to Enrico, see http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1568
+ - removed SSE includes, added #incude for memset in Extras/quickstep, thanks Eternl Knight
+
+2007 Oct 11
+ - added Hashed Overlapping Pair Cache, recommended by Pierre Terdiman. It works like a charm, thanks Pierre and Erin Catto (code from Box2D)
+ - modified some margins inside btBoxShape, btCylinderShape and btSphereShape
+ - added cone debug rendering (for cones with x, y and z up-axis)
+ - added improvements for optional Extra/quickstep, thanks to Remotion
+ - some performance improvements for Bullet constraint solver
+
+2007 Sept 28
+ - upgraded GIMPACT to version 0.3
+ Thanks to Francisco Leon
+
+2007 Sept 27
+ - added contribution from IBM Extreme Blue project for Libspe2 support. This allow to execute BulletMultiThreaded on Cell SPU under PS3 Linux and Cell Blade. See http://www-913.ibm.com/employment/us/extremeblue
+ Thanks to Minh Cuong Tran, Frederick Roth, Martina Heullmann and Benjamin Hoeferlin.
+
+2007 Sept 13
+ - Improved btGenericD6Constraint. It can be used to create ragdolls (similar to the new btConeTwistConstraint). See GenericJointDemo
+ - Added support for Bullet constraints in the optional Extras/quickstep ODE solver. See CcdPhysicsDemo, enable #COMPARE_WITH_QUICKSTEP and add libquickstep to the dependencies.
+ For both patches/improvements thanks Francisco Leon/projectileman
+
+2007 Sept 10
+ - removed union from btQuadWordStorage, it caused issues under certain version of gcc/Linux
+
+2007 Sept 10
+ - Reverted constraint solver, due to some issues. Need to review the recent memory allocation changes.
+ - Fixed issue with kinematic objects rotating at low speed: quaternion was de-normalized, passing value > 1 into acosf returns #IND00 invalid values
+ - 16 byte memory alignment for BVH serialization
+ - memory cleanup for btPoolAllocator
+
+2007 Sept 9
+ - Added serialization for BVH/btBvhTriangleMeshShape, including endian swapping. See ConcaveDemo for an example.
+ Thanks to Phil Knight for the contribution.
+ - Fixed issues related to stack allocator/compound collision algorithm
+ Thanks Proctoid, http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=18&t=1460
+ - Increase some default memory pool settings, and added a fallback for the constraints solver to use heap memory
+ - Removed accidential testing code in btScalar.h related to operator new.
+ - Enable btAxis3Sweep and bt32BitAxis3Sweep to be linked in at the same time, using template
+
+2007 Sept 7
+ - Replaced several dynamic memory allocations by stack allocation and pool allocations
+ - Added branch-free quantized aabb bounding box overlap check, works better on Playstation 3 and XBox 360
+ Thanks to Phil Knight. Also see www.cellperformance.com for related articles
+ - Collision algorithms and settings for the memory/stack allocator can be done using btDefaultCollisionConfiguration
+ This is an API change. See demos how to modify existing implementations with a one-liner.
+ - Register several collision algorithms by default (sphere-sphere, sphere-box, sphere-triangle)
+ - Use other traveral method for BVH by default, this improves triangle mesh collision performance.
+
+2007 Aug 31
+ - fixed MSVC 6 build
+ Thanks Proctoid, http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1375
+ - fixed double precision build issues
+ Thanks Alex Silverman, http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1434
+
+2007 Aug 24
+ - fixed bug in btMatrix3x3::transposeTimes(const btMatrix3x3& m) const. Luckily it wasn't used in core parts of the library (yet).
+ Thanks to Jay Lee
+
+2007 Aug 15
+ - fixed bug in Extras/GIMPACT 0.2 related to moving triangle meshes
+ Thanks Thomas, http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1368
+
+2007 Aug 14
+ - added parallel constraint solver. Works on Playstation 3 Cell SPU and multi core (Win Threads on PC and XBox 360).
+ See Extras/BulletMultiThreaded for SpuSolverTask subfolder and SpuParallelSolver.cpp
+ Thanks Marten Svanfeldt (Starbreeze Studios)
+ - fixed some bugs related to parallel collision detection (Extras/BulletMultiThreaded)
+ Thanks Marten Svanfeldt (Starbreeze Studios)
+
+2007 Aug 2
+ - added compound and concave-convex (swapped) case for BulletMultiThreaded collision detection, thanks to Marten Svanfeldt
+ - refactored broadphase and overlapping pair cache. This allows performance improvement by combining multiple broadphases. This helps add/remove of large batches of objects and large worlds. See also Pierre Terdiman forum topic:
+ http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1329
+
+
+2007 July 27
+ - added Ragdoll Demo
+ Thanks to Marten Svanfeldt (Starbreeze Studios)
+
+ - added Vector Math library for SIMD 3D graphics linear algebra (vector, matrix, quaternion)
+ See Bullet/Extras/vectormathlibrary
+ Supports SIMD SSE, PowerPC PPU and Cell SPU (including PS3 Linux and CellBlade), as well as generic portable scalar version
+ Will be used to improve BulletMultiThreaded performance
+ Open Sourced by Sony Computer Entertainment Inc. under the new BSD license
+ - added SIMD math library
+ 4-way SIMD for common math functions like atan2f4, cosf4, floorf4, fabsf4, rsqrtf4 etc. Used by Vector Math library under PPU and SPU.
+ Supports PowerPC (PPU) and Cell SPU, including PS3 Linux and CellBlade.
+ See Bullet/Extras/simdmathlibrary
+ Open sourced by Sony Computer Entertainment Inc. under the new BSD license
+
+
+2007 July 25
+ - added several patches: per-rigidbody sleeping threshold. added Assert to prevent deletion of rigidbody while constraints are still pointing at it
+ Thanks to Marten Svanfeldt (Starbreeze Studios)
+
+2007 July 13
+ - fixed relative #include paths again. We can't use "../" relative paths: some compilers choke on it (it causes extreme long paths)
+ Within the libraries, we always need to start with "BulletCollision/" or "BulletDynamics/ or "LinearMath/"
+
+2007 July 10
+ - Updated Bullet User Manual
+
+2007 July 5
+ - added btConeTwistConstraint, especially useful for ragdolls. See Demos/RagdollDemo
+ Thanks to Marten Svanfeldt (Starbreeze Studios)
+
+2007 June 29
+ - btHeightfieldTerrainShape: Added heightfield support, with customizations
+ - Upgraded to GIMPACT 0.2, see Extras/GIMPACT and MovingConcaveDemo
+ - Several patches from Marten Svanfeldt (Starbreeze Studios)
+ Improved collision filtering (in broadphase and rigidbody)
+ Improved debug rendering
+ Allow to set collision filter group/mask in addRigidBody
+
+
+2007 June 15
+ - Changed btAlignedObjectArray to call copy constructor/replacement new for duplication, rather then assignment operator (operator=).
+
+2007 June 11
+ - Added multi-threading. Originally for Playstation 3 Cell SPU, but the same code can run using Win32 Threads using fake DMA transfers (memcpy)
+ Libspe2 support for Cell Blade / PS3 Linux is upcoming
+ See Extras/BulletMultiThreaded. Usage: replace btCollisionDispatcher by btSpuGatheringCollisionDispatcher
+
+ - Added managed Bullet library, entirely rewritten in C# for Windows and XBox 360 XNA
+ See Extras/BulletX
+ Thanks to KleMiX, aka Vsevolod Klementjev
+
+2007 May 31
+ - sign-bit went wrong in case of 32-bit broadphase, causing quantization problems.
+ Thanks DevO for reporting.
+
+2007 May 23
+ - Fixed quantization problem for planar triangle meshes in btOptimizedBvh
+ Thanks Phil Knight for reporting and helping to fix this bug.
+
+2007 May 20
+ - btAxisSweep3: Fixed a bug in btAxisSweep3 (sweep and prune) related to object removal. Only showed up when at least one btStaticPlaneShape was inserted.
+ Thanks tbp for more details on reproducing case.
+ - btAxisSweep3: Fixed issue with full 32bit precision btAxisSweep3 (define BP_USE_FIXEDPOINT_INT_32), it used only 0xffff/65536 for quantization instead of full integer space (0xffffffff)
+ - btRaycastVehicle: Added 'getForwardVector' and getCurrentSpeedKmHour utility functions
+ - Fixed local scaling issues (btConvexTriangleMeshShape, btBvhTriangleMeshShape, removed scaling from btMatrix3x3).
+ Thanks Volker for reporting!
+ - Added second filename search, so that starting BspDemo and ConvexDecompositionDemo from within Visual Studio (without setting the starting path) still works
+
+2007 April 22
+ - Added braking functionality to btRaycastVehicle
+ - Removed tons of warnings, under MSVC 2005 compilation in -W4
+
+2007 March 21
+ - Fixed issues: comma at end of enum causes errors for some compilers
+ - Fixed initialization bug in LocalRayResult ( m_localShapeInfo(localShapeInfo) )
+
+2007 March 20
+ - Added refit tree to quantized stackless tree, and updated ConcaveDemo as example.
+
+2007 March 17
+ - Added constraint solver optimizations, avoiding cross products during iterations, and gather rigidbody/constraint info in contiguous memory (btSolverBody/btSolverConstraint)
+ - These optimizations don't give large benefit yet, but it has good potential. Turned on by default. Can be switched off using solver->setSolverMode(SOLVER_RANDMIZE_ORDER).
+ - Enabled anti-jitter for rigid bodies. This is experimental, and can be switched off by setting a global (it is experimental so no proper interface) gJitterVelocityDampingFactor = 1.0;
+ - Fixed bug in islandmanifold.heapSort(btPersistentManifoldSortPredicate()); , thanks Noehrgel for reporting this (affected Sun Solaris)
+
+2007 March 12
+ - Added compile-time toggle between on 16-bit and 32-bit fixed-point SAP broadphase.
+ This allows the number of bodies to exceed 32767
+ - Enable useQuantizedAabbCompression on btTriangleMesh, see ColladaDemo
+
+2007 March 8
+ - Fixed bug in constraint/island sorting (caused by replacing STL by dedicated btAlignedObjectArray with heapSort)
+ Thanks Clemens Unterkofler for pointing this out!
+
+2007 March 6
+ - removed STL from the Bullet library: replace std::vector by btAlignedObjectArray. Also removed the std::set for overlapping pair set, and turned it into an overlapping pair array. The SAP only adds objects, never removed. Removal is postponed for during traversal of overlapping pairs (duplicates and non-overlapping pairs are removed during that traversal).
+ - added heap sort and binary search/linear search to btAlignedObjectArray
+ - fixed wrong cast, thanks Hamstray, http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1015
+
+
+2007 Feb 25
+ - Improved performance of convex collision shapes, cache local AABB instead of recomputation. This fixes issue with very slow performance in larger .bsp levels
+
+2007 Feb 24
+ - Added compressed/quantized AABB tree, 16 bytes per node, while supporting 32-bit (triangle) indices.
+ Should be faster and smaller then original version (quantized aabb check is done in integer space)
+ Original aabb tree nodes are still supported. They are 44 bytes, with full floating point precision and additional subPart index.
+ - added meter-unit scaling support in ColladaConverter.cpp
+
+2007 Feb 21
+ - Build system: updated bullet.pc.in library names
+ - Updated EPA comparison integration (missing parameter)
+
+2007 Jan 04
+ - fixed optimized AABB tree building: in some cases the tree building fails due to unbalanced trees, which generated stack overflow
+
+2006 Dec 15
+ - added contribution to allow double precision collision detection/dynamics. Define BT_USE_DOUBLE_PRECISION in your project and libraries that include Bullet
+
+2006 Dec 14
+ - merged contact and non-contact constraint solving into one loop, will improve stability of jointed bodies during collisions
+ - added first draft for hingeConstraint motor
+
+2006 Dec 8, Erwin Coumans
+ - preparation for SIMD: added btAlignedAllocator and btAlignedObjectArray, to replace stl std::vector, same interface, but compatible with 16 byte alignment
+ - cleaned up dependencies in autogenerated msvc projectfiles
+ - aligned btVector3 on 16 bytes boundary, under win32. see if developers will come up with problems
+
+2006 Dec 04, Erwin Coumans
+ Added btNearCallback. This is similar to Open Dynamics Engine (ODE) dNearCallback, but important differences:
+ - contact points are persistent (lifetime more then one frame, for warmstarting/incremental contact point management)
+ - continuous collision detection, time of impact
+ Added btRigidBody::isInWorld(), returns true if btRigidBody is inside a btCollisionWorld/btDynamicsWorld derived class
+ Added angularFactor to btRigidbody, this helps some character control (no angular impulse applied)
+
+
+2006 Nov 28
+ Moved StackAlloc from EPA into LinearMath/btStackAlloc
+ renamed internal class ConcaveShape into btConcaveShape
+ added btHeightfieldTerrainShape (not completed yet)
+
+2006 Nov 15 Nathanael Presson
+ Added EPA penetration depth algorithm, Expanding Polytope Algorithm
+ Added Pierre Terdiman penetration depth comparison/test DEMO
+ Fixed Bullet's Minkowski sampling penetration depth solver
+ Contributed by Nathanael Presson
+
+2006 Nov 11 Francisco Len Njera
+ Added GIMPACT trimesh collision detection: concave versus concave,
+ Contributed by Francisco Len Njera
+
+2006 Nov 2
+ Minor refactoring: btCollisionObject changes from struct into class, added accessor methods
+ Force use of btMotionState to synchronize graphics transform, disabled old btRigidBody constructor that accepts btTransform
+ Renamed treshold into threshold throughout the code
+
+2006 Oct 30
+ Enable decoupling of physics and graphics framerate using interpolation and internal fixed timestep, based on btMotionState
+ Enabled raycast vehicle demo (still needs tuning)
+ Refresh contact points, even when they are already persistent.
+ Fixed debugDraw colors (thanks pc0de for reporting)
+ Use Dispatcher in ConcaveConvexCollisionAlgorithm (so it uses the registered collision algorithm, not hardcoded convexconcave)
+ Improved performance of constraint solver by precalculating the cross product/impulse arm
+ Added collision comparison code: ODE box-box, also sphere-triangle
+ Added safety check into GJK, and an assert for AABB's that are very large
+ Fixed kinematic support (deriving velocities for animated objects)
+ Updated comparison/optional quickstep solver in Extras
+ UserCollisionAlgorithm demonstrates btTriangleMesh usage (easier trimesh compared to index array version)
+ Removed scaling from btTransform (we only want to deal with rigid transforms)
+
+2006 Oct 4
+ Fixed minor leak in btOptimizeBVH
+ Cleanup of btRigidBody construction
+ added getW() in btQuaternion
+ assert when setLinearVelocity is called on btRigidBody
+ renamed projectfile library from collada-dom to colladadom (to make VC6 happy)
+
+2006 Sept 27
+ Big Refactoring: renamed and moved files, create a replacement for CcdPhysicsEnvironment/CcdPhysicsController.
+ All Bullet classes in LinearMath, BulletCollision and BulletDynamics start with bt, and methods start with lowercase.
+ Moved classes into src folder, which is the only include folder needed.
+ Added 2 headerfiles in src: btBulletCollisionCommon.h and btBulletDynamicsCommon.h
+
+2006 Sept 23
+ Fixed 2 bugs, causing crashes when removing objects. Should do better unit-testing. UnionFind and 3D SAP were involved.
+
+2006 Sept 19
+ Allow programmable friction and contact solver model. User can register their own functions for several interaction types.
+ Improved performance, and removed hardcoded maximum overlaps (switched from C-array to stl::set)
+
+2006 Sept 16
+ Added Bullet 2.0 User Manual
+ Allow registration of custom user collision algorithms
+
+2006 Sept 10
+ Started cleaning up demos
+
+2006 Sept 4
+ Fixed concave collision bug (caused instability/missing collisions in meshes/compounds)
+ Fixed memoryleak in OptimizedBvh, added RayTestSingle to CollisionWorld
+ Prepared for VehicleDemo
+ Increased Performance (island generation for sleeping objects took too much time)
+ Better COLLADA 1.4.1 physics conformance in ColladaDemo
+
+2006 August 11
+ Added Quake BspDemo
+ Improved CCD for compound and non-convex objects
+
+2006 August 10
+ Added per-triangle material (friction/restitution) support for non-convex meshes. See ConcaveDemo for usage.
+
+2006 August 9
+ Added CMake support (see http://cmake.org)
+ This can autogenerate makefiles, projectfiles cross platform (including MacOS X Xcode )
+ Just run cmake . in the root folder and it will autogenerate build files
+
+2006 July 26 Erwin Coumans
+ Upgraded to COLLADA-DOM 1.4.1, latest SVN version
+ ColladaDemo can export snapshots to .dae
+
+2006 July 24 Erwin Coumans
+ Added Compound CollisionShape support
+ (this is still low performance -> requires stackless tree-versus-tree traversal for better performance)
+
+2006 July 15 Erwin Coumans
+ Added initial support for Parallel execution (collision detection, constraint solving)
+ See ParallelPhysicsEnvironment in Extras\PhysicsInterface\CcdPhysics
+
+2006 July 10 Erwin Coumans
+ Added MacOS X support (some build issues mainly)
+
+2006 July 5 Erwin Coumans
+ Improved COLLADA 1.4 physics import, both COLLADA-DOM and FCollada
+
+2006 June 29 Erwin Coumans
+ Refactoring of the broadphase
+ Moved some optional files to Extras: Algebraic ccd and EPA, quickstep
+ Moved the limits on bodies/overlap to 32k and 65k
+
+2006 June 25 Erwin Coumans
+ Added basic Collision Filtering, during broadphase
+ Allow adding meshes to the TriangleIndexVertexArray,
+ (input for TriangleMeshShape)
+ Preparation for CompoundShape
+
+2006 June 19 Erwin Coumans
+ Added support for COLLADA Physics Import.
+ Both jam and Visual Studio can compile ColladaDemo
+
+2006 June 18 Dirk Gregorius
+ Started implementing Generic6DOF joint and setup basic interface
+
+
+2006 June 17 Frank Richter
+ Bumped version in configure.ac to 1.5.6 (assuming that "1.5f" is
+ the next version released).
+ Updated files in mk/autoconf and mk/jam with copies from CS; fixes a
+ GLU detection issue on MinGW.
+ Set msvc/bullet_ico.ico as the default application icon.
+ Disabled exceptions for gcc builds.
+ Applied a patch from Michael D. Adams to fix a warning with gcc.
+2006 jUNE 16 Erwin Coumans
+ Constraints now merge simulation islands.
+
+2006 May 24
+ Improved GJK accuracy, fixed GjkConvexCast issue, thanks to ~MyXa~ for reporting
+
+2006 May 19
+ Added restitution support
+ Moved out Friction and Dynamics info from ManifoldPoint (removed logical dependency)
+ Added a void* m_userPersistentData in ManifoldPoint.
+ Added a ContactDestroyedCallback, to allow user to handle destruction of m_userPersistentData
+
+2006 May 13
+ Fixed some bugs in friction / jacobian calculations. Reported by Dirk Gregorius. Thanks!
+
+2006 May 9
+ Fixed raycasting filtering
+ Moved repository to SVN at https://svn.sourceforge.net/svnroot/bullet
+
+2006 April 27
+ Moved raycasting to CollisionWorld, to make it more generic
+ Added basic CCD option in the CcdCollisionDemo
+ Fixed 'noResponse' mode, for triggering rigidbodies (useful for Artificial Intelligence queries)
+ Improved Bullet/ODE sample (in Extras)
+
+2006 April 10
+ Separating Axis Test (SAT) convex hull collision detector, contribution by Simon Hobbs
+ Added SIMD SSE Math classes (for above SAT)
+ Added Mouse picking in CcdPhysicsDemo
+ Improved penetration depth estimation in MinkowskiPenetrationDepthSolver, both accuracy and performance
+ Added Hinge constraint
+ Added quickprof profiling (see http://sourceforge.net/projects/quickprof )
+
+2006 March 21 Frank Richter
+ Removed VC manifest files.
+ Removed superfluous "grpplugins" projects.
+
+2006 March 20 Erwin Coumans
+ Clamped the acculumated impulse rather then intermediate impulse (within the iteration)
+ Use the persistent contacts for reusing the impulse
+ Separated friction and normal solving for better stability
+ Decreased the default number of iterations of the constraint solver from 10 to 4
+
+2006 March 19 Frank Richter
+ Removed a couple of CSisms from the VC projects.
+ Fixed VC include & lib paths to go to the Addtional* options
+ instead the command line arguments.
+ Added pkgconfig support.
+
+2006 March 14 Frank Richter
+ Added support for shipped GLUT on MinGW.
+ Fixed GLUT support on MinGW.
+
+2006 March 13 Frank Richter
+ Bolted on Jam-based build system.
+ Generated VC project files.
+ Fixed GCC warnings.
+ Fixed Linux build issues.
+
+2006 March 13
+Added 3D Sweep and Prune Broadphase Collision Detection, Contribution from Simon Hobbs.
+
+2006 March 2
+ Minor change in license to ZLib/LibPNG
+ This makes it legally a bit easier to deploy on Playstation 3
+ Prepared for more generic constraints, added ConstraintsDemo
+
+2006 Feb 23
+ Rearranged files and dependencies to allow for easier standalone Collision Detection without Bullet Dynamics.
+ See Demos/CollisionInterfaceDemo and Extras/ode/ode/test/test_BulletGjk.cpp for examples how to use.
+
+2005 August 6
+ Bullet 0.2 release with demos, sources, doxygen, draft manual
+
+2005 June 1
+ First public release of Bullet
+
+
+... todo: add history
+
+2003 Initial version (continuous collision detection)
diff --git a/Code/Physics/Bullet Source/Doxyfile b/Code/Physics/Bullet Source/Doxyfile
new file mode 100644
index 00000000..d483fe4b
--- /dev/null
+++ b/Code/Physics/Bullet Source/Doxyfile
@@ -0,0 +1,780 @@
+# Doxyfile 1.2.4
+
+# This file describes the settings to be used by doxygen for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+
+
+
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+PROJECT_NAME = "Bullet Collision Detection & Physics Library"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY =
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
+# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian,
+# Polish, Portuguese and Slovene.
+
+OUTPUT_LANGUAGE = English
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these class will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH =
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a class diagram (in Html and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off.
+
+CLASS_DIAGRAMS = YES
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower case letters. If set to YES upper case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are adviced to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# The ENABLE_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = NO
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = src
+
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+FILE_PATTERNS = *.h *.cpp *.c
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command , where
+# is the value of the INPUT_FILTER tag, and is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse.
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = YES
+
+# HHC_LOCATION = "C:\Program Files\HTML Help Workshop\hhc.exe"
+HHC_LOCATION = "C:\Program Files (x86)\HTML Help Workshop\hhc.exe"
+
+
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+#HTML_STYLESHEET = "\\server\exchange\Software Development\Documentation\DoxyGen\doxygen.css"
+
+CHM_FILE = BulletDocs.chm
+HHC_LOCATION = "c:\program files\HTML Help Workshop\hhc.exe"
+GENERATE_CHI = YES
+BINARY_TOC = YES
+
+TOC_EXPAND = YES
+
+SHOW_DIRECTORIES = YES
+
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 1
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript and frames is required (for instance Netscape 4.0+
+# or Internet explorer 4.0+).
+
+GENERATE_TREEVIEW = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using a WORD or other.
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation. Warning: This feature
+# is still experimental and very incomplete.
+
+GENERATE_XML = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH = src
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED = "ATTRIBUTE_ALIGNED128(x)=x" \
+ "ATTRIBUTE_ALIGNED16(x)=x" \
+ "SIMD_FORCE_INLINE=inline" \
+ "VECTORMATH_FORCE_INLINE=inline" \
+ "USE_WIN32_THREADING=1"\
+ "USE_PTHREADS=1"\
+ "_WIN32=1"
+
+
+# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tagfiles.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other
+# documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented header file showing
+# the documented files that directly or indirectly include this file
+
+INCLUDED_BY_GRAPH = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+
+# delete intermediate dot files?
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
+
+# The CGI_NAME tag should be the name of the CGI script that
+# starts the search engine (doxysearch) with the correct parameters.
+# A script with this name will be generated by doxygen.
+
+CGI_NAME = search.cgi
+
+# The CGI_URL tag should be the absolute URL to the directory where the
+# cgi binaries are located. See the documentation of your http daemon for
+# details.
+
+CGI_URL =
+
+# The DOC_URL tag should be the absolute URL to the directory where the
+# documentation is located. If left blank the absolute path to the
+# documentation, with file:// prepended to it, will be used.
+
+DOC_URL =
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the
+# documentation is located. If left blank the directory on the local machine
+# will be used.
+
+DOC_ABSPATH =
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
+# is installed.
+
+BIN_ABSPATH = c:\program files\doxygen\bin
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to
+# documentation generated for other projects. This allows doxysearch to search
+# the documentation for these projects as well.
+
+EXT_DOC_PATHS =
diff --git a/Code/Physics/Glut/EmptyGL/GL/egl_cpx.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_cpx.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/egl_cpx.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_cpx.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/egl_defs.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_defs.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/egl_defs.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_defs.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/egl_logged.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_logged.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/egl_logged.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_logged.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/egl_tokens.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_tokens.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/egl_tokens.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_tokens.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/egl_void.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_void.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/egl_void.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/egl_void.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/gl.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/gl.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/gl.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/gl.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/glu.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/glu.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/glu.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/glu.h
diff --git a/Code/Physics/Glut/EmptyGL/GL/glut.h b/Code/Physics/Bullet Source/Glut/EmptyGL/GL/glut.h
similarity index 100%
rename from Code/Physics/Glut/EmptyGL/GL/glut.h
rename to Code/Physics/Bullet Source/Glut/EmptyGL/GL/glut.h
diff --git a/Code/Physics/Glut/GL/glew.h b/Code/Physics/Bullet Source/Glut/GL/glew.h
similarity index 100%
rename from Code/Physics/Glut/GL/glew.h
rename to Code/Physics/Bullet Source/Glut/GL/glew.h
diff --git a/Code/Physics/Glut/GL/glext.h b/Code/Physics/Bullet Source/Glut/GL/glext.h
similarity index 100%
rename from Code/Physics/Glut/GL/glext.h
rename to Code/Physics/Bullet Source/Glut/GL/glext.h
diff --git a/Code/Physics/Glut/GL/glut.h b/Code/Physics/Bullet Source/Glut/GL/glut.h
similarity index 100%
rename from Code/Physics/Glut/GL/glut.h
rename to Code/Physics/Bullet Source/Glut/GL/glut.h
diff --git a/Code/Physics/Glut/GL/glxew.h b/Code/Physics/Bullet Source/Glut/GL/glxew.h
similarity index 100%
rename from Code/Physics/Glut/GL/glxew.h
rename to Code/Physics/Bullet Source/Glut/GL/glxew.h
diff --git a/Code/Physics/Glut/GL/glxext.h b/Code/Physics/Bullet Source/Glut/GL/glxext.h
similarity index 100%
rename from Code/Physics/Glut/GL/glxext.h
rename to Code/Physics/Bullet Source/Glut/GL/glxext.h
diff --git a/Code/Physics/Glut/GL/wglew.h b/Code/Physics/Bullet Source/Glut/GL/wglew.h
similarity index 100%
rename from Code/Physics/Glut/GL/wglew.h
rename to Code/Physics/Bullet Source/Glut/GL/wglew.h
diff --git a/Code/Physics/Glut/GL/wglext.h b/Code/Physics/Bullet Source/Glut/GL/wglext.h
similarity index 100%
rename from Code/Physics/Glut/GL/wglext.h
rename to Code/Physics/Bullet Source/Glut/GL/wglext.h
diff --git a/Code/Physics/Glut/btGlutInclude.h b/Code/Physics/Bullet Source/Glut/btGlutInclude.h
similarity index 100%
rename from Code/Physics/Glut/btGlutInclude.h
rename to Code/Physics/Bullet Source/Glut/btGlutInclude.h
diff --git a/Code/Physics/Bullet Source/INSTALL b/Code/Physics/Bullet Source/INSTALL
new file mode 100644
index 00000000..0f42fb52
--- /dev/null
+++ b/Code/Physics/Bullet Source/INSTALL
@@ -0,0 +1,111 @@
+Bullet Collision Detection and Physics Library
+
+See also http://bulletphysics.org/mediawiki-1.5.8/index.php/Creating_a_project_from_scratch
+
+** Windows Compilation **
+
+ Open the Microsoft Visual Studio solution in msvc/20xx/BULLET_PHYSICS.sln
+
+Alternatively, use CMake to autogenerate a build system for Windows:
+
+ - Download/install CMake from www.cmake.org or package manager
+ - Use cmake-gui or
+ - List available build systems by running 'cmake' in the Bullet root folder
+ - Use cmake-gui
+ - Create a build system using the -G option for example:
+
+ cmake . -G "Visual Studio 9 2008" or
+ cmake . -G "Visual Studio 9 2008 Win64"
+
+
+** Linux Compilation **
+
+ - Download/install CMake from www.cmake.org or package manager
+ CMake is like autoconf in that it will create build scripts which are then
+ used for the actual compilation
+
+ - List available build systems by running 'cmake' in the Bullet root folder
+ - Create a build system using the -G option for example:
+
+ cmake . -G "Unix Makefiles"
+
+ - There are some options for cmake builds:
+ BUILD_SHARED_LIBS: default 'OFF', set to 'ON' to build .so libraries
+ BUILD_EXTRAS: default 'ON', compiles additional libraries in 'Extras'
+ BUILD_DEMOS: default 'ON', compiles applications found in 'Demos'
+ CMAKE_INSTALL_PREFIX: default '/usr/local', the installation path.
+ CMAKE_INSTALL_RPATH: if you install outside a standard ld search path,
+ then you should set this to the installation lib path.
+ CMAKE_BUILD_TYPE: default 'Release', can include debug symbols with
+ either 'Debug' or 'RelWithDebInfo'.
+ Other options may be discovered by 'cmake --help-variable-list' and
+ 'cmake --help-variable OPTION'
+
+ - Run 'cmake' with desired options of the form -DOPTION=VALUE
+ By default this will create the usual Makefile build system, but CMake can
+ also produce Eclipse or KDevelop project files. See 'cmake --help' to see
+ what "generators" are available in your environment, selected via '-G'.
+ For example:
+ cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebugInfo
+
+ - Assuming using the default Makefile output from cmake, run 'make' to
+ build, and then 'make install' if you wish to install.
+
+
+** Mac OS X Compilation **
+
+ - Download/install CMake from www.cmake.org or package manager
+ CMake is like autoconf in that it will create build scripts which are then
+ used for the actual compilation
+
+ - List available build systems by running 'cmake' in the Bullet root folder
+ - Create a build system using the -G option for example:
+
+ cmake . -G Xcode
+ cmake . -G "Unix Makefiles"
+
+ - There are some options for cmake builds:
+ BUILD_SHARED_LIBS: default 'OFF', set to 'ON' to build .dylib libraries
+ BUILD_EXTRAS: default 'ON', compiles additional libraries in 'Extras'
+ BUILD_DEMOS: default 'ON', compiles applications found in 'Demos'
+ CMAKE_INSTALL_PREFIX: default '/usr/local', the installation path.
+ CMAKE_INSTALL_NAME_DIR: if you install outside a standard ld search
+ path, then you should set this to the installation lib/framework path.
+ CMAKE_OSX_ARCHITECTURES: defaults to the native architecture, but can be
+ set to a semicolon separated list for fat binaries, e.g. ppc;i386;x86_64
+ CMAKE_BUILD_TYPE: default 'Release', can include debug symbols with
+ either 'Debug' or 'RelWithDebInfo'.
+
+ To build framework bundles:
+ FRAMEWORK: default 'OFF', also requires 'BUILD_SHARED_LIBS' set ON
+ If both FRAMEWORK and BUILD_SHARED_LIBS are set, will create
+ OS X style Framework Bundles which can be placed in
+ linked via the -framework gcc argument or drag into Xcode projects.
+ (If not framework, then UNIX style 'include' and 'lib' will be produced)
+
+ Other options may be discovered by 'cmake --help-variable-list' and
+ 'cmake --help-variable OPTION'
+
+ - Run 'cmake' with desired options of the form -DOPTION=VALUE
+ By default this will create the usual Makefile build system, but CMake can
+ also produce Eclipse or KDevelop project files. See 'cmake --help' to see
+ what "generators" are available in your environment, selected via '-G'.
+ For example:
+ cmake -DBUILD_SHARED_LIBS=ON -DFRAMEWORK=ON \
+ -DCMAKE_INSTALL_PREFIX=/Library/Frameworks \
+ -DCMAKE_INSTALL_NAME_DIR=/Library/Frameworks \
+ -DCMAKE_OSX_ARCHITECTURES='ppc;i386;x86_64' \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo
+
+ - Assuming using the default Makefile output from cmake, run 'make' to build
+ and then 'make install'.
+
+
+** Alternative Mac OS X and Linux via autoconf/make **
+ - at the command line:
+ ./autogen.sh
+ ./configure
+ make
+
+
+** For more help, visit http://www.bulletphysics.org **
diff --git a/Code/Physics/Bullet Source/Makefile.am b/Code/Physics/Bullet Source/Makefile.am
new file mode 100644
index 00000000..a9b97a8e
--- /dev/null
+++ b/Code/Physics/Bullet Source/Makefile.am
@@ -0,0 +1,7 @@
+if CONDITIONAL_BUILD_DEMOS
+SUBDIRS=src Extras Demos
+else
+SUBDIRS=src
+endif
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = bullet.pc
diff --git a/Code/Physics/Bullet Source/NEWS b/Code/Physics/Bullet Source/NEWS
new file mode 100644
index 00000000..dec9f0fd
--- /dev/null
+++ b/Code/Physics/Bullet Source/NEWS
@@ -0,0 +1,5 @@
+
+For news, visit the Bullet Physics forums at
+http://www.bulletphysics.org and http://bullet.googlecode.com
+
+
diff --git a/Code/Physics/Bullet Source/README b/Code/Physics/Bullet Source/README
new file mode 100644
index 00000000..1eda762c
--- /dev/null
+++ b/Code/Physics/Bullet Source/README
@@ -0,0 +1,6 @@
+
+Bullet is a 3D Collision Detection and Rigid Body Dynamics Library for games and animation.
+Free for commercial use, including Playstation 3, open source under the ZLib License.
+
+See the Bullet_User_Manual.pdf for more info and visit the Bullet Physics Forum at
+http://bulletphysics.org
diff --git a/Code/Physics/Bullet Source/RELEASING.TXT b/Code/Physics/Bullet Source/RELEASING.TXT
new file mode 100644
index 00000000..49d6ba40
--- /dev/null
+++ b/Code/Physics/Bullet Source/RELEASING.TXT
@@ -0,0 +1,36 @@
+This document details the steps necessary to package a release of Bullet.
+
+1) Preparing for release:
+
+update VERSION in several places (/VERSION file, /CMakeLists.txt, /configure.ac, /src/LinearMath/btScalar.h, /src/LinearMath/btSerializer.h around line 441)
+re-generate serialization structures, if they changed (/src/LinearMath/btSerializer.cpp using makesdna)
+update ChangeLog with larger/important changes
+regenerate MSVC project files using build/vs_all.bat
+create a Subversion tag revision in bullet.googlecode.com/svn/tags/bullet-
+
+2) Generating the release .zip:
+Do an SVN export on a Windows machine into the directory: bullet-X.YY
+prepare a zip file containing the directory
+
+3) Generating the release .tar.gz:
+Do an SVN export on a Unix machine into the directory: bullet-X.YY
+prepare a .tar.gz file containing the directory
+
+4) Uploading release to google code:
+
+Google Code Bullet downloads URL: http://code.google.com/p/bullet/downloads/list
+
+Title of release should follow this guide line: Bullet Physics SDK (revision)
+
+It is better to upload the .tar.gz before the .zip so that the .zip appears first in the list
+
+If the release is an Alpha/Beta or RC the tags should be: Type-Source, OpSys-ALL
+If the release is a final release the tags should be: Type-Source, OpSys-ALL, Featured
+
+5) Obsoleting old releases
+
+Edit the tags on old releases and add the 'Deprecated' tag
+
+6) Announcing final releases:
+
+Final release announcements are done here: http://bulletphysics.com/Bullet/phpBB3/viewforum.php?f=18
diff --git a/Code/Physics/Bullet Source/UseBullet.cmake b/Code/Physics/Bullet Source/UseBullet.cmake
new file mode 100644
index 00000000..5ed94874
--- /dev/null
+++ b/Code/Physics/Bullet Source/UseBullet.cmake
@@ -0,0 +1,10 @@
+# -*- cmake -*-
+#
+# UseBullet.cmake
+#
+
+
+add_definitions ( ${BULLET_DEFINITIONS} )
+include_directories ( ${BULLET_INCLUDE_DIRS} )
+link_directories ( ${BULLET_LIBRARY_DIRS} )
+
diff --git a/Code/Physics/Bullet Source/VERSION b/Code/Physics/Bullet Source/VERSION
new file mode 100644
index 00000000..90c00fa3
--- /dev/null
+++ b/Code/Physics/Bullet Source/VERSION
@@ -0,0 +1 @@
+2.82
diff --git a/Code/Physics/Bullet Source/acinclude.m4 b/Code/Physics/Bullet Source/acinclude.m4
new file mode 100644
index 00000000..0505895c
--- /dev/null
+++ b/Code/Physics/Bullet Source/acinclude.m4
@@ -0,0 +1,3054 @@
+# checkbuild.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_SPLIT_TUPLE(TUPLE, OUTPUT-VARIABLES)
+# Split a build-tuple into its component parts. A build tuple is
+# constructed by CS_CREATE_TUPLE() and is comprised of compiler flags,
+# linker flags, and library references. OUTPUT-VARIABLES is a
+# comma-delimited list of shell variables which should receive the
+# extracted compiler flags, linker flags, and library references,
+# respectively.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_SPLIT_TUPLE],
+ [CS_SPLIT([$1], [cs_dummy,$2], [@])
+ m4_map([_CS_SPLIT_TUPLE], [$2])])
+
+AC_DEFUN([_CS_SPLIT_TUPLE],
+ [$1=`echo $$1 | sed 'y%@%:@% %'`
+ ])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CREATE_TUPLE([CFLAGS], [LFLAGS], [LIBS])
+# Construct a build-tuple which is comprised of compiler flags, linker
+# flags, and library references. Build tuples are encoded so as to
+# preserve whitespace in each component. This makes it possible for
+# macros (such as CS_BUILD_IFELSE) which employ build tuples to accept
+# whitespace-delimited lists of tuples, and for shell "for" statements to
+# iterate over tuple lists without compromising whitespace embedded
+# within individual flags or library references.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CREATE_TUPLE], [`echo @$1@$2@$3 | sed 'y% %@%:@%'`])
+
+
+
+#------------------------------------------------------------------------------
+# CS_LANG_CFLAGS
+# Return the literal string CFLAGS if the current language is C. Return
+# the literal string CXXFLAGS if the current language is C++. Generic
+# compiler test macros which need to modify or save the compiler flags
+# can invoke this macro to get the name of the compiler flags environment
+# variable (either CFLAGS or CXXFLAGS) depending upon the current
+# language. For example:
+# CS_LANG_CFLAGS="$CS_LANG_CFLAGS -Wall"
+# With C, this expands to:
+# CFLAGS="$CFLAGS -Wall"
+# With C++, it expands to:
+# CXXFLAGS="$CXXFLAGS -Wall"
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_LANG_CFLAGS], [AC_LANG_CASE([C], [CFLAGS], [C++], [CXXFLAGS])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_BUILD_IFELSE([PROGRAM], [FLAGS], [LANGUAGE], [ACTION-IF-BUILT],
+# [ACTION-IF-NOT-BUILT], [OTHER-CFLAGS], [OTHER-LFLAGS],
+# [OTHER-LIBS], [INHIBIT-OTHER-FLAGS], [ERROR-REGEX])
+# Try building a program using the supplied compiler flags, linker flags,
+# and library references. PROGRAM is typically a program composed via
+# AC_LANG_PROGRAM(). PROGRAM may be omitted if you are interested only
+# in learning if the compiler or linker respects certain flags. LANGUAGE
+# is typically either C or C++ and specifies which compiler to use for
+# the test. If LANGUAGE is omitted, C is used. FLAGS is a whitespace
+# delimited list of build tuples. Tuples are created with
+# CS_CREATE_TUPLE() and are composed of up to three elements each. The
+# first element represents compiler flags, the second linker flags, and
+# the third libraries used when linking the program. Each tuple from
+# FLAGS is attempted in order. If you want a build attempted with no
+# special flags prior to builds with specialized flags, create an empty
+# tuple with CS_CREATE_TUPLE() at the start of the FLAGS list. If the
+# build is successful, then the shell variables cs_build_ok is set to
+# "yes", cs_build_cflags, cs_build_lflags, and cs_build_libs are set to
+# the tuple elements which resulted in the successful build, and
+# ACTION-IF-BUILT is invoked. Upon successful build, no further tuples
+# are consulted. If no tuple results in a successful build, then
+# cs_build_ok is set to "no" and ACTION-IF-NOT-BUILT is invoked.
+# OTHER-CFLAGS, OTHER-LFLAGS, and OTHER-LIBS specify additional compiler
+# flags, linker flags, and libraries which should be used with each tuple
+# build attempt. Upon successful build, these additional flags are also
+# reflected in the variables cs_build_cflags, cs_build_lflags, and
+# cs_build_libs unless INHIBIT-OTHER-FLAGS is a non-empty string. The
+# optional ERROR-REGEX places an additional constraint upon the build
+# check. If specified, ERROR-REGEX, which is a standard `grep' regular
+# expression, is applied to output captured from the compiler and linker.
+# If ERROR-REGEX matches, then the build is deemed a failure, and
+# cs_build_ok is set to "no". This facility is useful for broken build
+# tools which emit an error message yet still return success as a result.
+# In such cases, it should be possible to detect the failure by scanning
+# the tools' output.
+#
+# IMPLEMENTATION NOTES
+#
+# In Autoconf 2.57 and earlier, AC_LINK_IFELSE() invokes AC_TRY_EVAL(),
+# which does not provide access to the captured output. To work around
+# this limitation, we temporarily re-define AC_TRY_EVAL() as
+# _AC_EVAL_STDERR(), which leaves the captured output in conftest.err
+# (which we must also delete). In Autoconf 2.58, however,
+# AC_LINK_IFELSE() instead already invokes _AC_EVAL_STDERR() on our
+# behalf, however we must be careful to apply ERROR-REGEX within the
+# invocation AC_LINK_IFELSE(), since AC_LINK_IFELSE() deletes
+# conftest.err before it returns.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_BUILD_IFELSE],
+ [AC_LANG_PUSH(m4_default([$3],[C]))
+ cs_cflags_save="$CS_LANG_CFLAGS"
+ cs_lflags_save="$LDFLAGS"
+ cs_libs_save="$LIBS"
+ cs_build_ok=no
+ m4_ifval([$10], [m4_pushdef([AC_TRY_EVAL], [_AC_EVAL_STDERR]($$[1]))])
+
+ for cs_build_item in m4_default([$2],[CS_CREATE_TUPLE()])
+ do
+ CS_SPLIT_TUPLE(
+ [$cs_build_item],[cs_cflags_test,cs_lflags_test,cs_libs_test])
+ CS_LANG_CFLAGS="$cs_cflags_test $6 $cs_cflags_save"
+ LDFLAGS="$cs_lflags_test $7 $cs_lflags_save"
+ LIBS="$cs_libs_test $8 $cs_libs_save"
+ AC_LINK_IFELSE(m4_default([$1], [AC_LANG_PROGRAM([],[])]),
+ [m4_ifval([$10],
+ [AS_IF([AC_TRY_COMMAND(
+ [grep "AS_ESCAPE([$10])" conftest.err >/dev/null 2>&1])],
+ [cs_build_ok=no], [cs_build_ok=yes])],
+ [cs_build_ok=yes])])
+ AS_IF([test $cs_build_ok = yes], [break])
+ done
+
+ m4_ifval([$10], [m4_popdef([AC_TRY_EVAL]) rm -f conftest.err])
+ CS_LANG_CFLAGS=$cs_cflags_save
+ LDFLAGS=$cs_lflags_save
+ LIBS=$cs_libs_save
+ AC_LANG_POP(m4_default([$3],[C]))
+
+ AS_IF([test $cs_build_ok = yes],
+ [cs_build_cflags=CS_TRIM([$cs_cflags_test[]m4_ifval([$9],[],[ $6])])
+ cs_build_lflags=CS_TRIM([$cs_lflags_test[]m4_ifval([$9],[],[ $7])])
+ cs_build_libs=CS_TRIM([$cs_libs_test[]m4_ifval([$9],[],[ $8])])
+ $4],
+ [$5])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_BUILD(MESSAGE, CACHE-VAR, [PROGRAM], [FLAGS], [LANGUAGE],
+# [ACTION-IF-BUILT], [ACTION-IF-NOT-BUILT], [IGNORE-CACHE],
+# [OTHER-CFLAGS], [OTHER-LFLAGS], [OTHER-LIBS],
+# [INHIBIT-OTHER-FLAGS], [ERROR-REGEX])
+# Like CS_BUILD_IFELSE() but also prints "checking" and result messages,
+# and optionally respects the cache. Sets CACHE-VAR to "yes" upon
+# success, else "no" upon failure. Additionally, sets CACHE-VAR_cflags,
+# CACHE-VAR_lflags, and CACHE-VAR_libs to the values which resulted in a
+# successful build. If IGNORE-CACHE is "yes", then the cache variables
+# are ignored upon entry to this macro, however they are still set to
+# appropriate values upon exit.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_BUILD],
+ [AS_IF([test "$8" != yes],
+ [AC_CACHE_CHECK([$1], [$2],
+ [CS_BUILD_IFELSE([$3], [$4], [$5],
+ [$2=yes
+ $2_cflags=$cs_build_cflags
+ $2_lflags=$cs_build_lflags
+ $2_libs=$cs_build_libs],
+ [$2=no], [$9], [$10], [$11], [$12], [$13])])],
+ [AC_MSG_CHECKING([$1])
+ CS_BUILD_IFELSE([$3], [$4], [$5],
+ [$2=yes
+ $2_cflags=$cs_build_cflags
+ $2_lflags=$cs_build_lflags
+ $2_libs=$cs_build_libs],
+ [$2=no], [$9], [$10], [$11], [$12], [$13])
+ AC_MSG_RESULT([$$2])])
+ AS_IF([test $$2 = yes], [$6],
+ [$2_cflags=''
+ $2_lflags=''
+ $2_libs=''
+ $7])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_BUILD_FLAGS(MESSAGE, CACHE-VAR, FLAGS, [LANGUAGE],
+# [ACTION-IF-RECOGNIZED], [ACTION-IF-NOT-RECOGNIZED],
+# [OTHER-CFLAGS], [OTHER-LFLAGS], [OTHER-LIBS],
+# [ERROR-REGEX])
+# Like CS_CHECK_BUILD(), but checks only if the compiler or linker
+# recognizes a command-line option or options. MESSAGE is the "checking"
+# message. CACHE-VAR is the shell cache variable which receives the flag
+# or flags recognized by the compiler or linker. FLAGS is a
+# whitespace-delimited list of build tuples created with
+# CS_CREATE_TUPLE(). Each tuple from FLAGS is attempted in order until
+# one is found which is recognized by the compiler. After that, no
+# further flags are checked. LANGUAGE is typically either C or C++ and
+# specifies which compiler to use for the test. If LANGUAGE is omitted,
+# C is used. If a command-line option is recognized, then CACHE-VAR is
+# set to the composite value of $cs_build_cflags, $cs_build_lflags, and
+# $cs_build_libs of the FLAGS element which succeeded (not including the
+# "other" flags) and ACTION-IF-RECOGNIZED is invoked. If no options are
+# recognized, then CACHE-VAR is set to the empty string, and
+# ACTION-IF-NOT-RECOGNIZED is invoked. As a convenience, in case
+# comparing CACHE-VAR against the empty string to test for failure is
+# undesirable, a second variable named CACHE-VAR_ok is set to the literal
+# "no" upon failure, and to the same value as CACHE-VAR upon success.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_BUILD_FLAGS],
+ [AC_CACHE_CHECK([$1], [$2_ok],
+ [CS_BUILD_IFELSE([], [$3], [$4],
+ [$2=CS_TRIM([$cs_build_cflags $cs_build_lflags $cs_build_libs])
+ $2_ok="$$2"],
+ [$2=''
+ $2_ok=no], [$7], [$8], [$9], [Y], [$10])])
+ AS_IF([test "$$2_ok" != no], [$5], [$6])])
+#==============================================================================
+# Copyright (C)2003-2006 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_COMMON_TOOLS_LINK
+# Checks for common tools related to linking.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_COMMON_TOOLS_LINK],
+ [
+ # The default RANLIB in Jambase is wrong on some platforms, and is also
+ # unsuitable during cross-compilation, so we set the value unconditionally
+ # (sixth argument of CS_EMIT_BUILD_PROPERTY).
+ AC_PROG_RANLIB
+ CS_EMIT_BUILD_PROPERTY([RANLIB], [$RANLIB], [], [], [], [Y])
+
+ CS_CHECK_TOOLS([DLLTOOL], [dlltool])
+ CS_EMIT_BUILD_PROPERTY([CMD.DLLTOOL], [$DLLTOOL])
+
+ CS_CHECK_TOOLS([DLLWRAP], [dllwrap])
+ CS_EMIT_BUILD_PROPERTY([CMD.DLLWRAP], [$DLLWRAP])
+
+ CS_CHECK_TOOLS([WINDRES], [windres])
+ CS_EMIT_BUILD_PROPERTY([CMD.WINDRES], [$WINDRES])
+
+ CS_CHECK_TOOLS([STRINGS], [strings])
+ CS_EMIT_BUILD_PROPERTY([CMD.STRINGS], [$STRINGS])
+
+ CS_CHECK_TOOLS([OBJCOPY], [objcopy])
+ CS_EMIT_BUILD_PROPERTY([CMD.OBJCOPY], [$OBJCOPY])
+
+ CS_CHECK_LIBTOOL
+ CS_EMIT_BUILD_PROPERTY([LIBTOOL], [$LIBTOOL])
+ CS_EMIT_BUILD_PROPERTY([APPLE_LIBTOOL], [$APPLE_LIBTOOL])
+ ])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_COMMON_TOOLS_BASIC
+# Checks for basic tools for building things.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_COMMON_TOOLS_BASIC],
+ [CS_CHECK_MKDIR
+ CS_EMIT_BUILD_PROPERTY([CMD.MKDIR], [$MKDIR])
+ CS_EMIT_BUILD_PROPERTY([CMD.MKDIRS], [$MKDIRS])
+
+ CS_CHECK_PROGS([INSTALL], [install])
+ CS_EMIT_BUILD_PROPERTY([INSTALL], [$INSTALL])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_COMMON_TOOLS_DOC_TEXINFO
+# Checks for tools to generate documentation from texinfo files.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_COMMON_TOOLS_DOC_TEXINFO],
+ [CS_CHECK_PROGS([TEXI2DVI], [texi2dvi])
+ CS_EMIT_BUILD_PROPERTY([CMD.TEXI2DVI], [$TEXI2DVI])
+
+ CS_CHECK_PROGS([TEXI2PDF], [texi2pdf])
+ CS_EMIT_BUILD_PROPERTY([CMD.TEXI2PDF], [$TEXI2PDF])
+
+ CS_CHECK_PROGS([DVIPS], [dvips])
+ CS_EMIT_BUILD_PROPERTY([CMD.DVIPS], [$DVIPS])
+
+ CS_CHECK_PROGS([DVIPDF], [dvipdf])
+ CS_EMIT_BUILD_PROPERTY([CMD.DVIPDF], [$DVIPDF])
+
+ CS_CHECK_PROGS([MAKEINFO], [makeinfo])
+ CS_EMIT_BUILD_PROPERTY([CMD.MAKEINFO], [$MAKEINFO])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_COMMON_TOOLS_DOC_DOXYGEN
+# Checks for tools to generate source documentation via doxygen.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_COMMON_TOOLS_DOC_DOXYGEN],
+ [CS_CHECK_PROGS([DOXYGEN], [doxygen])
+ CS_EMIT_BUILD_PROPERTY([CMD.DOXYGEN], [$DOXYGEN])
+
+ CS_CHECK_TOOLS([DOT], [dot])
+ CS_EMIT_BUILD_PROPERTY([CMD.DOT], [$DOT])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_COMMON_LIBS
+# Check for typical required libraries (libm, libmx, libdl, libnsl).
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_COMMON_LIBS],
+ [AC_LANG_PUSH([C])
+ AC_CHECK_LIB([m], [pow], [cs_cv_libm_libs=-lm], [cs_cv_libm_libs=])
+ AC_CHECK_LIB([m], [cosf], [cs_cv_libm_libs=-lm])
+ AC_CHECK_LIB([mx], [cosf])
+ AC_CHECK_LIB([dl], [dlopen], [cs_cv_libdl_libs=-ldl], [cs_cv_libdl_libs=])
+ AC_CHECK_LIB([nsl], [gethostbyname])
+ AC_LANG_POP([C])])
+# checkcppunit.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_CPPUNIT([EMITTER])
+# Check if CppUnit (http://cppunit.sourceforge.net/), the unit-testing
+# framework is available. The shell variable cs_cv_libcppunit is set to
+# "yes" if CppUnit is discovered, else "no". If available, then the
+# variables cs_cv_libcppunit_cflags, cs_cv_libcppunit_lflags, and
+# cs_cv_libcppunit_libs are set. If EMITTER is provided, then
+# CS_EMIT_BUILD_RESULT() is invoked with EMITTER in order to record the
+# results in an output file. As a convenience, if EMITTER is the literal
+# value "emit" or "yes", then CS_EMIT_BUILD_RESULT()'s default emitter
+# will be used.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_CPPUNIT],
+ [CS_CHECK_LIB_WITH([cppunit],
+ [AC_LANG_PROGRAM([[#include ]],
+ [CppUnit::TextUi::TestRunner r; r.run();])],
+ [], [C++])
+
+ AS_IF([test $cs_cv_libcppunit = yes],
+ [CS_CHECK_BUILD([if cppunit is sufficiently recent],
+ [cs_cv_libcppunit_recent],
+ [AC_LANG_PROGRAM(
+ [[#include ]],
+ [CppUnit::BriefTestProgressListener b; b.startTest(0);])],
+ [], [C++],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libcppunit], [CPPUNIT],
+ CS_EMITTER_OPTIONAL([$1]))], [], [],
+ [$cs_cv_libcppunit_cflags],
+ [$cs_cv_libcppunit_lflags],
+ [$cs_cv_libcppunit_libs])])])
+# checklib.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003-2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# cs_lib_paths_default
+# Whitespace delimited list of directory tuples in which to search, by
+# default, for external libraries. Each list item can specify an
+# include|library directory tuple (for example, "/usr/include|/usr/lib"),
+# or a single directory (for example, "/usr"). If the second form is
+# used, then "include" and "lib" subdirectories of the directory are
+# searched. If the library resources are not found, then the directory
+# itself is searched. Thus, "/proj" is shorthand for
+# "/proj/include|/proj/lib /proj|/proj".
+#
+# Present Cases:
+# /usr/local -- Not all compilers search here by default, so we specify
+# it manually.
+# /sw -- Fink, the MacOS/X manager of Unix packages, installs here by
+# default.
+# /opt/local -- DarwinPorts installs here by default.
+#------------------------------------------------------------------------------
+m4_define([cs_lib_paths_default],
+ [/usr/local/include|/usr/local/lib \
+ /sw/include|/sw/lib \
+ /opt/local/include|/opt/local/lib \
+ /opt/include|/opt/lib])
+
+
+
+#------------------------------------------------------------------------------
+# cs_pkg_paths_default
+# Comma delimited list of additional directories in which the
+# `pkg-config' command should search for its `.pc' files.
+#
+# Present Cases:
+# /usr/local/lib/pkgconfig -- Although a common location for .pc files
+# installed by "make install", many `pkg-config' commands neglect
+# to search here automatically.
+# /sw/lib/pkgconfig -- Fink, the MacOS/X manager of Unix packages,
+# installs .pc files here by default.
+# /opt/local/lib/pkgconfig -- DarwinPorts installs .pc files here by
+# default.
+#------------------------------------------------------------------------------
+m4_define([cs_pkg_paths_default],
+ [/usr/local/lib/pkgconfig,
+ /sw/lib/pkgconfig,
+ /opt/local/lib/pkgconfig,
+ /opt/lib/pkgconfig])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_LIB_WITH(LIBRARY, PROGRAM, [SEARCH-LIST], [LANGUAGE],
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [OTHER-CFLAGS],
+# [OTHER-LFLAGS], [OTHER-LIBS], [ALIASES])
+# Very roughly similar in concept to AC_CHECK_LIB(), but allows caller to
+# to provide list of directories in which to search for LIBRARY; allows
+# user to override library location via --with-LIBRARY=dir; and consults
+# `pkg-config' (if present) and `LIBRARY-config' (if present, i.e.
+# `sdl-config') in order to obtain compiler and linker flags. LIBRARY is
+# the name of the library or MacOS/X framework which is to be located
+# (for example, "readline" for `libreadline.a' or `readline.framework').
+# PROGRAM, which is typically composed with AC_LANG_PROGRAM(), is a
+# program which references at least one function or symbol in LIBRARY.
+# SEARCH-LIST is a whitespace-delimited list of paths in which to search
+# for the library and its header files, in addition to those searched by
+# the compiler and linker by default, and those referenced by the
+# cs_lib_paths_default macro. Each list item can specify an
+# `include|library' directory tuple (for example,
+# "/usr/include|/usr/lib"), or a single directory (for example, "/usr").
+# If the second form is used, then "include" and "lib" subdirectories of
+# the directory are searched. If the library resources are not found,
+# then the directory itself is searched. Thus, "/proj" is shorthand for
+# "/proj/include|/proj/lib /proj|/proj". Items in the search list can
+# include wildcards. SEARCH-LIST can be overridden by the user with the
+# --with-LIBRARY=dir option, in which case only "dir/include|dir/lib" and
+# "dir|dir" are searched. If SEARCH-LIST is omitted and the user did not
+# override the search list via --with-LIBRARY=dir, then only the
+# directories normally searched by the compiler and the directories
+# mentioned via cs_lib_paths_default are searched. LANGUAGE is typically
+# either C or C++ and specifies which compiler to use for the test. If
+# LANGUAGE is omitted, C is used. OTHER-CFLAGS, OTHER-LFLAGS, and
+# OTHER-LIBS can specify additional compiler flags, linker flags, and
+# libraries needed to successfully link with LIBRARY. The optional
+# ALIASES is a comma-delimited list of library names for which to search
+# in case LIBRARY is not located (for example "[sdl1.2, sdl12]" for
+# libsdl1.2.a, sdl1.2.framework, libsdl12.a, and sdl12.framework). If
+# the library or one of its aliases is found and can be successfully
+# linked into a program, then the shell cache variable cs_cv_libLIBRARY
+# is set to "yes"; cs_cv_libLIBRARY_cflags, cs_cv_libLIBRARY_lflags, and
+# cs_cv_libLIBRARY_libs are set, respectively, to the compiler flags
+# (including OTHER-CFLAGS), linker flags (including OTHER-LFLAGS), and
+# library references (including OTHER-LIBS) which resulted in a
+# successful build; and ACTION-IF-FOUND is invoked. If the library was
+# not found or was unlinkable, or if the user disabled the library via
+# --without-LIBRARY, then cs_cv_libLIBRARY is set to "no" and
+# ACTION-IF-NOT-FOUND is invoked. Note that the exported shell variable
+# names are always composed from LIBRARY regardless of whether the test
+# succeeded because the primary library was discovered or one of the
+# aliases.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_LIB_WITH],
+ [AC_ARG_WITH([$1], [AC_HELP_STRING([--with-$1=dir],
+ [specify location of lib$1 if not detected automatically; searches
+ dir/include, dir/lib, and dir])])
+
+ # Backward compatibility: Recognize --with-lib$1 as alias for --with-$1.
+ AS_IF([test -n "$with_lib$1" && test -z "$with_$1"],
+ [with_$1="$with_lib$1"])
+
+ AS_IF([test -z "$with_$1"], [with_$1=yes])
+ AS_IF([test "$with_$1" != no],
+ [# If --with-$1 value is same as cached value, then assume other
+ # cached values are also valid; otherwise, ignore all cached values.
+ AS_IF([test "$with_$1" != "$cs_cv_with_$1"],
+ [cs_ignore_cache=yes], [cs_ignore_cache=no])
+
+ cs_check_lib_flags=''
+ AS_IF([test $with_$1 = yes],
+ [m4_foreach([cs_check_lib_alias], [$1, $10],
+ [_CS_CHECK_LIB_PKG_CONFIG_FLAGS([cs_check_lib_flags],
+ cs_check_lib_alias)
+ _CS_CHECK_LIB_CONFIG_FLAGS([cs_check_lib_flags],
+ cs_check_lib_alias)
+ ])])
+
+ AS_IF([test $with_$1 != yes],
+ [cs_check_lib_paths=$with_$1],
+ [cs_check_lib_paths="| cs_lib_paths_default $3"])
+ m4_foreach([cs_check_lib_alias], [$1, $10],
+ [_CS_CHECK_LIB_CREATE_FLAGS([cs_check_lib_flags],
+ cs_check_lib_alias, [$cs_check_lib_paths])
+ ])
+
+ CS_CHECK_BUILD([for lib$1], [cs_cv_lib$1], [$2], [$cs_check_lib_flags],
+ [$4], [], [], [$cs_ignore_cache], [$7], [$8], [$9])],
+ [cs_cv_lib$1=no])
+
+ cs_cv_with_$1="$with_$1"
+ AS_IF([test "$cs_cv_lib$1" = yes], [$5], [$6])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_PKG_CONFIG
+# Check if the `pkg-config' command is available and reasonably recent.
+# This program acts as a central repository of build flags for various
+# packages. For example, to determine the compiler flags for FreeType2
+# use, "pkg-config --cflags freetype2"; and "pkg-config --libs freetype2"
+# to determine the linker flags. If `pkg-config' is found and is
+# sufficiently recent, PKG_CONFIG is set and AC_SUBST() invoked.
+#------------------------------------------------------------------------------
+m4_define([CS_PKG_CONFIG_MIN], [0.9.0])
+AC_DEFUN([CS_CHECK_PKG_CONFIG],
+ [AS_IF([test "$cs_prog_pkg_config_checked" != yes],
+ [CS_CHECK_TOOLS([PKG_CONFIG], [pkg-config])
+ _CS_CHECK_PKG_CONFIG_PREPARE_PATH
+ cs_prog_pkg_config_checked=yes])
+ AS_IF([test -z "$cs_cv_prog_pkg_config_ok"],
+ [AS_IF([test -n "$PKG_CONFIG"],
+ [AS_IF([$PKG_CONFIG --atleast-pkgconfig-version=CS_PKG_CONFIG_MIN],
+ [cs_cv_prog_pkg_config_ok=yes],
+ [cs_cv_prog_pkg_config_ok=no])],
+ [cs_cv_prog_pkg_config_ok=no])])])
+
+AC_DEFUN([_CS_CHECK_PKG_CONFIG_PREPARE_PATH],
+ [PKG_CONFIG_PATH="m4_foreach([cs_pkg_path], [cs_pkg_paths_default],
+ [cs_pkg_path$PATH_SEPARATOR])$PKG_CONFIG_PATH"
+ export PKG_CONFIG_PATH])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_CHECK_LIB_PKG_CONFIG_FLAGS(VARIABLE, LIBRARY)
+# Helper macro for CS_CHECK_LIB_WITH(). Checks if `pkg-config' knows
+# about LIBRARY and, if so, appends a build tuple consisting of the
+# compiler and linker flags reported by `pkg-config' to the list of
+# tuples stored in the shell variable VARIABLE.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_CHECK_LIB_PKG_CONFIG_FLAGS],
+ [CS_CHECK_PKG_CONFIG
+ AS_IF([test $cs_cv_prog_pkg_config_ok = yes],
+ [AC_CACHE_CHECK([if $PKG_CONFIG recognizes $2], [_CS_CLPCF_CVAR([$2])],
+ [AS_IF([$PKG_CONFIG --exists $2],
+ [_CS_CLPCF_CVAR([$2])=yes], [_CS_CLPCF_CVAR([$2])=no])])
+ AS_IF([test $_CS_CLPCF_CVAR([$2]) = yes],
+ [_CS_CHECK_LIB_CONFIG_PROG_FLAGS([$1], [pkg_config_$2],
+ [$PKG_CONFIG], [$2])])])])
+
+AC_DEFUN([_CS_CLPCF_CVAR], [AS_TR_SH([cs_cv_prog_pkg_config_$1])])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_CHECK_LIB_CONFIG_FLAGS(VARIABLE, LIBRARY)
+# Helper macro for CS_CHECK_LIB_WITH(). Checks if `LIBRARY-config'
+# (i.e. `sdl-config') exists and, if so, appends a build tuple consisting
+# of the compiler and linker flags reported by `LIBRARY-config' to the
+# list of tuples stored in the shell variable VARIABLE.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_CHECK_LIB_CONFIG_FLAGS],
+ [CS_CHECK_TOOLS(_CS_CLCF_SHVAR([$2]), [$2-config])
+ AS_IF([test -n "$_CS_CLCF_SHVAR([$2])"],
+ [AS_IF([test -z "$_CS_CLCF_CVAR([$2])"],
+ [AS_IF([$_CS_CLCF_SHVAR([$2]) --cflags --libs >/dev/null 2>&1],
+ [_CS_CLCF_CVAR([$2])=yes], [_CS_CLCF_CVAR([$2])=no])])
+ AS_IF([test $_CS_CLCF_CVAR([$2]) = yes],
+ [_CS_CHECK_LIB_CONFIG_PROG_FLAGS([$1], [config_$2],
+ [$_CS_CLCF_SHVAR([$2])])])])])
+
+AC_DEFUN([_CS_CLCF_CVAR], [AS_TR_SH([cs_cv_prog_config_$1_ok])])
+AC_DEFUN([_CS_CLCF_SHVAR], [m4_toupper(AS_TR_SH([CONFIG_$1]))])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_CHECK_LIB_CONFIG_PROG_FLAGS(VARIABLE, TAG, CONFIG-PROGRAM, [ARGS])
+# Helper macro for _CS_CHECK_LIB_PKG_CONFIG_FLAGS() and
+# _CS_CHECK_LIB_CONFIG_FLAGS(). CONFIG-PROGRAM is a command which
+# responds to the --cflags and --libs options and returns suitable
+# compiler and linker flags for some package. ARGS, if supplied, is
+# passed to CONFIG-PROGRAM after the --cflags or --libs argument. The
+# results of the --cflags and --libs options are packed into a build
+# tuple and appended to the list of tuples stored in the shell variable
+# VARIABLE. TAG is used to compose the name of the cache variable. A good
+# choice for TAG is some unique combination of the library name and
+# configuration program.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_CHECK_LIB_CONFIG_PROG_FLAGS],
+ [AS_IF([test -z "$_CS_CLCPF_CVAR([$2])"],
+ [cs_check_lib_cflag=CS_RUN_PATH_NORMALIZE([$3 --cflags $4])
+ cs_check_lib_lflag=''
+ cs_check_lib_libs=CS_RUN_PATH_NORMALIZE([$3 --libs $4])
+ _CS_CLCPF_CVAR([$2])=CS_CREATE_TUPLE(
+ [$cs_check_lib_cflag],
+ [$cs_check_lib_lflag],
+ [$cs_check_lib_libs])])
+ $1="$$1 $_CS_CLCPF_CVAR([$2])"])
+
+AC_DEFUN([_CS_CLCPF_CVAR], [AS_TR_SH([cs_cv_prog_$1_flags])])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_CHECK_LIB_CREATE_FLAGS(VARIABLE, LIBRARY, PATHS)
+# Helper macro for CS_CHECK_LIB_WITH(). Constructs a list of build
+# tuples suitable for CS_CHECK_BUILD() and appends the tuple list to the
+# shell variable VARIABLE. LIBRARY and PATHS have the same meanings as
+# the like-named arguments of CS_CHECK_LIB_WITH().
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_CHECK_LIB_CREATE_FLAGS],
+ [for cs_lib_item in $3
+ do
+ case $cs_lib_item in
+ *\|*) CS_SPLIT(
+ [$cs_lib_item], [cs_check_incdir,cs_check_libdir], [|])
+ _CS_CHECK_LIB_CREATE_FLAG([$1],
+ [$cs_check_incdir], [$cs_check_libdir], [$2])
+ ;;
+ *) _CS_CHECK_LIB_CREATE_FLAG([$1],
+ [$cs_lib_item/include], [$cs_lib_item/lib], [$2])
+ _CS_CHECK_LIB_CREATE_FLAG(
+ [$1], [$cs_lib_item], [$cs_lib_item], [$2])
+ ;;
+ esac
+ done])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_CHECK_LIB_CREATE_FLAG(VARIABLE, HEADER-DIR, LIBRARY-DIR, LIBRARY)
+# Helper macro for _CS_CHECK_LIB_CREATE_FLAGS(). Constructs build tuples
+# suitable for CS_CHECK_BUILD() for given header and library directories,
+# and appends the tuples to the shell variable VARIABLE. Synthesizes
+# tuples which check for LIBRARY as a MacOS/X framework, and a standard
+# link library.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_CHECK_LIB_CREATE_FLAG],
+ [AS_IF([test -n "$2"], [cs_check_lib_cflag="-I$2"], [cs_check_lib_cflag=''])
+ AS_IF([test -n "$3"], [cs_check_lib_lflag="-L$3"], [cs_check_lib_lflag=''])
+ AS_IF([test -n "$4"],
+ [cs_check_lib_libs="-l$4"
+ cs_check_lib_framework="-framework $4"],
+ [cs_check_lib_libs=''
+ cs_check_lib_framework=''])
+ $1="$$1
+ CS_CREATE_TUPLE(
+ [$cs_check_lib_cflag],
+ [$cs_check_lib_lflag],
+ [$cs_check_lib_framework])
+ CS_CREATE_TUPLE(
+ [$cs_check_lib_cflag],
+ [$cs_check_lib_lflag],
+ [$cs_check_lib_libs])"])
+# checklibtool.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2004 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_LIBTOOL
+# Find and identify the various implementations of libtool. In
+# particular, this macro is aware of GNU libtool and Apple's libtool
+# (which serves a completely different purpose). On MacOS/X, GNU libtool
+# is typically named glibtool, however a user might also use Fink to
+# install the unadorned libtool; and the Fink-installed version might
+# shadow Apple's own libtool if it appears in the PATH before the Apple
+# tool. This macro jumps through the necessary hoops to distinguish and
+# locate the various implementations. Sets the shell variable LIBTOOL to
+# the located GNU libtool (if any), and APPLE_LIBTOOL to the located
+# Apple libtool. Invokes AC_SUBST() for LIBTOOL and APPLE_LIBTOOL.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_LIBTOOL],
+[# GNU: Search for libtool before glibtool since Fink version is likely newer.
+m4_define([cs_lt_path_gnu],
+ [/sw/bin$PATH_SEPARATOR/usr/local/bin$PATH_SEPARATOR$PATH])
+AS_IF([test -z "$LIBTOOL"],
+ [CS_CHECK_TOOLS([LIBTOOL_TEST], [libtool glibtool gnulibtool], [],
+ [cs_lt_path_gnu])
+ AS_IF([test -n "$LIBTOOL_TEST"],
+ [CS_PATH_PROG([LIBTOOL_PATH], [$LIBTOOL_TEST], [], [cs_lt_path_gnu])
+ CS_LIBTOOL_CLASSIFY([$LIBTOOL_PATH],
+ [LIBTOOL="$LIBTOOL_PATH"],
+ [AS_IF([test -z "$APPLE_LIBTOOL"], [APPLE_LIBTOOL="$LIBTOOL_PATH"])
+ CS_CHECK_TOOLS([LIBTOOL], [glibtool gnulibtool])])])])
+AC_SUBST([LIBTOOL])
+
+# Apple: Ensure that Apple libtool will be found before GNU libtool from Fink.
+m4_define([cs_lt_path_apple],[/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH])
+AS_IF([test -z "$APPLE_LIBTOOL"],
+ [CS_PATH_PROG([CS_LT_APPLE], [libtool], [], [cs_lt_path_apple])
+ CS_LIBTOOL_CLASSIFY([$CS_LT_APPLE], [],
+ [APPLE_LIBTOOL="$CS_LT_APPLE"])])
+AC_SUBST([APPLE_LIBTOOL])])
+
+AC_DEFUN([CS_LIBTOOL_CLASSIFY],
+ [AS_IF([test -n "$1"],
+ [AC_MSG_CHECKING([classification of $1])
+ CS_LIBTOOL_GNU_IFELSE([$1],
+ [AC_MSG_RESULT([gnu])
+ $2],
+ [AC_MSG_RESULT([apple])
+ $3])])])
+
+AC_DEFUN([CS_LIBTOOL_GNU_IFELSE],
+ [AS_IF([AC_RUN_LOG([$1 --version 1>&2])], [$2], [$3])])
+#==============================================================================
+# Copyright (C)2003-2006 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_OPENGL
+# Check for OpenGL.
+#
+# IMPLEMENTATION NOTES
+#
+# Some Mesa installations require pthread, so pthread flags are employed if
+# available.
+#
+# The check for opengl32 needs to precede other checks because Cygwin users
+# often have Mesa installed, and Mesa's OpenGL library is compiled without the
+# __stdcall flags which results in link errors, whereas Microsoft's native
+# opengl32 works fine. Conversely, some Unix implementations have Wine
+# installed (Windows emulation layer) which includes an opengl32.so library.
+# We need to avoid detection of this library on Unix since it would cause an
+# undesirable dependence upon Wine.
+#
+# Many OpenGL libraries on Unix already contain GLX, so there is no separate
+# GLX library, thus we first check for GLX using the discovered OpenGL library
+# before attempting to locate a separate GLX-specific library.
+#
+# On MacOS/X, some users have XFree86 installed which creates a link from
+# /usr/include/GL to /usr/X11R6/include/GL. We want to ignore this directory
+# and instead check for Apple's OpenGL.framework, if we are not cross-building
+# for Darwin. We accomplish this by placing the OpenGL.framework test ahead of
+# the other tests.
+#
+# At least one user (Jorrit) has a strange installation in which inclusion of
+# fails if an int32 is not present, thus we must take this into
+# account.
+#------------------------------------------------------------------------------
+m4_define([cs_define_int32],
+ [[#if !HAVE_TYPE_INT32
+ typedef long int32;
+ #endif
+ ]])
+
+# CS_GL_INCLUDE(CPP-MACRO,FALLBACK,HEADER)
+AC_DEFUN([CS_GL_INCLUDE],
+ [[#if HAVE_WINDOWS_H
+ #if !HAVE_TYPE_INT32
+ typedef long int32;
+ #endif
+ #include
+ #endif
+ #ifndef CS_HEADER_GLOBAL
+ #define CS_HEADER_GLOBAL(X,Y) CS_HEADER_GLOBAL_COMPOSE(X,Y)
+ #define CS_HEADER_GLOBAL_COMPOSE(X,Y)
+ #endif
+ #ifdef $1
+ #include CS_HEADER_GLOBAL($1,$3)
+ #else
+ #include <$2/$3>
+ #endif]])
+
+AC_DEFUN([CS_CHECK_OPENGL],
+ [AC_REQUIRE([CS_CHECK_HOST])
+ AC_REQUIRE([CS_CHECK_COMMON_LIBS])
+ AC_REQUIRE([CS_CHECK_PTHREAD])
+ AC_REQUIRE([AC_PATH_X])
+ AC_REQUIRE([AC_PATH_XTRA])
+ AC_CHECK_TYPE([int32], [AC_DEFINE([HAVE_TYPE_INT32], [],
+ [Whether the int32 type is available])], [])
+ AC_CHECK_HEADERS([windows.h], [], [], [cs_define_int32])
+
+ # Apply plaform-specific flags if necessary.
+ cs_gl_plat_cflags=''
+ cs_gl_plat_lflags=''
+ cs_gl_plat_libs=''
+ AS_IF([test -n "$cs_cv_libm_cflags$cs_cv_libm_lflags$cs_cv_libm_libs"],
+ [cs_gl_plat_cflags="$cs_cv_libm_cflags $cs_gl_plat_cflags"
+ cs_gl_plat_lflags="$cs_cv_libm_lflags $cs_gl_plat_lflags"
+ cs_gl_plat_libs="$cs_cv_libm_libs $cs_gl_plat_libs"])
+ AS_IF([test $cs_cv_sys_pthread = yes],
+ [cs_gl_plat_cflags="$cs_cv_sys_pthread_cflags $cs_gl_plat_cflags"
+ cs_gl_plat_lflags="$cs_cv_sys_pthread_lflags $cs_gl_plat_lflags"
+ cs_gl_plat_libs="$cs_cv_sys_pthread_libs $cs_gl_plat_libs"])
+ AS_IF([test "$no_x" != yes],
+ [cs_gl_plat_cflags="$X_CFLAGS $cs_gl_plat_cflags"
+ cs_gl_plat_lflags="$cs_gl_plat_lflags"
+ cs_gl_plat_libs="
+ $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS $cs_gl_plat_libs"])
+
+ # Mesa requested?
+ AC_ARG_WITH([mesa], [AC_HELP_STRING([--with-mesa],
+ [use Mesa OpenGL library if available (default YES)])],
+ [], [with_mesa=yes])
+
+ AS_IF([test $with_mesa != no],
+ [cs_mesa_gl=CS_CREATE_TUPLE([],[],[-lMesaGL])])
+
+ # MacOS/X or Darwin?
+ AS_IF([test "x$cs_host_macosx" = "xyes"],
+ [cs_osx_gl=CS_CREATE_TUPLE([-DCS_OPENGL_PATH=OpenGL],[],[-framework OpenGL])])
+ AS_IF([test "x$cs_host_macosx" = "xyes"],
+ [cs_gl_plat_lflags="$cs_plat_lflags -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"])
+
+ # Windows?
+ AS_IF([test $cs_host_family = windows],
+ [cs_win32_gl=CS_CREATE_TUPLE([],[],[-lopengl32])])
+
+ # Check for OpenGL.
+ CS_CHECK_BUILD([for OpenGL], [cs_cv_libgl],
+ [AC_LANG_PROGRAM([CS_GL_INCLUDE([CS_OPENGL_PATH],[GL],[gl.h])],[glEnd()])],
+ [$cs_win32_gl \
+ $cs_osx_gl \
+ CS_CREATE_TUPLE([],[],[-lGL]) \
+ CS_CREATE_TUPLE([],[],[-lgl]) \
+ $cs_mesa_gl], [],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libgl], [GL])], [], [],
+ [$cs_gl_plat_cflags], [$cs_gl_plat_lflags], [$cs_gl_plat_libs])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_GLU
+# Check for GLU.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_GLU],
+ [AC_REQUIRE([CS_CHECK_OPENGL])
+ AS_IF([test $cs_cv_libgl = yes],
+ [AS_IF([test $with_mesa != no],
+ [cs_mesa_glu=CS_CREATE_TUPLE([],[],[-lMesaGLU])])
+
+ # MacOS/X or Darwin?
+ AS_IF([test "x$cs_host_macosx" = "xyes"],
+ [cs_osx_glu=CS_CREATE_TUPLE([-DCS_GLU_PATH=OpenGL],[],[-framework OpenGL])])
+
+ # Windows?
+ AS_IF([test $cs_host_family = windows],
+ [cs_win32_glu=CS_CREATE_TUPLE([],[],[-lglu32])])
+
+ # Check for GLU.
+ CS_CHECK_BUILD([for GLU], [cs_cv_libglu],
+ [AC_LANG_PROGRAM(
+ [CS_GL_INCLUDE([CS_GLU_PATH],[GL],[glu.h])], [gluNewQuadric()])],
+ [$cs_osx_glu \
+ CS_CREATE_TUPLE() \
+ $cs_win32_glu \
+ CS_CREATE_TUPLE([],[],[-lGLU]) \
+ CS_CREATE_TUPLE([],[],[-lglu]) \
+ $cs_mesa_glu], [],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libglu], [GLU])], [], [],
+ [$cs_cv_libgl_cflags], [$cs_cv_libgl_lflags], [$cs_cv_libgl_libs])])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_GLX
+# Check for GLX.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_GLX],
+ [AC_REQUIRE([CS_CHECK_OPENGL])
+ AS_IF([test $cs_cv_libgl = yes],
+ [AS_IF([test $with_mesa != no],
+ [cs_mesa_glx=CS_CREATE_TUPLE([],[],[-lMesaGLX])])
+
+ # Check for GLX.
+ AS_IF([test "$no_x" != yes],
+ [CS_CHECK_BUILD([for GLX], [cs_cv_libglx],
+ [AC_LANG_PROGRAM([[#include ]], [glXWaitGL()])],
+ [CS_CREATE_TUPLE() \
+ CS_CREATE_TUPLE([],[],[-lGLX]) \
+ CS_CREATE_TUPLE([],[],[-lglx]) \
+ $cs_mesa_glx], [],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libglx], [GLX])], [], [],
+ [$cs_cv_libgl_cflags], [$cs_cv_libgl_lflags], [$cs_cv_libgl_libs])])])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_GLXEXT([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# Check for GLX extensions.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_GLXEXT],
+ [AC_REQUIRE([CS_CHECK_GLX])
+ AS_IF([test x$cs_cv_libglx = "xyes"],
+ [# Check for GLX extensions.
+ CS_CHECK_BUILD([for GLX extensions], [cs_cv_libglx_extensions],
+ [AC_LANG_PROGRAM(
+ [[#define GLX_GLXEXT_PROTOTYPES
+ #include ]],
+ [glXGetProcAddressARB(0)])],
+ [CS_CREATE_TUPLE(
+ [$cs_cv_libglx_cflags],
+ [$cs_cv_libglx_lflags],
+ [$cs_cv_libglx_libs])],
+ [], [$1], [$2])])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_GLUT
+# Check for GLUT.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_GLUT],
+ [AC_REQUIRE([CS_CHECK_GLU])
+ AS_IF([test x$cs_cv_libglu = "xyes"],
+ [# MacOS/X or Darwin?
+ AS_IF([test "x$cs_host_macosx" = "xyes"],
+ [cs_osx_glut=CS_CREATE_TUPLE([-DCS_GLUT_PATH=GLUT],[],[-framework GLUT])])
+
+ # Windows?
+ AS_IF([test $cs_host_family = windows],
+ [cs_win32_glut=CS_CREATE_TUPLE([],[],[-lglut32])])
+
+ # Check for GLUT.
+ CS_CHECK_BUILD([for GLUT], [cs_cv_libglut],
+ [AC_LANG_PROGRAM(
+ [CS_GL_INCLUDE([CS_GLUT_PATH],[GL],[glut.h])], [glutSwapBuffers()])],
+ [$cs_osx_glut \
+ CS_CREATE_TUPLE() \
+ $cs_win32_glut \
+ CS_CREATE_TUPLE([],[],[-lGLUT]) \
+ CS_CREATE_TUPLE([],[],[-lglut])], [],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libglut], [GLUT])], [], [],
+ [$cs_cv_libgl_cflags $cs_cv_libglu_cflags],
+ [$cs_cv_libgl_lflags $cs_cv_libglu_lflags],
+ [$cs_cv_libgl_libs $cs_cv_libglu_libs])])])
+
+# checkpic.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_PIC([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check if compiler can be instructed to produce
+# position-independent-code (PIC). This feature is required by some
+# platforms when building plugin modules and shared libraries. If
+# LANGUAGE is not provided, then `C' is assumed (other options include
+# `C++'). If CACHE-VAR is not provided, then it defaults to the name
+# "cs_cv_prog_compiler_pic". If a PIC-enabling option (such as `-fPIC')
+# is discovered, then it is assigned to CACHE-VAR and ACTION-IF-FOUND is
+# invoked; otherwise the empty string is assigned to CACHE-VAR and
+# ACTION-IF-NOT-FOUND is invoked.
+#
+# IMPLEMENTATION NOTES
+#
+# On some platforms (such as Windows), the -fPIC option is superfluous
+# and emits a warning "-fPIC ignored for target (all code is position
+# independent)", despite the fact that the compiler accepts the option
+# and returns a success code. We want to re-interpret the warning as a
+# failure in order to avoid unnecessary compiler diagnostics in case the
+# client inserts the result of this check into CFLAGS, for instance. We
+# do so by attempting to promote warnings to errors using the result of
+# CS_COMPILER_ERRORS(). As an extra safe-guard, we also scan the compiler
+# output for an appropriate diagnostic because some gcc warnings fail to
+# promote to error status despite use of -Werror.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_PIC],
+ [CS_COMPILER_ERRORS([$1],
+ [m4_default([$2_werror],[cs_cv_prog_compiler_pic_werror])])
+ CS_CHECK_BUILD_FLAGS(
+ [how to enable m4_default([$1],[C]) PIC generation],
+ [m4_default([$2],[cs_cv_prog_compiler_pic])],
+ [CS_CREATE_TUPLE([-fPIC])], [$1], [$3], [$4],
+ [m4_default([$$2_werror],[$cs_cv_prog_compiler_pic_werror])], [], [],
+ [fPIC])])
+
+# Backward-compatiblity alias.
+AC_DEFUN([CS_CHECK_COMPILER_PIC], [CS_COMPILER_PIC([$1],[$2],[$3],[$4])])
+# checkprog.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2004 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# cs_bin_paths_default
+# Comma delimited list of additional directories in which tools and
+# commands might be found.
+#
+# Present Cases:
+# /usr/local/bin -- Although a common location for executables, it is
+# now-and-then absent from the default PATH setting.
+# /sw/bin -- Fink, the MacOS/X manager of Unix packages, installs
+# executables here.
+#------------------------------------------------------------------------------
+m4_define([cs_bin_paths_default], [/usr/local/bin, /sw/bin])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_PROG(VARIABLE, PROGRAM, VALUE-IF-FOUND, [VALUE-IF-NOT-FOUND],
+# [PATH], [REJECT])
+# Simple wrapper for AC_CHECK_PROG() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_PROG],
+ [_CS_PROG_PATH_PREPARE
+ AC_CHECK_PROG([$1], [$2], [$3], [$4],
+ m4_ifval([$5], [_CS_PROG_CLIENT_PATH([$5])]), [$6])])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_PROGS(VARIABLE, PROGRAMS, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_CHECK_PROGS() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_PROGS],
+ [_CS_PROG_PATH_PREPARE
+ AC_CHECK_PROGS([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_TOOL(VARIABLE, TOOL, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_CHECK_TOOL() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_TOOL],
+ [_CS_PROG_PATH_PREPARE
+ AC_CHECK_TOOL([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_TOOLS(VARIABLE, TOOLS, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_CHECK_TOOLS() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_TOOLS],
+ [_CS_PROG_PATH_PREPARE
+ AC_CHECK_TOOLS([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# CS_PATH_PROG(VARIABLE, PROGRAM, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_PATH_PROG() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_PATH_PROG],
+ [_CS_PROG_PATH_PREPARE
+ AC_PATH_PROG([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# CS_PATH_PROGS(VARIABLE, PROGRAMS, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_PATH_PROGS() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_PATH_PROGS],
+ [_CS_PROG_PATH_PREPARE
+ AC_PATH_PROGS([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# CS_PATH_TOOL(VARIABLE, TOOL, [VALUE-IF-NOT-FOUND], [PATH])
+# Simple wrapper for AC_PATH_TOOL() which ensures that the search path
+# is augmented by the directories mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_PATH_TOOL],
+ [_CS_PROG_PATH_PREPARE
+ AC_PATH_TOOL([$1], [$2], [$3],
+ m4_ifval([$4], [_CS_PROG_CLIENT_PATH([$4])]))])
+
+
+#------------------------------------------------------------------------------
+# _CS_PROG_PATH_PREPARE
+# Ensure that the PATH environment variable mentions the set of
+# directories listed in cs_bin_paths_default. These directories may not
+# appear by default in the typical PATH, yet they might be common
+# locations for tools and commands.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_PROG_PATH_PREPARE],
+ [AS_REQUIRE([_AS_PATH_SEPARATOR_PREPARE])
+ AS_IF([test "$cs_prog_path_prepared" != yes],
+ [cs_prog_path_prepared=yes
+ PATH="$PATH[]m4_foreach([cs_bin_path], [cs_bin_paths_default],
+ [$PATH_SEPARATOR[]cs_bin_path])"
+ export PATH])])
+
+
+#------------------------------------------------------------------------------
+# _CS_PROG_CLIENT_PATH(CLIENT-PATH)
+# Given a client-supplied replacement for PATH, augment the list by
+# appending the locations mentioned in cs_bin_paths_default.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_PROG_CLIENT_PATH],
+ [AS_REQUIRE([_AS_PATH_SEPARATOR_PREPARE])dnl
+ $1[]m4_foreach([cs_bin_path], [cs_bin_paths_default],
+ [$PATH_SEPARATOR[]cs_bin_path])])
+# checkpthread.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003-2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_PTHREAD([REJECT-MASK])
+# Check for pthread. Also check if the pthread implementation supports
+# the recursive and timed mutex extensions. (Timed mutexes are needed for
+# the NPTL: New Posix Thread Library on GNU/Linux if the mutex is going
+# to be used with any of the timed condition-wait functions.) The shell
+# variable cs_cv_sys_pthread is set to "yes" if pthread is available,
+# else "no". If available, then the variables cs_cv_sys_pthread_cflags,
+# cs_cv_sys_pthread_lflags, and cs_cv_sys_pthread_libs are set. (As a
+# convenience, these variables can be emitted to an output file with
+# CS_EMIT_BUILD_RESULT() by passing "cs_cv_sys_pthread" as its CACHE-VAR
+# argument.) If the recursive mutex extension is supported, then
+# cs_cv_sys_pthread_mutex_recursive will be set with the literal name of
+# the constant which must be passed to pthread_mutexattr_settype() to
+# enable this feature. The constant name will be typically
+# PTHREAD_MUTEX_RECURSIVE or PTHREAD_MUTEX_RECURSIVE_NP. If the recursive
+# mutex extension is not available, then
+# cs_cv_sys_pthread_mutex_recursive will be set to "no". If the timed
+# mutex extension is supported, then cs_cv_sys_pthread_mutex_timed will
+# be set with the literal name of the constant which must be passed to
+# pthread_mutexattr_settype() to enable this feature. The constant name
+# will be typically PTHREAD_MUTEX_TIMED or PTHREAD_MUTEX_TIMED_NP. If the
+# timed mutex extension is not available, then
+# cs_cv_sys_pthread_mutex_timed will be set to "no". REJECT-MASK can be
+# used to limit the platforms on which the pthread test is performed. It
+# is compared against $host_os; matches are rejected. If omitted, then
+# the test is performed on all platforms. Examples: To avoid testing on
+# Cygwin, use "cygwin*"; to avoid testing on Cygwin and AIX, use
+# "cygwin*|aix*".
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_PTHREAD],
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ case $host_os in
+ m4_ifval([$1],
+ [$1)
+ cs_cv_sys_pthread=no
+ ;;
+ ])
+ *)
+ CS_CHECK_BUILD([for pthread], [cs_cv_sys_pthread],
+ [AC_LANG_PROGRAM(
+ [[#include
+ #include
+ void* worker(void* p) { (void)p; return p; }]],
+ [pthread_t tid;
+ sem_t sem;
+ pthread_create(&tid, 0, worker, 0);
+ sem_init(&sem, 0, 0);
+ sem_destroy(&sem);])],
+ [cs_pthread_flags])
+ ;;
+ esac
+ _CS_CHECK_MUTEX_FEATURE([PTHREAD_MUTEX_RECURSIVE],
+ [cs_cv_sys_pthread_mutex_recursive], [for pthread recursive mutexes])])
+
+# _CS_CHECK_MUTEX_FEATURE(FEATURE, CACHE-VAR, MESSAGE)
+AC_DEFUN([_CS_CHECK_MUTEX_FEATURE],
+ [AS_IF([test $cs_cv_sys_pthread = yes],
+ [AC_CACHE_CHECK([$3], [$2],
+ [CS_BUILD_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include ]],
+ [pthread_mutexattr_t attr;
+ pthread_mutexattr_settype(&attr, CS_MUTEX_FEATURE);])],
+ [CS_CREATE_TUPLE([-DCS_MUTEX_FEATURE=$1]) \
+ CS_CREATE_TUPLE([-DCS_MUTEX_FEATURE=$1_NP])],
+ [],
+ [$2=`echo $cs_build_cflags | sed 's/.*\($1_*N*P*\).*/\1/'`],
+ [$2=no],
+ [$cs_cv_sys_pthread_cflags -D_GNU_SOURCE],
+ [$cs_cv_sys_pthread_lflags],
+ [$cs_cv_sys_pthread_libs])])],
+ [$2=no])])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_PTHREAD_ATFORK(CACHE-VAR)
+# Checks whether the pthread library contains pthread_atfork(). Sets
+# CACHE-VAR to "yes" or "no", according to the test result.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_PTHREAD_ATFORK],
+ [AS_IF([test $cs_cv_sys_pthread = yes],
+ [AC_CACHE_CHECK([for pthread_atfork support], [$1],
+ [CS_BUILD_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include ]],
+ [pthread_atfork (0, 0, 0);])],
+ [], [],
+ [$1=yes], [$1=no],
+ [$cs_cv_sys_pthread_cflags -D_GNU_SOURCE],
+ [$cs_cv_sys_pthread_lflags],
+ [$cs_cv_sys_pthread_libs])])],
+ [$1=no])])
+
+m4_define([cs_pthread_flags],
+ [CS_CREATE_TUPLE() \
+ CS_CREATE_TUPLE([], [], [-lpthread]) \
+ CS_CREATE_TUPLE([], [], [-lpthread -lrt]) \
+ CS_CREATE_TUPLE([-pthread], [-pthread], []) \
+ CS_CREATE_TUPLE([-pthread], [-pthread], [-lpthread]) \
+ CS_CREATE_TUPLE([-pthread], [-pthread], [-lc_r])])
+# checktt2.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2004,2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_TEMPLATE_TOOLKIT2([EMITTER])
+# Check if Template Toolkit 2 (http://www.tt2.org/) is available. The
+# shell variable cs_cv_perl_tt2 is set to "yes" if the package is
+# discovered, else "no". Also sets the shell variable TTREE to the name
+# path of the 'ttree' utility program and invokes AC_SUBST(). If EMITTER
+# is provided and the package was discovered, then
+# CS_EMIT_BUILD_PROPERTY() is invoked with EMITTER in order to record the
+# value of the TTREE variable in an output file. As a convenience, if
+# EMITTER is the literal value "emit" or "yes", then
+# CS_EMIT_BUILD_RESULT()'s default emitter will be used.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_TEMPLATE_TOOLKIT2],
+ [CS_CHECK_PROGS([PERL], [perl5 perl])
+ AS_IF([test -n "$PERL"],
+ [AC_CACHE_CHECK([for TemplateToolkit], [cs_cv_perl_tt2],
+ [AS_IF([AC_RUN_LOG(
+ [$PERL -M'Template 2.11' -MTemplate::Plugin -e 0 1>&2])],
+ [cs_cv_perl_tt2=yes],
+ [cs_cv_perl_tt2=no])])
+ CS_PATH_PROGS([TTREE], [ttree])
+ AS_IF([test $cs_cv_perl_tt2 = yes && test -n "$TTREE"],
+ [CS_EMIT_BUILD_PROPERTY([TTREE], [$TTREE], [], [],
+ CS_EMITTER_OPTIONAL([$1]))])])])
+# compiler.m4 -*- Autoconf -*-
+#=============================================================================
+# Copyright (C)2003 by Matze Braun
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#=============================================================================
+
+#-----------------------------------------------------------------------------
+# Detection of C and C++ compilers and setting flags
+#
+# CS_PROG_CC
+# Detects the C compiler. Also takes care of the CFLAGS, CPPFLAGS and CC
+# environment variables. This will filter out all -g and -O from the
+# CFLAGS variable because Autoconf's -g and -O defaults are not always
+# desired. This will also set the CMD.CC and COMPILER.CFLAGS variables
+# in Jamconfig
+# CS_PROG_CXX
+# Detects the C++ compiler. Also takes care of the CXXFLAGS, CPPFLAGS
+# and CXX environment variables. This will filter out all -g and -O from
+# the CXXFLAGS variable because Autoconf's -g and -O defaults are not
+# always desired. This will also set the CMD.C++ and COMPILER.C++FLAGS
+# variables in Jamconfig
+# CS_PROG_LINK
+# Tries to determine a linker. This is done by checking if a C++ or
+# Objecctive-C++ compiler is available in which case it is used for
+# linking; otherwise the C or Objective-C compiler is used. This also
+# sets the CMD.LINK and COMPILER.LFLAGS variables in Jamconfig and
+# respects the LDFLAGS environment variable. Finally, checks if linker
+# recognizes -shared and sets PLUGIN.LFLAGS; and checks if linker
+# recognizes -soname and sets PLUGIN.LFLAGS.USE_SONAME to "yes".
+#-----------------------------------------------------------------------------
+AC_DEFUN([CS_PROG_CC],[
+ CFLAGS="$CFLAGS" # Filter undesired flags
+ AS_IF([test -n "$CC"],[
+ CS_EMIT_BUILD_PROPERTY([CMD.CC], [$CC])
+ CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], [$CPPFLAGS $CFLAGS], [+])
+
+ # Check if compiler recognizes -pipe directive.
+ CS_EMIT_BUILD_FLAGS([if $CC accepts -pipe], [cs_cv_prog_cc_pipe],
+ [CS_CREATE_TUPLE([-pipe])], [C], [COMPILER.CFLAGS], [+])
+ ])
+])
+
+AC_DEFUN([CS_PROG_CXX],[
+ CXXFLAGS="$CXXFLAGS" # Filter undesired flags
+ AS_IF([test -n "$CXX"],[
+ CS_EMIT_BUILD_PROPERTY([CMD.C++], [$CXX])
+
+ CS_EMIT_BUILD_PROPERTY([COMPILER.C++FLAGS], [$CPPFLAGS $CXXFLAGS], [+])
+
+ # Check if compiler can be instructed to produce position-independent-code
+ # (PIC). This feature is required by some platforms when building plugin
+ # modules and shared libraries.
+ CS_COMPILER_PIC([C++], [cs_cv_prog_cxx_pic],
+ [CS_EMIT_BUILD_PROPERTY([COMPILER.C++FLAGS.PIC],
+ [$cs_cv_prog_cxx_pic])])
+ ])
+])
+
+AC_DEFUN([CS_PROG_LINK],[
+ AC_REQUIRE([CS_PROG_CXX])
+ AS_IF([test -n "$CXX"],
+ [CS_EMIT_BUILD_PROPERTY([CMD.LINK], [AS_ESCAPE([$(CMD.C++)])])],
+ [CS_EMIT_BUILD_PROPERTY([CMD.LINK], [AS_ESCAPE([$(CMD.CC)])])])
+
+ CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [$LDFLAGS], [+])
+
+ # Check if compiler/linker recognizes -shared directive which is needed for
+ # linking plugin modules. Unfortunately, the Apple compiler (and possibly
+ # others) requires extra effort. Even though the compiler does not recognize
+ # the -shared option, it nevertheless returns a "success" result after emitting
+ # the warning "unrecognized option `-shared'". Worse, even -Werror fails to
+ # promote the warning to an error, so we must instead scan the compiler's
+ # output for an appropriate diagnostic.
+ CS_CHECK_BUILD_FLAGS([if -shared is accepted], [cs_cv_prog_link_shared],
+ [CS_CREATE_TUPLE([-shared $cs_cv_prog_cxx_pic])], [C++],
+ [CS_EMIT_BUILD_PROPERTY([PLUGIN.LFLAGS], [-shared], [+])], [],
+ [], [], [], [shared])
+
+ # Check if linker recognizes -soname which is used to assign a name internally
+ # to plugin modules.
+ CS_CHECK_BUILD([if -soname is accepted], [cs_cv_prog_link_soname], [],
+ [CS_CREATE_TUPLE([-Wl,-soname,foobar])], [C++],
+ [CS_EMIT_BUILD_PROPERTY([PLUGIN.LFLAGS.USE_SONAME], [yes])])
+])
+#------------------------------------------------------------------------------
+# Determine host platform. Recognized families: Unix, Windows, MacOS/X.
+# Orginial Macros Copyright (C)2003 Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# Determine host CPU.
+#
+# CS_CHECK_HOST_CPU
+# Set the shell variable cs_host_cpu to a normalized form of the CPU name
+# returned by config.guess/config.sub. Typically, Crystal Space's
+# conception of CPU name is the same as that returned by
+# config.guess/config.sub, but there may be exceptions as seen in the
+# `case' statement. Also takes the normalized name, uppercases it to
+# form a name suitable for the C preprocessor. Additionally sets the
+# TARGET.PROCESSOR Jamconfig property.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_HOST_CPU],
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ case $host_cpu in
+ [[Ii][3-9]86*|[Xx]86*]) cs_host_cpu=x86 ;;
+ *) cs_host_cpu=$host_cpu ;;
+ esac
+ cs_host_cpu_normalized="AS_TR_CPP([$cs_host_cpu])"
+ CS_JAMCONFIG_PROPERTY([TARGET.PROCESSOR], [$cs_host_cpu_normalized])
+ ])
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_HOST
+# Sets the shell variables cs_host_target cs_host_family,
+# cs_host_os_normalized, and cs_host_os_normalized_uc. Emits appropriate
+# CS_PLATFORM_UNIX, CS_PLATFORM_WIN32, CS_PLATFORM_MACOSX via
+# AC_DEFINE(), and TARGET.OS and TARGET.OS.NORMALIZED to Jamconfig.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_HOST],
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ CS_CHECK_HOST_CPU
+ cs_host_os_normalized=''
+ case $host_os in
+ mingw*|cygwin*)
+ cs_host_target=win32gcc
+ cs_host_family=windows
+ ;;
+ darwin*)
+ _CS_CHECK_HOST_DARWIN
+ ;;
+ *)
+ # Everything else is assumed to be Unix or Unix-like.
+ cs_host_target=unix
+ cs_host_family=unix
+ ;;
+ esac
+
+ case $cs_host_family in
+ windows)
+ AC_DEFINE([CS_PLATFORM_WIN32], [],
+ [Define when compiling for Win32])
+ AS_IF([test -z "$cs_host_os_normalized"],
+ [cs_host_os_normalized='Win32'])
+ ;;
+ unix)
+ AC_DEFINE([CS_PLATFORM_UNIX], [],
+ [Define when compiling for Unix and Unix-like (i.e. MacOS/X)])
+ AS_IF([test -z "$cs_host_os_normalized"],
+ [cs_host_os_normalized='Unix'])
+ ;;
+ esac
+
+ cs_host_os_normalized_uc="AS_TR_CPP([$cs_host_os_normalized])"
+ CS_JAMCONFIG_PROPERTY([TARGET.OS], [$cs_host_os_normalized_uc])
+ CS_JAMCONFIG_PROPERTY([TARGET.OS.NORMALIZED], [$cs_host_os_normalized])
+])
+
+AC_DEFUN([_CS_CHECK_HOST_DARWIN],
+ [AC_REQUIRE([CS_PROG_CC])
+ AC_REQUIRE([CS_PROG_CXX])
+
+ # Both MacOS/X and Darwin are identified via $host_os as "darwin". We need
+ # a way to distinguish between the two. If Carbon.h is present, then
+ # assume MacOX/S; if not, assume Darwin. If --with-x=yes was invoked, and
+ # Carbon.h is present, then assume that user wants to cross-build for
+ # Darwin even though build host is MacOS/X.
+ # IMPLEMENTATION NOTE *1*
+ # The QuickTime 7.0 installer removes , which
+ # causes #include to fail unconditionally. Re-installing
+ # the QuickTime SDK should restore the header, however not all developers
+ # know to do this, so we work around the problem of the missing
+ # CarbonSound.h by #defining __CARBONSOUND__ in the test in order to
+ # prevent Carbon.h from attempting to #include the missing header.
+ # IMPLEMENTATION NOTE *2*
+ # At least one MacOS/X user switches between gcc 2.95 and gcc 3.3 with a
+ # script which toggles the values of CC, CXX, and CPP. Unfortunately, CPP
+ # was being set to run the preprocessor directly ("cpp", for instance)
+ # rather than running it via the compiler ("gcc -E", for instance). The
+ # problem with running the preprocessor directly is that __APPLE__ and
+ # __GNUC__ are not defined, which causes the Carbon.h check to fail. We
+ # avoid this problem by supplying a non-empty fourth argument to
+ # AC_CHECK_HEADER(), which causes it to test compile the header only (which
+ # is a more robust test), rather than also testing it via the preprocessor.
+
+ AC_DEFINE([__CARBONSOUND__], [],
+ [Avoid problem caused by missing ])
+ AC_CHECK_HEADER([Carbon/Carbon.h],
+ [cs_host_macosx=yes], [cs_host_macosx=no], [/* force compile */])
+
+ AS_IF([test $cs_host_macosx = yes],
+ [AC_MSG_CHECKING([for --with-x])
+ AS_IF([test "${with_x+set}" = set && test "$with_x" = "yes"],
+ [AC_MSG_RESULT([yes (assume Darwin)])
+ cs_host_macosx=no],
+ [AC_MSG_RESULT([no])])])
+
+ AS_IF([test $cs_host_macosx = yes],
+ [cs_host_target=macosx
+ cs_host_family=unix
+ cs_host_os_normalized='MacOS/X'
+ AC_DEFINE([CS_PLATFORM_MACOSX], [],
+ [Define when compiling for MacOS/X])
+
+ AC_CACHE_CHECK([for Objective-C compiler], [cs_cv_prog_objc],
+ [cs_cv_prog_objc="$CC"])
+ CS_JAMCONFIG_PROPERTY([CMD.OBJC], [$cs_cv_prog_objc])
+ AC_CACHE_CHECK([for Objective-C++ compiler], [cs_cv_prog_objcxx],
+ [cs_cv_prog_objcxx="$CXX"])
+ CS_JAMCONFIG_PROPERTY([CMD.OBJC++], [$cs_cv_prog_objcxx])],
+
+ [cs_host_target=unix
+ cs_host_family=unix])])
+# diagnose.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS])
+# A convenience wrapper for AC_MSG_ERROR() which invokes AC_CACHE_SAVE()
+# before aborting the script. Saving the cache should make subsequent
+# re-invocations of the configure script faster once the user has
+# corrected the problem(s) which caused the failure.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_MSG_ERROR],
+ [AC_CACHE_SAVE
+ AC_MSG_ERROR([$1], [$2])])
+# embed.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003,2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_META_INFO_EMBED([EMITTER], [GPL-OKAY])
+# Determine if plugin meta-information should be embedded or if it should
+# exist in a stand-alone .csplugin file, and check if necessary tools and
+# libraries are present. Sets the shell variable
+# enable_meta_info_embedding to "yes" if the user requested embedding or
+# if it was enabled by default; otherwise sets it to "no".
+#
+# If EMITTER is provided, then a subset of the following variables
+# (depending upon platform and availability) are recorded by invoking
+# CS_EMIT_BUILD_PROPERTY() with EMITTER. As a convenience, if EMITTER is
+# the literal value "emit" or "yes", then CS_EMIT_BUILD_RESULT()'s
+# default emitter will be used.
+#
+# EMBED_META := yes or no
+# EMBED_META.CFLAGS := compiler flags
+# EMBED_META.LFLAGS := linker flags
+# CMD.WINDRES := windres.exe
+# OBJCOPY.AVAILABLE := yes or no
+# CMD.OBJCOPY := objcopy.exe
+# LIBBFD.AVAILABLE := yes or no
+# LIBBFD.CFLAGS := libbfd compiler flags
+# LIBBFD.LFLAGS := libbfd linker flags
+# ELF.AVAILABLE := yes or no
+#
+# In general, clients need only concern themselves with the various
+# EMBED_META-related variables. For building plugin modules, utilize
+# EMBED_META.CFLAGS when compiling, and EMBED_META.LFLAGS when linking.
+#
+# On Unix, when CS' own ELF metadata reader can't be used (because the
+# necessary header file elf.h was not found) embedding is accomplished
+# via libbfd, which carries a GPL license. Projects which carry licenses
+# not compatible with GPL should consider carefully before enabling
+# embedding on Unix. If your project is GPL-compatible, then set GPL-OKAY
+# to "yes". This will indicate that it is safe to use libbfd if the ELF
+# reader can not be used. If your project is not GPL-compatible, then
+# set it to "no" in order to disable embedding on Unix if the ELF reader
+# is not usable. (The user can still manually override the setting via
+# the --enable-meta-info-embedding option.)
+#
+# IMPLEMENTATION NOTES
+#
+# Recent versions of Mingw supply libbfd and libiberty. Since Crystal
+# Space uses native Win32 API for meta-information embedding on Windows,
+# we do not require these libraries on Windows. More importantly, users
+# do not want to see these GPL-licensed libraries appear in the link
+# statement for plugin modules, thus we explicitly disable the libbfd
+# test on Windows.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_META_INFO_EMBED],
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ _CS_META_INFO_EMBED_ENABLE([$1], [$2])
+ AS_IF([test $enable_meta_info_embedding = yes],
+ [_CS_META_INFO_EMBED_TOOLS([$1])
+ AS_IF([test $cs_header_elf_h = yes],
+ [CS_EMIT_BUILD_PROPERTY([ELF.AVAILABLE], [yes], [], [],
+ CS_EMITTER_OPTIONAL([$1]))],
+ [case $host_os in
+ mingw*|cygwin*) ;;
+ *)
+ CS_CHECK_LIBBFD([$1],
+ [CS_EMIT_BUILD_PROPERTY([EMBED_META.CFLAGS],
+ [$cs_cv_libbfd_ok_cflags], [+], [],
+ CS_EMITTER_OPTIONAL([$1]))
+ CS_EMIT_BUILD_PROPERTY([EMBED_META.LFLAGS],
+ [$cs_cv_libbfd_ok_lflags $cs_cv_libbfd_ok_libs],
+ [+], [], CS_EMITTER_OPTIONAL([$1]))])
+ ;;
+ esac])])])
+
+
+#------------------------------------------------------------------------------
+# _CS_META_INFO_EMBED_ENABLE([EMITTER], [GPL-OKAY])
+# Helper for CS_META_INFO_EMBED which adds an
+# --enable-meta-info-embedding option to the configure script allowing
+# the user to control embedding. Sets the shell variable
+# enable_meta_info_embedding to yes or no.
+#
+# IMPLEMENTATION NOTES
+#
+# On Unix, embedding is enabled by default if elf.h is found and disabled
+# by default unless overridden via GPL-OKAY because libbfd carries a GPL
+# license which may be incompatible with a project's own license (such as
+# LGPL).
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_META_INFO_EMBED_ENABLE],
+ [AC_REQUIRE([CS_CHECK_HOST])
+ AC_CHECK_HEADERS([elf.h], [cs_header_elf_h=yes], [cs_header_elf_h=no])
+ AC_MSG_CHECKING([whether to embed plugin meta-information])
+ case $cs_host_target in
+ unix) AS_IF([test $cs_header_elf_h = yes],
+ [cs_embed_meta_info_default=yes],
+ [cs_embed_meta_info_default=m4_ifval([$2],[$2],[no])]) ;;
+ *) cs_embed_meta_info_default=yes ;;
+ esac
+ AC_ARG_ENABLE([meta-info-embedding],
+ [AC_HELP_STRING([--enable-meta-info-embedding],
+ [store plugin meta-information directly inside plugin modules if
+ supported by platform; if disabled, meta-information is stored in
+ stand-alone .csplugin files; this option is enabled by default for
+ non-Unix platforms and on Unix platforms with ELF-format object
+ files; it is disabled by default on Unix platforms if ELF is not
+ available and the project uses a non-GPL-compatible license (such
+ as LGPL) since the non-ELF Unix embedding technology requires the
+ GPL-licensed libbfd library; if ELF is not available, enable this
+ option on Unix only if you are certain you want a GPL-licensed
+ library infecting your project])],
+ [], [enable_meta_info_embedding=$cs_embed_meta_info_default])
+ AC_MSG_RESULT([$enable_meta_info_embedding])
+ CS_EMIT_BUILD_PROPERTY([EMBED_META], [$enable_meta_info_embedding],
+ [], [], CS_EMITTER_OPTIONAL([$1]))])
+
+
+
+#------------------------------------------------------------------------------
+# _CS_META_INFO_EMBED_TOOLS([EMITTER])
+# Helper for CS_META_INFO_EMBED() which searches for tools required for
+# plugin meta-info embedding.
+#------------------------------------------------------------------------------
+AC_DEFUN([_CS_META_INFO_EMBED_TOOLS],
+ [CS_CHECK_TOOLS([WINDRES], [windres])
+ CS_EMIT_BUILD_PROPERTY([CMD.WINDRES], [$WINDRES], [], [],
+ CS_EMITTER_OPTIONAL([$1]))
+
+ CS_CHECK_TOOLS([OBJCOPY], [objcopy])
+ AS_IF([test -n "$OBJCOPY"],
+ [CS_EMIT_BUILD_PROPERTY([OBJCOPY.AVAILABLE], [yes], [], [],
+ CS_EMITTER_OPTIONAL([$1]))
+ CS_EMIT_BUILD_PROPERTY([CMD.OBJCOPY], [$OBJCOPY], [], [],
+ CS_EMITTER_OPTIONAL([$1]))])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_CHECK_LIBBFD([EMITTER], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# Exhaustive check for a usable GPL-licensed libbfd, the Binary File
+# Descriptor library, a component of binutils, which allows low-level
+# manipulation of executable and object files. If EMITTER is provided,
+# then the following variables are recorded by invoking
+# CS_EMIT_BUILD_PROPERTY() with EMITTER. As a convenience, if EMITTER is
+# the literal value "emit" or "yes", then CS_EMIT_BUILD_RESULT()'s
+# default emitter will be used.
+#
+# LIBBFD.AVAILABLE := yes or no
+# LIBBFD.CFLAGS := libbfd compiler flags
+# LIBBFD.LFLAGS := libbfd linker flags
+#
+# The shell variable cs_cv_libbfd_ok is set to yes if a usable libbfd was
+# discovered, else no. If found, the additional shell variables
+# cs_cv_libbfd_ok_cflags, cs_cv_libbfd_ok_lflags, and
+# cs_cv_libbfd_ok_libs are also set.
+#
+# WARNING
+#
+# libbfd carries a GPL license which is incompatible with the LGPL
+# license of Crystal Space. Do not use this library with projects under
+# less restrictive licenses, such as LGPL.
+#
+# IMPLEMENTATION NOTES
+#
+# It seems that some platforms have two version of libiberty installed:
+# one from binutils and one from gcc. The binutils version resides in
+# /usr/lib, whereas the gcc version resides in the gcc installation
+# directory. The gcc version, by default, takes precedence at link time
+# over the binutils version. Unfortunately, in broken cases, the gcc
+# version of libiberty is missing htab_create_alloc() which is required
+# by some libbfd functions. The extensive secondary check of libbfd
+# catches this anomalous case of broken gcc libiberty. It turns out that
+# it is possible to make the linker prefer the binutils version by
+# specifying -L/usr/lib, thus the extensive test attempts to do so in an
+# effort to resolve this unfortunate issue.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_LIBBFD],
+ [CS_CHECK_LIB_WITH([bfd],
+ [AC_LANG_PROGRAM([[#include ]], [bfd_init();])],
+ [], [], [], [], [], [], [-liberty])
+
+ AS_IF([test $cs_cv_libbfd = yes],
+ [CS_CHECK_BUILD([if libbfd is usable], [cs_cv_libbfd_ok],
+ [AC_LANG_PROGRAM([[#include ]],
+ [bfd* p;
+ asection* s;
+ bfd_init();
+ p = bfd_openr(0,0);
+ bfd_check_format(p,bfd_object);
+ bfd_get_section_by_name(p,0);
+ bfd_section_size(p,s);
+ bfd_get_section_contents(p,s,0,0,0);
+ bfd_close(p);])],
+ [CS_CREATE_TUPLE() CS_CREATE_TUPLE([],[-L/usr/lib],[])],
+ [], [], [], [],
+ [$cs_cv_libbfd_cflags],
+ [$cs_cv_libbfd_lflags],
+ [$cs_cv_libbfd_libs])],
+ [cs_cv_libbfd_ok=no])
+
+ AS_IF([test $cs_cv_libbfd_ok = yes],
+ [CS_EMIT_BUILD_RESULT([cs_cv_libbfd_ok], [LIBBFD],
+ CS_EMITTER_OPTIONAL([$1]))
+ $2],
+ [$3])])
+# emit.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003-2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_EMIT_BUILD_PROPERTY(KEY, VALUE, [APPEND], [EMPTY-OKAY], [EMITTER],
+# [UNCONDITIONAL])
+# A utility function which invokes an emitter to record the KEY/VALUE
+# tuple if VALUE is not the empty string (after leading and trailing
+# whitespace is stripped). If EMPTY-OKAY is not an empty string, then the
+# property is emitted even if VALUE is empty; that is, it is emitted
+# unconditionally. If APPEND is the empty string, then the emitter sets
+# the key's value directly (though it may be overridden by the
+# environment), otherwise the emitter appends VALUE to the existing value
+# of the key. EMITTER is a macro name, such as CS_JAMCONFIG_PROPERTY or
+# CS_MAKEFILE_PROPERTY, which performs the actual task of emitting the
+# KEY/VALUE tuple; it should also accept APPEND as an optional third
+# argument. If EMITTER is omitted, CS_JAMCONFIG_PROPERTY is used. Some
+# emitters accept an optional fourth argument, UNCONDITIONAL, which
+# instructs it to set KEY's value unconditionally, even if KEY already
+# had been assigned a value via some other mechanism (such as imported
+# from the environment, or from Jambase, in the case of
+# CS_JAMCONFIG_PROPERTY).
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_EMIT_BUILD_PROPERTY],
+ [cs_build_prop_val="$2"
+ cs_build_prop_val=CS_TRIM([$cs_build_prop_val])
+ m4_ifval([$4],
+ [CS_JAMCONFIG_PROPERTY([$1], [$cs_build_prop_val], [$3])],
+ AS_IF([test -n "$cs_build_prop_val"],
+ [m4_default([$5],[CS_JAMCONFIG_PROPERTY])(
+ [$1], [$cs_build_prop_val], [$3], [$6])]))])
+
+
+
+#------------------------------------------------------------------------------
+# CS_EMIT_BUILD_RESULT(CACHE-VAR, PREFIX, [EMITTER])
+# Record the results of CS_CHECK_BUILD() or CS_CHECK_LIB_WITH() via some
+# emitter. If CACHE-VAR indicates that the build succeeded, then the
+# following properties are emitted:
+#
+# PREFIX.AVAILABLE = yes
+# PREFIX.CFLAGS = $CACHE-VAR_cflags
+# PREFIX.LFLAGS = $CACHE-VAR_lflags $CACHE-VAR_libs
+#
+# EMITTER is a macro name, such as CS_JAMCONFIG_PROPERTY or
+# CS_MAKEFILE_PROPERTY, which performs the actual task of emitting the
+# KEY/VALUE tuple. If EMITTER is omitted, CS_JAMCONFIG_PROPERTY is used.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_EMIT_BUILD_RESULT],
+ [AS_IF([test "$$1" = yes],
+ [CS_EMIT_BUILD_PROPERTY([$2.AVAILABLE], [yes], [], [], [$3])
+ CS_EMIT_BUILD_PROPERTY([$2.CFLAGS], [$$1_cflags], [], [], [$3])
+ CS_EMIT_BUILD_PROPERTY([$2.LFLAGS], [$$1_lflags $$1_libs],
+ [], [], [$3])])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_EMIT_BUILD_FLAGS(MESSAGE, CACHE-VAR, FLAGS, [LANGUAGE], EMITTER-KEY,
+# [APPEND], [ACTION-IF-RECOGNIZED],
+# [ACTION-IF-NOT-RECOGNIZED], [EMITTER])
+# A convenience wrapper for CS_CHECK_BUILD_FLAGS() which also records the
+# results via CS_EMIT_BUILD_PROPERTY(). Checks if the compiler or linker
+# recognizes a command-line option. MESSAGE is the "checking" message.
+# CACHE-VAR is the shell cache variable which receives the flag
+# recognized by the compiler or linker, or "no" if the flag was not
+# recognized. FLAGS is a whitespace- delimited list of build tuples
+# created with CS_CREATE_TUPLE(). Each tuple from FLAGS is attempted in
+# order until one is found which is recognized by the compiler. After
+# that, no further flags are checked. LANGUAGE is typically either C or
+# C++ and specifies which compiler to use for the test. If LANGUAGE is
+# omitted, C is used. EMITTER-KEY is the name to pass as the emitter's
+# "key" argument if a usable flag is encountered. If APPEND is not the
+# empty string, then the discovered flag is appended to the existing
+# value of the EMITTER-KEY. If the command-line option was recognized,
+# then ACTION-IF-RECOGNIZED is invoked, otherwise
+# ACTION-IF-NOT-RECOGNIZED is invoked. EMITTER is a macro name, such as
+# CS_JAMCONFIG_PROPERTY or CS_MAKEFILE_PROPERTY, which performs the
+# actual task of emitting the KEY/VALUE tuple; it should also accept
+# APPEND as an optional third argument. If EMITTER is omitted,
+# CS_JAMCONFIG_PROPERTY is used.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_EMIT_BUILD_FLAGS],
+ [CS_CHECK_BUILD_FLAGS([$1], [$2], [$3], [$4],
+ [CS_EMIT_BUILD_PROPERTY([$5], [$$2], [$6], [], [$9])
+ $7],
+ [$8])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_EMITTER_OPTIONAL([EMITTER])
+# The CS_EMIT_FOO() macros optionally accept an emitter. If no emitter is
+# supplied to those macros, then a default emitter is chosen. Other
+# macros, however, which perform testing and optionally emit the results
+# may wish to interpret an omitted EMITTER as a request not to emit the
+# results. CS_EMITTER_OPTIONAL() is a convenience macro to help in these
+# cases. It should be passed to one of the CS_EMIT_FOO() macros in place
+# of the literal EMITTER argument. It functions by re-interpretating
+# EMITTER as follows:
+#
+# - If EMITTER is omitted, then CS_NULL_EMITTER is returned, effectively
+# disabling output by the CS_EMIT_FOO() macro.
+# - If EMITTER is the literal string "emit" or "yes", then it returns an
+# empty string, which signals to the CS_EMIT_FOO() macro that is should
+# use its default emitter.
+# - Any other value for EMITTER is passed along as-is to the
+# CS_EMIT_FOO() macro.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_EMITTER_OPTIONAL],
+ [m4_case([$1],
+ [], [[CS_NULL_EMITTER]],
+ [emit], [],
+ [yes], [],
+ [[$1]])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_NULL_EMITTER(KEY, VALUE, [APPEND])
+# A do-nothing emitter suitable for use as the EMITTER argument of one of
+# the CS_EMIT_FOO() macros.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_NULL_EMITTER], [:
+])
+
+
+
+#------------------------------------------------------------------------------
+# CS_SUBST_EMITTER(KEY, VALUE, [APPEND])
+# An emitter wrapped around AC_SUBST(). Invokes
+# AC_SUBST(AS_TR_SH(KEY),VALUE). The APPEND argument is ignored.
+# Suitable for use as the EMITTER argument of one of the CS_EMIT_FOO()
+# macros. The call to AS_TR_SH() ensures that KEY is transformed into a
+# valid shell variable. For instance, if a macro attempts to emit
+# MYLIB.CFLAGS and MYLIB.LFLAGS via CS_SUBST_EMITTER(), then the names
+# will be transformed to MYLIB_CFLAGS and MYLIB_LFLAGS, respectively, for
+# the invocation of AC_SUBST().
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_SUBST_EMITTER], [AC_SUBST(AS_TR_SH([$1]),[$2])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_DEFINE_EMITTER(KEY, VALUE, [APPEND])
+# An emitter wrapped around AC_DEFINE_UNQUOTED(). Invokes
+# AC_DEFINE_UNQUOTED(AS_TR_CPP(KEY),VALUE). The APPEND argument is
+# ignored. Suitable for use as the EMITTER argument of one of the
+# CS_EMIT_FOO() macros. The call to AS_TR_CPP() ensures that KEY is a
+# well-formed token for the C-preprocessor.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_DEFINE_EMITTER],
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP([$1]),[$2],
+ [Define when feature is available])])
+# headercache.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# Text cache facility for C-style #define properties. The cache is stored in
+# the shell variable cs_header_text.
+#
+# CS_HEADER_APPEND(TEXT)
+# Append text to the C header text cache. This is a cover for
+# CS_TEXT_CACHE_APPEND().
+#
+# CS_HEADER_PREPEND(TEXT)
+# Prepend text to the C header text cache. This is a cover for
+# CS_TEXT_CACHE_PREPEND().
+#
+# CS_HEADER_PROPERTY(KEY, [VALUE])
+# Append a line of the form "#define KEY VALUE" to the C header text
+# cache. If the VALUE argument is omitted, then the appended line has
+# the simplified form "#define KEY".
+#
+# CS_HEADER_OUTPUT(FILENAME)
+# Instruct config.status to write the C header text cache to the given
+# filename. This is a cover for CS_TEXT_CACHE_OUTPUT().
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_HEADER_APPEND], [CS_TEXT_CACHE_APPEND([cs_header_text], [$1])])
+AC_DEFUN([CS_HEADER_PREPEND], [CS_TEXT_CACHE_PREPEND([cs_header_text], [$1])])
+AC_DEFUN([CS_HEADER_PROPERTY],
+[CS_HEADER_APPEND([@%:@define $1[]m4_ifval([$2], [ $2], [])
+])])
+AC_DEFUN([CS_HEADER_OUTPUT], [CS_TEXT_CACHE_OUTPUT([cs_header_text], [$1])])
+#-----------------------------------------------------------------------------
+# installdirs.m4 (c) Matze Braun
+# Macro for emitting the installation paths gathered by Autoconf.
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# CS_OUTPUT_INSTALLDIRS([EMITTER], [RAW-BACKSLASHES])
+# Emit installation directories collected by Autoconf. EMITTER is a macro
+# name, such as CS_JAMCONFIG_PROPERTY or CS_MAKEFILE_PROPERTY, which performs
+# the actual task of emitting the KEY/VALUE tuple. If EMITTER is omitted,
+# CS_JAMCONFIG_PROPERTY is used. If RAW-BACKSLASHES is not provided, then
+# backslashes in emitted values are each escaped with an additional
+# backslash. If RAW-BACKSLASHES is not the null value, then backslashes are
+# emitted raw. The following properties are emitted:
+#
+# prefix
+# exec_prefix
+# bindir
+# sbindir
+# libexecdir
+# datadir
+# sysconfdir
+# sharedstatedir
+# localstatedir
+# libdir
+# includedir
+# oldincludedir
+# infodir
+# mandir
+#-----------------------------------------------------------------------------
+AC_DEFUN([CS_OUTPUT_INSTALLDIRS],[
+# Handle the case when no prefix is given, and the special case when a path
+# contains more than 2 slashes, these paths seem to be correct but Jam fails
+# on them.
+AS_IF([test $prefix = NONE],
+ [cs_install_prefix="$ac_default_prefix"],
+ [cs_install_prefix=`echo "$prefix" | sed -e 's:///*:/:g'`])
+AS_IF([test $exec_prefix = NONE],
+ [cs_install_exec_prefix="AS_ESCAPE([$(prefix)])"],
+ [cs_install_exec_prefix=`echo "$exec_prefix" | sed -e 's:///*:/:g'`])
+
+_CS_OUTPUT_INSTALL_DIRS([$1], [prefix],
+ [CS_PREPARE_INSTALLPATH([$cs_install_prefix], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [exec_prefix],
+ [CS_PREPARE_INSTALLPATH([$cs_install_exec_prefix], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [bindir],
+ [CS_PREPARE_INSTALLPATH([$bindir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [sbindir],
+ [CS_PREPARE_INSTALLPATH([$sbindir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [libexecdir],
+ [CS_PREPARE_INSTALLPATH([$libexecdir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [datadir],
+ [CS_PREPARE_INSTALLPATH([$datadir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [sysconfdir],
+ [CS_PREPARE_INSTALLPATH([$sysconfdir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [sharedstatedir],
+ [CS_PREPARE_INSTALLPATH([$sharedstatedir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [localstatedir],
+ [CS_PREPARE_INSTALLPATH([$localstatedir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [libdir],
+ [CS_PREPARE_INSTALLPATH([$libdir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [includedir],
+ [CS_PREPARE_INSTALLPATH([$includedir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [oldincludedir],
+ [CS_PREPARE_INSTALLPATH([$oldincludedir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [infodir],
+ [CS_PREPARE_INSTALLPATH([$infodir], [$2])])
+_CS_OUTPUT_INSTALL_DIRS([$1], [mandir],
+ [CS_PREPARE_INSTALLPATH([$mandir], [$2])])
+])
+
+AC_DEFUN([_CS_OUTPUT_INSTALL_DIRS],
+ [m4_default([$1], [CS_JAMCONFIG_PROPERTY])([$2], [$3])])
+
+
+#-----------------------------------------------------------------------------
+# CS_PREPARE_INSTALLPATH(VALUE, [RAW-BACKSLASHES])
+# Transform variable references of the form ${bla} to $(bla) in VALUE and
+# correctly quotes backslashes. This is needed if you need to emit some of
+# the paths from Autoconf. RAW-BACKSLASHES has the same meaning as in
+# CS_OUTPUT_INSTALLDIRS.
+#-----------------------------------------------------------------------------
+AC_DEFUN([CS_PREPARE_INSTALLPATH],
+[`echo "$1" | sed 's/\${\([[a-zA-Z_][a-zA-Z_]]*\)}/$(\1)/g;m4_ifval([$2],
+ [s/\\/\\\\/g], [s/\\\\/\\\\\\\\/g])'`])
+# jamcache.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# Text cache facility for Jam-style properties. The cache is stored in
+# the shell variable cs_jamfile_text.
+#
+# CS_JAMCONFIG_APPEND(TEXT)
+# Append text to the Jam text cache. This is a cover for
+# CS_TEXT_CACHE_APPEND().
+#
+# CS_JAMCONFIG_PREPEND(TEXT)
+# Prepend text to the Jam text cache. This is a cover for
+# CS_TEXT_CACHE_PREPEND().
+#
+# CS_JAMCONFIG_PROPERTY(KEY, VALUE, [APPEND], [UNCONDITIONAL])
+# Append a line of the form "KEY ?= VALUE" to the Jam text cache. If the
+# APPEND argument is not the empty string, then VALUE is appended to the
+# existing value of KEY using the form "KEY += VALUE". If the
+# UNCONDITIONAL argument is not empty, then the value of KEY is set
+# unconditionally "KEY = VALUE", rather than via "KEY ?= VALUE". APPEND
+# takes precedence over UNCONDITIONAL. Note that if VALUE references
+# other Jam variables, for example $(OBJS), then be sure to protect the
+# value with AS_ESCAPE(). For example:
+# CS_JAMCONFIG_PROPERTY([ALLOBJS], [AS_ESCAPE([$(OBJS) $(LIBOBJS)])])
+#
+# CS_JAMCONFIG_OUTPUT(FILENAME)
+# Instruct config.status to write the Jam text cache to the given
+# filename. This is a cover for CS_TEXT_CACHE_OUTPUT().
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_JAMCONFIG_APPEND],
+ [CS_TEXT_CACHE_APPEND([cs_jamconfig_text], [$1])])
+AC_DEFUN([CS_JAMCONFIG_PREPEND],
+ [CS_TEXT_CACHE_PREPEND([cs_jamconfig_text], [$1])])
+AC_DEFUN([CS_JAMCONFIG_PROPERTY],
+ [CS_JAMCONFIG_APPEND(
+ [$1 m4_ifval([$3], [+=], m4_ifval([$4], [=], [?=])) \"$2\" ;
+])])
+AC_DEFUN([CS_JAMCONFIG_OUTPUT],
+ [CS_TEXT_CACHE_OUTPUT([cs_jamconfig_text], [$1])])
+# makecache.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# Text cache facility for makefile-style properties. The cache is stored in
+# the shell variable cs_makefile_text.
+#
+# CS_MAKEFILE_APPEND(TEXT)
+# Append text to the makefile text cache. This is a cover for
+# CS_TEXT_CACHE_APPEND().
+#
+# CS_MAKEFILE_PREPEND(TEXT)
+# Prepend text to the makefile text cache. This is a cover for
+# CS_TEXT_CACHE_PREPEND().
+#
+# CS_MAKEFILE_PROPERTY(KEY, VALUE, [APPEND])
+# Append a line of the form "KEY = VALUE" to the makefile text cache. If
+# the APPEND argument is not the empty string, then VALUE is appended to
+# the existing value of KEY using the form "KEY += VALUE". Note that if
+# VALUE references other makefile variables, for example $(OBJS), then be
+# sure to protect the value with AS_ESCAPE(). For example:
+# CS_MAKEFILE_PROPERTY([ALLOBJS], [AS_ESCAPE([$(OBJS) $(LIBOBJS)])])
+#
+# CS_MAKEFILE_OUTPUT(FILENAME)
+# Instruct config.status to write the makefile text cache to the given
+# filename. This is a cover for CS_TEXT_CACHE_OUTPUT().
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_MAKEFILE_APPEND],
+ [CS_TEXT_CACHE_APPEND([cs_makefile_text], [$1])])
+AC_DEFUN([CS_MAKEFILE_PREPEND],
+ [CS_TEXT_CACHE_PREPEND([cs_makefile_text], [$1])])
+AC_DEFUN([CS_MAKEFILE_PROPERTY],
+ [CS_MAKEFILE_APPEND([$1 m4_ifval([$3], [+=], [=]) $2
+])])
+AC_DEFUN([CS_MAKEFILE_OUTPUT],[CS_TEXT_CACHE_OUTPUT([cs_makefile_text], [$1])])
+# mkdir.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_CHECK_MKDIR
+# Determine how to create a directory and a directory tree. Sets the
+# shell variable MKDIR to the command which creates a directory, and
+# MKDIRS to the command which creates a directory tree. Invokes
+# AC_SUBST() for MKDIR and MKDIRS.
+#
+# IMPLEMENTATION NOTES
+# We need to know the exact commands, so that we can emit them, thus the
+# AS_MKDIR_P function is not what we want to use here since it does not
+# provide access to the commands (and might not even discover suitable
+# commands). First try "mkdir -p", then try the older "mkdirs".
+# Finally, if the mkdir command failed to recognize -p, then it might
+# have created a directory named "-p", so clean up that bogus directory.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_CHECK_MKDIR],
+ [AC_CACHE_CHECK([how to create a directory], [cs_cv_shell_mkdir],
+ [cs_cv_shell_mkdir='mkdir'])
+ AC_SUBST([MKDIR], [$cs_cv_shell_mkdir])
+
+ AC_CACHE_CHECK([how to create a directory tree], [cs_cv_shell_mkdir_p],
+ [if $cs_cv_shell_mkdir -p . 2>/dev/null; then
+ cs_cv_shell_mkdir_p='mkdir -p'
+ elif mkdirs . 2>/dev/null; then
+ cs_cv_shell_mkdir_p='mkdirs'
+ fi
+ test -d ./-p && rmdir ./-p])
+ AS_VAR_SET_IF([cs_cv_shell_mkdir_p],
+ [AC_SUBST([MKDIRS], [$cs_cv_shell_mkdir_p])],
+ [CS_MSG_ERROR([do not know how to create a directory tree])])])
+
+
+
+#------------------------------------------------------------------------------
+# Replacement for AS_MKDIR_P() from m4sugar/m4sh.m4 which fixes two problems
+# which are present in Autoconf 2.57 and probably all earlier 2.5x versions.
+# This bug, along with a patch, was submitted to the Autoconf GNATS database by
+# Eric Sunshine as #227 on 17-Dec-2002. The bogus "-p" directory bug was fixed
+# for Autoconf 2.58 on 26-Sep-2003. The "mkdirs" optimization was not accepted
+# (since it is unnecessary; it's only an optimization).
+#
+# 1) Removes bogus "-p" directory which the stock AS_MKDIR_P() leaves laying
+# around in the working directory if the mkdir command does not recognize
+# the -p option.
+# 2) Takes advantage of the older "mkdirs" program if it exists and if "mkdir
+# -p" does not work.
+#------------------------------------------------------------------------------
+m4_defun([_AS_MKDIR_P_PREPARE],
+[if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p'
+elif mkdirs . 2>/dev/null; then
+ as_mkdir_p='mkdirs'
+else
+ as_mkdir_p=''
+fi
+test -d ./-p && rmdir ./-p
+])# _AS_MKDIR_P_PREPARE
+
+m4_define([AS_MKDIR_P],
+[AS_REQUIRE([_$0_PREPARE])dnl
+{ if test -n "$as_mkdir_p"; then
+ $as_mkdir_p $1
+ else
+ as_dir=$1
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`AS_DIRNAME("$as_dir")`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || AS_ERROR([cannot create directory $1]); }
+])# AS_MKDIR_P
+#==============================================================================
+# packageinfo.m4
+# Macros for setting general info on the package, such as name and version
+# numbers and propagate them to the generated make and Jam property files.
+#
+# Copyright (C)2003 by Matthias Braun
+# Copyright (C)2003,2004 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+
+#------------------------------------------------------------------------------
+# CS_PACKAGEINFO([LONGNAME], [COPYRIGHT, [HOMEPAGE])
+# Set additional information for the package. Note that the version
+# number of your application should only contain numbers, because on
+# Windows you can only set numerical values in some of the file
+# properties (such as versioninfo .rc files).
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_PACKAGEINFO],
+ [PACKAGE_LONGNAME="[$1]"
+ PACKAGE_COPYRIGHT="[$2]"
+ PACKAGE_HOMEPAGE="[$3]"
+])
+
+
+#------------------------------------------------------------------------------
+# CS_EMIT_PACKAGEINFO([EMITTER])
+# Emit extended package information using the provided EMITTER. EMITTER
+# is a macro name, such as CS_JAMCONFIG_PROPERTY or CS_MAKEFILE_PROPERTY,
+# which performs the actual task of emitting the KEY/VALUE tuple. If
+# EMITTER is omitted, CS_JAMCONFIG_PROPERTY is used. For backward
+# compatibility, if EMITTER is the literal value "jam", then
+# CS_JAMCONFIG_PROPERTY is used; if it is "make", then
+# CS_MAKEFILE_PROPERTY is used; however use of these literal names is
+# highly discouraged.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_EMIT_PACKAGEINFO],
+ [_CS_EMIT_PACKAGEINFO([$1], [PACKAGE_NAME], [$PACKAGE_NAME])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_VERSION], [$PACKAGE_VERSION])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_STRING], [$PACKAGE_STRING])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_BUGREPORT], [$PACKAGE_BUGREPORT])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_LONGNAME], [$PACKAGE_LONGNAME])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_HOMEPAGE], [$PACKAGE_HOMEPAGE])
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_COPYRIGHT], [$PACKAGE_COPYRIGHT])
+ for cs_veritem in m4_translit(AC_PACKAGE_VERSION, [.], [ ]); do
+ _CS_EMIT_PACKAGEINFO([$1], [PACKAGE_VERSION_LIST], [$cs_veritem], [+])
+ done
+ ])
+
+AC_DEFUN([_CS_EMIT_PACKAGEINFO],
+ [m4_case([$1],
+ [make], [CS_MAKEFILE_PROPERTY([$2], [$3], [$4])],
+ [jam], [CS_JAMCONFIG_PROPERTY([$2], [$3], [$4])],
+ [], [CS_JAMCONFIG_PROPERTY([$2], [$3], [$4])],
+ [$1([$2], [$3], [$4])])])
+# path.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2004 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_PATH_NORMALIZE(STRING)
+# Normalize a pathname at run-time by transliterating Windows/DOS
+# backslashes to forward slashes. Also collapses whitespace.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_PATH_NORMALIZE],
+[`echo "x$1" | tr '\\\\' '/' | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`])
+
+
+#------------------------------------------------------------------------------
+# CS_RUN_PATH_NORMALIZE(COMMAND)
+# Normalize the pathname emitted by COMMAND by transliterating
+# Windows/DOS backslashes to forward slashes. Also collapses whitespace.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_RUN_PATH_NORMALIZE],
+[`AC_RUN_LOG([$1]) | tr '\\\\' '/' | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`])
+###############################################################################
+# progver.m4
+# Written by Norman Kramer
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###############################################################################
+#
+# From the input pattern we create regular expressions we send through sed
+# to extract the version information from the standard input to sed.
+# Then we extract from the resulting version string subparts.
+# The same happens with the supplied version string. It too is split into its
+# subparts according to the pattern.
+# Then the subparts from the gathered version string and the supplied one are
+# compared.
+#
+# How does the pattern look like ?
+# It is a sequence of 9s and _s and separators.
+# 9 denotes a non empty sequence of digits.
+# _ denotes a non empty sequence of characters from the class [a-zA-Z].
+# | everything behind is optional
+# Everything else is treated as a separator.
+# Consecutive 9s and _s are compressed to contain only one of each type.
+# For instance "99_.9.__abc9_" will become "9_.9._abc9_".
+#
+# How we find the parts we compare ?
+# From this transformed string we yield the parts we will later compare.
+# We break up the string as follows:
+# Any sequence of separators represent one breakup. Additional breakups are
+# placed behind every 9 and _ .
+# So the example from above will give:
+#
+# "99_.9.__abc9_" ===compress==> "9_.9._abc9_" ===breakup==> "9" "_" "9" "_" "9" "_"
+#
+# How we create the regular expressions ?
+# We take the compressed pattern and quote every separator.
+# The we replace the 9s with [0-9][0-9]*
+# and the _s with [a-zA-Z][a-zA-Z]* .
+# The above example will become:
+#
+# "99_.9.__abc9_" ===compress==> "9_.9._abc9_" ===rexify==>
+# [0-9][0-9]*[a-zA-Z][a-zA-Z]*\.[0-9][0-9]*\.[a-zA-Z][a-zA-Z]*\a\b\c[0-9][0-9]*[a-zA-Z][a-zA-Z]*
+#
+# Voila.
+#
+# To yield the subparts from the string we additionally enclose the
+# 9s and _s with \( and \).
+#
+###############################################################################
+
+# ****************************************************************
+# ** helper definitions **
+# ****************************************************************
+m4_define([CS_VCHK_RUNTH], [m4_pushdef([i], [$1])m4_if($1,0,,[CS_VCHK_RUNTH(m4_decr($1), [$2])][$2])m4_popdef([i])])
+m4_define([CS_VCHK_PREFIX], [])
+m4_define([CS_VCHK_SUFFIX], [])
+m4_define([CS_VCHK_GROUPPREFIX], [\(])
+m4_define([CS_VCHK_GROUPSUFFIX], [\)])
+m4_define([CS_VCHK_CHAR], [[[[a-zA-Z]]]])
+m4_define([CS_VCHK_DIGIT], [[[0-9]]])
+m4_define([CS_VCHK_SEQUENCE], [CS_VCHK_PREFIX[]CS_VCHK_SINGLE[]CS_VCHK_SINGLE[]*CS_VCHK_SUFFIX[]])
+m4_define([CS_VCHK_OPTSEQUENCE], [CS_VCHK_PREFIX[]CS_VCHK_SINGLE[]*CS_VCHK_SUFFIX[]])
+m4_define([CS_VCHK_REXSEQ], [m4_bpatsubst($1, [$2], [[]CS_VCHK_SEQUENCE[]])])
+m4_define([CS_VCHK_GROUPINGON], [m4_pushdef([CS_VCHK_PREFIX], [CS_VCHK_GROUPPREFIX])m4_pushdef([CS_VCHK_SUFFIX], [CS_VCHK_GROUPSUFFIX])])
+m4_define([CS_VCHK_GROUPINGOFF], [m4_popdef([CS_VCHK_SUFFIX])m4_popdef([CS_VCHK_PREFIX])])
+m4_define([CS_VCHK_OPTON], [m4_pushdef([CS_VCHK_SEQUENCE], [CS_VCHK_OPTSEQUENCE])])
+m4_define([CS_VCHK_OPTOFF], [m4_popdef([CS_VCHK_SEQUENCE])])
+m4_define([CS_VCHK_RMOPT], [CS_VCHK_RMCHAR([$1], m4_index([$1], [|]))])
+m4_define([CS_VCHK_RMCHAR], [m4_if($2,-1,[$1],m4_substr([$1], 0, $2)[]m4_substr([$1], m4_incr($2)))])
+m4_define([CS_VCHK_RMALL], [m4_translit([$1], [|], [])])
+m4_define([CS_VCHK_CUTOFF], [m4_if(m4_index($1,[|]),-1, [$1], [m4_substr($1, 0, m4_index($1,[|]))])])
+m4_define([CS_VCHK_CYCLEOPT], [
+m4_if($2,-1,, [m4_pushdef([i], CS_VCHK_CUTOFF([$1])) m4_pushdef([j], CS_VCHK_DUMMY_TAIL([$1])) CS_VCHK_CYCLEOPT( CS_VCHK_RMOPT([$1]), m4_index($1, [|]), [$3])$3 m4_popdef([i]) m4_popdef([j])])
+])
+m4_define([CS_VCHK_TAIL], [m4_if(m4_index($1,[|]),-1, [], [m4_substr($1, m4_incr(m4_index($1,[|])))])])
+m4_define([CS_VCHK_DUMMY_COMPRESS], [m4_bpatsubst(m4_bpatsubst([$1], [__*], [A]), [99*], [0])])
+m4_define([CS_VCHK_DUMMY_TAIL], [CS_VCHK_DUMMY_COMPRESS(m4_translit(CS_VCHK_TAIL([$1]), [|], []))])
+
+# ****************************************************************
+# ** FlagsOn / FlagsOff **
+# ****************************************************************
+m4_define([CS_VCHK_FLAGSON],
+[m4_if($#, 0, [],
+ $1, [], [],
+ [$1], [group], [CS_VCHK_GROUPINGON[]],
+ [$1], [opt], [CS_VCHK_OPTON[]])dnl
+m4_if($#, 0, [], $1, [], [], [CS_VCHK_FLAGSON(m4_shift($@))])])
+
+m4_define([CS_VCHK_FLAGSOFF],
+[m4_if($#, 0, [],
+ $1, [], [],
+ $1, [group], [CS_VCHK_GROUPINGOFF[]],
+ [$1], [opt], [CS_VCHK_OPTOFF[]])dnl
+m4_if($#, 0, [], $1, [], [], [CS_VCHK_FLAGSOFF(m4_shift($@))])])
+
+# ****************************************************************
+# ** rexify / sedify **
+# ****************************************************************
+m4_define([CS_VCHK_REXIFY],
+[m4_pushdef([CS_VCHK_SINGLE], [$1])dnl
+CS_VCHK_FLAGSON(m4_shift(m4_shift(m4_shift($@))))dnl
+CS_VCHK_REXSEQ([$3], [$2])dnl
+CS_VCHK_FLAGSOFF(m4_shift(m4_shift(m4_shift($@))))dnl
+m4_popdef([CS_VCHK_SINGLE])])
+
+m4_define([CS_VCHK_QUOTESEP], [m4_bpatsubst($1, [[^9_]], [\\\&])])
+
+m4_define([CS_VCHK_REXCHAR], [CS_VCHK_REXIFY([CS_VCHK_CHAR], [__*], $@)])
+m4_define([CS_VCHK_REXDIGIT], [CS_VCHK_REXIFY([CS_VCHK_DIGIT], [99*], $@)])
+m4_define([CS_VCHK_SEDIFY], [CS_VCHK_REXDIGIT([CS_VCHK_REXCHAR([CS_VCHK_QUOTESEP([$1])], m4_shift($@))], m4_shift($@))])
+m4_define([CS_VCHK_SEDEXPRALL], [/CS_VCHK_SEDIFY([$1])/!d;s/.*\(CS_VCHK_SEDIFY([$1])\).*/\1/;q])
+m4_define([CS_VCHK_SEDEXPRNTH], [/CS_VCHK_SEDIFY([$1])/!d;s/.*CS_VCHK_SEDIFY([$1],[group]).*/\$2/])
+
+# ****************************************************************
+# ** Pattern splitting **
+# ****************************************************************
+m4_define([CS_VCHK_SPLITSEP], [CS_VCHK_REXIFY([s], [[^9_][^9_]*], $@)])
+m4_define([CS_VCHK_SPLITDIGIT], [CS_VCHK_REXIFY([d], [99*], $@)])
+m4_define([CS_VCHK_SPLITCHAR], [CS_VCHK_REXIFY([c], [__*], $@)])
+
+# ****************************************************************
+# ** return a list of 's' 'd' 'c' 'e' chars denoting the kind **
+# ** pattern parts: separator, digit, char, end **
+# ****************************************************************
+m4_define([CS_VCHK_PATTERNLIST], [m4_pushdef([CS_VCHK_SEQUENCE], [CS_VCHK_SINGLE ])dnl
+m4_translit(CS_VCHK_SPLITDIGIT([CS_VCHK_SPLITCHAR([CS_VCHK_SPLITSEP([$1])])]), [ ], m4_if([$2],[],[ ],[$2]))e[]dnl
+m4_popdef([CS_VCHK_SEQUENCE])])
+
+# ****************************************************************
+# ** Build the shell commands we emit to the configure script. **
+# ****************************************************************
+m4_define([CS_VCHK_PATCOUNT], [m4_len(m4_bpatsubst(CS_VCHK_PATTERNLIST([$1]), [[^dc]]))])
+
+# ****************************************************************************************
+# ** CS_VCHK_EXTRACTVERSION(EXTRACT_CALL, MIN_VERSION, PATTERN, PRGPREFIX, COMPARISION) **
+# ****************************************************************************************
+m4_define([CS_VCHK_EXTRACTVERSION],
+[cs_prog_$4_is_version=
+cs_prog_$4_min_version=
+cs_prog_$4_is_suffix=
+cs_prog_$4_min_suffix=
+cs_prog_$4_is_suffix_done=
+cs_prog_$4_min_suffix_done=
+CS_VCHK_CYCLEOPT([$3], [],
+[test -z $cs_prog_$4_is_version && cs_prog_$4_is_version=`$1 | sed 'CS_VCHK_SEDEXPRALL([i])'`
+test -n "$cs_prog_$4_is_version" && test -z $cs_prog_$4_is_suffix_done && { cs_prog_$4_is_suffix_done=yes ; cs_prog_$4_is_suffix=j ; }
+])
+CS_VCHK_CYCLEOPT([$3], ,
+[test -z $cs_prog_$4_min_version && cs_prog_$4_min_version=`echo $2 | sed 'CS_VCHK_SEDEXPRALL([i])'`
+test -n "$cs_prog_$4_min_version" && test -z $cs_prog_$4_min_suffix_done && { cs_prog_$4_min_suffix_done=yes ; cs_prog_$4_min_suffix=j ; }
+])
+CS_VCHK_RUNTH([CS_VCHK_PATCOUNT([$3])],
+ [cs_prog_$4_is_ver_[]i=`echo ${cs_prog_$4_is_version}${cs_prog_$4_is_suffix} | sed 'CS_VCHK_SEDEXPRNTH([CS_VCHK_RMALL([$3])], [i])'`
+])
+CS_VCHK_RUNTH([CS_VCHK_PATCOUNT([$3])],
+ [cs_prog_$4_min_ver_[]i=`echo $cs_prog_$4_min_version${cs_prog_$4_min_suffix} | sed 'CS_VCHK_SEDEXPRNTH([CS_VCHK_RMALL([$3])], [i])'`
+])
+cs_cv_prog_$4_version_ok=''
+CS_VCHK_RUNTH([CS_VCHK_PATCOUNT([$3])],
+[test -z "$cs_cv_prog_$4_version_ok" && { expr "$cs_prog_$4_is_ver_[]i" "$5" "$cs_prog_$4_min_ver_[]i" >/dev/null || cs_cv_prog_$4_version_ok=no ; }
+test -z "$cs_cv_prog_$4_version_ok" && { expr "$cs_prog_$4_min_ver_[]i" "$5" "$cs_prog_$4_is_ver_[]i" >/dev/null || cs_cv_prog_$4_version_ok=yes ; }
+])
+AS_IF([test -z "$cs_cv_prog_$4_version_ok"], [cs_cv_prog_$4_version_ok=yes])
+cs_cv_prog_$4_version_ok_annotated="$cs_cv_prog_$4_version_ok"
+AS_IF([test -n "$cs_prog_$4_is_version"],
+ [cs_cv_prog_$4_version_ok_annotated="$cs_cv_prog_$4_version_ok_annotated (version $cs_prog_$4_is_version)"])
+])
+
+##############################################################################
+# CS_CHECK_PROG_VERSION(PROG, EXTRACT_CALL, VERSION, PATTERN,
+# [ACTION-IF-OKAY], [ACTION-IF-NOT-OKAY], [CMP])
+# Check the version of a program PROG.
+# Version information is emitted by EXTRACT_CALL (for instance "bison -V").
+# The discovered program version is compared against VERSION.
+# The pattern of the version string matches PATTERN
+# The extracted version and the supplied version are compared with the CMP
+# operator. i.e. EXTRACTED_VERSION CMP SUPPLIED_VERSION
+# CMP defaults to >= if not specified.
+# ACTION-IF-OKAY is invoked if comparision yields true, otherwise
+# ACTION-IF-NOT-OKAY is invoked.
+#
+# PATTERN literals: 9 .. marks a non empty sequence of digits
+# _ .. marks a non empty sequence of characters from [a-zA-Z]
+# | .. everything behind is optional
+# .. everything else is taken as separator - it is better
+# to not try stuff like space, slash or comma.
+#
+# The test results in cs_cv_prog_PROG_version_ok being either yes or no.
+##############################################################################
+AC_DEFUN([CS_CHECK_PROG_VERSION],
+[AC_CACHE_CHECK([if $1 version m4_default([$7],[>=]) $3],
+ [AS_TR_SH([cs_cv_prog_$1_version_ok_annotated])],
+ [CS_VCHK_EXTRACTVERSION([$2], [$3], [$4], AS_TR_SH([$1]),
+ m4_default([$7],[>=]))])
+AS_IF([test "$AS_TR_SH([cs_cv_prog_$1_version_ok])" = yes], [$5], [$6])])
+# qualify.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_SYMBOL_QUALIFIER(MESSAGE, CACHE-VAR, QUALIFIERS, [SYMBOL], [LANG],
+# [ACTION-IF-ACCEPTED], [ACTION-IF-NOT-ACCEPTED])
+# Test if a symbol can be qualified by one of the elements of the
+# comma-separated list of QUALIFIERS. Examples of qualifiers include
+# __attribute__((deprecated)), __declspec(dllimport), etc. MESSAGE is the
+# "checking" message. CACHE-VAR is the variable which receives the
+# qualifier which succeeded, or the the literal "no" if none were
+# accepted. SYMBOL is the symbol to which the qualifier should be
+# applied. If omitted, then SYMBOL defaults to "void f();". LANG is the
+# language of the test, typically "C" or "C++". It defaults to "C" if
+# omitted. ACTION-IF-ACCEPTED is invoked after CACHE-VAR is set if one of
+# the qualifiers is accepted, else ACTION-IF-NOT-ACCEPTED is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_SYMBOL_QUALIFIER],
+ [AC_CACHE_CHECK([$1], [$2],
+ [$2='no'
+ m4_foreach([cs_symbol_qualifier], [$3],
+ [AS_IF([test "$$2" = no],
+ [CS_BUILD_IFELSE(
+ [AC_LANG_PROGRAM(
+ [cs_symbol_qualifier m4_default([$4],[void f()]);],
+ [])],
+ [], [$5], [$2='cs_symbol_qualifier'], [$2='no'])])])])
+ AS_IF([test $$2 != no], [$6], [$7])])
+# split.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_SPLIT(LINE, [OUTPUT-VARIABLES], [DELIMITER], [FILLER])
+# Split LINE into individual tokens. Tokens are delimited by DELIMITER,
+# which is the space character if omitted. OUTPUT-VARIABLES is a
+# comma-delimited list of shell variables which should receive the
+# extracted tokens. If there are too few tokens to fill the output
+# variables, then the excess variables will be assigned the empty string.
+# If there are too few output variables, then the excess tokens will be
+# ignored. If OUTPUT-VARIABLES is omitted, then the split tokens will be
+# assigned to the shell meta-variables $1, $2, $3, etc. When
+# OUTPUT-VARIABLES is omitted, FILLER is assigned to meta-variables in
+# cases where DELIMITER delimits a zero-length token. FILLER defaults
+# to "filler". For example, if DELIMITER is "+" and OUTPUT-VARIABLES is
+# omitted, given the line "one++three", $1 will be "one", $2 will be
+# "filler", and $3 will be "three".
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_SPLIT],
+ [m4_define([cs_split_filler], m4_default([$4],[filler]))
+ set cs_split_filler `echo "$1" | awk 'BEGIN { FS="m4_default([$3],[ ])" }
+ { for (i=1; i <= NF; ++i)
+ { if ($i == "") print "cs_split_filler"; else print $i } }'`
+ shift
+ m4_map([_CS_SPLIT], [$2])])
+
+AC_DEFUN([_CS_SPLIT],
+ [AS_IF([test $[@%:@] -eq 0], [$1=''],
+ [AS_IF([test "$[1]" = cs_split_filler], [$1=''], [$1=$[1]])
+ shift])])
+# textcache.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# Text cache facility. These macros provide a way to incrementally store
+# arbitrary text in a shell variable, and to write the saved text to a file.
+#
+# CS_TEXT_CACHE_APPEND(VARIABLE, TEXT)
+# Append text to the contents of the named shell variable. If the text
+# contains references to shell variables (such as $foo), then those
+# references will be expanded. If expansion is not desired, then protect
+# the text with AS_ESCAPE().
+#
+# CS_TEXT_CACHE_PREPEND(VARIABLE, TEXT)
+# Prepend text to the contents of the named shell variable. If the text
+# contains references to shell variables (such as $foo), then those
+# references will be expanded. If expansion is not desired, then protect
+# the text with AS_ESCAPE().
+#
+# CS_TEXT_CACHE_OUTPUT(VARIABLE, FILENAME)
+# Instruct config.status to write the contents of the named shell
+# variable to the given filename. If the file resides in a directory,
+# the directory will be created, if necessary. If the output file
+# already exists, and if the cached text is identical to the contents of
+# the existing file, then the existing file is left alone, thus its time
+# stamp remains unmolested. This heuristic may help to minimize rebuilds
+# when the file is listed as a dependency in a makefile.
+#
+# *NOTE*
+# There is a bug in Autoconf 2.57 and probably all earlier 2.5x versions
+# which results in errors if AC_CONFIG_COMMANDS is invoked for a `tag'
+# which represents a file in a directory which does not yet exist.
+# Unfortunately, even invoking AS_MKDIR_P in the `cmd' portion of
+# AC_CONFIG_COMMANDS does not solve the problem because the generated
+# configure script attempts to access information about the directory
+# before AS_MKDIR_P has a chance to create it. This forces us to invoke
+# AS_MKDIR_P in the third argument to AC_CONFIG_COMMANDS (the
+# `init-cmds') rather than the second (the `cmds'). This is undesirable
+# because it means that the directory will be created anytime
+# config.status is invoked (even for a simple --help), rather than being
+# created only when requested to output the text cache. This bug was
+# submitted to the Autoconf GNATS database by Eric Sunshine as #228 on
+# 27-Dec-2002. It was fixed for Autoconf 2.58 on 26-Sep-2003. The
+# official fix makes the assumption that `tag' always represents a file
+# (as opposed to some generic target), and creates the file's directory
+# is not present.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_TEXT_CACHE_APPEND], [$1="${$1}$2"])
+AC_DEFUN([CS_TEXT_CACHE_PREPEND], [$1="$2${$1}"])
+AC_DEFUN([CS_TEXT_CACHE_OUTPUT],
+ [AC_CONFIG_COMMANDS([$2],
+ [echo $ECHO_N "$$1$ECHO_C" > $tmp/tcache
+ AS_IF([diff $2 $tmp/tcache >/dev/null 2>&1],
+ [AC_MSG_NOTICE([$2 is unchanged])],
+ [rm -f $2
+ cp $tmp/tcache $2])
+ rm -f $tmp/tcache],
+ [$1='$$1'
+ cs_dir=`AS_DIRNAME([$2])`
+ AS_ESCAPE(AS_MKDIR_P([$cs_dir]), [$`\])])])
+# trim.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2003 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_TRIM(STRING)
+# Strip leading and trailing spaces from STRING and collapse internal
+# runs of multiple spaces to a single space.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_TRIM], [`echo x$1 | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`])
+# warnings.m4 -*- Autoconf -*-
+#==============================================================================
+# Copyright (C)2005 by Eric Sunshine
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#==============================================================================
+AC_PREREQ([2.56])
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_WARNINGS([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to enable compilation warnings. If LANGUAGE is not provided,
+# then `C' is assumed (other options include `C++'). If CACHE-VAR is not
+# provided, then it defaults to the name
+# "cs_cv_prog_compiler_enable_warnings". If an option for enabling
+# warnings (such as `-Wall') is discovered, then it is assigned to
+# CACHE-VAR and ACTION-IF-FOUND is invoked; otherwise the empty string is
+# assigned to CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#
+# IMPLEMENTATION NOTES
+#
+# On some platforms, it is more appropriate to use -Wmost rather than
+# -Wall even if the compiler understands both, thus we attempt -Wmost
+# before -Wall.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_WARNINGS],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to enable m4_default([$1],[C]) compilation warnings],
+ [m4_default([$2],[cs_cv_prog_compiler_enable_warnings])],
+ [CS_CREATE_TUPLE([-Wmost]) CS_CREATE_TUPLE([-Wall])],
+ [$1], [$3], [$4])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_ERRORS([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to promote compilation diganostics from warning to error
+# status. If LANGUAGE is not provided, then `C' is assumed (other options
+# include `C++'). If CACHE-VAR is not provided, then it defaults to the
+# name "cs_cv_prog_compiler_enable_errors". If an option for performing
+# this promotion (such as `-Werror') is discovered, then it is assigned
+# to CACHE-VAR and ACTION-IF-FOUND is invoked; otherwise the empty string
+# is assigned to CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_ERRORS],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to treat m4_default([$1],[C]) warnings as errors],
+ [m4_default([$2],[cs_cv_prog_compiler_enable_errors])],
+ [CS_CREATE_TUPLE([-Werror])], [$1], [$3], [$4])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_IGNORE_UNUSED([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to instruct compiler to ignore unused variables and
+# arguments. This option may be useful for code generated by tools, such
+# as Swig, Bison, and Flex, over which the client has no control, yet
+# wishes to compile without excessive diagnostic spew. If LANGUAGE is
+# not provided, then `C' is assumed (other options include `C++'). If
+# CACHE-VAR is not provided, then it defaults to the name
+# "cs_cv_prog_compiler_ignore_unused". If an option (such as
+# `-Wno-unused') is discovered, then it is assigned to CACHE-VAR and
+# ACTION-IF-FOUND is invoked; otherwise the empty string is assigned to
+# CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_IGNORE_UNUSED],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to suppress m4_default([$1],[C]) unused variable warnings],
+ [m4_default([$2],[cs_cv_prog_compiler_ignore_unused])],
+ [CS_CREATE_TUPLE([-Wno-unused])], [$1], [$3], [$4])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_IGNORE_UNINITIALIZED([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to instruct compiler to ignore uninitialized variables. This
+# option may be useful for code generated by tools, such as Swig, Bison,
+# and Flex, over which the client has no control, yet wishes to compile
+# without excessive diagnostic spew. If LANGUAGE is not provided, then
+# `C' is assumed (other options include `C++'). If CACHE-VAR is not
+# provided, then it defaults to the name
+# "cs_cv_prog_compiler_ignore_uninitialized". If an option (such as
+# `-Wno-uninitialized') is discovered, then it is assigned to CACHE-VAR
+# and ACTION-IF-FOUND is invoked; otherwise the empty string is assigned
+# to CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_IGNORE_UNINITIALIZED],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to suppress m4_default([$1],[C]) uninitialized warnings],
+ [m4_default([$2],
+ [cs_cv_prog_compiler_ignore_uninitialized_variables])],
+ [CS_CREATE_TUPLE([-Wno-uninitialized])], [$1], [$3], [$4])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_IGNORE_PRAGMAS([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to instruct compiler to ignore unrecognized #pragma
+# directives. This option may be useful for code which contains
+# unprotected #pragmas which are not understood by all compilers. If
+# LANGUAGE is not provided, then `C' is assumed (other options include
+# `C++'). If CACHE-VAR is not provided, then it defaults to the name
+# "cs_cv_prog_compiler_ignore_unknown_pragmas". If an option (such as
+# `-Wno-unknown-pragmas') is discovered, then it is assigned to CACHE-VAR
+# and ACTION-IF-FOUND is invoked; otherwise the empty string is assigned
+# to CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_IGNORE_PRAGMAS],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to suppress m4_default([$1],[C]) unknown [#pragma] warnings],
+ [m4_default([$2],[cs_cv_prog_compiler_ignore_unknown_pragmas])],
+ [CS_CREATE_TUPLE([-Wno-unknown-pragmas])], [$1], [$3], [$4])])
+
+
+
+#------------------------------------------------------------------------------
+# CS_COMPILER_IGNORE_LONG_DOUBLE([LANGUAGE], [CACHE-VAR], [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+# Check how to instruct compiler to suppress warnings about `long double'
+# usage. This option may be useful for code generated by tools, such as
+# Swig, Bison, and Flex, over which the client has no control, yet wishes
+# to compile without excessive diagnostic spew. If LANGUAGE is not
+# provided, then `C' is assumed (other options include `C++'). If
+# CACHE-VAR is not provided, then it defaults to the name
+# "cs_cv_prog_compiler_ignore_long_double". If an option (such as
+# `-Wno-long-double') is discovered, then it is assigned to CACHE-VAR and
+# ACTION-IF-FOUND is invoked; otherwise the empty string is assigned to
+# CACHE-VAR and ACTION-IF-NOT-FOUND is invoked.
+#------------------------------------------------------------------------------
+AC_DEFUN([CS_COMPILER_IGNORE_LONG_DOUBLE],
+ [CS_CHECK_BUILD_FLAGS(
+ [how to suppress m4_default([$1],[C]) `long double' warnings],
+ [m4_default([$2],[cs_cv_prog_compiler_ignore_long_double])],
+ [CS_CREATE_TUPLE([-Wno-long-double])], [$1], [$3], [$4])])
diff --git a/Code/Physics/Bullet Source/autogen.sh b/Code/Physics/Bullet Source/autogen.sh
new file mode 100644
index 00000000..35623fac
--- /dev/null
+++ b/Code/Physics/Bullet Source/autogen.sh
@@ -0,0 +1,61 @@
+#! /bin/sh
+
+if [ "$USER" = "root" ]; then
+ echo "*** You cannot do this as "$USER" please use a normal user account."
+ exit 1
+fi
+if test ! -f configure.ac ; then
+ echo "*** Please invoke this script from directory containing configure.ac."
+ exit 1
+fi
+
+echo "running aclocal"
+aclocal
+rc=$?
+
+if test $rc -eq 0; then
+ echo "running libtool"
+ libtoolize --force --automake --copy
+ rc=$?
+else
+ echo "An error occured, autogen.sh stopping."
+ exit $rc
+fi
+
+if test $rc -eq 0; then
+ echo "libtool worked."
+else
+ echo "libtool not found. trying glibtool."
+ glibtoolize --force --automake --copy
+ rc=$?
+fi
+
+if test $rc -eq 0; then
+ echo "running automake"
+ automake --add-missing --copy
+ rc=$?
+else
+ echo "An error occured, autogen.sh stopping."
+ exit $rc
+fi
+
+if test $rc -eq 0; then
+ echo "running autoheader"
+ autoheader
+ rc=$?
+else
+ echo "An error occured, autogen.sh stopping."
+ exit $rc
+fi
+
+if test $rc -eq 0; then
+ echo "running autoconf"
+ autoconf
+ rc=$?
+else
+ echo "An error occured, autogen.sh stopping."
+ exit $rc
+fi
+
+echo "autogen.sh complete"
+exit $rc
diff --git a/Code/Physics/Bullet Source/bullet.pc.cmake b/Code/Physics/Bullet Source/bullet.pc.cmake
new file mode 100644
index 00000000..c5649d58
--- /dev/null
+++ b/Code/Physics/Bullet Source/bullet.pc.cmake
@@ -0,0 +1,6 @@
+Name: bullet
+Description: Bullet Continuous Collision Detection and Physics Library
+Requires:
+Version: @BULLET_VERSION@
+Libs: -L@LIB_DESTINATION@ -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath
+Cflags: @BULLET_DOUBLE_DEF@ -I@INCLUDE_INSTALL_DIR@
diff --git a/Code/Physics/Bullet Source/bullet.pc.in b/Code/Physics/Bullet Source/bullet.pc.in
new file mode 100644
index 00000000..ffcd4f36
--- /dev/null
+++ b/Code/Physics/Bullet Source/bullet.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: bullet
+Description: Bullet Continuous Collision Detection and Physics Library
+Requires:
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath
+Cflags: -I${includedir}/bullet
diff --git a/Code/Physics/Bullet Source/bullet_logo.png b/Code/Physics/Bullet Source/bullet_logo.png
new file mode 100644
index 00000000..d3a1b4b5
Binary files /dev/null and b/Code/Physics/Bullet Source/bullet_logo.png differ
diff --git a/Code/Physics/Bullet Source/config.h.in b/Code/Physics/Bullet Source/config.h.in
new file mode 100644
index 00000000..11b564d0
--- /dev/null
+++ b/Code/Physics/Bullet Source/config.h.in
@@ -0,0 +1,113 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Architecture is PowerPC */
+#undef ARCH_PPC
+
+/* Architecture is x86 */
+#undef ARCH_X86
+
+/* Architecture is x86-64 */
+#undef ARCH_X86_64
+
+/* Use the Apple OpenGL framework. */
+#undef HAVE_APPLE_OPENGL_FRAMEWORK
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_GL_GLEXT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_GL_GLUT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_GL_GLU_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_GL_GL_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Platform is Apple */
+#undef PLATFORM_APPLE
+
+/* Platform is Linux */
+#undef PLATFORM_LINUX
+
+/* Platform is Win32 */
+#undef PLATFORM_WIN32
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
diff --git a/Code/Physics/Bullet Source/configure.ac b/Code/Physics/Bullet Source/configure.ac
new file mode 100644
index 00000000..3e9780b8
--- /dev/null
+++ b/Code/Physics/Bullet Source/configure.ac
@@ -0,0 +1,172 @@
+#----------------------------------------------------------------------------
+# Autoconf input script. Invoke the ./autogen.sh script to generate a
+# configure script from this file.
+#----------------------------------------------------------------------------
+AC_PREREQ([2.54])
+
+#----------------------------------------------------------------------------
+# Initialize Autoconf.
+#----------------------------------------------------------------------------
+AC_INIT(
+ [bullet],
+ [2.82],
+ [erwin.coumans@gmail.com])
+AC_CANONICAL_HOST
+AC_CONFIG_SRCDIR([configure.ac])
+AM_INIT_AUTOMAKE
+AM_PROG_CC_C_O
+AC_PROG_CXX
+AC_PROG_LIBTOOL
+
+case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+ AC_DEFINE(PLATFORM_WIN32, 1, [Platform is Win32])
+ opengl_LIBS="-lunsupported_platform"
+ PLATFORM_STRING="Win32"
+ ;;
+ *-*-linux*)
+ AC_DEFINE(PLATFORM_LINUX, 1, [Platform is Linux])
+ opengl_LIBS="-lGL -lGLU -lglut"
+ PLATFORM_STRING="Linux"
+ ;;
+ *-*-darwin*)
+ AC_MSG_WARN([Hello])
+ AC_DEFINE(PLATFORM_APPLE, 1, [Platform is Apple])
+ opengl_LIBS="-framework AGL -framework OpenGL -framework GLUT"
+ PLATFORM_STRING="Apple"
+ ;;
+ *)
+ AC_MSG_WARN([*** Please add $host to configure.ac checks!])
+ ;;
+esac
+AC_SUBST(opengl_LIBS)
+
+case "$host" in
+ i?86-* | k?-* | athlon-* | pentium*-)
+ AC_DEFINE(ARCH_X86, 1, [Architecture is x86])
+ ARCH_SPECIFIC_CFLAGS=""
+ ARCH_STRING="X86"
+ ;;
+ x86_64-*)
+ AC_DEFINE(ARCH_X86_64, 1, [Architecture is x86-64])
+ ARCH_SPECIFIC_CFLAGS="-DUSE_ADDR64"
+ ARCH_STRING="X86-64"
+ ;;
+ ppc-* | powerpc-*)
+ AC_MSG_WARN([HI THERE!])
+ AC_DEFINE(ARCH_PPC, 1, [Architecture is PowerPC])
+ ARCH_SPECIFIC_CFLAGS=""
+ ARCH_STRING="PowerPC"
+ ;;
+ *)
+ AC_MSG_ERROR([Unknown Architecture])
+ ;;
+esac
+AC_C_BIGENDIAN
+
+
+#----------------------------------------------------------------------------
+# Setup for the configuration header.
+#----------------------------------------------------------------------------
+AC_CONFIG_HEADERS([config.h])
+#----------------------------------------------------------------------------
+# Package configuration switches.
+#----------------------------------------------------------------------------
+AC_ARG_ENABLE([multithreaded],
+ [AC_HELP_STRING([--enable-multithreaded],
+ [build BulletMultiThreaded (default NO)])],
+ [disable_multithreaded=no], [disable_multithreaded=yes])
+AC_MSG_CHECKING([BulletMultiThreaded])
+AS_IF([test "$disable_multithreaded" = yes], [build_multithreaded=no], [build_multithreaded=yes])
+AC_MSG_RESULT([$build_multithreaded])
+AM_CONDITIONAL([CONDITIONAL_BUILD_MULTITHREADED], [test "$build_multithreaded" = yes])
+
+AC_ARG_ENABLE([demos],
+ [AS_HELP_STRING([--disable-demos],
+ [disable Bullet demos])],
+ [],
+ [enable_demos=yes])
+AM_CONDITIONAL([CONDITIONAL_BUILD_DEMOS], [false])
+
+dnl Check for OpenGL and GLUT
+
+
+case "$host" in
+ *-*-darwin*)
+ AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1],
+ [Use the Apple OpenGL framework.])
+ GL_LIBS="-framework GLUT -framework OpenGL -framework Carbon -framework AGL"
+ have_glut=yes
+ have_glu=yes
+ have_gl=yes
+ ;;
+ *)
+ have_gl_headers=yes
+ AC_CHECK_HEADERS(GL/gl.h GL/glu.h GL/glext.h GL/glut.h, ,
+ [have_gl_headers=no],
+ [[#ifdef WIN32
+ #include
+ #endif
+ #if HAVE_GL_GL_H
+ #include
+ #endif
+ #if HAVE_GL_GLU_H
+ #include
+ #endif
+ ]])
+ have_gl=no
+ have_glu=no
+ have_glut=no
+ TEMP_LDFLAGS="$LDFLAGS"
+ AC_CHECK_LIB(GL, main, [GL_LIBS="-lGL"; have_gl=yes])
+ AC_CHECK_LIB(GLU, main, [GL_LIBS="-lGLU $GL_LIBS"; have_glu=yes], , -lGL)
+ AC_CHECK_LIB(GLUT, main, [GL_LIBS="-lGLUT -LGLU $GL_LIBS"; have_glut=yes], ,-lGLUT)
+ AC_CHECK_LIB(opengl32, main, [GL_LIBS="-lopengl32"; have_gl=yes])
+ AC_CHECK_LIB(glu32, main, [GL_LIBS="-lglu32 $GL_LIBS"; have_glu=yes], , -lopengl32)
+ LDFLAGS="$TEMP_LDFLAGS"
+ if test $have_gl = no -o $have_glu = no -o $have_gl_headers = no; then
+ if test x$enable_demos = xyes; then
+ AC_MSG_WARN([Demos and Extras will not be built because OpenGL and GLUT doesn't seem to work. See `config.log' for details.])
+ fi
+ enable_demos=no
+ else
+ AC_MSG_NOTICE([Found OpenGL])
+ fi
+ ;;
+esac
+
+
+
+AC_SUBST(GL_LIBS)
+
+
+if test "x$enable_demos" != xno; then
+ AC_MSG_NOTICE([Building Bullet demos])
+ AM_CONDITIONAL([CONDITIONAL_BUILD_DEMOS],[true])
+fi
+
+
+
+AC_ARG_ENABLE([debug],
+ [AC_HELP_STRING([--enable-debug],
+ [build with debugging information (default NO)])],
+ [], [enable_debug=no])
+
+AC_MSG_CHECKING([build mode])
+AS_IF([test $enable_debug = yes], [build_mode=debug], [build_mode=optimize])
+AC_MSG_RESULT([$build_mode])
+
+
+
+CFLAGS="$ARCH_SPECIFIC_CFLAGS $CFLAGS"
+CXXFLAGS="$ARCH_SPECIFIC_CFLAGS $CXXFLAGS $CFLAGS"
+#----------------------------------------------------------------------------
+# Emit generated files.
+#----------------------------------------------------------------------------
+AC_CONFIG_FILES([bullet.pc Makefile Demos/Makefile Demos/SoftDemo/Makefile Demos/AllBulletDemos/Makefile Demos/MultiThreadedDemo/Makefile Demos/OpenGL/Makefile Demos/ForkLiftDemo/Makefile Demos/FeatherstoneMultiBodyDemo/Makefile Demos/BasicDemo/Makefile Demos/CcdPhysicsDemo/Makefile Demos/VehicleDemo/Makefile Demos/TerrainDemo/Makefile src/Makefile Extras/Makefile])
+AC_OUTPUT
+
+AC_MSG_NOTICE([
+
+Please type 'make' to build Bullet
+])
diff --git a/Code/Physics/Bullet Source/convex0.bin b/Code/Physics/Bullet Source/convex0.bin
new file mode 100644
index 00000000..83493fca
Binary files /dev/null and b/Code/Physics/Bullet Source/convex0.bin differ
diff --git a/Code/Physics/Bullet Source/file.obj b/Code/Physics/Bullet Source/file.obj
new file mode 100644
index 00000000..15047b02
--- /dev/null
+++ b/Code/Physics/Bullet Source/file.obj
@@ -0,0 +1,3578 @@
+v 0.000118 -0.390977 -0.478607
+v 0.017389 -0.390977 -0.478271
+v 0.029547 -0.390983 -0.429828
+v 0.000118 -0.390983 -0.429848
+v 0.017389 -0.390977 -0.478271
+v 0.017389 -0.342855 -0.474044
+v 0.029547 -0.317820 -0.429577
+v 0.029547 -0.390983 -0.429828
+v 0.017389 -0.342855 -0.474044
+v 0.000118 -0.331762 -0.473074
+v 0.000118 -0.306727 -0.429520
+v 0.029547 -0.317820 -0.429577
+v -0.017152 -0.342855 -0.474044
+v -0.029311 -0.317820 -0.429577
+v -0.017152 -0.342855 -0.474044
+v -0.017152 -0.390977 -0.478271
+v -0.029311 -0.390983 -0.429828
+v -0.029311 -0.317820 -0.429577
+v -0.017152 -0.390977 -0.478271
+v -0.029311 -0.390983 -0.429828
+v 0.017389 -0.391071 -0.377731
+v 0.000118 -0.391100 -0.378066
+v 0.017389 -0.336012 -0.378305
+v 0.017389 -0.391071 -0.377731
+v 0.029547 -0.317820 -0.429577
+v 0.000118 -0.306727 -0.429520
+v 0.000118 -0.324876 -0.378305
+v 0.017389 -0.336012 -0.378305
+v 0.000118 -0.306727 -0.429520
+v -0.029311 -0.317820 -0.429577
+v -0.017152 -0.336012 -0.378305
+v 0.000118 -0.324876 -0.378305
+v -0.017152 -0.391071 -0.377731
+v -0.017152 -0.336012 -0.378305
+v -0.017152 -0.391071 -0.377731
+v 0.017389 -0.355018 -0.311310
+v 0.000118 -0.358745 -0.310312
+v 0.017389 -0.313071 -0.327714
+v 0.017389 -0.355018 -0.311310
+v 0.000118 -0.302315 -0.330597
+v 0.017389 -0.313071 -0.327714
+v -0.017152 -0.313071 -0.327714
+v 0.000118 -0.302315 -0.330597
+v -0.017152 -0.355018 -0.311310
+v -0.017152 -0.313071 -0.327714
+v -0.017152 -0.355018 -0.311310
+v 0.027414 -0.282077 -0.242925
+v 0.000118 -0.286749 -0.239005
+v 0.027414 -0.244765 -0.265699
+v 0.027414 -0.282077 -0.242925
+v 0.000118 -0.231283 -0.277012
+v 0.027414 -0.244765 -0.265699
+v -0.027178 -0.244765 -0.265699
+v 0.000118 -0.231283 -0.277012
+v -0.027178 -0.282077 -0.242925
+v -0.027178 -0.244765 -0.265699
+v -0.027178 -0.282077 -0.242925
+v 0.035601 -0.254040 -0.188841
+v 0.000118 -0.261848 -0.187464
+v 0.035601 -0.172486 -0.190596
+v 0.035601 -0.254040 -0.188841
+v 0.000118 -0.149955 -0.194569
+v 0.035601 -0.172486 -0.190596
+v -0.035364 -0.172486 -0.190596
+v 0.000118 -0.149955 -0.194569
+v -0.035364 -0.254040 -0.188841
+v -0.035364 -0.172486 -0.190596
+v -0.035364 -0.254040 -0.188841
+v 0.000118 -0.360973 -0.484897
+v 0.017389 -0.390977 -0.478271
+v 0.000118 -0.390977 -0.478607
+v 0.017389 -0.342855 -0.474044
+v 0.000118 -0.331762 -0.473074
+v -0.017152 -0.342855 -0.474044
+v -0.017152 -0.390977 -0.478271
+v 0.035601 -0.232880 -0.098411
+v 0.000118 -0.240808 -0.098411
+v 0.035601 -0.144967 -0.098411
+v 0.035601 -0.232880 -0.098411
+v 0.000118 -0.122088 -0.098411
+v 0.035601 -0.144967 -0.098411
+v -0.035364 -0.144967 -0.098411
+v 0.000118 -0.122088 -0.098411
+v -0.035364 -0.232880 -0.098411
+v -0.035364 -0.144967 -0.098411
+v -0.035364 -0.232880 -0.098411
+v 0.478607 -0.390977 0.000118
+v 0.478271 -0.390977 0.017389
+v 0.429828 -0.390983 0.029547
+v 0.429848 -0.390983 0.000118
+v 0.478271 -0.390977 0.017389
+v 0.474044 -0.342855 0.017389
+v 0.429577 -0.317820 0.029547
+v 0.429828 -0.390983 0.029547
+v 0.474044 -0.342855 0.017389
+v 0.473074 -0.331762 0.000118
+v 0.429520 -0.306727 0.000118
+v 0.429577 -0.317820 0.029547
+v 0.474044 -0.342855 -0.017152
+v 0.429577 -0.317820 -0.029311
+v 0.474044 -0.342855 -0.017152
+v 0.478271 -0.390977 -0.017152
+v 0.429828 -0.390983 -0.029311
+v 0.429577 -0.317820 -0.029311
+v 0.478271 -0.390977 -0.017152
+v 0.429828 -0.390983 -0.029311
+v 0.377731 -0.391071 0.017389
+v 0.378066 -0.391100 0.000118
+v 0.378305 -0.336012 0.017389
+v 0.377731 -0.391071 0.017389
+v 0.429577 -0.317820 0.029547
+v 0.429520 -0.306727 0.000118
+v 0.378305 -0.324876 0.000118
+v 0.378305 -0.336012 0.017389
+v 0.429520 -0.306727 0.000118
+v 0.429577 -0.317820 -0.029311
+v 0.378305 -0.336012 -0.017152
+v 0.378305 -0.324876 0.000118
+v 0.377731 -0.391071 -0.017152
+v 0.378305 -0.336012 -0.017152
+v 0.377731 -0.391071 -0.017152
+v 0.311310 -0.355018 0.017389
+v 0.310312 -0.358745 0.000118
+v 0.327714 -0.313071 0.017389
+v 0.311310 -0.355018 0.017389
+v 0.330597 -0.302315 0.000118
+v 0.327714 -0.313071 0.017389
+v 0.327714 -0.313071 -0.017152
+v 0.330597 -0.302315 0.000118
+v 0.311310 -0.355018 -0.017152
+v 0.327714 -0.313071 -0.017152
+v 0.311310 -0.355018 -0.017152
+v 0.242925 -0.282077 0.027414
+v 0.239005 -0.286749 0.000118
+v 0.265699 -0.244765 0.027414
+v 0.242925 -0.282077 0.027414
+v 0.277012 -0.231283 0.000118
+v 0.265699 -0.244765 0.027414
+v 0.265699 -0.244765 -0.027178
+v 0.277012 -0.231283 0.000118
+v 0.242925 -0.282077 -0.027178
+v 0.265699 -0.244765 -0.027178
+v 0.242925 -0.282077 -0.027178
+v 0.188841 -0.254040 0.035601
+v 0.187464 -0.261848 0.000118
+v 0.190596 -0.172486 0.035601
+v 0.188841 -0.254040 0.035601
+v 0.194569 -0.149955 0.000118
+v 0.190596 -0.172486 0.035601
+v 0.190596 -0.172486 -0.035364
+v 0.194569 -0.149955 0.000118
+v 0.188841 -0.254040 -0.035364
+v 0.190596 -0.172486 -0.035364
+v 0.188841 -0.254040 -0.035364
+v 0.484897 -0.360973 0.000118
+v 0.478271 -0.390977 0.017389
+v 0.478607 -0.390977 0.000118
+v 0.474044 -0.342855 0.017389
+v 0.473074 -0.331762 0.000118
+v 0.474044 -0.342855 -0.017152
+v 0.478271 -0.390977 -0.017152
+v 0.098411 -0.232880 0.035601
+v 0.098411 -0.240808 0.000118
+v 0.098411 -0.144967 0.035601
+v 0.098411 -0.232880 0.035601
+v 0.098411 -0.122088 0.000118
+v 0.098411 -0.144967 0.035601
+v 0.098411 -0.144967 -0.035364
+v 0.098411 -0.122088 0.000118
+v 0.098411 -0.232880 -0.035364
+v 0.098411 -0.144967 -0.035364
+v 0.098411 -0.232880 -0.035364
+v -0.000118 -0.390977 0.478607
+v -0.017389 -0.390977 0.478271
+v -0.029547 -0.390983 0.429828
+v -0.000118 -0.390983 0.429848
+v -0.017389 -0.390977 0.478271
+v -0.017389 -0.342855 0.474044
+v -0.029547 -0.317820 0.429577
+v -0.029547 -0.390983 0.429828
+v -0.017389 -0.342855 0.474044
+v -0.000118 -0.331762 0.473074
+v -0.000118 -0.306727 0.429520
+v -0.029547 -0.317820 0.429577
+v 0.017152 -0.342855 0.474044
+v 0.029310 -0.317820 0.429577
+v 0.017152 -0.342855 0.474044
+v 0.017152 -0.390977 0.478271
+v 0.029310 -0.390983 0.429828
+v 0.029310 -0.317820 0.429577
+v 0.017152 -0.390977 0.478271
+v 0.029310 -0.390983 0.429828
+v -0.017389 -0.391071 0.377731
+v -0.000118 -0.391100 0.378066
+v -0.017389 -0.336012 0.378305
+v -0.017389 -0.391071 0.377731
+v -0.029547 -0.317820 0.429577
+v -0.000118 -0.306727 0.429520
+v -0.000118 -0.324876 0.378305
+v -0.017389 -0.336012 0.378305
+v -0.000118 -0.306727 0.429520
+v 0.029310 -0.317820 0.429577
+v 0.017152 -0.336012 0.378305
+v -0.000118 -0.324876 0.378305
+v 0.017152 -0.391071 0.377731
+v 0.017152 -0.336012 0.378305
+v 0.017152 -0.391071 0.377731
+v -0.017389 -0.355018 0.311310
+v -0.000118 -0.358745 0.310312
+v -0.017389 -0.313071 0.327714
+v -0.017389 -0.355018 0.311310
+v -0.000118 -0.302315 0.330597
+v -0.017389 -0.313071 0.327714
+v 0.017152 -0.313071 0.327714
+v -0.000118 -0.302315 0.330597
+v 0.017152 -0.355018 0.311310
+v 0.017152 -0.313071 0.327714
+v 0.017152 -0.355018 0.311310
+v -0.027414 -0.282077 0.242925
+v -0.000118 -0.286749 0.239005
+v -0.027414 -0.244765 0.265699
+v -0.027414 -0.282077 0.242925
+v -0.000118 -0.231283 0.277012
+v -0.027414 -0.244765 0.265699
+v 0.027178 -0.244765 0.265699
+v -0.000118 -0.231283 0.277012
+v 0.027178 -0.282077 0.242925
+v 0.027178 -0.244765 0.265699
+v 0.027178 -0.282077 0.242925
+v -0.035601 -0.254040 0.188841
+v -0.000118 -0.261848 0.187464
+v -0.035601 -0.172486 0.190596
+v -0.035601 -0.254040 0.188841
+v -0.000118 -0.149955 0.194569
+v -0.035601 -0.172486 0.190596
+v 0.035364 -0.172486 0.190596
+v -0.000118 -0.149955 0.194569
+v 0.035364 -0.254040 0.188841
+v 0.035364 -0.172486 0.190596
+v 0.035364 -0.254040 0.188841
+v -0.000118 -0.360973 0.484897
+v -0.017389 -0.390977 0.478271
+v -0.000118 -0.390977 0.478607
+v -0.017389 -0.342855 0.474044
+v -0.000118 -0.331762 0.473074
+v 0.017152 -0.342855 0.474044
+v 0.017152 -0.390977 0.478271
+v -0.035601 -0.232880 0.098411
+v -0.000118 -0.240808 0.098411
+v -0.035601 -0.144967 0.098411
+v -0.035601 -0.232880 0.098411
+v -0.000118 -0.122088 0.098411
+v -0.035601 -0.144967 0.098411
+v 0.035364 -0.144967 0.098411
+v -0.000118 -0.122088 0.098411
+v 0.035364 -0.232880 0.098411
+v 0.035364 -0.144967 0.098411
+v 0.035364 -0.232880 0.098411
+v -0.478607 -0.390977 -0.000118
+v -0.478271 -0.390977 -0.017389
+v -0.429828 -0.390983 -0.029547
+v -0.429848 -0.390983 -0.000118
+v -0.478271 -0.390977 -0.017389
+v -0.474044 -0.342855 -0.017389
+v -0.429577 -0.317820 -0.029547
+v -0.429828 -0.390983 -0.029547
+v -0.474044 -0.342855 -0.017389
+v -0.473074 -0.331762 -0.000118
+v -0.429520 -0.306727 -0.000118
+v -0.429577 -0.317820 -0.029547
+v -0.474044 -0.342855 0.017152
+v -0.429577 -0.317820 0.029310
+v -0.474044 -0.342855 0.017152
+v -0.478271 -0.390977 0.017152
+v -0.429828 -0.390983 0.029310
+v -0.429577 -0.317820 0.029310
+v -0.478271 -0.390977 0.017152
+v -0.429828 -0.390983 0.029310
+v -0.377731 -0.391071 -0.017389
+v -0.378066 -0.391100 -0.000118
+v -0.378305 -0.336012 -0.017389
+v -0.377731 -0.391071 -0.017389
+v -0.429577 -0.317820 -0.029547
+v -0.429520 -0.306727 -0.000118
+v -0.378305 -0.324876 -0.000118
+v -0.378305 -0.336012 -0.017389
+v -0.429520 -0.306727 -0.000118
+v -0.429577 -0.317820 0.029310
+v -0.378305 -0.336012 0.017152
+v -0.378305 -0.324876 -0.000118
+v -0.377731 -0.391071 0.017152
+v -0.378305 -0.336012 0.017152
+v -0.377731 -0.391071 0.017152
+v -0.311310 -0.355018 -0.017389
+v -0.310312 -0.358745 -0.000118
+v -0.327714 -0.313071 -0.017389
+v -0.311310 -0.355018 -0.017389
+v -0.330597 -0.302315 -0.000118
+v -0.327714 -0.313071 -0.017389
+v -0.327714 -0.313071 0.017152
+v -0.330597 -0.302315 -0.000118
+v -0.311310 -0.355018 0.017152
+v -0.327714 -0.313071 0.017152
+v -0.311310 -0.355018 0.017152
+v -0.242925 -0.282077 -0.027414
+v -0.239005 -0.286749 -0.000118
+v -0.265699 -0.244765 -0.027414
+v -0.242925 -0.282077 -0.027414
+v -0.277012 -0.231283 -0.000118
+v -0.265699 -0.244765 -0.027414
+v -0.265699 -0.244765 0.027178
+v -0.277012 -0.231283 -0.000118
+v -0.242925 -0.282077 0.027178
+v -0.265699 -0.244765 0.027178
+v -0.242925 -0.282077 0.027178
+v -0.188841 -0.254040 -0.035601
+v -0.187464 -0.261848 -0.000118
+v -0.190596 -0.172486 -0.035601
+v -0.188841 -0.254040 -0.035601
+v -0.194569 -0.149955 -0.000118
+v -0.190596 -0.172486 -0.035601
+v -0.190596 -0.172486 0.035364
+v -0.194569 -0.149955 -0.000118
+v -0.188841 -0.254040 0.035364
+v -0.190596 -0.172486 0.035364
+v -0.188841 -0.254040 0.035364
+v -0.484897 -0.360973 -0.000118
+v -0.478271 -0.390977 -0.017389
+v -0.478607 -0.390977 -0.000118
+v -0.474044 -0.342855 -0.017389
+v -0.473074 -0.331762 -0.000118
+v -0.474044 -0.342855 0.017152
+v -0.478271 -0.390977 0.017152
+v -0.098411 -0.232880 -0.035601
+v -0.098411 -0.240808 -0.000118
+v -0.098411 -0.144967 -0.035601
+v -0.098411 -0.232880 -0.035601
+v -0.098411 -0.122088 -0.000118
+v -0.098411 -0.144967 -0.035601
+v -0.098411 -0.144967 0.035364
+v -0.098411 -0.122088 -0.000118
+v -0.098411 -0.232880 0.035364
+v -0.098411 -0.144967 0.035364
+v -0.098411 -0.232880 0.035364
+v 0.000000 -0.094464 0.000000
+v 0.043796 -0.094464 0.105844
+v 0.105811 -0.094464 0.043875
+v -0.043875 -0.094464 0.105811
+v -0.105844 -0.094464 0.043796
+v -0.105811 -0.094464 -0.043875
+v -0.043796 -0.094464 -0.105844
+v 0.043875 -0.094464 -0.105811
+v 0.105844 -0.094464 -0.043796
+v 0.043796 -0.255563 0.105844
+v 0.105811 -0.255563 0.043875
+v 0.105811 -0.094464 0.043875
+v 0.043796 -0.094464 0.105844
+v -0.043875 -0.255563 0.105811
+v 0.043796 -0.255563 0.105844
+v 0.043796 -0.094464 0.105844
+v -0.043875 -0.094464 0.105811
+v -0.105844 -0.255563 0.043796
+v -0.043875 -0.255563 0.105811
+v -0.043875 -0.094464 0.105811
+v -0.105844 -0.094464 0.043796
+v -0.105811 -0.255563 -0.043875
+v -0.105844 -0.255563 0.043796
+v -0.105844 -0.094464 0.043796
+v -0.105811 -0.094464 -0.043875
+v -0.043796 -0.255563 -0.105844
+v -0.105811 -0.255563 -0.043875
+v -0.105811 -0.094464 -0.043875
+v -0.043796 -0.094464 -0.105844
+v 0.043875 -0.255563 -0.105811
+v -0.043796 -0.255563 -0.105844
+v -0.043796 -0.094464 -0.105844
+v 0.043875 -0.094464 -0.105811
+v 0.105844 -0.255563 -0.043796
+v 0.043875 -0.255563 -0.105811
+v 0.043875 -0.094464 -0.105811
+v 0.105844 -0.094464 -0.043796
+v 0.105811 -0.255563 0.043875
+v 0.105844 -0.255563 -0.043796
+v 0.105844 -0.094464 -0.043796
+v 0.105811 -0.094464 0.043875
+v 0.000000 -0.255563 0.000000
+v 0.105811 -0.255563 0.043875
+v 0.043796 -0.255563 0.105844
+v -0.043875 -0.255563 0.105811
+v -0.105844 -0.255563 0.043796
+v -0.105811 -0.255563 -0.043875
+v -0.043796 -0.255563 -0.105844
+v 0.043875 -0.255563 -0.105811
+v 0.105844 -0.255563 -0.043796
+v -0.275954 0.604340 0.275954
+v -0.275954 0.604340 -0.275954
+v -0.275954 0.612392 -0.275954
+v -0.275954 0.612392 0.275954
+v -0.275954 0.604340 -0.275954
+v 0.275954 0.604340 -0.275954
+v 0.275954 0.612392 -0.275954
+v -0.275954 0.612392 -0.275954
+v 0.275954 0.604340 -0.275954
+v 0.275954 0.604340 0.275954
+v 0.275954 0.612392 0.275954
+v 0.275954 0.612392 -0.275954
+v 0.275954 0.604340 0.275954
+v -0.275954 0.604340 0.275954
+v -0.275954 0.612392 0.275954
+v 0.275954 0.612392 0.275954
+v -0.275954 0.612392 0.275954
+v -0.275954 0.612392 -0.275954
+v -0.284007 0.611587 -0.284007
+v -0.284007 0.611587 0.284007
+v -0.275954 0.612392 -0.275954
+v 0.275954 0.612392 -0.275954
+v 0.284007 0.611587 -0.284007
+v -0.284007 0.611587 -0.284007
+v 0.275954 0.612392 -0.275954
+v 0.275954 0.612392 0.275954
+v 0.284007 0.611587 0.284007
+v 0.284007 0.611587 -0.284007
+v 0.275954 0.612392 0.275954
+v -0.275954 0.612392 0.275954
+v -0.284007 0.611587 0.284007
+v 0.284007 0.611587 0.284007
+v -0.284007 0.611587 0.284007
+v -0.284007 0.611587 -0.284007
+v -0.284007 0.603535 -0.284007
+v -0.284007 0.603535 0.284007
+v -0.284007 0.611587 -0.284007
+v 0.284007 0.611587 -0.284007
+v 0.284007 0.603535 -0.284007
+v -0.284007 0.603535 -0.284007
+v 0.284007 0.611587 -0.284007
+v 0.284007 0.611587 0.284007
+v 0.284007 0.603535 0.284007
+v 0.284007 0.603535 -0.284007
+v 0.284007 0.611587 0.284007
+v -0.284007 0.611587 0.284007
+v -0.284007 0.603535 0.284007
+v 0.284007 0.603535 0.284007
+v -0.507297 0.549194 0.507297
+v 0.507297 0.549194 0.507297
+v 0.507297 0.550000 0.507297
+v -0.507297 0.550000 0.507297
+v 0.507297 0.549194 0.507297
+v 0.507297 0.549194 -0.507297
+v 0.507297 0.550000 -0.507297
+v 0.507297 0.550000 0.507297
+v 0.507297 0.549194 -0.507297
+v -0.507297 0.549194 -0.507297
+v -0.507297 0.550000 -0.507297
+v 0.507297 0.550000 -0.507297
+v -0.507297 0.549194 -0.507297
+v -0.507297 0.549194 0.507297
+v -0.507297 0.550000 0.507297
+v -0.507297 0.550000 -0.507297
+v 0.507297 0.558052 0.507297
+v -0.507297 0.558052 0.507297
+v 0.507297 0.558052 -0.507297
+v 0.507297 0.558052 0.507297
+v -0.507297 0.558052 -0.507297
+v 0.507297 0.558052 -0.507297
+v -0.507297 0.558052 0.507297
+v -0.507297 0.558052 -0.507297
+v 0.499245 0.566104 0.499245
+v -0.499245 0.566104 0.499245
+v 0.499245 0.566104 -0.499245
+v 0.499245 0.566104 0.499245
+v -0.499245 0.566104 -0.499245
+v 0.499245 0.566104 -0.499245
+v -0.499245 0.566104 0.499245
+v -0.499245 0.566104 -0.499245
+v 0.499245 0.574157 0.499245
+v -0.499245 0.574157 0.499245
+v 0.499245 0.574157 -0.499245
+v 0.499245 0.574157 0.499245
+v -0.499245 0.574157 -0.499245
+v 0.499245 0.574157 -0.499245
+v -0.499245 0.574157 0.499245
+v -0.499245 0.574157 -0.499245
+v 0.491193 0.582209 0.491193
+v -0.491193 0.582209 0.491193
+v 0.491193 0.582209 -0.491193
+v 0.491193 0.582209 0.491193
+v -0.491193 0.582209 -0.491193
+v 0.491193 0.582209 -0.491193
+v -0.491193 0.582209 0.491193
+v -0.491193 0.582209 -0.491193
+v -0.491193 0.582209 0.491193
+v 0.491193 0.582209 0.491193
+v 0.483140 0.583014 0.483140
+v -0.483140 0.583014 0.483140
+v 0.491193 0.582209 0.491193
+v 0.491193 0.582209 -0.491193
+v 0.483140 0.583014 -0.483140
+v 0.483140 0.583014 0.483140
+v 0.491193 0.582209 -0.491193
+v -0.491193 0.582209 -0.491193
+v -0.483140 0.583014 -0.483140
+v 0.483140 0.583014 -0.483140
+v -0.491193 0.582209 -0.491193
+v -0.491193 0.582209 0.491193
+v -0.483140 0.583014 0.483140
+v -0.483140 0.583014 -0.483140
+v -0.314041 0.591939 -0.314041
+v -0.314041 0.591939 0.314041
+v 0.314041 0.591939 -0.314041
+v -0.314041 0.591939 -0.314041
+v 0.314041 0.591939 0.314041
+v 0.314041 0.591939 -0.314041
+v -0.314041 0.591939 0.314041
+v 0.314041 0.591939 0.314041
+v -0.322094 0.591134 -0.322094
+v -0.322094 0.591134 0.322094
+v 0.322094 0.591134 -0.322094
+v -0.322094 0.591134 -0.322094
+v 0.322094 0.591134 0.322094
+v 0.322094 0.591134 -0.322094
+v -0.322094 0.591134 0.322094
+v 0.322094 0.591134 0.322094
+v -0.322094 0.583082 -0.322094
+v -0.322094 0.583082 0.322094
+v 0.322094 0.583082 -0.322094
+v -0.322094 0.583082 -0.322094
+v 0.322094 0.583082 0.322094
+v 0.322094 0.583082 -0.322094
+v -0.322094 0.583082 0.322094
+v 0.322094 0.583082 0.322094
+v -0.322094 0.583082 0.322094
+v -0.322094 0.583082 -0.322094
+v -0.483140 0.575029 -0.483140
+v -0.483140 0.575029 0.483140
+v -0.322094 0.583082 -0.322094
+v 0.322094 0.583082 -0.322094
+v 0.483140 0.575029 -0.483140
+v -0.483140 0.575029 -0.483140
+v 0.322094 0.583082 -0.322094
+v 0.322094 0.583082 0.322094
+v 0.483140 0.575029 0.483140
+v 0.483140 0.575029 -0.483140
+v 0.322094 0.583082 0.322094
+v -0.322094 0.583082 0.322094
+v -0.483140 0.575029 0.483140
+v 0.483140 0.575029 0.483140
+v -0.483140 0.575029 0.483140
+v -0.483140 0.575029 -0.483140
+v -0.483140 0.583014 -0.483140
+v -0.483140 0.583014 0.483140
+v -0.483140 0.575029 -0.483140
+v 0.483140 0.575029 -0.483140
+v 0.483140 0.583014 -0.483140
+v -0.483140 0.583014 -0.483140
+v 0.483140 0.575029 -0.483140
+v 0.483140 0.575029 0.483140
+v 0.483140 0.583014 0.483140
+v 0.483140 0.583014 -0.483140
+v 0.483140 0.575029 0.483140
+v -0.483140 0.575029 0.483140
+v -0.483140 0.583014 0.483140
+v 0.483140 0.583014 0.483140
+v 0.275954 0.604340 -0.275954
+v -0.275954 0.604340 -0.275954
+v -0.275954 0.604340 0.275954
+v 0.275954 0.604340 0.275954
+v 0.507297 0.549194 -0.507297
+v 0.507297 0.549194 0.507297
+v -0.507297 0.549194 0.507297
+v -0.507297 0.549194 -0.507297
+v 0.061122 0.493612 0.044408
+v 0.075551 0.493612 0.000000
+v 0.153763 0.549783 0.000000
+v 0.124397 0.549782 0.090379
+v 0.023346 0.493612 0.071853
+v 0.047515 0.549782 0.146237
+v -0.023346 0.493612 0.071853
+v -0.047515 0.549782 0.146237
+v -0.061122 0.493612 0.044408
+v -0.124396 0.549782 0.090380
+v -0.075551 0.493612 0.000000
+v -0.153763 0.549783 0.000000
+v -0.061122 0.493612 -0.044407
+v -0.124397 0.549783 -0.090379
+v -0.023346 0.493612 -0.071853
+v -0.047515 0.549783 -0.146237
+v 0.023346 0.493612 -0.071853
+v 0.047515 0.549783 -0.146237
+v 0.061122 0.493612 -0.044407
+v 0.124396 0.549783 -0.090379
+v 0.039643 0.457110 0.028802
+v 0.049002 0.457110 0.000000
+v 0.015142 0.457110 0.046603
+v -0.015142 0.457110 0.046603
+v -0.039643 0.457110 0.028802
+v -0.049002 0.457110 0.000000
+v -0.039643 0.457110 -0.028802
+v -0.015142 0.457110 -0.046603
+v 0.015142 0.457110 -0.046603
+v 0.039643 0.457110 -0.028802
+v 0.065534 -0.100432 0.047613
+v 0.081005 -0.100432 0.000000
+v 0.081005 -0.082613 0.000000
+v 0.065534 -0.082613 0.047613
+v 0.025032 -0.100432 0.077040
+v 0.065534 -0.100432 0.047613
+v 0.065534 -0.082613 0.047613
+v 0.025032 -0.082613 0.077040
+v -0.025032 -0.100432 0.077040
+v 0.025032 -0.100432 0.077040
+v 0.025032 -0.082613 0.077040
+v -0.025032 -0.082613 0.077040
+v -0.065534 -0.100432 0.047613
+v -0.025032 -0.100432 0.077040
+v -0.025032 -0.082613 0.077040
+v -0.065534 -0.082613 0.047613
+v -0.081005 -0.100432 0.000000
+v -0.065534 -0.100432 0.047613
+v -0.065534 -0.082613 0.047613
+v -0.081005 -0.082613 0.000000
+v -0.065534 -0.100432 -0.047613
+v -0.081005 -0.100432 0.000000
+v -0.081005 -0.082613 0.000000
+v -0.065534 -0.082613 -0.047613
+v -0.025032 -0.100432 -0.077040
+v -0.065534 -0.100432 -0.047613
+v -0.065534 -0.082613 -0.047613
+v -0.025032 -0.082613 -0.077040
+v 0.025032 -0.100432 -0.077040
+v -0.025032 -0.100432 -0.077040
+v -0.025032 -0.082613 -0.077040
+v 0.025032 -0.082613 -0.077040
+v 0.065534 -0.100432 -0.047613
+v 0.025032 -0.100432 -0.077040
+v 0.025032 -0.082613 -0.077040
+v 0.065534 -0.082613 -0.047613
+v 0.081005 -0.100432 0.000000
+v 0.065534 -0.100432 -0.047613
+v 0.065534 -0.082613 -0.047613
+v 0.081005 -0.082613 0.000000
+v 0.065534 -0.082613 0.047613
+v 0.081005 -0.082613 0.000000
+v 0.062269 -0.081722 0.000000
+v 0.050377 -0.081722 0.036601
+v 0.025032 -0.082613 0.077040
+v 0.065534 -0.082613 0.047613
+v 0.050377 -0.081722 0.036601
+v 0.019242 -0.081722 0.059221
+v -0.025032 -0.082613 0.077040
+v 0.025032 -0.082613 0.077040
+v 0.019242 -0.081722 0.059221
+v -0.019242 -0.081722 0.059221
+v -0.065534 -0.082613 0.047613
+v -0.025032 -0.082613 0.077040
+v -0.019242 -0.081722 0.059221
+v -0.050377 -0.081722 0.036601
+v -0.081005 -0.082613 0.000000
+v -0.065534 -0.082613 0.047613
+v -0.050377 -0.081722 0.036601
+v -0.062269 -0.081722 0.000000
+v -0.065534 -0.082613 -0.047613
+v -0.081005 -0.082613 0.000000
+v -0.062269 -0.081722 0.000000
+v -0.050377 -0.081722 -0.036601
+v -0.025032 -0.082613 -0.077040
+v -0.065534 -0.082613 -0.047613
+v -0.050377 -0.081722 -0.036601
+v -0.019242 -0.081722 -0.059221
+v 0.025032 -0.082613 -0.077040
+v -0.025032 -0.082613 -0.077040
+v -0.019242 -0.081722 -0.059221
+v 0.019242 -0.081722 -0.059221
+v 0.065534 -0.082613 -0.047613
+v 0.025032 -0.082613 -0.077040
+v 0.019242 -0.081722 -0.059221
+v 0.050377 -0.081722 -0.036601
+v 0.081005 -0.082613 0.000000
+v 0.065534 -0.082613 -0.047613
+v 0.050377 -0.081722 -0.036601
+v 0.062269 -0.081722 0.000000
+v 0.050377 -0.081722 0.036601
+v 0.062269 -0.081722 0.000000
+v 0.062269 -0.063904 0.000000
+v 0.050377 -0.063904 0.036601
+v 0.019242 -0.081722 0.059221
+v 0.050377 -0.081722 0.036601
+v 0.050377 -0.063904 0.036601
+v 0.019242 -0.063904 0.059221
+v -0.019242 -0.081722 0.059221
+v 0.019242 -0.081722 0.059221
+v 0.019242 -0.063904 0.059221
+v -0.019242 -0.063904 0.059221
+v -0.050377 -0.081722 0.036601
+v -0.019242 -0.081722 0.059221
+v -0.019242 -0.063904 0.059221
+v -0.050377 -0.063904 0.036601
+v -0.062269 -0.081722 0.000000
+v -0.050377 -0.081722 0.036601
+v -0.050377 -0.063904 0.036601
+v -0.062269 -0.063904 0.000000
+v -0.050377 -0.081722 -0.036601
+v -0.062269 -0.081722 0.000000
+v -0.062269 -0.063904 0.000000
+v -0.050377 -0.063904 -0.036601
+v -0.019242 -0.081722 -0.059221
+v -0.050377 -0.081722 -0.036601
+v -0.050377 -0.063904 -0.036601
+v -0.019242 -0.063904 -0.059221
+v 0.019242 -0.081722 -0.059221
+v -0.019242 -0.081722 -0.059221
+v -0.019242 -0.063904 -0.059221
+v 0.019242 -0.063904 -0.059221
+v 0.050377 -0.081722 -0.036601
+v 0.019242 -0.081722 -0.059221
+v 0.019242 -0.063904 -0.059221
+v 0.050377 -0.063904 -0.036601
+v 0.062269 -0.081722 0.000000
+v 0.050377 -0.081722 -0.036601
+v 0.050377 -0.063904 -0.036601
+v 0.062269 -0.063904 0.000000
+v 0.050377 -0.063904 0.036601
+v 0.062269 -0.063904 0.000000
+v 0.071637 -0.059449 0.000000
+v 0.057955 -0.059449 0.042107
+v 0.019242 -0.063904 0.059221
+v 0.050377 -0.063904 0.036601
+v 0.057955 -0.059449 0.042107
+v 0.022137 -0.059449 0.068131
+v -0.019242 -0.063904 0.059221
+v 0.019242 -0.063904 0.059221
+v 0.022137 -0.059449 0.068131
+v -0.022137 -0.059449 0.068131
+v -0.050377 -0.063904 0.036601
+v -0.019242 -0.063904 0.059221
+v -0.022137 -0.059449 0.068131
+v -0.057955 -0.059449 0.042107
+v -0.062269 -0.063904 0.000000
+v -0.050377 -0.063904 0.036601
+v -0.057955 -0.059449 0.042107
+v -0.071637 -0.059449 0.000000
+v -0.050377 -0.063904 -0.036601
+v -0.062269 -0.063904 0.000000
+v -0.071637 -0.059449 0.000000
+v -0.057955 -0.059449 -0.042107
+v -0.019242 -0.063904 -0.059221
+v -0.050377 -0.063904 -0.036601
+v -0.057955 -0.059449 -0.042107
+v -0.022137 -0.059449 -0.068131
+v 0.019242 -0.063904 -0.059221
+v -0.019242 -0.063904 -0.059221
+v -0.022137 -0.059449 -0.068131
+v 0.022137 -0.059449 -0.068131
+v 0.050377 -0.063904 -0.036601
+v 0.019242 -0.063904 -0.059221
+v 0.022137 -0.059449 -0.068131
+v 0.057955 -0.059449 -0.042107
+v 0.062269 -0.063904 0.000000
+v 0.050377 -0.063904 -0.036601
+v 0.057955 -0.059449 -0.042107
+v 0.071637 -0.059449 0.000000
+v 0.057955 -0.059449 0.042107
+v 0.071637 -0.059449 0.000000
+v 0.071637 -0.050540 0.000000
+v 0.057955 -0.050540 0.042107
+v 0.022137 -0.059449 0.068131
+v 0.057955 -0.059449 0.042107
+v 0.057955 -0.050540 0.042107
+v 0.022137 -0.050540 0.068131
+v -0.022137 -0.059449 0.068131
+v 0.022137 -0.059449 0.068131
+v 0.022137 -0.050540 0.068131
+v -0.022137 -0.050540 0.068131
+v -0.057955 -0.059449 0.042107
+v -0.022137 -0.059449 0.068131
+v -0.022137 -0.050540 0.068131
+v -0.057955 -0.050540 0.042107
+v -0.071637 -0.059449 0.000000
+v -0.057955 -0.059449 0.042107
+v -0.057955 -0.050540 0.042107
+v -0.071637 -0.050540 0.000000
+v -0.057955 -0.059449 -0.042107
+v -0.071637 -0.059449 0.000000
+v -0.071637 -0.050540 0.000000
+v -0.057955 -0.050540 -0.042107
+v -0.022137 -0.059449 -0.068131
+v -0.057955 -0.059449 -0.042107
+v -0.057955 -0.050540 -0.042107
+v -0.022137 -0.050540 -0.068131
+v 0.022137 -0.059449 -0.068131
+v -0.022137 -0.059449 -0.068131
+v -0.022137 -0.050540 -0.068131
+v 0.022137 -0.050540 -0.068131
+v 0.057955 -0.059449 -0.042107
+v 0.022137 -0.059449 -0.068131
+v 0.022137 -0.050540 -0.068131
+v 0.057955 -0.050540 -0.042107
+v 0.071637 -0.059449 0.000000
+v 0.057955 -0.059449 -0.042107
+v 0.057955 -0.050540 -0.042107
+v 0.071637 -0.050540 0.000000
+v 0.057955 -0.050540 0.042107
+v 0.071637 -0.050540 0.000000
+v 0.062269 -0.046085 0.000000
+v 0.050377 -0.046085 0.036601
+v 0.022137 -0.050540 0.068131
+v 0.057955 -0.050540 0.042107
+v 0.050377 -0.046085 0.036601
+v 0.019242 -0.046085 0.059221
+v -0.022137 -0.050540 0.068131
+v 0.022137 -0.050540 0.068131
+v 0.019242 -0.046085 0.059221
+v -0.019242 -0.046085 0.059221
+v -0.057955 -0.050540 0.042107
+v -0.022137 -0.050540 0.068131
+v -0.019242 -0.046085 0.059221
+v -0.050377 -0.046085 0.036601
+v -0.071637 -0.050540 0.000000
+v -0.057955 -0.050540 0.042107
+v -0.050377 -0.046085 0.036601
+v -0.062269 -0.046085 0.000000
+v -0.057955 -0.050540 -0.042107
+v -0.071637 -0.050540 0.000000
+v -0.062269 -0.046085 0.000000
+v -0.050377 -0.046085 -0.036601
+v -0.022137 -0.050540 -0.068131
+v -0.057955 -0.050540 -0.042107
+v -0.050377 -0.046085 -0.036601
+v -0.019242 -0.046085 -0.059221
+v 0.022137 -0.050540 -0.068131
+v -0.022137 -0.050540 -0.068131
+v -0.019242 -0.046085 -0.059221
+v 0.019242 -0.046085 -0.059221
+v 0.057955 -0.050540 -0.042107
+v 0.022137 -0.050540 -0.068131
+v 0.019242 -0.046085 -0.059221
+v 0.050377 -0.046085 -0.036601
+v 0.071637 -0.050540 0.000000
+v 0.057955 -0.050540 -0.042107
+v 0.050377 -0.046085 -0.036601
+v 0.062269 -0.046085 0.000000
+v 0.050377 -0.046085 0.036601
+v 0.062269 -0.046085 0.000000
+v 0.062269 -0.037015 0.000000
+v 0.050377 -0.037015 0.036601
+v 0.019242 -0.046085 0.059221
+v 0.050377 -0.046085 0.036601
+v 0.050377 -0.037015 0.036601
+v 0.019242 -0.037015 0.059221
+v -0.019242 -0.046085 0.059221
+v 0.019242 -0.046085 0.059221
+v 0.019242 -0.037015 0.059221
+v -0.019242 -0.037015 0.059221
+v -0.050377 -0.046085 0.036601
+v -0.019242 -0.046085 0.059221
+v -0.019242 -0.037015 0.059221
+v -0.050377 -0.037015 0.036601
+v -0.062269 -0.046085 0.000000
+v -0.050377 -0.046085 0.036601
+v -0.050377 -0.037015 0.036601
+v -0.062269 -0.037015 0.000000
+v -0.050377 -0.046085 -0.036601
+v -0.062269 -0.046085 0.000000
+v -0.062269 -0.037015 0.000000
+v -0.050377 -0.037015 -0.036601
+v -0.019242 -0.046085 -0.059221
+v -0.050377 -0.046085 -0.036601
+v -0.050377 -0.037015 -0.036601
+v -0.019242 -0.037015 -0.059221
+v 0.019242 -0.046085 -0.059221
+v -0.019242 -0.046085 -0.059221
+v -0.019242 -0.037015 -0.059221
+v 0.019242 -0.037015 -0.059221
+v 0.050377 -0.046085 -0.036601
+v 0.019242 -0.046085 -0.059221
+v 0.019242 -0.037015 -0.059221
+v 0.050377 -0.037015 -0.036601
+v 0.062269 -0.046085 0.000000
+v 0.050377 -0.046085 -0.036601
+v 0.050377 -0.037015 -0.036601
+v 0.062269 -0.037015 0.000000
+v 0.035221 0.414309 0.025590
+v 0.043536 0.414309 0.000000
+v 0.049002 0.457110 0.000000
+v 0.039643 0.457110 0.028802
+v 0.013453 0.414309 0.041405
+v 0.015142 0.457110 0.046603
+v -0.013453 0.414309 0.041405
+v -0.015142 0.457110 0.046603
+v -0.035221 0.414309 0.025590
+v -0.039643 0.457110 0.028802
+v -0.043536 0.414309 0.000000
+v -0.049002 0.457110 0.000000
+v -0.035221 0.414309 -0.025590
+v -0.039643 0.457110 -0.028802
+v -0.013453 0.414309 -0.041405
+v -0.015142 0.457110 -0.046603
+v 0.013453 0.414309 -0.041405
+v 0.015142 0.457110 -0.046603
+v 0.035221 0.414309 -0.025590
+v 0.013453 0.414309 -0.041405
+v 0.015142 0.457110 -0.046603
+v 0.039643 0.457110 -0.028802
+v 0.051175 0.223460 0.037181
+v 0.063256 0.223460 0.000000
+v 0.019547 0.223460 0.060160
+v -0.019547 0.223460 0.060160
+v -0.051175 0.223460 0.037181
+v -0.063256 0.223460 0.000000
+v -0.051175 0.223460 -0.037181
+v -0.019547 0.223460 -0.060160
+v 0.019547 0.223460 -0.060160
+v 0.051176 0.223460 -0.037181
+v 0.019547 0.223460 -0.060160
+v 0.076220 0.102045 0.055377
+v 0.094213 0.102045 0.000000
+v 0.029113 0.102045 0.089602
+v -0.029113 0.102045 0.089602
+v -0.076220 0.102045 0.055377
+v -0.094213 0.102045 0.000000
+v -0.076220 0.102045 -0.055377
+v -0.029113 0.102045 -0.089602
+v 0.029113 0.102045 -0.089602
+v 0.076220 0.102045 -0.055377
+v 0.029113 0.102045 -0.089602
+v 0.068919 -0.002139 0.050073
+v 0.085189 -0.002139 0.000000
+v 0.026325 -0.002139 0.081019
+v -0.026325 -0.002139 0.081019
+v -0.068919 -0.002139 0.050073
+v -0.085189 -0.002139 0.000000
+v -0.068919 -0.002139 -0.050073
+v -0.026325 -0.002139 -0.081019
+v 0.026325 -0.002139 -0.081019
+v 0.068919 -0.002139 -0.050073
+v 0.026325 -0.002139 -0.081019
+v 0.050377 -0.037015 0.036601
+v 0.062269 -0.037015 0.000000
+v 0.019242 -0.037015 0.059221
+v -0.019242 -0.037015 0.059221
+v -0.050377 -0.037015 0.036601
+v -0.062269 -0.037015 0.000000
+v -0.050377 -0.037015 -0.036601
+v -0.019242 -0.037015 -0.059221
+v 0.019242 -0.037015 -0.059221
+v 0.050377 -0.037015 -0.036601
+v 0.019242 -0.037015 -0.059221
+vt 0.017083 0.467481
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077277 0.475172
+vt 0.017498 0.425773
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.077301 0.425780
+vt 0.022716 0.366365
+vt 0.023914 0.320840
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077611 0.335458
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.141617 0.425888
+vt 0.141203 0.458853
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.077611 0.335458
+vt 0.077682 0.295421
+vt 0.140908 0.303558
+vt 0.140908 0.357917
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.140908 0.357917
+vt 0.140908 0.303558
+vt 0.141617 0.425888
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.223614 0.381380
+vt 0.233628 0.407934
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.187732 0.293268
+vt 0.203363 0.329596
+vt 0.203363 0.329596
+vt 0.187732 0.293268
+vt 0.223614 0.381380
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.308037 0.291333
+vt 0.324950 0.321248
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.264859 0.213261
+vt 0.279922 0.245271
+vt 0.279922 0.245271
+vt 0.264859 0.213261
+vt 0.308037 0.291333
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.377000 0.255623
+vt 0.378700 0.295995
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.367735 0.111762
+vt 0.372639 0.156040
+vt 0.372639 0.156040
+vt 0.367735 0.111762
+vt 0.377000 0.255623
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.393655 0.410963
+vt 0.467714 0.453591
+vt 0.467714 0.410963
+vt 0.348935 0.453591
+vt 0.321554 0.410963
+vt 0.348935 0.368334
+vt 0.467714 0.368334
+vt 0.486443 0.230599
+vt 0.486443 0.273314
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.486443 0.071872
+vt 0.486443 0.122067
+vt 0.486443 0.122067
+vt 0.486443 0.071872
+vt 0.486443 0.230599
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.017083 0.467481
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077277 0.475172
+vt 0.017498 0.425773
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.077301 0.425780
+vt 0.022716 0.366365
+vt 0.023914 0.320840
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077611 0.335458
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.141617 0.425888
+vt 0.141203 0.458853
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.077611 0.335458
+vt 0.077682 0.295421
+vt 0.140908 0.303558
+vt 0.140908 0.357917
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.140908 0.357917
+vt 0.140908 0.303558
+vt 0.141617 0.425888
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.223614 0.381380
+vt 0.233628 0.407934
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.187732 0.293268
+vt 0.203363 0.329596
+vt 0.203363 0.329596
+vt 0.187732 0.293268
+vt 0.223614 0.381380
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.308037 0.291333
+vt 0.324950 0.321248
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.264859 0.213261
+vt 0.279922 0.245271
+vt 0.279922 0.245271
+vt 0.264859 0.213261
+vt 0.308037 0.291333
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.377000 0.255623
+vt 0.378700 0.295995
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.367735 0.111762
+vt 0.372639 0.156040
+vt 0.372639 0.156040
+vt 0.367735 0.111762
+vt 0.377000 0.255623
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.393655 0.410963
+vt 0.467714 0.453591
+vt 0.467714 0.410963
+vt 0.348935 0.453591
+vt 0.321554 0.410963
+vt 0.348935 0.368334
+vt 0.467714 0.368334
+vt 0.486443 0.230599
+vt 0.486443 0.273314
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.486443 0.071872
+vt 0.486443 0.122067
+vt 0.486443 0.122067
+vt 0.486443 0.071872
+vt 0.486443 0.230599
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.017083 0.467481
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077277 0.475172
+vt 0.017498 0.425773
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.077301 0.425780
+vt 0.022716 0.366365
+vt 0.023914 0.320840
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077611 0.335458
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.141617 0.425888
+vt 0.141203 0.458853
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.077611 0.335458
+vt 0.077682 0.295421
+vt 0.140908 0.303558
+vt 0.140908 0.357917
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.140908 0.357917
+vt 0.140908 0.303558
+vt 0.141617 0.425888
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.223614 0.381380
+vt 0.233628 0.407934
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.187732 0.293268
+vt 0.203363 0.329596
+vt 0.203363 0.329596
+vt 0.187732 0.293268
+vt 0.223614 0.381380
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.308037 0.291333
+vt 0.324950 0.321248
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.264859 0.213261
+vt 0.279922 0.245271
+vt 0.279922 0.245271
+vt 0.264859 0.213261
+vt 0.308037 0.291333
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.377000 0.255623
+vt 0.378700 0.295995
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.367735 0.111762
+vt 0.372639 0.156040
+vt 0.372639 0.156040
+vt 0.367735 0.111762
+vt 0.377000 0.255623
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.393655 0.410963
+vt 0.467714 0.453591
+vt 0.467714 0.410963
+vt 0.348935 0.453591
+vt 0.321554 0.410963
+vt 0.348935 0.368334
+vt 0.467714 0.368334
+vt 0.486443 0.230599
+vt 0.486443 0.273314
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.486443 0.071872
+vt 0.486443 0.122067
+vt 0.486443 0.122067
+vt 0.486443 0.071872
+vt 0.486443 0.230599
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.017083 0.467481
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077277 0.475172
+vt 0.017498 0.425773
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.077301 0.425780
+vt 0.022716 0.366365
+vt 0.023914 0.320840
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.077611 0.335458
+vt 0.022716 0.366365
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.077611 0.335458
+vt 0.017498 0.425773
+vt 0.077301 0.425780
+vt 0.141617 0.425888
+vt 0.141203 0.458853
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.077611 0.335458
+vt 0.077682 0.295421
+vt 0.140908 0.303558
+vt 0.140908 0.357917
+vt 0.077682 0.295421
+vt 0.077611 0.335458
+vt 0.140908 0.357917
+vt 0.140908 0.303558
+vt 0.141617 0.425888
+vt 0.140908 0.357917
+vt 0.141617 0.425888
+vt 0.223614 0.381380
+vt 0.233628 0.407934
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.187732 0.293268
+vt 0.203363 0.329596
+vt 0.203363 0.329596
+vt 0.187732 0.293268
+vt 0.223614 0.381380
+vt 0.203363 0.329596
+vt 0.223614 0.381380
+vt 0.308037 0.291333
+vt 0.324950 0.321248
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.264859 0.213261
+vt 0.279922 0.245271
+vt 0.279922 0.245271
+vt 0.264859 0.213261
+vt 0.308037 0.291333
+vt 0.279922 0.245271
+vt 0.308037 0.291333
+vt 0.377000 0.255623
+vt 0.378700 0.295995
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.367735 0.111762
+vt 0.372639 0.156040
+vt 0.372639 0.156040
+vt 0.367735 0.111762
+vt 0.377000 0.255623
+vt 0.372639 0.156040
+vt 0.377000 0.255623
+vt 0.393655 0.410963
+vt 0.467714 0.453591
+vt 0.467714 0.410963
+vt 0.348935 0.453591
+vt 0.321554 0.410963
+vt 0.348935 0.368334
+vt 0.467714 0.368334
+vt 0.486443 0.230599
+vt 0.486443 0.273314
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.486443 0.071872
+vt 0.486443 0.122067
+vt 0.486443 0.122067
+vt 0.486443 0.071872
+vt 0.486443 0.230599
+vt 0.486443 0.122067
+vt 0.486443 0.230599
+vt 0.000000 1.000000
+vt 0.312949 0.385343
+vt 0.374010 0.385343
+vt 0.251887 0.385343
+vt 0.190825 0.385343
+vt 0.129763 0.385343
+vt 0.068702 0.385343
+vt 0.496134 0.385343
+vt 0.435072 0.385343
+vt 0.312949 0.498276
+vt 0.374010 0.498276
+vt 0.374010 0.385343
+vt 0.312949 0.385343
+vt 0.251887 0.498276
+vt 0.312949 0.498276
+vt 0.312949 0.385343
+vt 0.251887 0.385343
+vt 0.190825 0.498276
+vt 0.251887 0.498276
+vt 0.251887 0.385343
+vt 0.190825 0.385343
+vt 0.129763 0.498276
+vt 0.190825 0.498276
+vt 0.190825 0.385343
+vt 0.129763 0.385343
+vt 0.068702 0.498276
+vt 0.129763 0.498276
+vt 0.129763 0.385343
+vt 0.068702 0.385343
+vt 0.007640 0.498276
+vt 0.068702 0.498276
+vt 0.068702 0.385343
+vt 0.007640 0.385343
+vt 0.435072 0.498276
+vt 0.496134 0.498276
+vt 0.496134 0.385343
+vt 0.435072 0.385343
+vt 0.321935 0.273341
+vt 0.321962 0.201250
+vt 0.321962 0.201250
+vt 0.321935 0.273341
+vt 0.234927 0.237263
+vt 0.321935 0.273341
+vt 0.270940 0.324298
+vt 0.198849 0.324271
+vt 0.147891 0.273276
+vt 0.147918 0.201184
+vt 0.198914 0.150227
+vt 0.271005 0.150254
+vt 0.321962 0.201250
+vt 0.143227 0.361033
+vt 0.143227 0.144695
+vt 0.135916 0.138034
+vt 0.135916 0.368993
+vt 0.143227 0.144695
+vt 0.359565 0.144695
+vt 0.366875 0.138034
+vt 0.135916 0.138034
+vt 0.359565 0.144695
+vt 0.359565 0.361033
+vt 0.366875 0.368993
+vt 0.366875 0.138034
+vt 0.359565 0.361033
+vt 0.143227 0.361033
+vt 0.135916 0.368993
+vt 0.366875 0.368993
+vt 0.135916 0.368993
+vt 0.135916 0.138034
+vt 0.113352 0.114821
+vt 0.113352 0.390908
+vt 0.135916 0.138034
+vt 0.366875 0.138034
+vt 0.389439 0.114821
+vt 0.113352 0.114821
+vt 0.366875 0.138034
+vt 0.366875 0.368993
+vt 0.389439 0.390908
+vt 0.389439 0.114821
+vt 0.366875 0.368993
+vt 0.135916 0.368993
+vt 0.113352 0.390908
+vt 0.389439 0.390908
+vt 0.113352 0.390908
+vt 0.113352 0.114821
+vt 0.121903 0.123372
+vt 0.121903 0.382356
+vt 0.113352 0.114821
+vt 0.389439 0.114821
+vt 0.380888 0.123372
+vt 0.121903 0.123372
+vt 0.389439 0.114821
+vt 0.389439 0.390908
+vt 0.380888 0.382356
+vt 0.380888 0.123372
+vt 0.389439 0.390908
+vt 0.113352 0.390908
+vt 0.121903 0.382356
+vt 0.380888 0.382356
+vt 0.004820 0.499440
+vt 0.497971 0.499440
+vt 0.497971 0.499440
+vt 0.004820 0.499440
+vt 0.497971 0.499440
+vt 0.497971 0.006289
+vt 0.497971 0.006289
+vt 0.497971 0.499440
+vt 0.497971 0.006289
+vt 0.004820 0.006289
+vt 0.004820 0.006289
+vt 0.497971 0.006289
+vt 0.004820 0.006289
+vt 0.004820 0.499440
+vt 0.004820 0.499440
+vt 0.004820 0.006289
+vt 0.497971 0.499440
+vt 0.004820 0.499440
+vt 0.497971 0.006289
+vt 0.497971 0.499440
+vt 0.004820 0.006289
+vt 0.497971 0.006289
+vt 0.004820 0.499440
+vt 0.004820 0.006289
+vt 0.491654 0.493123
+vt 0.011137 0.493123
+vt 0.491654 0.012605
+vt 0.491654 0.493123
+vt 0.011137 0.012605
+vt 0.491654 0.012605
+vt 0.011137 0.493123
+vt 0.011137 0.012605
+vt 0.482370 0.483838
+vt 0.020421 0.483838
+vt 0.482370 0.021890
+vt 0.482370 0.483838
+vt 0.020421 0.021890
+vt 0.482370 0.021890
+vt 0.020421 0.483838
+vt 0.020421 0.021890
+vt 0.470567 0.472035
+vt 0.032224 0.472035
+vt 0.470567 0.033693
+vt 0.470567 0.472035
+vt 0.032224 0.033693
+vt 0.470567 0.033693
+vt 0.032224 0.472035
+vt 0.032224 0.033693
+vt 0.032224 0.472035
+vt 0.470567 0.472035
+vt 0.459013 0.460481
+vt 0.043778 0.460481
+vt 0.470567 0.472035
+vt 0.470567 0.033693
+vt 0.459013 0.045247
+vt 0.459013 0.460481
+vt 0.470567 0.033693
+vt 0.032224 0.033693
+vt 0.043778 0.045247
+vt 0.459013 0.045247
+vt 0.032224 0.033693
+vt 0.032224 0.472035
+vt 0.043778 0.460481
+vt 0.043778 0.045247
+vt 0.098754 0.100222
+vt 0.098754 0.405506
+vt 0.404037 0.100222
+vt 0.098754 0.100222
+vt 0.404037 0.405506
+vt 0.404037 0.100222
+vt 0.098754 0.405506
+vt 0.404037 0.405506
+vt 0.094840 0.096308
+vt 0.094840 0.409420
+vt 0.407951 0.096308
+vt 0.094840 0.096308
+vt 0.407951 0.409420
+vt 0.407951 0.096308
+vt 0.094840 0.409420
+vt 0.407951 0.409420
+vt 0.087012 0.088481
+vt 0.087012 0.417248
+vt 0.415779 0.088481
+vt 0.087012 0.088481
+vt 0.415779 0.417248
+vt 0.415779 0.088481
+vt 0.087012 0.417248
+vt 0.415779 0.417248
+vt 0.586243 0.413570
+vt 0.586243 0.086583
+vt 0.504496 0.004836
+vt 0.504496 0.495317
+vt 0.586243 0.086583
+vt 0.913231 0.086583
+vt 0.994978 0.004836
+vt 0.504496 0.004836
+vt 0.913231 0.086583
+vt 0.913231 0.413570
+vt 0.994978 0.495317
+vt 0.994978 0.004836
+vt 0.913231 0.413570
+vt 0.586243 0.413570
+vt 0.504496 0.495317
+vt 0.994978 0.495317
+vt 0.052083 0.452177
+vt 0.052083 0.053552
+vt 0.043778 0.045247
+vt 0.043778 0.460481
+vt 0.052083 0.053552
+vt 0.450708 0.053552
+vt 0.459013 0.045247
+vt 0.043778 0.045247
+vt 0.450708 0.053552
+vt 0.450708 0.452177
+vt 0.459013 0.460481
+vt 0.459013 0.045247
+vt 0.450708 0.452177
+vt 0.052083 0.452177
+vt 0.043778 0.460481
+vt 0.459013 0.460481
+vt 0.997798 0.502710
+vt 0.503545 0.502710
+vt 0.503545 0.996963
+vt 0.997798 0.996963
+vt 0.497971 0.006289
+vt 0.497971 0.499440
+vt 0.004820 0.499440
+vt 0.004820 0.006289
+vt 0.366183 0.254192
+vt 0.376207 0.221754
+vt 0.430543 0.221754
+vt 0.410142 0.287774
+vt 0.339940 0.274240
+vt 0.356731 0.328576
+vt 0.307501 0.274241
+vt 0.290711 0.328576
+vt 0.281258 0.254192
+vt 0.237300 0.287774
+vt 0.271234 0.221754
+vt 0.216899 0.221754
+vt 0.281258 0.189315
+vt 0.237300 0.155734
+vt 0.307501 0.169267
+vt 0.290711 0.114932
+vt 0.339940 0.169267
+vt 0.356731 0.114932
+vt 0.366183 0.189315
+vt 0.410142 0.155734
+vt 0.351262 0.242793
+vt 0.357763 0.221754
+vt 0.334240 0.255796
+vt 0.313201 0.255796
+vt 0.296180 0.242793
+vt 0.289678 0.221754
+vt 0.296180 0.200714
+vt 0.313201 0.187711
+vt 0.334240 0.187711
+vt 0.351262 0.200714
+vt 0.350121 0.494170
+vt 0.396949 0.494170
+vt 0.396949 0.469050
+vt 0.350121 0.469050
+vt 0.300793 0.494170
+vt 0.350121 0.494170
+vt 0.350121 0.469050
+vt 0.300793 0.469050
+vt 0.249801 0.494170
+vt 0.300793 0.494170
+vt 0.300793 0.469050
+vt 0.249801 0.469050
+vt 0.200473 0.494170
+vt 0.249801 0.494170
+vt 0.249801 0.469050
+vt 0.200473 0.469050
+vt 0.153645 0.494170
+vt 0.200473 0.494170
+vt 0.200473 0.469050
+vt 0.153645 0.469050
+vt 0.106818 0.494170
+vt 0.153645 0.494170
+vt 0.153645 0.469050
+vt 0.106818 0.469050
+vt 0.057489 0.494170
+vt 0.106818 0.494170
+vt 0.106818 0.469050
+vt 0.057489 0.469050
+vt 0.006498 0.494170
+vt 0.057489 0.494170
+vt 0.057489 0.469050
+vt 0.006498 0.469050
+vt 0.443776 0.494170
+vt 0.493105 0.494170
+vt 0.493105 0.469050
+vt 0.443776 0.469050
+vt 0.396949 0.494170
+vt 0.443776 0.494170
+vt 0.443776 0.469050
+vt 0.396949 0.469050
+vt 0.350121 0.469050
+vt 0.396949 0.469050
+vt 0.396949 0.467794
+vt 0.350121 0.467794
+vt 0.300793 0.469050
+vt 0.350121 0.469050
+vt 0.350121 0.467794
+vt 0.300793 0.467794
+vt 0.249801 0.469050
+vt 0.300793 0.469050
+vt 0.300793 0.467794
+vt 0.249801 0.467794
+vt 0.200473 0.469050
+vt 0.249801 0.469050
+vt 0.249801 0.467794
+vt 0.200473 0.467794
+vt 0.153645 0.469050
+vt 0.200473 0.469050
+vt 0.200473 0.467794
+vt 0.153645 0.467794
+vt 0.106818 0.469050
+vt 0.153645 0.469050
+vt 0.153645 0.467794
+vt 0.106818 0.467794
+vt 0.057489 0.469050
+vt 0.106818 0.469050
+vt 0.106818 0.467794
+vt 0.057489 0.467794
+vt 0.006498 0.469050
+vt 0.057489 0.469050
+vt 0.057489 0.467794
+vt 0.006498 0.467794
+vt 0.443776 0.469050
+vt 0.493105 0.469050
+vt 0.493105 0.467794
+vt 0.443776 0.467794
+vt 0.396949 0.469050
+vt 0.443776 0.469050
+vt 0.443776 0.467794
+vt 0.396949 0.467794
+vt 0.350121 0.467794
+vt 0.396949 0.467794
+vt 0.396949 0.442675
+vt 0.350121 0.442675
+vt 0.300793 0.467794
+vt 0.350121 0.467794
+vt 0.350121 0.442675
+vt 0.300793 0.442675
+vt 0.249801 0.467794
+vt 0.300793 0.467794
+vt 0.300793 0.442675
+vt 0.249801 0.442675
+vt 0.200473 0.467794
+vt 0.249801 0.467794
+vt 0.249801 0.442675
+vt 0.200473 0.442675
+vt 0.153645 0.467794
+vt 0.200473 0.467794
+vt 0.200473 0.442675
+vt 0.153645 0.442675
+vt 0.106818 0.467794
+vt 0.153645 0.467794
+vt 0.153645 0.442675
+vt 0.106818 0.442675
+vt 0.057489 0.467794
+vt 0.106818 0.467794
+vt 0.106818 0.442675
+vt 0.057489 0.442675
+vt 0.006498 0.467794
+vt 0.057489 0.467794
+vt 0.057489 0.442675
+vt 0.006498 0.442675
+vt 0.443776 0.467794
+vt 0.493105 0.467794
+vt 0.493105 0.442675
+vt 0.443776 0.442675
+vt 0.396949 0.467794
+vt 0.443776 0.467794
+vt 0.443776 0.442675
+vt 0.396949 0.442675
+vt 0.350121 0.442675
+vt 0.396949 0.442675
+vt 0.396949 0.436395
+vt 0.350121 0.436395
+vt 0.300793 0.442675
+vt 0.350121 0.442675
+vt 0.350121 0.436395
+vt 0.300793 0.436395
+vt 0.249801 0.442675
+vt 0.300793 0.442675
+vt 0.300793 0.436395
+vt 0.249801 0.436395
+vt 0.200473 0.442675
+vt 0.249801 0.442675
+vt 0.249801 0.436395
+vt 0.200473 0.436395
+vt 0.153645 0.442675
+vt 0.200473 0.442675
+vt 0.200473 0.436395
+vt 0.153645 0.436395
+vt 0.106818 0.442675
+vt 0.153645 0.442675
+vt 0.153645 0.436395
+vt 0.106818 0.436395
+vt 0.057489 0.442675
+vt 0.106818 0.442675
+vt 0.106818 0.436395
+vt 0.057489 0.436395
+vt 0.006498 0.442675
+vt 0.057489 0.442675
+vt 0.057489 0.436395
+vt 0.006498 0.436395
+vt 0.443776 0.442675
+vt 0.493105 0.442675
+vt 0.493105 0.436395
+vt 0.443776 0.436395
+vt 0.396949 0.442675
+vt 0.443776 0.442675
+vt 0.443776 0.436395
+vt 0.396949 0.436395
+vt 0.350121 0.436395
+vt 0.396949 0.436395
+vt 0.396949 0.423835
+vt 0.350121 0.423835
+vt 0.300793 0.436395
+vt 0.350121 0.436395
+vt 0.350121 0.423835
+vt 0.300793 0.423835
+vt 0.249801 0.436395
+vt 0.300793 0.436395
+vt 0.300793 0.423835
+vt 0.249801 0.423835
+vt 0.200473 0.436395
+vt 0.249801 0.436395
+vt 0.249801 0.423835
+vt 0.200473 0.423835
+vt 0.153645 0.436395
+vt 0.200473 0.436395
+vt 0.200473 0.423835
+vt 0.153645 0.423835
+vt 0.106818 0.436395
+vt 0.153645 0.436395
+vt 0.153645 0.423835
+vt 0.106818 0.423835
+vt 0.057489 0.436395
+vt 0.106818 0.436395
+vt 0.106818 0.423835
+vt 0.057489 0.423835
+vt 0.006498 0.436395
+vt 0.057489 0.436395
+vt 0.057489 0.423835
+vt 0.006498 0.423835
+vt 0.443776 0.436395
+vt 0.493105 0.436395
+vt 0.493105 0.423835
+vt 0.443776 0.423835
+vt 0.396949 0.436395
+vt 0.443776 0.436395
+vt 0.443776 0.423835
+vt 0.396949 0.423835
+vt 0.350121 0.423835
+vt 0.396949 0.423835
+vt 0.396949 0.417555
+vt 0.350121 0.417555
+vt 0.300793 0.423835
+vt 0.350121 0.423835
+vt 0.350121 0.417555
+vt 0.300793 0.417555
+vt 0.249801 0.423835
+vt 0.300793 0.423835
+vt 0.300793 0.417555
+vt 0.249801 0.417555
+vt 0.200473 0.423835
+vt 0.249801 0.423835
+vt 0.249801 0.417555
+vt 0.200473 0.417555
+vt 0.153645 0.423835
+vt 0.200473 0.423835
+vt 0.200473 0.417555
+vt 0.153645 0.417555
+vt 0.106818 0.423835
+vt 0.153645 0.423835
+vt 0.153645 0.417555
+vt 0.106818 0.417555
+vt 0.057489 0.423835
+vt 0.106818 0.423835
+vt 0.106818 0.417555
+vt 0.057489 0.417555
+vt 0.006498 0.423835
+vt 0.057489 0.423835
+vt 0.057489 0.417555
+vt 0.006498 0.417555
+vt 0.443776 0.423835
+vt 0.493105 0.423835
+vt 0.493105 0.417555
+vt 0.443776 0.417555
+vt 0.396949 0.423835
+vt 0.443776 0.423835
+vt 0.443776 0.417555
+vt 0.396949 0.417555
+vt 0.350121 0.417555
+vt 0.396949 0.417555
+vt 0.396949 0.404768
+vt 0.350121 0.404768
+vt 0.300793 0.417555
+vt 0.350121 0.417555
+vt 0.350121 0.404768
+vt 0.300793 0.404768
+vt 0.249801 0.417555
+vt 0.300793 0.417555
+vt 0.300793 0.404768
+vt 0.249801 0.404768
+vt 0.200473 0.417555
+vt 0.249801 0.417555
+vt 0.249801 0.404768
+vt 0.200473 0.404768
+vt 0.153645 0.417555
+vt 0.200473 0.417555
+vt 0.200473 0.404768
+vt 0.153645 0.404768
+vt 0.106818 0.417555
+vt 0.153645 0.417555
+vt 0.153645 0.404768
+vt 0.106818 0.404768
+vt 0.057489 0.417555
+vt 0.106818 0.417555
+vt 0.106818 0.404768
+vt 0.057489 0.404768
+vt 0.006498 0.417555
+vt 0.057489 0.417555
+vt 0.057489 0.404768
+vt 0.006498 0.404768
+vt 0.443776 0.417555
+vt 0.493105 0.417555
+vt 0.493105 0.404768
+vt 0.443776 0.404768
+vt 0.396949 0.417555
+vt 0.443776 0.417555
+vt 0.443776 0.404768
+vt 0.396949 0.404768
+vt 0.350998 0.547962
+vt 0.398319 0.547961
+vt 0.398319 0.498824
+vt 0.350998 0.498825
+vt 0.301150 0.547961
+vt 0.301150 0.498825
+vt 0.249620 0.547961
+vt 0.249620 0.498825
+vt 0.199772 0.547962
+vt 0.199772 0.498825
+vt 0.152451 0.547962
+vt 0.152451 0.498824
+vt 0.105130 0.547961
+vt 0.105130 0.498824
+vt 0.055282 0.547962
+vt 0.055282 0.498824
+vt 0.003753 0.547962
+vt 0.003753 0.498824
+vt 0.445640 0.547961
+vt 0.495488 0.547962
+vt 0.495488 0.498824
+vt 0.445640 0.498824
+vt 0.350998 0.737698
+vt 0.398319 0.737698
+vt 0.301150 0.737698
+vt 0.249620 0.737698
+vt 0.199772 0.737698
+vt 0.152451 0.737698
+vt 0.105130 0.737698
+vt 0.055282 0.737698
+vt 0.003753 0.737698
+vt 0.445640 0.737698
+vt 0.495488 0.737698
+vt 0.350998 0.858405
+vt 0.398319 0.858405
+vt 0.301150 0.858405
+vt 0.249620 0.858405
+vt 0.199772 0.858405
+vt 0.152451 0.858405
+vt 0.105130 0.858405
+vt 0.055282 0.858405
+vt 0.003753 0.858405
+vt 0.445640 0.858405
+vt 0.495488 0.858405
+vt 0.350998 0.961982
+vt 0.398319 0.961982
+vt 0.301150 0.961982
+vt 0.249620 0.961982
+vt 0.199772 0.961982
+vt 0.152451 0.961982
+vt 0.105130 0.961982
+vt 0.055282 0.961982
+vt 0.003753 0.961982
+vt 0.445640 0.961982
+vt 0.495488 0.961982
+vt 0.350998 0.996654
+vt 0.398319 0.996654
+vt 0.301150 0.996654
+vt 0.249620 0.996654
+vt 0.199772 0.996654
+vt 0.152451 0.996654
+vt 0.105130 0.996654
+vt 0.055282 0.996654
+vt 0.003753 0.996654
+vt 0.445640 0.996654
+vt 0.495488 0.996654
+vn 0.000001 -0.000117 -1.000000
+vn 0.000007 -0.000119 -1.000000
+vn 0.000004 -0.000642 -1.000000
+vn 0.000290 -0.001097 -0.999999
+vn 0.965539 -0.259953 0.012557
+vn 0.960748 -0.276359 0.024272
+vn 0.995038 -0.099144 0.008333
+vn 0.997311 0.073275 0.000826
+vn 0.384905 -0.746403 0.542891
+vn -0.062420 -0.728758 0.681921
+vn 0.161475 -0.510903 0.844336
+vn 0.298440 -0.528902 0.794478
+vn -0.388088 -0.822360 0.416066
+vn -0.374937 -0.503238 0.778571
+vn -0.967185 -0.253827 0.011142
+vn -0.969696 -0.243379 0.021376
+vn -0.995359 -0.095953 0.007360
+vn -0.997773 0.066697 0.000871
+vn -0.000005 -0.000117 -1.000000
+vn -0.000578 -0.001225 -0.999999
+vn -0.002059 0.162154 -0.986763
+vn 0.036715 0.227361 -0.973118
+vn 0.988150 0.153490 0.000530
+vn 0.997092 0.076202 0.000795
+vn 0.419290 0.355620 0.835302
+vn 0.335340 0.314686 0.887986
+vn 0.476829 0.120448 0.870704
+vn 0.548589 -0.115983 0.828008
+vn -0.425538 0.336785 0.839936
+vn -0.326355 0.383871 0.863791
+vn -0.479491 0.111072 0.870489
+vn -0.546378 -0.151051 0.823805
+vn -0.988094 0.153853 0.000548
+vn -0.996980 0.077652 0.000810
+vn -0.071204 0.307808 -0.948780
+vn 0.134041 0.542848 -0.829065
+vn 0.038742 0.586621 -0.808935
+vn 0.999191 -0.037450 -0.014645
+vn 0.997224 -0.066926 -0.032638
+vn 0.508477 -0.486691 0.710340
+vn 0.518399 -0.586423 0.622391
+vn -0.510691 -0.477362 0.715067
+vn -0.519541 -0.586094 0.621748
+vn -0.999321 -0.034320 -0.013421
+vn -0.997248 -0.066385 -0.032993
+vn -0.208233 0.626135 -0.751394
+vn 0.208454 0.614903 -0.760553
+vn 0.003597 0.581754 -0.813357
+vn 0.994885 -0.089661 -0.046525
+vn 0.994269 -0.101688 -0.032983
+vn 0.510524 -0.657019 0.554699
+vn 0.512927 -0.632907 0.579944
+vn -0.512007 -0.660652 0.548989
+vn -0.514396 -0.638014 0.573004
+vn -0.992961 -0.104288 -0.056137
+vn -0.993472 -0.105450 -0.043510
+vn -0.215729 0.522222 -0.825073
+vn 0.214294 0.359182 -0.908332
+vn 0.000134 0.334072 -0.942548
+vn 0.997269 -0.072312 -0.015018
+vn 0.998775 -0.049471 -0.001064
+vn 0.525393 -0.499573 0.688759
+vn 0.520961 -0.381681 0.763491
+vn -0.527026 -0.502395 0.685451
+vn -0.522284 -0.373646 0.766556
+vn -0.997005 -0.073521 -0.023992
+vn -0.999371 -0.035442 -0.000762
+vn -0.214604 0.292047 -0.932016
+vn -0.000002 -0.996240 0.086630
+vn 0.254654 -0.964745 -0.066466
+vn -0.000002 -0.978728 -0.205161
+vn 0.384905 -0.746403 0.542891
+vn -0.062420 -0.728758 0.681921
+vn -0.388088 -0.822360 0.416066
+vn -0.254657 -0.964744 -0.066466
+vn 0.215116 0.223526 -0.950664
+vn -0.074129 0.228601 -0.970694
+vn 1.000000 0.000000 -0.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.532664 -0.238851 0.811923
+vn 0.525606 -0.243348 0.815181
+vn -0.532938 -0.238769 0.811767
+vn -0.526504 -0.236645 0.816574
+vn -1.000000 -0.000000 0.000000
+vn -1.000000 -0.000000 0.000000
+vn -0.212589 0.222631 -0.951442
+vn 0.000117 0.000000 -1.000000
+vn 0.000118 0.000007 -1.000000
+vn 0.000642 0.000004 -1.000000
+vn 0.001097 0.000289 -0.999999
+vn 0.259953 0.965539 0.012557
+vn 0.276358 0.960748 0.024272
+vn 0.099144 0.995038 0.008333
+vn -0.073275 0.997311 0.000826
+vn 0.746403 0.384905 0.542891
+vn 0.728758 -0.062420 0.681921
+vn 0.510903 0.161476 0.844336
+vn 0.528902 0.298440 0.794478
+vn 0.822360 -0.388088 0.416066
+vn 0.503238 -0.374936 0.778572
+vn 0.253827 -0.967185 0.011142
+vn 0.243379 -0.969696 0.021376
+vn 0.095953 -0.995359 0.007360
+vn -0.066697 -0.997773 0.000871
+vn 0.000117 -0.000006 -1.000000
+vn 0.001225 -0.000578 -0.999999
+vn -0.162154 -0.002061 -0.986763
+vn -0.227361 0.036714 -0.973118
+vn -0.153490 0.988150 0.000530
+vn -0.076202 0.997092 0.000795
+vn -0.355620 0.419290 0.835302
+vn -0.314686 0.335340 0.887986
+vn -0.120448 0.476829 0.870704
+vn 0.115983 0.548589 0.828008
+vn -0.336785 -0.425537 0.839937
+vn -0.383871 -0.326354 0.863792
+vn -0.111072 -0.479490 0.870490
+vn 0.151051 -0.546377 0.823805
+vn -0.153853 -0.988094 0.000549
+vn -0.077652 -0.996980 0.000810
+vn -0.307808 -0.071204 -0.948780
+vn -0.542849 0.134040 -0.829065
+vn -0.586621 0.038742 -0.808935
+vn 0.037450 0.999191 -0.014646
+vn 0.066926 0.997224 -0.032638
+vn 0.486691 0.508477 0.710340
+vn 0.586423 0.518399 0.622390
+vn 0.477362 -0.510691 0.715067
+vn 0.586095 -0.519541 0.621748
+vn 0.034320 -0.999321 -0.013421
+vn 0.066385 -0.997248 -0.032993
+vn -0.626135 -0.208233 -0.751394
+vn -0.614903 0.208454 -0.760553
+vn -0.581754 0.003596 -0.813357
+vn 0.089661 0.994885 -0.046525
+vn 0.101687 0.994269 -0.032983
+vn 0.657019 0.510524 0.554699
+vn 0.632907 0.512927 0.579944
+vn 0.660652 -0.512006 0.548989
+vn 0.638015 -0.514396 0.573004
+vn 0.104288 -0.992961 -0.056137
+vn 0.105450 -0.993472 -0.043510
+vn -0.522222 -0.215730 -0.825073
+vn -0.359182 0.214294 -0.908332
+vn -0.334072 0.000134 -0.942547
+vn 0.072312 0.997269 -0.015018
+vn 0.049471 0.998775 -0.001064
+vn 0.499573 0.525393 0.688759
+vn 0.381681 0.520961 0.763491
+vn 0.502395 -0.527026 0.685451
+vn 0.373646 -0.522284 0.766556
+vn 0.073521 -0.997005 -0.023992
+vn 0.035442 -0.999371 -0.000762
+vn -0.292047 -0.214604 -0.932016
+vn 0.996240 -0.000002 0.086630
+vn 0.964745 0.254654 -0.066466
+vn 0.978728 -0.000002 -0.205161
+vn 0.746403 0.384905 0.542891
+vn 0.728758 -0.062420 0.681921
+vn 0.822360 -0.388088 0.416066
+vn 0.964744 -0.254658 -0.066466
+vn -0.223526 0.215116 -0.950664
+vn -0.228601 -0.074129 -0.970694
+vn -0.000000 1.000000 -0.000000
+vn -0.000000 1.000000 -0.000000
+vn 0.238851 0.532664 0.811923
+vn 0.243348 0.525606 0.815181
+vn 0.238770 -0.532938 0.811767
+vn 0.236645 -0.526504 0.816574
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.222631 -0.212589 -0.951442
+vn -0.000001 0.000116 -1.000000
+vn -0.000009 0.000119 -1.000000
+vn -0.000005 0.000642 -1.000000
+vn -0.000289 0.001096 -0.999999
+vn -0.965539 0.259953 0.012557
+vn -0.960748 0.276358 0.024272
+vn -0.995038 0.099144 0.008333
+vn -0.997311 -0.073275 0.000826
+vn -0.384905 0.746403 0.542891
+vn 0.062420 0.728758 0.681921
+vn -0.161475 0.510903 0.844336
+vn -0.298440 0.528902 0.794478
+vn 0.388088 0.822361 0.416066
+vn 0.374936 0.503239 0.778571
+vn 0.967185 0.253827 0.011142
+vn 0.969696 0.243379 0.021376
+vn 0.995359 0.095953 0.007360
+vn 0.997773 -0.066696 0.000871
+vn 0.000006 0.000116 -1.000000
+vn 0.000578 0.001225 -0.999999
+vn 0.002061 -0.162154 -0.986763
+vn -0.036715 -0.227361 -0.973118
+vn -0.988150 -0.153490 0.000530
+vn -0.997092 -0.076202 0.000795
+vn -0.419290 -0.355620 0.835302
+vn -0.335340 -0.314686 0.887986
+vn -0.476829 -0.120448 0.870704
+vn -0.548589 0.115983 0.828008
+vn 0.425538 -0.336785 0.839937
+vn 0.326355 -0.383871 0.863791
+vn 0.479490 -0.111072 0.870490
+vn 0.546377 0.151051 0.823806
+vn 0.988094 -0.153853 0.000549
+vn 0.996980 -0.077652 0.000810
+vn 0.071202 -0.307807 -0.948781
+vn -0.134041 -0.542849 -0.829065
+vn -0.038743 -0.586621 -0.808935
+vn -0.999191 0.037450 -0.014645
+vn -0.997224 0.066925 -0.032638
+vn -0.508477 0.486691 0.710340
+vn -0.518400 0.586423 0.622390
+vn 0.510690 0.477362 0.715067
+vn 0.519540 0.586095 0.621748
+vn 0.999321 0.034320 -0.013421
+vn 0.997248 0.066385 -0.032993
+vn 0.208233 -0.626135 -0.751394
+vn -0.208455 -0.614903 -0.760553
+vn -0.003597 -0.581754 -0.813357
+vn -0.994885 0.089660 -0.046525
+vn -0.994269 0.101687 -0.032983
+vn -0.510524 0.657019 0.554699
+vn -0.512927 0.632907 0.579944
+vn 0.512006 0.660652 0.548989
+vn 0.514396 0.638015 0.573004
+vn 0.992961 0.104288 -0.056137
+vn 0.993472 0.105451 -0.043510
+vn 0.215730 -0.522222 -0.825072
+vn -0.214294 -0.359182 -0.908332
+vn -0.000134 -0.334072 -0.942547
+vn -0.997269 0.072312 -0.015018
+vn -0.998775 0.049471 -0.001064
+vn -0.525393 0.499573 0.688759
+vn -0.520961 0.381681 0.763491
+vn 0.527026 0.502395 0.685451
+vn 0.522284 0.373646 0.766556
+vn 0.997005 0.073521 -0.023992
+vn 0.999371 0.035442 -0.000762
+vn 0.214604 -0.292047 -0.932016
+vn 0.000002 0.996240 0.086630
+vn -0.254654 0.964745 -0.066466
+vn 0.000002 0.978728 -0.205161
+vn -0.384905 0.746403 0.542891
+vn 0.062420 0.728758 0.681921
+vn 0.388088 0.822361 0.416066
+vn 0.254658 0.964744 -0.066466
+vn -0.215116 -0.223526 -0.950664
+vn 0.074129 -0.228601 -0.970694
+vn -1.000000 -0.000000 -0.000000
+vn -1.000000 -0.000000 -0.000000
+vn -0.532664 0.238851 0.811923
+vn -0.525606 0.243348 0.815181
+vn 0.532938 0.238770 0.811767
+vn 0.526504 0.236645 0.816574
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.212589 -0.222631 -0.951442
+vn -0.000117 -0.000002 -1.000000
+vn -0.000120 -0.000009 -1.000000
+vn -0.000642 -0.000005 -1.000000
+vn -0.001096 -0.000290 -0.999999
+vn -0.259953 -0.965540 0.012557
+vn -0.276358 -0.960748 0.024272
+vn -0.099144 -0.995038 0.008333
+vn 0.073275 -0.997311 0.000826
+vn -0.746403 -0.384905 0.542891
+vn -0.728758 0.062420 0.681921
+vn -0.510903 -0.161475 0.844336
+vn -0.528903 -0.298440 0.794478
+vn -0.822360 0.388088 0.416066
+vn -0.503238 0.374937 0.778571
+vn -0.253827 0.967185 0.011142
+vn -0.243379 0.969696 0.021376
+vn -0.095953 0.995359 0.007360
+vn 0.066697 0.997773 0.000871
+vn -0.000116 0.000005 -1.000000
+vn -0.001225 0.000578 -0.999999
+vn 0.162155 0.002059 -0.986763
+vn 0.227361 -0.036715 -0.973118
+vn 0.153490 -0.988150 0.000530
+vn 0.076203 -0.997092 0.000795
+vn 0.355621 -0.419290 0.835302
+vn 0.314686 -0.335340 0.887986
+vn 0.120448 -0.476829 0.870704
+vn -0.115983 -0.548589 0.828008
+vn 0.336785 0.425538 0.839937
+vn 0.383871 0.326355 0.863791
+vn 0.111072 0.479490 0.870490
+vn -0.151051 0.546377 0.823805
+vn 0.153853 0.988094 0.000548
+vn 0.077652 0.996980 0.000810
+vn 0.307808 0.071202 -0.948781
+vn 0.542849 -0.134041 -0.829065
+vn 0.586621 -0.038743 -0.808934
+vn -0.037450 -0.999191 -0.014645
+vn -0.066925 -0.997224 -0.032638
+vn -0.486691 -0.508477 0.710340
+vn -0.586423 -0.518400 0.622390
+vn -0.477362 0.510691 0.715067
+vn -0.586095 0.519541 0.621748
+vn -0.034320 0.999321 -0.013421
+vn -0.066385 0.997248 -0.032993
+vn 0.626135 0.208232 -0.751395
+vn 0.614903 -0.208454 -0.760553
+vn 0.581754 -0.003597 -0.813357
+vn -0.089660 -0.994885 -0.046525
+vn -0.101687 -0.994269 -0.032983
+vn -0.657019 -0.510525 0.554699
+vn -0.632907 -0.512927 0.579944
+vn -0.660652 0.512007 0.548988
+vn -0.638015 0.514396 0.573004
+vn -0.104288 0.992961 -0.056137
+vn -0.105451 0.993472 -0.043510
+vn 0.522222 0.215729 -0.825072
+vn 0.359182 -0.214295 -0.908331
+vn 0.334072 -0.000134 -0.942547
+vn -0.072312 -0.997269 -0.015018
+vn -0.049471 -0.998775 -0.001064
+vn -0.499573 -0.525393 0.688759
+vn -0.381681 -0.520961 0.763491
+vn -0.502395 0.527026 0.685451
+vn -0.373646 0.522284 0.766556
+vn -0.073521 0.997005 -0.023992
+vn -0.035442 0.999371 -0.000763
+vn 0.292047 0.214604 -0.932016
+vn -0.996240 0.000002 0.086630
+vn -0.964745 -0.254654 -0.066466
+vn -0.978728 0.000002 -0.205161
+vn -0.746403 -0.384905 0.542891
+vn -0.728758 0.062420 0.681921
+vn -0.822360 0.388088 0.416066
+vn -0.964744 0.254657 -0.066466
+vn 0.223526 -0.215116 -0.950664
+vn 0.228601 0.074129 -0.970694
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn -0.238851 -0.532664 0.811923
+vn -0.243348 -0.525606 0.815181
+vn -0.238770 0.532938 0.811767
+vn -0.236645 0.526504 0.816574
+vn -0.000000 1.000000 0.000000
+vn -0.000000 1.000000 0.000000
+vn 0.222631 0.212589 -0.951442
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.706842 0.707371 0.000000
+vn 0.706842 0.707371 0.000000
+vn 0.706842 0.707371 0.000000
+vn 0.706842 0.707371 0.000000
+vn -0.000374 1.000000 0.000000
+vn -0.000374 1.000000 0.000000
+vn -0.000374 1.000000 0.000000
+vn -0.000374 1.000000 0.000000
+vn -0.707371 0.706842 0.000000
+vn -0.707371 0.706842 0.000000
+vn -0.707371 0.706842 0.000000
+vn -0.707371 0.706842 0.000000
+vn -1.000000 -0.000374 0.000000
+vn -1.000000 -0.000374 0.000000
+vn -1.000000 -0.000374 0.000000
+vn -1.000000 -0.000374 0.000000
+vn -0.706842 -0.707371 -0.000000
+vn -0.706842 -0.707371 -0.000000
+vn -0.706842 -0.707371 -0.000000
+vn -0.706842 -0.707371 0.000000
+vn 0.000374 -1.000000 -0.000000
+vn 0.000374 -1.000000 0.000000
+vn 0.000374 -1.000000 -0.000000
+vn 0.000374 -1.000000 -0.000000
+vn 0.707371 -0.706842 -0.000000
+vn 0.707371 -0.706842 -0.000000
+vn 0.707371 -0.706842 -0.000000
+vn 0.707371 -0.706842 -0.000000
+vn 1.000000 0.000374 0.000000
+vn 1.000000 0.000374 0.000000
+vn 1.000000 0.000374 0.000000
+vn 1.000000 0.000374 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.099506 0.000000 0.995037
+vn -0.099506 0.000000 0.995037
+vn -0.099506 0.000000 0.995037
+vn -0.099506 0.000000 0.995037
+vn 0.000000 -0.099506 0.995037
+vn 0.000000 -0.099506 0.995037
+vn 0.000000 -0.099506 0.995037
+vn 0.000000 -0.099506 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.929987 0.000000 0.367592
+vn -0.677867 0.000000 0.735184
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -0.929987 0.367592
+vn 0.000000 -0.677867 0.735184
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.929987 0.000000 0.367592
+vn 0.677867 0.000000 0.735184
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.929987 0.367592
+vn 0.000000 0.677867 0.735184
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -1.000000 0.000000
+vn -0.000000 -1.000000 0.000000
+vn -0.000000 -1.000000 0.000000
+vn -0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.967538 0.252725
+vn 0.000000 0.862856 0.505449
+vn 0.967538 0.000000 0.252725
+vn 0.862856 0.000000 0.505449
+vn -0.000000 -0.967538 0.252725
+vn -0.000000 -0.862856 0.505449
+vn -0.967538 0.000000 0.252725
+vn -0.862856 0.000000 0.505449
+vn 0.000000 0.862856 0.505449
+vn 0.000000 0.967538 0.252725
+vn 0.862856 0.000000 0.505449
+vn 0.967538 0.000000 0.252725
+vn -0.000000 -0.862856 0.505449
+vn -0.000000 -0.967538 0.252725
+vn -0.862856 0.000000 0.505449
+vn -0.967538 0.000000 0.252725
+vn 0.000000 0.967538 0.252725
+vn 0.000000 0.862856 0.505449
+vn 0.967538 0.000000 0.252724
+vn 0.862857 0.000000 0.505449
+vn -0.000000 -0.967538 0.252724
+vn -0.000000 -0.862857 0.505448
+vn -0.967538 0.000000 0.252725
+vn -0.862857 0.000000 0.505449
+vn 0.000000 0.707107 0.707107
+vn 0.000000 0.707107 0.707107
+vn 0.707108 0.000000 0.707106
+vn 0.707107 0.000000 0.707107
+vn -0.000000 -0.707108 0.707105
+vn -0.000000 -0.707108 0.707105
+vn -0.707108 0.000000 0.707106
+vn -0.707108 0.000000 0.707105
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.000000 0.099506 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.099501 0.000000 0.995037
+vn 0.099506 0.000000 0.995037
+vn 0.099506 0.000000 0.995037
+vn -0.000000 -0.099501 0.995037
+vn -0.000000 -0.099501 0.995037
+vn -0.000000 -0.099501 0.995037
+vn -0.000000 -0.099501 0.995037
+vn -0.099501 0.000000 0.995037
+vn -0.099506 0.000000 0.995037
+vn -0.099501 0.000000 0.995037
+vn -0.099501 0.000000 0.995037
+vn -0.275482 0.000000 0.961306
+vn -0.187896 0.000000 0.982189
+vn 0.000000 -0.275482 0.961306
+vn 0.000000 -0.187896 0.982189
+vn 0.275482 0.000000 0.961306
+vn 0.187896 0.000000 0.982189
+vn 0.000000 0.275482 0.961306
+vn 0.000000 0.187896 0.982189
+vn -0.516067 0.000000 0.856548
+vn -0.903649 0.000000 0.428274
+vn 0.000000 -0.516067 0.856548
+vn 0.000000 -0.903649 0.428274
+vn 0.516067 0.000000 0.856548
+vn 0.903649 0.000000 0.428274
+vn 0.000000 0.516067 0.856548
+vn 0.000000 0.903649 0.428274
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.049938 0.000000 0.998752
+vn -0.049938 0.000000 0.998752
+vn -0.049938 0.000000 0.998752
+vn -0.049938 0.000000 0.998752
+vn 0.000000 -0.049938 0.998752
+vn 0.000000 -0.049938 0.998752
+vn 0.000000 -0.049938 0.998752
+vn 0.000000 -0.049938 0.998752
+vn 0.049938 0.000000 0.998752
+vn 0.049938 0.000000 0.998752
+vn 0.049938 0.000000 0.998752
+vn 0.049938 0.000000 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 -0.000002
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 -0.000002
+vn 0.000000 1.000000 -0.000005
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.000000 -1.000000 0.000002
+vn 0.000000 -1.000000 0.000005
+vn -0.000000 -1.000000 0.000002
+vn -0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.562661 0.423331 -0.710072
+vn 0.704032 0.011758 -0.710070
+vn 0.582173 0.063049 -0.810617
+vn 0.433925 0.393201 -0.810618
+vn 0.206373 0.673207 -0.710072
+vn 0.119934 0.573161 -0.810618
+vn -0.228742 0.665939 -0.710072
+vn -0.239867 0.534192 -0.810618
+vn -0.576487 0.404302 -0.710072
+vn -0.508049 0.291177 -0.810618
+vn -0.704032 -0.011763 -0.710070
+vn -0.582173 -0.063055 -0.810616
+vn -0.562662 -0.423334 -0.710070
+vn -0.433926 -0.393204 -0.810616
+vn -0.206373 -0.673209 -0.710070
+vn -0.119934 -0.573164 -0.810616
+vn 0.228743 -0.665941 -0.710070
+vn 0.239869 -0.534195 -0.810616
+vn 0.576487 -0.404306 -0.710070
+vn 0.508049 -0.291182 -0.810616
+vn 0.745732 0.553468 -0.370886
+vn 0.928631 0.009435 -0.370885
+vn 0.277988 0.886096 -0.370886
+vn -0.295936 0.880264 -0.370886
+vn -0.756825 0.538201 -0.370886
+vn -0.928631 -0.009437 -0.370885
+vn -0.745732 -0.553469 -0.370885
+vn -0.277989 -0.886096 -0.370885
+vn 0.295937 -0.880265 -0.370885
+vn 0.756824 -0.538202 -0.370885
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 -0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.047494 0.015432 0.998752
+vn 0.047493 0.015432 0.998752
+vn 0.047494 0.015432 0.998752
+vn 0.047494 0.015432 0.998752
+vn 0.029353 0.040401 0.998752
+vn 0.029353 0.040401 0.998752
+vn 0.029353 0.040401 0.998752
+vn 0.029353 0.040401 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn 0.000000 0.049938 0.998752
+vn -0.029353 0.040401 0.998752
+vn -0.029353 0.040401 0.998752
+vn -0.029353 0.040401 0.998752
+vn -0.029353 0.040401 0.998752
+vn -0.047493 0.015431 0.998752
+vn -0.047494 0.015432 0.998752
+vn -0.047493 0.015431 0.998752
+vn -0.047493 0.015431 0.998752
+vn -0.047493 -0.015432 0.998752
+vn -0.047493 -0.015432 0.998752
+vn -0.047493 -0.015432 0.998752
+vn -0.047493 -0.015432 0.998752
+vn -0.029353 -0.040400 0.998752
+vn -0.029353 -0.040400 0.998752
+vn -0.029353 -0.040400 0.998752
+vn -0.029353 -0.040400 0.998752
+vn 0.000000 -0.049937 0.998752
+vn 0.000000 -0.049937 0.998752
+vn 0.000000 -0.049937 0.998752
+vn 0.000000 -0.049937 0.998752
+vn 0.029353 -0.040399 0.998752
+vn 0.029353 -0.040400 0.998752
+vn 0.029353 -0.040399 0.998752
+vn 0.029353 -0.040399 0.998752
+vn 0.047493 -0.015432 0.998752
+vn 0.047493 -0.015432 0.998752
+vn 0.047493 -0.015432 0.998752
+vn 0.047493 -0.015432 0.998752
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 -0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.425325 0.138196 -0.894427
+vn 0.425326 0.138197 -0.894427
+vn 0.425325 0.138196 -0.894427
+vn 0.425325 0.138196 -0.894427
+vn 0.262866 0.361804 -0.894427
+vn 0.262865 0.361803 -0.894427
+vn 0.262866 0.361804 -0.894427
+vn 0.262866 0.361804 -0.894427
+vn -0.000000 0.447215 -0.894427
+vn 0.000000 0.447214 -0.894427
+vn -0.000000 0.447215 -0.894427
+vn -0.000000 0.447215 -0.894427
+vn -0.262865 0.361803 -0.894427
+vn -0.262866 0.361804 -0.894427
+vn -0.262865 0.361803 -0.894427
+vn -0.262865 0.361803 -0.894427
+vn -0.425326 0.138196 -0.894427
+vn -0.425325 0.138196 -0.894427
+vn -0.425326 0.138196 -0.894427
+vn -0.425326 0.138196 -0.894427
+vn -0.425326 -0.138196 -0.894427
+vn -0.425326 -0.138196 -0.894427
+vn -0.425326 -0.138196 -0.894427
+vn -0.425326 -0.138196 -0.894427
+vn -0.262865 -0.361804 -0.894427
+vn -0.262865 -0.361804 -0.894427
+vn -0.262865 -0.361804 -0.894427
+vn -0.262865 -0.361804 -0.894427
+vn 0.000000 -0.447214 -0.894427
+vn 0.000000 -0.447214 -0.894427
+vn 0.000000 -0.447214 -0.894427
+vn 0.000000 -0.447214 -0.894427
+vn 0.262865 -0.361804 -0.894427
+vn 0.262865 -0.361804 -0.894427
+vn 0.262865 -0.361804 -0.894427
+vn 0.262865 -0.361804 -0.894427
+vn 0.425326 -0.138196 -0.894427
+vn 0.425326 -0.138196 -0.894427
+vn 0.425326 -0.138196 -0.894427
+vn 0.425326 -0.138196 -0.894427
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.587786 0.809017 -0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587786 0.809017 -0.000000
+vn 0.587786 0.809017 -0.000000
+vn -0.000000 1.000000 0.000000
+vn -0.000000 1.000000 -0.000001
+vn -0.000000 1.000000 0.000000
+vn -0.000000 1.000000 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 -0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.951056 -0.309017 -0.000000
+vn 0.425325 0.138197 0.894427
+vn 0.425326 0.138197 0.894427
+vn 0.425325 0.138197 0.894427
+vn 0.425325 0.138197 0.894427
+vn 0.262866 0.361803 0.894427
+vn 0.262866 0.361804 0.894427
+vn 0.262866 0.361803 0.894427
+vn 0.262866 0.361803 0.894427
+vn 0.000000 0.447214 0.894427
+vn -0.000000 0.447213 0.894427
+vn 0.000000 0.447214 0.894427
+vn 0.000000 0.447214 0.894427
+vn -0.262866 0.361804 0.894427
+vn -0.262865 0.361804 0.894427
+vn -0.262866 0.361804 0.894427
+vn -0.262866 0.361804 0.894427
+vn -0.425326 0.138197 0.894427
+vn -0.425326 0.138197 0.894427
+vn -0.425326 0.138197 0.894427
+vn -0.425326 0.138197 0.894427
+vn -0.425324 -0.138197 0.894428
+vn -0.425326 -0.138197 0.894427
+vn -0.425324 -0.138197 0.894428
+vn -0.425324 -0.138197 0.894428
+vn -0.262866 -0.361803 0.894427
+vn -0.262865 -0.361802 0.894428
+vn -0.262866 -0.361803 0.894427
+vn -0.262866 -0.361803 0.894427
+vn 0.000000 -0.447213 0.894427
+vn 0.000000 -0.447213 0.894427
+vn 0.000000 -0.447213 0.894427
+vn 0.000000 -0.447213 0.894427
+vn 0.262866 -0.361802 0.894427
+vn 0.262866 -0.361803 0.894427
+vn 0.262866 -0.361802 0.894427
+vn 0.262866 -0.361802 0.894427
+vn 0.425326 -0.138198 0.894427
+vn 0.425325 -0.138197 0.894427
+vn 0.425326 -0.138198 0.894427
+vn 0.425326 -0.138198 0.894427
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000001
+vn 0.951056 0.309017 0.000000
+vn 0.951056 0.309017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.587785 0.809017 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.587785 0.809017 0.000001
+vn -0.587785 0.809017 0.000000
+vn -0.587785 0.809017 0.000001
+vn -0.587785 0.809017 0.000001
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000001
+vn -0.951056 0.309017 0.000000
+vn -0.951056 0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 -0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.951056 -0.309017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn -0.587785 -0.809017 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.587785 -0.809017 0.000000
+vn 0.951056 -0.309017 0.000001
+vn 0.951056 -0.309017 0.000000
+vn 0.951056 -0.309017 0.000001
+vn 0.951056 -0.309017 0.000001
+vn 0.808878 0.587853 -0.012040
+vn 0.999927 0.000136 -0.012040
+vn 0.928631 0.009435 -0.370885
+vn 0.745732 0.553468 -0.370886
+vn 0.308865 0.951030 -0.012040
+vn 0.277988 0.886096 -0.370886
+vn -0.309124 0.950945 -0.012040
+vn -0.295936 0.880264 -0.370886
+vn -0.809038 0.587632 -0.012040
+vn -0.756825 0.538201 -0.370886
+vn -0.999927 -0.000136 -0.012040
+vn -0.928631 -0.009437 -0.370885
+vn -0.808878 -0.587853 -0.012040
+vn -0.745732 -0.553469 -0.370885
+vn -0.308865 -0.951030 -0.012040
+vn -0.277989 -0.886096 -0.370885
+vn 0.309124 -0.950945 -0.012040
+vn 0.295937 -0.880265 -0.370885
+vn 0.809038 -0.587632 -0.012040
+vn 0.309124 -0.950945 -0.012040
+vn 0.295937 -0.880265 -0.370885
+vn 0.756824 -0.538202 -0.370885
+vn 0.797207 0.577639 0.175482
+vn 0.984482 -0.001267 0.175482
+vn 0.305427 0.935906 0.175482
+vn -0.303017 0.936689 0.175482
+vn -0.795718 0.579689 0.175482
+vn -0.984482 0.001267 0.175482
+vn -0.797207 -0.577639 0.175482
+vn -0.305426 -0.935906 0.175482
+vn 0.303017 -0.936689 0.175482
+vn 0.795718 -0.579689 0.175482
+vn 0.303017 -0.936689 0.175482
+vn 0.805510 0.586917 0.081747
+vn 0.996652 0.001359 0.081747
+vn 0.306690 0.948292 0.081747
+vn -0.309275 0.947452 0.081747
+vn -0.807107 0.584718 0.081747
+vn -0.996652 -0.001359 0.081747
+vn -0.805510 -0.586917 0.081747
+vn -0.306690 -0.948292 0.081747
+vn 0.309275 -0.947452 0.081747
+vn 0.807107 -0.584718 0.081747
+vn 0.309275 -0.947452 0.081747
+vn 0.768673 0.548289 -0.329426
+vn 0.944145 -0.008240 -0.329426
+vn 0.299593 0.895389 -0.329426
+vn -0.283921 0.900482 -0.329426
+vn -0.758987 0.561621 -0.329426
+vn -0.944145 0.008240 -0.329426
+vn -0.768673 -0.548289 -0.329426
+vn -0.299593 -0.895389 -0.329426
+vn 0.283921 -0.900482 -0.329426
+vn 0.758987 -0.561620 -0.329426
+vn 0.283921 -0.900482 -0.329426
+vn 0.726320 0.416280 -0.546965
+vn 0.832289 -0.090142 -0.546964
+vn 0.342922 0.763698 -0.546965
+vn -0.171461 0.819409 -0.546965
+vn -0.620351 0.562133 -0.546965
+vn -0.832288 0.090142 -0.546965
+vn -0.726320 -0.416280 -0.546965
+vn -0.342922 -0.763698 -0.546965
+vn 0.171461 -0.819409 -0.546965
+vn 0.620351 -0.562134 -0.546965
+vn 0.171461 -0.819409 -0.546965
+f 1/1/1 2/2/2 3/3/3
+f 3/3/3 4/4/4 1/1/1
+f 5/5/5 6/6/6 7/7/7
+f 7/7/7 8/8/8 5/5/5
+f 9/9/9 10/10/10 11/11/11
+f 11/11/11 12/12/12 9/9/9
+f 10/10/10 13/13/13 14/14/14
+f 14/14/14 11/11/11 10/10/10
+f 15/15/15 16/16/16 17/17/17
+f 17/17/17 18/18/18 15/15/15
+f 19/19/19 1/1/1 4/4/4
+f 4/4/4 20/20/20 19/19/19
+f 4/4/4 3/3/3 21/21/21
+f 21/21/21 22/22/22 4/4/4
+f 8/8/8 7/7/7 23/23/23
+f 23/23/23 24/24/24 8/8/8
+f 25/25/25 26/26/26 27/27/27
+f 27/27/27 28/28/28 25/25/25
+f 29/29/29 30/30/30 31/31/31
+f 31/31/31 32/32/32 29/29/29
+f 18/18/18 17/17/17 33/33/33
+f 33/33/33 34/34/34 18/18/18
+f 20/20/20 4/4/4 22/22/22
+f 22/22/22 35/35/35 20/20/20
+f 22/22/22 21/21/21 36/36/36
+f 36/36/36 37/37/37 22/22/22
+f 24/24/24 23/23/23 38/38/38
+f 38/38/38 39/39/39 24/24/24
+f 28/28/28 27/27/27 40/40/40
+f 40/40/40 41/41/41 28/28/28
+f 32/32/32 31/31/31 42/42/42
+f 42/42/42 43/43/43 32/32/32
+f 34/34/34 33/33/33 44/44/44
+f 44/44/44 45/45/45 34/34/34
+f 35/35/35 22/22/22 37/37/37
+f 37/37/37 46/46/46 35/35/35
+f 37/37/37 36/36/36 47/47/47
+f 47/47/47 48/48/48 37/37/37
+f 39/39/39 38/38/38 49/49/49
+f 49/49/49 50/50/50 39/39/39
+f 41/41/41 40/40/40 51/51/51
+f 51/51/51 52/52/52 41/41/41
+f 43/43/43 42/42/42 53/53/53
+f 53/53/53 54/54/54 43/43/43
+f 45/45/45 44/44/44 55/55/55
+f 55/55/55 56/56/56 45/45/45
+f 46/46/46 37/37/37 48/48/48
+f 48/48/48 57/57/57 46/46/46
+f 48/48/48 47/47/47 58/58/58
+f 58/58/58 59/59/59 48/48/48
+f 50/50/50 49/49/49 60/60/60
+f 60/60/60 61/61/61 50/50/50
+f 52/52/52 51/51/51 62/62/62
+f 62/62/62 63/63/63 52/52/52
+f 54/54/54 53/53/53 64/64/64
+f 64/64/64 65/65/65 54/54/54
+f 56/56/56 55/55/55 66/66/66
+f 66/66/66 67/67/67 56/56/56
+f 57/57/57 48/48/48 59/59/59
+f 59/59/59 68/68/68 57/57/57
+f 69/69/69 70/70/70 71/71/71
+f 69/69/69 72/72/72 70/70/70
+f 69/69/69 73/73/73 72/72/72
+f 69/69/69 74/74/74 73/73/73
+f 69/69/69 75/75/75 74/74/74
+f 69/69/69 71/71/71 75/75/75
+f 76/76/76 77/77/77 59/59/59
+f 76/76/76 59/59/59 58/58/58
+f 78/78/78 79/79/79 61/61/61
+f 78/78/78 61/61/61 60/60/60
+f 80/80/80 81/81/81 63/63/63
+f 80/80/80 63/63/63 62/62/62
+f 82/82/82 83/83/83 65/65/65
+f 82/82/82 65/65/65 64/64/64
+f 84/84/84 85/85/85 67/67/67
+f 84/84/84 67/67/67 66/66/66
+f 77/77/77 86/86/86 68/68/68
+f 77/77/77 68/68/68 59/59/59
+f 87/87/87 88/88/88 89/89/89
+f 89/89/89 90/90/90 87/87/87
+f 91/91/91 92/92/92 93/93/93
+f 93/93/93 94/94/94 91/91/91
+f 95/95/95 96/96/96 97/97/97
+f 97/97/97 98/98/98 95/95/95
+f 96/96/96 99/99/99 100/100/100
+f 100/100/100 97/97/97 96/96/96
+f 101/101/101 102/102/102 103/103/103
+f 103/103/103 104/104/104 101/101/101
+f 105/105/105 87/87/87 90/90/90
+f 90/90/90 106/106/106 105/105/105
+f 90/90/90 89/89/89 107/107/107
+f 107/107/107 108/108/108 90/90/90
+f 94/94/94 93/93/93 109/109/109
+f 109/109/109 110/110/110 94/94/94
+f 111/111/111 112/112/112 113/113/113
+f 113/113/113 114/114/114 111/111/111
+f 115/115/115 116/116/116 117/117/117
+f 117/117/117 118/118/118 115/115/115
+f 104/104/104 103/103/103 119/119/119
+f 119/119/119 120/120/120 104/104/104
+f 106/106/106 90/90/90 108/108/108
+f 108/108/108 121/121/121 106/106/106
+f 108/108/108 107/107/107 122/122/122
+f 122/122/122 123/123/123 108/108/108
+f 110/110/110 109/109/109 124/124/124
+f 124/124/124 125/125/125 110/110/110
+f 114/114/114 113/113/113 126/126/126
+f 126/126/126 127/127/127 114/114/114
+f 118/118/118 117/117/117 128/128/128
+f 128/128/128 129/129/129 118/118/118
+f 120/120/120 119/119/119 130/130/130
+f 130/130/130 131/131/131 120/120/120
+f 121/121/121 108/108/108 123/123/123
+f 123/123/123 132/132/132 121/121/121
+f 123/123/123 122/122/122 133/133/133
+f 133/133/133 134/134/134 123/123/123
+f 125/125/125 124/124/124 135/135/135
+f 135/135/135 136/136/136 125/125/125
+f 127/127/127 126/126/126 137/137/137
+f 137/137/137 138/138/138 127/127/127
+f 129/129/129 128/128/128 139/139/139
+f 139/139/139 140/140/140 129/129/129
+f 131/131/131 130/130/130 141/141/141
+f 141/141/141 142/142/142 131/131/131
+f 132/132/132 123/123/123 134/134/134
+f 134/134/134 143/143/143 132/132/132
+f 134/134/134 133/133/133 144/144/144
+f 144/144/144 145/145/145 134/134/134
+f 136/136/136 135/135/135 146/146/146
+f 146/146/146 147/147/147 136/136/136
+f 138/138/138 137/137/137 148/148/148
+f 148/148/148 149/149/149 138/138/138
+f 140/140/140 139/139/139 150/150/150
+f 150/150/150 151/151/151 140/140/140
+f 142/142/142 141/141/141 152/152/152
+f 152/152/152 153/153/153 142/142/142
+f 143/143/143 134/134/134 145/145/145
+f 145/145/145 154/154/154 143/143/143
+f 155/155/155 156/156/156 157/157/157
+f 155/155/155 158/158/158 156/156/156
+f 155/155/155 159/159/159 158/158/158
+f 155/155/155 160/160/160 159/159/159
+f 155/155/155 161/161/161 160/160/160
+f 155/155/155 157/157/157 161/161/161
+f 162/162/162 163/163/163 145/145/145
+f 162/162/162 145/145/145 144/144/144
+f 164/164/164 165/165/165 147/147/147
+f 164/164/164 147/147/147 146/146/146
+f 166/166/166 167/167/167 149/149/149
+f 166/166/166 149/149/149 148/148/148
+f 168/168/168 169/169/169 151/151/151
+f 168/168/168 151/151/151 150/150/150
+f 170/170/170 171/171/171 153/153/153
+f 170/170/170 153/153/153 152/152/152
+f 163/163/163 172/172/172 154/154/154
+f 163/163/163 154/154/154 145/145/145
+f 173/173/173 174/174/174 175/175/175
+f 175/175/175 176/176/176 173/173/173
+f 177/177/177 178/178/178 179/179/179
+f 179/179/179 180/180/180 177/177/177
+f 181/181/181 182/182/182 183/183/183
+f 183/183/183 184/184/184 181/181/181
+f 182/182/182 185/185/185 186/186/186
+f 186/186/186 183/183/183 182/182/182
+f 187/187/187 188/188/188 189/189/189
+f 189/189/189 190/190/190 187/187/187
+f 191/191/191 173/173/173 176/176/176
+f 176/176/176 192/192/192 191/191/191
+f 176/176/176 175/175/175 193/193/193
+f 193/193/193 194/194/194 176/176/176
+f 180/180/180 179/179/179 195/195/195
+f 195/195/195 196/196/196 180/180/180
+f 197/197/197 198/198/198 199/199/199
+f 199/199/199 200/200/200 197/197/197
+f 201/201/201 202/202/202 203/203/203
+f 203/203/203 204/204/204 201/201/201
+f 190/190/190 189/189/189 205/205/205
+f 205/205/205 206/206/206 190/190/190
+f 192/192/192 176/176/176 194/194/194
+f 194/194/194 207/207/207 192/192/192
+f 194/194/194 193/193/193 208/208/208
+f 208/208/208 209/209/209 194/194/194
+f 196/196/196 195/195/195 210/210/210
+f 210/210/210 211/211/211 196/196/196
+f 200/200/200 199/199/199 212/212/212
+f 212/212/212 213/213/213 200/200/200
+f 204/204/204 203/203/203 214/214/214
+f 214/214/214 215/215/215 204/204/204
+f 206/206/206 205/205/205 216/216/216
+f 216/216/216 217/217/217 206/206/206
+f 207/207/207 194/194/194 209/209/209
+f 209/209/209 218/218/218 207/207/207
+f 209/209/209 208/208/208 219/219/219
+f 219/219/219 220/220/220 209/209/209
+f 211/211/211 210/210/210 221/221/221
+f 221/221/221 222/222/222 211/211/211
+f 213/213/213 212/212/212 223/223/223
+f 223/223/223 224/224/224 213/213/213
+f 215/215/215 214/214/214 225/225/225
+f 225/225/225 226/226/226 215/215/215
+f 217/217/217 216/216/216 227/227/227
+f 227/227/227 228/228/228 217/217/217
+f 218/218/218 209/209/209 220/220/220
+f 220/220/220 229/229/229 218/218/218
+f 220/220/220 219/219/219 230/230/230
+f 230/230/230 231/231/231 220/220/220
+f 222/222/222 221/221/221 232/232/232
+f 232/232/232 233/233/233 222/222/222
+f 224/224/224 223/223/223 234/234/234
+f 234/234/234 235/235/235 224/224/224
+f 226/226/226 225/225/225 236/236/236
+f 236/236/236 237/237/237 226/226/226
+f 228/228/228 227/227/227 238/238/238
+f 238/238/238 239/239/239 228/228/228
+f 229/229/229 220/220/220 231/231/231
+f 231/231/231 240/240/240 229/229/229
+f 241/241/241 242/242/242 243/243/243
+f 241/241/241 244/244/244 242/242/242
+f 241/241/241 245/245/245 244/244/244
+f 241/241/241 246/246/246 245/245/245
+f 241/241/241 247/247/247 246/246/246
+f 241/241/241 243/243/243 247/247/247
+f 248/248/248 249/249/249 231/231/231
+f 248/248/248 231/231/231 230/230/230
+f 250/250/250 251/251/251 233/233/233
+f 250/250/250 233/233/233 232/232/232
+f 252/252/252 253/253/253 235/235/235
+f 252/252/252 235/235/235 234/234/234
+f 254/254/254 255/255/255 237/237/237
+f 254/254/254 237/237/237 236/236/236
+f 256/256/256 257/257/257 239/239/239
+f 256/256/256 239/239/239 238/238/238
+f 249/249/249 258/258/258 240/240/240
+f 249/249/249 240/240/240 231/231/231
+f 259/259/259 260/260/260 261/261/261
+f 261/261/261 262/262/262 259/259/259
+f 263/263/263 264/264/264 265/265/265
+f 265/265/265 266/266/266 263/263/263
+f 267/267/267 268/268/268 269/269/269
+f 269/269/269 270/270/270 267/267/267
+f 268/268/268 271/271/271 272/272/272
+f 272/272/272 269/269/269 268/268/268
+f 273/273/273 274/274/274 275/275/275
+f 275/275/275 276/276/276 273/273/273
+f 277/277/277 259/259/259 262/262/262
+f 262/262/262 278/278/278 277/277/277
+f 262/262/262 261/261/261 279/279/279
+f 279/279/279 280/280/280 262/262/262
+f 266/266/266 265/265/265 281/281/281
+f 281/281/281 282/282/282 266/266/266
+f 283/283/283 284/284/284 285/285/285
+f 285/285/285 286/286/286 283/283/283
+f 287/287/287 288/288/288 289/289/289
+f 289/289/289 290/290/290 287/287/287
+f 276/276/276 275/275/275 291/291/291
+f 291/291/291 292/292/292 276/276/276
+f 278/278/278 262/262/262 280/280/280
+f 280/280/280 293/293/293 278/278/278
+f 280/280/280 279/279/279 294/294/294
+f 294/294/294 295/295/295 280/280/280
+f 282/282/282 281/281/281 296/296/296
+f 296/296/296 297/297/297 282/282/282
+f 286/286/286 285/285/285 298/298/298
+f 298/298/298 299/299/299 286/286/286
+f 290/290/290 289/289/289 300/300/300
+f 300/300/300 301/301/301 290/290/290
+f 292/292/292 291/291/291 302/302/302
+f 302/302/302 303/303/303 292/292/292
+f 293/293/293 280/280/280 295/295/295
+f 295/295/295 304/304/304 293/293/293
+f 295/295/295 294/294/294 305/305/305
+f 305/305/305 306/306/306 295/295/295
+f 297/297/297 296/296/296 307/307/307
+f 307/307/307 308/308/308 297/297/297
+f 299/299/299 298/298/298 309/309/309
+f 309/309/309 310/310/310 299/299/299
+f 301/301/301 300/300/300 311/311/311
+f 311/311/311 312/312/312 301/301/301
+f 303/303/303 302/302/302 313/313/313
+f 313/313/313 314/314/314 303/303/303
+f 304/304/304 295/295/295 306/306/306
+f 306/306/306 315/315/315 304/304/304
+f 306/306/306 305/305/305 316/316/316
+f 316/316/316 317/317/317 306/306/306
+f 308/308/308 307/307/307 318/318/318
+f 318/318/318 319/319/319 308/308/308
+f 310/310/310 309/309/309 320/320/320
+f 320/320/320 321/321/321 310/310/310
+f 312/312/312 311/311/311 322/322/322
+f 322/322/322 323/323/323 312/312/312
+f 314/314/314 313/313/313 324/324/324
+f 324/324/324 325/325/325 314/314/314
+f 315/315/315 306/306/306 317/317/317
+f 317/317/317 326/326/326 315/315/315
+f 327/327/327 328/328/328 329/329/329
+f 327/327/327 330/330/330 328/328/328
+f 327/327/327 331/331/331 330/330/330
+f 327/327/327 332/332/332 331/331/331
+f 327/327/327 333/333/333 332/332/332
+f 327/327/327 329/329/329 333/333/333
+f 334/334/334 335/335/335 317/317/317
+f 334/334/334 317/317/317 316/316/316
+f 336/336/336 337/337/337 319/319/319
+f 336/336/336 319/319/319 318/318/318
+f 338/338/338 339/339/339 321/321/321
+f 338/338/338 321/321/321 320/320/320
+f 340/340/340 341/341/341 323/323/323
+f 340/340/340 323/323/323 322/322/322
+f 342/342/342 343/343/343 325/325/325
+f 342/342/342 325/325/325 324/324/324
+f 335/335/335 344/344/344 326/326/326
+f 335/335/335 326/326/326 317/317/317
+f 345/345/345 346/346/346 347/347/347
+f 345/345/345 348/348/348 346/346/346
+f 345/345/345 349/349/349 348/348/348
+f 345/345/345 350/350/350 349/349/349
+f 345/345/345 351/351/351 350/350/350
+f 345/345/345 352/352/352 351/351/351
+f 345/345/345 353/353/353 352/352/352
+f 345/345/345 347/347/347 353/353/353
+f 354/354/354 355/355/355 356/356/356
+f 354/354/354 356/356/356 357/357/357
+f 358/358/358 359/359/359 360/360/360
+f 358/358/358 360/360/360 361/361/361
+f 362/362/362 363/363/363 364/364/364
+f 362/362/362 364/364/364 365/365/365
+f 366/366/366 367/367/367 368/368/368
+f 366/366/366 368/368/368 369/369/369
+f 370/370/370 371/371/371 372/372/372
+f 370/370/370 372/372/372 373/373/373
+f 374/374/374 375/375/375 376/376/376
+f 374/374/374 376/376/376 377/377/377
+f 378/378/378 379/379/379 380/380/380
+f 378/378/378 380/380/380 381/381/381
+f 382/382/382 383/383/383 384/384/384
+f 382/382/382 384/384/384 385/385/385
+f 386/386/386 387/387/387 388/388/388
+f 386/386/386 388/388/388 389/389/389
+f 386/386/386 389/389/389 390/390/390
+f 386/386/386 390/390/390 391/391/391
+f 386/386/386 391/391/391 392/392/392
+f 386/386/386 392/392/392 393/393/393
+f 386/386/386 393/393/393 394/394/394
+f 386/386/386 394/394/394 387/387/387
+f 395/395/395 396/396/396 397/397/397
+f 397/397/397 398/398/398 395/395/395
+f 399/399/399 400/400/400 401/401/401
+f 401/401/401 402/402/402 399/399/399
+f 403/403/403 404/404/404 405/405/405
+f 405/405/405 406/406/406 403/403/403
+f 407/407/407 408/408/408 409/409/409
+f 409/409/409 410/410/410 407/407/407
+f 411/411/411 412/412/412 413/413/413
+f 413/413/413 414/414/414 411/411/411
+f 415/415/415 416/416/416 417/417/417
+f 417/417/417 418/418/418 415/415/415
+f 419/419/419 420/420/420 421/421/421
+f 421/421/421 422/422/422 419/419/419
+f 423/423/423 424/424/424 425/425/425
+f 425/425/425 426/426/426 423/423/423
+f 427/427/427 428/428/428 429/429/429
+f 429/429/429 430/430/430 427/427/427
+f 431/431/431 432/432/432 433/433/433
+f 433/433/433 434/434/434 431/431/431
+f 435/435/435 436/436/436 437/437/437
+f 437/437/437 438/438/438 435/435/435
+f 439/439/439 440/440/440 441/441/441
+f 441/441/441 442/442/442 439/439/439
+f 443/443/443 444/444/444 445/445/445
+f 445/445/445 446/446/446 443/443/443
+f 447/447/447 448/448/448 449/449/449
+f 449/449/449 450/450/450 447/447/447
+f 451/451/451 452/452/452 453/453/453
+f 453/453/453 454/454/454 451/451/451
+f 455/455/455 456/456/456 457/457/457
+f 457/457/457 458/458/458 455/455/455
+f 446/446/446 445/445/445 459/459/459
+f 459/459/459 460/460/460 446/446/446
+f 450/450/450 449/449/449 461/461/461
+f 461/461/461 462/462/462 450/450/450
+f 454/454/454 453/453/453 463/463/463
+f 463/463/463 464/464/464 454/454/454
+f 458/458/458 457/457/457 465/465/465
+f 465/465/465 466/466/466 458/458/458
+f 460/460/460 459/459/459 467/467/467
+f 467/467/467 468/468/468 460/460/460
+f 462/462/462 461/461/461 469/469/469
+f 469/469/469 470/470/470 462/462/462
+f 464/464/464 463/463/463 471/471/471
+f 471/471/471 472/472/472 464/464/464
+f 466/466/466 465/465/465 473/473/473
+f 473/473/473 474/474/474 466/466/466
+f 468/468/468 467/467/467 475/475/475
+f 475/475/475 476/476/476 468/468/468
+f 470/470/470 469/469/469 477/477/477
+f 477/477/477 478/478/478 470/470/470
+f 472/472/472 471/471/471 479/479/479
+f 479/479/479 480/480/480 472/472/472
+f 474/474/474 473/473/473 481/481/481
+f 481/481/481 482/482/482 474/474/474
+f 476/476/476 475/475/475 483/483/483
+f 483/483/483 484/484/484 476/476/476
+f 478/478/478 477/477/477 485/485/485
+f 485/485/485 486/486/486 478/478/478
+f 480/480/480 479/479/479 487/487/487
+f 487/487/487 488/488/488 480/480/480
+f 482/482/482 481/481/481 489/489/489
+f 489/489/489 490/490/490 482/482/482
+f 491/491/491 492/492/492 493/493/493
+f 493/493/493 494/494/494 491/491/491
+f 495/495/495 496/496/496 497/497/497
+f 497/497/497 498/498/498 495/495/495
+f 499/499/499 500/500/500 501/501/501
+f 501/501/501 502/502/502 499/499/499
+f 503/503/503 504/504/504 505/505/505
+f 505/505/505 506/506/506 503/503/503
+f 430/430/430 429/429/429 507/507/507
+f 507/507/507 508/508/508 430/430/430
+f 434/434/434 433/433/433 509/509/509
+f 509/509/509 510/510/510 434/434/434
+f 438/438/438 437/437/437 511/511/511
+f 511/511/511 512/512/512 438/438/438
+f 442/442/442 441/441/441 513/513/513
+f 513/513/513 514/514/514 442/442/442
+f 508/508/508 507/507/507 515/515/515
+f 515/515/515 516/516/516 508/508/508
+f 510/510/510 509/509/509 517/517/517
+f 517/517/517 518/518/518 510/510/510
+f 512/512/512 511/511/511 519/519/519
+f 519/519/519 520/520/520 512/512/512
+f 514/514/514 513/513/513 521/521/521
+f 521/521/521 522/522/522 514/514/514
+f 516/516/516 515/515/515 523/523/523
+f 523/523/523 524/524/524 516/516/516
+f 518/518/518 517/517/517 525/525/525
+f 525/525/525 526/526/526 518/518/518
+f 520/520/520 519/519/519 527/527/527
+f 527/527/527 528/528/528 520/520/520
+f 522/522/522 521/521/521 529/529/529
+f 529/529/529 530/530/530 522/522/522
+f 531/531/531 532/532/532 533/533/533
+f 533/533/533 534/534/534 531/531/531
+f 535/535/535 536/536/536 537/537/537
+f 537/537/537 538/538/538 535/535/535
+f 539/539/539 540/540/540 541/541/541
+f 541/541/541 542/542/542 539/539/539
+f 543/543/543 544/544/544 545/545/545
+f 545/545/545 546/546/546 543/543/543
+f 547/547/547 548/548/548 549/549/549
+f 549/549/549 550/550/550 547/547/547
+f 551/551/551 552/552/552 553/553/553
+f 553/553/553 554/554/554 551/551/551
+f 555/555/555 556/556/556 557/557/557
+f 557/557/557 558/558/558 555/555/555
+f 559/559/559 560/560/560 561/561/561
+f 561/561/561 562/562/562 559/559/559
+f 563/563/563 564/564/564 565/565/565
+f 565/565/565 566/566/566 563/563/563
+f 567/567/567 568/568/568 569/569/569
+f 569/569/569 570/570/570 567/567/567
+f 571/571/571 572/572/572 573/573/573
+f 573/573/573 574/574/574 571/571/571
+f 575/575/575 571/571/571 574/574/574
+f 574/574/574 576/576/576 575/575/575
+f 577/577/577 575/575/575 576/576/576
+f 576/576/576 578/578/578 577/577/577
+f 579/579/579 577/577/577 578/578/578
+f 578/578/578 580/580/580 579/579/579
+f 581/581/581 579/579/579 580/580/580
+f 580/580/580 582/582/582 581/581/581
+f 583/583/583 581/581/581 582/582/582
+f 582/582/582 584/584/584 583/583/583
+f 585/585/585 583/583/583 584/584/584
+f 584/584/584 586/586/586 585/585/585
+f 587/587/587 585/585/585 586/586/586
+f 586/586/586 588/588/588 587/587/587
+f 589/589/589 587/587/587 588/588/588
+f 588/588/588 590/590/590 589/589/589
+f 572/572/572 589/589/589 590/590/590
+f 590/590/590 573/573/573 572/572/572
+f 591/591/591 592/592/592 572/572/572
+f 572/572/572 571/571/571 591/591/591
+f 593/593/593 591/591/591 571/571/571
+f 571/571/571 575/575/575 593/593/593
+f 594/594/594 593/593/593 575/575/575
+f 575/575/575 577/577/577 594/594/594
+f 595/595/595 594/594/594 577/577/577
+f 577/577/577 579/579/579 595/595/595
+f 596/596/596 595/595/595 579/579/579
+f 579/579/579 581/581/581 596/596/596
+f 597/597/597 596/596/596 581/581/581
+f 581/581/581 583/583/583 597/597/597
+f 598/598/598 597/597/597 583/583/583
+f 583/583/583 585/585/585 598/598/598
+f 599/599/599 598/598/598 585/585/585
+f 585/585/585 587/587/587 599/599/599
+f 600/600/600 599/599/599 587/587/587
+f 587/587/587 589/589/589 600/600/600
+f 592/592/592 600/600/600 589/589/589
+f 589/589/589 572/572/572 592/592/592
+f 601/601/601 602/602/602 603/603/603
+f 603/603/603 604/604/604 601/601/601
+f 605/605/605 606/606/606 607/607/607
+f 607/607/607 608/608/608 605/605/605
+f 609/609/609 610/610/610 611/611/611
+f 611/611/611 612/612/612 609/609/609
+f 613/613/613 614/614/614 615/615/615
+f 615/615/615 616/616/616 613/613/613
+f 617/617/617 618/618/618 619/619/619
+f 619/619/619 620/620/620 617/617/617
+f 621/621/621 622/622/622 623/623/623
+f 623/623/623 624/624/624 621/621/621
+f 625/625/625 626/626/626 627/627/627
+f 627/627/627 628/628/628 625/625/625
+f 629/629/629 630/630/630 631/631/631
+f 631/631/631 632/632/632 629/629/629
+f 633/633/633 634/634/634 635/635/635
+f 635/635/635 636/636/636 633/633/633
+f 637/637/637 638/638/638 639/639/639
+f 639/639/639 640/640/640 637/637/637
+f 641/641/641 642/642/642 643/643/643
+f 643/643/643 644/644/644 641/641/641
+f 645/645/645 646/646/646 647/647/647
+f 647/647/647 648/648/648 645/645/645
+f 649/649/649 650/650/650 651/651/651
+f 651/651/651 652/652/652 649/649/649
+f 653/653/653 654/654/654 655/655/655
+f 655/655/655 656/656/656 653/653/653
+f 657/657/657 658/658/658 659/659/659
+f 659/659/659 660/660/660 657/657/657
+f 661/661/661 662/662/662 663/663/663
+f 663/663/663 664/664/664 661/661/661
+f 665/665/665 666/666/666 667/667/667
+f 667/667/667 668/668/668 665/665/665
+f 669/669/669 670/670/670 671/671/671
+f 671/671/671 672/672/672 669/669/669
+f 673/673/673 674/674/674 675/675/675
+f 675/675/675 676/676/676 673/673/673
+f 677/677/677 678/678/678 679/679/679
+f 679/679/679 680/680/680 677/677/677
+f 681/681/681 682/682/682 683/683/683
+f 683/683/683 684/684/684 681/681/681
+f 685/685/685 686/686/686 687/687/687
+f 687/687/687 688/688/688 685/685/685
+f 689/689/689 690/690/690 691/691/691
+f 691/691/691 692/692/692 689/689/689
+f 693/693/693 694/694/694 695/695/695
+f 695/695/695 696/696/696 693/693/693
+f 697/697/697 698/698/698 699/699/699
+f 699/699/699 700/700/700 697/697/697
+f 701/701/701 702/702/702 703/703/703
+f 703/703/703 704/704/704 701/701/701
+f 705/705/705 706/706/706 707/707/707
+f 707/707/707 708/708/708 705/705/705
+f 709/709/709 710/710/710 711/711/711
+f 711/711/711 712/712/712 709/709/709
+f 713/713/713 714/714/714 715/715/715
+f 715/715/715 716/716/716 713/713/713
+f 717/717/717 718/718/718 719/719/719
+f 719/719/719 720/720/720 717/717/717
+f 721/721/721 722/722/722 723/723/723
+f 723/723/723 724/724/724 721/721/721
+f 725/725/725 726/726/726 727/727/727
+f 727/727/727 728/728/728 725/725/725
+f 729/729/729 730/730/730 731/731/731
+f 731/731/731 732/732/732 729/729/729
+f 733/733/733 734/734/734 735/735/735
+f 735/735/735 736/736/736 733/733/733
+f 737/737/737 738/738/738 739/739/739
+f 739/739/739 740/740/740 737/737/737
+f 741/741/741 742/742/742 743/743/743
+f 743/743/743 744/744/744 741/741/741
+f 745/745/745 746/746/746 747/747/747
+f 747/747/747 748/748/748 745/745/745
+f 749/749/749 750/750/750 751/751/751
+f 751/751/751 752/752/752 749/749/749
+f 753/753/753 754/754/754 755/755/755
+f 755/755/755 756/756/756 753/753/753
+f 757/757/757 758/758/758 759/759/759
+f 759/759/759 760/760/760 757/757/757
+f 761/761/761 762/762/762 763/763/763
+f 763/763/763 764/764/764 761/761/761
+f 765/765/765 766/766/766 767/767/767
+f 767/767/767 768/768/768 765/765/765
+f 769/769/769 770/770/770 771/771/771
+f 771/771/771 772/772/772 769/769/769
+f 773/773/773 774/774/774 775/775/775
+f 775/775/775 776/776/776 773/773/773
+f 777/777/777 778/778/778 779/779/779
+f 779/779/779 780/780/780 777/777/777
+f 781/781/781 782/782/782 783/783/783
+f 783/783/783 784/784/784 781/781/781
+f 785/785/785 786/786/786 787/787/787
+f 787/787/787 788/788/788 785/785/785
+f 789/789/789 790/790/790 791/791/791
+f 791/791/791 792/792/792 789/789/789
+f 793/793/793 794/794/794 795/795/795
+f 795/795/795 796/796/796 793/793/793
+f 797/797/797 798/798/798 799/799/799
+f 799/799/799 800/800/800 797/797/797
+f 801/801/801 802/802/802 803/803/803
+f 803/803/803 804/804/804 801/801/801
+f 805/805/805 806/806/806 807/807/807
+f 807/807/807 808/808/808 805/805/805
+f 809/809/809 810/810/810 811/811/811
+f 811/811/811 812/812/812 809/809/809
+f 813/813/813 814/814/814 815/815/815
+f 815/815/815 816/816/816 813/813/813
+f 817/817/817 818/818/818 819/819/819
+f 819/819/819 820/820/820 817/817/817
+f 821/821/821 822/822/822 823/823/823
+f 823/823/823 824/824/824 821/821/821
+f 825/825/825 826/826/826 827/827/827
+f 827/827/827 828/828/828 825/825/825
+f 829/829/829 830/830/830 831/831/831
+f 831/831/831 832/832/832 829/829/829
+f 833/833/833 834/834/834 835/835/835
+f 835/835/835 836/836/836 833/833/833
+f 837/837/837 838/838/838 839/839/839
+f 839/839/839 840/840/840 837/837/837
+f 841/841/841 842/842/842 843/843/843
+f 843/843/843 844/844/844 841/841/841
+f 845/845/845 846/846/846 847/847/847
+f 847/847/847 848/848/848 845/845/845
+f 849/849/849 850/850/850 851/851/851
+f 851/851/851 852/852/852 849/849/849
+f 853/853/853 854/854/854 855/855/855
+f 855/855/855 856/856/856 853/853/853
+f 857/857/857 858/858/858 859/859/859
+f 859/859/859 860/860/860 857/857/857
+f 861/861/861 862/862/862 863/863/863
+f 863/863/863 864/864/864 861/861/861
+f 865/865/865 866/866/866 867/867/867
+f 867/867/867 868/868/868 865/865/865
+f 869/869/869 870/870/870 871/871/871
+f 871/871/871 872/872/872 869/869/869
+f 873/873/873 874/874/874 875/875/875
+f 875/875/875 876/876/876 873/873/873
+f 877/877/877 878/878/878 879/879/879
+f 879/879/879 880/880/880 877/877/877
+f 881/881/881 882/882/882 883/883/883
+f 881/881/881 883/883/883 884/884/884
+f 885/885/885 881/881/881 884/884/884
+f 885/885/885 884/884/884 886/886/886
+f 887/887/887 885/885/885 886/886/886
+f 887/887/887 886/886/886 888/888/888
+f 889/889/889 887/887/887 888/888/888
+f 889/889/889 888/888/888 890/890/890
+f 891/891/891 889/889/889 890/890/890
+f 891/891/891 890/890/890 892/892/892
+f 893/893/893 891/891/891 892/892/892
+f 893/893/893 892/892/892 894/894/894
+f 895/895/895 893/893/893 894/894/894
+f 895/895/895 894/894/894 896/896/896
+f 897/897/897 895/895/895 896/896/896
+f 897/897/897 896/896/896 898/898/898
+f 899/899/899 900/900/900 901/901/901
+f 899/899/899 901/901/901 902/902/902
+f 882/882/882 899/899/899 902/902/902
+f 882/882/882 902/902/902 883/883/883
+f 903/903/903 904/904/904 882/882/882
+f 903/903/903 882/882/882 881/881/881
+f 905/905/905 903/903/903 881/881/881
+f 905/905/905 881/881/881 885/885/885
+f 906/906/906 905/905/905 885/885/885
+f 906/906/906 885/885/885 887/887/887
+f 907/907/907 906/906/906 887/887/887
+f 907/907/907 887/887/887 889/889/889
+f 908/908/908 907/907/907 889/889/889
+f 908/908/908 889/889/889 891/891/891
+f 909/909/909 908/908/908 891/891/891
+f 909/909/909 891/891/891 893/893/893
+f 910/910/910 909/909/909 893/893/893
+f 910/910/910 893/893/893 895/895/895
+f 911/911/911 910/910/910 895/895/895
+f 911/911/911 895/895/895 897/897/897
+f 912/912/912 913/913/913 900/900/900
+f 912/912/912 900/900/900 899/899/899
+f 904/904/904 912/912/912 899/899/899
+f 904/904/904 899/899/899 882/882/882
+f 914/914/914 915/915/915 904/904/904
+f 914/914/914 904/904/904 903/903/903
+f 916/916/916 914/914/914 903/903/903
+f 916/916/916 903/903/903 905/905/905
+f 917/917/917 916/916/916 905/905/905
+f 917/917/917 905/905/905 906/906/906
+f 918/918/918 917/917/917 906/906/906
+f 918/918/918 906/906/906 907/907/907
+f 919/919/919 918/918/918 907/907/907
+f 919/919/919 907/907/907 908/908/908
+f 920/920/920 919/919/919 908/908/908
+f 920/920/920 908/908/908 909/909/909
+f 921/921/921 920/920/920 909/909/909
+f 921/921/921 909/909/909 910/910/910
+f 922/922/922 921/921/921 910/910/910
+f 922/922/922 910/910/910 911/911/911
+f 923/923/923 924/924/924 913/913/913
+f 923/923/923 913/913/913 912/912/912
+f 915/915/915 923/923/923 912/912/912
+f 915/915/915 912/912/912 904/904/904
+f 925/925/925 926/926/926 915/915/915
+f 925/925/925 915/915/915 914/914/914
+f 927/927/927 925/925/925 914/914/914
+f 927/927/927 914/914/914 916/916/916
+f 928/928/928 927/927/927 916/916/916
+f 928/928/928 916/916/916 917/917/917
+f 929/929/929 928/928/928 917/917/917
+f 929/929/929 917/917/917 918/918/918
+f 930/930/930 929/929/929 918/918/918
+f 930/930/930 918/918/918 919/919/919
+f 931/931/931 930/930/930 919/919/919
+f 931/931/931 919/919/919 920/920/920
+f 932/932/932 931/931/931 920/920/920
+f 932/932/932 920/920/920 921/921/921
+f 933/933/933 932/932/932 921/921/921
+f 933/933/933 921/921/921 922/922/922
+f 934/934/934 935/935/935 924/924/924
+f 934/934/934 924/924/924 923/923/923
+f 926/926/926 934/934/934 923/923/923
+f 926/926/926 923/923/923 915/915/915
+f 936/936/936 937/937/937 926/926/926
+f 936/936/936 926/926/926 925/925/925
+f 938/938/938 936/936/936 925/925/925
+f 938/938/938 925/925/925 927/927/927
+f 939/939/939 938/938/938 927/927/927
+f 939/939/939 927/927/927 928/928/928
+f 940/940/940 939/939/939 928/928/928
+f 940/940/940 928/928/928 929/929/929
+f 941/941/941 940/940/940 929/929/929
+f 941/941/941 929/929/929 930/930/930
+f 942/942/942 941/941/941 930/930/930
+f 942/942/942 930/930/930 931/931/931
+f 943/943/943 942/942/942 931/931/931
+f 943/943/943 931/931/931 932/932/932
+f 944/944/944 943/943/943 932/932/932
+f 944/944/944 932/932/932 933/933/933
+f 945/945/945 946/946/946 935/935/935
+f 945/945/945 935/935/935 934/934/934
+f 937/937/937 945/945/945 934/934/934
+f 937/937/937 934/934/934 926/926/926
diff --git a/Code/Physics/Bullet Source/heightfield128x128.raw b/Code/Physics/Bullet Source/heightfield128x128.raw
new file mode 100644
index 00000000..21656bb4
--- /dev/null
+++ b/Code/Physics/Bullet Source/heightfield128x128.raw
@@ -0,0 +1,37 @@
+}u]OYQC=104?KNXo~tmqvȿu`V_cV;4102238CFIO[go}Ͽr`]]Y]]QD=5+!"+5FE=968AAK]irn|̵vy|weYSSE:,-6@IFPfyyifjrži\TceS8-%#&%.G^s˹vqttsh\ZTLC;49DIRSF>52449:?Jex̻ytuxiYOC?KORm|xzlWJSljWB/#',162-6CVl|ʰohlocQG;8?FROD=2284**:Lgt}|xȳk^UMN_km}jULPb`T>% %(('(,5DP\qҼ}qTF8.0;6,+'""(-,,0:F@>AGO]oþ}jP;,%! +:ALLKOU^krrys~ϼmXXdg^Q[R>6329CE6*+*+)(#"!##'-5>IONHBGQjʼȾyiM6(## +?NfzucC+#$$!%4CGFFO`kmgdduϻ̲yhWRORM:76(""$!&"!# %/1389DNQTLA>AWoqiW?+$%##$).?HEFNehffebs̼ħiWMOIA.&$ &-49?>CVbZPE=AGO^aghkmpxz|rou˷qO;20*#
+ (2?GP_noi_XZ]nvrxÿrk]L9##(.:@BIU[^qsmipwz~}vot~ǺŵmG0*# #+6DIRciid^bgqzvxɳyi]RE-#,9CJJLTVZmppt~yyxrjir}~^C2!
##(+07ARac\^cnzֽxl`RJ6 +1@GF;7:DLT[kpnpsund]cjl~~wtoh|vqeG*
+&8;1,/;JP[jqpt˰rWHD7&#.78;=@B>658DIJY[dqpfhd^f`_itikopvc^ZM;#
%4:979?O]`fnq}ҿ~mVLF9.-16>?CFDDLKE?7:@BNRWa`emk^bZXYpvupjgi|xzmabaTJE=9#
+
+
+
(4<7GJJJKGFQSPD9?CGAIS]`jo_URMRVattpefjuxw~yxx}|vshVLNPIA?=9$
"6B=AKRY^gqxĪͿ|ptnSA8;DMTY^\TTU[[ZM=DLOKV_a^bZQECIMONZuwhgddnplqwpqt{ypj\KFA?:59;6$%$)39?JTYVX^enҿulnoYD64AO\gkhc]cjoiYDDNTZ^__QKHF<;AJNJ\jri]cjjpjaikhemxsujRBB=5-,.8>,!#-2/*+-10$".03AKNPKOY]gdz²qimf]O?:HWdrvumkqolkXJOUWa[U[JFC>::=IEGXeqnhqmntrfc[XTYelniPG<91*,*387+%2<;5234981)#!!,206CONE?ALQ\vҿ»posj]QHKbsz~xwvm^RXZ^`ROOJG@56AEFVbmbNB:81)*146>9++.-2DD96424:9872.-398?MXP>9?BGZu²»uorj^SVbt}g][\fc[YRPOE13;ENT]\Q?6;=1)-;MUO@:@IVXX]VL=4435Nqƾyokegyvwwtx~sab^\e]bf_[ZaT\fn{xok]Q(5:FVWSRNSOMDCJSSQOWU[ZZQKGFD83@QPOJEOV]Z`\QA620.0Gi}{|qnkh_[ffbWQ\bifhnha_ZM$+8BCMW[TSWSLEJRVQUW]akaVXURQRJAJURONNVX\Y^bT@3322;Ni}ƻ~{~xkZ^hf^XWcwp``]YTPUQ27?EJU\[W\``ZNNV_]`ceim__gjii`_XW]^XWZ``_^YXUOEFB=KZiux}}y{ʮ}}zmph^^foth[PPNNUP?DIO]e`aefjjhZLO]kmoljgkty~xg`bfb_cec]YJGIKKPMCJ^ikilifpv|qg^grvyw]IELYRRHHS[ipfquntmncRJYjqrslfvoefjc_bXJA866J[nqk\R[gvldXKRS]s{u~njffkzugSJRW\aklkw|wjfkhWE8,""''-3006849BR`a`[RQ_wy~ʸľ|mdSJFUm}||wyx\hql]MAFGQX\]ktƽ}qjcSFC1#"" "$+1.48604CNRRQPOZr~njv̽Ʒm\NN^n{{|}T^{zoreUIA=FMOTguż|nbRLH6" $+-475106;@?@EHWnwqgpøɽw\RS`r|~y`ezzynm`OFCIJJP`|ŴscUTL<,$"#,104;;6:;9;>@EC?Fȱxme\O<7119?6.+))*,.009KZ``fmvzux{}wqzxp_XbYI:;@@:<:;BD?<~uz~ɬyhYJA;3/2>@6.*'&$%*.2>S`dcer{xvzwux{gd^WZUL>?>CDEEB@AA9qq{yy~̸vdQ@84--8>;4,(%! '/8CTiupmq|~rpptzȾzkXITVXOJ?DBKMNOMC?=9xs}xy̻ycG9/(#(7B:1,&$#(08GVkoefo~{xgWE:DPUQMFEEOSSXVNGCEy|ʰzb=.*%&&2B=53/+*1:FWgzvgeuĽvk]O>92/))&2DF;;;717BOd}~xnm|xbXVJCDGPZUUZPLS]^PDKNX³DzsWG;63-('7LM;48>:=IVlyqr|ɶw^SRRMKV][TZfeZWYXLELRXƾ̿v\G=772.+-:NN=36>=>N`xôvlou{÷м}m_QLQ[^hifbgnvhZUTQOUYZǹZG:5350002>OQLDABDJ^uŷ|vsqrxҺ~l\YRKOcpmhnqr{yhYXYTY\`dú~u|ƿŭkJ<5-)'&-6=EOVWOOSY_uĶ}{xyunrõyeRVVPSjwnfnw||l^aZRVXjoöyosŻxXD0+%!+@JLT[]YY]ir÷vrtxwrr}~o]U^XZhx~~ywz}ug_PNMUqp·}utukP>,$$.=LYbfijiqxpkktvv{}|wnof]UZc^dv{zn^QGIPWmp}ȿnUE4&)29J_hgmvųm]^iqmhu{uw{scRR]glhemxt]JDCIU_pjƾƿvcVE/+18FU_gmw~iRP]d\S_prtolpw~iTXiqsne`tshmdKDJ[mwrou~}}ƽÿ}ujY8))127?CTdjyqP<9<=91>Ykkgehec`]Y]hs~~~|pkcflhjwworz}zl^QB8458DZq}|]e}mp|ù}uthJ3.9<>FLSafwa=./121.9Sbfb\ROWXPIK[jdcgqxvsutttupeYWeeswwtoi]IJFA86F_r{VWrn\`lxºúnX?6>AAJW]en\>005534:@NZXQFHNNGA=?@K[msxqTF=::720/081+-.17>>843-!#)./.489@CJTSJGWksx||we\TPLUYZ\dBSdokO:=EVn}|{{mdcgkxqmp|wbPLIGS^femzvyvbXOCFA96240**+&$$$" *50/4BVZVUer|o`RIGIPZ]d?LVcy~|p\JAKXm}}~teXQPU^ZVYcw}m`YTV[\`]aq{vutu}}viXMGD>9><60%#./'-?TZ]_miVGD@@IY]`=JUanfkgdUCHRcuyuhXODEHGKLPSas}rkjddkigc^eywmc\iv|qhWKJKH@EB8/' '+$*CX\`jtü}pjm^F?<8;DTYa;FVaaW\dcTLFMYn|zhXLKIIB74>ISYb:AO[STU\^[YOVZo|~uobMAEPO=8@FHJHLYnyzy{ofgoxxpjt}~|xtssn`ZYY\\]WKH7(#!%!!'-/:BMZahvv~÷skgXWKD<7DKP]b>GGKGMMN[`aac`s}th]M>CKH?7=C=;9BPe{zpfgv|tf^_c_VX^cc\TKF8'"""%%(*/-*+00=>CKZdchhcy}zk[SJFC?>9:?64;CVk}umspmaTSW[Z[bbdcYQG8*'.+" !(*+.320/17>@FQ]fibY^lx~yaMITYVMSQLORd~AGC?<;FSbjiidj{vi^YMD>;713/0:I_oyuxsiYLINZbhrqkig_SH;8;40.(,63684028DLNPbmmmjajigjzcPOPPKGKKGJPnGEC<;HV_bdmg[hwuy|riXL@7,'&$'7N`l{|tudYOKNVanz|sppgVLOKHE=2,349?>:?AFHHSq}nnxz{tkk{qhYRNJDGGH??>GZ_aclmaR[_yw}~ri_N=/%! 2Ofovz}yk\XVURYbm{}}saY_\WUN>114;HPKLFEDJ[x}wzzywuwmlbPONRPMI;5Fhy;:=GVacelqdWMNPc}vleX@8/+ -Gemn~~t_W\_Z`l{yrkhge_WL?8?N][VgyzymZL7*" !)4IVfklsöxl[LKRfyywsivuyxh\WYahozgeffkgkoa\2-'!#)/9JYddt|ndcikfleVB,$ $')0=CIFET^USNC:31.--.4@JXk{||z{ķ{phqkbbuynrttt}}|~E7$""$,@IIBBD=756:AJNIJFMJG:)**%&/7>E]t~{|vm`aeahs{y~qnowE4'*(!&6<91.30/*./6=IFC?DJJA,++''+37A]t|vxyzŲ|pdYV`[gr}igiouG=73.)$#'(--&&'&'#(*/0?AA@@FF?2*+&&)08Harvru|~j\TT[\cn~ydZZ^bpSOK=1/+#'('$#!")-/:>=?A=5,,++2>KXkzyu|ucWSMP\fpuldVTWT`v˻bZYE3.,*)+'&.0575=CE=?935;CM\bm{vmrypmtį}nd^ROXes}kbZSQTYVjſiZZI50,*&!(,.*-;ORPUNLFO]gvxukpqljmwyropxðviddV\ev{h_XOPQZ]mzaMMD<3,# #%!!3R___abcmx~xozypgdilc]_i~{nii`[Zfn^\QKNW\juQFA<9/#
.MZVWcl~y{ue[Z]^[[jxûsod_SN]nv|unbTMDANZcyI;2+*#
+,GOLTjvhXQRVYiw{ʺulibZMEMR^a_bd[OIEN]qF5.#
+
!(2AJQ`ɾwdQNMRery|yzʽqg]VTJ<=HNKMM[_TPLPcs>.'"+6>FOXpür_TJGR_hnw~z}jb[OHE96=?B?=FQOQQVlw7-",4>LMZl˿}viUMHADTejmpxv}ǻeSNMA=?<>657732@KNXan+%
+!19AJQaƿĵwpaWPJA9AQWQQ\\dqztkv̼xviP?><>=@@E:31.+.8CMUbw&
+,7@IHUjһyfjcQIG>6>HE@AEFM[b]Zi~wiYH:143AJEBE?761/*1>IW_w'
+
+
+ (1BQRWg}Կxfh`NE?:8?BA<:417?BKPZxpnuoieSC7,+3>EKLH><;2/++=Q[fu- "&/@Wdhl}ĬqmeXLC:68=><4*$''&1DWozrodXVWUXZSH;,,55:LYQCA?520-DZbk6"
+ $*3IWfx{|ǵ{weO?2.2675*$7Rlxk[W]VNH??C@??1)'.38EVSCA93-.3G`rxE2&
$0;GVi}~ͻrbPD7.,**)#+BUezufZIAIK?407=967*!$(-9M^VI;,'$,9TuĵT?,$+.2?MQ^vz̺ocVC0),*'!-9MgvzjdhaK?<=?6,&+145+ (09N]UH8+%%(6_{ƶSE1!"-:?CCGX]es¸|q_L-.,+
%C?90+)),*#!%03<;1+++5=QbzMIA75/*"$)0>SZcbcl}Ÿȿ|aUE0)+( #$#030+,24ALG?1('''%"#24/2/+(*=HXhMPK><13+#*)2>TchinmxѾj`WJ7+**" #*%&3>BGH:+# "" #/44752.19CKbw»ƹV^WKDAE=//2>N`heiokzƸh^XOB-" $#&/69591%#)8>=54;824AXf{˽dpi^PSWG:8@ESdnlmwuvƹ||z{yaNORI3%"
+&*0+,)%$139BLJC@67CKTRhflom`geRBHMX`jjmou~|Ķ}|~xgTGIJA2)#
+
+ $# "!!%(# (2=BDKNH=;=MSWM[wiqyyvxp`[XV[gmkmuz{~y^L=::62)
(*1,''5DLHDF?>6ANW^SXksuzyy|yf^Xgkilx}~kU:/10/&
+
+%0857;=LLFAD@A?LX_c]]i~u~wv{|}gb_hignq{kR:*+23%
&09>EPOUTL?ABHKVfkgcdnirgkt{zqngs}zqUE30