Merged changes in the trunk up to revision 29409.
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>
Fri, 11 Jun 2010 17:17:02 +0000 (17:17 +0000)
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>
Fri, 11 Jun 2010 17:17:02 +0000 (17:17 +0000)
323 files changed:
CMake/macros.cmake
CMakeLists.txt
SConstruct
config/aix4-config.py
config/linuxcross-config.py
config/win32-mingw-config.py
config/win32-vc-config.py
config/win64-vc-config.py
doc/blender.1 [new file with mode: 0644]
intern/string/STR_String.h
release/scripts/io/engine_render_pov.py
release/scripts/io/export_fbx.py
release/scripts/modules/add_object_utils.py
release/scripts/modules/bpy/utils.py
release/scripts/modules/bpy_types.py
release/scripts/op/console_python.py
release/scripts/op/object.py
release/scripts/op/sequencer.py
release/scripts/op/uv.py
release/scripts/op/wm.py
release/scripts/ui/properties_data_modifier.py
release/scripts/ui/properties_game.py
release/scripts/ui/properties_object_constraint.py
release/scripts/ui/properties_physics_smoke.py
release/scripts/ui/properties_render.py
release/scripts/ui/space_info.py
release/scripts/ui/space_logic.py
release/scripts/ui/space_node.py
release/scripts/ui/space_sequencer.py
release/scripts/ui/space_text.py
release/scripts/ui/space_userpref.py
release/scripts/ui/space_view3d.py
source/blender/blenkernel/BKE_multires.h
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/cdderivedmesh.c
source/blender/blenkernel/intern/image.c
source/blender/blenkernel/intern/multires.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/shrinkwrap.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/text.c
source/blender/blenlib/BLI_fileops.h
source/blender/blenlib/BLI_path_util.h
source/blender/blenlib/intern/bpath.c
source/blender/blenlib/intern/fileops.c
source/blender/blenlib/intern/path_util.c
source/blender/blenloader/intern/readfile.c
source/blender/collada/DocumentExporter.cpp
source/blender/collada/DocumentExporter.h
source/blender/collada/DocumentImporter.cpp
source/blender/collada/DocumentImporter.h
source/blender/collada/SConscript
source/blender/collada/collada.cpp
source/blender/collada/collada.h
source/blender/collada/collada_internal.h
source/blender/editors/CMakeLists.txt
source/blender/editors/animation/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/animation/keyframing.c
source/blender/editors/armature/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/curve/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/curve/editcurve.c
source/blender/editors/curve/editfont.c
source/blender/editors/datafiles/B.blend.c
source/blender/editors/datafiles/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/gpencil/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/include/ED_object.h
source/blender/editors/include/ED_view3d.h
source/blender/editors/interface/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/interface/interface_panel.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/interface/view2d_ops.c
source/blender/editors/mesh/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/mesh/editmesh.c
source/blender/editors/mesh/editmesh_add.c
source/blender/editors/metaball/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/object/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/object/object_add.c
source/blender/editors/object/object_constraint.c
source/blender/editors/object/object_edit.c
source/blender/editors/object/object_intern.h
source/blender/editors/object/object_modifier.c
source/blender/editors/object/object_ops.c
source/blender/editors/object/object_relations.c
source/blender/editors/object/object_transform.c
source/blender/editors/object/object_vgroup.c
source/blender/editors/physics/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/physics/physics_fluid.c
source/blender/editors/render/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/render/render_shading.c
source/blender/editors/screen/CMakeLists.txt
source/blender/editors/screen/SConscript
source/blender/editors/screen/area.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/screen/screendump.c
source/blender/editors/sculpt_paint/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/sound/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/sound/SConscript
source/blender/editors/sound/sound_ops.c
source/blender/editors/space_action/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_api/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_api/SConscript
source/blender/editors/space_buttons/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_buttons/SConscript
source/blender/editors/space_buttons/buttons_ops.c
source/blender/editors/space_console/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_console/space_console.c
source/blender/editors/space_file/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_graph/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_graph/graph_edit.c
source/blender/editors/space_image/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_image/image_ops.c
source/blender/editors/space_info/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_info/SConscript
source/blender/editors/space_info/info_ops.c
source/blender/editors/space_logic/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_nla/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_node/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_node/node_edit.c
source/blender/editors/space_node/node_intern.h
source/blender/editors/space_node/node_ops.c
source/blender/editors/space_node/node_state.c
source/blender/editors/space_outliner/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_outliner/outliner.c
source/blender/editors/space_script/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_script/script_edit.c
source/blender/editors/space_script/space_script.c
source/blender/editors/space_sequencer/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_sequencer/sequencer_add.c
source/blender/editors/space_sequencer/sequencer_draw.c
source/blender/editors/space_sound/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_text/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_text/space_text.c
source/blender/editors/space_text/text_draw.c
source/blender/editors/space_text/text_ops.c
source/blender/editors/space_time/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_userpref/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_userpref/SConscript
source/blender/editors/space_view3d/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_header.c
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/editors/transform/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/transform/transform_ops.c
source/blender/editors/util/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/uvedit/CMakeLists.txt [new file with mode: 0644]
source/blender/imbuf/intern/thumbs_blend.c
source/blender/makesdna/DNA_scene_types.h
source/blender/makesrna/RNA_types.h
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_curve.c
source/blender/makesrna/intern/rna_image.c
source/blender/makesrna/intern/rna_image_api.c
source/blender/makesrna/intern/rna_internal.h
source/blender/makesrna/intern/rna_modifier.c
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_object.c
source/blender/makesrna/intern/rna_object_api.c
source/blender/makesrna/intern/rna_particle.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_sequencer.c
source/blender/makesrna/intern/rna_sound.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_text.c
source/blender/makesrna/intern/rna_wm.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_solidify.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/python/doc/sphinx_doc_gen.py
source/blender/python/generic/bpy_internal_import.c
source/blender/python/intern/bpy.c
source/blender/python/intern/bpy_props.c
source/blender/python/intern/bpy_props.h
source/blender/python/intern/bpy_rna.c
source/blender/windowmanager/WM_api.h
source/blender/windowmanager/intern/wm_event_system.c
source/blender/windowmanager/intern/wm_jobs.c
source/blender/windowmanager/intern/wm_operators.c
source/creator/CMakeLists.txt
source/creator/creator.c
source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
source/gameengine/BlenderRoutines/KX_BlenderCanvas.h
source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h
source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h
source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h
source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
source/gameengine/BlenderRoutines/KX_BlenderSystem.h
source/gameengine/Converter/BL_DeformableGameObject.h
source/gameengine/Converter/BL_MeshDeformer.h
source/gameengine/Converter/BL_ModifierDeformer.h
source/gameengine/Converter/BL_ShapeDeformer.h
source/gameengine/Converter/BL_SkinDeformer.h
source/gameengine/Converter/BlenderWorldInfo.h
source/gameengine/Converter/KX_BlenderScalarInterpolator.h
source/gameengine/Converter/KX_BlenderSceneConverter.cpp
source/gameengine/Converter/KX_BlenderSceneConverter.h
source/gameengine/Converter/KX_SoftBodyDeformer.h
source/gameengine/Expressions/BoolValue.h
source/gameengine/Expressions/ConstExpr.h
source/gameengine/Expressions/EmptyValue.h
source/gameengine/Expressions/ErrorValue.h
source/gameengine/Expressions/Expression.h
source/gameengine/Expressions/FloatValue.h
source/gameengine/Expressions/IdentifierExpr.h
source/gameengine/Expressions/IfExpr.h
source/gameengine/Expressions/InputParser.h
source/gameengine/Expressions/IntValue.h
source/gameengine/Expressions/KX_HashedPtr.h
source/gameengine/Expressions/Operator1Expr.h
source/gameengine/Expressions/Operator2Expr.h
source/gameengine/Expressions/PyObjectPlus.h
source/gameengine/Expressions/StringValue.h
source/gameengine/Expressions/Value.h
source/gameengine/Expressions/VectorValue.h
source/gameengine/Expressions/VoidValue.h
source/gameengine/GameLogic/SCA_ActuatorEventManager.h
source/gameengine/GameLogic/SCA_AlwaysEventManager.h
source/gameengine/GameLogic/SCA_BasicEventManager.h
source/gameengine/GameLogic/SCA_EventManager.h
source/gameengine/GameLogic/SCA_ExpressionController.h
source/gameengine/GameLogic/SCA_IActuator.h
source/gameengine/GameLogic/SCA_IInputDevice.h
source/gameengine/GameLogic/SCA_IScene.h
source/gameengine/GameLogic/SCA_JoystickManager.h
source/gameengine/GameLogic/SCA_KeyboardManager.h
source/gameengine/GameLogic/SCA_LogicManager.h
source/gameengine/GameLogic/SCA_MouseManager.h
source/gameengine/GameLogic/SCA_PropertyEventManager.h
source/gameengine/GameLogic/SCA_PythonMouse.cpp
source/gameengine/GameLogic/SCA_RandomEventManager.h
source/gameengine/GameLogic/SCA_RandomNumberGenerator.h
source/gameengine/GameLogic/SCA_TimeEventManager.h
source/gameengine/Ketsji/BL_BlenderShader.h
source/gameengine/Ketsji/BL_Material.h
source/gameengine/Ketsji/BL_Shader.h
source/gameengine/Ketsji/BL_Texture.h
source/gameengine/Ketsji/KX_BulletPhysicsController.h
source/gameengine/Ketsji/KX_CameraIpoSGController.h
source/gameengine/Ketsji/KX_ClientObjectInfo.h
source/gameengine/Ketsji/KX_Dome.h
source/gameengine/Ketsji/KX_EmptyObject.h
source/gameengine/Ketsji/KX_IInterpolator.h
source/gameengine/Ketsji/KX_IPO_SGController.h
source/gameengine/Ketsji/KX_IPhysicsController.h
source/gameengine/Ketsji/KX_IScalarInterpolator.h
source/gameengine/Ketsji/KX_ISceneConverter.h
source/gameengine/Ketsji/KX_ISystem.h
source/gameengine/Ketsji/KX_KetsjiEngine.h
source/gameengine/Ketsji/KX_LightIpoSGController.h
source/gameengine/Ketsji/KX_MaterialIpoController.h
source/gameengine/Ketsji/KX_MotionState.h
source/gameengine/Ketsji/KX_ObColorIpoSGController.h
source/gameengine/Ketsji/KX_OrientationInterpolator.h
source/gameengine/Ketsji/KX_PolygonMaterial.cpp
source/gameengine/Ketsji/KX_PolygonMaterial.h
source/gameengine/Ketsji/KX_PositionInterpolator.h
source/gameengine/Ketsji/KX_PythonInit.cpp
source/gameengine/Ketsji/KX_RayCast.h
source/gameengine/Ketsji/KX_RayEventManager.h
source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h
source/gameengine/Ketsji/KX_SG_NodeRelationships.h
source/gameengine/Ketsji/KX_ScalarInterpolator.h
source/gameengine/Ketsji/KX_ScalingInterpolator.h
source/gameengine/Ketsji/KX_Scene.h
source/gameengine/Ketsji/KX_TimeCategoryLogger.h
source/gameengine/Ketsji/KX_TimeLogger.h
source/gameengine/Ketsji/KX_TouchEventManager.h
source/gameengine/Ketsji/KX_WorldInfo.h
source/gameengine/Ketsji/KX_WorldIpoController.h
source/gameengine/Network/LoopBackNetwork/NG_LoopBackNetworkDeviceInterface.cpp
source/gameengine/Network/LoopBackNetwork/NG_LoopBackNetworkDeviceInterface.h
source/gameengine/Network/NG_NetworkDeviceInterface.h
source/gameengine/Network/NG_NetworkMessage.h
source/gameengine/Network/NG_NetworkObject.h
source/gameengine/Network/NG_NetworkScene.h
source/gameengine/Network/TerraplayNetwork/NG_TerraplayNetworkDeviceInterface.h
source/gameengine/Physics/Bullet/CcdGraphicController.h
source/gameengine/Physics/Bullet/CcdPhysicsController.h
source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
source/gameengine/Physics/common/PHY_IController.h
source/gameengine/Physics/common/PHY_IGraphicController.h
source/gameengine/Physics/common/PHY_IMotionState.h
source/gameengine/Physics/common/PHY_IPhysicsController.h
source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
source/gameengine/Physics/common/PHY_IVehicle.h
source/gameengine/PyDoc/bge.events.rst
source/gameengine/PyDoc/bge.logic.rst
source/gameengine/PyDoc/bge.types.rst
source/gameengine/Rasterizer/RAS_2DFilterManager.h
source/gameengine/Rasterizer/RAS_BucketManager.h
source/gameengine/Rasterizer/RAS_Deformer.h
source/gameengine/Rasterizer/RAS_FramingManager.h
source/gameengine/Rasterizer/RAS_ICanvas.h
source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
source/gameengine/Rasterizer/RAS_IRasterizer.h
source/gameengine/Rasterizer/RAS_IRenderTools.h
source/gameengine/Rasterizer/RAS_MaterialBucket.h
source/gameengine/Rasterizer/RAS_MeshObject.h
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.h
source/gameengine/Rasterizer/RAS_Polygon.h
source/gameengine/Rasterizer/RAS_Rect.h
source/gameengine/Rasterizer/RAS_TexVert.h
source/gameengine/SceneGraph/SG_BBox.h
source/gameengine/SceneGraph/SG_Controller.h
source/gameengine/SceneGraph/SG_DList.h
source/gameengine/SceneGraph/SG_IObject.h
source/gameengine/SceneGraph/SG_Node.h
source/gameengine/SceneGraph/SG_ParentRelation.h
source/gameengine/SceneGraph/SG_QList.h
source/gameengine/SceneGraph/SG_Spatial.h
source/gameengine/SceneGraph/SG_Tree.h
source/gameengine/VideoTexture/ImageBase.cpp
source/gameengine/VideoTexture/VideoFFmpeg.cpp
tools/Blender.py

index 54b14dbd5ce4e0efff485b2d097ea101fd8b8737..914547e168e351228ea5de8b33b4fb1b5128ec8b 100644 (file)
 MACRO(BLENDERLIB_NOLIST
-  name
-  sources
-  includes)
-
-  # Gather all headers
-  FILE(GLOB_RECURSE INC_ALL *.h)
-     
-  INCLUDE_DIRECTORIES(${includes})
-  ADD_LIBRARY(${name} ${INC_ALL} ${sources})
-
-  # Group by location on disk
-  SOURCE_GROUP(Files FILES CMakeLists.txt)
-  SET(ALL_FILES ${sources} ${INC_ALL})
-  FOREACH(SRC ${ALL_FILES})
-    STRING(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR} "Files" REL_DIR "${SRC}")
-    STRING(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" REL_DIR "${REL_DIR}")
-    STRING(REGEX REPLACE "^[\\\\/]" "" REL_DIR "${REL_DIR}")
-    IF(REL_DIR)
-      SOURCE_GROUP(${REL_DIR} FILES ${SRC})
-    ELSE(REL_DIR)
-      SOURCE_GROUP(Files FILES ${SRC})
-    ENDIF(REL_DIR)
-  ENDFOREACH(SRC)
-
-  MESSAGE(STATUS "Configuring library ${name}")
+       name
+       sources
+       includes)
+
+       # Gather all headers
+       FILE(GLOB_RECURSE INC_ALL *.h)
+                
+       INCLUDE_DIRECTORIES(${includes})
+       ADD_LIBRARY(${name} ${INC_ALL} ${sources})
+
+       # Group by location on disk
+       SOURCE_GROUP(Files FILES CMakeLists.txt)
+       SET(ALL_FILES ${sources} ${INC_ALL})
+       FOREACH(SRC ${ALL_FILES})
+               STRING(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR} "Files" REL_DIR "${SRC}")
+               STRING(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" REL_DIR "${REL_DIR}")
+               STRING(REGEX REPLACE "^[\\\\/]" "" REL_DIR "${REL_DIR}")
+               IF(REL_DIR)
+                       SOURCE_GROUP(${REL_DIR} FILES ${SRC})
+               ELSE(REL_DIR)
+                       SOURCE_GROUP(Files FILES ${SRC})
+               ENDIF(REL_DIR)
+       ENDFOREACH(SRC)
+
+       MESSAGE(STATUS "Configuring library ${name}")
 ENDMACRO(BLENDERLIB_NOLIST)
 
 MACRO(BLENDERLIB
-  name
-  sources
-  includes)
+       name
+       sources
+       includes)
 
-  BLENDERLIB_NOLIST(${name} "${sources}" "${includes}")
+       BLENDERLIB_NOLIST(${name} "${sources}" "${includes}")
 
-  # Add to blender's list of libraries
-  FILE(APPEND ${CMAKE_BINARY_DIR}/cmake_blender_libs.txt "${name};")
+       # Add to blender's list of libraries
+       FILE(APPEND ${CMAKE_BINARY_DIR}/cmake_blender_libs.txt "${name};")
 ENDMACRO(BLENDERLIB)
 
 MACRO(SETUP_LIBDIRS)
-  # see "cmake --help-policy CMP0003"
-  if(COMMAND cmake_policy)
-    CMAKE_POLICY(SET CMP0003 NEW)
-  endif(COMMAND cmake_policy)
-  
-  LINK_DIRECTORIES(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH} ${LIBSAMPLERATE_LIBPATH})
-  
-  IF(WITH_PYTHON)
-    LINK_DIRECTORIES(${PYTHON_LIBPATH})
-  ENDIF(WITH_PYTHON)
-  IF(WITH_INTERNATIONAL)
-    LINK_DIRECTORIES(${ICONV_LIBPATH})
-    LINK_DIRECTORIES(${GETTEXT_LIBPATH})
-  ENDIF(WITH_INTERNATIONAL)
-  IF(WITH_SDL)
-    LINK_DIRECTORIES(${SDL_LIBPATH})
-  ENDIF(WITH_SDL)
-  IF(WITH_FFMPEG)
-    LINK_DIRECTORIES(${FFMPEG_LIBPATH})
-  ENDIF(WITH_FFMPEG)
-  IF(WITH_OPENEXR)
-    LINK_DIRECTORIES(${OPENEXR_LIBPATH})
-  ENDIF(WITH_OPENEXR)
-  IF(WITH_TIFF)
-    LINK_DIRECTORIES(${TIFF_LIBPATH})
-  ENDIF(WITH_TIFF)
-  IF(WITH_QUICKTIME)
-    LINK_DIRECTORIES(${QUICKTIME_LIBPATH})
-  ENDIF(WITH_QUICKTIME)
-  IF(WITH_OPENAL)
-    LINK_DIRECTORIES(${OPENAL_LIBPATH})
-  ENDIF(WITH_OPENAL)
-  IF(WITH_JACK)
-    LINK_DIRECTORIES(${JACK_LIBPATH})
-  ENDIF(WITH_JACK)
-  IF(WITH_SNDFILE)
-    LINK_DIRECTORIES(${SNDFILE_LIBPATH})
-  ENDIF(WITH_SNDFILE)
-  IF(WITH_FFTW3)
-    LINK_DIRECTORIES(${FFTW3_LIBPATH})
-  ENDIF(WITH_FFTW3)
-  IF(WITH_OPENCOLLADA)
-    LINK_DIRECTORIES(${OPENCOLLADA_LIBPATH})
-    LINK_DIRECTORIES(${PCRE_LIBPATH})
-    LINK_DIRECTORIES(${EXPAT_LIBPATH})
-  ENDIF(WITH_OPENCOLLADA)
-
-  IF(WIN32)
-    LINK_DIRECTORIES(${PTHREADS_LIBPATH})
-  ENDIF(WIN32)
+       # see "cmake --help-policy CMP0003"
+       if(COMMAND cmake_policy)
+               CMAKE_POLICY(SET CMP0003 NEW)
+       endif(COMMAND cmake_policy)
+       
+       LINK_DIRECTORIES(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH} ${LIBSAMPLERATE_LIBPATH})
+       
+       IF(WITH_PYTHON)
+               LINK_DIRECTORIES(${PYTHON_LIBPATH})
+       ENDIF(WITH_PYTHON)
+       IF(WITH_INTERNATIONAL)
+               LINK_DIRECTORIES(${ICONV_LIBPATH})
+               LINK_DIRECTORIES(${GETTEXT_LIBPATH})
+       ENDIF(WITH_INTERNATIONAL)
+       IF(WITH_SDL)
+               LINK_DIRECTORIES(${SDL_LIBPATH})
+       ENDIF(WITH_SDL)
+       IF(WITH_FFMPEG)
+               LINK_DIRECTORIES(${FFMPEG_LIBPATH})
+       ENDIF(WITH_FFMPEG)
+       IF(WITH_OPENEXR)
+               LINK_DIRECTORIES(${OPENEXR_LIBPATH})
+       ENDIF(WITH_OPENEXR)
+       IF(WITH_TIFF)
+               LINK_DIRECTORIES(${TIFF_LIBPATH})
+       ENDIF(WITH_TIFF)
+       IF(WITH_LCMS)
+               LINK_DIRECTORIES(${LCMS_LIBPATH})
+       ENDIF(WITH_LCMS)
+       IF(WITH_QUICKTIME)
+               LINK_DIRECTORIES(${QUICKTIME_LIBPATH})
+       ENDIF(WITH_QUICKTIME)
+       IF(WITH_OPENAL)
+               LINK_DIRECTORIES(${OPENAL_LIBPATH})
+       ENDIF(WITH_OPENAL)
+       IF(WITH_JACK)
+               LINK_DIRECTORIES(${JACK_LIBPATH})
+       ENDIF(WITH_JACK)
+       IF(WITH_SNDFILE)
+               LINK_DIRECTORIES(${SNDFILE_LIBPATH})
+       ENDIF(WITH_SNDFILE)
+       IF(WITH_FFTW3)
+               LINK_DIRECTORIES(${FFTW3_LIBPATH})
+       ENDIF(WITH_FFTW3)
+       IF(WITH_OPENCOLLADA)
+               LINK_DIRECTORIES(${OPENCOLLADA_LIBPATH})
+               LINK_DIRECTORIES(${PCRE_LIBPATH})
+               LINK_DIRECTORIES(${EXPAT_LIBPATH})
+       ENDIF(WITH_OPENCOLLADA)
+
+       IF(WIN32)
+               LINK_DIRECTORIES(${PTHREADS_LIBPATH})
+       ENDIF(WIN32)
 ENDMACRO(SETUP_LIBDIRS)
 
 MACRO(SETUP_LIBLINKS
-  target)
-  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS} ")
-
-  TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${JPEG_LIBRARY} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${LLIBS})
-
-  # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions
-  IF(WITH_PYTHON)
-    TARGET_LINK_LIBRARIES(${target} ${PYTHON_LINKFLAGS})
-  
-    IF(WIN32)
-      TARGET_LINK_LIBRARIES(${target} debug ${PYTHON_LIB}_d)
-      TARGET_LINK_LIBRARIES(${target} optimized ${PYTHON_LIB})
-    ELSE(WIN32)
-      TARGET_LINK_LIBRARIES(${target} ${PYTHON_LIB})
-    ENDIF(WIN32)
-  ENDIF(WITH_PYTHON)
-  
-  TARGET_LINK_LIBRARIES(${target} ${OPENGL_glu_LIBRARY} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB})
-  TARGET_LINK_LIBRARIES(${target} ${FREETYPE_LIBRARY} ${LIBSAMPLERATE_LIB})
-
-  IF(WITH_INTERNATIONAL)
-    TARGET_LINK_LIBRARIES(${target} ${GETTEXT_LIB})
-       
-    IF(WIN32)
-      TARGET_LINK_LIBRARIES(${target} ${ICONV_LIB})
-    ENDIF(WIN32)
-  ENDIF(WITH_INTERNATIONAL)
-  
-  IF(WITH_OPENAL)
-    TARGET_LINK_LIBRARIES(${target} ${OPENAL_LIBRARY})
-  ENDIF(WITH_OPENAL)
-  IF(WITH_FFTW3)  
-    TARGET_LINK_LIBRARIES(${target} ${FFTW3_LIB})
-  ENDIF(WITH_FFTW3)
-  IF(WITH_JACK)
-    TARGET_LINK_LIBRARIES(${target} ${JACK_LIB})
-  ENDIF(WITH_JACK)
-  IF(WITH_SNDFILE)
-    TARGET_LINK_LIBRARIES(${target} ${SNDFILE_LIB})
-  ENDIF(WITH_SNDFILE)
-  IF(WITH_SDL)
-    TARGET_LINK_LIBRARIES(${target} ${SDL_LIBRARY})
-  ENDIF(WITH_SDL)
-  IF(WITH_QUICKTIME)
-    TARGET_LINK_LIBRARIES(${target} ${QUICKTIME_LIB})
-  ENDIF(WITH_QUICKTIME)
-  IF(WITH_TIFF)
-    TARGET_LINK_LIBRARIES(${target} ${TIFF_LIBRARY})
-  ENDIF(WITH_TIFF)
-  IF(WITH_OPENEXR)
-    IF(WIN32)
-      FOREACH(loop_var ${OPENEXR_LIB})
-        TARGET_LINK_LIBRARIES(${target} debug ${loop_var}_d)
-        TARGET_LINK_LIBRARIES(${target} optimized ${loop_var})
-      ENDFOREACH(loop_var)
-    ELSE(WIN32)
-      TARGET_LINK_LIBRARIES(${target} ${OPENEXR_LIB})
-    ENDIF(WIN32)
-  ENDIF(WITH_OPENEXR)
-  IF(WITH_FFMPEG)
-    TARGET_LINK_LIBRARIES(${target} ${FFMPEG_LIB})
-  ENDIF(WITH_FFMPEG)
-  IF(WITH_OPENCOLLADA)
-    IF(WIN32)
-      FOREACH(loop_var ${OPENCOLLADA_LIB})
-        TARGET_LINK_LIBRARIES(${target} debug ${loop_var}_d)
-        TARGET_LINK_LIBRARIES(${target} optimized ${loop_var})
-      ENDFOREACH(loop_var)
-      TARGET_LINK_LIBRARIES(${target} debug ${PCRE_LIB}_d)
-      TARGET_LINK_LIBRARIES(${target} optimized ${PCRE_LIB})
-      IF(EXPAT_LIB)
-        TARGET_LINK_LIBRARIES(${target} debug ${EXPAT_LIB}_d)
-        TARGET_LINK_LIBRARIES(${target} optimized ${EXPAT_LIB})
-      ENDIF(EXPAT_LIB)
-    ELSE(WIN32)
-         TARGET_LINK_LIBRARIES(${target} ${OPENCOLLADA_LIB})
-      TARGET_LINK_LIBRARIES(${target} ${PCRE_LIB})
-      TARGET_LINK_LIBRARIES(${target} ${EXPAT_LIB})
-    ENDIF(WIN32)
-  ENDIF(WITH_OPENCOLLADA)
-  IF(WIN32)
-    TARGET_LINK_LIBRARIES(${target} ${PTHREADS_LIB})
-  ENDIF(WIN32)
-ENDMACRO(SETUP_LIBLINKS)
+       target)
+       SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS} ")
 
+       TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${JPEG_LIBRARY} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${LLIBS})
+
+       # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions
+       IF(WITH_PYTHON)
+               TARGET_LINK_LIBRARIES(${target} ${PYTHON_LINKFLAGS})
+
+               IF(WIN32)
+                       TARGET_LINK_LIBRARIES(${target} debug ${PYTHON_LIB}_d)
+                       TARGET_LINK_LIBRARIES(${target} optimized ${PYTHON_LIB})
+               ELSE(WIN32)
+                       TARGET_LINK_LIBRARIES(${target} ${PYTHON_LIB})
+               ENDIF(WIN32)
+       ENDIF(WITH_PYTHON)
+
+       TARGET_LINK_LIBRARIES(${target} ${OPENGL_glu_LIBRARY} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB})
+       TARGET_LINK_LIBRARIES(${target} ${FREETYPE_LIBRARY} ${LIBSAMPLERATE_LIB})
+
+       IF(WITH_INTERNATIONAL)
+               TARGET_LINK_LIBRARIES(${target} ${GETTEXT_LIB})
+
+               IF(WIN32)
+                       TARGET_LINK_LIBRARIES(${target} ${ICONV_LIB})
+               ENDIF(WIN32)
+       ENDIF(WITH_INTERNATIONAL)
+
+       IF(WITH_OPENAL)
+               TARGET_LINK_LIBRARIES(${target} ${OPENAL_LIBRARY})
+       ENDIF(WITH_OPENAL)
+       IF(WITH_FFTW3)  
+               TARGET_LINK_LIBRARIES(${target} ${FFTW3_LIB})
+       ENDIF(WITH_FFTW3)
+       IF(WITH_JACK)
+               TARGET_LINK_LIBRARIES(${target} ${JACK_LIB})
+       ENDIF(WITH_JACK)
+       IF(WITH_SNDFILE)
+               TARGET_LINK_LIBRARIES(${target} ${SNDFILE_LIB})
+       ENDIF(WITH_SNDFILE)
+       IF(WITH_SDL)
+               TARGET_LINK_LIBRARIES(${target} ${SDL_LIBRARY})
+       ENDIF(WITH_SDL)
+       IF(WITH_QUICKTIME)
+               TARGET_LINK_LIBRARIES(${target} ${QUICKTIME_LIB})
+       ENDIF(WITH_QUICKTIME)
+       IF(WITH_TIFF)
+               TARGET_LINK_LIBRARIES(${target} ${TIFF_LIBRARY})
+       ENDIF(WITH_TIFF)
+       IF(WITH_OPENEXR)
+               IF(WIN32)
+                       FOREACH(loop_var ${OPENEXR_LIB})
+                               TARGET_LINK_LIBRARIES(${target} debug ${loop_var}_d)
+                               TARGET_LINK_LIBRARIES(${target} optimized ${loop_var})
+                       ENDFOREACH(loop_var)
+               ELSE(WIN32)
+                       TARGET_LINK_LIBRARIES(${target} ${OPENEXR_LIB})
+               ENDIF(WIN32)
+       ENDIF(WITH_OPENEXR)
+       IF(WITH_LCMS)
+               TARGET_LINK_LIBRARIES(${target} ${LCMS_LIBRARY})
+       ENDIF(WITH_LCMS)
+       IF(WITH_FFMPEG)
+               TARGET_LINK_LIBRARIES(${target} ${FFMPEG_LIB})
+       ENDIF(WITH_FFMPEG)
+       IF(WITH_OPENCOLLADA)
+               IF(WIN32)
+                       FOREACH(loop_var ${OPENCOLLADA_LIB})
+                               TARGET_LINK_LIBRARIES(${target} debug ${loop_var}_d)
+                               TARGET_LINK_LIBRARIES(${target} optimized ${loop_var})
+                       ENDFOREACH(loop_var)
+                       TARGET_LINK_LIBRARIES(${target} debug ${PCRE_LIB}_d)
+                       TARGET_LINK_LIBRARIES(${target} optimized ${PCRE_LIB})
+                       IF(EXPAT_LIB)
+                               TARGET_LINK_LIBRARIES(${target} debug ${EXPAT_LIB}_d)
+                               TARGET_LINK_LIBRARIES(${target} optimized ${EXPAT_LIB})
+                       ENDIF(EXPAT_LIB)
+               ELSE(WIN32)
+               TARGET_LINK_LIBRARIES(${target} ${OPENCOLLADA_LIB})
+                       TARGET_LINK_LIBRARIES(${target} ${PCRE_LIB})
+                       TARGET_LINK_LIBRARIES(${target} ${EXPAT_LIB})
+               ENDIF(WIN32)
+       ENDIF(WITH_OPENCOLLADA)
+       IF(WIN32)
+               TARGET_LINK_LIBRARIES(${target} ${PTHREADS_LIB})
+       ENDIF(WIN32)
+ENDMACRO(SETUP_LIBLINKS)
index 287b3394456a5d3d3ecac3997e4a7757295aa430..60543e1939a41155c7cd007060deaf69863e7cfc 100644 (file)
@@ -43,6 +43,10 @@ Remove the CMakeCache.txt file and try again from another folder, e.g.:
 ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
 
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+# quiet output for Makefiles, 'make -s' helps too
+# SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES OFF)
+
 PROJECT(Blender)
 
 #-----------------------------------------------------------------------------
@@ -57,54 +61,76 @@ SET(BLENDER_VERSION  2.5)
 
 #-----------------------------------------------------------------------------
 # Set default config options
-OPTION(WITH_PLAYER        "Build Player" OFF)
-OPTION(WITH_GAMEENGINE    "Enable Game Engine" ON)
-OPTION(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
+
+# Blender internal features
 OPTION(WITH_INTERNATIONAL "Enable I18N   (International fonts and text)" ON)
+OPTION(WITH_LCMS          "Enable color correction with lcms" OFF)
+OPTION(WITH_PYTHON        "Enable Embedded Python API" ON)
+OPTION(WITH_BUILDINFO     "Include extra build details" ON)
 OPTION(WITH_ELBEEM        "Enable Elbeem (Fluid Simulation)" ON)
+OPTION(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" OFF)
+OPTION(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
+OPTION(WITH_GAMEENGINE    "Enable Game Engine" ON)
+OPTION(WITH_PLAYER        "Build Player" OFF)
+# (unix defaults to OpenMP On)
+IF(UNIX AND NOT APPLE)
+       OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
+ELSE()
+       OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" OFF)
+ENDIF()
+
+# Image format support
 OPTION(WITH_OPENEXR       "Enable OpenEXR Support (http://www.openexr.com)" ON)
+OPTION(WITH_OPENJPEG      "Enable OpenJpeg Support (http://www.openjpeg.org/)" OFF)
 OPTION(WITH_TIFF          "Enable LibTIFF Support" ON)
 OPTION(WITH_DDS           "Enable DDS Support" ON)
+
+# Audio format support
 OPTION(WITH_FFMPEG        "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
-OPTION(WITH_PYTHON        "Enable Embedded Python API" ON)
-OPTION(WITH_SDL           "Enable SDL for sound and joystick support" ON)
-OPTION(WITH_OPENJPEG      "Enable OpenJpeg Support (http://www.openjpeg.org/)" OFF)
-OPTION(WITH_OPENAL        "Enable OpenAL Support (http://www.openal.org)" ON)
-OPTION(WITH_WEBPLUGIN     "Enable Web Plugin (Unix only)" OFF)
-OPTION(WITH_FFTW3         "Enable FFTW3 support" OFF)
-OPTION(WITH_JACK          "Enable Jack Support (http://www.jackaudio.org)" OFF)
 OPTION(WITH_SNDFILE       "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
-OPTION(WITH_LZO           "Enable fast LZO compression, used for pointcache" ON)
-OPTION(WITH_LZMA          "Enable best LZMA compression, used for pointcache" ON)
-OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation" OFF)
-OPTION(WITH_BUILDINFO     "Include extra build details" ON)
-OPTION(WITH_INSTALL       "Install accompanying scripts and language files needed to run blender" ON)
-OPTION(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" OFF) 
-
 IF(APPLE OR WIN32)
        OPTION(WITH_QUICKTIME     "Enable Quicktime Support" OFF)
 ENDIF(APPLE OR WIN32)
 
-# Unix defaults to OpenMP On
-# Disable opencollada on non-apple unix because opencollada has no package for debian
+# 3D format support
+# disable opencollada on non-apple unix because opencollada has no package for debian
 IF(UNIX AND NOT APPLE)
-       OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
        OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      OFF)
 ELSE()
-       OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" OFF)
        OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      OFF)
 ENDIF()
 
+# Sound output
+OPTION(WITH_SDL           "Enable SDL for sound and joystick support" ON)
+OPTION(WITH_OPENAL        "Enable OpenAL Support (http://www.openal.org)" ON)
+OPTION(WITH_JACK          "Enable Jack Support (http://www.jackaudio.org)" OFF)
+
+# Compression
+OPTION(WITH_LZO           "Enable fast LZO compression (used for pointcache)" ON)
+OPTION(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)" ON)
+
+# Misc
+OPTION(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" OFF) 
+OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking" OFF)
+OPTION(WITH_INSTALL       "Install accompanying scripts and language files needed to run blender" ON)
+
 IF (APPLE)
        OPTION(WITH_COCOA         "Use Cocoa framework instead of deprecated Carbon" ON)
        OPTION(USE_QTKIT          "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
        OPTION(WITH_LIBS10.5  "Use 10.5 libs (needed for 64bit builds)" OFF)
-ENDIF (APPLE)
+ENDIF(APPLE)
+
+IF(NOT WITH_BULLET AND WITH_GAMEENGINE)
+       MESSAGE("WARNING: WITH_GAMEENGINE needs WITH_BULLET")
+ENDIF(NOT WITH_BULLET AND WITH_GAMEENGINE)
 
 IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
        MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE")
 ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
 
+# disabled for now, not supported
+# OPTION(WITH_WEBPLUGIN     "Enable Web Plugin (Unix only)" OFF)
+
 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
 # On Unix: 
 #   cmake -D PYTHON_LIB=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INC=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender
@@ -122,7 +148,6 @@ INCLUDE(CMake/macros.cmake)
 
 IF(UNIX AND NOT APPLE)
 
-
        IF(WITH_OPENAL)
                FIND_PACKAGE(OpenAL)
                IF(NOT OPENAL_FOUND)
@@ -144,20 +169,23 @@ IF(UNIX AND NOT APPLE)
        SET(SNDFILE_LIBPATH ${SNDFILE}/lib)
        ENDIF(WITH_SNDFILE)
 
-       FIND_LIBRARY(INTL_LIBRARY
-               NAMES intl
-               PATHS
-               /sw/lib
-       )
-       FIND_LIBRARY(ICONV_LIBRARY
-               NAMES iconv
-               PATHS
-               /sw/lib
-       )
-  
-       IF(INTL_LIBRARY AND ICONV_LIBRARY)
-               SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY})
-       ENDIF(INTL_LIBRARY AND ICONV_LIBRARY)
+       IF(WITH_INTERNATIONAL)
+               FIND_LIBRARY(INTL_LIBRARY
+                       NAMES intl
+                       PATHS
+                       /sw/lib
+               )
+
+               FIND_LIBRARY(ICONV_LIBRARY
+                       NAMES iconv
+                       PATHS
+                       /sw/lib
+               )
+
+               IF(INTL_LIBRARY AND ICONV_LIBRARY)
+                       SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY})
+               ENDIF(INTL_LIBRARY AND ICONV_LIBRARY)
+       ENDIF(WITH_INTERNATIONAL)
 
        FIND_PACKAGE(Freetype)
        # UNSET(FREETYPE_INCLUDE_DIRS CACHE) # cant use
@@ -179,7 +207,6 @@ IF(UNIX AND NOT APPLE)
                SET(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
        ENDIF(WITH_PYTHON)
 
-
        IF(WITH_SDL)
                FIND_PACKAGE(SDL)
                # UNSET(SDLMAIN_LIBRARY CACHE)
@@ -203,13 +230,33 @@ IF(UNIX AND NOT APPLE)
                SET(OPENEXR_LIB Half IlmImf Iex Imath)
        ENDIF(WITH_OPENEXR)
 
+       IF(WITH_TIFF)
+               FIND_PACKAGE(TIFF)
+               IF(NOT TIFF_FOUND)
+                       SET(WITH_TIFF OFF)
+               ENDIF(NOT TIFF_FOUND)
+       ENDIF(WITH_TIFF)
+
+       FIND_PACKAGE(JPEG REQUIRED)
+
+       FIND_PACKAGE(PNG REQUIRED)
+
+       FIND_PACKAGE(ZLIB REQUIRED)
+
+       IF(WITH_LCMS)
+               SET(LCMS /usr CACHE FILEPATH "LCMS directory")
+               SET(LCMS_INCLUDE_DIR ${LCMS}/include)
+               SET(LCMS_LIBRARY lcms)
+               SET(LCMS_LIBPATH ${LCMS}/lib)
+       ENDIF(WITH_LCMS)
+
        IF(WITH_FFMPEG)
                SET(FFMPEG /usr CACHE FILEPATH "FFMPEG Directory")
                SET(FFMPEG_INC ${FFMPEG}/include)
                SET(FFMPEG_LIB avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
                SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
        ENDIF(WITH_FFMPEG)
-  
+
        IF(WITH_FFTW3)
                SET(FFTW3 /usr)
                SET(FFTW3_INC ${FFTW3}/include)
@@ -222,19 +269,6 @@ IF(UNIX AND NOT APPLE)
        SET(LIBSAMPLERATE_LIB samplerate)
        SET(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib)
 
-       IF(WITH_TIFF)
-               FIND_PACKAGE(TIFF)
-               IF(NOT TIFF_FOUND)
-                       SET(WITH_TIFF OFF)
-               ENDIF(NOT TIFF_FOUND)
-       ENDIF(WITH_TIFF)
-
-       FIND_PACKAGE(JPEG REQUIRED)
-
-       FIND_PACKAGE(PNG REQUIRED)
-
-       FIND_PACKAGE(ZLIB REQUIRED)
-
        IF (WITH_OPENCOLLADA)
                SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory")
                SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
@@ -295,10 +329,12 @@ IF(WIN32)
        
        ADD_DEFINITIONS(-DWIN32)
 
-       SET(ICONV ${LIBDIR}/iconv)
-       SET(ICONV_INC ${ICONV}/include)
-       SET(ICONV_LIB iconv)
-       SET(ICONV_LIBPATH ${ICONV}/lib)
+       IF(WITH_INTERNATIONAL)
+               SET(ICONV ${LIBDIR}/iconv)
+               SET(ICONV_INC ${ICONV}/include)
+               SET(ICONV_LIB iconv)
+               SET(ICONV_LIBPATH ${ICONV}/lib)
+       ENDIF(WITH_INTERNATIONAL)
 
        SET(LIBSAMPLERATE ${LIBDIR}/samplerate)
        SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include)
@@ -376,14 +412,16 @@ IF(WIN32)
                        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp ")
                ENDIF(WITH_OPENMP)
                
-               SET(GETTEXT ${LIBDIR}/gettext)
-               SET(GETTEXT_INC ${GETTEXT}/include)
-               SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
-               IF(CMAKE_CL_64)
-                       SET(GETTEXT_LIB gettext)
-               ELSE(CMAKE_CL_64)
-                       SET(GETTEXT_LIB gnu_gettext)
-               ENDIF(CMAKE_CL_64)
+               IF(WITH_INTERNATIONAL)
+                       SET(GETTEXT ${LIBDIR}/gettext)
+                       SET(GETTEXT_INC ${GETTEXT}/include)
+                       SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
+                       IF(CMAKE_CL_64)
+                               SET(GETTEXT_LIB gettext)
+                       ELSE(CMAKE_CL_64)
+                               SET(GETTEXT_LIB gnu_gettext)
+                       ENDIF(CMAKE_CL_64)
+               ENDIF(WITH_INTERNATIONAL)
 
                IF(CMAKE_CL_64)
                        SET(PNG_LIBRARIES libpng)
@@ -422,13 +460,15 @@ IF(WIN32)
                        SET(OPENCOLLADA ${LIBDIR}/opencollada)
                        SET(OPENCOLLADA_INC ${OPENCOLLADA}/include)
                        SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
-                       SET(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser UTF xml2 buffer ftoa)
+                       SET(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa)
                        #pcre is bundled with openCollada
                        #SET(PCRE ${LIBDIR}/pcre)
                        #SET(PCRE_LIBPATH ${PCRE}/lib)
                        SET(PCRE_LIB pcre)
                ENDIF(WITH_OPENCOLLADA)
                
+        # TODO: IF(WITH_LCMS)
+        
                IF(WITH_FFMPEG)
                        SET(FFMPEG ${LIBDIR}/ffmpeg)
                        SET(FFMPEG_INC ${FFMPEG}/include ${FFMPEG}/include/msvc)
@@ -496,10 +536,12 @@ IF(WIN32)
                        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
                ENDIF(WITH_OPENMP)
 
-               SET(GETTEXT ${LIBDIR}/gcc/gettext)
-               SET(GETTEXT_INC ${GETTEXT}/include)
-               SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
-               SET(GETTEXT_LIB intl)
+               IF(WITH_INTERNATIONAL)
+                       SET(GETTEXT ${LIBDIR}/gcc/gettext)
+                       SET(GETTEXT_INC ${GETTEXT}/include)
+                       SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
+                       SET(GETTEXT_LIB intl)
+               ENDIF(WITH_INTERNATIONAL)
 
                SET(JPEG_LIBRARY jpeg)
                SET(PNG_LIBRARIES png)
@@ -632,10 +674,12 @@ IF(APPLE)
                SET(PYTHON_LINKFLAGS "-u _PyMac_Error -framework System -framework Python")
        ENDIF(PYTHON_VERSION MATCHES 3.1)
 
-       SET(GETTEXT ${LIBDIR}/gettext)
-       SET(GETTEXT_INC "${GETTEXT}/include")
-       SET(GETTEXT_LIB intl iconv)
-       SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
+       IF(WITH_INTERNATIONAL)
+               SET(GETTEXT ${LIBDIR}/gettext)
+               SET(GETTEXT_INC "${GETTEXT}/include")
+               SET(GETTEXT_LIB intl iconv)
+               SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
+       ENDIF(WITH_INTERNATIONAL)
   
        IF(WITH_FFTW3)
                SET(FFTW3 ${LIBDIR}/fftw3)
@@ -656,15 +700,21 @@ IF(APPLE)
        SET(FREETYPE_LIBPATH ${FREETYPE}/lib)
        SET(FREETYPE_LIBRARY freetype)
 
-       SET(OPENEXR ${LIBDIR}/openexr)
-       SET(OPENEXR_INC ${OPENEXR}/include/OpenEXR ${OPENEXR}/include)
-       SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
-       SET(OPENEXR_LIBPATH ${OPENEXR}/lib)
+       IF(WITH_OPENEXR)
+               SET(OPENEXR ${LIBDIR}/openexr)
+               SET(OPENEXR_INC ${OPENEXR}/include/OpenEXR ${OPENEXR}/include)
+               SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
+               SET(OPENEXR_LIBPATH ${OPENEXR}/lib)
+       ENDIF(WITH_OPENEXR)
 
-       SET(FFMPEG ${LIBDIR}/ffmpeg)
-       SET(FFMPEG_INC ${FFMPEG}/include)
-       SET(FFMPEG_LIB avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
-       SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
+    # TODO: IF(WITH_LCMS)
+
+       IF(WITH_FFMPEG)
+               SET(FFMPEG ${LIBDIR}/ffmpeg)
+               SET(FFMPEG_INC ${FFMPEG}/include)
+               SET(FFMPEG_LIB avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
+               SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
+       ENDIF(WITH_FFMPEG)
 
        SET(LIBSAMPLERATE ${LIBDIR}/samplerate)
        SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include)
@@ -712,10 +762,12 @@ IF(APPLE)
                SET(EXPAT_LIB)
        ENDIF (WITH_OPENCOLLADA)
 
-       SET(SDL ${LIBDIR}/sdl)
-       SET(SDL_INCLUDE_DIR ${SDL}/include)
-       SET(SDL_LIBRARY SDL)
-       SET(SDL_LIBPATH ${SDL}/lib)
+       IF(WITH_SDL)
+               SET(SDL ${LIBDIR}/sdl)
+               SET(SDL_INCLUDE_DIR ${SDL}/include)
+               SET(SDL_LIBRARY SDL)
+               SET(SDL_LIBPATH ${SDL}/lib)
+       ENDIF(WITH_SDL)
 
        SET(PNG "${LIBDIR}/png")
        SET(PNG_INC "${PNG}/include")
@@ -725,10 +777,12 @@ IF(APPLE)
        SET(JPEG_INC "${JPEG}/include")
        SET(JPEG_LIBPATH ${JPEG}/lib)
 
-       SET(TIFF ${LIBDIR}/tiff)
-       SET(TIFF_INCLUDE_DIR ${TIFF}/include)
-       SET(TIFF_LIBRARY tiff)
-       SET(TIFF_LIBPATH ${TIFF}/lib)
+       IF(WITH_TIFF)
+               SET(TIFF ${LIBDIR}/tiff)
+               SET(TIFF_INCLUDE_DIR ${TIFF}/include)
+               SET(TIFF_LIBRARY tiff)
+               SET(TIFF_LIBPATH ${TIFF}/lib)
+       ENDIF(WITH_TIFF)
 
        SET(EXETYPE MACOSX_BUNDLE)
 
@@ -776,10 +830,11 @@ ENDIF(WITH_BUILDINFO)
        
 #-----------------------------------------------------------------------------
 # Common.
-
-set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg)
-set(OPENJPEG_INC ${OPENJPEG})
-set(OPENJPEG_LIb extern_libopenjpeg)
+IF(WITH_OPENJPEG)
+       set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg)
+       set(OPENJPEG_INC ${OPENJPEG})
+       set(OPENJPEG_LIb extern_libopenjpeg)
+ENDIF(WITH_OPENJPEG)
 
 #-----------------------------------------------------------------------------
 # Blender WebPlugin
index dc6198bd81e384346a94dd8e2be7ac488f7359fe..531d89b644702f73e188a13996630870f3d2e378 100644 (file)
@@ -201,6 +201,7 @@ if not env['WITHOUT_BF_INSTALL'] and not env['WITHOUT_BF_OVERWRITE_INSTALL']:
 
 SetOption('num_jobs', int(env['BF_NUMJOBS']))
 print B.bc.OKGREEN + "Build with parallel jobs%s: %s" % (B.bc.ENDC, GetOption('num_jobs'))
+print B.bc.OKGREEN + "Build with debug symbols%s: %s" % (B.bc.ENDC, env['BF_DEBUG'])
 
 # BLENDERPATH is a unix only option to enable typical style paths this is
 # spesifically a data-dir, which is used a lot but cant replace BF_INSTALLDIR
@@ -268,6 +269,7 @@ if 'blenderlite' in B.targets:
        target_env_defs['WITH_BF_GAMEENGINE'] = False
        target_env_defs['WITH_BF_OPENAL'] = False
        target_env_defs['WITH_BF_OPENEXR'] = False
+       target_env_defs['WITH_BF_OPENMP'] = False
        target_env_defs['WITH_BF_ICONV'] = False
        target_env_defs['WITH_BF_INTERNATIONAL'] = False
        target_env_defs['WITH_BF_OPENJPEG'] = False
index 32344cdabc8d99e8937e85748c45a4d6c90e57b2..a769f53b35e1b4da3269ba6b922f52908fe9181c 100644 (file)
@@ -83,22 +83,11 @@ BF_FTGL_LIB = 'extern_ftgl'
 
 WITH_BF_GAMEENGINE='false'
 
-WITH_BF_ODE = 'false'
-BF_ODE = LIBDIR + '/ode'
-BF_ODE_INC = BF_ODE + '/include'
-BF_ODE_LIB = BF_ODE + '/lib/libode.a'
-
 WITH_BF_BULLET = 'true'
 BF_BULLET = '#extern/bullet2/src'
 BF_BULLET_INC = '${BF_BULLET}'
 BF_BULLET_LIB = 'extern_bullet'
 
-BF_SOLID = '#extern/solid'
-BF_SOLID_INC = '${BF_SOLID}'
-BF_SOLID_LIB = 'extern_solid'
-
-WITH_BF_YAFRAY = 'true'
-
 #WITH_BF_NSPR = 'true'
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index 0f8a15a8c75036100afd672811c27ea7d9b9deb5..8533c8ac9c76c1b47d5cd941211c0930523ccd1d 100644 (file)
@@ -65,7 +65,7 @@ WITH_BF_DDS = True
 WITH_BF_JPEG = True
 BF_JPEG = LIBDIR + '/jpeg'
 BF_JPEG_INC = '${BF_JPEG}/include'
-BF_JPEG_LIB = 'jpeg'
+BF_JPEG_LIB = 'libjpeg'
 BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
 
 WITH_BF_PNG = True
@@ -83,7 +83,7 @@ BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 WITH_BF_ZLIB = True
 BF_ZLIB = LIBDIR + '/zlib'
 BF_ZLIB_INC = '${BF_ZLIB}/include'
-#BF_ZLIB_LIB = 'z'
+BF_ZLIB_LIB = 'libz'
 BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
 
 WITH_BF_INTERNATIONAL = True
@@ -151,11 +151,9 @@ BF_OPENGL = 'C:\\MingW'
 BF_OPENGL_INC = '${BF_OPENGL}/include'
 BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
 BF_OPENGL_LIB = 'opengl32 glu32'
-BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
-             '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
-             '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
+BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a']
 
-WITH_BF_OPENMP = True
+WITH_BF_OPENMP = False
 BF_OPENMP = LIBDIR + '/gcc/gomp'
 BF_OPENMP_INC = '${BF_OPENMP}/include'
 BF_OPENMP_LIBPATH = '${BF_OPENMP}/lib'
index 141658d32170bc0c8a96eb7c15b6f37f45f30a1e..f8b67781172c2e91b95bbe69f6f9fea049bfdc94 100644 (file)
@@ -64,7 +64,7 @@ WITH_BF_DDS = True
 WITH_BF_JPEG = True
 BF_JPEG = LIBDIR + '/jpeg'
 BF_JPEG_INC = '${BF_JPEG}/include'
-BF_JPEG_LIB = 'jpeg'
+BF_JPEG_LIB = 'liblibjpeg'
 BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
 
 WITH_BF_PNG = True
@@ -82,6 +82,7 @@ BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 WITH_BF_ZLIB = True
 BF_ZLIB = LIBDIR + '/zlib'
 BF_ZLIB_INC = '${BF_ZLIB}/include'
+BF_ZLIB_LIB = 'libz'
 BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
 
 WITH_BF_INTERNATIONAL = True
index b3766247d2de9797d7ed8cd89ce54f46859ac178..02bce0cc7f318fd37d2184e58bf54175d008973e 100644 (file)
@@ -139,14 +139,14 @@ BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
 WITH_BF_REDCODE = False  
 BF_REDCODE_INC = '#extern'
 
-WITH_BF_COLLADA = False
+WITH_BF_COLLADA = True
 BF_COLLADA = '#source/blender/collada'
 BF_COLLADA_INC = '${BF_COLLADA}'
 BF_COLLADA_LIB = 'bf_collada'
 
 BF_OPENCOLLADA = LIBDIR + '/opencollada'
 BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
-BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre buffer ftoa'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa'
 BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
 
 #Ray trace optimization
index c1cbb7cfee8384bb68dd1a7d7eedfaa24a96c356..de1daa16e0bd5b3474579c7dd1615fc129f94783 100644 (file)
@@ -152,14 +152,14 @@ BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
 WITH_BF_REDCODE = False  
 BF_REDCODE_INC = '#extern'
 
-WITH_BF_COLLADA = False
+WITH_BF_COLLADA = True
 BF_COLLADA = '#source/blender/collada'
 BF_COLLADA_INC = '${BF_COLLADA}'
 BF_COLLADA_LIB = 'bf_collada'
 
 BF_OPENCOLLADA = LIBDIR + '/opencollada'
 BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
-BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa'
 BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
 
 #Ray trace optimization
diff --git a/doc/blender.1 b/doc/blender.1
new file mode 100644 (file)
index 0000000..68f00d8
--- /dev/null
@@ -0,0 +1,232 @@
+.TH "BLENDER" "1" "June 06, 2010" "Blender 2\&.5\&.2"
+.SH NAME
+blender \- a 3D modelling and rendering package
+.SH SYNOPSIS
+.B blender [args ...] [file] [args ...]
+
+
+.br
+.SH DESCRIPTION
+.PP
+.B blender
+is a 3D modelling and rendering package. It is the in-house software of a high quality animation studio, Blender has proven to be an extremely fast and versatile design instrument. The software has a personal touch, offering a unique approach to the world of Three Dimensions.
+
+Use Blender to create TV commercials, to make technical visualizations, business graphics, to do some morphing, or design user interfaces. You can easy build and manage complex environments. The renderer is versatile and extremely fast. All basic animation principles (curves & keys) are well implemented.
+
+http://www.blender.org
+.SH OPTIONS
+.SS "Render options:"
+
+.TP
+.B \-b, \-\-background <file>
+Load <file> in background (often used for UI-less rendering)
+
+.TP
+.B \-a, \-\-render-anim 
+Render frames from start to end (inclusive)
+
+.TP
+.B \-S, \-\-scene <name>
+Set the active scene <name> for rendering
+
+.TP
+.B \-f, \-\-render-frame <frame>
+Render frame <frame> and save it
+
+.TP
+.B \-s, \-\-frame-start <frame>
+Set start to frame <frame> (use before the \-a argument)
+
+.TP
+.B \-e, \-\-frame-end <frame>
+Set end to frame <frame> (use before the \-a argument)
+
+.TP
+.B \-j, \-\-frame-jump <frames>
+Set number of frames to step forward after each rendered frame
+
+.TP
+.B \-o, --render-output <path>
+Set the render path and file name.
+.IP
+Use // at the start of the path to render relative to the blend file.
+.IP
+The # characters are replaced by the frame number, and used to define zero padding.
+.IP
+    ani_##_test.png becomes ani_01_test.png
+    test-######.png becomes test-000001.png
+    When the filename does not contain #, The suffix #### is added to the filename
+.IP
+The frame number will be added at the end of the filename.
+    eg: blender -b foobar.blend -o //render_ -F PNG -x 1 -a
+    //render_ becomes //render_####, writing frames as //render_0001.png//
+
+.HP
+.B \-E, \-\-engine <engine>
+Specify the render engine
+use \fI\-E help\fR to list available engines
+
+.SS "Format options:"
+
+.TP
+.B \-F, \-\-render-format <format>
+Set the render format, valid options are...
+.IP
+TGA IRIS JPEG MOVIE IRIZ RAWTGA
+AVIRAW AVIJPEG PNG BMP FRAMESERVER
+.IP
+(formats that can be compiled into blender, not available on all systems)
+.IP
+HDR TIFF EXR MULTILAYER MPEG AVICODEC QUICKTIME CINEON DPX DDS
+
+.TP
+.B \-x, \-\-use-extension <bool>
+Set option to add the file extension to the end of the file
+
+.TP
+.B \-t, \-\-threads <threads>
+Use amount of <threads> for rendering in background
+[1-BLENDER_MAX_THREADS], 0 for systems processor count.
+
+.SS "Animation options:"
+
+.TP
+.B \-a <options> <file(s)>
+Playback <file(s)>, only operates this way when not running in background.
+.IP
+\-p <sx> <sy> \-\- Open with lower left corner at <sx>, <sy>
+.br
+\-m  \-\- Read from disk (Don't buffer)
+.br
+\-f <fps> <fps-base> \-\- Specify FPS to start with
+.br
+\-j <frame> \-\- Set frame step to <frame>
+
+.SS "Window options:"
+
+.TP
+.B \-w, \-\-window-border
+Force opening with borders (default)
+
+.TP
+.B \-W, \-\-window-borderless
+Force opening with without borders
+
+.TP
+.B \-p, --window-geometry <sx> <sy> <w> <h>
+Open with lower left corner at <sx>, <sy> and width and height <w>, <h>
+
+.SS "Game Engine specific options:"
+.TP
+.B \-g fixedtime
+Run on 50 hertz without dropping frames
+.TP
+.B \-g vertexarrays
+Use Vertex Arrays for rendering (usually faster)
+.TP
+.B \-g nomipmap
+No Texture Mipmapping
+.TP
+.B \-g linearmipmap
+Linear Texture Mipmapping instead of Nearest (default)
+.SS "Misc options:"
+.TP
+.B \-d, \-\-debug
+Turn debugging on
+.IP
+Prints every operator call and their arguments
+.br
+Disables mouse grab (to interact with a debugger in some cases)
+.br
+Keeps python sys.stdin rather then setting it to None
+
+.TP
+.B \--debug-fpe 
+Enable floating point exceptions
+
+.TP
+.B \-noaudio
+Disable audio on systems that support audio
+
+.TP
+.B \-nojoystick 
+Disable joystick support
+
+.TP
+.B \-noglsl 
+Disable GLSL shading
+
+.TP
+.B \-y, \-\-enable-autoexec 
+Enable automatic python script execution (default)
+
+.TP
+.B \-Y, \-\-disable-autoexec 
+Disable automatic python script execution (pydrivers, pyconstraints, pynodes)
+
+.TP
+.B \-P <filename>
+Run the given Python script (filename or Blender Text)
+
+.TP
+.B \-\-python-console 
+Run blender with an interactive console
+
+.TP
+.B \-v, \-\-version 
+Print Blender version and exit
+
+.TP
+.B \-\- 
+Ends option processing, following arguments passed unchanged. Access via python's sys.argv
+
+.TP
+.B \-h, \-\-help 
+Show a summary of options.
+
+.SH "ENVIRONMENT VARIABLES"
+
+.PP
+\fIHOME\fR
+.RS 4
+Store files such as .blender/ .B.blend .Bfs .Blog here.
+.RE
+
+.PP
+\fIBLENDERPATH\fR
+.RS 4
+System directory to use for data files and scripts.
+For this build of blender the default BLENDERPATH is...
+"/usr/share/blender"
+setting the $BLENDERPATH will override this
+.RE
+
+.PP
+\fITMP\fR or \fITMPDIR\fR
+.RS 4
+Store temporary files here.
+.RE
+
+.PP
+\fISDL_AUDIODRIVER\fR
+.RS 4
+LibSDL audio driver - alsa, esd, alsa, dma.
+.RE
+
+.PP
+\fIPYTHONHOME\fR
+.RS 4
+Path to the python directory, eg. /usr/lib/python.
+.RE
+
+.br
+.SH SEE ALSO
+.B yafaray(1)
+
+.br
+.SH AUTHORS
+This manpage was written for a Debian GNU/Linux system by Daniel Mester
+<mester@uni-bremen.de> and updated by Cyril Brulebois
+<cyril.brulebois@enst-bretagne.fr> and Dan Eicher <dan@trollwerks.org>.
+
+
index 19875c27fa4853d14f554d3462538a5437a1a5d1..b24dea1d3c9f4e46a0015c0f3900550e1dc7cccb 100644 (file)
@@ -202,8 +202,8 @@ protected:
 
 #ifdef WITH_CXX_GUARDEDALLOC
 public:
-       void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "CXX:STR_String"); }
-       void operator delete( void *mem ) { MEM_freeN(mem); }
+       void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "CXX:STR_String"); }
+       void operator delete(void *mem) { MEM_freeN(mem); }
 #endif
 };
 
index 12cb2f61df07a4aee2a3daae53c9d5beb426e7a3..bf57d02391b40756d0ad5c6ec39e41a8502ff081 100644 (file)
@@ -762,12 +762,22 @@ class PovrayRender(bpy.types.RenderEngine):
 
         if 1:
             # TODO, when povray isnt found this gives a cryptic error, would be nice to be able to detect if it exists
-            self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE
+            try:
+                self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE
+            except OSError:
+                # TODO, report api
+                print("POVRAY: could not execute povray, possibly povray isn't installed: '%s'" % pov_binary)
+                import traceback
+                traceback.print_exc()
+                print ("***-DONE-***")
+                return False
+
         else:
             # This works too but means we have to wait until its done
             os.system('%s %s' % (pov_binary, self._temp_file_ini))
 
         print ("***-DONE-***")
+        return True
 
     def _cleanup(self):
         for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out):
@@ -783,7 +793,10 @@ class PovrayRender(bpy.types.RenderEngine):
         self.update_stats("", "POVRAY: Exporting data from Blender")
         self._export(scene)
         self.update_stats("", "POVRAY: Parsing File")
-        self._render()
+
+        if not self._render():
+            self.update_stats("", "POVRAY: Not found")
+            return
 
         r = scene.render
 
index 5fe7f519b1dd774dd93232adf6df1e49974481b9..c2a93a5089ea9002cc827f4eb35bc3c1e9b1ba33 100644 (file)
@@ -2011,9 +2011,8 @@ def write(filename, batch_objects = None, \
 
         if ob_arms_orig_rest:
             for ob_base in bpy.data.objects:
-                #if ob_base.type == 'Armature':
-                ob_base.make_display_list(scene)
-#                              ob_base.makeDisplayList()
+                if ob_base.type == 'ARMATURE':
+                    ob_base.update(scene)
 
             # This causes the makeDisplayList command to effect the mesh
             scene.set_frame(scene.frame_current)
@@ -2187,9 +2186,7 @@ def write(filename, batch_objects = None, \
         if ob_arms_orig_rest:
             for ob_base in bpy.data.objects:
                 if ob_base.type == 'ARMATURE':
-#                              if ob_base.type == 'Armature':
-                    ob_base.make_display_list(scene)
-#                                      ob_base.makeDisplayList()
+                    ob_base.update(scene)
             # This causes the makeDisplayList command to effect the mesh
             scene.set_frame(scene.frame_current)
 #                      Blender.Set('curframe', Blender.Get('curframe'))
index 350191af807268b2b79f7fe024e6bfa7bcdf9357..ed64cf9ae2b18b78c20fbe6f9888e54abeb6f011 100644 (file)
@@ -21,6 +21,7 @@
 import bpy
 import mathutils
 
+
 def add_object_align_init(context, operator):
 
     if operator and operator.properties.is_property_set("location") and operator.properties.is_property_set("rotation"):
index 9b411945da6ee199f64d2b1563791da8b9fcc11a..5cde7091257865d1d8ef7782926f8e475fb57f1e 100644 (file)
@@ -144,7 +144,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
             _loaded.append(mod)
 
     if reload_scripts:
-        
+
         # TODO, this is broken but should work, needs looking into
         '''
         # reload modules that may not be directly included
@@ -369,7 +369,7 @@ def smpte_from_seconds(time, fps=None):
         time = time % 60.0
 
     seconds = int(time)
-    frames= int(round(math.floor(((time - seconds) * fps))))
+    frames = int(round(math.floor(((time - seconds) * fps))))
 
     return "%s%02d:%02d:%02d:%02d" % (neg, hours, minutes, seconds, frames)
 
index 28a30c232a9483594c4591422278171d5b7b2b72..0ba36a7c09287705960a5be1cc9eaa98b6c773e6 100644 (file)
@@ -29,15 +29,52 @@ class Context(StructRNA):
     __slots__ = ()
 
     def copy(self):
+        from types import BuiltinMethodType
         new_context = {}
-        generic_keys = StructRNA.__dict__.keys()
-        for item in dir(self):
-            if item not in generic_keys:
-                new_context[item] = getattr(self, item)
+        generic_attrs = list(StructRNA.__dict__.keys()) + ["bl_rna", "rna_type", "copy"]
+        for attr in dir(self):
+            if not (attr.startswith("_") or attr in generic_attrs):
+                value = getattr(self, attr)
+                if type(value) != BuiltinMethodType:
+                    new_context[attr] = value
 
         return new_context
 
 
+class Library(bpy_types.ID):
+    __slots__ = ()
+
+    @property
+    def users_id(self):
+        """ID datablocks which use this library"""
+        import bpy
+
+        # See: readblenentry.c, IDTYPE_FLAGS_ISLINKABLE, we could make this an attribute in rna.
+        attr_links = "actions", "armatures", "brushes", "cameras", \
+                "curves", "gpencil", "groups", "images", \
+                "lamps", "lattices", "materials", "metaballs", \
+                "meshes", "node_groups", "objects", "scenes", \
+                "sounds", "textures", "texts", "fonts", "worlds"
+
+        return tuple(id_block for attr in attr_links for id_block in getattr(bpy.data, attr) if id_block.library == self)
+
+
+class Texture(bpy_types.ID):
+    __slots__ = ()
+
+    @property
+    def users_material(self):
+        """Materials that use this texture"""
+        import bpy
+        return tuple(mat for mat in bpy.data.materials if self in [slot.texture for slot in mat.texture_slots if slot])
+
+    @property
+    def users_object_modifier(self):
+        """Object modifiers that use this texture"""
+        import bpy
+        return tuple(obj for obj in bpy.data.objects if self in [mod.texture for mod in obj.modifiers if mod.type == 'DISPLACE'])
+
+
 class Group(bpy_types.ID):
     __slots__ = ()
 
@@ -399,7 +436,7 @@ class Mesh(bpy_types.ID):
         closed loops have matching start and end values.
         """
         line_polys = []
-        
+
         # Get edges not used by a face
         if edges is None:
             edges = self.edges
@@ -407,10 +444,10 @@ class Mesh(bpy_types.ID):
         if not hasattr(edges, "pop"):
             edges = edges[:]
 
-        edge_dict= dict((ed.key, ed) for ed in self.edges if ed.selected)
-        
+        edge_dict = dict((ed.key, ed) for ed in self.edges if ed.selected)
+
         while edges:
-            current_edge= edges.pop()
+            current_edge = edges.pop()
             vert_end, vert_start = current_edge.verts[:]
             line_poly = [vert_start, vert_end]
 
@@ -428,7 +465,7 @@ class Mesh(bpy_types.ID):
                         vert_end = line_poly[-1]
                         ok = 1
                         del edges[i]
-                        #break
+                        # break
                     elif v2 == vert_end:
                         line_poly.append(v1)
                         vert_end = line_poly[-1]
@@ -440,7 +477,7 @@ class Mesh(bpy_types.ID):
                         vert_start = line_poly[0]
                         ok = 1
                         del edges[i]
-                        #break    
+                        # break
                     elif v2 == vert_start:
                         line_poly.insert(0, v1)
                         vert_start = line_poly[0]
@@ -452,7 +489,6 @@ class Mesh(bpy_types.ID):
         return line_polys
 
 
-
 class MeshEdge(StructRNA):
     __slots__ = ()
 
index 1f0d9dbde605a84a2d7b7d06be716fe42e513433..83a3130f80e89924aa25d31691c38bf0e55e57e6 100644 (file)
@@ -33,7 +33,7 @@ def get_console(console_id):
     '''
     helper function for console operators
     currently each text datablock gets its own
-    console - bpython_code.InteractiveConsole()
+    console - code.InteractiveConsole()
     ...which is stored in this function.
 
     console_id can be any hashable type
@@ -44,21 +44,24 @@ def get_console(console_id):
 
     if consoles is None:
         consoles = get_console.consoles = {}
+    else:
+        # check if clearning the namespace is needed to avoid a memory leak.
+        # the window manager is normally loaded with new blend files
+        # so this is a reasonable way to deal with namespace clearing.
+        # bpy.data hashing is reset by undo so cant be used.
+        hash_prev = getattr(get_console, "consoles_namespace_hash", 0)
+        hash_next = hash(bpy.context.manager)
 
-    # clear all dead consoles, use text names as IDs
-    # TODO, find a way to clear IDs
-    '''
-    for console_id in list(consoles.keys()):
-        if console_id not in bpy.data.texts:
-            del consoles[id]
-    '''
+        if hash_prev != hash_next:
+            get_console.consoles_namespace_hash = hash_next
+            consoles.clear()
 
     console_data = consoles.get(console_id)
 
     if console_data:
         console, stdout, stderr = console_data
 
-        # XXX, bug in python 3.1.2 ?
+        # XXX, bug in python 3.1.2 ? (worked in 3.1.1)
         # seems there is no way to clear StringIO objects for writing, have to make new ones each time.
         import io
         stdout = io.StringIO()
@@ -121,7 +124,7 @@ def execute(context):
         # unlikely, but this can happen with unicode errors for example.
         import traceback
         stderr.write(traceback.format_exc())
-        
+
 
     stdout.seek(0)
     stderr.seek(0)
@@ -180,7 +183,7 @@ def autocomplete(context):
     # note: unlikely stdin would be used for autocomp. but its possible.
     stdin_backup = sys.stdin
     sys.stdin = None
-    
+
     scrollback = ""
     scrollback_error = ""
 
index a6e0930e69c8bc7af1ff63aead87bc6c8f410d07..9d240fee5c61301c84fa130e56323d979f203e3c 100644 (file)
@@ -515,9 +515,9 @@ class IsolateTypeRender(bpy.types.Operator):
 
     def execute(self, context):
         act_type = context.object.type
-        
+
         for obj in context.visible_objects:
-            
+
             if obj.selected:
                 obj.restrict_render = False
             else:
index 48f83613147f96552a165856fc80644f03681c07..13668498aae78f70e0b02c6b41b2998726d633eb 100644 (file)
@@ -138,6 +138,7 @@ def register():
     register(SequencerCutMulticam)
     register(SequencerDeinterlaceSelectedMovies)
 
+
 def unregister():
     unregister = bpy.types.unregister
 
@@ -145,7 +146,6 @@ def unregister():
     unregister(SequencerCutMulticam)
     unregister(SequencerDeinterlaceSelectedMovies)
 
 
 if __name__ == "__main__":
     register()
index 1a64f61a11ab11e5a6cb4b08f542ec3492c8f5a1..cd0b7086a70183ece175d44150a0ca692be3d9e6 100644 (file)
@@ -178,7 +178,7 @@ class ExportUVLayout(bpy.types.Operator):
             fw('stroke\n')
             fw('} def\n')
             fw('newpath\n')
-            
+
             firstline = True
             for i, uvs in self._face_uv_iter(context):
                 for j, uv in enumerate(uvs):
index d04d6c7a1dd4fd4e72b8e98cebadff2afdc3b449..4a587f41aa7b2daeb56bc8cff18db50469c8fd17 100644 (file)
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-# <pep8-80 compliant>
+# <pep8 compliant>
 
 import bpy
 
index cd80d3e9c91ce339bf61d91c548b033da054d3d8..8e85b7dfb9723694f639ff6aa95647477b60e0f6 100644 (file)
@@ -452,12 +452,12 @@ class DATA_PT_modifiers(DataButtonsPanel):
         col = layout.column()
         row = col.row()
         if md.external:
-            row.operator("object.multires_pack_external", text="Pack External")
+            row.operator("object.multires_external_pack", text="Pack External")
             row.label()
             row = col.row()
             row.prop(md, "filepath", text="")
         else:
-            row.operator("object.multires_save_external", text="Save External...")
+            row.operator("object.multires_external_save", text="Save External...")
             row.label()
 
     def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui):
index a5b443a461ba7693f89a129f81f001226db4342d..9ec7168f834be6b3826eb88aa2812f00f46ccb14 100644 (file)
@@ -30,11 +30,12 @@ class PhysicsButtonsPanel(bpy.types.Panel):
     def poll(self, context):
         ob = context.active_object
         rd = context.scene.render
-        return ob and ob.game and (rd.engine == 'BLENDER_GAME')
+        return ob and ob.game and (rd.engine in self.COMPAT_ENGINES)
 
 
 class PHYSICS_PT_game_physics(PhysicsButtonsPanel):
     bl_label = "Physics"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -163,11 +164,12 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel):
 
 class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
     bl_label = "Collision Bounds"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def poll(self, context):
         game = context.object.game
         rd = context.scene.render
-        return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine == 'BLENDER_GAME')
+        return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine in self.COMPAT_ENGINES)
 
     def draw_header(self, context):
         game = context.active_object.game
@@ -203,11 +205,12 @@ class RenderButtonsPanel(bpy.types.Panel):
 
     def poll(self, context):
         rd = context.scene.render
-        return (rd.engine == 'BLENDER_GAME')
+        return (rd.engine in self.COMPAT_ENGINES)
 
 
 class RENDER_PT_game(RenderButtonsPanel):
     bl_label = "Game"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -219,6 +222,7 @@ class RENDER_PT_game(RenderButtonsPanel):
 
 class RENDER_PT_game_player(RenderButtonsPanel):
     bl_label = "Standalone Player"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -256,6 +260,7 @@ class RENDER_PT_game_player(RenderButtonsPanel):
 
 class RENDER_PT_game_stereo(RenderButtonsPanel):
     bl_label = "Stereo"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -315,6 +320,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel):
 
 class RENDER_PT_game_shading(RenderButtonsPanel):
     bl_label = "Shading"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -343,6 +349,7 @@ class RENDER_PT_game_shading(RenderButtonsPanel):
 
 class RENDER_PT_game_performance(RenderButtonsPanel):
     bl_label = "Performance"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -368,6 +375,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel):
 
 class RENDER_PT_game_sound(RenderButtonsPanel):
     bl_label = "Sound"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -390,12 +398,13 @@ class WorldButtonsPanel(bpy.types.Panel):
 
     def poll(self, context):
         scene = context.scene
-        return (scene.render.engine == 'BLENDER_GAME') and (scene.world is not None)
+        return (scene.render.engine in self.COMPAT_ENGINES) and (scene.world is not None)
 
 
 class WORLD_PT_game_context_world(WorldButtonsPanel):
     bl_label = ""
     bl_show_header = False
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def poll(self, context):
         rd = context.scene.render
@@ -424,6 +433,7 @@ class WORLD_PT_game_context_world(WorldButtonsPanel):
 
 class WORLD_PT_game_world(WorldButtonsPanel):
     bl_label = "World"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -443,11 +453,12 @@ class WORLD_PT_game_world(WorldButtonsPanel):
 
 class WORLD_PT_game_mist(WorldButtonsPanel):
     bl_label = "Mist"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw_header(self, context):
         world = context.world
 
-        self.layout.prop(world.mist, "enabled", text="")
+        self.layout.prop(world.mist, "use_mist", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -455,7 +466,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
         world = context.world
         wide_ui = context.region.width > narrowui
 
-        layout.active = world.mist.enabled
+        layout.active = world.mist.use_mist
         split = layout.split()
 
         col = split.column()
@@ -468,6 +479,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
 
 class WORLD_PT_game_physics(WorldButtonsPanel):
     bl_label = "Physics"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
index 11527ad9bda19977f1f48bd9940e50eaf3604998..6288b51020aa84a09303f05279f6f201ada2f910 100644 (file)
@@ -739,7 +739,7 @@ class ConstraintButtonsPanel(bpy.types.Panel):
         else:
             col = layout.column()
             col.prop(con, "use_relative_position")
-            if con.use_relative_position:  
+            if con.use_relative_position:
                 col.prop(con, "offset", text="Relative Pivot Point")
             else:
                 col.prop(con, "offset", text="Absolute Pivot Point")
@@ -747,6 +747,7 @@ class ConstraintButtonsPanel(bpy.types.Panel):
         col = layout.column()
         col.prop(con, "enabled_rotation_range", text="Pivot When")
 
+
 class OBJECT_PT_constraints(ConstraintButtonsPanel):
     bl_label = "Object Constraints"
     bl_context = "constraint"
index f362588cd98ba543c3c2c3563250041021209b01..c5357c515deae58a07275b93db6f2fad4bc8ac95 100644 (file)
@@ -70,8 +70,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
             else:
                 layout.prop(md, "smoke_type", text="")
 
-            if md.smoke_type == 'TYPE_DOMAIN':
-
+            if md.smoke_type == 'DOMAIN':
                 domain = md.domain_settings
 
                 split = layout.split()
@@ -93,8 +92,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
                 sub.prop(domain, "dissolve_speed", text="Time")
                 sub.prop(domain, "dissolve_smoke_log", text="Slow")
 
-            elif md.smoke_type == 'TYPE_FLOW':
-
+            elif md.smoke_type == 'FLOW':
                 flow = md.flow_settings
 
                 split = layout.split()
@@ -114,7 +112,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
                     col.prop(flow, "temperature")
                     col.prop(flow, "density")
 
-            #elif md.smoke_type == 'TYPE_COLL':
+            #elif md.smoke_type == 'COLLISION':
             #  layout.separator()
 
 
@@ -124,7 +122,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel):
 
     def poll(self, context):
         md = context.smoke
-        return md and (md.smoke_type == 'TYPE_DOMAIN')
+        return md and (md.smoke_type == 'DOMAIN')
 
     def draw(self, context):
         layout = self.layout
@@ -153,19 +151,17 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel):
 
     def poll(self, context):
         md = context.smoke
-        return md and (md.smoke_type == 'TYPE_DOMAIN')
+        return md and (md.smoke_type == 'DOMAIN')
 
     def draw(self, context):
         layout = self.layout
 
-        domain = context.smoke.domain_settings
-
-        layout.label(text="Compression:")
-        layout.prop(domain, "smoke_cache_comp", expand=True)
-
         md = context.smoke.domain_settings
         cache = md.point_cache_low
 
+        layout.label(text="Compression:")
+        layout.prop(md, "smoke_cache_comp", expand=True)
+
         point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
 
 
@@ -175,12 +171,12 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
 
     def poll(self, context):
         md = context.smoke
-        return md and (md.smoke_type == 'TYPE_DOMAIN')
+        return md and (md.smoke_type == 'DOMAIN')
 
     def draw_header(self, context):
-        high = context.smoke.domain_settings
+        md = context.smoke.domain_settings
 
-        self.layout.prop(high, "highres", text="")
+        self.layout.prop(md, "highres", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -188,6 +184,8 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
         md = context.smoke.domain_settings
         wide_ui = context.region.width > narrowui
 
+        layout.active = md.highres
+
         split = layout.split()
 
         col = split.column()
@@ -208,20 +206,17 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel):
 
     def poll(self, context):
         md = context.smoke
-        return md and (md.smoke_type == 'TYPE_DOMAIN') and md.domain_settings.highres
+        return md and (md.smoke_type == 'DOMAIN') and md.domain_settings.highres
 
     def draw(self, context):
         layout = self.layout
 
-        domain = context.smoke.domain_settings
-
-        layout.label(text="Compression:")
-        layout.prop(domain, "smoke_cache_high_comp", expand=True)
-
-
         md = context.smoke.domain_settings
         cache = md.point_cache_high
 
+        layout.label(text="Compression:")
+        layout.prop(md, "smoke_cache_high_comp", expand=True)
+
         point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
 
 
@@ -231,7 +226,7 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel):
 
     def poll(self, context):
         smoke = context.smoke
-        return (smoke and smoke.smoke_type == 'TYPE_DOMAIN')
+        return (smoke and smoke.smoke_type == 'DOMAIN')
 
     def draw(self, context):
         domain = context.smoke.domain_settings
index bcd79158f7f6527b82e587dc4c9a2b9552f4d756..f18a93aee2c336f1203a7d6d63d58500e9be2868 100644 (file)
@@ -349,7 +349,7 @@ class RENDER_PT_output(RenderButtonsPanel):
         if rd.file_format in ('AVI_JPEG', 'JPEG'):
             split = layout.split()
             split.prop(rd, "file_quality", slider=True)
-        
+
         elif rd.file_format == 'MULTILAYER':
             split = layout.split()
 
index 7d28b5a883c09a0f2d9d6b5635d01385be9c8566..d37190eb5ebd5dcdfa39e2f9b0097b36ed5e0fd8 100644 (file)
@@ -66,7 +66,7 @@ class INFO_HT_header(bpy.types.Header):
         layout.template_running_jobs()
 
         layout.template_reports_banner()
-        
+
         layout.label(text=scene.statistics())
 
         # XXX: this should be right-aligned to the RHS of the region
@@ -198,6 +198,7 @@ class INFO_MT_mesh_add(bpy.types.Menu):
         layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
         layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
 
+
 class INFO_MT_curve_add(bpy.types.Menu):
     bl_idname = "INFO_MT_curve_add"
     bl_label = "Curve"
@@ -211,6 +212,7 @@ class INFO_MT_curve_add(bpy.types.Menu):
         layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
         layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
 
+
 class INFO_MT_armature_add(bpy.types.Menu):
     bl_idname = "INFO_MT_armature_add"
     bl_label = "Armature"
index 0dcdbbb1defe134f4f7b1a8eecfc8ad0d979c6c5..c6b5092b6364816a5d0b255c73242daac0d1d211 100644 (file)
@@ -46,6 +46,7 @@ class LOGIC_PT_properties(bpy.types.Panel):
             row.prop(prop, "debug", text="", toggle=True, icon='INFO')
             row.operator("object.game_property_remove", text="", icon='X').index = i
 
+
 class LOGIC_MT_logicbricks_add(bpy.types.Menu):
     bl_label = "Add"
 
index db641a48e38275d99d5f2a2ca1d4723d2f4fff4d..365835009ba03ebf922040aff8478dd3803dc2b2 100644 (file)
@@ -139,8 +139,10 @@ class NODE_MT_node(bpy.types.Menu):
 
         layout.separator()
 
-        layout.operator("node.hide")
-        layout.operator("node.mute")
+        layout.operator("node.hide_toggle")
+        layout.operator("node.mute_toggle")
+        layout.operator("node.preview_toggle")
+        layout.operator("node.hide_socket_toggle")
 
         # XXX
         # layout.operator("node.rename")
index b94acf6f3ad4e88386c967b3fc9e4093a8d1f2e8..befb05cff441652b672bf5b49acb6d3c90086a3e 100644 (file)
@@ -457,7 +457,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
             row = layout.row(align=True)
             sub = row.row()
             sub.scale_x = 2.0
-          
+
             if not context.screen.animation_playing:
                 sub.operator("screen.animation_play", text="", icon='PLAY')
             else:
index 1eca1a9e05cbf72e2deb63c01687044a613c626c..692f1581bd6b7d7b59d0592256740b19f5756b66 100644 (file)
@@ -54,6 +54,9 @@ class TEXT_HT_header(bpy.types.Header):
         if text:
             row = layout.row()
             row.operator("text.run_script")
+
+            row = layout.row()
+            row.active = text.name.endswith(".py")
             row.prop(text, "use_module")
 
             row = layout.row()
@@ -63,10 +66,7 @@ class TEXT_HT_header(bpy.types.Header):
                 else:
                     row.label(text="File: %s" % text.filepath)
             else:
-                if text.library:
-                    row.label(text="Text: External")
-                else:
-                    row.label(text="Text: Internal")
+                row.label(text="Text: External" if text.library else "Text: Internal")
 
 
 class TEXT_PT_properties(bpy.types.Panel):
index 075a844c5433cd63e6966ab45ba52c98b4661dce..9613973cea41451265ec7936d55e587098ab6e1c 100644 (file)
@@ -165,11 +165,11 @@ class USERPREF_PT_interface(bpy.types.Panel):
         sub.enabled = view.show_mini_axis
         sub.prop(view, "mini_axis_size", text="Size")
         sub.prop(view, "mini_axis_brightness", text="Brightness")
-        
+
         col.separator()
         col.separator()
         col.separator()
-        
+
         col.label(text="Properties Window:")
         col.prop(view, "properties_width_check")
 
@@ -561,7 +561,7 @@ class USERPREF_PT_theme(bpy.types.Panel):
             ui = theme.user_interface.wcol_scroll
             col.label(text="Scroll Bar:")
             ui_items_general(col, ui)
-            
+
             ui = theme.user_interface.wcol_progress
             col.label(text="Progress Bar:")
             ui_items_general(col, ui)
@@ -1234,7 +1234,7 @@ class USERPREF_PT_addons(bpy.types.Panel):
                             split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"]
                         if info["tracker_url"]:
                             split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"]
-                        
+
                         if info["wiki_url"] and info["tracker_url"]:
                             split.separator()
                         else:
index ba2705331a97fde9412100e2cc63261eaeacb28c..8404ee83f167554f99e7c7b67f5c0f932a678b41 100644 (file)
@@ -38,7 +38,7 @@ class VIEW3D_HT_header(bpy.types.Header):
         # Menus
         if context.area.show_menus:
             sub = row.row(align=True)
-                       
+
             sub.menu("VIEW3D_MT_view")
 
             # Select Menu
@@ -855,8 +855,8 @@ class VIEW3D_MT_object_game_properties(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.operator("object.game_property_copy", text="Replace").operation="REPLACE"
-        layout.operator("object.game_property_copy", text="Merge").operation="MERGE"
+        layout.operator("object.game_property_copy", text="Replace").operation = 'REPLACE'
+        layout.operator("object.game_property_copy", text="Merge").operation = 'MERGE'
         layout.operator_menu_enum("object.game_property_copy", "property", text="Copy...")
         layout.separator()
         layout.operator("object.game_property_clear")
@@ -1879,6 +1879,7 @@ class VIEW3D_PT_view3d_properties(bpy.types.Panel):
         scene = context.scene
 
         col = layout.column()
+        col.active = view.region_3d.view_perspective != 'CAMERA'
         col.prop(view, "lens")
         col.label(text="Lock to Object:")
         col.prop(view, "lock_object", text="")
index 8716794bbd40492df802c5fef74ffa5eb9e05cf6..e8bbb58a895a72ed2de7d1fce4b0e786816a880c 100644 (file)
@@ -47,15 +47,19 @@ void multires_force_external_reload(struct Object *ob);
 struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
        int local_mmd, struct DerivedMesh*, struct Object *, int, int);
 
-struct MultiresModifierData *find_multires_modifier(struct Object *ob);
-struct DerivedMesh *get_multires_dm(struct Object *ob);
+struct MultiresModifierData *find_multires_modifier(struct Scene *scene, struct Object *ob);
+struct DerivedMesh *get_multires_dm(struct Scene *scene, struct MultiresModifierData *mmd,
+                               struct Object *ob);
 void multiresModifier_join(struct Object *);
 void multiresModifier_del_levels(struct MultiresModifierData *, struct Object *, int direction);
 void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob,
                                int updateblock, int simple);
-int multiresModifier_reshape(struct Object *dst, struct Object *src);
-int multiresModifier_reshapeFromDM(struct Object *ob, struct DerivedMesh *srcdm);
-int multiresModifier_reshapeFromDeformMod(struct Object *ob, struct ModifierData *md);
+int multiresModifier_reshape(struct Scene *scene, struct MultiresModifierData *mmd,
+                               struct Object *dst, struct Object *src);
+int multiresModifier_reshapeFromDM(struct Scene *scene, struct MultiresModifierData *mmd,
+                               struct Object *ob, struct DerivedMesh *srcdm);
+int multiresModifier_reshapeFromDeformMod(struct Scene *scene, struct MultiresModifierData *mmd,
+                               struct Object *ob, struct ModifierData *md);
 
 void multires_stitch_grids(struct Object *);
 
index 2086f4064d57ea6363fe6b51d0109842c02298a2..195dfe2ea70d5f95f224990c41e00e843d0a9de3 100644 (file)
@@ -72,6 +72,11 @@ IF(WITH_FFMPEG)
        ADD_DEFINITIONS(-DWITH_FFMPEG)
 ENDIF(WITH_FFMPEG)
 
+IF(WITH_LCMS)
+       SET(INC ${INC} ${LCMS_INCLUDE_DIR})
+       ADD_DEFINITIONS(-DWITH_LCMS)
+ENDIF(WITH_LCMS)
+
 IF(WITH_PYTHON)
        SET(INC ${INC} ../python ${PYTHON_INC})
 ELSE(WITH_PYTHON)
index 9d649edd81ac76d32bb56cbdc4dea46c62ffb547..339326f75d59a5da36b5896b25a2f21d2879f8a3 100644 (file)
@@ -1077,6 +1077,21 @@ static int emDM_getNumFaces(DerivedMesh *dm)
        return BLI_countlist(&emdm->em->faces);
 }
 
+static void emDM_getVertCos(DerivedMesh *dm, float (*cos_r)[3])
+{
+       EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
+       EditVert *eve;
+       int i;
+
+       for (i=0,eve= emdm->em->verts.first; eve; i++,eve=eve->next) {
+               if (emdm->vertexCos) {
+                       copy_v3_v3(cos_r[i], emdm->vertexCos[i]);
+               } else {
+                       copy_v3_v3(cos_r[i], eve->co);
+               }
+       }
+}
+
 static void emDM_getVert(DerivedMesh *dm, int index, MVert *vert_r)
 {
        EditVert *ev = ((EditMeshDerivedMesh *)dm)->em->verts.first;
@@ -1309,6 +1324,8 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
        emdm->dm.getNumEdges = emDM_getNumEdges;
        emdm->dm.getNumFaces = emDM_getNumFaces;
 
+       emdm->dm.getVertCos = emDM_getVertCos;
+
        emdm->dm.getVert = emDM_getVert;
        emdm->dm.getEdge = emDM_getEdge;
        emdm->dm.getFace = emDM_getFace;
index e15e5bc9b45fb99ca404177d64a9e55016d58483..80f39531b349184bedf9366872074444abcf79dc 100644 (file)
@@ -200,7 +200,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
                return NULL;
        if(ob->sculpt->pbvh) {
                cddm->pbvh= ob->sculpt->pbvh;
-               cddm->pbvh_draw = (cddm->mvert == me->mvert);
+               cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb;
        }
 
        /* always build pbvh from original mesh, and only use it for drawing if
@@ -208,7 +208,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
           that this is actually for, to support a pbvh on a modified mesh */
        if(!cddm->pbvh && ob->type == OB_MESH) {
                cddm->pbvh = BLI_pbvh_new();
-               cddm->pbvh_draw = (cddm->mvert == me->mvert);
+               cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb;
                BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert,
                                   me->totface, me->totvert);
        }
@@ -853,47 +853,41 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
                }
        }
        else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
-               int state = 1;
-               int prevstate = 1;
                int prevstart = 0;
                GPU_vertex_setup(dm);
                GPU_normal_setup(dm);
                if( useColors && mc )
                        GPU_color_setup(dm);
                if( !GPU_buffer_legacy(dm) ) {
+                       int tottri = dm->drawObject->nelements/3;
                        glShadeModel(GL_SMOOTH);
-                       for( i = 0; i < dm->drawObject->nelements/3; i++ ) {
+
+                       for( i = 0; i < tottri; i++ ) {
                                int actualFace = dm->drawObject->faceRemap[i];
                                int drawSmooth = (mf[actualFace].flag & ME_SMOOTH);
-                               int dontdraw = 0;
+                               int draw = 1;
+
                                if(index) {
                                        orig = index[actualFace];
                                        if(setDrawOptions && orig == ORIGINDEX_NONE)
-                                               dontdraw = 1;
+                                               draw = 0;
                                }
                                else
                                        orig = actualFace;
-                               if( dontdraw ) {
-                                       state = 0;
-                               }
-                               else {
-                                       if(!setDrawOptions || setDrawOptions(userData, orig, &drawSmooth)) {
-                                               state = 1;
-                                       }
-                                       else {
-                                               state = 0;
-                                       }
-                               }
-                               if( prevstate != state && prevstate == 1 ) {
-                                       if( i-prevstart > 0 ) {
-                                               glDrawArrays(GL_TRIANGLES,prevstart*3,(i-prevstart)*3);
-                                       }
-                                       prevstart = i;
+
+                               if(setDrawOptions && !setDrawOptions(userData, orig, &drawSmooth))
+                                       draw = 0;
+
+                               /* Goal is to draw as long of a contiguous triangle
+                                  array as possible, so draw when we hit either an
+                                  invisible triangle or at the end of the array */
+                               if(!draw || i == tottri - 1) {
+                                       if(prevstart != i)
+                                               /* Add one to the length (via `draw')
+                                                  if we're drawing at the end of the array */
+                                               glDrawArrays(GL_TRIANGLES,prevstart*3, (i-prevstart+draw)*3);
+                                       prevstart = i + 1;
                                }
-                               prevstate = state;
-                       }
-                       if(state==1) {
-                               glDrawArrays(GL_TRIANGLES,prevstart*3,dm->drawObject->nelements-prevstart*3);
                        }
                        glShadeModel(GL_FLAT);
                }
index f860f57993030e7d26674e051b19094852b75cf5..ef95139abda44c90ebda8a464d17343eff279e86 100644 (file)
@@ -440,10 +440,8 @@ Image *BKE_add_image_imbuf(ImBuf *ibuf)
 {
        /* on save, type is changed to FILE in editsima.c */
        Image *ima;
-       char filename[sizeof(ibuf->name)];
 
-       BLI_split_dirfile(ibuf->name, NULL, filename);
-       ima= image_alloc(filename, IMA_SRC_FILE, IMA_TYPE_IMAGE);
+       ima= image_alloc(BLI_path_basename(ibuf->name), IMA_SRC_FILE, IMA_TYPE_IMAGE);
 
        if (ima) {
                BLI_strncpy(ima->name, ibuf->name, FILE_MAX);
index ee8a74d6fbb503576fc942e70c83f132b16b8754..d567e0f0408bbca82287848cc23122e00e0ec9d3 100644 (file)
@@ -60,35 +60,33 @@ static const int multires_side_tot[] = {0, 2, 3, 5,  9,  17,  33,   65,   129,
 static void multires_mvert_to_ss(DerivedMesh *dm, MVert *mvert);
 static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl);
 
-DerivedMesh *get_multires_dm(Object *ob)
+DerivedMesh *get_multires_dm(Scene *scene, MultiresModifierData *mmd, Object *ob)
 {
-       Mesh *me= ob->data;
-       ModifierData *md= (ModifierData *)find_multires_modifier(ob);
+       ModifierData *md= (ModifierData *)mmd;
        ModifierTypeInfo *mti = modifierType_getInfo(md->type);
-       DerivedMesh *tdm = CDDM_from_mesh(me, ob);
+       DerivedMesh *tdm = mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH);
        DerivedMesh *dm;
 
-       CDDM_calc_normals(tdm);
        dm = mti->applyModifier(md, ob, tdm, 0, 1);
-
-       if(tdm != dm) tdm->release(tdm);
+       if (dm == tdm) {
+               dm = CDDM_copy(tdm);
+       }
 
        return dm;
 }
 
-MultiresModifierData *find_multires_modifier(Object *ob)
+MultiresModifierData *find_multires_modifier(Scene *scene, Object *ob)
 {
        ModifierData *md;
-       MultiresModifierData *mmd = NULL;
 
        for(md = ob->modifiers.first; md; md = md->next) {
                if(md->type == eModifierType_Multires) {
-                       mmd = (MultiresModifierData*)md;
-                       break;
+                       if (modifier_isEnabled(scene, md, eModifierMode_Realtime))
+                               return (MultiresModifierData*)md;
                }
        }
 
-       return mmd;
+       return NULL;
 }
 
 static int multires_get_level(Object *ob, MultiresModifierData *mmd, int render)
@@ -215,9 +213,10 @@ void multiresModifier_join(Object *ob)
 }
 #endif
 
-int multiresModifier_reshapeFromDM(Object *ob, DerivedMesh *srcdm)
+int multiresModifier_reshapeFromDM(Scene *scene, MultiresModifierData *mmd,
+                               Object *ob, DerivedMesh *srcdm)
 {
-       DerivedMesh *mrdm = get_multires_dm (ob);
+       DerivedMesh *mrdm = get_multires_dm (scene, mmd, ob);
 
        if(mrdm && srcdm && mrdm->getNumVerts(mrdm) == srcdm->getNumVerts(srcdm)) {
                multires_mvert_to_ss(mrdm, srcdm->getVertArray(srcdm));
@@ -236,13 +235,14 @@ int multiresModifier_reshapeFromDM(Object *ob, DerivedMesh *srcdm)
 }
 
 /* Returns 1 on success, 0 if the src's totvert doesn't match */
-int multiresModifier_reshape(Object *dst, Object *src)
+int multiresModifier_reshape(Scene *scene, MultiresModifierData *mmd, Object *dst, Object *src)
 {
-       DerivedMesh *srcdm = src->derivedFinal;
-       return multiresModifier_reshapeFromDM(dst, srcdm);
+       DerivedMesh *srcdm = mesh_get_derived_final(scene, src, CD_MASK_BAREMESH);
+       return multiresModifier_reshapeFromDM(scene, mmd, dst, srcdm);
 }
 
-int multiresModifier_reshapeFromDeformMod(Object *ob, ModifierData *md)
+int multiresModifier_reshapeFromDeformMod(Scene *scene, MultiresModifierData *mmd,
+                               Object *ob, ModifierData *md)
 {
        ModifierTypeInfo *mti = modifierType_getInfo(md->type);
        DerivedMesh *dm, *ndm;
@@ -250,7 +250,7 @@ int multiresModifier_reshapeFromDeformMod(Object *ob, ModifierData *md)
        float (*deformedVerts)[3];
 
        /* Create DerivedMesh for deformation modifier */
-       dm = get_multires_dm(ob);
+       dm = get_multires_dm(scene, mmd, ob);
        numVerts= dm->getNumVerts(dm);
        deformedVerts= MEM_callocN(sizeof(float)*numVerts*3, "multiresReshape_deformVerts");
 
@@ -264,7 +264,7 @@ int multiresModifier_reshapeFromDeformMod(Object *ob, ModifierData *md)
        dm->release(dm);
 
        /* Reshaping */
-       result= multiresModifier_reshapeFromDM(ob, ndm);
+       result= multiresModifier_reshapeFromDM(scene, mmd, ob, ndm);
 
        /* Cleanup */
        ndm->release(ndm);
@@ -1286,6 +1286,7 @@ void multires_load_old(Object *ob, Mesh *me)
        ModifierData *md;
        MultiresModifierData *mmd;
        DerivedMesh *dm, *orig;
+       CustomDataLayer *l;
        int i;
 
        /* Load original level into the mesh */
@@ -1331,6 +1332,14 @@ void multires_load_old(Object *ob, Mesh *me)
        dm->release(dm);
        orig->release(orig);
 
+       /* Copy the first-level data to the mesh */
+       for(i = 0, l = me->mr->vdata.layers; i < me->mr->vdata.totlayer; ++i, ++l)
+               CustomData_add_layer(&me->vdata, l->type, CD_REFERENCE, l->data, me->totvert);
+       for(i = 0, l = me->mr->fdata.layers; i < me->mr->fdata.totlayer; ++i, ++l)
+               CustomData_add_layer(&me->fdata, l->type, CD_REFERENCE, l->data, me->totface);
+       memset(&me->mr->vdata, 0, sizeof(CustomData));
+       memset(&me->mr->fdata, 0, sizeof(CustomData));
+
        /* Remove the old multires */
        multires_free(me->mr);
        me->mr= NULL;
index 576b3481d07a62046f8a960b1245c52e261cefa7..972c07eb272564be56aa2badbc0eecf1e8c85367 100644 (file)
@@ -320,6 +320,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec
                ob->recalc |= OB_RECALC;
        }
 }
+
 void unlink_object(Scene *scene, Object *ob)
 {
        Object *obt;
@@ -334,6 +335,8 @@ void unlink_object(Scene *scene, Object *ob)
        bConstraint *con;
        //bActionStrip *strip; // XXX animsys 
        ModifierData *md;
+       ARegion *ar;
+       RegionView3D *rv3d;
        int a;
        
        unlink_controllers(&ob->controllers);
@@ -606,17 +609,27 @@ void unlink_object(Scene *scene, Object *ob)
                while(sa) {
                        SpaceLink *sl;
 
+                       if (sa->spacetype == SPACE_VIEW3D) {
+                               for (ar= sa->regionbase.first; ar; ar= ar->next) {
+                                       if (ar->regiontype==RGN_TYPE_WINDOW) {
+                                               rv3d= (RegionView3D *)ar->regiondata;
+                                               if (rv3d->persp == RV3D_CAMOB)
+                                                       rv3d->persp= RV3D_PERSP;
+                                               if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB)
+                                                       rv3d->localvd->persp= RV3D_PERSP;
+                                       }
+                               }
+                       }
+
                        for (sl= sa->spacedata.first; sl; sl= sl->next) {
                                if(sl->spacetype==SPACE_VIEW3D) {
                                        View3D *v3d= (View3D*) sl;
 
                                        if(v3d->camera==ob) {
                                                v3d->camera= NULL;
-                                               // XXX if(v3d->persp==V3D_CAMOB) v3d->persp= V3D_PERSP;
                                        }
                                        if(v3d->localvd && v3d->localvd->camera==ob ) {
                                                v3d->localvd->camera= NULL;
-                                               // XXX if(v3d->localvd->persp==V3D_CAMOB) v3d->localvd->persp= V3D_PERSP;
                                        }
                                }
                                else if(sl->spacetype==SPACE_OUTLINER) {
@@ -679,8 +692,8 @@ void *add_camera(char *name)
        cam->clipend= 100.0f;
        cam->drawsize= 0.5f;
        cam->ortho_scale= 6.0;
-       cam->flag |= CAM_SHOWTITLESAFE;
-       cam->passepartalpha = 0.2f;
+       cam->flag |= CAM_SHOWPASSEPARTOUT;
+       cam->passepartalpha = 0.5f;
        
        return cam;
 }
@@ -1026,6 +1039,8 @@ Object *add_only_object(int type, char *name)
        ob->anisotropicFriction[2] = 1.0f;
        ob->gameflag= OB_PROP|OB_COLLISION;
        ob->margin = 0.0;
+       ob->init_state=1;
+       ob->state=1;
        /* ob->pad3 == Contact Processing Threshold */
        ob->m_contactProcessingThreshold = 1.;
        
@@ -1265,6 +1280,7 @@ Object *copy_object(Object *ob)
        
        for (md=ob->modifiers.first; md; md=md->next) {
                ModifierData *nmd = modifier_new(md->type);
+               BLI_strncpy(nmd->name, md->name, sizeof(nmd->name));
                modifier_copyData(md, nmd);
                BLI_addtail(&obn->modifiers, nmd);
        }
index 897a51a5634f637e7be294882c86d31a5aa04962..e13264babf4a9c5e4c53ee779e9ec3be8b92f4d1 100644 (file)
@@ -317,7 +317,7 @@ Scene *add_scene(char *name)
        int a;
 
        sce= alloc_libblock(&G.main->scene, ID_SCE, name);
-       sce->lay= 1;
+       sce->lay= sce->layact= 1;
        
        sce->r.mode= R_GAMMA|R_OSA|R_SHADOW|R_SSS|R_ENVMAP|R_RAYTRACE;
        sce->r.cfra= 1;
index f1e60ee2cfd5d36d9dae616fa53a7afac10b9ecd..3ff7370a443b42b793af3c874880118ed6ea9caa 100644 (file)
@@ -566,7 +566,7 @@ void calc_sequence(Scene *scene, Sequence *seq)
        }
 }
 
-/* note: caller should run calc_sequence(scene, seq) */
+/* note: caller should run calc_sequence(scene, seq) after */
 void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range)
 {
        char str[FILE_MAXDIR+FILE_MAXFILE];
index 574ec848291b3e0cd5332d888b4e698209e4ff3d..bddfeb049a8584d699e240d18e47f34513bb8eeb 100644 (file)
@@ -355,11 +355,16 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S
 
                        if(calc->vert)
                        {
-                               VECCOPY(tmp_co, calc->vert[i].co);
-                               if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)
+                               /* calc->vert contains verts from derivedMesh  */
+                               /* this coordinated are deformed by vertexCos only for normal projection (to get correct normals) */
+                               /* for other cases calc->varts contains undeformed coordinates and vertexCos should be used */
+                               if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) {
+                                       VECCOPY(tmp_co, calc->vert[i].co);
                                        normal_short_to_float_v3(tmp_no, calc->vert[i].no);
-                               else
+                               } else {
+                                       VECCOPY(tmp_co, co);
                                        VECCOPY(tmp_no, proj_axis);
+                               }
                        }
                        else
                        {
index 53206bb3970c8a9032f5631e4863f62801fb43ff..0d7738353df55a31fd17a10c3faa968b7cc9854a 100644 (file)
@@ -2328,6 +2328,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
        int gridInternalEdges;
        MEdge *medge = NULL;
        MFace *mface = NULL;
+       int *orig_indices;
        FaceVertWeight *qweight, *tweight;
 
        DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM,
@@ -2437,6 +2438,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
 
        faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(char)*2*totface, "faceFlags");
 
+       orig_indices = (int*)ccgdm->dm.getFaceDataArray(&ccgdm->dm, CD_ORIGINDEX);
        for(index = 0; index < totface; ++index) {
                CCGFace *f = ccgdm->faceMap[index].face;
                int numVerts = ccgSubSurf_getFaceNumVerts(f);
@@ -2450,6 +2452,9 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
                ccgdm->faceMap[index].startEdge = edgeNum;
                ccgdm->faceMap[index].startFace = faceNum;
 
+               if(orig_indices)
+                       orig_indices[faceNum] = origIndex;
+
                /* set the face base vert */
                *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum;
 
index f1036b66f699c414686a8ed4bc905c724cd18953..e8328d0e62214c759a6676419f7b2e578ac532d1 100644 (file)
@@ -232,7 +232,6 @@ int reopen_text(Text *text)
        int i, llen, len, res;
        unsigned char *buffer;
        TextLine *tmp;
-       char sfile[FILE_MAXFILE];
        char str[FILE_MAXDIR+FILE_MAXFILE];
        struct stat st;
 
@@ -240,7 +239,6 @@ int reopen_text(Text *text)
        
        BLI_strncpy(str, text->name, FILE_MAXDIR+FILE_MAXFILE);
        BLI_path_abs(str, G.sce);
-       BLI_split_dirfile(str, NULL, sfile);
        
        fp= fopen(str, "r");
        if(fp==NULL) return 0;
@@ -331,19 +329,17 @@ Text *add_text(char *file, const char *relpath)
        unsigned char *buffer;
        TextLine *tmp;
        Text *ta;
-       char sfile[FILE_MAXFILE];
        char str[FILE_MAXDIR+FILE_MAXFILE];
        struct stat st;
 
        BLI_strncpy(str, file, FILE_MAXDIR+FILE_MAXFILE);
        if (relpath) /* can be NULL (bg mode) */
                BLI_path_abs(str, relpath);
-       BLI_split_dirfile(str, NULL, sfile);
        
        fp= fopen(str, "r");
        if(fp==NULL) return NULL;
        
-       ta= alloc_libblock(&G.main->text, ID_TXT, sfile);
+       ta= alloc_libblock(&G.main->text, ID_TXT, BLI_path_basename(str));
        ta->id.us= 1;
 
        ta->lines.first= ta->lines.last= NULL;
index e6ea3559e8c360b491b3efc3ada59b9194d95550..6c98d30e4b1e32447a54e08108e2409f86e94736 100644 (file)
@@ -54,7 +54,6 @@ char *BLI_last_slash(const char *string);
 int      BLI_add_slash(char *string);
 void  BLI_del_slash(char *string);
 char *first_slash(char *string);
-const char *BLI_short_filename(const char *string);
 
 /* only for the sane unix world: direct calls to system functions :( */
 #ifndef WIN32
index 9bdc6c431e8e225c332fd04348d586d37eb66b74..fb30e991200fd6ed301a0e4142084ccf39bf9dd7 100644 (file)
@@ -53,6 +53,7 @@ void BLI_make_exist(char *dir);
 void BLI_make_existing_file(char *name);
 void BLI_split_dirfile(const char *string, char *dir, char *file);
 void BLI_join_dirfile(char *string, const char *dir, const char *file);
+char *BLI_path_basename(char *path);
 int BKE_rebase_path(char *abs, int abs_size, char *rel, int rel_size, const char *base_dir, const char *src_dir, const char *dest_dir);
 void BLI_getlastdir(const char* dir, char *last, int maxlen);
 int BLI_testextensie(const char *str, const char *ext);
index 9b1d29e6e123dc40f9b6e77e3465d8bcd7eb317c..a56cbb65538b4749fb6348277c7e4cd2db382da2 100644 (file)
@@ -661,7 +661,7 @@ void findMissingFiles(char *basepath, char *str) {
        char filepath[FILE_MAX], *libpath;
        int filesize, recur_depth;
        
-       char dirname[FILE_MAX], filename[FILE_MAX], filename_new[FILE_MAX];
+       char dirname[FILE_MAX], filename_new[FILE_MAX];
        
        //XXX waitcursor( 1 );
        
@@ -686,9 +686,8 @@ void findMissingFiles(char *basepath, char *str) {
                                /* can the dir be opened? */
                                filesize = -1;
                                recur_depth = 0;
-                               BLI_split_dirfile(filepath, NULL, filename); /* the file to find */
                                
-                               findFileRecursive(filename_new, dirname, filename, &filesize, &recur_depth);
+                               findFileRecursive(filename_new, dirname, BLI_path_basename(filepath), &filesize, &recur_depth);
                                if (filesize == -1) { /* could not open dir */
                                        printf("Could not open dir \"%s\"\n", dirname);
                                        return;
index 73434c548a0f97f59252076448946da652ad8b7b..a543f4623f15c595646d9d002def981d68ee8de7 100644 (file)
@@ -80,31 +80,6 @@ char *BLI_last_slash(const char *string) {
        else return lfslash;
 }
 
-static const char *last_slash_len(const char *string, int len) {
-       int a;
-
-       for(a=len-1; a>=0; a--)
-               if(string[a] == '/' || string[a] == '\\')
-                       return &string[a];
-       
-       return NULL;
-}
-
-const char *BLI_short_filename(const char *string) {
-       const char *ls, *lls;
-       
-       ls= last_slash_len(string, strlen(string));
-       if(!ls)
-               return string;
-       
-       lls= last_slash_len(string, ls-string);
-
-       if(lls)
-               return lls+1;
-       else
-               return ls+1;
-}
-
 /* adds a slash if there isnt one there alredy */
 int BLI_add_slash(char *string) {
        int len = strlen(string);
index 301b981cdc76d6da7baa56d8fd6b22d0c054a296..2cea9c21a57d57283a2fc7259312b798a5d03513 100644 (file)
@@ -1172,6 +1172,12 @@ void BLI_join_dirfile(char *string, const char *dir, const char *file)
        }
 }
 
+/* like pythons os.path.basename( ) */
+char *BLI_path_basename(char *path)
+{
+       char *filename= BLI_last_slash(path);
+       return filename ? filename + 1 : path;
+}
 
 /*
   Produce image export path.
index 145d0a9c0c88a33e59cc94cfbecdce42f167d629..3fb20f16acf36b63575af7e7d0913b2bc06d1c2f 100644 (file)
@@ -3074,6 +3074,7 @@ static void lib_link_particlesystems(FileData *fd, Object *ob, ID *id, ListBase
                        for(; pt; pt=pt->next)
                                pt->ob=newlibadr(fd, id->lib, pt->ob);
 
+                       psys->parent= newlibadr_us(fd, id->lib, psys->parent);
                        psys->target_ob = newlibadr(fd, id->lib, psys->target_ob);
 
                        if(psys->clmd) {
@@ -3143,7 +3144,7 @@ static void direct_link_particlesystems(FileData *fd, ListBase *particles)
                psys->childcachebufs.first = psys->childcachebufs.last = NULL;
                psys->frand = NULL;
                psys->pdd = NULL;
-
+               
                direct_link_pointcache_list(fd, &psys->ptcaches, &psys->pointcache);
 
                if(psys->clmd) {
@@ -10857,6 +10858,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
        /* put 2.50 compatibility code here until next subversion bump */
        {
                Object *ob;
+               Scene *scene;
                bScreen *sc;
 
                for (sc= main->screen.first; sc; sc= sc->id.next) {
@@ -10913,6 +10915,18 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
                                }
                        }
                }
+               
+               /* initialise scene active layer */
+               for (scene= main->scene.first; scene; scene=scene->id.next) {
+                       int i;
+                       for(i=0; i<20; i++) {
+                               if(scene->lay & (1<<i)) {
+                                       scene->layact= 1<<i;
+                                       break;
+                               }
+                       }
+               }
+
        }
 
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! */
index 03d372977de11425b3a06b54f5a67be2d77587a0..7a994d6b41870e295536a8d4698a1c9d7a333858 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod Liverseed.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 #include <stdlib.h>
 #include <stdio.h>
 #include <math.h>
@@ -638,8 +661,8 @@ public:
                        source.setAccessorCount(totuv);
                        source.setAccessorStride(2);
                        COLLADASW::SourceBase::ParameterNameList &param = source.getParameterNameList();
-                       param.push_back("X");
-                       param.push_back("Y");
+                       param.push_back("S");
+                       param.push_back("T");
                        
                        source.prepareToAppendValues();
                        
@@ -908,7 +931,7 @@ public:
                Object *ob_arm = get_assigned_armature(ob);
                bArmature *arm = (bArmature*)ob_arm->data;
 
-               const std::string& controller_id = get_controller_id(ob_arm);
+               const std::string& controller_id = get_controller_id(ob_arm, ob);
 
                COLLADASW::InstanceController ins(mSW);
                ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id));
@@ -1051,9 +1074,9 @@ private:
                TransformWriter::add_node_transform(node, mat, NULL);
        }
 
-       std::string get_controller_id(Object *ob_arm)
+       std::string get_controller_id(Object *ob_arm, Object *ob)
        {
-               return translate_id(id_name(ob_arm)) + SKIN_CONTROLLER_ID_SUFFIX;
+               return translate_id(id_name(ob_arm)) + "_" + translate_id(id_name(ob)) + SKIN_CONTROLLER_ID_SUFFIX;
        }
 
        // ob should be of type OB_MESH
@@ -1087,7 +1110,7 @@ private:
                if (!me->dvert) return;
 
                std::string controller_name = id_name(ob_arm);
-               std::string controller_id = get_controller_id(ob_arm);
+               std::string controller_id = get_controller_id(ob_arm, ob);
 
                openSkin(controller_id, controller_name,
                                 COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, get_geometry_id(ob)));
@@ -1555,18 +1578,27 @@ public:
                else {
                        ep.setIndexOfRefraction(1.0f);
                }
+       
+               COLLADASW::ColorOrTexture cot;
+
                // transparency
-               ep.setTransparency(ma->alpha);
+               // Tod: because we are in A_ONE mode transparency is calculated like this:
+               ep.setTransparency(1.0f);
+               cot = getcol(0.0f, 0.0f, 0.0f, ma->alpha);
+               ep.setTransparent(cot);
+
                // emission
-               COLLADASW::ColorOrTexture cot = getcol(0.0f, 0.0f, 0.0f, 1.0f);
+               cot=getcol(ma->emit, ma->emit, ma->emit, 1.0f);
                ep.setEmission(cot);
-               ep.setTransparent(cot);
+
                // diffuse 
                cot = getcol(ma->r, ma->g, ma->b, 1.0f);
                ep.setDiffuse(cot);
+
                // ambient
                cot = getcol(ma->ambr, ma->ambg, ma->ambb, 1.0f);
                ep.setAmbient(cot);
+
                // reflective, reflectivity
                if (ma->mode & MA_RAYMIRROR) {
                        cot = getcol(ma->mirr, ma->mirg, ma->mirb, 1.0f);
@@ -1574,15 +1606,16 @@ public:
                        ep.setReflectivity(ma->ray_mirror);
                }
                else {
-                       cot = getcol(0.0f, 0.0f, 0.0f, 1.0f);
+                       cot = getcol(ma->specr, ma->specg, ma->specb, 1.0f);
                        ep.setReflective(cot);
-                       ep.setReflectivity(0.0f);
+                       ep.setReflectivity(ma->spec);
                }
+
                // specular
                if (ep.getShaderType() != COLLADASW::EffectProfile::LAMBERT) {
                        cot = getcol(ma->specr, ma->specg, ma->specb, 1.0f);
                        ep.setSpecular(cot);
-               }
+               }       
 
                // XXX make this more readable if possible
 
@@ -1686,12 +1719,28 @@ public:
                                // most widespread de-facto standard.
                                texture.setProfileName("FCOLLADA");
                                texture.setChildElementName("bump");                            
+#ifdef WIN32   // currently, Windows builds are using revision 746 of OpenCollada while Linux and Mac are using an older revision 721
+                               ep.addExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture));
+#else
                                ep.setExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture));
+#endif
                        }
                }
                // performs the actual writing
                ep.addProfileElements();
+               bool twoSided = false;
+               if (ob->type == OB_MESH && ob->data) {
+                       Mesh *me = (Mesh*)ob->data;
+                       if (me->flag & ME_TWOSIDED)
+                               twoSided = true;
+               }
+               if (twoSided)
+                       ep.addExtraTechniqueParameter("GOOGLEEARTH", "double_sided", 1);
+               ep.addExtraTechniques(mSW);
+
                ep.closeProfile();
+               if (twoSided)
+                       mSW->appendTextBlock("<extra><technique profile=\"MAX3D\"><double_sided>1</double_sided></technique></extra>");
                closeEffect();  
        }
        
@@ -2433,6 +2482,9 @@ protected:
                                }
                        }
                }
+
+               // keep the keys in ascending order
+               std::sort(fra.begin(), fra.end());
        }
 
        void find_rotation_frames(Object *ob, std::vector<float> &fra, const char *prefix, int rotmode)
index 1a0c292a3ddb81e715997ff373cb63ac4380a65c..bb6d400fdf10b9dbd52ca5c849dd888779f7d4c6 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 struct Scene;
 
 class DocumentExporter
index 3c86d205c6e1e04251950db0847c8c8fa7239031..b4185c5021f9b133ce0f81c7eae17cec94aef165 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Nathan Letwory.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 // TODO:
 // * name imported objects
 // * import object rotation as euler
@@ -396,8 +419,6 @@ private:
        std::vector<COLLADAFW::Node*> root_joints;
        std::map<COLLADAFW::UniqueId, Object*> joint_parent_map;
 
-       std::vector<Object*> armature_objects;
-
        MeshImporterBase *mesh_importer;
        AnimationImporterBase *anim_importer;
 
@@ -506,13 +527,11 @@ private:
                        joint_data.push_back(jd);
                }
 
-               // called from write_controller
-               Object *create_armature(const COLLADAFW::SkinController* co, Scene *scene)
+               void set_controller(const COLLADAFW::SkinController* co)
                {
-                       ob_arm = add_object(scene, OB_ARMATURE);
-
                        controller_uid = co->getUniqueId();
 
+                       // fill in joint UIDs
                        const COLLADAFW::UniqueIdArray& joint_uids = co->getJoints();
                        for (unsigned int i = 0; i < joint_uids.getCount(); i++) {
                                joint_data[i].joint_uid = joint_uids[i];
@@ -524,7 +543,21 @@ private:
                                // now we'll be able to get inv bind matrix from joint id
                                // joint_id_to_joint_index_map[joint_ids[i]] = i;
                        }
+               }
+
+               // called from write_controller
+               Object *create_armature(Scene *scene)
+               {
+                       ob_arm = add_object(scene, OB_ARMATURE);
+                       return ob_arm;
+               }
+
+               Object* set_armature(Object *ob_arm)
+               {
+                       if (this->ob_arm)
+                               return this->ob_arm;
 
+                       this->ob_arm = ob_arm;
                        return ob_arm;
                }
 
@@ -552,10 +585,12 @@ private:
                        return controller_uid;
                }
 
+               // check if this skin controller references a joint or any descendant of it
+               // 
                // some nodes may not be referenced by SkinController,
                // in this case to determine if the node belongs to this armature,
                // we need to search down the tree
-               bool uses_joint(COLLADAFW::Node *node)
+               bool uses_joint_or_descendant(COLLADAFW::Node *node)
                {
                        const COLLADAFW::UniqueId& uid = node->getUniqueId();
                        std::vector<JointData>::iterator it;
@@ -566,7 +601,7 @@ private:
 
                        COLLADAFW::NodePointerArray& children = node->getChildNodes();
                        for (unsigned int i = 0; i < children.getCount(); i++) {
-                               if (this->uses_joint(children[i]))
+                               if (uses_joint_or_descendant(children[i]))
                                        return true;
                        }
 
@@ -658,6 +693,38 @@ private:
                        return parent;
                }
 
+               void find_root_joints(const std::vector<COLLADAFW::Node*> &root_joints,
+                                                         std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
+                                                         std::vector<COLLADAFW::Node*>& result)
+               {
+                       std::vector<COLLADAFW::Node*>::const_iterator it;
+                       for (it = root_joints.begin(); it != root_joints.end(); it++) {
+                               COLLADAFW::Node *root = *it;
+                               std::vector<JointData>::iterator ji;
+                               for (ji = joint_data.begin(); ji != joint_data.end(); ji++) {
+                                       COLLADAFW::Node *joint = joint_by_uid[(*ji).joint_uid];
+                                       if (find_node_in_tree(joint, root)) {
+                                               if (std::find(result.begin(), result.end(), root) == result.end())
+                                                       result.push_back(root);
+                                       }
+                               }
+                       }
+               }
+
+               bool find_node_in_tree(COLLADAFW::Node *node, COLLADAFW::Node *tree_root)
+               {
+                       if (node == tree_root)
+                               return true;
+
+                       COLLADAFW::NodePointerArray& children = tree_root->getChildNodes();
+                       for (unsigned int i = 0; i < children.getCount(); i++) {
+                               if (find_node_in_tree(node, children[i]))
+                                       return true;
+                       }
+
+                       return false;
+               }
+
        };
 
        std::map<COLLADAFW::UniqueId, SkinInfo> skin_by_data_uid; // data UID = skin controller data UID
@@ -841,7 +908,7 @@ private:
                        for (sit = skin_by_data_uid.begin(); sit != skin_by_data_uid.end(); sit++) {
                                SkinInfo& skin = sit->second;
 
-                               if (skin.uses_joint(joint)) {
+                               if (skin.uses_joint_or_descendant(joint)) {
                                        bPoseChannel *pchan = skin.get_pose_channel_from_node(joint);
 
                                        if (pchan) {
@@ -909,7 +976,70 @@ private:
                // - exit edit mode
                // - set a sphere shape to leaf bones
 
-               Object *ob_arm = skin.get_armature();
+               Object *ob_arm = NULL;
+
+               /*
+                * find if there's another skin sharing at least one bone with this skin
+                * if so, use that skin's armature
+                */
+
+               /*
+                 Pseudocode:
+
+                 find_node_in_tree(node, root_joint)
+
+                 skin::find_root_joints(root_joints):
+                       std::vector root_joints;
+                       for each root in root_joints:
+                               for each joint in joints:
+                                       if find_node_in_tree(joint, root):
+                                               if (std::find(root_joints.begin(), root_joints.end(), root) == root_joints.end())
+                                                       root_joints.push_back(root);
+
+                 for (each skin B with armature) {
+                         find all root joints for skin B
+
+                         for each joint X in skin A:
+                               for each root joint R in skin B:
+                                       if (find_node_in_tree(X, R)) {
+                                               shared = 1;
+                                               goto endloop;
+                                       }
+                 }
+
+                 endloop:
+               */
+
+               SkinInfo *a = &skin;
+               Object *shared = NULL;
+               std::vector<COLLADAFW::Node*> skin_root_joints;
+
+               std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it;
+               for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
+                       SkinInfo *b = &it->second;
+                       if (b == a || b->get_armature() == NULL)
+                               continue;
+
+                       skin_root_joints.clear();
+
+                       b->find_root_joints(root_joints, joint_by_uid, skin_root_joints);
+
+                       std::vector<COLLADAFW::Node*>::iterator ri;
+                       for (ri = skin_root_joints.begin(); ri != skin_root_joints.end(); ri++) {
+                               if (a->uses_joint_or_descendant(*ri)) {
+                                       shared = b->get_armature();
+                                       break;
+                               }
+                       }
+
+                       if (shared != NULL)
+                               break;
+               }
+
+               if (shared)
+                       ob_arm = skin.set_armature(shared);
+               else
+                       ob_arm = skin.create_armature(scene);
 
                // enter armature edit mode
                ED_armature_to_edit(ob_arm);
@@ -921,15 +1051,23 @@ private:
                // min_angle = 360.0f;          // minimum angle between bone head-tail and a row of bone matrix
 
                // create bones
+               /*
+                  TODO:
+                  check if bones have already been created for a given joint
+               */
+
+               std::vector<COLLADAFW::Node*>::iterator ri;
+               for (ri = root_joints.begin(); ri != root_joints.end(); ri++) {
+                       // for shared armature check if bone tree is already created
+                       if (shared && std::find(skin_root_joints.begin(), skin_root_joints.end(), *ri) != skin_root_joints.end())
+                               continue;
 
-               std::vector<COLLADAFW::Node*>::iterator it;
-               for (it = root_joints.begin(); it != root_joints.end(); it++) {
                        // since root_joints may contain joints for multiple controllers, we need to filter
-                       if (skin.uses_joint(*it)) {
-                               create_bone(skin, *it, NULL, (*it)->getChildNodes().getCount(), NULL, (bArmature*)ob_arm->data);
+                       if (skin.uses_joint_or_descendant(*ri)) {
+                               create_bone(skin, *ri, NULL, (*ri)->getChildNodes().getCount(), NULL, (bArmature*)ob_arm->data);
 
-                               if (joint_parent_map.find((*it)->getUniqueId()) != joint_parent_map.end() && !skin.get_parent())
-                                       skin.set_parent(joint_parent_map[(*it)->getUniqueId()]);
+                               if (joint_parent_map.find((*ri)->getUniqueId()) != joint_parent_map.end() && !skin.get_parent())
+                                       skin.set_parent(joint_parent_map[(*ri)->getUniqueId()]);
                        }
                }
 
@@ -1071,10 +1209,8 @@ public:
                const COLLADAFW::UniqueId& skin_id = controller->getUniqueId();
 
                if (controller->getControllerType() == COLLADAFW::Controller::CONTROLLER_TYPE_SKIN) {
-
                        COLLADAFW::SkinController *co = (COLLADAFW::SkinController*)controller;
-
-                       // to find geom id by controller id
+                       // to be able to find geom id by controller id
                        geom_uid_by_controller_uid[skin_id] = co->getSource();
 
                        const COLLADAFW::UniqueId& data_uid = co->getSkinControllerData();
@@ -1083,9 +1219,7 @@ public:
                                return true;
                        }
 
-                       Object *ob_arm = skin_by_data_uid[data_uid].create_armature(co, scene);
-
-                       armature_objects.push_back(ob_arm);
+                       skin_by_data_uid[data_uid].set_controller(co);
                }
                // morph controller
                else {
@@ -1110,7 +1244,7 @@ public:
                for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
                        SkinInfo& skin = it->second;
 
-                       if (skin.uses_joint(node))
+                       if (skin.uses_joint_or_descendant(node))
                                return skin.get_armature();
                }
 
@@ -1122,19 +1256,6 @@ public:
                BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", get_joint_name(node));
        }
        
-#if 0
-       void fix_animation()
-       {
-               /* Change Euler rotation to Quaternion for bone animation */
-               std::vector<Object*>::iterator it;
-               for (it = armature_objects.begin(); it != armature_objects.end(); it++) {
-                       Object *ob = *it;
-                       if (!ob || !ob->adt || !ob->adt->action) continue;
-                       anim_importer->change_eul_to_quat(ob, ob->adt->action);
-               }
-       }
-#endif
-
        // gives a world-space mat
        bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint)
        {
@@ -1207,7 +1328,7 @@ private:
                }
 #endif
 
-               void getUV(int uv_set_index, int uv_index[2], float *uv)
+               void getUV(int uv_index[2], float *uv)
                {
                        switch(mVData->getType()) {
                        case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT:
@@ -1258,7 +1379,7 @@ private:
        }
 #endif
        
-       void set_face_uv(MTFace *mtface, UVDataWrapper &uvs, int uv_set_index,
+       void set_face_uv(MTFace *mtface, UVDataWrapper &uvs,
                                         COLLADAFW::IndexList& index_list, unsigned int *tris_indices)
        {
                int uv_indices[4][2];
@@ -1273,12 +1394,12 @@ private:
                        uv_indices[i][1] = uv_index * 2 + 1;
                }
 
-               uvs.getUV(uv_set_index, uv_indices[0], mtface->uv[0]);
-               uvs.getUV(uv_set_index, uv_indices[1], mtface->uv[1]);
-               uvs.getUV(uv_set_index, uv_indices[2], mtface->uv[2]);
+               uvs.getUV(uv_indices[0], mtface->uv[0]);
+               uvs.getUV(uv_indices[1], mtface->uv[1]);
+               uvs.getUV(uv_indices[2], mtface->uv[2]);
        }
 
-       void set_face_uv(MTFace *mtface, UVDataWrapper &uvs, int uv_set_index,
+       void set_face_uv(MTFace *mtface, UVDataWrapper &uvs,
                                        COLLADAFW::IndexList& index_list, int index, bool quad)
        {
                int uv_indices[4][2];
@@ -1293,11 +1414,11 @@ private:
                        uv_indices[i][1] = uv_index * 2 + 1;
                }
 
-               uvs.getUV(uv_set_index, uv_indices[0], mtface->uv[0]);
-               uvs.getUV(uv_set_index, uv_indices[1], mtface->uv[1]);
-               uvs.getUV(uv_set_index, uv_indices[2], mtface->uv[2]);
+               uvs.getUV(uv_indices[0], mtface->uv[0]);
+               uvs.getUV(uv_indices[1], mtface->uv[1]);
+               uvs.getUV(uv_indices[2], mtface->uv[2]);
 
-               if (quad) uvs.getUV(uv_set_index, uv_indices[3], mtface->uv[3]);
+               if (quad) uvs.getUV(uv_indices[3], mtface->uv[3]);
 
 #ifdef COLLADA_DEBUG
                /*if (quad) {
@@ -1497,13 +1618,13 @@ private:
                // allocate UV layers
                unsigned int totuvset = mesh->getUVCoords().getInputInfosArray().getCount();
 
-               for (i = 0; i < totuvset; i++) {
-                       if (mesh->getUVCoords().getLength(i) == 0) {
-                               totuvset = 0;
-                               break;
-                       }
-               }
-
+               // for (i = 0; i < totuvset; i++) {
+               //      if (mesh->getUVCoords().getLength(i) == 0) {
+               //              totuvset = 0;
+               //              break;
+               //      }
+               // }
                for (i = 0; i < totuvset; i++) {
                        CustomData_add_layer(&me->fdata, CD_MTFACE, CD_CALLOC, NULL, me->totface);
                        //this->set_layername_map[i] = CustomData_get_layer_name(&me->fdata, CD_MTFACE, i);
@@ -1560,6 +1681,7 @@ private:
                                        set_face_indices(mface, indices, false);
                                        indices += 3;
 
+#if 0
                                        for (k = 0; k < totuvset; k++) {
                                                if (!index_list_array.empty() && index_list_array[k]) {
                                                        // get mtface by face index and uv set index
@@ -1567,6 +1689,15 @@ private:
                                                        set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, false);
                                                }
                                        }
+#else
+                                       for (k = 0; k < index_list_array.getCount(); k++) {
+                                               int uvset_index = index_list_array[k]->getSetIndex();
+
+                                               // get mtface by face index and uv set index
+                                               MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, uvset_index);
+                                               set_face_uv(&mtface[face_index], uvs, *index_list_array[k], index, false);
+                                       }
+#endif
 
                                        test_index_face(mface, &me->fdata, face_index, 3);
 
@@ -1598,6 +1729,7 @@ private:
                                                // set mtface for each uv set
                                                // it is assumed that all primitives have equal number of UV sets
                                                
+#if 0
                                                for (k = 0; k < totuvset; k++) {
                                                        if (!index_list_array.empty() && index_list_array[k]) {
                                                                // get mtface by face index and uv set index
@@ -1605,6 +1737,15 @@ private:
                                                                set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, mface->v4 != 0);
                                                        }
                                                }
+#else
+                                               for (k = 0; k < index_list_array.getCount(); k++) {
+                                                       int uvset_index = index_list_array[k]->getSetIndex();
+
+                                                       // get mtface by face index and uv set index
+                                                       MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, uvset_index);
+                                                       set_face_uv(&mtface[face_index], uvs, *index_list_array[k], index, mface->v4 != 0);
+                                               }
+#endif
 
                                                test_index_face(mface, &me->fdata, face_index, vcount);
 
@@ -1640,6 +1781,7 @@ private:
 
                                                        set_face_indices(mface, tri_indices, false);
                                                        
+#if 0
                                                        for (unsigned int l = 0; l < totuvset; l++) {
                                                                if (!index_list_array.empty() && index_list_array[l]) {
                                                                        // get mtface by face index and uv set index
@@ -1647,6 +1789,16 @@ private:
                                                                        set_face_uv(&mtface[face_index], uvs, l, *index_list_array[l], uv_indices);
                                                                }
                                                        }
+#else
+                                                       for (unsigned int l = 0; l < index_list_array.getCount(); l++) {
+                                                               int uvset_index = index_list_array[l]->getSetIndex();
+
+                                                               // get mtface by face index and uv set index
+                                                               MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, uvset_index);
+                                                               set_face_uv(&mtface[face_index], uvs, *index_list_array[l], uv_indices);
+                                                       }
+#endif
+
 
                                                        test_index_face(mface, &me->fdata, face_index, 3);
 
index 5dee101eb2d996699ccee0cf532bdf136e5d98e8..babf8f65d7fe13a0f6c0d1469f4ea2bb026f3355 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 struct Main;
 struct bContext;
 
index 6a1c71c9c8639faf10560dbef55fc4a48c32699c..b86e731269872b964beb30ee32a736230c6b0211 100644 (file)
@@ -1,4 +1,30 @@
 #!/usr/bin/python
+# $Id$
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# The Original Code is Copyright (C) 2006, Blender Foundation
+# All rights reserved.
+#
+# The Original Code is: all of this file.
+#
+# Contributor(s): Arystanbek Dyussenov, Nathan Letwory.
+#
+# ***** END GPL LICENSE BLOCK *****
+
 Import ('env')
 
 sources = env.Glob('*.cpp')
index 5aed51c0ba2630714c83a5ea13f3c0ca5388ead1..a519db3332c1d9ed83a123882e53a1f6ded51286 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 #include "BKE_main.h"
 #include "BKE_scene.h"
 #include "BKE_context.h"
index cccca072b40bf9e2a486d36b710356736be1a18f..1c724bef6a65f69778c3a4f006f752ec33f43c7e 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 #ifndef BLENDER_COLLADA_H
 #define BLENDER_COLLADA_H
 
index 278cd37ac66b18b98233adea98cbb70f3bb2549e..242fce749c4084c40ebaaf9601fcf1be22914a15 100644 (file)
@@ -1,3 +1,26 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
 #ifndef BLENDER_COLLADA_H
 #define BLENDER_COLLADA_H
 
index 50d511eea2478b73893ff7348c119f848a85e7b7..5d3cee9a7a59a27fc93ccd89ccbf1c98f38f6b0e 100644 (file)
 # along with this program; if not, write to the Free Software Foundation,
 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
 # Contributor(s): Jacques Beaurain.
 #
 # ***** END GPL LICENSE BLOCK *****
 
-FILE(GLOB SRC */*.c)
-
-SET(INC ../windowmanager
-       ../editors/include ../editors/interface
-       ../../../intern/guardedalloc ../../../intern/memutil
-       ../blenlib ../makesdna ../makesrna ../blenkernel
-       ../include ../imbuf ../render/extern/include
-       ../../../intern/bsp/extern
-       ../../../intern/decimation/extern ../blenloader ../python
-       ../../kernel/gen_system ../readstreamglue
-       ../../../intern/elbeem/extern
-       ../../../intern/ghost ../../../intern/opennl/extern ../../../extern/glew/include ../../../intern/smoke/extern
-       ../../../intern/audaspace/intern
-       ../nodes
-       ../gpu
-       ../freestyle
-       ../blenfont
-       ../ikplugin
-)
-
-ADD_DEFINITIONS(-DGLEW_STATIC)
-
-IF(WITH_GAMEENGINE)
-       ADD_DEFINITIONS(-DGAMEBLENDER)
-ENDIF(WITH_GAMEENGINE)
-
-IF(WITH_INTERNATIONAL)
-       ADD_DEFINITIONS(-DINTERNATIONAL)
-ENDIF(WITH_INTERNATIONAL)
-
-IF(WITH_OPENEXR)
-       ADD_DEFINITIONS(-DWITH_OPENEXR)
-ENDIF(WITH_OPENEXR)
-
-IF(WITH_TIFF)
-       ADD_DEFINITIONS(-DWITH_TIFF)
-ENDIF(WITH_TIFF)
-
-IF(WITH_OPENJPEG)
-       ADD_DEFINITIONS(-DWITH_OPENJPEG)
-ENDIF(WITH_OPENJPEG)
-
-IF(WITH_QUICKTIME)
-       SET(INC ${INC} ../quicktime ${QUICKTIME_INC})
-       ADD_DEFINITIONS(-DWITH_QUICKTIME)
-ENDIF(WITH_QUICKTIME)
-
-IF(WITH_FFMPEG)
-       SET(INC ${INC} ${FFMPEG_INC})
-       ADD_DEFINITIONS(-DWITH_FFMPEG)
-ENDIF(WITH_FFMPEG)
-
-IF(WITH_OPENMP)
-               ADD_DEFINITIONS(-DPARALLEL=1)
-ENDIF(WITH_OPENMP)
-
-IF(NOT WITH_ELBEEM)
-       ADD_DEFINITIONS(-DDISABLE_ELBEEM)
-ENDIF(NOT WITH_ELBEEM)
-
-IF(WITH_PYTHON)
-       SET(INC ${INC} ${PYTHON_INC})
-ELSE(WITH_PYTHON)
-       ADD_DEFINITIONS(-DDISABLE_PYTHON)
-ENDIF(WITH_PYTHON)
-
-IF(WIN32)
-       SET(INC ${INC} ${PTHREADS_INC})
-ENDIF(WIN32)
-
-IF(WITH_BUILDINFO)
-       ADD_DEFINITIONS(-DNAN_BUILDINFO)
-ENDIF(WITH_BUILDINFO)
-
-BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}")
-
+ADD_SUBDIRECTORY(animation)
+ADD_SUBDIRECTORY(armature)
+ADD_SUBDIRECTORY(curve)
+ADD_SUBDIRECTORY(datafiles)
+ADD_SUBDIRECTORY(gpencil)
+ADD_SUBDIRECTORY(interface)
+ADD_SUBDIRECTORY(mesh)
+ADD_SUBDIRECTORY(metaball)
+ADD_SUBDIRECTORY(object)
+ADD_SUBDIRECTORY(physics)
+ADD_SUBDIRECTORY(render)
+ADD_SUBDIRECTORY(screen)
+ADD_SUBDIRECTORY(sculpt_paint)
+ADD_SUBDIRECTORY(sound)
+ADD_SUBDIRECTORY(space_action)
+ADD_SUBDIRECTORY(space_api)
+ADD_SUBDIRECTORY(space_buttons)
+ADD_SUBDIRECTORY(space_console)
+ADD_SUBDIRECTORY(space_file)
+ADD_SUBDIRECTORY(space_graph)
+ADD_SUBDIRECTORY(space_image)
+ADD_SUBDIRECTORY(space_info)
+ADD_SUBDIRECTORY(space_logic)
+ADD_SUBDIRECTORY(space_nla)
+ADD_SUBDIRECTORY(space_node)
+ADD_SUBDIRECTORY(space_outliner)
+ADD_SUBDIRECTORY(space_script)
+ADD_SUBDIRECTORY(space_sequencer)
+ADD_SUBDIRECTORY(space_sound)
+ADD_SUBDIRECTORY(space_text)
+ADD_SUBDIRECTORY(space_time)
+ADD_SUBDIRECTORY(space_userpref)
+ADD_SUBDIRECTORY(space_view3d)
+ADD_SUBDIRECTORY(transform)
+ADD_SUBDIRECTORY(util)
+ADD_SUBDIRECTORY(uvedit)
diff --git a/source/blender/editors/animation/CMakeLists.txt b/source/blender/editors/animation/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d5eef6b
--- /dev/null
@@ -0,0 +1,34 @@
+# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Contributor(s): Jacques Beaurain.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+FILE(GLOB SRC *.c)
+
+SET(INC
+       ../include
+       ../../blenkernel
+       ../../blenlib
+       ../../makesdna
+       ../../makesrna
+       ../../windowmanager
+       ../../../../intern/guardedalloc
+)
+
+BLENDERLIB(bf_editor_animation "${SRC}" "${INC}")
index e7689df9535588ab447256eee70abd5f5e895ed3..98fcf04a5c127140cb137fb365b6c170cc0529fc 100644 (file)
@@ -1104,6 +1104,8 @@ static int insert_key_exec (bContext *C, wmOperator *op)
 
 void ANIM_OT_keyframe_insert (wmOperatorType *ot)
 {
+       PropertyRNA *prop;
+       
        /* identifiers */
        ot->name= "Insert Keyframe";
        ot->idname= "ANIM_OT_keyframe_insert";
@@ -1119,11 +1121,13 @@ void ANIM_OT_keyframe_insert (wmOperatorType *ot)
        /* keyingset to use
         *      - here the type is int not enum, since many of the indicies here are determined dynamically
         */
-       RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+       prop= RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+       RNA_def_property_flag(prop, PROP_HIDDEN);
        /* confirm whether a keyframe was added by showing a popup 
         *      - by default, this is enabled, since this operator is assumed to be called independently
         */
-       RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+       prop= RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+       RNA_def_property_flag(prop, PROP_HIDDEN);
 }
 
 /* Insert Key Operator (With Menu) ------------------------ */
@@ -1152,6 +1156,8 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event)
  
 void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot)
 {
+       PropertyRNA *prop;
+       
        /* identifiers */
        ot->name= "Insert Keyframe Menu";
        ot->idname= "ANIM_OT_keyframe_insert_menu";
@@ -1167,17 +1173,20 @@ void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot)
        /* keyingset to use
         *      - here the type is int not enum, since many of the indicies here are determined dynamically
         */
-       RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+       prop= RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1);
+       RNA_def_property_flag(prop, PROP_HIDDEN);
        /* confirm whether a keyframe was added by showing a popup 
         *      - by default, this is disabled so that if a menu is shown, this doesn't come up too
         */
        // XXX should this just be always on?
-       RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+       prop= RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added");
+       RNA_def_property_flag(prop, PROP_HIDDEN);
        /* whether the menu should always be shown 
         *      - by default, the menu should only be shown when there is no active Keying Set (2.5 behaviour),
         *        although in some cases it might be useful to always shown (pre 2.5 behaviour)
         */
-       RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", "");
+       prop= RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", "");
+       RNA_def_property_flag(prop, PROP_HIDDEN);
 }
 
 /* Delete Key Operator ------------------------ */
diff --git a/source/blender/editors/armature/CMakeLists.txt b/source/blender/editors/armature/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f9136b6
--- /dev/null
@@ -0,0 +1,40 @@
+# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Contributor(s): Jacques Beaurain.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+FILE(GLOB SRC *.c)
+
+SET(INC
+       ../include
+       ../../blenkernel
+       ../../blenlib
+       ../../makesdna
+       ../../makesrna
+       ../../render/extern/include
+       ../../windowmanager
+       ../../../../intern/guardedalloc
+       ../../../../intern/opennl/extern
+)
+
+IF(WIN32)
+       SET(INC ${INC} ${PTHREADS_INC})
+ENDIF(WIN32)
+
+BLENDERLIB(bf_editor_armature "${SRC}" "${INC}")
diff --git a/source/blender/editors/curve/CMakeLists.txt b/source/blender/editors/curve/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ab45d73
--- /dev/null
@@ -0,0 +1,34 @@
+# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Contributor(s): Jacques Beaurain.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+FILE(GLOB SRC *.c)
+
+SET(INC
+       ../include
+       ../../blenkernel
+       ../../blenlib
+       ../../makesdna
+       ../../makesrna
+       ../../windowmanager
+       ../../../../intern/guardedalloc
+)
+
+BLENDERLIB(bf_editor_curve "${SRC}" "${INC}")
index 1b1af31095a113114862b40f0046a464206e6bf6..274b51f03b25359b78869c8be8a16d77850d6f72 100644 (file)
@@ -5283,7 +5283,7 @@ static int curve_prim_add(bContext *C, wmOperator *op, int type){
        }
        else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
        
-       ED_object_new_primitive_matrix(C, loc, rot, mat);
+       ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
        
        nu= add_nurbs_primitive(C, mat, type, newob);
        editnurb= curve_get_editcurve(obedit);
index 37e695cf823664937a6e15b091e7ab88f283fb3e..767c2c82594eb00aaff453e43d6d76bcb3d9d25f 100644 (file)
@@ -417,7 +417,7 @@ void FONT_OT_file_paste(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
        /* properties */
-       WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE);
+       WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE, 0);
 }
 
 /******************* paste buffer operator ********************/
@@ -1639,7 +1639,7 @@ void FONT_OT_open(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
        /* properties */
-       WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE);
+       WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE, 0);
 }
 
 /******************* delete operator *********************/
index 402fbcbaa6503ea921bb312afdb4bd33cf0ec4d3..7b51063b4dd72e904fac66dcb4e9f1df1c1a114b 100644 (file)
 /* DataToC output of file <B_blend> */
 
-int datatoc_B_blend_size= 415992;
+int datatoc_B_blend_size= 415988;
 char datatoc_B_blend[]= {
- 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32,  0,  0,  0,104,238,171,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0,250,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 71, 76, 79, 66, 24,  1,  0,  0, 80,237,171,  0,  0,  0,  0,  0,200,  0,  0,  0,
-  1,  0,  0,  0, 32, 32, 32, 53,  5,  0,  0,  0,250,  0,  0,  0,  1,  0,  0,  1,232,160, 57,  4,  0,  0,  0,  0,152,241,114,  4,
-  0,  0,  0,  0,  0, 16,  0,  0,128, 32,  4,  0, 60,109,101,109,111,114,121, 50, 62,  0,101,  4,  0,  0,  0,  0,236, 23,112,105,
-  0,  0,  0,  0,152, 84,109,  4,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,180, 24,112,105,
-  0,  0,  0,  0,216,214, 99,  4,  0,  0,  0,  0,136,133, 56,  4,  0,  0,  0,  0,152, 84,109,  4,  0,  0,  0,  0,  3,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,175,  0,  0,  0,  0,  0,180, 24,112,105,  0, 50, 53, 50,128,192, 68, 19,  0,  0,  0,  0,120,135,125,105,
-142,250,  0,  0,216,214, 99,  4,  0,  0,  0,  0,222,101,154, 63,  1,  0,  0,  0,152, 84,109,  4,  0,  0,  0,  0,  3,  0,  0,  0,
-  0,  0,  0,  0,152, 40,124,  4,  0,  0,  0,  0,152, 84,109,  4,  0,  0,  0,  0,232,160, 57,  4,  0,  0,  0,  0, 55,108,154, 63,
-  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,152,241,114,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,216,134, 10, 64,
-  1,  0,  0,  0, 82, 69, 78, 68, 32,  0,  0,  0,104,238,171,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0, 87, 77,  0,  0,
- 16,  1,  0,  0,136, 97,104,  4,  0,  0,  0,  0,108,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 87, 77, 87,105,110, 77, 97,110,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,104,185,103,  4,  0,  0,  0,  0,104,185,103,  4,  0,  0,  0,  0,  3,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  2,  0,  0,  0,  2,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,175, 57,  4,  0,  0,  0,  0, 24,175, 57,  4,
-  0,  0,  0,  0, 24,175, 57,  4,  0,  0,  0,  0,120,181,105,  4,  0,  0,  0,  0,120,181,105,  4,  0,  0,  0,  0,120,181,105,  4,
-  0,  0,  0,  0, 68, 65, 84, 65,224,  0,  0,  0,104,185,103,  4,  0,  0,  0,  0,109,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,176, 64, 95,  4,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,232,160, 57,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,115, 99,114,101,101,110,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 79,  0,110,  7, 97,  4,  0,  0,  0,  0,  0,  0,238,  3,  0,  0,  0,  0,
-  0,  0,  0,  0,232, 25,105,  4,  0,  0,  0,  0,136,104,114,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,
-  0,  0,  0,  0,184,213,123,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 72,176, 42,  4,
-  0,  0,  0,  0,120,175, 42,  4,  0,  0,  0,  0,168,174, 42,  4,  0,  0,  0,  0,168,174, 42,  4,  0,  0,  0,  0,136,104,114,  4,
-  0,  0,  0,  0, 88,109,114,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 78,  0,  0,
-208,  0,  0,  0,104,156, 57,  4,  0,  0,  0,  0,194,  0,  0,  0,  1,  0,  0,  0,200,159, 57,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 82, 65,110,105,109, 97,116,105,111,110,  0,
- 46, 48, 48, 49,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 88,162, 49,  4,
-  0,  0,  0,  0, 72, 89,109,  4,  0,  0,  0,  0,184, 89,109,  4,  0,  0,  0,  0,248,101,109,  4,  0,  0,  0,  0,  8,176, 57,  4,
-  0,  0,  0,  0,152,182, 57,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,152,241,114,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 88,162, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,200,162, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65,
- 32,  0,  0,  0,200,162, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0, 56,163, 49,  4,  0,  0,  0,  0, 88,162, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,214,  2,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 56,163, 49,  4,
-  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,168,163, 49,  4,  0,  0,  0,  0,200,162, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,254,  4,214,  2,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,168,163, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,
-  1,  0,  0,  0, 24,164, 49,  4,  0,  0,  0,  0, 56,163, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 24,164, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,136,164, 49,  4,
-  0,  0,  0,  0,168,163, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,187,  2,  1,  0,  0,  0, 68, 65, 84, 65,
- 32,  0,  0,  0,136,164, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,248,164, 49,  4,  0,  0,  0,  0, 24,164, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,187,  2,  1,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,248,164, 49,  4,
-  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,104,165, 49,  4,  0,  0,  0,  0,136,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 32,  4,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,104,165, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,
-  1,  0,  0,  0,216,165, 49,  4,  0,  0,  0,  0,248,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  4,187,  2,
-  1,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,216,165, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0, 72,166, 49,  4,
-  0,  0,  0,  0,104,165, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  4, 52,  1,  0,  0,  0,  0, 68, 65, 84, 65,
- 32,  0,  0,  0, 72,166, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,184,166, 49,  4,  0,  0,  0,  0,216,165, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4, 52,  1,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,184,166, 49,  4,
-  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0, 72,166, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0, 84,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,
-  1,  0,  0,  0,152,167, 49,  4,  0,  0,  0,  0,184,166, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  4, 84,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,152,167, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,  8,168, 49,  4,
-  0,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  1, 84,  0,  0,  0,  0,  0, 68, 65, 84, 65,
- 32,  0,  0,  0,  8,168, 49,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,248, 87,109,  4,  0,  0,  0,  0,152,167, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  1,187,  2,  1,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,248, 87,109,  4,
-  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,  8,168, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,195,  0,  0,  0,
-  1,  0,  0,  0,216, 88,109,  4,  0,  0,  0,  0,248, 87,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  1,  0,  1,
-  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,216, 88,109,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0, 72, 89,109,  4,
-  0,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  4, 48,  2,  0,  0,  0,  0, 68, 65, 84, 65,
- 32,  0,  0,  0, 72, 89,109,  4,  0,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,216, 88,109,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4, 48,  2,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,184, 89,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 40, 90,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,200,162, 49,  4,
-  0,  0,  0,  0, 56,163, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 40, 90,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,152, 90,109,  4,  0,  0,  0,  0,184, 89,109,  4,  0,  0,  0,  0,200,162, 49,  4,
-  0,  0,  0,  0, 24,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,152, 90,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  8, 91,109,  4,  0,  0,  0,  0, 40, 90,109,  4,  0,  0,  0,  0, 56,163, 49,  4,
-  0,  0,  0,  0,136,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,  8, 91,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,120, 91,109,  4,  0,  0,  0,  0,152, 90,109,  4,  0,  0,  0,  0, 24,164, 49,  4,
-  0,  0,  0,  0,136,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,120, 91,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,232, 91,109,  4,  0,  0,  0,  0,  8, 91,109,  4,  0,  0,  0,  0, 88,162, 49,  4,
-  0,  0,  0,  0,248,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,232, 91,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 88, 92,109,  4,  0,  0,  0,  0,120, 91,109,  4,  0,  0,  0,  0,168,163, 49,  4,
-  0,  0,  0,  0,248,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 88, 92,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,200, 92,109,  4,  0,  0,  0,  0,232, 91,109,  4,  0,  0,  0,  0,136,164, 49,  4,
-  0,  0,  0,  0,104,165, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,200, 92,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 56, 93,109,  4,  0,  0,  0,  0, 88, 92,109,  4,  0,  0,  0,  0,248,164, 49,  4,
-  0,  0,  0,  0,216,165, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 56, 93,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,168, 93,109,  4,  0,  0,  0,  0,200, 92,109,  4,  0,  0,  0,  0,168,163, 49,  4,
-  0,  0,  0,  0, 72,166, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,168, 93,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 24, 94,109,  4,  0,  0,  0,  0, 56, 93,109,  4,  0,  0,  0,  0,216,165, 49,  4,
-  0,  0,  0,  0, 72,166, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 24, 94,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,136, 94,109,  4,  0,  0,  0,  0,168, 93,109,  4,  0,  0,  0,  0, 88,162, 49,  4,
-  0,  0,  0,  0,184,166, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,136, 94,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,248, 94,109,  4,  0,  0,  0,  0, 24, 94,109,  4,  0,  0,  0,  0,104,165, 49,  4,
-  0,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,248, 94,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,104, 95,109,  4,  0,  0,  0,  0,136, 94,109,  4,  0,  0,  0,  0,248,164, 49,  4,
-  0,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,104, 95,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,216, 95,109,  4,  0,  0,  0,  0,248, 94,109,  4,  0,  0,  0,  0,184,166, 49,  4,
-  0,  0,  0,  0, 40,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,216, 95,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 72, 96,109,  4,  0,  0,  0,  0,104, 95,109,  4,  0,  0,  0,  0,184,166, 49,  4,
-  0,  0,  0,  0,152,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 72, 96,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,184, 96,109,  4,  0,  0,  0,  0,216, 95,109,  4,  0,  0,  0,  0, 40,167, 49,  4,
-  0,  0,  0,  0,152,167, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,184, 96,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 40, 97,109,  4,  0,  0,  0,  0, 72, 96,109,  4,  0,  0,  0,  0, 24,164, 49,  4,
-  0,  0,  0,  0,  8,168, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 40, 97,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,152, 97,109,  4,  0,  0,  0,  0,184, 96,109,  4,  0,  0,  0,  0,104,165, 49,  4,
-  0,  0,  0,  0,  8,168, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,152, 97,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  8, 98,109,  4,  0,  0,  0,  0, 40, 97,109,  4,  0,  0,  0,  0,152,167, 49,  4,
-  0,  0,  0,  0,  8,168, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,  8, 98,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,120, 98,109,  4,  0,  0,  0,  0,152, 97,109,  4,  0,  0,  0,  0,184,166, 49,  4,
-  0,  0,  0,  0,248, 87,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,120, 98,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,232, 98,109,  4,  0,  0,  0,  0,  8, 98,109,  4,  0,  0,  0,  0,152,167, 49,  4,
-  0,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,232, 98,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 88, 99,109,  4,  0,  0,  0,  0,120, 98,109,  4,  0,  0,  0,  0,248, 87,109,  4,
-  0,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 88, 99,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,200, 99,109,  4,  0,  0,  0,  0,232, 98,109,  4,  0,  0,  0,  0,216,165, 49,  4,
-  0,  0,  0,  0,216, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,200, 99,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 56,100,109,  4,  0,  0,  0,  0, 88, 99,109,  4,  0,  0,  0,  0,104,165, 49,  4,
-  0,  0,  0,  0,216, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 56,100,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,168,100,109,  4,  0,  0,  0,  0,200, 99,109,  4,  0,  0,  0,  0,136,164, 49,  4,
-  0,  0,  0,  0, 72, 89,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,168,100,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 24,101,109,  4,  0,  0,  0,  0, 56,100,109,  4,  0,  0,  0,  0, 72,166, 49,  4,
-  0,  0,  0,  0, 72, 89,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0, 24,101,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,136,101,109,  4,  0,  0,  0,  0,168,100,109,  4,  0,  0,  0,  0,216, 88,109,  4,
-  0,  0,  0,  0, 72, 89,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,136,101,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,248,101,109,  4,  0,  0,  0,  0, 24,101,109,  4,  0,  0,  0,  0, 24,164, 49,  4,
-  0,  0,  0,  0,248, 87,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 40,  0,  0,  0,248,101,109,  4,
-  0,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,136,101,109,  4,  0,  0,  0,  0,  8,168, 49,  4,
-  0,  0,  0,  0,104, 88,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65,160,  0,  0,  0,  8,176, 57,  4,
-  0,  0,  0,  0,198,  0,  0,  0,  1,  0,  0,  0,248,176, 57,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,164, 49,  4,
-  0,  0,  0,  0,200,162, 49,  4,  0,  0,  0,  0, 56,163, 49,  4,  0,  0,  0,  0,136,164, 49,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,188,  2,  0,  0,214,  2,  0,  0,  7,  7,255,  4, 27,  0,  1,  0,  0,  0,  0,  0,
-  7,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 72,221,103,  4,  0,  0,  0,  0, 72,221,103,  4,  0,  0,  0,  0, 56,210,101,  4,
-  0,  0,  0,  0,168,211,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0, 56,210,101,  4,  0,  0,  0,  0,199,  0,  0,  0,
-  1,  0,  0,  0,168,211,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,224,162, 68,  0,  0,  0,  0,
-  0,  0,208, 65,  0,  0,  0,  0,  0,224,159, 68,  0,  0,  0,  0,  0,  0,208, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,  0,  0,  0,  0,
- 25,  0,  0,  0,  0,128,237, 68,  0,  0,200, 65,  0,128,237, 68,  0,  0,200, 65,  0,  0,128, 63,  0,  0,128, 63,  0,  0,  0,  0,
-  2,  0,  3,  3,  4,  0, 12,  4, 10,  0,255,  4, 26,  0,255,  4, 26,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,188,  2,  0,  0,213,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,255,  4, 26,  0,  0,  0,  1,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0,168,211,101,  4,  0,  0,  0,  0,199,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 56,210,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,240,109, 69,  0,  0,128,192,  0,  0,  0,  0,  0,  0,  0,  0,
-255,255,109, 69,  0,  0,  0,192,  0,  0,  0,  0,112,  7,  0,  0,129,  7,  0,  0, 18,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
-111,  7,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,111,  7,  0,  0, 18,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 63,  0,  0,  0, 64, 10,  0,  0,  0,  1,  0,  7,  0, 18,  0,  0,  4,
-  6,  0,129,  7,  2,  0,112,  7,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,214,  2,  0,  0,214,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,
-  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32,  0,  0,  0,
+ 32,237,191, 95,255,127,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0,250,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 71, 76, 79, 66, 24,  1,  0,  0, 32,236,191, 95,255,127,  0,  0,
+200,  0,  0,  0,  1,  0,  0,  0, 32, 32, 32, 53,  5,  0,  0,  0,250,  0,  0,  0,  1,  0,  0,  1,168,175,123, 26,  1,  0,  0,  0,
+ 56,186,171,  3,  1,  0,  0,  0,  0, 16,  0,  0,128, 32,  4,  0, 60,109,101,109,111,114,121, 50, 62,  0,  0,  0,  0,  0,  0,  0,
+ 32,  0,  0,  0,  0,  0,  0,  0, 32,237,191, 95,255,127,  0,  0, 92,170, 54,  4,  1,  0,  0,  0,176,236,191, 95,255,127,  0,  0,
+178,155,100,  0,  1,  0,  0,  0,144,236,191, 95,255,127,  0,  0,216, 48, 56,  4, 32,  0,  0,  0, 32,237,191, 95,255,127,  0,  0,
+ 88, 29,114, 26,  1,  0,  0,  0,208,236,191, 95,255,127,  0,  0, 56,170, 54,  4,  1,  0,  0,  0,  0,237,191, 95,255,127,  0,  0,
+ 41,158,100,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,237,191, 95,255,127,  0,  0, 32,  0,  0,  0, 82, 69, 78, 68,
+ 88, 29,114, 26,  1,  0,  0,  0, 82, 69, 78, 68, 32,  0,  0,  0, 32,237,191, 95,255,127,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,
+ 40,237,191, 95,255,127,  0,  0, 80,237,191, 95,255,127,  0,  0, 81,165,100,  0,  1,  0,  0,  0,152, 57,122, 26,  1,  0,  0,  0,
+ 88, 29,114, 26,  1,  0,  0,  0,  1,  0,  0,  0,250,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 87, 77,  0,  0, 24,  1,  0,  0,184, 60,122, 26,  1,  0,  0,  0,110,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 87, 77, 87,105,110, 77, 97,110,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 24, 62,122, 26,  1,  0,  0,  0, 24, 62,122, 26,  1,  0,  0,  0, 24, 62,122, 26,  1,  0,  0,  0, 24, 62,122, 26,  1,  0,  0,  0,
+  3,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  2,  0,  0,  0,
+  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65,
-160,  0,  0,  0,248,176, 57,  4,  0,  0,  0,  0,198,  0,  0,  0,  1,  0,  0,  0,232,177, 57,  4,  0,  0,  0,  0,  8,176, 57,  4,
-  0,  0,  0,  0,248,164, 49,  4,  0,  0,  0,  0,216,165, 49,  4,  0,  0,  0,  0, 72,166, 49,  4,  0,  0,  0,  0,168,163, 49,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0,  0,  0,  0,  0, 51,  1,  0,  0,  4,  4,222,  0,
- 52,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,200,135,109,  4,  0,  0,  0,  0,104,106,106,  4,
-  0,  0,  0,  0, 24,213,101,  4,  0,  0,  0,  0,136,214,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0, 24,213,101,  4,
-  0,  0,  0,  0,199,  0,  0,  0,  1,  0,  0,  0,136,214,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,205, 67,  0,  0,  0,  0,  0,  0,208, 65,  0,  0,  0, 55,  0,  0, 94, 67,  0,  0,  0,  0,  0,  0,248, 65,  0,  0,  0,  0,
+200,122, 88, 23,  1,  0,  0,  0,200,122, 88, 23,  1,  0,  0,  0,200,122, 88, 23,  1,  0,  0,  0,152, 20, 15, 26,  1,  0,  0,  0,
+152, 20, 15, 26,  1,  0,  0,  0,152, 20, 15, 26,  1,  0,  0,  0, 68, 65, 84, 65,224,  0,  0,  0, 24, 62,122, 26,  1,  0,  0,  0,
+111,  1,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192, 26, 88, 23,  1,  0,  0,  0,
+  1,  0,  0,  0,  0,  0,  0,  0,168,175,123, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,115, 99,114,101,101,110,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,234,255,160,  5,132,  3,
+  0,  0,  0,  0,  1,  0,238,  3,  0,  0,  1,  0,  0,  0,  0,  0, 40, 49,132,  4,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,  0, 56,124, 81, 26,  1,  0,  0,  0,232,181,115, 26,  1,  0,  0,  0,
+232,181,115, 26,  1,  0,  0,  0, 56, 21, 15, 26,  1,  0,  0,  0,  8, 22, 15, 26,  1,  0,  0,  0,216, 22, 15, 26,  1,  0,  0,  0,
+216, 22, 15, 26,  1,  0,  0,  0,168, 23, 15, 26,  1,  0,  0,  0,216, 72, 15, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 83, 78,  0,  0,208,  0,  0,  0, 56, 63,122, 26,  1,  0,  0,  0,194,  0,  0,  0,  1,  0,  0,  0,
+ 72,  6,123, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 83, 82, 65,110,105,109, 97,116,105,111,110,  0, 46, 48, 48, 49,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,216,111,239, 25,  1,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0, 40, 69,122, 26,  1,  0,  0,  0,
+104, 81,122, 26,  1,  0,  0,  0,216, 81,122, 26,  1,  0,  0,  0,200,243,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 56,186,171,  3,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,216,111,239, 25,  1,  0,  0,  0,
+195,  0,  0,  0,  1,  0,  0,  0,200, 91,238, 25,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,200, 91,238, 25,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,
+ 88, 62,117, 26,  1,  0,  0,  0,216,111,239, 25,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,214,  2,  0,  0,  0,  0,
+ 68, 65, 84, 65, 32,  0,  0,  0, 88, 62,117, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,184, 69,115, 26,  1,  0,  0,  0,
+200, 91,238, 25,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,214,  2,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,
+184, 69,115, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0, 88, 62,117, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0,
+195,  0,  0,  0,  1,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,184, 69,115, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,187,  2,  1,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,
+168, 64,122, 26,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,187,  2,  1,  0,  0,  0,
+ 68, 65, 84, 65, 32,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0,
+ 72, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  4,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,
+  8, 65,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 32,  4,187,  2,  1,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,
+195,  0,  0,  0,  1,  0,  0,  0,200, 65,122, 26,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 32,  4, 52,  1,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,200, 65,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,
+ 40, 66,122, 26,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4, 52,  1,  0,  0,  0,  0,
+ 68, 65, 84, 65, 32,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,
+200, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 84,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,
+136, 66,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 32,  4, 84,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0,
+195,  0,  0,  0,  1,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+192,  1, 84,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,
+168, 67,122, 26,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  1,187,  2,  1,  0,  0,  0,
+ 68, 65, 84, 65, 32,  0,  0,  0,168, 67,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,  8, 68,122, 26,  1,  0,  0,  0,
+ 72, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,
+  8, 68,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,168, 67,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,192,  1,  0,  1,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,
+195,  0,  0,  0,  1,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0,  8, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 32,  4, 48,  2,  0,  0,  0,  0, 68, 65, 84, 65, 32,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0,195,  0,  0,  0,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4, 48,  2,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 40, 69,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,152, 69,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,200, 91,238, 25,  1,  0,  0,  0, 88, 62,117, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,152, 69,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  8, 70,122, 26,  1,  0,  0,  0,
+ 40, 69,122, 26,  1,  0,  0,  0,200, 91,238, 25,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,  8, 70,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,120, 70,122, 26,  1,  0,  0,  0,
+152, 69,122, 26,  1,  0,  0,  0, 88, 62,117, 26,  1,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,120, 70,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,232, 70,122, 26,  1,  0,  0,  0,
+  8, 70,122, 26,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,232, 70,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 88, 71,122, 26,  1,  0,  0,  0,
+120, 70,122, 26,  1,  0,  0,  0,216,111,239, 25,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 88, 71,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,200, 71,122, 26,  1,  0,  0,  0,
+232, 70,122, 26,  1,  0,  0,  0,184, 69,115, 26,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,200, 71,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 56, 72,122, 26,  1,  0,  0,  0,
+ 88, 71,122, 26,  1,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 56, 72,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,168, 72,122, 26,  1,  0,  0,  0,
+200, 71,122, 26,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,168, 72,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 24, 73,122, 26,  1,  0,  0,  0,
+ 56, 72,122, 26,  1,  0,  0,  0,184, 69,115, 26,  1,  0,  0,  0,200, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 24, 73,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,136, 73,122, 26,  1,  0,  0,  0,
+168, 72,122, 26,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,200, 65,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,136, 73,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,248, 73,122, 26,  1,  0,  0,  0,
+ 24, 73,122, 26,  1,  0,  0,  0,216,111,239, 25,  1,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,248, 73,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,104, 74,122, 26,  1,  0,  0,  0,
+136, 73,122, 26,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,104, 74,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,216, 74,122, 26,  1,  0,  0,  0,
+248, 73,122, 26,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,216, 74,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 72, 75,122, 26,  1,  0,  0,  0,
+104, 74,122, 26,  1,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 72, 75,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,184, 75,122, 26,  1,  0,  0,  0,
+216, 74,122, 26,  1,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,184, 75,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 40, 76,122, 26,  1,  0,  0,  0,
+ 72, 75,122, 26,  1,  0,  0,  0,136, 66,122, 26,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 40, 76,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,152, 76,122, 26,  1,  0,  0,  0,
+184, 75,122, 26,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,152, 76,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  8, 77,122, 26,  1,  0,  0,  0,
+ 40, 76,122, 26,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,  8, 77,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,120, 77,122, 26,  1,  0,  0,  0,
+152, 76,122, 26,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,120, 77,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,232, 77,122, 26,  1,  0,  0,  0,
+  8, 77,122, 26,  1,  0,  0,  0, 40, 66,122, 26,  1,  0,  0,  0,168, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,232, 77,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 88, 78,122, 26,  1,  0,  0,  0,
+120, 77,122, 26,  1,  0,  0,  0,232, 66,122, 26,  1,  0,  0,  0,  8, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 88, 78,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,200, 78,122, 26,  1,  0,  0,  0,
+232, 77,122, 26,  1,  0,  0,  0,168, 67,122, 26,  1,  0,  0,  0,  8, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,200, 78,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 56, 79,122, 26,  1,  0,  0,  0,
+ 88, 78,122, 26,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 56, 79,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,168, 79,122, 26,  1,  0,  0,  0,
+200, 78,122, 26,  1,  0,  0,  0,  8, 65,122, 26,  1,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,168, 79,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0, 24, 80,122, 26,  1,  0,  0,  0,
+ 56, 79,122, 26,  1,  0,  0,  0, 72, 64,122, 26,  1,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0, 24, 80,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,136, 80,122, 26,  1,  0,  0,  0,
+168, 79,122, 26,  1,  0,  0,  0,200, 65,122, 26,  1,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,136, 80,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,248, 80,122, 26,  1,  0,  0,  0,
+ 24, 80,122, 26,  1,  0,  0,  0,104, 68,122, 26,  1,  0,  0,  0,200, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,248, 80,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,104, 81,122, 26,  1,  0,  0,  0,
+136, 80,122, 26,  1,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0,168, 67,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 40,  0,  0,  0,104, 81,122, 26,  1,  0,  0,  0,196,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+248, 80,122, 26,  1,  0,  0,  0, 72, 67,122, 26,  1,  0,  0,  0,  8, 68,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65,160,  0,  0,  0,216, 81,122, 26,  1,  0,  0,  0,198,  0,  0,  0,  1,  0,  0,  0,120, 85,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,104, 21,113, 26,  1,  0,  0,  0,200, 91,238, 25,  1,  0,  0,  0, 88, 62,117, 26,  1,  0,  0,  0,
+ 72, 64,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,188,  2,  0,  0,214,  2,  0,  0,
+  7,  7,255,  4, 27,  0,  1,  0,  0,  0,  0,  0,  7,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,184,  5,123, 26,  1,  0,  0,  0,
+184,  5,123, 26,  1,  0,  0,  0,184, 82,122, 26,  1,  0,  0,  0, 24, 84,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0,
+184, 82,122, 26,  1,  0,  0,  0,199,  0,  0,  0,  1,  0,  0,  0, 24, 84,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,224,162, 68,  0,  0,  0,  0,  0,  0,208, 65,  0,  0,  0,  0,  0,224,159, 68,  0,  0,  0,  0,  0,  0,208, 65,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,254,  4,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,128,237, 68,  0,  0,200, 65,  0,128,237, 68,  0,  0,200, 65,
+  0,  0,128, 63,  0,  0,128, 63,  0,  0,  0,  0,  2,  0,  3,  3,  4,  0, 12,  4, 10,  0,255,  4, 26,  0,255,  4, 26,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,  4,  0,  0,188,  2,  0,  0,213,  2,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,  4, 26,  0,  0,  0,  1,  0,  2,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0, 24, 84,122, 26,  1,  0,  0,  0,
+199,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,184, 82,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,240,109, 69,
+  0,  0,128,192,  0,  0,  0,  0,  0,  0,  0,  0,255,255,109, 69,  0,  0,  0,192,  0,  0,  0,  0,112,  7,  0,  0,129,  7,  0,  0,
+ 18,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,111,  7,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,111,  7,  0,  0,
+ 18,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 63,  0,  0,  0, 64,
+ 10,  0,  0,  0,  1,  0,  7,  0, 18,  0,  0,  4,  6,  0,129,  7,  2,  0,112,  7,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,214,  2,  0,  0,214,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65,160,  0,  0,  0,120, 85,122, 26,  1,  0,  0,  0,198,  0,  0,  0,  1,  0,  0,  0,
+ 56,124,122, 26,  1,  0,  0,  0,216, 81,122, 26,  1,  0,  0,  0,168, 64,122, 26,  1,  0,  0,  0,104, 65,122, 26,  1,  0,  0,  0,
+200, 65,122, 26,  1,  0,  0,  0,184, 69,115, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0,
+  0,  0,  0,  0, 51,  1,  0,  0,  4,  4,222,  0, 52,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 24,115,122, 26,  1,  0,  0,  0,200,122,122, 26,  1,  0,  0,  0, 88, 86,122, 26,  1,  0,  0,  0,184, 87,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 32,  1,  0,  0, 88, 86,122, 26,  1,  0,  0,  0,199,  0,  0,  0,  1,  0,  0,  0,184, 87,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,205, 67,  0,  0,  0,  0,  0,  0,208, 65,  0,  0,  0, 55,  0,  0, 94, 67,
+  0,  0,  0,  0,  0,  0,248, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,221,  0,  0,  0,  0,  0,  0,  0, 30,  0,  0,  0,  0,128,137, 67,  0,  0,200, 65,
+  0,128,137, 67,  0,  0,200, 65,  0,  0,128, 63,  0,  0,128, 63,  0,  0,  0,  0,  2,  0,  3,  3,  4,  0, 12,  4, 10,  0,222,  0,
+ 31,  0,222,  0, 31,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0,
+ 21,  1,  0,  0, 51,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,222,  0, 31,  0,  0,  0,  1,  0,
+  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-221,  0,  0,  0,  0,  0,  0,  0, 30,  0,  0,  0,  0,128,137, 67,  0,  0,200, 65,  0,128,137, 67,  0,  0,200, 65,  0,  0,128, 63,
-  0,  0,128, 63,  0,  0,  0,  0,  2,  0,  3,  3,  4,  0, 12,  4, 10,  0,222,  0, 31,  0,222,  0, 31,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0, 21,  1,  0,  0, 51,  1,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,222,  0, 31,  0,  0,  0,  1,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0,
+184, 87,122, 26,  1,  0,  0,  0,199,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 88, 86,122, 26,  1,  0,  0,  0,
+  0,  0,  0,  0,  0,  0, 94, 67,  0, 64, 80,196,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0, 77, 67,  1,128,138,195,  0,  0,  0,  0,
+205,  0,  0,  0,222,  0,  0,  0,  0,  0,  0,  0, 20,  1,  0,  0,  0,  0,  0,  0, 62,  1,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,
+  0,  0,  0,  0,204,  0,  0,  0,  0,  0,  0,  0, 20,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0, 63,  0,  0,  0, 64, 10,  1,  0,  0,  1,  0,  7,  0, 18,  0,  0,  4,  6,  0,222,  0, 21,  1,205,  0, 21,  1,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0,  0,  0,  0,  0, 20,  1,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,222,  0, 21,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 24, 89,122, 26,  1,  0,  0,  0,120,113,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0, 24, 89,122, 26,  1,  0,  0,  0,
+197,  0,  0,  0,  1,  0,  0,  0,184, 90,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 32,  1,  0,  0,136,214,101,  4,  0,  0,  0,  0,199,  0,  0,  0,
-  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,213,101,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 94, 67,  0, 64, 80,196,
-  0,  0,  0,  0,  0,  0,  0,  0,  1,  0, 77, 67,  1,128,138,195,  0,  0,  0,  0,205,  0,  0,  0,222,  0,  0,  0,  0,  0,  0,  0,
- 20,  1,  0,  0,  0,  0,  0,  0, 62,  1,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,204,  0,  0,  0,  0,  0,  0,  0,
- 20,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 63,  0,  0,  0, 64, 10,  1,  0,  0,
-  1,  0,  7,  0, 18,  0,  0,  4,  6,  0,222,  0, 21,  1,205,  0, 21,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 33,  4,  0,  0,254,  4,  0,  0,  0,  0,  0,  0, 20,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,222,  0, 21,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,200,158,102,  4,  0,  0,  0,  0, 24,125,109,  4,
+  0,  0,  0,  0,  0,  0,  0,  0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,200,158,102,  4,  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,104,160,102,  4,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 66, 85, 84, 84,
- 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 66, 85, 84, 84,
- 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 67,111,110,116,
-101,120,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,220,255,
-205,  0, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 67,111,110,116,101,120,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,220,255,205,  0, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,104,160,102,  4,
-  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,248,103,109,  4,  0,  0,  0,  0,200,158,102,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 88,  1,  0,  0,184, 90,122, 26,  1,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0, 88, 92,122, 26,  1,  0,  0,  0,
+ 24, 89,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84,
+ 95,115, 99,101,110,101,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84,
+ 95,115, 99,101,110,101,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,135,255, 63,  1, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,135,255, 63,  1, 61,  0,
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,248,103,109,  4,  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,152,105,109,  4,
-  0,  0,  0,  0,104,160,102,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78,
- 69, 95, 80, 84, 95,117,110,105,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78,
- 69, 95, 80, 84, 95,117,110,105,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 85,110,105,116,
-115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 50,255,
- 63,  1, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0, 88, 92,122, 26,  1,  0,  0,  0,
+197,  0,  0,  0,  1,  0,  0,  0,248, 93,122, 26,  1,  0,  0,  0,184, 90,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,152,105,109,  4,
-  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0, 56,107,109,  4,  0,  0,  0,  0,248,103,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115,
+  0,  0,  0,  0,  0,  0,  0,  0, 85,110,105,116,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 50,255, 63,  1, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 75,101,121,105,110,103, 32, 83,101,116,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,213,254, 63,  1, 69,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
- 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 88,  1,  0,  0,248, 93,122, 26,  1,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,152, 95,122, 26,  1,  0,  0,  0,
+ 88, 92,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84,
+ 95,107,101,121,105,110,103, 95,115,101,116,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84,
+ 95,107,101,121,105,110,103, 95,115,101,116,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 75,101,121,105,110,103, 32, 83,
+101,116,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,213,254, 63,  1, 69,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0, 56,107,109,  4,  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,216,108,109,  4,
-  0,  0,  0,  0,152,105,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78,
- 69, 95, 80, 84, 95,112,104,121,115,105, 99,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78,
- 69, 95, 80, 84, 95,112,104,121,115,105, 99,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 71,114, 97,118,
-105,116,121,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,153,254,
- 63,  1, 36,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,152, 95,122, 26,  1,  0,  0,  0,
+197,  0,  0,  0,  1,  0,  0,  0, 56, 97,122, 26,  1,  0,  0,  0,248, 93,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,216,108,109,  4,
-  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,120,110,109,  4,  0,  0,  0,  0, 56,107,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 71,114, 97,118,105,116,121,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,153,254, 63,  1, 36,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 15,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82,101,110,100,101,114,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,135,255,205,  0, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 88,  1,  0,  0, 56, 97,122, 26,  1,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,216, 98,122, 26,  1,  0,  0,  0,
+152, 95,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80,
+ 84, 95,114,101,110,100,101,114,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80,
+ 84, 95,114,101,110,100,101,114,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82,101,110,100,101,114,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,120,110,109,  4,  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0, 24,112,109,  4,
-  0,  0,  0,  0,216,108,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68,
- 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68,
- 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 76, 97,121,101,
-114,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,111,255,
-205,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,135,255,205,  0, 61,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0, 24,112,109,  4,
-  0,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0,184,113,109,  4,  0,  0,  0,  0,120,110,109,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 65, 84, 65, 88,  1,  0,  0,216, 98,122, 26,  1,  0,  0,  0,
+197,  0,  0,  0,  1,  0,  0,  0,120,100,122, 26,  1,  0,  0,  0, 56, 97,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115,
+  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0, 76, 97,121,101,114,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,111,255,205,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68,105,109,101,110,115,105,111,110,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,140,254,205,  0,203,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+ 68, 65, 84, 65, 88,  1,  0,  0,120,100,122, 26,  1,  0,  0,  0,197,  0,  0,  0,  1,  0,  0,  0, 24,102,122, 26,  1,  0,  0,  0,
+216, 98,122, 26,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 82, 69, 78, 68, 69, 82, 95, 80,
+ 84, 95,100,105,109,101,110,115,105,111,110,115,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,