diff --git a/.travis/script.sh b/.travis/script.sh index 58a537808d..b449be2e96 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -99,12 +99,12 @@ if [ "${BUILDER}" == cmake ];then export PATH="${HOME}"/swig/bin:"${PATH}" pyenv global system 3.6 checkenv - cmake -H. -Bbuild + cmake -H. -Bbuild || true cmake --build build --target all -- --jobs=4 cmake --build build --target test -- CTEST_OUTPUT_ON_FAILURE=1 elif [ "${TRAVIS_OS_NAME}" == osx ];then checkenv - cmake -H. -Bbuild + cmake -H. -Bbuild || true cmake --build build --target all -- --jobs=4 cmake --build build --target test -- CTEST_OUTPUT_ON_FAILURE=1 fi diff --git a/CMakeLists.txt b/CMakeLists.txt index d0fd6b5aee..2cf2a49ad0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,7 +67,7 @@ message(STATUS "Build .Net Binding: ${BUILD_DOTNET}") # Add OR Tools Dependencies as CMake subproject if missing if(BUILD_DEPS) - add_subdirectory(cmake/external) + add_subdirectory(cmake/external external) endif() if(BUILD_CXX) diff --git a/Version.txt b/Version.txt index 61b578ded7..f4cc82c454 100644 --- a/Version.txt +++ b/Version.txt @@ -1,2 +1,3 @@ -OR_TOOLS_MAJOR=6 -OR_TOOLS_MINOR=10 +OR_TOOLS_MAJOR=7 +OR_TOOLS_MINOR=0 +PRE_RELEASE=YES diff --git a/WORKSPACE b/WORKSPACE index 086efd07c7..2c43128082 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,8 +1,8 @@ #Import the gflags files. git_repository( name = "com_github_gflags_gflags", - commit = "f8a0efe03aa69b3336d8e228b37d4ccb17324b88", remote = "https://github.com/gflags/gflags.git", + tag = "v2.2.2", ) #Import the glog files. diff --git a/cmake/external/CMakeLists.txt b/cmake/external/CMakeLists.txt index 00c88e5249..da33961228 100644 --- a/cmake/external/CMakeLists.txt +++ b/cmake/external/CMakeLists.txt @@ -65,8 +65,11 @@ if(NOT TARGET gflags::gflags) endif() set(GFLAGS_NAMESPACE "gflags") - set(GFLAGS_INSTALL_STATIC_LIBS ON) set(GFLAGS_INSTALL_HEADERS ON) + set(GFLAGS_BUILD_SHARED_LIBS OFF) + set(GFLAGS_INSTALL_SHARED_LIBS OFF) + set(GFLAGS_BUILD_STATIC_LIBS ON) + set(GFLAGS_INSTALL_STATIC_LIBS ON) #set(GFLAGS_IS_SUBPROJECT TRUE) add_subdirectory( ${CMAKE_BINARY_DIR}/gflags-src @@ -167,28 +170,28 @@ endif() ## ABSEIL ## ############## if(NOT TARGET absl::base) - message(STATUS "Target absl::base not found.") + message(STATUS "Target absl::base not found.") message(STATUS "Adding CMake Subproject: Abseil...") - # Download and unpack abseil at configure time - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/abseil.CMakeLists.txt - ${CMAKE_BINARY_DIR}/abseil-cpp-download/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download) - if(result) - message(FATAL_ERROR "CMake step for abseil failed: ${result}") - endif() - execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download) - if(result) - message(FATAL_ERROR "Build step for abseil failed: ${result}") - endif() + # Download and unpack abseil at configure time + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/abseil.CMakeLists.txt + ${CMAKE_BINARY_DIR}/abseil-cpp-download/CMakeLists.txt) + execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download) + if(result) + message(FATAL_ERROR "CMake step for abseil failed: ${result}") + endif() + execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download) + if(result) + message(FATAL_ERROR "Build step for abseil failed: ${result}") + endif() - add_subdirectory( - ${CMAKE_BINARY_DIR}/abseil-cpp-src - ${CMAKE_BINARY_DIR}/abseil-cpp-build) + add_subdirectory( + ${CMAKE_BINARY_DIR}/abseil-cpp-src + ${CMAKE_BINARY_DIR}/abseil-cpp-build) message(STATUS "Adding CMake Subproject: Abseil...DONE") endif() diff --git a/cmake/external/gflags.CMakeLists.txt b/cmake/external/gflags.CMakeLists.txt index 8d5b09b8c8..1c9c57be64 100644 --- a/cmake/external/gflags.CMakeLists.txt +++ b/cmake/external/gflags.CMakeLists.txt @@ -9,11 +9,11 @@ project(gflags-download NONE) include(ExternalProject) ExternalProject_Add(gflags_project GIT_REPOSITORY https://github.com/gflags/gflags - GIT_TAG "v2.2.1" + GIT_TAG "v2.2.2" SOURCE_DIR "${CMAKE_BINARY_DIR}/gflags-src" BINARY_DIR "${CMAKE_BINARY_DIR}/gflags-build" UPDATE_COMMAND "" - PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/gflags.patch" + #PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/gflags-2.2.1.patch" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" diff --git a/examples/contrib/3_jugs_regular.csproj b/examples/contrib/3_jugs_regular.csproj index fe16ffc7cd..dcf28f7327 100644 --- a/examples/contrib/3_jugs_regular.csproj +++ b/examples/contrib/3_jugs_regular.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/Google.OrTools.Contrib.sln b/examples/contrib/Google.OrTools.Contrib.sln index 349777f0de..1adb0548e8 100644 --- a/examples/contrib/Google.OrTools.Contrib.sln +++ b/examples/contrib/Google.OrTools.Contrib.sln @@ -3,245 +3,245 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3_jugs_regular", "3_jugs_regular.csproj", "{3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3_jugs_regular", "3_jugs_regular.csproj", "{D3E02075-305B-4A78-A384-E50166F2D5A3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "alldifferent_except_0", "alldifferent_except_0.csproj", "{3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "alldifferent_except_0", "alldifferent_except_0.csproj", "{B4FB4A21-F2D5-491D-B25A-8B695B54D716}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "all_interval", "all_interval.csproj", "{5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "all_interval", "all_interval.csproj", "{234C7376-491F-45DD-8C2E-37A7AC92EF03}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "a_puzzle", "a_puzzle.csproj", "{FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "a_puzzle", "a_puzzle.csproj", "{13BE74D8-A324-49A6-8583-7D42A18B70C7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "a_round_of_golf", "a_round_of_golf.csproj", "{35A469DF-5B4C-4482-9419-FA42A2173314}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "a_round_of_golf", "a_round_of_golf.csproj", "{162E54DE-E3E3-4191-A615-A9DC9858E86D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "assignment", "assignment.csproj", "{89AB8BBD-C88F-4AF8-BE3B-41A139F77820}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "assignment", "assignment.csproj", "{A911BDC1-D992-40E7-8A24-80C9CD4E9890}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "broken_weights", "broken_weights.csproj", "{517050BA-EE52-425E-98DA-58DEA974BBF5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "broken_weights", "broken_weights.csproj", "{E5AF006E-F5A3-4537-834E-B80A0FFE7D30}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "bus_schedule", "bus_schedule.csproj", "{046E01E8-964C-4538-91A9-AEDCF0C187ED}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "bus_schedule", "bus_schedule.csproj", "{B1F1800F-44D3-43CA-B04A-077D775DEA9F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "circuit2", "circuit2.csproj", "{557805EC-8125-4555-86EF-059ABA9D2156}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "circuit2", "circuit2.csproj", "{D49DC937-E75C-457A-9766-3DB97D064040}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "circuit", "circuit.csproj", "{96EF759C-4342-4B0F-8A2F-693235EC2D39}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "circuit", "circuit.csproj", "{E97BA046-D291-46AC-9D16-493D449F36BC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coins3", "coins3.csproj", "{41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coins3", "coins3.csproj", "{BF10B1AD-0460-4A2D-8B86-B18CD32A698B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coins_grid", "coins_grid.csproj", "{D5C5F5B4-0430-488B-8B71-1D23E197C831}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coins_grid", "coins_grid.csproj", "{C5204604-7AE2-4D6D-8B7F-FB290BB964AB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "combinatorial_auction2", "combinatorial_auction2.csproj", "{56B3DF24-919D-44C6-9C74-20EF955F095E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "combinatorial_auction2", "combinatorial_auction2.csproj", "{2773BF50-F94E-4E69-BC3C-7F37755F4AF2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "contiguity_regular", "contiguity_regular.csproj", "{0F7067B8-588F-447B-9899-3B0C36EED7DB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "contiguity_regular", "contiguity_regular.csproj", "{382A4F01-FF9F-49C8-82F9-66C7FA413748}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "contiguity_transition", "contiguity_transition.csproj", "{B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "contiguity_transition", "contiguity_transition.csproj", "{D07E2156-4571-4140-A9FD-72139C7CC7F5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "costas_array", "costas_array.csproj", "{1BE55616-3361-44C7-9213-D1A9ED0615F0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "costas_array", "costas_array.csproj", "{76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "covering_opl", "covering_opl.csproj", "{799B5103-9C9B-496E-BC64-AF10B81F12EE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "covering_opl", "covering_opl.csproj", "{B0EDEF45-519E-4A23-A7CA-286B41D0874D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crew", "crew.csproj", "{6CB46A57-3C72-4277-AB84-5FF7A29E621F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crew", "crew.csproj", "{190C7964-F300-4445-AF40-93B0AF839189}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crossword", "crossword.csproj", "{CF45AA2D-EB9D-4735-8192-AEECA2E5C552}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crossword", "crossword.csproj", "{C1F644D9-47CF-4C34-9A60-9865690B5D7C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crypta", "crypta.csproj", "{02802E66-58E2-4F2A-96F4-ABF1B8E967FD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crypta", "crypta.csproj", "{273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crypto", "crypto.csproj", "{07D4CB54-A753-4A66-9C6C-C5C27A122935}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crypto", "crypto.csproj", "{A27F8756-F4B4-44BF-A447-3E4190A6B983}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csdiet", "csdiet.csproj", "{7790BFC3-AEFA-434D-BE81-64ADBA97E973}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csdiet", "csdiet.csproj", "{E71D6CBC-6834-4020-875A-6BD46CF96172}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "curious_set_of_integers", "curious_set_of_integers.csproj", "{91AAF438-25E0-4F46-A13D-2858FEDB017D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "curious_set_of_integers", "curious_set_of_integers.csproj", "{F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "debruijn", "debruijn.csproj", "{71B680C5-462F-40CF-8382-252FC36C5306}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "debruijn", "debruijn.csproj", "{1D22F4D4-EE10-415D-A568-04B6C61345F2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "discrete_tomography", "discrete_tomography.csproj", "{9D31CE8B-0688-4B8F-9912-90BDB6D6471E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "discrete_tomography", "discrete_tomography.csproj", "{0C2FC1B0-C376-455E-BBC1-0A446EBB5563}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "divisible_by_9_through_1", "divisible_by_9_through_1.csproj", "{37421C71-061F-446F-A8CB-53199AFCDF30}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "divisible_by_9_through_1", "divisible_by_9_through_1.csproj", "{6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dudeney", "dudeney.csproj", "{44E940A6-9F31-4504-8941-E6FB55E5C2DA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dudeney", "dudeney.csproj", "{5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "einav_puzzle2", "einav_puzzle2.csproj", "{E695AE83-1C78-45EC-99EF-3E421EB99721}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "einav_puzzle2", "einav_puzzle2.csproj", "{80D4E136-1C66-4D13-80C6-B09420DEBDAF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eq10", "eq10.csproj", "{B2F36C33-4D0D-41C4-82D9-AD8217581918}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eq10", "eq10.csproj", "{15EACDE5-9F77-475A-828D-24F7B9A393E0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eq20", "eq20.csproj", "{FB57277E-683C-4292-A1E9-25EEA105DB19}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eq20", "eq20.csproj", "{631DE655-AA50-4834-A860-4DB05F7A7B08}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fill_a_pix", "fill_a_pix.csproj", "{058527B0-DB0A-4A01-95B7-789D38A1E375}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fill_a_pix", "fill_a_pix.csproj", "{A759214D-7A0C-4A7E-BCB7-0553F8241A37}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsdiet", "fsdiet.fsproj", "{22FB57EB-5420-4146-BFB3-D93CB66014C4}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsdiet", "fsdiet.fsproj", "{CC647C22-5250-476C-83EB-00BE700A11DB}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsequality", "fsequality.fsproj", "{93A5853E-FA39-4D6C-898E-9F647386C5D7}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsequality", "fsequality.fsproj", "{3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsequality-inequality", "fsequality-inequality.fsproj", "{CBEBCB88-76D9-4418-A97D-102E2935C79B}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsequality-inequality", "fsequality-inequality.fsproj", "{CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsinteger-linear-program", "fsinteger-linear-program.fsproj", "{1A8AEE7F-C8D7-4516-BC64-11E72AB85674}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsinteger-linear-program", "fsinteger-linear-program.fsproj", "{18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsintegerprogramming", "fsintegerprogramming.fsproj", "{2B841181-46C2-47D9-8A18-FBBD41533E3E}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsintegerprogramming", "fsintegerprogramming.fsproj", "{7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsknapsack", "fsknapsack.fsproj", "{21E8FBC1-B67C-4BBF-A7F7-45F30144C956}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsknapsack", "fsknapsack.fsproj", "{6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fslinearprogramming", "fslinearprogramming.fsproj", "{8D79E6F3-C0F7-47DC-912C-745222881F30}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fslinearprogramming", "fslinearprogramming.fsproj", "{33AEABCD-757B-430B-81D6-9128C3F55E02}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-max-flow", "fsnetwork-max-flow.fsproj", "{58E89CF7-8DA3-41E7-A5D0-58B4834C793D}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-max-flow", "fsnetwork-max-flow.fsproj", "{47467D05-54A5-41CA-A092-A446AB701700}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-max-flow-lpSolve", "fsnetwork-max-flow-lpSolve.fsproj", "{6E13B4C6-ED57-4324-B394-E490555E4644}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-max-flow-lpSolve", "fsnetwork-max-flow-lpSolve.fsproj", "{B9FB721B-F08E-4636-ADE9-AE34EB637DA6}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-min-cost-flow", "fsnetwork-min-cost-flow.fsproj", "{33F46C42-E1FC-4477-A1F1-E79715132A97}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsnetwork-min-cost-flow", "fsnetwork-min-cost-flow.fsproj", "{8FE96B31-66B4-43AA-8C0A-86685BF8619F}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsProgram", "fsProgram.fsproj", "{16CCF48D-9E2A-41B4-91D3-CA41CC296232}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsProgram", "fsProgram.fsproj", "{52EFEFA5-0584-4693-BA00-DFF49855E7C1}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsrabbit-pheasant", "fsrabbit-pheasant.fsproj", "{59A50689-E20A-4CB6-8687-A09D64611E8D}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsrabbit-pheasant", "fsrabbit-pheasant.fsproj", "{030A5658-0EAB-41E6-9258-1D6FCA66B6F3}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay3", "fsvolsay3.fsproj", "{E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay3", "fsvolsay3.fsproj", "{BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay3-lpSolve", "fsvolsay3-lpSolve.fsproj", "{C833CEF1-BB40-421F-9910-F675B270781C}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay3-lpSolve", "fsvolsay3-lpSolve.fsproj", "{D9F4624C-5EB8-44C5-9459-625954DBF1A6}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay", "fsvolsay.fsproj", "{879AF4A9-6675-4924-9A7E-90079E2DDF12}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "fsvolsay", "fsvolsay.fsproj", "{DB7630D6-8EC9-45EE-B312-E74088CC4E10}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "furniture_moving", "furniture_moving.csproj", "{20523984-7BDF-41BB-86C1-6A7211C2C69A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "furniture_moving", "furniture_moving.csproj", "{3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "furniture_moving_intervals", "furniture_moving_intervals.csproj", "{750EB7AD-2890-443E-BB5C-2BDCC2C535F1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "furniture_moving_intervals", "furniture_moving_intervals.csproj", "{774734C2-2687-4C9D-81A3-127EC82E0129}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "futoshiki", "futoshiki.csproj", "{234896FF-DAD3-4596-B26E-6456CA54B43C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "futoshiki", "futoshiki.csproj", "{24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "golomb_ruler", "golomb_ruler.csproj", "{092D0383-AFB0-46C5-A721-AD8291D26C8E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "golomb_ruler", "golomb_ruler.csproj", "{6E5844BF-8A30-4DDE-AC12-F494EF973441}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "grocery", "grocery.csproj", "{4EA61B35-14B5-4498-8E83-55971F5DBD2C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "grocery", "grocery.csproj", "{55B041F3-80EC-496C-AC72-39A95BB448EC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "hidato_table", "hidato_table.csproj", "{BE551A02-B3D8-4B99-9A14-8E39351E411E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "hidato_table", "hidato_table.csproj", "{B590F3E5-9479-4980-9E00-E1251D97DEBF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "just_forgotten", "just_forgotten.csproj", "{9057E0FA-9D91-4DC2-9E83-46A68B2CE157}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "just_forgotten", "just_forgotten.csproj", "{7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kakuro", "kakuro.csproj", "{21ADF2E1-1878-414C-9ECF-9CDF1923D72B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kakuro", "kakuro.csproj", "{87F12345-0584-4927-9494-B302BC6CE884}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kenken2", "kenken2.csproj", "{8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kenken2", "kenken2.csproj", "{85E56229-EB42-475F-878A-32764204AC87}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "killer_sudoku", "killer_sudoku.csproj", "{E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "killer_sudoku", "killer_sudoku.csproj", "{957AFA68-CE21-47D2-8608-26DE31AF71B1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "labeled_dice", "labeled_dice.csproj", "{CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "labeled_dice", "labeled_dice.csproj", "{16419B62-CCD9-4435-9C37-138C818882A7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "langford", "langford.csproj", "{422217FB-4D51-47F1-8613-1D83D7AC6883}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "langford", "langford.csproj", "{EDFECBA7-8F05-46BF-8D14-B407350904E0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "least_diff", "least_diff.csproj", "{E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "least_diff", "least_diff.csproj", "{4896401B-46A8-4C0E-8F67-1D846968AFD9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lectures", "lectures.csproj", "{C1C872DE-7AF7-4C66-B649-F0E10AA4F767}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lectures", "lectures.csproj", "{473C7796-F6E8-4D5B-95B8-ADF789619893}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_sequence", "magic_sequence.csproj", "{BE71C47D-F0E7-4891-B354-B5FBBF97BC47}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_sequence", "magic_sequence.csproj", "{02A8249E-32BC-4ACB-B406-6F0DBA43A57F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_square_and_cards", "magic_square_and_cards.csproj", "{FCAA7DBE-A9A4-477A-92EF-E315949E097F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_square_and_cards", "magic_square_and_cards.csproj", "{8772C831-55C2-44C2-8726-296448F5B578}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_square", "magic_square.csproj", "{8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "magic_square", "magic_square.csproj", "{09BCF265-B30A-49E3-8F41-EA19970303EF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "map2", "map2.csproj", "{F7401901-5B8D-47F1-AE96-D6EE944F47AE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "map2", "map2.csproj", "{060F0213-A29A-47F3-95FB-CA3ABD85874F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "map", "map.csproj", "{BDF4E7A6-0DD0-490D-9747-189F778A9DE7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "map", "map.csproj", "{427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "marathon2", "marathon2.csproj", "{9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "marathon2", "marathon2.csproj", "{449C2F67-1FDA-45E8-BC9E-B2976BD0542B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "max_flow_taha", "max_flow_taha.csproj", "{4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "max_flow_taha", "max_flow_taha.csproj", "{398E16EE-13B8-4867-A6E3-63FC1B6F681C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "max_flow_winston1", "max_flow_winston1.csproj", "{18110947-DBEE-44D2-93CC-785A87D98201}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "max_flow_winston1", "max_flow_winston1.csproj", "{A806376E-A982-41D4-918D-A699DC854F30}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "minesweeper", "minesweeper.csproj", "{8F5B304A-CD79-494F-B781-A85FC128C61C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "minesweeper", "minesweeper.csproj", "{0DA8211A-8C76-473C-B996-536EA692EE3B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mr_smith", "mr_smith.csproj", "{0C0F4F80-9DBF-48BA-8555-394E0893A035}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mr_smith", "mr_smith.csproj", "{FB2C6170-1E3B-4B1A-B708-C055BBE597B7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nontransitive_dice", "nontransitive_dice.csproj", "{C52AFCB4-0F2D-4072-90CF-03741D618E54}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nontransitive_dice", "nontransitive_dice.csproj", "{FBD6F749-96F9-4382-A374-00392285C941}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nqueens", "nqueens.csproj", "{6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nqueens", "nqueens.csproj", "{3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nurse_rostering_regular", "nurse_rostering_regular.csproj", "{7266DD65-1E77-4607-B81F-FAFB02E9C54D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nurse_rostering_regular", "nurse_rostering_regular.csproj", "{A4E186E3-1456-4ADC-AF9C-AF65F3756059}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nurse_rostering_transition", "nurse_rostering_transition.csproj", "{E34453A5-E774-4987-B633-518C78E2E921}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nurse_rostering_transition", "nurse_rostering_transition.csproj", "{804F58A6-4FC1-40C0-AB63-F9665F44E830}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "olympic", "olympic.csproj", "{B83268BA-C453-4554-8B27-848E008058A6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "olympic", "olympic.csproj", "{DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "organize_day", "organize_day.csproj", "{0471D2E6-DE42-4698-A526-42962A6940E3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "organize_day", "organize_day.csproj", "{F3364D40-253C-46B7-8DB6-1495A1034BAC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "organize_day_intervals", "organize_day_intervals.csproj", "{F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "organize_day_intervals", "organize_day_intervals.csproj", "{CD3D883D-CF2A-4A8B-A447-B1002559F342}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pandigital_numbers", "pandigital_numbers.csproj", "{E6E72448-89C1-4A64-A08A-DD0577B984B4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pandigital_numbers", "pandigital_numbers.csproj", "{D0D997EB-7DC9-4608-AA22-E6A258A18BEA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "partition", "partition.csproj", "{3C73A034-CA85-4EC9-BF20-0774D7CA82CD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "partition", "partition.csproj", "{983ACD96-1A92-4453-AC26-E2A6B8F068C6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perfect_square_sequence", "perfect_square_sequence.csproj", "{F1D217BC-298D-4A18-B2E0-8AC9720CD138}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perfect_square_sequence", "perfect_square_sequence.csproj", "{CCBC3164-30D9-4B67-AF4E-268CE977D8A4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "photo_problem", "photo_problem.csproj", "{D28939DB-6992-47FC-82B7-BD7954E02B44}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "photo_problem", "photo_problem.csproj", "{50C4047D-76A6-4BB6-9863-E5D053C8ED6D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "place_number_puzzle", "place_number_puzzle.csproj", "{CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "place_number_puzzle", "place_number_puzzle.csproj", "{D45F8338-7E4D-4491-9543-95CE917E0A8A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "p_median", "p_median.csproj", "{E227658F-B45E-4F54-AAE5-51208EB1C510}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "p_median", "p_median.csproj", "{AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "post_office_problem2", "post_office_problem2.csproj", "{4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "post_office_problem2", "post_office_problem2.csproj", "{98956978-200B-4E0F-9C71-12C0F827DE93}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quasigroup_completion", "quasigroup_completion.csproj", "{32084CCE-7F37-4EFE-A8B9-018192EFCE5D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quasigroup_completion", "quasigroup_completion.csproj", "{4ACFF4CD-DBE1-40F5-A398-57377273C0B8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "regex", "regex.csproj", "{75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "regex", "regex.csproj", "{2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "rogo2", "rogo2.csproj", "{BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "rogo2", "rogo2.csproj", "{0FC588F8-5FE7-4586-A929-00366D5F89A7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "scheduling_speakers", "scheduling_speakers.csproj", "{94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "scheduling_speakers", "scheduling_speakers.csproj", "{03B03F03-B80E-4897-889A-F7A7E90A1871}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "secret_santa2", "secret_santa2.csproj", "{3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "secret_santa2", "secret_santa2.csproj", "{9DDF38D2-6CB2-4045-88A1-2665003A3CE4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "secret_santa", "secret_santa.csproj", "{D58C2902-516B-4212-8ED8-ADDFB812B39B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "secret_santa", "secret_santa.csproj", "{1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_more_money2", "send_more_money2.csproj", "{FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_more_money2", "send_more_money2.csproj", "{3A8AC7BC-7604-4999-B22D-5D649A5E782C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_more_money", "send_more_money.csproj", "{C7668C15-57F6-4549-B821-AB4BF18B8935}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_more_money", "send_more_money.csproj", "{16938AC1-0F36-4EF3-BC17-81994A9EF2FB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_most_money", "send_most_money.csproj", "{FE9FC9EC-63D3-4242-87DD-9C313D16E282}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "send_most_money", "send_most_money.csproj", "{388E14A0-961A-46FD-8181-FDD56D327BC5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "seseman", "seseman.csproj", "{E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "seseman", "seseman.csproj", "{ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering2", "set_covering2.csproj", "{026DED5B-AD8E-43C7-A05A-E906A4862E68}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering2", "set_covering2.csproj", "{E7072E8F-E6E3-47AB-9730-34FCFD0531A0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering3", "set_covering3.csproj", "{AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering3", "set_covering3.csproj", "{5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering4", "set_covering4.csproj", "{DF706E65-746D-4753-9E0B-86BCC412CCD6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering4", "set_covering4.csproj", "{05B4A363-E48D-4777-B835-51B667695526}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering", "set_covering.csproj", "{A22C2A3E-FE6C-439C-A482-E294DAB03677}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering", "set_covering.csproj", "{D0D127A7-E282-4591-9FAF-00C5CB3AAB50}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering_deployment", "set_covering_deployment.csproj", "{3D7DEA52-1BCD-4175-87A7-2896189E5B1E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering_deployment", "set_covering_deployment.csproj", "{1043AC82-5F2B-4477-8228-B1A976F96227}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering_skiena", "set_covering_skiena.csproj", "{C337C5E5-7123-4122-8BEE-A6B786684A3E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_covering_skiena", "set_covering_skiena.csproj", "{B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_partition", "set_partition.csproj", "{12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "set_partition", "set_partition.csproj", "{7BCE4E15-B995-41A0-9560-0F5287F165D9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sicherman_dice", "sicherman_dice.csproj", "{0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sicherman_dice", "sicherman_dice.csproj", "{9E5B495B-A110-4459-BC80-D1D7D7D93363}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SimpleProgramFSharp", "SimpleProgramFSharp.fsproj", "{74C43C0C-853B-4D40-AA22-066486F7F3C0}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SimpleProgramFSharp", "SimpleProgramFSharp.fsproj", "{025588E6-BA1A-43E8-A49C-6DD83706D926}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ski_assignment", "ski_assignment.csproj", "{26E813B0-60DD-4468-A6AD-EFF5CC56CF21}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ski_assignment", "ski_assignment.csproj", "{2C1B83A0-0E54-4E51-95A1-23DE478F7765}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "stable_marriage", "stable_marriage.csproj", "{AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "stable_marriage", "stable_marriage.csproj", "{2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "strimko2", "strimko2.csproj", "{10581947-42A6-43C9-A3A2-E20198871BC3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "strimko2", "strimko2.csproj", "{6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "subset_sum", "subset_sum.csproj", "{1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "subset_sum", "subset_sum.csproj", "{322B4729-12ED-43B7-AA02-D05C0A251386}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sudoku", "sudoku.csproj", "{8EA864EF-902F-4E56-8E76-99B0BD5C7454}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sudoku", "sudoku.csproj", "{CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "survo_puzzle", "survo_puzzle.csproj", "{DDCF227A-81B6-4AA0-97E7-B368E7B103D1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "survo_puzzle", "survo_puzzle.csproj", "{5FDCA152-2765-43FF-94F3-5D080F1C0C2A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "to_num", "to_num.csproj", "{F1118C91-5A72-489D-AFC7-FE27F459C842}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "to_num", "to_num.csproj", "{E5360EF0-7734-4DEE-8401-622A2E258615}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "traffic_lights", "traffic_lights.csproj", "{3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "traffic_lights", "traffic_lights.csproj", "{B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay2", "volsay2.csproj", "{5C059E1C-8CC0-4A7D-98FF-76055857D5D2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay2", "volsay2.csproj", "{72BA9854-6457-43FF-B5B8-A5C0D06652F5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay3", "volsay3.csproj", "{3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay3", "volsay3.csproj", "{2896210E-63E6-4243-BE5D-4644B1454A22}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay", "volsay.csproj", "{5B796B39-AD73-4AC9-B006-7F0DDB7791A1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volsay", "volsay.csproj", "{A9075E75-DCBE-4A77-848D-CC25269475BA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wedding_optimal_chart", "wedding_optimal_chart.csproj", "{FF34FE24-8EA3-413A-8888-E4128FF000D6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wedding_optimal_chart", "wedding_optimal_chart.csproj", "{D8CB99B8-932C-466C-B165-DDA3891EC937}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "who_killed_agatha", "who_killed_agatha.csproj", "{BE1425A8-6216-442C-A92D-E3C930CC0FEC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "who_killed_agatha", "who_killed_agatha.csproj", "{40433B72-9C8E-427C-9152-6BA6C40D0AC1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "word_square", "word_square.csproj", "{9FF94453-27E9-4798-9E9E-606048F90E75}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "word_square", "word_square.csproj", "{7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xkcd", "xkcd.csproj", "{3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xkcd", "xkcd.csproj", "{A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "young_tableaux", "young_tableaux.csproj", "{6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "young_tableaux", "young_tableaux.csproj", "{0CFE2781-B849-4BEE-A282-B00FFF8667E5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zebra", "zebra.csproj", "{F5C73999-17C7-4466-839D-618039A7DF89}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zebra", "zebra.csproj", "{4A1FAD7D-6383-4F4F-A50D-7A337969566B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -256,1445 +256,1445 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|x64.ActiveCfg = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|x64.Build.0 = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|x86.ActiveCfg = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Debug|x86.Build.0 = Debug|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|Any CPU.Build.0 = Release|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|x64.ActiveCfg = Release|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|x64.Build.0 = Release|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|x86.ActiveCfg = Release|Any CPU - {3A81ABB1-5A49-48B5-81E0-2AE50D918AE4}.Release|x86.Build.0 = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|x64.ActiveCfg = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|x64.Build.0 = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|x86.ActiveCfg = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Debug|x86.Build.0 = Debug|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|Any CPU.Build.0 = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|x64.ActiveCfg = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|x64.Build.0 = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|x86.ActiveCfg = Release|Any CPU - {3AE32C96-ADF2-402C-90B4-48B8F14AE0B4}.Release|x86.Build.0 = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|x64.ActiveCfg = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|x64.Build.0 = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|x86.ActiveCfg = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Debug|x86.Build.0 = Debug|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|Any CPU.Build.0 = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|x64.ActiveCfg = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|x64.Build.0 = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|x86.ActiveCfg = Release|Any CPU - {5ADB14D9-4F62-4290-B20A-F36E4F55CB4C}.Release|x86.Build.0 = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|x64.ActiveCfg = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|x64.Build.0 = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|x86.ActiveCfg = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Debug|x86.Build.0 = Debug|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|Any CPU.Build.0 = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|x64.ActiveCfg = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|x64.Build.0 = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|x86.ActiveCfg = Release|Any CPU - {FCAF2F0F-02C7-4E58-AF6F-81AD8D214B71}.Release|x86.Build.0 = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|x64.ActiveCfg = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|x64.Build.0 = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|x86.ActiveCfg = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Debug|x86.Build.0 = Debug|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|Any CPU.Build.0 = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|x64.ActiveCfg = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|x64.Build.0 = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|x86.ActiveCfg = Release|Any CPU - {35A469DF-5B4C-4482-9419-FA42A2173314}.Release|x86.Build.0 = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|Any CPU.Build.0 = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|x64.ActiveCfg = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|x64.Build.0 = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|x86.ActiveCfg = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Debug|x86.Build.0 = Debug|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|Any CPU.ActiveCfg = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|Any CPU.Build.0 = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|x64.ActiveCfg = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|x64.Build.0 = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|x86.ActiveCfg = Release|Any CPU - {89AB8BBD-C88F-4AF8-BE3B-41A139F77820}.Release|x86.Build.0 = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|x64.ActiveCfg = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|x64.Build.0 = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|x86.ActiveCfg = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Debug|x86.Build.0 = Debug|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|Any CPU.Build.0 = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|x64.ActiveCfg = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|x64.Build.0 = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|x86.ActiveCfg = Release|Any CPU - {517050BA-EE52-425E-98DA-58DEA974BBF5}.Release|x86.Build.0 = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|x64.ActiveCfg = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|x64.Build.0 = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|x86.ActiveCfg = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Debug|x86.Build.0 = Debug|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|Any CPU.Build.0 = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|x64.ActiveCfg = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|x64.Build.0 = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|x86.ActiveCfg = Release|Any CPU - {046E01E8-964C-4538-91A9-AEDCF0C187ED}.Release|x86.Build.0 = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|Any CPU.Build.0 = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|x64.ActiveCfg = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|x64.Build.0 = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|x86.ActiveCfg = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Debug|x86.Build.0 = Debug|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|Any CPU.ActiveCfg = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|Any CPU.Build.0 = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|x64.ActiveCfg = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|x64.Build.0 = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|x86.ActiveCfg = Release|Any CPU - {557805EC-8125-4555-86EF-059ABA9D2156}.Release|x86.Build.0 = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|x64.ActiveCfg = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|x64.Build.0 = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|x86.ActiveCfg = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Debug|x86.Build.0 = Debug|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|Any CPU.Build.0 = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|x64.ActiveCfg = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|x64.Build.0 = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|x86.ActiveCfg = Release|Any CPU - {96EF759C-4342-4B0F-8A2F-693235EC2D39}.Release|x86.Build.0 = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|x64.ActiveCfg = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|x64.Build.0 = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|x86.ActiveCfg = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Debug|x86.Build.0 = Debug|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|Any CPU.Build.0 = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|x64.ActiveCfg = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|x64.Build.0 = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|x86.ActiveCfg = Release|Any CPU - {41E782BF-0F85-4B2B-B4AA-BF43E8CF7063}.Release|x86.Build.0 = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|x64.ActiveCfg = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|x64.Build.0 = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|x86.ActiveCfg = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Debug|x86.Build.0 = Debug|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|Any CPU.Build.0 = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|x64.ActiveCfg = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|x64.Build.0 = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|x86.ActiveCfg = Release|Any CPU - {D5C5F5B4-0430-488B-8B71-1D23E197C831}.Release|x86.Build.0 = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|x64.ActiveCfg = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|x64.Build.0 = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|x86.ActiveCfg = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Debug|x86.Build.0 = Debug|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|Any CPU.Build.0 = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|x64.ActiveCfg = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|x64.Build.0 = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|x86.ActiveCfg = Release|Any CPU - {56B3DF24-919D-44C6-9C74-20EF955F095E}.Release|x86.Build.0 = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|x64.Build.0 = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Debug|x86.Build.0 = Debug|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|Any CPU.Build.0 = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|x64.ActiveCfg = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|x64.Build.0 = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|x86.ActiveCfg = Release|Any CPU - {0F7067B8-588F-447B-9899-3B0C36EED7DB}.Release|x86.Build.0 = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|x64.ActiveCfg = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|x64.Build.0 = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|x86.ActiveCfg = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Debug|x86.Build.0 = Debug|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|Any CPU.Build.0 = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|x64.ActiveCfg = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|x64.Build.0 = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|x86.ActiveCfg = Release|Any CPU - {B967F3AF-AA9D-4FF5-A3D3-C20EBEFE08AC}.Release|x86.Build.0 = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|x64.ActiveCfg = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|x64.Build.0 = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|x86.ActiveCfg = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Debug|x86.Build.0 = Debug|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|Any CPU.Build.0 = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|x64.ActiveCfg = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|x64.Build.0 = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|x86.ActiveCfg = Release|Any CPU - {1BE55616-3361-44C7-9213-D1A9ED0615F0}.Release|x86.Build.0 = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|x64.ActiveCfg = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|x64.Build.0 = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|x86.ActiveCfg = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Debug|x86.Build.0 = Debug|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|Any CPU.Build.0 = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|x64.ActiveCfg = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|x64.Build.0 = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|x86.ActiveCfg = Release|Any CPU - {799B5103-9C9B-496E-BC64-AF10B81F12EE}.Release|x86.Build.0 = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|x64.ActiveCfg = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|x64.Build.0 = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|x86.ActiveCfg = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Debug|x86.Build.0 = Debug|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|Any CPU.Build.0 = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|x64.ActiveCfg = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|x64.Build.0 = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|x86.ActiveCfg = Release|Any CPU - {6CB46A57-3C72-4277-AB84-5FF7A29E621F}.Release|x86.Build.0 = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|x64.ActiveCfg = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|x64.Build.0 = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|x86.ActiveCfg = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Debug|x86.Build.0 = Debug|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|Any CPU.Build.0 = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|x64.ActiveCfg = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|x64.Build.0 = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|x86.ActiveCfg = Release|Any CPU - {CF45AA2D-EB9D-4735-8192-AEECA2E5C552}.Release|x86.Build.0 = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|x64.ActiveCfg = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|x64.Build.0 = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|x86.ActiveCfg = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Debug|x86.Build.0 = Debug|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|Any CPU.Build.0 = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|x64.ActiveCfg = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|x64.Build.0 = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|x86.ActiveCfg = Release|Any CPU - {02802E66-58E2-4F2A-96F4-ABF1B8E967FD}.Release|x86.Build.0 = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|x64.ActiveCfg = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|x64.Build.0 = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|x86.ActiveCfg = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Debug|x86.Build.0 = Debug|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|Any CPU.ActiveCfg = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|Any CPU.Build.0 = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|x64.ActiveCfg = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|x64.Build.0 = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|x86.ActiveCfg = Release|Any CPU - {07D4CB54-A753-4A66-9C6C-C5C27A122935}.Release|x86.Build.0 = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|x64.ActiveCfg = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|x64.Build.0 = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|x86.ActiveCfg = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Debug|x86.Build.0 = Debug|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|Any CPU.Build.0 = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|x64.ActiveCfg = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|x64.Build.0 = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|x86.ActiveCfg = Release|Any CPU - {7790BFC3-AEFA-434D-BE81-64ADBA97E973}.Release|x86.Build.0 = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|x64.ActiveCfg = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|x64.Build.0 = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|x86.ActiveCfg = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Debug|x86.Build.0 = Debug|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|Any CPU.Build.0 = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|x64.ActiveCfg = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|x64.Build.0 = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|x86.ActiveCfg = Release|Any CPU - {91AAF438-25E0-4F46-A13D-2858FEDB017D}.Release|x86.Build.0 = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|x64.ActiveCfg = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|x64.Build.0 = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|x86.ActiveCfg = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Debug|x86.Build.0 = Debug|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|Any CPU.ActiveCfg = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|Any CPU.Build.0 = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|x64.ActiveCfg = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|x64.Build.0 = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|x86.ActiveCfg = Release|Any CPU - {71B680C5-462F-40CF-8382-252FC36C5306}.Release|x86.Build.0 = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|x64.ActiveCfg = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|x64.Build.0 = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|x86.ActiveCfg = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Debug|x86.Build.0 = Debug|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|Any CPU.Build.0 = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|x64.ActiveCfg = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|x64.Build.0 = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|x86.ActiveCfg = Release|Any CPU - {9D31CE8B-0688-4B8F-9912-90BDB6D6471E}.Release|x86.Build.0 = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|Any CPU.Build.0 = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|x64.ActiveCfg = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|x64.Build.0 = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|x86.ActiveCfg = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Debug|x86.Build.0 = Debug|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|Any CPU.ActiveCfg = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|Any CPU.Build.0 = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|x64.ActiveCfg = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|x64.Build.0 = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|x86.ActiveCfg = Release|Any CPU - {37421C71-061F-446F-A8CB-53199AFCDF30}.Release|x86.Build.0 = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|x64.ActiveCfg = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|x64.Build.0 = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|x86.ActiveCfg = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Debug|x86.Build.0 = Debug|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|Any CPU.Build.0 = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|x64.ActiveCfg = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|x64.Build.0 = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|x86.ActiveCfg = Release|Any CPU - {44E940A6-9F31-4504-8941-E6FB55E5C2DA}.Release|x86.Build.0 = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|x64.ActiveCfg = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|x64.Build.0 = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|x86.ActiveCfg = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Debug|x86.Build.0 = Debug|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|Any CPU.Build.0 = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|x64.ActiveCfg = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|x64.Build.0 = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|x86.ActiveCfg = Release|Any CPU - {E695AE83-1C78-45EC-99EF-3E421EB99721}.Release|x86.Build.0 = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|x64.ActiveCfg = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|x64.Build.0 = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|x86.ActiveCfg = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Debug|x86.Build.0 = Debug|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|Any CPU.Build.0 = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|x64.ActiveCfg = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|x64.Build.0 = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|x86.ActiveCfg = Release|Any CPU - {B2F36C33-4D0D-41C4-82D9-AD8217581918}.Release|x86.Build.0 = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|x64.ActiveCfg = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|x64.Build.0 = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|x86.ActiveCfg = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Debug|x86.Build.0 = Debug|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|Any CPU.Build.0 = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|x64.ActiveCfg = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|x64.Build.0 = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|x86.ActiveCfg = Release|Any CPU - {FB57277E-683C-4292-A1E9-25EEA105DB19}.Release|x86.Build.0 = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|Any CPU.Build.0 = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|x64.ActiveCfg = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|x64.Build.0 = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|x86.ActiveCfg = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Debug|x86.Build.0 = Debug|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|Any CPU.ActiveCfg = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|Any CPU.Build.0 = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|x64.ActiveCfg = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|x64.Build.0 = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|x86.ActiveCfg = Release|Any CPU - {058527B0-DB0A-4A01-95B7-789D38A1E375}.Release|x86.Build.0 = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|x64.ActiveCfg = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|x64.Build.0 = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Debug|x86.Build.0 = Debug|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|Any CPU.Build.0 = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|x64.ActiveCfg = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|x64.Build.0 = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|x86.ActiveCfg = Release|Any CPU - {22FB57EB-5420-4146-BFB3-D93CB66014C4}.Release|x86.Build.0 = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|x64.ActiveCfg = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|x64.Build.0 = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|x86.ActiveCfg = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Debug|x86.Build.0 = Debug|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|Any CPU.Build.0 = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|x64.ActiveCfg = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|x64.Build.0 = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|x86.ActiveCfg = Release|Any CPU - {93A5853E-FA39-4D6C-898E-9F647386C5D7}.Release|x86.Build.0 = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|x64.ActiveCfg = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|x64.Build.0 = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|x86.ActiveCfg = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Debug|x86.Build.0 = Debug|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|Any CPU.Build.0 = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|x64.ActiveCfg = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|x64.Build.0 = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|x86.ActiveCfg = Release|Any CPU - {CBEBCB88-76D9-4418-A97D-102E2935C79B}.Release|x86.Build.0 = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|x64.ActiveCfg = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|x64.Build.0 = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|x86.ActiveCfg = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Debug|x86.Build.0 = Debug|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|Any CPU.Build.0 = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|x64.ActiveCfg = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|x64.Build.0 = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|x86.ActiveCfg = Release|Any CPU - {1A8AEE7F-C8D7-4516-BC64-11E72AB85674}.Release|x86.Build.0 = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|x64.ActiveCfg = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|x64.Build.0 = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Debug|x86.Build.0 = Debug|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|Any CPU.Build.0 = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|x64.ActiveCfg = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|x64.Build.0 = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|x86.ActiveCfg = Release|Any CPU - {2B841181-46C2-47D9-8A18-FBBD41533E3E}.Release|x86.Build.0 = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|x64.ActiveCfg = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|x64.Build.0 = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|x86.ActiveCfg = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Debug|x86.Build.0 = Debug|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|Any CPU.Build.0 = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|x64.ActiveCfg = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|x64.Build.0 = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|x86.ActiveCfg = Release|Any CPU - {21E8FBC1-B67C-4BBF-A7F7-45F30144C956}.Release|x86.Build.0 = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|x64.ActiveCfg = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|x64.Build.0 = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|x86.ActiveCfg = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Debug|x86.Build.0 = Debug|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|Any CPU.Build.0 = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|x64.ActiveCfg = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|x64.Build.0 = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|x86.ActiveCfg = Release|Any CPU - {8D79E6F3-C0F7-47DC-912C-745222881F30}.Release|x86.Build.0 = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|x64.ActiveCfg = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|x64.Build.0 = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|x86.ActiveCfg = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Debug|x86.Build.0 = Debug|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|Any CPU.Build.0 = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|x64.ActiveCfg = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|x64.Build.0 = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|x86.ActiveCfg = Release|Any CPU - {58E89CF7-8DA3-41E7-A5D0-58B4834C793D}.Release|x86.Build.0 = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|x64.ActiveCfg = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|x64.Build.0 = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|x86.ActiveCfg = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Debug|x86.Build.0 = Debug|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|Any CPU.Build.0 = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|x64.ActiveCfg = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|x64.Build.0 = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|x86.ActiveCfg = Release|Any CPU - {6E13B4C6-ED57-4324-B394-E490555E4644}.Release|x86.Build.0 = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|x64.ActiveCfg = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|x64.Build.0 = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|x86.ActiveCfg = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Debug|x86.Build.0 = Debug|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|Any CPU.Build.0 = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|x64.ActiveCfg = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|x64.Build.0 = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|x86.ActiveCfg = Release|Any CPU - {33F46C42-E1FC-4477-A1F1-E79715132A97}.Release|x86.Build.0 = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|Any CPU.Build.0 = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|x64.ActiveCfg = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|x64.Build.0 = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|x86.ActiveCfg = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Debug|x86.Build.0 = Debug|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|Any CPU.ActiveCfg = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|Any CPU.Build.0 = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|x64.ActiveCfg = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|x64.Build.0 = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|x86.ActiveCfg = Release|Any CPU - {16CCF48D-9E2A-41B4-91D3-CA41CC296232}.Release|x86.Build.0 = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|x64.ActiveCfg = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|x64.Build.0 = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|x86.ActiveCfg = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Debug|x86.Build.0 = Debug|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|Any CPU.Build.0 = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|x64.ActiveCfg = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|x64.Build.0 = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|x86.ActiveCfg = Release|Any CPU - {59A50689-E20A-4CB6-8687-A09D64611E8D}.Release|x86.Build.0 = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|x64.ActiveCfg = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|x64.Build.0 = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|x86.ActiveCfg = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Debug|x86.Build.0 = Debug|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|Any CPU.Build.0 = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|x64.ActiveCfg = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|x64.Build.0 = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|x86.ActiveCfg = Release|Any CPU - {E4B313F0-8EC8-4650-A0B8-E2E4C3D40071}.Release|x86.Build.0 = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|x64.ActiveCfg = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|x64.Build.0 = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|x86.ActiveCfg = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Debug|x86.Build.0 = Debug|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|Any CPU.Build.0 = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|x64.ActiveCfg = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|x64.Build.0 = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|x86.ActiveCfg = Release|Any CPU - {C833CEF1-BB40-421F-9910-F675B270781C}.Release|x86.Build.0 = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|Any CPU.Build.0 = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|x64.ActiveCfg = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|x64.Build.0 = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|x86.ActiveCfg = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Debug|x86.Build.0 = Debug|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|Any CPU.ActiveCfg = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|Any CPU.Build.0 = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|x64.ActiveCfg = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|x64.Build.0 = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|x86.ActiveCfg = Release|Any CPU - {879AF4A9-6675-4924-9A7E-90079E2DDF12}.Release|x86.Build.0 = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|x64.ActiveCfg = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|x64.Build.0 = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|x86.ActiveCfg = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Debug|x86.Build.0 = Debug|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|Any CPU.Build.0 = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|x64.ActiveCfg = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|x64.Build.0 = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|x86.ActiveCfg = Release|Any CPU - {20523984-7BDF-41BB-86C1-6A7211C2C69A}.Release|x86.Build.0 = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|x64.ActiveCfg = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|x64.Build.0 = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|x86.ActiveCfg = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Debug|x86.Build.0 = Debug|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|Any CPU.Build.0 = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|x64.ActiveCfg = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|x64.Build.0 = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|x86.ActiveCfg = Release|Any CPU - {750EB7AD-2890-443E-BB5C-2BDCC2C535F1}.Release|x86.Build.0 = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|x64.ActiveCfg = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|x64.Build.0 = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|x86.ActiveCfg = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Debug|x86.Build.0 = Debug|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|Any CPU.Build.0 = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|x64.ActiveCfg = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|x64.Build.0 = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|x86.ActiveCfg = Release|Any CPU - {234896FF-DAD3-4596-B26E-6456CA54B43C}.Release|x86.Build.0 = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|x64.ActiveCfg = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|x64.Build.0 = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|x86.ActiveCfg = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Debug|x86.Build.0 = Debug|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|Any CPU.Build.0 = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|x64.ActiveCfg = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|x64.Build.0 = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|x86.ActiveCfg = Release|Any CPU - {092D0383-AFB0-46C5-A721-AD8291D26C8E}.Release|x86.Build.0 = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|x64.ActiveCfg = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|x64.Build.0 = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|x86.ActiveCfg = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Debug|x86.Build.0 = Debug|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|Any CPU.Build.0 = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|x64.ActiveCfg = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|x64.Build.0 = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|x86.ActiveCfg = Release|Any CPU - {4EA61B35-14B5-4498-8E83-55971F5DBD2C}.Release|x86.Build.0 = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|x64.ActiveCfg = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|x64.Build.0 = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|x86.ActiveCfg = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Debug|x86.Build.0 = Debug|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|Any CPU.Build.0 = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|x64.ActiveCfg = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|x64.Build.0 = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|x86.ActiveCfg = Release|Any CPU - {BE551A02-B3D8-4B99-9A14-8E39351E411E}.Release|x86.Build.0 = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|x64.ActiveCfg = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|x64.Build.0 = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|x86.ActiveCfg = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Debug|x86.Build.0 = Debug|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|Any CPU.Build.0 = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|x64.ActiveCfg = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|x64.Build.0 = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|x86.ActiveCfg = Release|Any CPU - {9057E0FA-9D91-4DC2-9E83-46A68B2CE157}.Release|x86.Build.0 = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|x64.ActiveCfg = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|x64.Build.0 = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|x86.ActiveCfg = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Debug|x86.Build.0 = Debug|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|Any CPU.Build.0 = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|x64.ActiveCfg = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|x64.Build.0 = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|x86.ActiveCfg = Release|Any CPU - {21ADF2E1-1878-414C-9ECF-9CDF1923D72B}.Release|x86.Build.0 = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|x64.Build.0 = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Debug|x86.Build.0 = Debug|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|Any CPU.Build.0 = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|x64.ActiveCfg = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|x64.Build.0 = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|x86.ActiveCfg = Release|Any CPU - {8AF9B5D3-5244-42C0-AAB4-E17C37F01EF0}.Release|x86.Build.0 = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|x64.ActiveCfg = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|x64.Build.0 = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|x86.ActiveCfg = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Debug|x86.Build.0 = Debug|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|Any CPU.Build.0 = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|x64.ActiveCfg = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|x64.Build.0 = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|x86.ActiveCfg = Release|Any CPU - {E84E9987-F8C8-4E1B-A61B-858DC36F3AD9}.Release|x86.Build.0 = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|x64.ActiveCfg = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|x64.Build.0 = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|x86.ActiveCfg = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Debug|x86.Build.0 = Debug|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|Any CPU.Build.0 = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|x64.ActiveCfg = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|x64.Build.0 = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|x86.ActiveCfg = Release|Any CPU - {CC1B96F7-4EC8-4532-BD72-3D5CA656A15D}.Release|x86.Build.0 = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|Any CPU.Build.0 = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|x64.ActiveCfg = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|x64.Build.0 = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|x86.ActiveCfg = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Debug|x86.Build.0 = Debug|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|Any CPU.ActiveCfg = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|Any CPU.Build.0 = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|x64.ActiveCfg = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|x64.Build.0 = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|x86.ActiveCfg = Release|Any CPU - {422217FB-4D51-47F1-8613-1D83D7AC6883}.Release|x86.Build.0 = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|x64.ActiveCfg = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|x64.Build.0 = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|x86.ActiveCfg = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Debug|x86.Build.0 = Debug|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|Any CPU.Build.0 = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|x64.ActiveCfg = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|x64.Build.0 = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|x86.ActiveCfg = Release|Any CPU - {E56F4ECE-EB5B-43CE-B6F2-405E73B05FF3}.Release|x86.Build.0 = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|x64.ActiveCfg = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|x64.Build.0 = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|x86.ActiveCfg = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Debug|x86.Build.0 = Debug|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|Any CPU.Build.0 = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|x64.ActiveCfg = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|x64.Build.0 = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|x86.ActiveCfg = Release|Any CPU - {C1C872DE-7AF7-4C66-B649-F0E10AA4F767}.Release|x86.Build.0 = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|x64.ActiveCfg = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|x64.Build.0 = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|x86.ActiveCfg = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Debug|x86.Build.0 = Debug|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|Any CPU.Build.0 = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|x64.ActiveCfg = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|x64.Build.0 = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|x86.ActiveCfg = Release|Any CPU - {BE71C47D-F0E7-4891-B354-B5FBBF97BC47}.Release|x86.Build.0 = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|x64.ActiveCfg = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|x64.Build.0 = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|x86.ActiveCfg = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Debug|x86.Build.0 = Debug|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|Any CPU.Build.0 = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|x64.ActiveCfg = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|x64.Build.0 = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|x86.ActiveCfg = Release|Any CPU - {FCAA7DBE-A9A4-477A-92EF-E315949E097F}.Release|x86.Build.0 = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|x64.ActiveCfg = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|x64.Build.0 = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|x86.ActiveCfg = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Debug|x86.Build.0 = Debug|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|Any CPU.Build.0 = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|x64.ActiveCfg = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|x64.Build.0 = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|x86.ActiveCfg = Release|Any CPU - {8861ABDA-AB19-4525-AFDB-ECEF7EAC877B}.Release|x86.Build.0 = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|x64.ActiveCfg = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|x64.Build.0 = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|x86.ActiveCfg = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Debug|x86.Build.0 = Debug|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|Any CPU.Build.0 = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|x64.ActiveCfg = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|x64.Build.0 = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|x86.ActiveCfg = Release|Any CPU - {F7401901-5B8D-47F1-AE96-D6EE944F47AE}.Release|x86.Build.0 = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|x64.ActiveCfg = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|x64.Build.0 = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|x86.ActiveCfg = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Debug|x86.Build.0 = Debug|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|Any CPU.Build.0 = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|x64.ActiveCfg = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|x64.Build.0 = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|x86.ActiveCfg = Release|Any CPU - {BDF4E7A6-0DD0-490D-9747-189F778A9DE7}.Release|x86.Build.0 = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|x64.ActiveCfg = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|x64.Build.0 = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|x86.ActiveCfg = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Debug|x86.Build.0 = Debug|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|Any CPU.Build.0 = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|x64.ActiveCfg = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|x64.Build.0 = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|x86.ActiveCfg = Release|Any CPU - {9EB87F9E-CA3E-4334-AB3A-DAB9B0AB7D99}.Release|x86.Build.0 = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|x64.ActiveCfg = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|x64.Build.0 = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|x86.ActiveCfg = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Debug|x86.Build.0 = Debug|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|Any CPU.Build.0 = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|x64.ActiveCfg = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|x64.Build.0 = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|x86.ActiveCfg = Release|Any CPU - {4799D3BE-8EE9-4BDF-B3CE-765D2FF2FC74}.Release|x86.Build.0 = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|x64.ActiveCfg = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|x64.Build.0 = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|x86.ActiveCfg = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Debug|x86.Build.0 = Debug|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|Any CPU.Build.0 = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|x64.ActiveCfg = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|x64.Build.0 = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|x86.ActiveCfg = Release|Any CPU - {18110947-DBEE-44D2-93CC-785A87D98201}.Release|x86.Build.0 = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|x64.ActiveCfg = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|x64.Build.0 = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|x86.ActiveCfg = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Debug|x86.Build.0 = Debug|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|Any CPU.Build.0 = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|x64.ActiveCfg = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|x64.Build.0 = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|x86.ActiveCfg = Release|Any CPU - {8F5B304A-CD79-494F-B781-A85FC128C61C}.Release|x86.Build.0 = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|x64.Build.0 = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Debug|x86.Build.0 = Debug|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|Any CPU.Build.0 = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|x64.ActiveCfg = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|x64.Build.0 = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|x86.ActiveCfg = Release|Any CPU - {0C0F4F80-9DBF-48BA-8555-394E0893A035}.Release|x86.Build.0 = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|x64.ActiveCfg = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|x64.Build.0 = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|x86.ActiveCfg = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Debug|x86.Build.0 = Debug|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|Any CPU.Build.0 = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|x64.ActiveCfg = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|x64.Build.0 = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|x86.ActiveCfg = Release|Any CPU - {C52AFCB4-0F2D-4072-90CF-03741D618E54}.Release|x86.Build.0 = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|x64.ActiveCfg = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|x64.Build.0 = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|x86.ActiveCfg = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Debug|x86.Build.0 = Debug|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|Any CPU.Build.0 = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|x64.ActiveCfg = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|x64.Build.0 = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|x86.ActiveCfg = Release|Any CPU - {6883A2CF-71D4-40A1-AD0E-71A7FE3EF72D}.Release|x86.Build.0 = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|x64.ActiveCfg = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|x64.Build.0 = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|x86.ActiveCfg = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Debug|x86.Build.0 = Debug|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|Any CPU.Build.0 = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|x64.ActiveCfg = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|x64.Build.0 = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|x86.ActiveCfg = Release|Any CPU - {7266DD65-1E77-4607-B81F-FAFB02E9C54D}.Release|x86.Build.0 = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|x64.ActiveCfg = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|x64.Build.0 = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|x86.ActiveCfg = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Debug|x86.Build.0 = Debug|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|Any CPU.Build.0 = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|x64.ActiveCfg = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|x64.Build.0 = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|x86.ActiveCfg = Release|Any CPU - {E34453A5-E774-4987-B633-518C78E2E921}.Release|x86.Build.0 = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|x64.Build.0 = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Debug|x86.Build.0 = Debug|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|Any CPU.Build.0 = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|x64.ActiveCfg = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|x64.Build.0 = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|x86.ActiveCfg = Release|Any CPU - {B83268BA-C453-4554-8B27-848E008058A6}.Release|x86.Build.0 = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|x64.ActiveCfg = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|x64.Build.0 = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|x86.ActiveCfg = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Debug|x86.Build.0 = Debug|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|Any CPU.Build.0 = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|x64.ActiveCfg = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|x64.Build.0 = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|x86.ActiveCfg = Release|Any CPU - {0471D2E6-DE42-4698-A526-42962A6940E3}.Release|x86.Build.0 = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|x64.ActiveCfg = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|x64.Build.0 = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|x86.ActiveCfg = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Debug|x86.Build.0 = Debug|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|Any CPU.Build.0 = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|x64.ActiveCfg = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|x64.Build.0 = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|x86.ActiveCfg = Release|Any CPU - {F10A2908-8B9B-48ED-B0FA-CAE6A5BA624C}.Release|x86.Build.0 = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|x64.ActiveCfg = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|x64.Build.0 = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|x86.ActiveCfg = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Debug|x86.Build.0 = Debug|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|Any CPU.Build.0 = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|x64.ActiveCfg = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|x64.Build.0 = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|x86.ActiveCfg = Release|Any CPU - {E6E72448-89C1-4A64-A08A-DD0577B984B4}.Release|x86.Build.0 = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|x64.ActiveCfg = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|x64.Build.0 = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|x86.ActiveCfg = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Debug|x86.Build.0 = Debug|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|Any CPU.Build.0 = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|x64.ActiveCfg = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|x64.Build.0 = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|x86.ActiveCfg = Release|Any CPU - {3C73A034-CA85-4EC9-BF20-0774D7CA82CD}.Release|x86.Build.0 = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|x64.ActiveCfg = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|x64.Build.0 = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|x86.ActiveCfg = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Debug|x86.Build.0 = Debug|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|Any CPU.Build.0 = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|x64.ActiveCfg = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|x64.Build.0 = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|x86.ActiveCfg = Release|Any CPU - {F1D217BC-298D-4A18-B2E0-8AC9720CD138}.Release|x86.Build.0 = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|x64.ActiveCfg = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|x64.Build.0 = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|x86.ActiveCfg = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Debug|x86.Build.0 = Debug|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|Any CPU.Build.0 = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|x64.ActiveCfg = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|x64.Build.0 = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|x86.ActiveCfg = Release|Any CPU - {D28939DB-6992-47FC-82B7-BD7954E02B44}.Release|x86.Build.0 = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|x64.ActiveCfg = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|x64.Build.0 = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|x86.ActiveCfg = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Debug|x86.Build.0 = Debug|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|Any CPU.Build.0 = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|x64.ActiveCfg = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|x64.Build.0 = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|x86.ActiveCfg = Release|Any CPU - {CDEEF3DA-E6DE-4FD6-BA6F-A3447903E35B}.Release|x86.Build.0 = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|x64.ActiveCfg = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|x64.Build.0 = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|x86.ActiveCfg = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Debug|x86.Build.0 = Debug|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|Any CPU.Build.0 = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|x64.ActiveCfg = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|x64.Build.0 = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|x86.ActiveCfg = Release|Any CPU - {E227658F-B45E-4F54-AAE5-51208EB1C510}.Release|x86.Build.0 = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|x64.Build.0 = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Debug|x86.Build.0 = Debug|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|Any CPU.Build.0 = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|x64.ActiveCfg = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|x64.Build.0 = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|x86.ActiveCfg = Release|Any CPU - {4C1EE5AC-D7B6-4389-A85C-CA81944EB6CB}.Release|x86.Build.0 = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|x64.ActiveCfg = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|x64.Build.0 = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|x86.ActiveCfg = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Debug|x86.Build.0 = Debug|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|Any CPU.Build.0 = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|x64.ActiveCfg = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|x64.Build.0 = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|x86.ActiveCfg = Release|Any CPU - {32084CCE-7F37-4EFE-A8B9-018192EFCE5D}.Release|x86.Build.0 = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|x64.ActiveCfg = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|x64.Build.0 = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|x86.ActiveCfg = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Debug|x86.Build.0 = Debug|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|Any CPU.Build.0 = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|x64.ActiveCfg = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|x64.Build.0 = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|x86.ActiveCfg = Release|Any CPU - {75FFE7A4-BE5A-4FF1-9016-80E0F1EAAD39}.Release|x86.Build.0 = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|x64.Build.0 = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Debug|x86.Build.0 = Debug|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|Any CPU.Build.0 = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|x64.ActiveCfg = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|x64.Build.0 = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|x86.ActiveCfg = Release|Any CPU - {BFA57FC1-DFD9-49CF-A6A4-9FB1525738DB}.Release|x86.Build.0 = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|x64.ActiveCfg = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|x64.Build.0 = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|x86.ActiveCfg = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Debug|x86.Build.0 = Debug|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|Any CPU.Build.0 = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|x64.ActiveCfg = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|x64.Build.0 = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|x86.ActiveCfg = Release|Any CPU - {94217FE1-4F2A-4AA1-95CC-F5DD1C693EEA}.Release|x86.Build.0 = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|x64.ActiveCfg = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|x64.Build.0 = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|x86.ActiveCfg = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Debug|x86.Build.0 = Debug|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|Any CPU.Build.0 = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|x64.ActiveCfg = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|x64.Build.0 = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|x86.ActiveCfg = Release|Any CPU - {3BB02B6A-7AC8-4F82-BCAC-9DD5E8EFDA8C}.Release|x86.Build.0 = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|x64.ActiveCfg = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|x64.Build.0 = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|x86.ActiveCfg = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Debug|x86.Build.0 = Debug|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|Any CPU.Build.0 = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|x64.ActiveCfg = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|x64.Build.0 = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|x86.ActiveCfg = Release|Any CPU - {D58C2902-516B-4212-8ED8-ADDFB812B39B}.Release|x86.Build.0 = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|x64.ActiveCfg = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|x64.Build.0 = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|x86.ActiveCfg = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Debug|x86.Build.0 = Debug|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|Any CPU.Build.0 = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|x64.ActiveCfg = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|x64.Build.0 = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|x86.ActiveCfg = Release|Any CPU - {FC3CD053-0C9B-4AB0-80D7-A01CAD59F8DE}.Release|x86.Build.0 = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|x64.ActiveCfg = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|x64.Build.0 = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|x86.ActiveCfg = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Debug|x86.Build.0 = Debug|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|Any CPU.Build.0 = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|x64.ActiveCfg = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|x64.Build.0 = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|x86.ActiveCfg = Release|Any CPU - {C7668C15-57F6-4549-B821-AB4BF18B8935}.Release|x86.Build.0 = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|x64.ActiveCfg = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|x64.Build.0 = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|x86.ActiveCfg = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Debug|x86.Build.0 = Debug|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|Any CPU.Build.0 = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|x64.ActiveCfg = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|x64.Build.0 = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|x86.ActiveCfg = Release|Any CPU - {FE9FC9EC-63D3-4242-87DD-9C313D16E282}.Release|x86.Build.0 = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|x64.ActiveCfg = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|x64.Build.0 = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|x86.ActiveCfg = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Debug|x86.Build.0 = Debug|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|Any CPU.Build.0 = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|x64.ActiveCfg = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|x64.Build.0 = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|x86.ActiveCfg = Release|Any CPU - {E7C5024A-DF2D-4FE0-815A-FC05AEA427D3}.Release|x86.Build.0 = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|Any CPU.Build.0 = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|x64.ActiveCfg = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|x64.Build.0 = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|x86.ActiveCfg = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Debug|x86.Build.0 = Debug|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|Any CPU.ActiveCfg = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|Any CPU.Build.0 = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|x64.ActiveCfg = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|x64.Build.0 = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|x86.ActiveCfg = Release|Any CPU - {026DED5B-AD8E-43C7-A05A-E906A4862E68}.Release|x86.Build.0 = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|x64.ActiveCfg = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|x64.Build.0 = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|x86.ActiveCfg = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Debug|x86.Build.0 = Debug|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|Any CPU.Build.0 = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|x64.ActiveCfg = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|x64.Build.0 = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|x86.ActiveCfg = Release|Any CPU - {AA61D79E-DA3F-41D6-95D5-F6AB689A6B56}.Release|x86.Build.0 = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|x64.ActiveCfg = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|x64.Build.0 = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|x86.ActiveCfg = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Debug|x86.Build.0 = Debug|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|Any CPU.Build.0 = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|x64.ActiveCfg = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|x64.Build.0 = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|x86.ActiveCfg = Release|Any CPU - {DF706E65-746D-4753-9E0B-86BCC412CCD6}.Release|x86.Build.0 = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|x64.ActiveCfg = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|x64.Build.0 = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|x86.ActiveCfg = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Debug|x86.Build.0 = Debug|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|Any CPU.Build.0 = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|x64.ActiveCfg = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|x64.Build.0 = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|x86.ActiveCfg = Release|Any CPU - {A22C2A3E-FE6C-439C-A482-E294DAB03677}.Release|x86.Build.0 = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|x64.ActiveCfg = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|x64.Build.0 = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|x86.ActiveCfg = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Debug|x86.Build.0 = Debug|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|Any CPU.Build.0 = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|x64.ActiveCfg = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|x64.Build.0 = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|x86.ActiveCfg = Release|Any CPU - {3D7DEA52-1BCD-4175-87A7-2896189E5B1E}.Release|x86.Build.0 = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|x64.ActiveCfg = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|x64.Build.0 = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|x86.ActiveCfg = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Debug|x86.Build.0 = Debug|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|Any CPU.Build.0 = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|x64.ActiveCfg = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|x64.Build.0 = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|x86.ActiveCfg = Release|Any CPU - {C337C5E5-7123-4122-8BEE-A6B786684A3E}.Release|x86.Build.0 = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|x64.ActiveCfg = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|x64.Build.0 = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|x86.ActiveCfg = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Debug|x86.Build.0 = Debug|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|Any CPU.Build.0 = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|x64.ActiveCfg = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|x64.Build.0 = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|x86.ActiveCfg = Release|Any CPU - {12D6ECFF-CF38-4F1A-B288-791A32FCDAB2}.Release|x86.Build.0 = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|x64.ActiveCfg = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|x64.Build.0 = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|x86.ActiveCfg = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Debug|x86.Build.0 = Debug|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|Any CPU.Build.0 = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|x64.ActiveCfg = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|x64.Build.0 = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|x86.ActiveCfg = Release|Any CPU - {0472EB55-FCA4-4861-AF18-5B2DEA29EF6F}.Release|x86.Build.0 = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|x64.ActiveCfg = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|x64.Build.0 = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|x86.ActiveCfg = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Debug|x86.Build.0 = Debug|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|Any CPU.Build.0 = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|x64.ActiveCfg = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|x64.Build.0 = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|x86.ActiveCfg = Release|Any CPU - {74C43C0C-853B-4D40-AA22-066486F7F3C0}.Release|x86.Build.0 = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|Any CPU.Build.0 = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|x64.ActiveCfg = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|x64.Build.0 = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|x86.ActiveCfg = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Debug|x86.Build.0 = Debug|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|Any CPU.ActiveCfg = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|Any CPU.Build.0 = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|x64.ActiveCfg = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|x64.Build.0 = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|x86.ActiveCfg = Release|Any CPU - {26E813B0-60DD-4468-A6AD-EFF5CC56CF21}.Release|x86.Build.0 = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|x64.ActiveCfg = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|x64.Build.0 = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|x86.ActiveCfg = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Debug|x86.Build.0 = Debug|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|Any CPU.Build.0 = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|x64.ActiveCfg = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|x64.Build.0 = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|x86.ActiveCfg = Release|Any CPU - {AF3DCB2B-FC14-4D97-897F-F3F63FDABC02}.Release|x86.Build.0 = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|x64.Build.0 = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Debug|x86.Build.0 = Debug|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|Any CPU.Build.0 = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|x64.ActiveCfg = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|x64.Build.0 = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|x86.ActiveCfg = Release|Any CPU - {10581947-42A6-43C9-A3A2-E20198871BC3}.Release|x86.Build.0 = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|x64.ActiveCfg = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|x64.Build.0 = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|x86.ActiveCfg = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Debug|x86.Build.0 = Debug|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|Any CPU.Build.0 = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|x64.ActiveCfg = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|x64.Build.0 = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|x86.ActiveCfg = Release|Any CPU - {1A8DFFE1-2064-44DA-96C2-D116D74F7E4B}.Release|x86.Build.0 = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|x64.ActiveCfg = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|x64.Build.0 = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|x86.ActiveCfg = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Debug|x86.Build.0 = Debug|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|Any CPU.Build.0 = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|x64.ActiveCfg = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|x64.Build.0 = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|x86.ActiveCfg = Release|Any CPU - {8EA864EF-902F-4E56-8E76-99B0BD5C7454}.Release|x86.Build.0 = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|x64.ActiveCfg = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|x64.Build.0 = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|x86.ActiveCfg = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Debug|x86.Build.0 = Debug|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|Any CPU.Build.0 = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|x64.ActiveCfg = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|x64.Build.0 = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|x86.ActiveCfg = Release|Any CPU - {DDCF227A-81B6-4AA0-97E7-B368E7B103D1}.Release|x86.Build.0 = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|x64.ActiveCfg = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|x64.Build.0 = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|x86.ActiveCfg = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Debug|x86.Build.0 = Debug|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|Any CPU.Build.0 = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|x64.ActiveCfg = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|x64.Build.0 = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|x86.ActiveCfg = Release|Any CPU - {F1118C91-5A72-489D-AFC7-FE27F459C842}.Release|x86.Build.0 = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|x64.ActiveCfg = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|x64.Build.0 = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|x86.ActiveCfg = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Debug|x86.Build.0 = Debug|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|Any CPU.Build.0 = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|x64.ActiveCfg = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|x64.Build.0 = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|x86.ActiveCfg = Release|Any CPU - {3D32781A-4C6D-43A7-BA9F-4E9733ED7BED}.Release|x86.Build.0 = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|x64.ActiveCfg = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|x64.Build.0 = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|x86.ActiveCfg = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Debug|x86.Build.0 = Debug|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|Any CPU.Build.0 = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|x64.ActiveCfg = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|x64.Build.0 = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|x86.ActiveCfg = Release|Any CPU - {5C059E1C-8CC0-4A7D-98FF-76055857D5D2}.Release|x86.Build.0 = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|x64.ActiveCfg = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|x64.Build.0 = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|x86.ActiveCfg = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Debug|x86.Build.0 = Debug|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|Any CPU.Build.0 = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|x64.ActiveCfg = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|x64.Build.0 = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|x86.ActiveCfg = Release|Any CPU - {3A761E73-7F0C-479E-B6B2-9FFF5DA4ACC6}.Release|x86.Build.0 = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|x64.ActiveCfg = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|x64.Build.0 = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|x86.ActiveCfg = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Debug|x86.Build.0 = Debug|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|Any CPU.Build.0 = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|x64.ActiveCfg = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|x64.Build.0 = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|x86.ActiveCfg = Release|Any CPU - {5B796B39-AD73-4AC9-B006-7F0DDB7791A1}.Release|x86.Build.0 = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|x64.ActiveCfg = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|x64.Build.0 = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|x86.ActiveCfg = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Debug|x86.Build.0 = Debug|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|Any CPU.Build.0 = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|x64.ActiveCfg = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|x64.Build.0 = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|x86.ActiveCfg = Release|Any CPU - {FF34FE24-8EA3-413A-8888-E4128FF000D6}.Release|x86.Build.0 = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|x64.ActiveCfg = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|x64.Build.0 = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|x86.ActiveCfg = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Debug|x86.Build.0 = Debug|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|Any CPU.Build.0 = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|x64.ActiveCfg = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|x64.Build.0 = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|x86.ActiveCfg = Release|Any CPU - {BE1425A8-6216-442C-A92D-E3C930CC0FEC}.Release|x86.Build.0 = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|x64.ActiveCfg = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|x64.Build.0 = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|x86.ActiveCfg = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Debug|x86.Build.0 = Debug|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|Any CPU.Build.0 = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|x64.ActiveCfg = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|x64.Build.0 = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|x86.ActiveCfg = Release|Any CPU - {9FF94453-27E9-4798-9E9E-606048F90E75}.Release|x86.Build.0 = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|x64.ActiveCfg = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|x64.Build.0 = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|x86.ActiveCfg = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Debug|x86.Build.0 = Debug|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|Any CPU.Build.0 = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|x64.ActiveCfg = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|x64.Build.0 = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|x86.ActiveCfg = Release|Any CPU - {3CCDAEB3-89D2-4766-AB77-D4A8352BB3C5}.Release|x86.Build.0 = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|x64.ActiveCfg = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|x64.Build.0 = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|x86.ActiveCfg = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Debug|x86.Build.0 = Debug|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|Any CPU.Build.0 = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|x64.ActiveCfg = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|x64.Build.0 = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|x86.ActiveCfg = Release|Any CPU - {6CB9CE2C-43C1-4A57-BAEE-D75F67176FBE}.Release|x86.Build.0 = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|x64.ActiveCfg = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|x64.Build.0 = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|x86.ActiveCfg = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Debug|x86.Build.0 = Debug|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|Any CPU.Build.0 = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|x64.ActiveCfg = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|x64.Build.0 = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|x86.ActiveCfg = Release|Any CPU - {F5C73999-17C7-4466-839D-618039A7DF89}.Release|x86.Build.0 = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|x64.ActiveCfg = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|x64.Build.0 = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|x86.ActiveCfg = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Debug|x86.Build.0 = Debug|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|Any CPU.Build.0 = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|x64.ActiveCfg = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|x64.Build.0 = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|x86.ActiveCfg = Release|Any CPU + {D3E02075-305B-4A78-A384-E50166F2D5A3}.Release|x86.Build.0 = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|x64.ActiveCfg = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|x64.Build.0 = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|x86.ActiveCfg = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Debug|x86.Build.0 = Debug|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|Any CPU.Build.0 = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|x64.ActiveCfg = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|x64.Build.0 = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|x86.ActiveCfg = Release|Any CPU + {B4FB4A21-F2D5-491D-B25A-8B695B54D716}.Release|x86.Build.0 = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|Any CPU.Build.0 = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|x64.ActiveCfg = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|x64.Build.0 = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|x86.ActiveCfg = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Debug|x86.Build.0 = Debug|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|Any CPU.ActiveCfg = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|Any CPU.Build.0 = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|x64.ActiveCfg = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|x64.Build.0 = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|x86.ActiveCfg = Release|Any CPU + {234C7376-491F-45DD-8C2E-37A7AC92EF03}.Release|x86.Build.0 = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|x64.Build.0 = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Debug|x86.Build.0 = Debug|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|Any CPU.Build.0 = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|x64.ActiveCfg = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|x64.Build.0 = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|x86.ActiveCfg = Release|Any CPU + {13BE74D8-A324-49A6-8583-7D42A18B70C7}.Release|x86.Build.0 = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|x64.ActiveCfg = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|x64.Build.0 = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|x86.ActiveCfg = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Debug|x86.Build.0 = Debug|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|Any CPU.Build.0 = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|x64.ActiveCfg = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|x64.Build.0 = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|x86.ActiveCfg = Release|Any CPU + {162E54DE-E3E3-4191-A615-A9DC9858E86D}.Release|x86.Build.0 = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|x64.ActiveCfg = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|x64.Build.0 = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|x86.ActiveCfg = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Debug|x86.Build.0 = Debug|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|Any CPU.Build.0 = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|x64.ActiveCfg = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|x64.Build.0 = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|x86.ActiveCfg = Release|Any CPU + {A911BDC1-D992-40E7-8A24-80C9CD4E9890}.Release|x86.Build.0 = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|x64.ActiveCfg = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|x64.Build.0 = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|x86.ActiveCfg = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Debug|x86.Build.0 = Debug|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|Any CPU.Build.0 = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|x64.ActiveCfg = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|x64.Build.0 = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|x86.ActiveCfg = Release|Any CPU + {E5AF006E-F5A3-4537-834E-B80A0FFE7D30}.Release|x86.Build.0 = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|x64.ActiveCfg = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|x64.Build.0 = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|x86.ActiveCfg = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Debug|x86.Build.0 = Debug|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|Any CPU.Build.0 = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|x64.ActiveCfg = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|x64.Build.0 = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|x86.ActiveCfg = Release|Any CPU + {B1F1800F-44D3-43CA-B04A-077D775DEA9F}.Release|x86.Build.0 = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|x64.ActiveCfg = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|x64.Build.0 = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|x86.ActiveCfg = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Debug|x86.Build.0 = Debug|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|Any CPU.Build.0 = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|x64.ActiveCfg = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|x64.Build.0 = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|x86.ActiveCfg = Release|Any CPU + {D49DC937-E75C-457A-9766-3DB97D064040}.Release|x86.Build.0 = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|x64.ActiveCfg = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|x64.Build.0 = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|x86.ActiveCfg = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Debug|x86.Build.0 = Debug|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|Any CPU.Build.0 = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|x64.ActiveCfg = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|x64.Build.0 = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|x86.ActiveCfg = Release|Any CPU + {E97BA046-D291-46AC-9D16-493D449F36BC}.Release|x86.Build.0 = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|x64.ActiveCfg = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|x64.Build.0 = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Debug|x86.Build.0 = Debug|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|Any CPU.Build.0 = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|x64.ActiveCfg = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|x64.Build.0 = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|x86.ActiveCfg = Release|Any CPU + {BF10B1AD-0460-4A2D-8B86-B18CD32A698B}.Release|x86.Build.0 = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|x64.ActiveCfg = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|x64.Build.0 = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Debug|x86.Build.0 = Debug|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|Any CPU.Build.0 = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|x64.ActiveCfg = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|x64.Build.0 = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|x86.ActiveCfg = Release|Any CPU + {C5204604-7AE2-4D6D-8B7F-FB290BB964AB}.Release|x86.Build.0 = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|x64.ActiveCfg = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|x64.Build.0 = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|x86.ActiveCfg = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Debug|x86.Build.0 = Debug|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|Any CPU.Build.0 = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|x64.ActiveCfg = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|x64.Build.0 = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|x86.ActiveCfg = Release|Any CPU + {2773BF50-F94E-4E69-BC3C-7F37755F4AF2}.Release|x86.Build.0 = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|Any CPU.Build.0 = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|x64.ActiveCfg = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|x64.Build.0 = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|x86.ActiveCfg = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Debug|x86.Build.0 = Debug|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|Any CPU.ActiveCfg = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|Any CPU.Build.0 = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|x64.ActiveCfg = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|x64.Build.0 = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|x86.ActiveCfg = Release|Any CPU + {382A4F01-FF9F-49C8-82F9-66C7FA413748}.Release|x86.Build.0 = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|x64.ActiveCfg = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|x64.Build.0 = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|x86.ActiveCfg = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Debug|x86.Build.0 = Debug|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|Any CPU.Build.0 = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|x64.ActiveCfg = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|x64.Build.0 = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|x86.ActiveCfg = Release|Any CPU + {D07E2156-4571-4140-A9FD-72139C7CC7F5}.Release|x86.Build.0 = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|x64.Build.0 = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Debug|x86.Build.0 = Debug|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|Any CPU.Build.0 = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|x64.ActiveCfg = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|x64.Build.0 = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|x86.ActiveCfg = Release|Any CPU + {76078BCA-E63C-45C4-9E81-5CDBBF61E8C7}.Release|x86.Build.0 = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|x64.ActiveCfg = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|x64.Build.0 = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|x86.ActiveCfg = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Debug|x86.Build.0 = Debug|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|Any CPU.Build.0 = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|x64.ActiveCfg = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|x64.Build.0 = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|x86.ActiveCfg = Release|Any CPU + {B0EDEF45-519E-4A23-A7CA-286B41D0874D}.Release|x86.Build.0 = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|Any CPU.Build.0 = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|x64.ActiveCfg = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|x64.Build.0 = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|x86.ActiveCfg = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Debug|x86.Build.0 = Debug|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|Any CPU.ActiveCfg = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|Any CPU.Build.0 = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|x64.ActiveCfg = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|x64.Build.0 = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|x86.ActiveCfg = Release|Any CPU + {190C7964-F300-4445-AF40-93B0AF839189}.Release|x86.Build.0 = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|x64.ActiveCfg = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|x64.Build.0 = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Debug|x86.Build.0 = Debug|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|Any CPU.Build.0 = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|x64.ActiveCfg = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|x64.Build.0 = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|x86.ActiveCfg = Release|Any CPU + {C1F644D9-47CF-4C34-9A60-9865690B5D7C}.Release|x86.Build.0 = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|x64.ActiveCfg = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|x64.Build.0 = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|x86.ActiveCfg = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Debug|x86.Build.0 = Debug|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|Any CPU.Build.0 = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|x64.ActiveCfg = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|x64.Build.0 = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|x86.ActiveCfg = Release|Any CPU + {273BA0E1-52F6-44B4-BDC8-61F5AB8286AA}.Release|x86.Build.0 = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|x64.ActiveCfg = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|x64.Build.0 = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|x86.ActiveCfg = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Debug|x86.Build.0 = Debug|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|Any CPU.Build.0 = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|x64.ActiveCfg = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|x64.Build.0 = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|x86.ActiveCfg = Release|Any CPU + {A27F8756-F4B4-44BF-A447-3E4190A6B983}.Release|x86.Build.0 = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|x64.ActiveCfg = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|x64.Build.0 = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|x86.ActiveCfg = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Debug|x86.Build.0 = Debug|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|Any CPU.Build.0 = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|x64.ActiveCfg = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|x64.Build.0 = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|x86.ActiveCfg = Release|Any CPU + {E71D6CBC-6834-4020-875A-6BD46CF96172}.Release|x86.Build.0 = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|x64.ActiveCfg = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|x64.Build.0 = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|x86.ActiveCfg = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Debug|x86.Build.0 = Debug|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|Any CPU.Build.0 = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|x64.ActiveCfg = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|x64.Build.0 = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|x86.ActiveCfg = Release|Any CPU + {F659F2E5-23D0-40EE-B1B0-21B99EA2C73C}.Release|x86.Build.0 = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|x64.ActiveCfg = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|x64.Build.0 = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|x86.ActiveCfg = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Debug|x86.Build.0 = Debug|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|Any CPU.Build.0 = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|x64.ActiveCfg = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|x64.Build.0 = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|x86.ActiveCfg = Release|Any CPU + {1D22F4D4-EE10-415D-A568-04B6C61345F2}.Release|x86.Build.0 = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|x64.Build.0 = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Debug|x86.Build.0 = Debug|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|Any CPU.Build.0 = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|x64.ActiveCfg = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|x64.Build.0 = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|x86.ActiveCfg = Release|Any CPU + {0C2FC1B0-C376-455E-BBC1-0A446EBB5563}.Release|x86.Build.0 = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|x64.ActiveCfg = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|x64.Build.0 = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|x86.ActiveCfg = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Debug|x86.Build.0 = Debug|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|Any CPU.Build.0 = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|x64.ActiveCfg = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|x64.Build.0 = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|x86.ActiveCfg = Release|Any CPU + {6ADCF18C-5F9D-48C5-95FC-B5ED51033C76}.Release|x86.Build.0 = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|x64.Build.0 = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Debug|x86.Build.0 = Debug|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|Any CPU.Build.0 = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|x64.ActiveCfg = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|x64.Build.0 = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|x86.ActiveCfg = Release|Any CPU + {5C3B2556-E8A8-43A9-86DA-22BAA4C351E2}.Release|x86.Build.0 = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|x64.ActiveCfg = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|x64.Build.0 = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|x86.ActiveCfg = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Debug|x86.Build.0 = Debug|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|Any CPU.Build.0 = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|x64.ActiveCfg = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|x64.Build.0 = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|x86.ActiveCfg = Release|Any CPU + {80D4E136-1C66-4D13-80C6-B09420DEBDAF}.Release|x86.Build.0 = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|x64.ActiveCfg = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|x64.Build.0 = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|x86.ActiveCfg = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Debug|x86.Build.0 = Debug|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|Any CPU.Build.0 = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|x64.ActiveCfg = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|x64.Build.0 = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|x86.ActiveCfg = Release|Any CPU + {15EACDE5-9F77-475A-828D-24F7B9A393E0}.Release|x86.Build.0 = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|x64.ActiveCfg = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|x64.Build.0 = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|x86.ActiveCfg = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Debug|x86.Build.0 = Debug|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|Any CPU.Build.0 = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|x64.ActiveCfg = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|x64.Build.0 = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|x86.ActiveCfg = Release|Any CPU + {631DE655-AA50-4834-A860-4DB05F7A7B08}.Release|x86.Build.0 = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|x64.ActiveCfg = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|x64.Build.0 = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|x86.ActiveCfg = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Debug|x86.Build.0 = Debug|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|Any CPU.Build.0 = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|x64.ActiveCfg = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|x64.Build.0 = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|x86.ActiveCfg = Release|Any CPU + {A759214D-7A0C-4A7E-BCB7-0553F8241A37}.Release|x86.Build.0 = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|x64.ActiveCfg = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|x64.Build.0 = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|x86.ActiveCfg = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Debug|x86.Build.0 = Debug|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|Any CPU.Build.0 = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|x64.ActiveCfg = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|x64.Build.0 = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|x86.ActiveCfg = Release|Any CPU + {CC647C22-5250-476C-83EB-00BE700A11DB}.Release|x86.Build.0 = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|x64.Build.0 = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Debug|x86.Build.0 = Debug|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|Any CPU.Build.0 = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|x64.ActiveCfg = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|x64.Build.0 = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|x86.ActiveCfg = Release|Any CPU + {3C9FDBD3-D8D6-452D-86B8-6CF68A7938E7}.Release|x86.Build.0 = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|x64.Build.0 = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Debug|x86.Build.0 = Debug|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|Any CPU.Build.0 = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|x64.ActiveCfg = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|x64.Build.0 = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|x86.ActiveCfg = Release|Any CPU + {CB82B0A0-F1B1-4C88-935D-FC7E2739E3D1}.Release|x86.Build.0 = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|x64.Build.0 = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Debug|x86.Build.0 = Debug|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|Any CPU.Build.0 = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|x64.ActiveCfg = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|x64.Build.0 = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|x86.ActiveCfg = Release|Any CPU + {18A01B9D-8DFD-4B36-9E2A-C193E1612BE4}.Release|x86.Build.0 = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|x64.ActiveCfg = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|x64.Build.0 = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|x86.ActiveCfg = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Debug|x86.Build.0 = Debug|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|Any CPU.Build.0 = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|x64.ActiveCfg = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|x64.Build.0 = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|x86.ActiveCfg = Release|Any CPU + {7CDC8954-A88C-4D16-B2AA-59EBF8F592C4}.Release|x86.Build.0 = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|x64.ActiveCfg = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|x64.Build.0 = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|x86.ActiveCfg = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Debug|x86.Build.0 = Debug|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|Any CPU.Build.0 = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|x64.ActiveCfg = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|x64.Build.0 = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|x86.ActiveCfg = Release|Any CPU + {6C3A5D95-FAF1-497A-A959-ECAD5B17E5FB}.Release|x86.Build.0 = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|x64.ActiveCfg = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|x64.Build.0 = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|x86.ActiveCfg = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Debug|x86.Build.0 = Debug|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|Any CPU.Build.0 = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|x64.ActiveCfg = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|x64.Build.0 = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|x86.ActiveCfg = Release|Any CPU + {33AEABCD-757B-430B-81D6-9128C3F55E02}.Release|x86.Build.0 = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|x64.ActiveCfg = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|x64.Build.0 = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|x86.ActiveCfg = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Debug|x86.Build.0 = Debug|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|Any CPU.Build.0 = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|x64.ActiveCfg = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|x64.Build.0 = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|x86.ActiveCfg = Release|Any CPU + {47467D05-54A5-41CA-A092-A446AB701700}.Release|x86.Build.0 = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|x64.Build.0 = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Debug|x86.Build.0 = Debug|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|Any CPU.Build.0 = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|x64.ActiveCfg = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|x64.Build.0 = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|x86.ActiveCfg = Release|Any CPU + {B9FB721B-F08E-4636-ADE9-AE34EB637DA6}.Release|x86.Build.0 = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|x64.ActiveCfg = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|x64.Build.0 = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|x86.ActiveCfg = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Debug|x86.Build.0 = Debug|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|Any CPU.Build.0 = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|x64.ActiveCfg = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|x64.Build.0 = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|x86.ActiveCfg = Release|Any CPU + {8FE96B31-66B4-43AA-8C0A-86685BF8619F}.Release|x86.Build.0 = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|x64.Build.0 = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|x86.ActiveCfg = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Debug|x86.Build.0 = Debug|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|Any CPU.Build.0 = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|x64.ActiveCfg = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|x64.Build.0 = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|x86.ActiveCfg = Release|Any CPU + {52EFEFA5-0584-4693-BA00-DFF49855E7C1}.Release|x86.Build.0 = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|x64.ActiveCfg = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|x64.Build.0 = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|x86.ActiveCfg = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Debug|x86.Build.0 = Debug|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|Any CPU.Build.0 = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|x64.ActiveCfg = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|x64.Build.0 = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|x86.ActiveCfg = Release|Any CPU + {030A5658-0EAB-41E6-9258-1D6FCA66B6F3}.Release|x86.Build.0 = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|x64.ActiveCfg = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|x64.Build.0 = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|x86.ActiveCfg = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Debug|x86.Build.0 = Debug|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|Any CPU.Build.0 = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|x64.ActiveCfg = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|x64.Build.0 = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|x86.ActiveCfg = Release|Any CPU + {BC2E8AB8-6F4A-4464-BF8F-4277ED0F734F}.Release|x86.Build.0 = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|x64.ActiveCfg = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|x64.Build.0 = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Debug|x86.Build.0 = Debug|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|Any CPU.Build.0 = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|x64.ActiveCfg = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|x64.Build.0 = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|x86.ActiveCfg = Release|Any CPU + {D9F4624C-5EB8-44C5-9459-625954DBF1A6}.Release|x86.Build.0 = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|x64.Build.0 = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Debug|x86.Build.0 = Debug|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|Any CPU.Build.0 = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|x64.ActiveCfg = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|x64.Build.0 = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|x86.ActiveCfg = Release|Any CPU + {DB7630D6-8EC9-45EE-B312-E74088CC4E10}.Release|x86.Build.0 = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|x64.ActiveCfg = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|x64.Build.0 = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|x86.ActiveCfg = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Debug|x86.Build.0 = Debug|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|Any CPU.Build.0 = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|x64.ActiveCfg = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|x64.Build.0 = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|x86.ActiveCfg = Release|Any CPU + {3FA7DD63-4ED6-4F03-9C7B-88F115594AAA}.Release|x86.Build.0 = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|Any CPU.Build.0 = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|x64.ActiveCfg = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|x64.Build.0 = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|x86.ActiveCfg = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Debug|x86.Build.0 = Debug|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|Any CPU.ActiveCfg = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|Any CPU.Build.0 = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|x64.ActiveCfg = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|x64.Build.0 = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|x86.ActiveCfg = Release|Any CPU + {774734C2-2687-4C9D-81A3-127EC82E0129}.Release|x86.Build.0 = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|x64.ActiveCfg = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|x64.Build.0 = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|x86.ActiveCfg = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Debug|x86.Build.0 = Debug|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|Any CPU.Build.0 = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|x64.ActiveCfg = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|x64.Build.0 = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|x86.ActiveCfg = Release|Any CPU + {24054A1F-65FB-4A3E-8D4E-DE26C684DDB3}.Release|x86.Build.0 = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|x64.Build.0 = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Debug|x86.Build.0 = Debug|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|Any CPU.Build.0 = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|x64.ActiveCfg = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|x64.Build.0 = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|x86.ActiveCfg = Release|Any CPU + {6E5844BF-8A30-4DDE-AC12-F494EF973441}.Release|x86.Build.0 = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|x64.ActiveCfg = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|x64.Build.0 = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|x86.ActiveCfg = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Debug|x86.Build.0 = Debug|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|Any CPU.Build.0 = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|x64.ActiveCfg = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|x64.Build.0 = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|x86.ActiveCfg = Release|Any CPU + {55B041F3-80EC-496C-AC72-39A95BB448EC}.Release|x86.Build.0 = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|x64.ActiveCfg = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|x64.Build.0 = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|x86.ActiveCfg = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Debug|x86.Build.0 = Debug|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|Any CPU.Build.0 = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|x64.ActiveCfg = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|x64.Build.0 = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|x86.ActiveCfg = Release|Any CPU + {B590F3E5-9479-4980-9E00-E1251D97DEBF}.Release|x86.Build.0 = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|x64.ActiveCfg = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|x64.Build.0 = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|x86.ActiveCfg = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Debug|x86.Build.0 = Debug|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|Any CPU.Build.0 = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|x64.ActiveCfg = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|x64.Build.0 = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|x86.ActiveCfg = Release|Any CPU + {7EAAEBA3-AF1C-4A93-9D95-FA600F3B8130}.Release|x86.Build.0 = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|x64.ActiveCfg = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|x64.Build.0 = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|x86.ActiveCfg = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Debug|x86.Build.0 = Debug|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|Any CPU.Build.0 = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|x64.ActiveCfg = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|x64.Build.0 = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|x86.ActiveCfg = Release|Any CPU + {87F12345-0584-4927-9494-B302BC6CE884}.Release|x86.Build.0 = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|x64.ActiveCfg = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|x64.Build.0 = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|x86.ActiveCfg = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Debug|x86.Build.0 = Debug|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|Any CPU.Build.0 = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|x64.ActiveCfg = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|x64.Build.0 = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|x86.ActiveCfg = Release|Any CPU + {85E56229-EB42-475F-878A-32764204AC87}.Release|x86.Build.0 = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|x64.Build.0 = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Debug|x86.Build.0 = Debug|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|Any CPU.Build.0 = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|x64.ActiveCfg = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|x64.Build.0 = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|x86.ActiveCfg = Release|Any CPU + {957AFA68-CE21-47D2-8608-26DE31AF71B1}.Release|x86.Build.0 = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|x64.ActiveCfg = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|x64.Build.0 = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|x86.ActiveCfg = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Debug|x86.Build.0 = Debug|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|Any CPU.Build.0 = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|x64.ActiveCfg = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|x64.Build.0 = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|x86.ActiveCfg = Release|Any CPU + {16419B62-CCD9-4435-9C37-138C818882A7}.Release|x86.Build.0 = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|x64.ActiveCfg = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|x64.Build.0 = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|x86.ActiveCfg = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Debug|x86.Build.0 = Debug|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|Any CPU.Build.0 = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|x64.ActiveCfg = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|x64.Build.0 = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|x86.ActiveCfg = Release|Any CPU + {EDFECBA7-8F05-46BF-8D14-B407350904E0}.Release|x86.Build.0 = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|x64.Build.0 = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|x86.ActiveCfg = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Debug|x86.Build.0 = Debug|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|Any CPU.Build.0 = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|x64.ActiveCfg = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|x64.Build.0 = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|x86.ActiveCfg = Release|Any CPU + {4896401B-46A8-4C0E-8F67-1D846968AFD9}.Release|x86.Build.0 = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|Any CPU.Build.0 = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|x64.ActiveCfg = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|x64.Build.0 = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|x86.ActiveCfg = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Debug|x86.Build.0 = Debug|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|Any CPU.ActiveCfg = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|Any CPU.Build.0 = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|x64.ActiveCfg = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|x64.Build.0 = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|x86.ActiveCfg = Release|Any CPU + {473C7796-F6E8-4D5B-95B8-ADF789619893}.Release|x86.Build.0 = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|x64.ActiveCfg = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|x64.Build.0 = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|x86.ActiveCfg = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Debug|x86.Build.0 = Debug|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|Any CPU.Build.0 = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|x64.ActiveCfg = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|x64.Build.0 = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|x86.ActiveCfg = Release|Any CPU + {02A8249E-32BC-4ACB-B406-6F0DBA43A57F}.Release|x86.Build.0 = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|x64.ActiveCfg = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|x64.Build.0 = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|x86.ActiveCfg = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Debug|x86.Build.0 = Debug|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|Any CPU.Build.0 = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|x64.ActiveCfg = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|x64.Build.0 = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|x86.ActiveCfg = Release|Any CPU + {8772C831-55C2-44C2-8726-296448F5B578}.Release|x86.Build.0 = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|x64.ActiveCfg = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|x64.Build.0 = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|x86.ActiveCfg = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Debug|x86.Build.0 = Debug|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|Any CPU.Build.0 = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|x64.ActiveCfg = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|x64.Build.0 = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|x86.ActiveCfg = Release|Any CPU + {09BCF265-B30A-49E3-8F41-EA19970303EF}.Release|x86.Build.0 = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|x64.ActiveCfg = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|x64.Build.0 = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|x86.ActiveCfg = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Debug|x86.Build.0 = Debug|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|Any CPU.Build.0 = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|x64.ActiveCfg = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|x64.Build.0 = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|x86.ActiveCfg = Release|Any CPU + {060F0213-A29A-47F3-95FB-CA3ABD85874F}.Release|x86.Build.0 = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|x64.ActiveCfg = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|x64.Build.0 = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|x86.ActiveCfg = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Debug|x86.Build.0 = Debug|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|Any CPU.Build.0 = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|x64.ActiveCfg = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|x64.Build.0 = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|x86.ActiveCfg = Release|Any CPU + {427CF5EC-F0FA-42BE-9F17-3C79DA85EA00}.Release|x86.Build.0 = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|x64.ActiveCfg = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|x64.Build.0 = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|x86.ActiveCfg = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Debug|x86.Build.0 = Debug|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|Any CPU.Build.0 = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|x64.ActiveCfg = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|x64.Build.0 = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|x86.ActiveCfg = Release|Any CPU + {449C2F67-1FDA-45E8-BC9E-B2976BD0542B}.Release|x86.Build.0 = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|x64.ActiveCfg = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|x64.Build.0 = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|x86.ActiveCfg = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Debug|x86.Build.0 = Debug|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|Any CPU.Build.0 = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|x64.ActiveCfg = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|x64.Build.0 = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|x86.ActiveCfg = Release|Any CPU + {398E16EE-13B8-4867-A6E3-63FC1B6F681C}.Release|x86.Build.0 = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|x64.ActiveCfg = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|x64.Build.0 = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|x86.ActiveCfg = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Debug|x86.Build.0 = Debug|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|Any CPU.Build.0 = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|x64.ActiveCfg = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|x64.Build.0 = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|x86.ActiveCfg = Release|Any CPU + {A806376E-A982-41D4-918D-A699DC854F30}.Release|x86.Build.0 = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|x64.ActiveCfg = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|x64.Build.0 = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|x86.ActiveCfg = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Debug|x86.Build.0 = Debug|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|Any CPU.Build.0 = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|x64.ActiveCfg = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|x64.Build.0 = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|x86.ActiveCfg = Release|Any CPU + {0DA8211A-8C76-473C-B996-536EA692EE3B}.Release|x86.Build.0 = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|x64.ActiveCfg = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|x64.Build.0 = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|x86.ActiveCfg = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Debug|x86.Build.0 = Debug|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|Any CPU.Build.0 = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|x64.ActiveCfg = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|x64.Build.0 = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|x86.ActiveCfg = Release|Any CPU + {FB2C6170-1E3B-4B1A-B708-C055BBE597B7}.Release|x86.Build.0 = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|x64.ActiveCfg = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|x64.Build.0 = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|x86.ActiveCfg = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Debug|x86.Build.0 = Debug|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|Any CPU.Build.0 = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|x64.ActiveCfg = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|x64.Build.0 = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|x86.ActiveCfg = Release|Any CPU + {FBD6F749-96F9-4382-A374-00392285C941}.Release|x86.Build.0 = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|x64.ActiveCfg = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|x64.Build.0 = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|x86.ActiveCfg = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Debug|x86.Build.0 = Debug|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|Any CPU.Build.0 = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|x64.ActiveCfg = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|x64.Build.0 = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|x86.ActiveCfg = Release|Any CPU + {3C534DC8-0E67-4BAE-AC35-2CDA1DBD5181}.Release|x86.Build.0 = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|x64.ActiveCfg = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|x64.Build.0 = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|x86.ActiveCfg = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Debug|x86.Build.0 = Debug|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|Any CPU.Build.0 = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|x64.ActiveCfg = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|x64.Build.0 = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|x86.ActiveCfg = Release|Any CPU + {A4E186E3-1456-4ADC-AF9C-AF65F3756059}.Release|x86.Build.0 = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|Any CPU.Build.0 = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|x64.ActiveCfg = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|x64.Build.0 = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|x86.ActiveCfg = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Debug|x86.Build.0 = Debug|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|Any CPU.ActiveCfg = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|Any CPU.Build.0 = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|x64.ActiveCfg = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|x64.Build.0 = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|x86.ActiveCfg = Release|Any CPU + {804F58A6-4FC1-40C0-AB63-F9665F44E830}.Release|x86.Build.0 = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|x64.ActiveCfg = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|x64.Build.0 = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|x86.ActiveCfg = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Debug|x86.Build.0 = Debug|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|Any CPU.Build.0 = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|x64.ActiveCfg = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|x64.Build.0 = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|x86.ActiveCfg = Release|Any CPU + {DA9144B6-3D59-4B8B-A31A-7B1A7C2B2210}.Release|x86.Build.0 = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|x64.ActiveCfg = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|x64.Build.0 = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|x86.ActiveCfg = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Debug|x86.Build.0 = Debug|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|Any CPU.Build.0 = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|x64.ActiveCfg = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|x64.Build.0 = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|x86.ActiveCfg = Release|Any CPU + {F3364D40-253C-46B7-8DB6-1495A1034BAC}.Release|x86.Build.0 = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|x64.ActiveCfg = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|x64.Build.0 = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Debug|x86.Build.0 = Debug|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|Any CPU.Build.0 = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|x64.ActiveCfg = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|x64.Build.0 = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|x86.ActiveCfg = Release|Any CPU + {CD3D883D-CF2A-4A8B-A447-B1002559F342}.Release|x86.Build.0 = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|x64.ActiveCfg = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|x64.Build.0 = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Debug|x86.Build.0 = Debug|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|Any CPU.Build.0 = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|x64.ActiveCfg = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|x64.Build.0 = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|x86.ActiveCfg = Release|Any CPU + {D0D997EB-7DC9-4608-AA22-E6A258A18BEA}.Release|x86.Build.0 = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|x64.Build.0 = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Debug|x86.Build.0 = Debug|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|Any CPU.Build.0 = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|x64.ActiveCfg = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|x64.Build.0 = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|x86.ActiveCfg = Release|Any CPU + {983ACD96-1A92-4453-AC26-E2A6B8F068C6}.Release|x86.Build.0 = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|x64.ActiveCfg = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|x64.Build.0 = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|x86.ActiveCfg = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Debug|x86.Build.0 = Debug|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|Any CPU.Build.0 = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|x64.ActiveCfg = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|x64.Build.0 = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|x86.ActiveCfg = Release|Any CPU + {CCBC3164-30D9-4B67-AF4E-268CE977D8A4}.Release|x86.Build.0 = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|x64.ActiveCfg = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|x64.Build.0 = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|x86.ActiveCfg = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Debug|x86.Build.0 = Debug|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|Any CPU.Build.0 = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|x64.ActiveCfg = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|x64.Build.0 = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|x86.ActiveCfg = Release|Any CPU + {50C4047D-76A6-4BB6-9863-E5D053C8ED6D}.Release|x86.Build.0 = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|x64.Build.0 = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Debug|x86.Build.0 = Debug|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|Any CPU.Build.0 = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|x64.ActiveCfg = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|x64.Build.0 = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|x86.ActiveCfg = Release|Any CPU + {D45F8338-7E4D-4491-9543-95CE917E0A8A}.Release|x86.Build.0 = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|x64.Build.0 = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Debug|x86.Build.0 = Debug|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|Any CPU.Build.0 = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|x64.ActiveCfg = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|x64.Build.0 = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|x86.ActiveCfg = Release|Any CPU + {AC723FC0-0418-4E29-BF6A-E4B2E51C18B9}.Release|x86.Build.0 = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|x64.ActiveCfg = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|x64.Build.0 = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|x86.ActiveCfg = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Debug|x86.Build.0 = Debug|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|Any CPU.Build.0 = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|x64.ActiveCfg = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|x64.Build.0 = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|x86.ActiveCfg = Release|Any CPU + {98956978-200B-4E0F-9C71-12C0F827DE93}.Release|x86.Build.0 = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|x64.ActiveCfg = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|x64.Build.0 = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|x86.ActiveCfg = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Debug|x86.Build.0 = Debug|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|Any CPU.Build.0 = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|x64.ActiveCfg = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|x64.Build.0 = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|x86.ActiveCfg = Release|Any CPU + {4ACFF4CD-DBE1-40F5-A398-57377273C0B8}.Release|x86.Build.0 = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|x64.ActiveCfg = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|x64.Build.0 = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|x86.ActiveCfg = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Debug|x86.Build.0 = Debug|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|Any CPU.Build.0 = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|x64.ActiveCfg = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|x64.Build.0 = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|x86.ActiveCfg = Release|Any CPU + {2406E8A2-F1B7-41E2-8900-AEAA1AA1E4FD}.Release|x86.Build.0 = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|x64.ActiveCfg = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|x64.Build.0 = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|x86.ActiveCfg = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Debug|x86.Build.0 = Debug|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|Any CPU.Build.0 = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|x64.ActiveCfg = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|x64.Build.0 = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|x86.ActiveCfg = Release|Any CPU + {0FC588F8-5FE7-4586-A929-00366D5F89A7}.Release|x86.Build.0 = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|x64.ActiveCfg = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|x64.Build.0 = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|x86.ActiveCfg = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Debug|x86.Build.0 = Debug|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|Any CPU.Build.0 = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|x64.ActiveCfg = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|x64.Build.0 = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|x86.ActiveCfg = Release|Any CPU + {03B03F03-B80E-4897-889A-F7A7E90A1871}.Release|x86.Build.0 = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|x64.Build.0 = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Debug|x86.Build.0 = Debug|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|Any CPU.Build.0 = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|x64.ActiveCfg = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|x64.Build.0 = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|x86.ActiveCfg = Release|Any CPU + {9DDF38D2-6CB2-4045-88A1-2665003A3CE4}.Release|x86.Build.0 = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|x64.ActiveCfg = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|x64.Build.0 = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|x86.ActiveCfg = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Debug|x86.Build.0 = Debug|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|Any CPU.Build.0 = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|x64.ActiveCfg = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|x64.Build.0 = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|x86.ActiveCfg = Release|Any CPU + {1EDB1BEB-B182-4134-BA43-1D7A56FCEE43}.Release|x86.Build.0 = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|x64.ActiveCfg = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|x64.Build.0 = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|x86.ActiveCfg = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Debug|x86.Build.0 = Debug|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|Any CPU.Build.0 = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|x64.ActiveCfg = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|x64.Build.0 = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|x86.ActiveCfg = Release|Any CPU + {3A8AC7BC-7604-4999-B22D-5D649A5E782C}.Release|x86.Build.0 = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|x64.ActiveCfg = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|x64.Build.0 = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|x86.ActiveCfg = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Debug|x86.Build.0 = Debug|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|Any CPU.Build.0 = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|x64.ActiveCfg = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|x64.Build.0 = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|x86.ActiveCfg = Release|Any CPU + {16938AC1-0F36-4EF3-BC17-81994A9EF2FB}.Release|x86.Build.0 = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|x64.ActiveCfg = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|x64.Build.0 = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|x86.ActiveCfg = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Debug|x86.Build.0 = Debug|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|Any CPU.Build.0 = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|x64.ActiveCfg = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|x64.Build.0 = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|x86.ActiveCfg = Release|Any CPU + {388E14A0-961A-46FD-8181-FDD56D327BC5}.Release|x86.Build.0 = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|x64.Build.0 = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|x86.ActiveCfg = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Debug|x86.Build.0 = Debug|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|Any CPU.Build.0 = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|x64.ActiveCfg = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|x64.Build.0 = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|x86.ActiveCfg = Release|Any CPU + {ED18379F-1F70-4CE7-B36E-C281E1E2A6EC}.Release|x86.Build.0 = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|x64.ActiveCfg = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|x64.Build.0 = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|x86.ActiveCfg = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Debug|x86.Build.0 = Debug|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|Any CPU.Build.0 = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|x64.ActiveCfg = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|x64.Build.0 = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|x86.ActiveCfg = Release|Any CPU + {E7072E8F-E6E3-47AB-9730-34FCFD0531A0}.Release|x86.Build.0 = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|x64.ActiveCfg = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|x64.Build.0 = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|x86.ActiveCfg = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Debug|x86.Build.0 = Debug|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|Any CPU.Build.0 = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|x64.ActiveCfg = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|x64.Build.0 = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|x86.ActiveCfg = Release|Any CPU + {5EDC81FF-3AEC-4553-B34C-CDF82ACC3922}.Release|x86.Build.0 = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|Any CPU.Build.0 = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|x64.ActiveCfg = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|x64.Build.0 = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|x86.ActiveCfg = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Debug|x86.Build.0 = Debug|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|Any CPU.ActiveCfg = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|Any CPU.Build.0 = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|x64.ActiveCfg = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|x64.Build.0 = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|x86.ActiveCfg = Release|Any CPU + {05B4A363-E48D-4777-B835-51B667695526}.Release|x86.Build.0 = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|x64.ActiveCfg = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|x64.Build.0 = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|x86.ActiveCfg = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Debug|x86.Build.0 = Debug|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|Any CPU.Build.0 = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|x64.ActiveCfg = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|x64.Build.0 = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|x86.ActiveCfg = Release|Any CPU + {D0D127A7-E282-4591-9FAF-00C5CB3AAB50}.Release|x86.Build.0 = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|x64.ActiveCfg = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|x64.Build.0 = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|x86.ActiveCfg = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Debug|x86.Build.0 = Debug|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|Any CPU.Build.0 = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|x64.ActiveCfg = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|x64.Build.0 = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|x86.ActiveCfg = Release|Any CPU + {1043AC82-5F2B-4477-8228-B1A976F96227}.Release|x86.Build.0 = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|x64.ActiveCfg = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|x64.Build.0 = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|x86.ActiveCfg = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Debug|x86.Build.0 = Debug|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|Any CPU.Build.0 = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|x64.ActiveCfg = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|x64.Build.0 = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|x86.ActiveCfg = Release|Any CPU + {B3862D54-1AC0-4AEF-A51D-E3670C4DDCC5}.Release|x86.Build.0 = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|x64.ActiveCfg = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|x64.Build.0 = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|x86.ActiveCfg = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Debug|x86.Build.0 = Debug|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|Any CPU.Build.0 = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|x64.ActiveCfg = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|x64.Build.0 = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|x86.ActiveCfg = Release|Any CPU + {7BCE4E15-B995-41A0-9560-0F5287F165D9}.Release|x86.Build.0 = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|x64.ActiveCfg = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|x64.Build.0 = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|x86.ActiveCfg = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Debug|x86.Build.0 = Debug|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|Any CPU.Build.0 = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|x64.ActiveCfg = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|x64.Build.0 = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|x86.ActiveCfg = Release|Any CPU + {9E5B495B-A110-4459-BC80-D1D7D7D93363}.Release|x86.Build.0 = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|Any CPU.Build.0 = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|x64.ActiveCfg = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|x64.Build.0 = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|x86.ActiveCfg = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Debug|x86.Build.0 = Debug|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|Any CPU.ActiveCfg = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|Any CPU.Build.0 = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|x64.ActiveCfg = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|x64.Build.0 = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|x86.ActiveCfg = Release|Any CPU + {025588E6-BA1A-43E8-A49C-6DD83706D926}.Release|x86.Build.0 = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|x64.ActiveCfg = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|x64.Build.0 = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Debug|x86.Build.0 = Debug|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|Any CPU.Build.0 = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|x64.ActiveCfg = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|x64.Build.0 = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|x86.ActiveCfg = Release|Any CPU + {2C1B83A0-0E54-4E51-95A1-23DE478F7765}.Release|x86.Build.0 = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|x64.ActiveCfg = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|x64.Build.0 = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|x86.ActiveCfg = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Debug|x86.Build.0 = Debug|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|Any CPU.Build.0 = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|x64.ActiveCfg = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|x64.Build.0 = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|x86.ActiveCfg = Release|Any CPU + {2714D145-B0FE-4AFD-BB81-5C659E6BCB5A}.Release|x86.Build.0 = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|x64.ActiveCfg = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|x64.Build.0 = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|x86.ActiveCfg = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Debug|x86.Build.0 = Debug|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|Any CPU.Build.0 = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|x64.ActiveCfg = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|x64.Build.0 = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|x86.ActiveCfg = Release|Any CPU + {6FC0DECE-2B9D-49EB-A87E-8D48B09D04B5}.Release|x86.Build.0 = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|Any CPU.Build.0 = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|x64.ActiveCfg = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|x64.Build.0 = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|x86.ActiveCfg = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Debug|x86.Build.0 = Debug|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|Any CPU.ActiveCfg = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|Any CPU.Build.0 = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|x64.ActiveCfg = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|x64.Build.0 = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|x86.ActiveCfg = Release|Any CPU + {322B4729-12ED-43B7-AA02-D05C0A251386}.Release|x86.Build.0 = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|x64.ActiveCfg = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|x64.Build.0 = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Debug|x86.Build.0 = Debug|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|Any CPU.Build.0 = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|x64.ActiveCfg = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|x64.Build.0 = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|x86.ActiveCfg = Release|Any CPU + {CD3EFAD0-81B3-42EC-B9E6-488B30177BD4}.Release|x86.Build.0 = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|x64.ActiveCfg = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|x64.Build.0 = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|x86.ActiveCfg = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Debug|x86.Build.0 = Debug|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|Any CPU.Build.0 = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|x64.ActiveCfg = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|x64.Build.0 = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|x86.ActiveCfg = Release|Any CPU + {5FDCA152-2765-43FF-94F3-5D080F1C0C2A}.Release|x86.Build.0 = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|x64.ActiveCfg = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|x64.Build.0 = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|x86.ActiveCfg = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Debug|x86.Build.0 = Debug|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|Any CPU.Build.0 = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|x64.ActiveCfg = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|x64.Build.0 = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|x86.ActiveCfg = Release|Any CPU + {E5360EF0-7734-4DEE-8401-622A2E258615}.Release|x86.Build.0 = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|x64.ActiveCfg = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|x64.Build.0 = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|x86.ActiveCfg = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Debug|x86.Build.0 = Debug|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|Any CPU.Build.0 = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|x64.ActiveCfg = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|x64.Build.0 = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|x86.ActiveCfg = Release|Any CPU + {B4BA9BCD-54A3-4FBD-83D8-C60EB8B6EDE7}.Release|x86.Build.0 = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|x64.ActiveCfg = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|x64.Build.0 = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|x86.ActiveCfg = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Debug|x86.Build.0 = Debug|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|Any CPU.Build.0 = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|x64.ActiveCfg = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|x64.Build.0 = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|x86.ActiveCfg = Release|Any CPU + {72BA9854-6457-43FF-B5B8-A5C0D06652F5}.Release|x86.Build.0 = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|x64.ActiveCfg = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|x64.Build.0 = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|x86.ActiveCfg = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Debug|x86.Build.0 = Debug|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|Any CPU.Build.0 = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|x64.ActiveCfg = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|x64.Build.0 = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|x86.ActiveCfg = Release|Any CPU + {2896210E-63E6-4243-BE5D-4644B1454A22}.Release|x86.Build.0 = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|x64.ActiveCfg = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|x64.Build.0 = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Debug|x86.Build.0 = Debug|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|Any CPU.Build.0 = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|x64.ActiveCfg = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|x64.Build.0 = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|x86.ActiveCfg = Release|Any CPU + {A9075E75-DCBE-4A77-848D-CC25269475BA}.Release|x86.Build.0 = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|x64.ActiveCfg = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|x64.Build.0 = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|x86.ActiveCfg = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Debug|x86.Build.0 = Debug|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|Any CPU.Build.0 = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|x64.ActiveCfg = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|x64.Build.0 = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|x86.ActiveCfg = Release|Any CPU + {D8CB99B8-932C-466C-B165-DDA3891EC937}.Release|x86.Build.0 = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|x64.ActiveCfg = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|x64.Build.0 = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|x86.ActiveCfg = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Debug|x86.Build.0 = Debug|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|Any CPU.Build.0 = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|x64.ActiveCfg = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|x64.Build.0 = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|x86.ActiveCfg = Release|Any CPU + {40433B72-9C8E-427C-9152-6BA6C40D0AC1}.Release|x86.Build.0 = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|x64.ActiveCfg = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|x64.Build.0 = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|x86.ActiveCfg = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Debug|x86.Build.0 = Debug|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|Any CPU.Build.0 = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|x64.ActiveCfg = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|x64.Build.0 = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|x86.ActiveCfg = Release|Any CPU + {7AD90D96-7867-4B6D-ABB7-AAB70DF9FB26}.Release|x86.Build.0 = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|x64.Build.0 = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Debug|x86.Build.0 = Debug|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|Any CPU.Build.0 = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|x64.ActiveCfg = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|x64.Build.0 = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|x86.ActiveCfg = Release|Any CPU + {A1D4D33E-94E3-4CA5-8DE3-7044E72D61A9}.Release|x86.Build.0 = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|x64.ActiveCfg = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|x64.Build.0 = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|x86.ActiveCfg = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Debug|x86.Build.0 = Debug|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|Any CPU.Build.0 = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|x64.ActiveCfg = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|x64.Build.0 = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|x86.ActiveCfg = Release|Any CPU + {0CFE2781-B849-4BEE-A282-B00FFF8667E5}.Release|x86.Build.0 = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|x64.ActiveCfg = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|x64.Build.0 = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|x86.ActiveCfg = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Debug|x86.Build.0 = Debug|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|Any CPU.Build.0 = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|x64.ActiveCfg = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|x64.Build.0 = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|x86.ActiveCfg = Release|Any CPU + {4A1FAD7D-6383-4F4F-A50D-7A337969566B}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/examples/contrib/SimpleProgramFSharp.fsproj b/examples/contrib/SimpleProgramFSharp.fsproj index 3a2f8af19f..40f1fccf48 100644 --- a/examples/contrib/SimpleProgramFSharp.fsproj +++ b/examples/contrib/SimpleProgramFSharp.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/a_puzzle.csproj b/examples/contrib/a_puzzle.csproj index bd0bab7cba..ea8bb303c1 100644 --- a/examples/contrib/a_puzzle.csproj +++ b/examples/contrib/a_puzzle.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/a_round_of_golf.csproj b/examples/contrib/a_round_of_golf.csproj index 1930787940..7d48faa37e 100644 --- a/examples/contrib/a_round_of_golf.csproj +++ b/examples/contrib/a_round_of_golf.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/all_interval.csproj b/examples/contrib/all_interval.csproj index 2afaff64fe..97812fcf60 100644 --- a/examples/contrib/all_interval.csproj +++ b/examples/contrib/all_interval.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/alldifferent_except_0.csproj b/examples/contrib/alldifferent_except_0.csproj index 92a4725e96..bce1b945ad 100644 --- a/examples/contrib/alldifferent_except_0.csproj +++ b/examples/contrib/alldifferent_except_0.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/assignment.csproj b/examples/contrib/assignment.csproj index 8acd9c96f8..aa4fb9cdde 100644 --- a/examples/contrib/assignment.csproj +++ b/examples/contrib/assignment.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/broken_weights.csproj b/examples/contrib/broken_weights.csproj index 904a4ace62..3677558a55 100644 --- a/examples/contrib/broken_weights.csproj +++ b/examples/contrib/broken_weights.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/bus_schedule.csproj b/examples/contrib/bus_schedule.csproj index 56b5438bab..98250afd01 100644 --- a/examples/contrib/bus_schedule.csproj +++ b/examples/contrib/bus_schedule.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/circuit.csproj b/examples/contrib/circuit.csproj index 2bdb929919..284fa482ff 100644 --- a/examples/contrib/circuit.csproj +++ b/examples/contrib/circuit.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/circuit2.csproj b/examples/contrib/circuit2.csproj index 5f16c4d620..b9f3e9258b 100644 --- a/examples/contrib/circuit2.csproj +++ b/examples/contrib/circuit2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/coins3.csproj b/examples/contrib/coins3.csproj index 6703f3b919..52f18c5c19 100644 --- a/examples/contrib/coins3.csproj +++ b/examples/contrib/coins3.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/coins_grid.csproj b/examples/contrib/coins_grid.csproj index 60e2346e8a..2c4ac768c4 100644 --- a/examples/contrib/coins_grid.csproj +++ b/examples/contrib/coins_grid.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/combinatorial_auction2.csproj b/examples/contrib/combinatorial_auction2.csproj index 4096d841a9..697e447e27 100644 --- a/examples/contrib/combinatorial_auction2.csproj +++ b/examples/contrib/combinatorial_auction2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/contiguity_regular.csproj b/examples/contrib/contiguity_regular.csproj index e3b363c87a..0e5c57025e 100644 --- a/examples/contrib/contiguity_regular.csproj +++ b/examples/contrib/contiguity_regular.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/contiguity_transition.csproj b/examples/contrib/contiguity_transition.csproj index cb4cff7b3c..a564def924 100644 --- a/examples/contrib/contiguity_transition.csproj +++ b/examples/contrib/contiguity_transition.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/costas_array.csproj b/examples/contrib/costas_array.csproj index 34cc5ec729..6a0bef9286 100644 --- a/examples/contrib/costas_array.csproj +++ b/examples/contrib/costas_array.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/covering_opl.csproj b/examples/contrib/covering_opl.csproj index 7da34bf6cf..22a715fbec 100644 --- a/examples/contrib/covering_opl.csproj +++ b/examples/contrib/covering_opl.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/crew.csproj b/examples/contrib/crew.csproj index b49faf8ba4..a3dbca6226 100644 --- a/examples/contrib/crew.csproj +++ b/examples/contrib/crew.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/crossword.csproj b/examples/contrib/crossword.csproj index cd163d3b3a..cdc7f5a8ef 100644 --- a/examples/contrib/crossword.csproj +++ b/examples/contrib/crossword.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/crypta.csproj b/examples/contrib/crypta.csproj index ddcfdf1eb0..7e2d7c8156 100644 --- a/examples/contrib/crypta.csproj +++ b/examples/contrib/crypta.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/crypto.csproj b/examples/contrib/crypto.csproj index ad58ad467b..5d862df5b9 100644 --- a/examples/contrib/crypto.csproj +++ b/examples/contrib/crypto.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/csdiet.csproj b/examples/contrib/csdiet.csproj index 80e9837e04..313c412ada 100644 --- a/examples/contrib/csdiet.csproj +++ b/examples/contrib/csdiet.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/curious_set_of_integers.csproj b/examples/contrib/curious_set_of_integers.csproj index 670caba148..25b74ec510 100644 --- a/examples/contrib/curious_set_of_integers.csproj +++ b/examples/contrib/curious_set_of_integers.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/debruijn.csproj b/examples/contrib/debruijn.csproj index 10a39cae92..94164d2821 100644 --- a/examples/contrib/debruijn.csproj +++ b/examples/contrib/debruijn.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/discrete_tomography.csproj b/examples/contrib/discrete_tomography.csproj index 4d6b820fbe..73900b787d 100644 --- a/examples/contrib/discrete_tomography.csproj +++ b/examples/contrib/discrete_tomography.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/divisible_by_9_through_1.csproj b/examples/contrib/divisible_by_9_through_1.csproj index ee09a5a86a..0f9b763295 100644 --- a/examples/contrib/divisible_by_9_through_1.csproj +++ b/examples/contrib/divisible_by_9_through_1.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/dudeney.csproj b/examples/contrib/dudeney.csproj index 7c6c515b81..d4f2be9560 100644 --- a/examples/contrib/dudeney.csproj +++ b/examples/contrib/dudeney.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/einav_puzzle2.csproj b/examples/contrib/einav_puzzle2.csproj index 5df3f416c1..3a77170fe0 100644 --- a/examples/contrib/einav_puzzle2.csproj +++ b/examples/contrib/einav_puzzle2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/eq10.csproj b/examples/contrib/eq10.csproj index 368740c515..959536711a 100644 --- a/examples/contrib/eq10.csproj +++ b/examples/contrib/eq10.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/eq20.csproj b/examples/contrib/eq20.csproj index 70b7b5dfb2..ca5d4e6266 100644 --- a/examples/contrib/eq20.csproj +++ b/examples/contrib/eq20.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fill_a_pix.csproj b/examples/contrib/fill_a_pix.csproj index f77c9a8fc8..524a34b44c 100644 --- a/examples/contrib/fill_a_pix.csproj +++ b/examples/contrib/fill_a_pix.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsProgram.fsproj b/examples/contrib/fsProgram.fsproj index 4ffeccab9b..9306a1cc03 100644 --- a/examples/contrib/fsProgram.fsproj +++ b/examples/contrib/fsProgram.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsdiet.fsproj b/examples/contrib/fsdiet.fsproj index 595cfe9f14..df4b58e183 100644 --- a/examples/contrib/fsdiet.fsproj +++ b/examples/contrib/fsdiet.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsequality-inequality.fsproj b/examples/contrib/fsequality-inequality.fsproj index 0f35961b3b..5a6336d704 100644 --- a/examples/contrib/fsequality-inequality.fsproj +++ b/examples/contrib/fsequality-inequality.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsequality.fsproj b/examples/contrib/fsequality.fsproj index 3b1dc58606..9302521733 100644 --- a/examples/contrib/fsequality.fsproj +++ b/examples/contrib/fsequality.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsinteger-linear-program.fsproj b/examples/contrib/fsinteger-linear-program.fsproj index 49ecdbfd08..8bab323498 100644 --- a/examples/contrib/fsinteger-linear-program.fsproj +++ b/examples/contrib/fsinteger-linear-program.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsintegerprogramming.fsproj b/examples/contrib/fsintegerprogramming.fsproj index 4e27ae0d0b..6c86944d31 100644 --- a/examples/contrib/fsintegerprogramming.fsproj +++ b/examples/contrib/fsintegerprogramming.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsknapsack.fsproj b/examples/contrib/fsknapsack.fsproj index 9963583812..6a91e1f0bc 100644 --- a/examples/contrib/fsknapsack.fsproj +++ b/examples/contrib/fsknapsack.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fslinearprogramming.fsproj b/examples/contrib/fslinearprogramming.fsproj index 4c1b8b8aa4..87bdd2d9cd 100644 --- a/examples/contrib/fslinearprogramming.fsproj +++ b/examples/contrib/fslinearprogramming.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsnetwork-max-flow-lpSolve.fsproj b/examples/contrib/fsnetwork-max-flow-lpSolve.fsproj index 570b5dba7b..4081bf81a2 100644 --- a/examples/contrib/fsnetwork-max-flow-lpSolve.fsproj +++ b/examples/contrib/fsnetwork-max-flow-lpSolve.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsnetwork-max-flow.fsproj b/examples/contrib/fsnetwork-max-flow.fsproj index 94a9202581..73f05ca10f 100644 --- a/examples/contrib/fsnetwork-max-flow.fsproj +++ b/examples/contrib/fsnetwork-max-flow.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsnetwork-min-cost-flow.fsproj b/examples/contrib/fsnetwork-min-cost-flow.fsproj index 491d5950cc..af62436958 100644 --- a/examples/contrib/fsnetwork-min-cost-flow.fsproj +++ b/examples/contrib/fsnetwork-min-cost-flow.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsrabbit-pheasant.fsproj b/examples/contrib/fsrabbit-pheasant.fsproj index 5bfb5125bb..a9a03eb0f2 100644 --- a/examples/contrib/fsrabbit-pheasant.fsproj +++ b/examples/contrib/fsrabbit-pheasant.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsvolsay.fsproj b/examples/contrib/fsvolsay.fsproj index c7b2a768d6..89653c6dc0 100644 --- a/examples/contrib/fsvolsay.fsproj +++ b/examples/contrib/fsvolsay.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsvolsay3-lpSolve.fsproj b/examples/contrib/fsvolsay3-lpSolve.fsproj index 0aff75e1d7..ed026bb7aa 100644 --- a/examples/contrib/fsvolsay3-lpSolve.fsproj +++ b/examples/contrib/fsvolsay3-lpSolve.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/fsvolsay3.fsproj b/examples/contrib/fsvolsay3.fsproj index 2d0a3d8800..a9e8ba8769 100644 --- a/examples/contrib/fsvolsay3.fsproj +++ b/examples/contrib/fsvolsay3.fsproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/furniture_moving.csproj b/examples/contrib/furniture_moving.csproj index a28d0ca5af..b553709565 100644 --- a/examples/contrib/furniture_moving.csproj +++ b/examples/contrib/furniture_moving.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/furniture_moving_intervals.csproj b/examples/contrib/furniture_moving_intervals.csproj index 6a45e909fa..b999de1e9d 100644 --- a/examples/contrib/furniture_moving_intervals.csproj +++ b/examples/contrib/furniture_moving_intervals.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/futoshiki.csproj b/examples/contrib/futoshiki.csproj index 36d6da8c4f..b2887ea3a1 100644 --- a/examples/contrib/futoshiki.csproj +++ b/examples/contrib/futoshiki.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/golomb_ruler.csproj b/examples/contrib/golomb_ruler.csproj index 5dfea65502..5bd2c4e225 100644 --- a/examples/contrib/golomb_ruler.csproj +++ b/examples/contrib/golomb_ruler.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/grocery.csproj b/examples/contrib/grocery.csproj index 4003909571..eab559e3b9 100644 --- a/examples/contrib/grocery.csproj +++ b/examples/contrib/grocery.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/hidato_table.csproj b/examples/contrib/hidato_table.csproj index 6590e2c7bb..04e37f238d 100644 --- a/examples/contrib/hidato_table.csproj +++ b/examples/contrib/hidato_table.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/just_forgotten.csproj b/examples/contrib/just_forgotten.csproj index 7dbfe74e20..27ba2c3d47 100644 --- a/examples/contrib/just_forgotten.csproj +++ b/examples/contrib/just_forgotten.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/kakuro.csproj b/examples/contrib/kakuro.csproj index d1d491bf23..23673b6f0d 100644 --- a/examples/contrib/kakuro.csproj +++ b/examples/contrib/kakuro.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/kenken2.csproj b/examples/contrib/kenken2.csproj index 065bb191f9..ee1157e8a2 100644 --- a/examples/contrib/kenken2.csproj +++ b/examples/contrib/kenken2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/killer_sudoku.csproj b/examples/contrib/killer_sudoku.csproj index ad89c8c1ac..c5414407ff 100644 --- a/examples/contrib/killer_sudoku.csproj +++ b/examples/contrib/killer_sudoku.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/labeled_dice.csproj b/examples/contrib/labeled_dice.csproj index a9643fc2ac..21a7f50693 100644 --- a/examples/contrib/labeled_dice.csproj +++ b/examples/contrib/labeled_dice.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/langford.csproj b/examples/contrib/langford.csproj index 4761b5b60b..a5df517c90 100644 --- a/examples/contrib/langford.csproj +++ b/examples/contrib/langford.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/least_diff.csproj b/examples/contrib/least_diff.csproj index c5687084c3..8a39429e30 100644 --- a/examples/contrib/least_diff.csproj +++ b/examples/contrib/least_diff.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/lectures.csproj b/examples/contrib/lectures.csproj index babb451066..223b1a2aab 100644 --- a/examples/contrib/lectures.csproj +++ b/examples/contrib/lectures.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/magic_sequence.csproj b/examples/contrib/magic_sequence.csproj index 7ce083c830..2f9b13f147 100644 --- a/examples/contrib/magic_sequence.csproj +++ b/examples/contrib/magic_sequence.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/magic_square.csproj b/examples/contrib/magic_square.csproj index 1c75e41a23..048d68d30f 100644 --- a/examples/contrib/magic_square.csproj +++ b/examples/contrib/magic_square.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/magic_square_and_cards.csproj b/examples/contrib/magic_square_and_cards.csproj index 19e4d01e66..a481168929 100644 --- a/examples/contrib/magic_square_and_cards.csproj +++ b/examples/contrib/magic_square_and_cards.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/map.csproj b/examples/contrib/map.csproj index feff29b8d0..eee68dc062 100644 --- a/examples/contrib/map.csproj +++ b/examples/contrib/map.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/map2.csproj b/examples/contrib/map2.csproj index 0d2d14d2de..d73af6c06a 100644 --- a/examples/contrib/map2.csproj +++ b/examples/contrib/map2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/marathon2.csproj b/examples/contrib/marathon2.csproj index 802e766d4b..fbe0f4b667 100644 --- a/examples/contrib/marathon2.csproj +++ b/examples/contrib/marathon2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/max_flow_taha.csproj b/examples/contrib/max_flow_taha.csproj index b342370e48..c08f623e40 100644 --- a/examples/contrib/max_flow_taha.csproj +++ b/examples/contrib/max_flow_taha.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/max_flow_winston1.csproj b/examples/contrib/max_flow_winston1.csproj index 56500eb5a7..446eb4cdd8 100644 --- a/examples/contrib/max_flow_winston1.csproj +++ b/examples/contrib/max_flow_winston1.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/minesweeper.csproj b/examples/contrib/minesweeper.csproj index db070b9c69..79ca9548d0 100644 --- a/examples/contrib/minesweeper.csproj +++ b/examples/contrib/minesweeper.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/mr_smith.csproj b/examples/contrib/mr_smith.csproj index 381ec33efc..b0a40d1281 100644 --- a/examples/contrib/mr_smith.csproj +++ b/examples/contrib/mr_smith.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/nontransitive_dice.csproj b/examples/contrib/nontransitive_dice.csproj index 6c1787552f..450ccc8f95 100644 --- a/examples/contrib/nontransitive_dice.csproj +++ b/examples/contrib/nontransitive_dice.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/nqueens.csproj b/examples/contrib/nqueens.csproj index b545d44acd..9ac83c66d5 100644 --- a/examples/contrib/nqueens.csproj +++ b/examples/contrib/nqueens.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/nurse_rostering_regular.csproj b/examples/contrib/nurse_rostering_regular.csproj index ff4c74db7c..655c1fd8a7 100644 --- a/examples/contrib/nurse_rostering_regular.csproj +++ b/examples/contrib/nurse_rostering_regular.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/nurse_rostering_transition.csproj b/examples/contrib/nurse_rostering_transition.csproj index 88ca37bb83..d927481253 100644 --- a/examples/contrib/nurse_rostering_transition.csproj +++ b/examples/contrib/nurse_rostering_transition.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/olympic.csproj b/examples/contrib/olympic.csproj index f8280c67f2..b244766ad3 100644 --- a/examples/contrib/olympic.csproj +++ b/examples/contrib/olympic.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/organize_day.csproj b/examples/contrib/organize_day.csproj index ad7a27cb73..3b7dc82e59 100644 --- a/examples/contrib/organize_day.csproj +++ b/examples/contrib/organize_day.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/organize_day_intervals.csproj b/examples/contrib/organize_day_intervals.csproj index d61051d67e..c94889b5b9 100644 --- a/examples/contrib/organize_day_intervals.csproj +++ b/examples/contrib/organize_day_intervals.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/p_median.csproj b/examples/contrib/p_median.csproj index 33cafe3a5a..4d563afc51 100644 --- a/examples/contrib/p_median.csproj +++ b/examples/contrib/p_median.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/pandigital_numbers.csproj b/examples/contrib/pandigital_numbers.csproj index 2b565ad674..ccd73438d3 100644 --- a/examples/contrib/pandigital_numbers.csproj +++ b/examples/contrib/pandigital_numbers.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/partition.csproj b/examples/contrib/partition.csproj index 3578b6f9ed..918c44827c 100644 --- a/examples/contrib/partition.csproj +++ b/examples/contrib/partition.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/perfect_square_sequence.csproj b/examples/contrib/perfect_square_sequence.csproj index afa670105d..cf9a730c8c 100644 --- a/examples/contrib/perfect_square_sequence.csproj +++ b/examples/contrib/perfect_square_sequence.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/photo_problem.csproj b/examples/contrib/photo_problem.csproj index 7d02b57d64..5794091da7 100644 --- a/examples/contrib/photo_problem.csproj +++ b/examples/contrib/photo_problem.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/place_number_puzzle.csproj b/examples/contrib/place_number_puzzle.csproj index 863a766450..4b541fd7fc 100644 --- a/examples/contrib/place_number_puzzle.csproj +++ b/examples/contrib/place_number_puzzle.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/post_office_problem2.csproj b/examples/contrib/post_office_problem2.csproj index 83b44cfecd..6f8ea5ee08 100644 --- a/examples/contrib/post_office_problem2.csproj +++ b/examples/contrib/post_office_problem2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/quasigroup_completion.csproj b/examples/contrib/quasigroup_completion.csproj index 4366b679b8..ed6b5eec40 100644 --- a/examples/contrib/quasigroup_completion.csproj +++ b/examples/contrib/quasigroup_completion.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/regex.csproj b/examples/contrib/regex.csproj index b4003edc91..96f32369ba 100644 --- a/examples/contrib/regex.csproj +++ b/examples/contrib/regex.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/rogo2.csproj b/examples/contrib/rogo2.csproj index e6aca6358d..6ea2523a1e 100644 --- a/examples/contrib/rogo2.csproj +++ b/examples/contrib/rogo2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/scheduling_speakers.csproj b/examples/contrib/scheduling_speakers.csproj index 1c8f0181a8..b6015c72cf 100644 --- a/examples/contrib/scheduling_speakers.csproj +++ b/examples/contrib/scheduling_speakers.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/secret_santa.csproj b/examples/contrib/secret_santa.csproj index 4a40862a39..db729bc6c1 100644 --- a/examples/contrib/secret_santa.csproj +++ b/examples/contrib/secret_santa.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/secret_santa2.csproj b/examples/contrib/secret_santa2.csproj index a27f3fa912..f6ecf77e53 100644 --- a/examples/contrib/secret_santa2.csproj +++ b/examples/contrib/secret_santa2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/send_more_money.csproj b/examples/contrib/send_more_money.csproj index 52de298628..304e7c5ac1 100644 --- a/examples/contrib/send_more_money.csproj +++ b/examples/contrib/send_more_money.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/send_more_money2.csproj b/examples/contrib/send_more_money2.csproj index 092290c0a5..a2e535ab83 100644 --- a/examples/contrib/send_more_money2.csproj +++ b/examples/contrib/send_more_money2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/send_most_money.csproj b/examples/contrib/send_most_money.csproj index 780b9bf54b..f6af216c90 100644 --- a/examples/contrib/send_most_money.csproj +++ b/examples/contrib/send_most_money.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/seseman.csproj b/examples/contrib/seseman.csproj index 6280f042e6..4b734a7742 100644 --- a/examples/contrib/seseman.csproj +++ b/examples/contrib/seseman.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering.csproj b/examples/contrib/set_covering.csproj index 588caea282..93f6486bf6 100644 --- a/examples/contrib/set_covering.csproj +++ b/examples/contrib/set_covering.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering2.csproj b/examples/contrib/set_covering2.csproj index a1bb7dbee5..0a3d57f40f 100644 --- a/examples/contrib/set_covering2.csproj +++ b/examples/contrib/set_covering2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering3.csproj b/examples/contrib/set_covering3.csproj index cd8ac8d52f..c85fbdbb1a 100644 --- a/examples/contrib/set_covering3.csproj +++ b/examples/contrib/set_covering3.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering4.csproj b/examples/contrib/set_covering4.csproj index f5c8feb7a3..f995631cda 100644 --- a/examples/contrib/set_covering4.csproj +++ b/examples/contrib/set_covering4.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering_deployment.csproj b/examples/contrib/set_covering_deployment.csproj index 4e0c1c25c0..093e30be14 100644 --- a/examples/contrib/set_covering_deployment.csproj +++ b/examples/contrib/set_covering_deployment.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_covering_skiena.csproj b/examples/contrib/set_covering_skiena.csproj index 4d4f3c9d54..4e9d2e314f 100644 --- a/examples/contrib/set_covering_skiena.csproj +++ b/examples/contrib/set_covering_skiena.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/set_partition.csproj b/examples/contrib/set_partition.csproj index 716f6d7ea1..a7a3c3bc60 100644 --- a/examples/contrib/set_partition.csproj +++ b/examples/contrib/set_partition.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/sicherman_dice.csproj b/examples/contrib/sicherman_dice.csproj index 2cd80256b6..f155975439 100644 --- a/examples/contrib/sicherman_dice.csproj +++ b/examples/contrib/sicherman_dice.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/ski_assignment.csproj b/examples/contrib/ski_assignment.csproj index 2a6dc96f47..1c66b0d783 100644 --- a/examples/contrib/ski_assignment.csproj +++ b/examples/contrib/ski_assignment.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/stable_marriage.csproj b/examples/contrib/stable_marriage.csproj index a9338d8ef7..f984bcfe65 100644 --- a/examples/contrib/stable_marriage.csproj +++ b/examples/contrib/stable_marriage.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/strimko2.csproj b/examples/contrib/strimko2.csproj index 58f17c7e5e..1a6830504e 100644 --- a/examples/contrib/strimko2.csproj +++ b/examples/contrib/strimko2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/subset_sum.csproj b/examples/contrib/subset_sum.csproj index 8b6b09319e..27d35a0dba 100644 --- a/examples/contrib/subset_sum.csproj +++ b/examples/contrib/subset_sum.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/sudoku.csproj b/examples/contrib/sudoku.csproj index c126516b51..c48f1dc4e9 100644 --- a/examples/contrib/sudoku.csproj +++ b/examples/contrib/sudoku.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/survo_puzzle.csproj b/examples/contrib/survo_puzzle.csproj index 092b2a8d29..1847de1823 100644 --- a/examples/contrib/survo_puzzle.csproj +++ b/examples/contrib/survo_puzzle.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/to_num.csproj b/examples/contrib/to_num.csproj index cb4f0ec111..4fc042d582 100644 --- a/examples/contrib/to_num.csproj +++ b/examples/contrib/to_num.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/traffic_lights.csproj b/examples/contrib/traffic_lights.csproj index c8bc78f418..227cd7bc49 100644 --- a/examples/contrib/traffic_lights.csproj +++ b/examples/contrib/traffic_lights.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/volsay.csproj b/examples/contrib/volsay.csproj index 36da58e5e7..0f78cc2093 100644 --- a/examples/contrib/volsay.csproj +++ b/examples/contrib/volsay.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/volsay2.csproj b/examples/contrib/volsay2.csproj index 905e4a2b33..d8c6c94f0a 100644 --- a/examples/contrib/volsay2.csproj +++ b/examples/contrib/volsay2.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/volsay3.csproj b/examples/contrib/volsay3.csproj index 8b977e34c9..3816519b26 100644 --- a/examples/contrib/volsay3.csproj +++ b/examples/contrib/volsay3.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/wedding_optimal_chart.csproj b/examples/contrib/wedding_optimal_chart.csproj index cb0d205cf3..4e861cd950 100644 --- a/examples/contrib/wedding_optimal_chart.csproj +++ b/examples/contrib/wedding_optimal_chart.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/who_killed_agatha.csproj b/examples/contrib/who_killed_agatha.csproj index 9c2c6be9a1..01fe421e66 100644 --- a/examples/contrib/who_killed_agatha.csproj +++ b/examples/contrib/who_killed_agatha.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/word_square.csproj b/examples/contrib/word_square.csproj index 7e1967d646..5fcab300bc 100644 --- a/examples/contrib/word_square.csproj +++ b/examples/contrib/word_square.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/xkcd.csproj b/examples/contrib/xkcd.csproj index 933a18776c..5e6d429883 100644 --- a/examples/contrib/xkcd.csproj +++ b/examples/contrib/xkcd.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/young_tableaux.csproj b/examples/contrib/young_tableaux.csproj index 2331629c6f..0d2e3cf73f 100644 --- a/examples/contrib/young_tableaux.csproj +++ b/examples/contrib/young_tableaux.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/contrib/zebra.csproj b/examples/contrib/zebra.csproj index 10a9fb1be9..d4b851f341 100644 --- a/examples/contrib/zebra.csproj +++ b/examples/contrib/zebra.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/GateSchedulingSat.csproj b/examples/dotnet/GateSchedulingSat.csproj index 9756add99d..ea696f18d5 100644 --- a/examples/dotnet/GateSchedulingSat.csproj +++ b/examples/dotnet/GateSchedulingSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/Google.OrTools.Examples.sln b/examples/dotnet/Google.OrTools.Examples.sln index 34946ae97c..800043baf6 100644 --- a/examples/dotnet/Google.OrTools.Examples.sln +++ b/examples/dotnet/Google.OrTools.Examples.sln @@ -1,272 +1,272 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cscvrptw", "cscvrptw.csproj", "{4A059795-058D-42BF-A6B8-922A0F9A39C3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csflow", "csflow.csproj", "{63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csfz", "csfz.csproj", "{D3BD3816-AF4F-44DC-A75D-56492550E53B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csintegerprogramming", "csintegerprogramming.csproj", "{B3A1ADA7-1DE7-4065-97B9-26E85360DE04}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csknapsack", "csknapsack.csproj", "{3AD280FB-35EA-4CF4-9452-F90BEA18649E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cslinearprogramming", "cslinearprogramming.csproj", "{FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csls_api", "csls_api.csproj", "{9E03C995-2794-4C82-B164-2DB90A077262}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csrabbitspheasants", "csrabbitspheasants.csproj", "{D776D661-577D-46FB-A09F-97597A80CC4D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cstsp", "cstsp.csproj", "{2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GateSchedulingSat", "GateSchedulingSat.csproj", "{87B880DA-44AF-4DB1-8E97-A7977A99B679}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopFt06Sat", "JobshopFt06Sat.csproj", "{15524DD4-2EA3-468C-A5BF-F5AD8440278E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopSat", "JobshopSat.csproj", "{7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NursesSat", "NursesSat.csproj", "{9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShiftSchedulingSat", "ShiftSchedulingSat.csproj", "{D309FF10-3D42-446A-8402-62A941C0783A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeakerSchedulingSat", "SpeakerSchedulingSat.csproj", "{3175CB54-187D-45E4-A500-668BE8EA601F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskSchedulingSat", "TaskSchedulingSat.csproj", "{BD62083D-52CF-4128-AED8-DD996E364893}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tsp", "tsp.csproj", "{8D696773-89A1-4790-93DE-D57C45E61515}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vrp", "vrp.csproj", "{921FA31F-F200-4144-8925-7F93F5BC7062}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x64.ActiveCfg = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x64.Build.0 = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x86.ActiveCfg = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x86.Build.0 = Debug|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|Any CPU.Build.0 = Release|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x64.ActiveCfg = Release|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x64.Build.0 = Release|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x86.ActiveCfg = Release|Any CPU - {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x86.Build.0 = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x64.ActiveCfg = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x64.Build.0 = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x86.ActiveCfg = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x86.Build.0 = Debug|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|Any CPU.Build.0 = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x64.ActiveCfg = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x64.Build.0 = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x86.ActiveCfg = Release|Any CPU - {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x86.Build.0 = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x64.ActiveCfg = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x64.Build.0 = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x86.ActiveCfg = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x86.Build.0 = Debug|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|Any CPU.Build.0 = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x64.ActiveCfg = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x64.Build.0 = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x86.ActiveCfg = Release|Any CPU - {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x86.Build.0 = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x64.ActiveCfg = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x64.Build.0 = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x86.ActiveCfg = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x86.Build.0 = Debug|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|Any CPU.Build.0 = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x64.ActiveCfg = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x64.Build.0 = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x86.ActiveCfg = Release|Any CPU - {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x86.Build.0 = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x64.ActiveCfg = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x64.Build.0 = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x86.ActiveCfg = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x86.Build.0 = Debug|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|Any CPU.Build.0 = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x64.ActiveCfg = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x64.Build.0 = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x86.ActiveCfg = Release|Any CPU - {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x86.Build.0 = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x64.ActiveCfg = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x64.Build.0 = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x86.ActiveCfg = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x86.Build.0 = Debug|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|Any CPU.Build.0 = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x64.ActiveCfg = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x64.Build.0 = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x86.ActiveCfg = Release|Any CPU - {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x86.Build.0 = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x64.ActiveCfg = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x64.Build.0 = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x86.ActiveCfg = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x86.Build.0 = Debug|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|Any CPU.Build.0 = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x64.ActiveCfg = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x64.Build.0 = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x86.ActiveCfg = Release|Any CPU - {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x86.Build.0 = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x64.ActiveCfg = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x64.Build.0 = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x86.ActiveCfg = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x86.Build.0 = Debug|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|Any CPU.Build.0 = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x64.ActiveCfg = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x64.Build.0 = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x86.ActiveCfg = Release|Any CPU - {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x86.Build.0 = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x64.ActiveCfg = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x64.Build.0 = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x86.ActiveCfg = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x86.Build.0 = Debug|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|Any CPU.Build.0 = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x64.ActiveCfg = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x64.Build.0 = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x86.ActiveCfg = Release|Any CPU - {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x86.Build.0 = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|Any CPU.Build.0 = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x64.ActiveCfg = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x64.Build.0 = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x86.ActiveCfg = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x86.Build.0 = Debug|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|Any CPU.ActiveCfg = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|Any CPU.Build.0 = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x64.ActiveCfg = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x64.Build.0 = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x86.ActiveCfg = Release|Any CPU - {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x86.Build.0 = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x64.ActiveCfg = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x64.Build.0 = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x86.ActiveCfg = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x86.Build.0 = Debug|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|Any CPU.Build.0 = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x64.ActiveCfg = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x64.Build.0 = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x86.ActiveCfg = Release|Any CPU - {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x86.Build.0 = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x64.ActiveCfg = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x64.Build.0 = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x86.ActiveCfg = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x86.Build.0 = Debug|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|Any CPU.Build.0 = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x64.ActiveCfg = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x64.Build.0 = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x86.ActiveCfg = Release|Any CPU - {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x86.Build.0 = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x64.ActiveCfg = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x64.Build.0 = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x86.ActiveCfg = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x86.Build.0 = Debug|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|Any CPU.Build.0 = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x64.ActiveCfg = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x64.Build.0 = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x86.ActiveCfg = Release|Any CPU - {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x86.Build.0 = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x64.ActiveCfg = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x64.Build.0 = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x86.ActiveCfg = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x86.Build.0 = Debug|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|Any CPU.Build.0 = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x64.ActiveCfg = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x64.Build.0 = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x86.ActiveCfg = Release|Any CPU - {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x86.Build.0 = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x64.ActiveCfg = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x64.Build.0 = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x86.ActiveCfg = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x86.Build.0 = Debug|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|Any CPU.Build.0 = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x64.ActiveCfg = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x64.Build.0 = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x86.ActiveCfg = Release|Any CPU - {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x86.Build.0 = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x64.ActiveCfg = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x64.Build.0 = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x86.ActiveCfg = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x86.Build.0 = Debug|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|Any CPU.Build.0 = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x64.ActiveCfg = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x64.Build.0 = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x86.ActiveCfg = Release|Any CPU - {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x86.Build.0 = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|Any CPU.Build.0 = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x64.ActiveCfg = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x64.Build.0 = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x86.ActiveCfg = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x86.Build.0 = Debug|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|Any CPU.ActiveCfg = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|Any CPU.Build.0 = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x64.ActiveCfg = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x64.Build.0 = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x86.ActiveCfg = Release|Any CPU - {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x86.Build.0 = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x64.ActiveCfg = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x64.Build.0 = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x86.ActiveCfg = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x86.Build.0 = Debug|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|Any CPU.Build.0 = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x64.ActiveCfg = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x64.Build.0 = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x86.ActiveCfg = Release|Any CPU - {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cscvrptw", "cscvrptw.csproj", "{A6E213B7-2AC0-4759-B3D5-BB0FDD714915}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csflow", "csflow.csproj", "{F623C1BE-13CC-4342-A32A-8CD881A199D9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csfz", "csfz.csproj", "{C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csintegerprogramming", "csintegerprogramming.csproj", "{0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csknapsack", "csknapsack.csproj", "{E100DAEA-85F1-4450-A385-D796EB676630}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cslinearprogramming", "cslinearprogramming.csproj", "{B34DA790-9540-4204-B9D4-1B7B7F6327E7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csls_api", "csls_api.csproj", "{58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csrabbitspheasants", "csrabbitspheasants.csproj", "{16022C04-2A33-4A95-9B41-F390F4AC0355}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cstsp", "cstsp.csproj", "{51E8911B-F773-4A18-A8B7-2BCC48114AAB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GateSchedulingSat", "GateSchedulingSat.csproj", "{682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopFt06Sat", "JobshopFt06Sat.csproj", "{8E94B0B6-493F-4214-858F-81AFA18416E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopSat", "JobshopSat.csproj", "{ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NursesSat", "NursesSat.csproj", "{8525EA38-48C0-4D64-A1DE-FE54F5287B4F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShiftSchedulingSat", "ShiftSchedulingSat.csproj", "{D309FF10-3D42-446A-8402-62A941C0783A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeakerSchedulingSat", "SpeakerSchedulingSat.csproj", "{E3114C14-B906-4FC8-A5B4-A815E70575B4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskSchedulingSat", "TaskSchedulingSat.csproj", "{768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tsp", "tsp.csproj", "{4BBD7983-D698-4638-B690-9D27BC44CD64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vrp", "vrp.csproj", "{DA83621B-14F2-4D26-8DD2-4E79D684DFA7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x64.ActiveCfg = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x64.Build.0 = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x86.ActiveCfg = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Debug|x86.Build.0 = Debug|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|Any CPU.Build.0 = Release|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x64.ActiveCfg = Release|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x64.Build.0 = Release|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x86.ActiveCfg = Release|Any CPU + {4A059795-058D-42BF-A6B8-922A0F9A39C3}.Release|x86.Build.0 = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x64.ActiveCfg = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x64.Build.0 = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x86.ActiveCfg = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Debug|x86.Build.0 = Debug|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|Any CPU.Build.0 = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x64.ActiveCfg = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x64.Build.0 = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x86.ActiveCfg = Release|Any CPU + {63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}.Release|x86.Build.0 = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x64.Build.0 = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Debug|x86.Build.0 = Debug|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|Any CPU.Build.0 = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x64.ActiveCfg = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x64.Build.0 = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x86.ActiveCfg = Release|Any CPU + {D3BD3816-AF4F-44DC-A75D-56492550E53B}.Release|x86.Build.0 = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x64.ActiveCfg = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x64.Build.0 = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x86.ActiveCfg = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Debug|x86.Build.0 = Debug|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|Any CPU.Build.0 = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x64.ActiveCfg = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x64.Build.0 = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x86.ActiveCfg = Release|Any CPU + {B3A1ADA7-1DE7-4065-97B9-26E85360DE04}.Release|x86.Build.0 = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x64.ActiveCfg = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x64.Build.0 = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x86.ActiveCfg = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Debug|x86.Build.0 = Debug|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|Any CPU.Build.0 = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x64.ActiveCfg = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x64.Build.0 = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x86.ActiveCfg = Release|Any CPU + {3AD280FB-35EA-4CF4-9452-F90BEA18649E}.Release|x86.Build.0 = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x64.ActiveCfg = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x64.Build.0 = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x86.ActiveCfg = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Debug|x86.Build.0 = Debug|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|Any CPU.Build.0 = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x64.ActiveCfg = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x64.Build.0 = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x86.ActiveCfg = Release|Any CPU + {FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}.Release|x86.Build.0 = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x64.ActiveCfg = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x64.Build.0 = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x86.ActiveCfg = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Debug|x86.Build.0 = Debug|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|Any CPU.Build.0 = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x64.ActiveCfg = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x64.Build.0 = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x86.ActiveCfg = Release|Any CPU + {9E03C995-2794-4C82-B164-2DB90A077262}.Release|x86.Build.0 = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x64.ActiveCfg = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x64.Build.0 = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x86.ActiveCfg = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Debug|x86.Build.0 = Debug|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|Any CPU.Build.0 = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x64.ActiveCfg = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x64.Build.0 = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x86.ActiveCfg = Release|Any CPU + {D776D661-577D-46FB-A09F-97597A80CC4D}.Release|x86.Build.0 = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x64.ActiveCfg = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x64.Build.0 = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x86.ActiveCfg = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Debug|x86.Build.0 = Debug|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|Any CPU.Build.0 = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x64.ActiveCfg = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x64.Build.0 = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x86.ActiveCfg = Release|Any CPU + {2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}.Release|x86.Build.0 = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x64.ActiveCfg = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x64.Build.0 = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x86.ActiveCfg = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Debug|x86.Build.0 = Debug|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|Any CPU.Build.0 = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x64.ActiveCfg = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x64.Build.0 = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x86.ActiveCfg = Release|Any CPU + {87B880DA-44AF-4DB1-8E97-A7977A99B679}.Release|x86.Build.0 = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x64.ActiveCfg = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x64.Build.0 = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x86.ActiveCfg = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Debug|x86.Build.0 = Debug|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|Any CPU.Build.0 = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x64.ActiveCfg = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x64.Build.0 = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x86.ActiveCfg = Release|Any CPU + {15524DD4-2EA3-468C-A5BF-F5AD8440278E}.Release|x86.Build.0 = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x64.ActiveCfg = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x64.Build.0 = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x86.ActiveCfg = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Debug|x86.Build.0 = Debug|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|Any CPU.Build.0 = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x64.ActiveCfg = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x64.Build.0 = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x86.ActiveCfg = Release|Any CPU + {7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}.Release|x86.Build.0 = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x64.ActiveCfg = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x64.Build.0 = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x86.ActiveCfg = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Debug|x86.Build.0 = Debug|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|Any CPU.Build.0 = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x64.ActiveCfg = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x64.Build.0 = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x86.ActiveCfg = Release|Any CPU + {9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}.Release|x86.Build.0 = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x64.ActiveCfg = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x64.Build.0 = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x86.ActiveCfg = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Debug|x86.Build.0 = Debug|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|Any CPU.Build.0 = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x64.ActiveCfg = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x64.Build.0 = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x86.ActiveCfg = Release|Any CPU + {3175CB54-187D-45E4-A500-668BE8EA601F}.Release|x86.Build.0 = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x64.ActiveCfg = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x64.Build.0 = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x86.ActiveCfg = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Debug|x86.Build.0 = Debug|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|Any CPU.Build.0 = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x64.ActiveCfg = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x64.Build.0 = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x86.ActiveCfg = Release|Any CPU + {BD62083D-52CF-4128-AED8-DD996E364893}.Release|x86.Build.0 = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x64.ActiveCfg = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x64.Build.0 = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x86.ActiveCfg = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Debug|x86.Build.0 = Debug|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|Any CPU.Build.0 = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x64.ActiveCfg = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x64.Build.0 = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x86.ActiveCfg = Release|Any CPU + {8D696773-89A1-4790-93DE-D57C45E61515}.Release|x86.Build.0 = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|Any CPU.Build.0 = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x64.ActiveCfg = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x64.Build.0 = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x86.ActiveCfg = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Debug|x86.Build.0 = Debug|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|Any CPU.ActiveCfg = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|Any CPU.Build.0 = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x64.ActiveCfg = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x64.Build.0 = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x86.ActiveCfg = Release|Any CPU + {921FA31F-F200-4144-8925-7F93F5BC7062}.Release|x86.Build.0 = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x64.Build.0 = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Debug|x86.Build.0 = Debug|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|Any CPU.Build.0 = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x64.ActiveCfg = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x64.Build.0 = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x86.ActiveCfg = Release|Any CPU + {D309FF10-3D42-446A-8402-62A941C0783A}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/examples/dotnet/JobshopFt06Sat.csproj b/examples/dotnet/JobshopFt06Sat.csproj index 80b0478f3b..64024904a0 100644 --- a/examples/dotnet/JobshopFt06Sat.csproj +++ b/examples/dotnet/JobshopFt06Sat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/JobshopSat.csproj b/examples/dotnet/JobshopSat.csproj index 43ce7f8b6f..0e8b5bdd6f 100644 --- a/examples/dotnet/JobshopSat.csproj +++ b/examples/dotnet/JobshopSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/NursesSat.csproj b/examples/dotnet/NursesSat.csproj index 9179e76778..78e0cc412d 100644 --- a/examples/dotnet/NursesSat.csproj +++ b/examples/dotnet/NursesSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/SpeakerSchedulingSat.csproj b/examples/dotnet/SpeakerSchedulingSat.csproj index 9352582426..12dd35c813 100644 --- a/examples/dotnet/SpeakerSchedulingSat.csproj +++ b/examples/dotnet/SpeakerSchedulingSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/TaskSchedulingSat.csproj b/examples/dotnet/TaskSchedulingSat.csproj index b8d8c37339..c19648171d 100644 --- a/examples/dotnet/TaskSchedulingSat.csproj +++ b/examples/dotnet/TaskSchedulingSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/cscvrptw.csproj b/examples/dotnet/cscvrptw.csproj index 007f7a170b..29a15a3021 100644 --- a/examples/dotnet/cscvrptw.csproj +++ b/examples/dotnet/cscvrptw.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csflow.csproj b/examples/dotnet/csflow.csproj index 16d2c145a7..5c7d2dd2e1 100644 --- a/examples/dotnet/csflow.csproj +++ b/examples/dotnet/csflow.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csfz.csproj b/examples/dotnet/csfz.csproj index 65106a8c46..b86428a6ff 100644 --- a/examples/dotnet/csfz.csproj +++ b/examples/dotnet/csfz.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csintegerprogramming.csproj b/examples/dotnet/csintegerprogramming.csproj index 827bd80958..8357d5e5f8 100644 --- a/examples/dotnet/csintegerprogramming.csproj +++ b/examples/dotnet/csintegerprogramming.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csknapsack.csproj b/examples/dotnet/csknapsack.csproj index 19542e2bb2..bd7fd28adb 100644 --- a/examples/dotnet/csknapsack.csproj +++ b/examples/dotnet/csknapsack.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/cslinearprogramming.csproj b/examples/dotnet/cslinearprogramming.csproj index 940777d9ea..d00e72d180 100644 --- a/examples/dotnet/cslinearprogramming.csproj +++ b/examples/dotnet/cslinearprogramming.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csls_api.csproj b/examples/dotnet/csls_api.csproj index 16a1b47573..b79366086b 100644 --- a/examples/dotnet/csls_api.csproj +++ b/examples/dotnet/csls_api.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/csrabbitspheasants.csproj b/examples/dotnet/csrabbitspheasants.csproj index 55b28a3bdf..68a6bc157b 100644 --- a/examples/dotnet/csrabbitspheasants.csproj +++ b/examples/dotnet/csrabbitspheasants.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/cstsp.csproj b/examples/dotnet/cstsp.csproj index 63dc256e7f..9459cc1049 100644 --- a/examples/dotnet/cstsp.csproj +++ b/examples/dotnet/cstsp.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/tsp.csproj b/examples/dotnet/tsp.csproj index 9809382460..9560c07d58 100644 --- a/examples/dotnet/tsp.csproj +++ b/examples/dotnet/tsp.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/vrp.csproj b/examples/dotnet/vrp.csproj index a144951dd5..3b26ff5cb9 100644 --- a/examples/dotnet/vrp.csproj +++ b/examples/dotnet/vrp.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/issue18.csproj b/examples/tests/issue18.csproj index 03edc6bcd9..0da11cfc91 100644 --- a/examples/tests/issue18.csproj +++ b/examples/tests/issue18.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/issue22.csproj b/examples/tests/issue22.csproj index f2dee7f57f..432f4d7f09 100644 --- a/examples/tests/issue22.csproj +++ b/examples/tests/issue22.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/issue33.csproj b/examples/tests/issue33.csproj index ce37a67a0f..1395e19d58 100644 --- a/examples/tests/issue33.csproj +++ b/examples/tests/issue33.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/test_sat_model.csproj b/examples/tests/test_sat_model.csproj index 44fedae016..a31b5d9a14 100644 --- a/examples/tests/test_sat_model.csproj +++ b/examples/tests/test_sat_model.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/testcp.csproj b/examples/tests/testcp.csproj index ea3aede7ef..2cd68a8d4a 100644 --- a/examples/tests/testcp.csproj +++ b/examples/tests/testcp.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/testlp.csproj b/examples/tests/testlp.csproj index 1a8a5c101f..a8a09e6dd1 100644 --- a/examples/tests/testlp.csproj +++ b/examples/tests/testlp.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/testsat.csproj b/examples/tests/testsat.csproj index 8f0f6b8871..ffb6999fa8 100644 --- a/examples/tests/testsat.csproj +++ b/examples/tests/testsat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/tests/visitor_test.cc b/examples/tests/visitor_test.cc deleted file mode 100644 index db5363bd69..0000000000 --- a/examples/tests/visitor_test.cc +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2011-2012 Google -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -#include "ortools/base/hash.h" -#include "ortools/base/map_util.h" -#include "ortools/base/stl_util.h" -#include "ortools/base/random.h" -#include "ortools/constraint_solver/constraint_solveri.h" -#include "ortools/constraint_solver/constraint_solver.h" -#include "ortools/util/string_array.h" - -namespace operations_research { -void TestVisitSumEqual() { - LOG(INFO) << "----- Test Visit Sum Equal -----"; - Solver solver("BinPacking"); - const int total_items = 10; - const int total_bins = 3; - - // create the variables - // Index des lignes => bins - // Index des colonnes => items - std::vector vars; - solver.MakeBoolVarArray(total_items * total_bins, "", &vars); - - //Contrainte ct1 : un item appartient qu'à un seul bin - for (int i = 0; i < total_items; ++i) { - std::vector item_column(total_bins); - for(int j = 0; j < total_bins; ++j) { - item_column[j] = vars[j + i * total_bins]; - } - solver.AddConstraint(solver.MakeSumEquality(item_column, 1)); - ////////////////////////////////Constraint - } - - std::vector primary_integer_variables; - std::vector secondary_integer_variables; - std::vector sequence_variables; - std::vector interval_variables; - - solver.CollectDecisionVariables(&primary_integer_variables, - &secondary_integer_variables, - &sequence_variables, - &interval_variables); -} - -} // namespace operations_research - - -int main(int argc, char** argv) { - gflags::ParseCommandLineFlags(&argc, &argv, true); - operations_research::TestVisitSumEqual(); - return 0; -} diff --git a/makefiles/Makefile.cpp.mk b/makefiles/Makefile.cpp.mk index 6d5d5a0b7e..d873ec7296 100755 --- a/makefiles/Makefile.cpp.mk +++ b/makefiles/Makefile.cpp.mk @@ -413,8 +413,7 @@ test_cc_tests: \ rcc_cpp11_test \ rcc_forbidden_intervals_test \ rcc_issue57 \ - rcc_min_max_test \ - rcc_visitor_test + rcc_min_max_test # $(MAKE) rcc_issue173 # error: too long .PHONY: test_cc_contrib # Build and Run all C++ Contrib (located in ortools/examples/contrib) @@ -622,6 +621,10 @@ ifeq ($(UNIX_PROTOBUF_DIR),$(OR_TOOLS_TOP)/dependencies/install) $(COPYREC) $(subst /,$S,$(_PROTOBUF_LIB_DIR))$Slibproto* "$(DESTDIR)$(prefix)$Slib" $(COPYREC) dependencies$Sinstall$Sbin$Sprotoc "$(DESTDIR)$(prefix)$Sbin" endif +ifeq ($(UNIX_ABSL_DIR),$(OR_TOOLS_TOP)/dependencies/install) + $(COPYREC) dependencies$Sinstall$Sinclude$Sabsl "$(DESTDIR)$(prefix)$Sinclude" + $(COPYREC) dependencies$Sinstall$Slib$Slibabsl* "$(DESTDIR)$(prefix)$Slib" +endif ifeq ($(UNIX_CBC_DIR),$(OR_TOOLS_TOP)/dependencies/install) $(COPYREC) dependencies$Sinstall$Sinclude$Scoin "$(DESTDIR)$(prefix)$Sinclude" $(COPYREC) dependencies$Sinstall$Slib$SlibCbc* "$(DESTDIR)$(prefix)$Slib" @@ -648,6 +651,10 @@ ifeq ($(WINDOWS_PROTOBUF_DIR),$(OR_ROOT)dependencies/install) -$(MKDIR) "$(DESTDIR)$(prefix)$Sinclude$Sgoogle" $(COPYREC) dependencies$Sinstall$Sinclude$Sgoogle "$(DESTDIR)$(prefix)$Sinclude$Sgoogle" /E endif +ifeq ($(WINDOWS_ABSL_DIR),$(OR_ROOT)dependencies/install) + -$(MKDIR) "$(DESTDIR)$(prefix)$Sinclude$Sabsl" + $(COPYREC) dependencies$Sinstall$Sinclude$Sabsl "$(DESTDIR)$(prefix)$Sinclude$Sabsl" +endif ifeq ($(WINDOWS_CBC_DIR),$(OR_ROOT)dependencies/install) -$(MKDIR) "$(DESTDIR)$(prefix)$Sinclude$Scoin" $(COPYREC) dependencies$Sinstall$Sinclude$Scoin "$(DESTDIR)$(prefix)$Sinclude$Scoin" diff --git a/makefiles/Makefile.gen.mk b/makefiles/Makefile.gen.mk index 024d10fcbf..e72b45fc3e 100644 --- a/makefiles/Makefile.gen.mk +++ b/makefiles/Makefile.gen.mk @@ -275,8 +275,8 @@ objs/data/jobshop_scheduling_parser.$O: \ ortools/data/jobshop_scheduling_parser.cc \ ortools/data/jobshop_scheduling_parser.h \ ortools/gen/ortools/data/jobshop_scheduling.pb.h \ - ortools/base/commandlineflags.h ortools/base/filelineiter.h \ - ortools/base/file.h ortools/base/integral_types.h ortools/base/logging.h \ + ortools/base/filelineiter.h ortools/base/file.h \ + ortools/base/integral_types.h ortools/base/logging.h \ ortools/base/macros.h ortools/base/status.h ortools/base/strtoint.h \ ortools/base/basictypes.h | $(OBJ_DIR)/data $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Sdata$Sjobshop_scheduling_parser.cc $(OBJ_OUT)$(OBJ_DIR)$Sdata$Sjobshop_scheduling_parser.$O @@ -1073,6 +1073,7 @@ SAT_DEPS = \ $(SRC_DIR)/ortools/sat/cp_model_symmetries.h \ $(SRC_DIR)/ortools/sat/cp_model_utils.h \ $(SRC_DIR)/ortools/sat/cumulative.h \ + $(SRC_DIR)/ortools/sat/cuts.h \ $(SRC_DIR)/ortools/sat/disjunctive.h \ $(SRC_DIR)/ortools/sat/drat_checker.h \ $(SRC_DIR)/ortools/sat/drat_proof_handler.h \ @@ -1082,6 +1083,8 @@ SAT_DEPS = \ $(SRC_DIR)/ortools/sat/integer.h \ $(SRC_DIR)/ortools/sat/integer_search.h \ $(SRC_DIR)/ortools/sat/intervals.h \ + $(SRC_DIR)/ortools/sat/linear_constraint.h \ + $(SRC_DIR)/ortools/sat/linear_constraint_manager.h \ $(SRC_DIR)/ortools/sat/linear_programming_constraint.h \ $(SRC_DIR)/ortools/sat/linear_relaxation.h \ $(SRC_DIR)/ortools/sat/lns.h \ @@ -1126,6 +1129,7 @@ SAT_LIB_OBJS = \ $(OBJ_DIR)/sat/cp_model_symmetries.$O \ $(OBJ_DIR)/sat/cp_model_utils.$O \ $(OBJ_DIR)/sat/cumulative.$O \ + $(OBJ_DIR)/sat/cuts.$O \ $(OBJ_DIR)/sat/disjunctive.$O \ $(OBJ_DIR)/sat/drat_checker.$O \ $(OBJ_DIR)/sat/drat_proof_handler.$O \ @@ -1135,6 +1139,8 @@ SAT_LIB_OBJS = \ $(OBJ_DIR)/sat/integer_expr.$O \ $(OBJ_DIR)/sat/integer_search.$O \ $(OBJ_DIR)/sat/intervals.$O \ + $(OBJ_DIR)/sat/linear_constraint.$O \ + $(OBJ_DIR)/sat/linear_constraint_manager.$O \ $(OBJ_DIR)/sat/linear_programming_constraint.$O \ $(OBJ_DIR)/sat/linear_relaxation.$O \ $(OBJ_DIR)/sat/lp_utils.$O \ @@ -1287,9 +1293,9 @@ objs/sat/cp_model_lns.$O: ortools/sat/cp_model_lns.cc \ $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Scp_model_lns.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Scp_model_lns.$O objs/sat/cp_model_loader.$O: ortools/sat/cp_model_loader.cc \ - ortools/sat/cp_model_loader.h ortools/base/integral_types.h \ - ortools/base/int_type.h ortools/base/macros.h \ - ortools/base/int_type_indexed_vector.h ortools/base/logging.h \ + ortools/sat/cp_model_loader.h ortools/base/int_type.h \ + ortools/base/macros.h ortools/base/int_type_indexed_vector.h \ + ortools/base/integral_types.h ortools/base/logging.h \ ortools/base/map_util.h ortools/gen/ortools/sat/cp_model.pb.h \ ortools/sat/cp_model_utils.h ortools/util/sorted_interval_list.h \ ortools/sat/integer.h ortools/base/hash.h ortools/base/basictypes.h \ @@ -1405,10 +1411,11 @@ objs/sat/cp_model_solver.$O: ortools/sat/cp_model_solver.cc \ ortools/glop/variables_info.h ortools/glop/reduced_costs.h \ ortools/glop/variable_values.h ortools/lp_data/lp_print_utils.h \ ortools/lp_data/sparse_row.h ortools/lp_data/matrix_scaler.h \ - ortools/sat/linear_relaxation.h ortools/sat/lns.h \ - ortools/sat/optimization.h ortools/gen/ortools/sat/boolean_problem.pb.h \ - ortools/sat/probing.h ortools/sat/simplification.h \ - ortools/base/adjustable_priority_queue.h | $(OBJ_DIR)/sat + ortools/sat/cuts.h ortools/sat/linear_constraint.h \ + ortools/sat/linear_constraint_manager.h ortools/sat/linear_relaxation.h \ + ortools/sat/lns.h ortools/sat/optimization.h \ + ortools/gen/ortools/sat/boolean_problem.pb.h ortools/sat/probing.h \ + ortools/sat/simplification.h ortools/base/adjustable_priority_queue.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Scp_model_solver.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Scp_model_solver.$O objs/sat/cp_model_symmetries.$O: ortools/sat/cp_model_symmetries.cc \ @@ -1456,6 +1463,25 @@ objs/sat/cumulative.$O: ortools/sat/cumulative.cc ortools/sat/cumulative.h \ ortools/sat/timetable_edgefinding.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Scumulative.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Scumulative.$O +objs/sat/cuts.$O: ortools/sat/cuts.cc ortools/sat/cuts.h \ + ortools/base/int_type.h ortools/base/macros.h ortools/sat/integer.h \ + ortools/base/hash.h ortools/base/basictypes.h \ + ortools/base/integral_types.h ortools/base/logging.h \ + ortools/base/int_type_indexed_vector.h ortools/base/map_util.h \ + ortools/graph/iterators.h ortools/sat/model.h ortools/base/typeid.h \ + ortools/sat/sat_base.h ortools/util/bitset.h ortools/sat/sat_solver.h \ + ortools/base/timer.h ortools/sat/clause.h \ + ortools/sat/drat_proof_handler.h ortools/sat/drat_checker.h \ + ortools/sat/drat_writer.h ortools/base/file.h ortools/base/status.h \ + ortools/gen/ortools/sat/sat_parameters.pb.h ortools/util/random_engine.h \ + ortools/util/stats.h ortools/sat/pb_constraint.h ortools/sat/restart.h \ + ortools/util/running_stat.h ortools/sat/sat_decision.h \ + ortools/util/integer_pq.h ortools/util/time_limit.h \ + ortools/base/commandlineflags.h ortools/util/rev.h \ + ortools/util/saturated_arithmetic.h ortools/util/sorted_interval_list.h \ + ortools/sat/linear_constraint.h | $(OBJ_DIR)/sat + $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Scuts.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Scuts.$O + objs/sat/disjunctive.$O: ortools/sat/disjunctive.cc \ ortools/sat/disjunctive.h ortools/base/int_type.h ortools/base/macros.h \ ortools/sat/integer.h ortools/base/hash.h ortools/base/basictypes.h \ @@ -1592,7 +1618,8 @@ objs/sat/integer_search.$O: ortools/sat/integer_search.cc \ ortools/glop/variables_info.h ortools/glop/reduced_costs.h \ ortools/glop/variable_values.h ortools/lp_data/lp_print_utils.h \ ortools/lp_data/sparse_row.h ortools/lp_data/matrix_scaler.h \ - ortools/sat/util.h | $(OBJ_DIR)/sat + ortools/sat/cuts.h ortools/sat/linear_constraint.h \ + ortools/sat/linear_constraint_manager.h ortools/sat/util.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Sinteger_search.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Sinteger_search.$O objs/sat/intervals.$O: ortools/sat/intervals.cc ortools/sat/intervals.h \ @@ -1614,15 +1641,54 @@ objs/sat/intervals.$O: ortools/sat/intervals.cc ortools/sat/intervals.h \ ortools/sat/integer_expr.h ortools/sat/precedences.h ortools/util/sort.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Sintervals.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Sintervals.$O +objs/sat/linear_constraint.$O: ortools/sat/linear_constraint.cc \ + ortools/sat/linear_constraint.h ortools/sat/integer.h \ + ortools/base/hash.h ortools/base/basictypes.h \ + ortools/base/integral_types.h ortools/base/logging.h \ + ortools/base/macros.h ortools/base/int_type.h \ + ortools/base/int_type_indexed_vector.h ortools/base/map_util.h \ + ortools/graph/iterators.h ortools/sat/model.h ortools/base/typeid.h \ + ortools/sat/sat_base.h ortools/util/bitset.h ortools/sat/sat_solver.h \ + ortools/base/timer.h ortools/sat/clause.h \ + ortools/sat/drat_proof_handler.h ortools/sat/drat_checker.h \ + ortools/sat/drat_writer.h ortools/base/file.h ortools/base/status.h \ + ortools/gen/ortools/sat/sat_parameters.pb.h ortools/util/random_engine.h \ + ortools/util/stats.h ortools/sat/pb_constraint.h ortools/sat/restart.h \ + ortools/util/running_stat.h ortools/sat/sat_decision.h \ + ortools/util/integer_pq.h ortools/util/time_limit.h \ + ortools/base/commandlineflags.h ortools/util/rev.h \ + ortools/util/saturated_arithmetic.h ortools/util/sorted_interval_list.h | $(OBJ_DIR)/sat + $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Slinear_constraint.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Slinear_constraint.$O + +objs/sat/linear_constraint_manager.$O: \ + ortools/sat/linear_constraint_manager.cc \ + ortools/sat/linear_constraint_manager.h ortools/sat/linear_constraint.h \ + ortools/sat/integer.h ortools/base/hash.h ortools/base/basictypes.h \ + ortools/base/integral_types.h ortools/base/logging.h \ + ortools/base/macros.h ortools/base/int_type.h \ + ortools/base/int_type_indexed_vector.h ortools/base/map_util.h \ + ortools/graph/iterators.h ortools/sat/model.h ortools/base/typeid.h \ + ortools/sat/sat_base.h ortools/util/bitset.h ortools/sat/sat_solver.h \ + ortools/base/timer.h ortools/sat/clause.h \ + ortools/sat/drat_proof_handler.h ortools/sat/drat_checker.h \ + ortools/sat/drat_writer.h ortools/base/file.h ortools/base/status.h \ + ortools/gen/ortools/sat/sat_parameters.pb.h ortools/util/random_engine.h \ + ortools/util/stats.h ortools/sat/pb_constraint.h ortools/sat/restart.h \ + ortools/util/running_stat.h ortools/sat/sat_decision.h \ + ortools/util/integer_pq.h ortools/util/time_limit.h \ + ortools/base/commandlineflags.h ortools/util/rev.h \ + ortools/util/saturated_arithmetic.h ortools/util/sorted_interval_list.h | $(OBJ_DIR)/sat + $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Slinear_constraint_manager.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Slinear_constraint_manager.$O + objs/sat/linear_programming_constraint.$O: \ ortools/sat/linear_programming_constraint.cc \ ortools/sat/linear_programming_constraint.h ortools/base/int_type.h \ - ortools/base/macros.h ortools/base/hash.h ortools/base/basictypes.h \ - ortools/base/integral_types.h ortools/base/logging.h \ - ortools/glop/revised_simplex.h ortools/glop/basis_representation.h \ - ortools/glop/lu_factorization.h ortools/glop/markowitz.h \ - ortools/gen/ortools/glop/parameters.pb.h ortools/glop/status.h \ - ortools/lp_data/lp_types.h ortools/base/int_type_indexed_vector.h \ + ortools/base/macros.h ortools/glop/revised_simplex.h \ + ortools/base/integral_types.h ortools/glop/basis_representation.h \ + ortools/base/logging.h ortools/glop/lu_factorization.h \ + ortools/glop/markowitz.h ortools/gen/ortools/glop/parameters.pb.h \ + ortools/glop/status.h ortools/lp_data/lp_types.h \ + ortools/base/basictypes.h ortools/base/int_type_indexed_vector.h \ ortools/util/bitset.h ortools/lp_data/sparse.h \ ortools/lp_data/permutation.h ortools/base/random.h \ ortools/util/return_macros.h ortools/lp_data/sparse_column.h \ @@ -1630,29 +1696,31 @@ objs/sat/linear_programming_constraint.$O: \ ortools/util/stats.h ortools/base/timer.h ortools/glop/rank_one_update.h \ ortools/lp_data/lp_utils.h ortools/base/accurate_sum.h \ ortools/glop/dual_edge_norms.h ortools/lp_data/lp_data.h \ - ortools/util/fp_utils.h ortools/glop/entering_variable.h \ - ortools/glop/primal_edge_norms.h ortools/glop/update_row.h \ - ortools/glop/variables_info.h ortools/glop/reduced_costs.h \ - ortools/util/random_engine.h ortools/glop/variable_values.h \ - ortools/lp_data/lp_print_utils.h ortools/lp_data/sparse_row.h \ - ortools/util/time_limit.h ortools/base/commandlineflags.h \ - ortools/util/running_stat.h ortools/lp_data/matrix_scaler.h \ - ortools/sat/integer.h ortools/base/map_util.h ortools/sat/model.h \ - ortools/base/typeid.h ortools/sat/sat_base.h ortools/sat/sat_solver.h \ - ortools/sat/clause.h ortools/sat/drat_proof_handler.h \ - ortools/sat/drat_checker.h ortools/sat/drat_writer.h ortools/base/file.h \ - ortools/base/status.h ortools/gen/ortools/sat/sat_parameters.pb.h \ - ortools/sat/pb_constraint.h ortools/sat/restart.h \ - ortools/sat/sat_decision.h ortools/util/integer_pq.h ortools/util/rev.h \ + ortools/base/hash.h ortools/util/fp_utils.h \ + ortools/glop/entering_variable.h ortools/glop/primal_edge_norms.h \ + ortools/glop/update_row.h ortools/glop/variables_info.h \ + ortools/glop/reduced_costs.h ortools/util/random_engine.h \ + ortools/glop/variable_values.h ortools/lp_data/lp_print_utils.h \ + ortools/lp_data/sparse_row.h ortools/util/time_limit.h \ + ortools/base/commandlineflags.h ortools/util/running_stat.h \ + ortools/lp_data/matrix_scaler.h ortools/sat/cuts.h ortools/sat/integer.h \ + ortools/base/map_util.h ortools/sat/model.h ortools/base/typeid.h \ + ortools/sat/sat_base.h ortools/sat/sat_solver.h ortools/sat/clause.h \ + ortools/sat/drat_proof_handler.h ortools/sat/drat_checker.h \ + ortools/sat/drat_writer.h ortools/base/file.h ortools/base/status.h \ + ortools/gen/ortools/sat/sat_parameters.pb.h ortools/sat/pb_constraint.h \ + ortools/sat/restart.h ortools/sat/sat_decision.h \ + ortools/util/integer_pq.h ortools/util/rev.h \ ortools/util/saturated_arithmetic.h ortools/util/sorted_interval_list.h \ + ortools/sat/linear_constraint.h ortools/sat/linear_constraint_manager.h \ ortools/glop/preprocessor.h \ ortools/graph/strongly_connected_components.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Slinear_programming_constraint.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Slinear_programming_constraint.$O objs/sat/linear_relaxation.$O: ortools/sat/linear_relaxation.cc \ ortools/sat/linear_relaxation.h ortools/sat/cp_model_loader.h \ - ortools/base/integral_types.h ortools/base/int_type.h \ - ortools/base/macros.h ortools/base/int_type_indexed_vector.h \ + ortools/base/int_type.h ortools/base/macros.h \ + ortools/base/int_type_indexed_vector.h ortools/base/integral_types.h \ ortools/base/logging.h ortools/base/map_util.h \ ortools/gen/ortools/sat/cp_model.pb.h ortools/sat/cp_model_utils.h \ ortools/util/sorted_interval_list.h ortools/sat/integer.h \ @@ -1684,7 +1752,8 @@ objs/sat/linear_relaxation.$O: ortools/sat/linear_relaxation.cc \ ortools/glop/variables_info.h ortools/glop/reduced_costs.h \ ortools/glop/variable_values.h ortools/lp_data/lp_print_utils.h \ ortools/lp_data/sparse_row.h ortools/lp_data/matrix_scaler.h \ - ortools/base/iterator_adaptors.h | $(OBJ_DIR)/sat + ortools/sat/cuts.h ortools/sat/linear_constraint.h \ + ortools/sat/linear_constraint_manager.h ortools/base/iterator_adaptors.h | $(OBJ_DIR)/sat $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Ssat$Slinear_relaxation.cc $(OBJ_OUT)$(OBJ_DIR)$Ssat$Slinear_relaxation.$O objs/sat/lp_utils.$O: ortools/sat/lp_utils.cc ortools/sat/lp_utils.h \ @@ -3225,16 +3294,6 @@ objs/constraint_solver/table.$O: ortools/constraint_solver/table.cc \ ortools/util/saturated_arithmetic.h ortools/util/bitset.h \ ortools/util/sorted_interval_list.h ortools/util/tuple_set.h \ ortools/constraint_solver/constraint_solveri.h ortools/util/vector_map.h \ - ortools/sat/sat_solver.h \ - ortools/base/int_type.h ortools/base/int_type_indexed_vector.h \ - ortools/sat/clause.h ortools/sat/drat_proof_handler.h \ - ortools/sat/drat_checker.h ortools/sat/sat_base.h ortools/sat/model.h \ - ortools/base/typeid.h ortools/sat/drat_writer.h ortools/base/file.h \ - ortools/base/status.h ortools/gen/ortools/sat/sat_parameters.pb.h \ - ortools/util/random_engine.h ortools/util/stats.h \ - ortools/sat/pb_constraint.h ortools/sat/restart.h \ - ortools/util/running_stat.h ortools/sat/sat_decision.h \ - ortools/util/integer_pq.h ortools/util/time_limit.h \ ortools/util/string_array.h | $(OBJ_DIR)/constraint_solver $(CCC) $(CFLAGS) -c $(SRC_DIR)$Sortools$Sconstraint_solver$Stable.cc $(OBJ_OUT)$(OBJ_DIR)$Sconstraint_solver$Stable.$O @@ -3379,3 +3438,4 @@ $(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.h: \ $(OBJ_DIR)/constraint_solver/solver_parameters.pb.$O: \ $(GEN_DIR)/ortools/constraint_solver/solver_parameters.pb.cc | $(OBJ_DIR)/constraint_solver $(CCC) $(CFLAGS) -c $(GEN_PATH)$Sortools$Sconstraint_solver$Ssolver_parameters.pb.cc $(OBJ_OUT)$(OBJ_DIR)$Sconstraint_solver$Ssolver_parameters.pb.$O + diff --git a/makefiles/Makefile.port.mk b/makefiles/Makefile.port.mk index e5c100feed..53b931be76 100755 --- a/makefiles/Makefile.port.mk +++ b/makefiles/Makefile.port.mk @@ -196,8 +196,13 @@ else GIT_REVISION:= 9999 GIT_HASH:= "not_on_git" endif + OR_TOOLS_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR).$(GIT_REVISION) OR_TOOLS_SHORT_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) +ifdef PRE_RELEASE +OR_TOOLS_VERSION := $(OR_TOOLS_VERSION)-beta +OR_TOOLS_SHORT_VERSION := $(OR_TOOLS_SHORT_VERSION)-beta +endif INSTALL_DIR = or-tools_$(PORT)_v$(OR_TOOLS_VERSION) FZ_INSTALL_DIR = or-tools_flatzinc_$(PORT)_v$(OR_TOOLS_VERSION) DATA_INSTALL_DIR = or-tools_data_v$(OR_TOOLS_VERSION) diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk index 34f1becc9d..7ab8fe2bb2 100755 --- a/makefiles/Makefile.python.mk +++ b/makefiles/Makefile.python.mk @@ -861,6 +861,14 @@ ifeq ($(UNIX_PROTOBUF_DIR),$(OR_TOOLS_TOP)/dependencies/install) PYTHON_SETUP_DEPS += , 'libprotobuf.$L.3.6.1' endif endif +ifeq ($(UNIX_ABSL_DIR),$(OR_TOOLS_TOP)/dependencies/install) + ifeq ($(PLATFORM),MACOSX) + PYTHON_SETUP_DEPS += , 'libabsl_*' + endif + ifeq ($(PLATFORM),LINUX) + PYTHON_SETUP_DEPS += , 'libabsl_*' + endif +endif ifeq ($(UNIX_CBC_DIR),$(OR_TOOLS_TOP)/dependencies/install) ifeq ($(PLATFORM),MACOSX) PYTHON_SETUP_DEPS += , 'libCbcSolver.3.$L' @@ -886,10 +894,17 @@ ifeq ($(UNIX_CBC_DIR),$(OR_TOOLS_TOP)/dependencies/install) endif endif +ifndef PRE_RELEASE +OR_TOOLS_PYTHON_VERSION := $(OR_TOOLS_VERSION) +else +OR_TOOLS_PYTHON_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR)b$(GIT_REVISION) +endif + + $(PYPI_ARCHIVE_TEMP_DIR)/ortools/setup.py: tools/setup.py | $(PYPI_ARCHIVE_TEMP_DIR)/ortools $(COPY) tools$Ssetup.py $(PYPI_ARCHIVE_TEMP_DIR)$Sortools $(SED) -i -e 's/ORTOOLS_PYTHON_VERSION/ortools$(PYPI_OS)/' $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Ssetup.py - $(SED) -i -e 's/VVVV/$(OR_TOOLS_VERSION)/' $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Ssetup.py + $(SED) -i -e 's/VVVV/$(OR_TOOLS_PYTHON_VERSION)/' $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Ssetup.py $(SED) -i -e 's/PROTOBUF_TAG/$(PROTOBUF_TAG)/' $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Ssetup.py ifeq ($(SYSTEM),win) $(SED) -i -e 's/\.dll/\.pyd/' $(PYPI_ARCHIVE_TEMP_DIR)/ortools/setup.py @@ -908,10 +923,10 @@ $(PYPI_ARCHIVE_TEMP_DIR)/ortools/ortools/__init__.py: \ $(GEN_DIR)/ortools/__init__.py | $(PYPI_ARCHIVE_TEMP_DIR)/ortools/ortools $(COPY) $(GEN_PATH)$Sortools$S__init__.py $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S__init__.py ifeq ($(SYSTEM),win) - echo __version__ = "$(OR_TOOLS_VERSION)" >> \ + echo __version__ = "$(OR_TOOLS_PYTHON_VERSION)" >> \ $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S__init__.py else - echo "__version__ = \"$(OR_TOOLS_VERSION)\"" >> \ + echo "__version__ = \"$(OR_TOOLS_PYTHON_VERSION)\"" >> \ $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S__init__.py endif @@ -987,6 +1002,9 @@ endif ifeq ($(UNIX_PROTOBUF_DIR),$(OR_TOOLS_TOP)/dependencies/install) $(COPYREC) $(subst /,$S,$(_PROTOBUF_LIB_DIR))$Slibproto* $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S.libs endif +ifeq ($(UNIX_ABSL_DIR),$(OR_TOOLS_TOP)/dependencies/install) + $(COPYREC) dependencies$Sinstall$Slib$Slibabsl_* $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S.libs +endif ifeq ($(UNIX_CBC_DIR),$(OR_TOOLS_TOP)/dependencies/install) $(COPYREC) dependencies$Sinstall$Slib$SlibCbc* $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S.libs $(COPYREC) dependencies$Sinstall$Slib$SlibCgl* $(PYPI_ARCHIVE_TEMP_DIR)$Sortools$Sortools$S.libs diff --git a/makefiles/Makefile.third_party.unix.mk b/makefiles/Makefile.third_party.unix.mk index 6451d47e43..d40c0ef0eb 100644 --- a/makefiles/Makefile.third_party.unix.mk +++ b/makefiles/Makefile.third_party.unix.mk @@ -19,7 +19,7 @@ UNIX_SWIG_BINARY ?= swig PROTOC_BINARY := $(shell $(WHICH) ${UNIX_PROTOC_BINARY}) # Tags of dependencies to checkout. -GFLAGS_TAG = 2.2.1 +GFLAGS_TAG = 2.2.2 GLOG_TAG = 0.3.5 PROTOBUF_TAG = 3.6.1 ABSL_TAG = master diff --git a/makefiles/Makefile.third_party.win.mk b/makefiles/Makefile.third_party.win.mk index 9acb810776..4b07287ff2 100644 --- a/makefiles/Makefile.third_party.win.mk +++ b/makefiles/Makefile.third_party.win.mk @@ -35,7 +35,7 @@ SWIG_BINARY = $(WINDOWS_SWIG_BINARY) # tags of dependencies to checkout. ZLIB_TAG = 1.2.11 ZLIB_ARCHIVE_TAG = 1211 -GFLAGS_TAG = 2.2.1 +GFLAGS_TAG = 2.2.2 GLOG_TAG = 0.3.5 PROTOBUF_TAG = 3.6.1 ABSL_TAG = master diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index aef7701b0f..bf09f84ee3 100644 --- a/makefiles/Makefile.unix.mk +++ b/makefiles/Makefile.unix.mk @@ -189,8 +189,8 @@ ifeq ($(PLATFORM),MACOSX) DYNAMIC_LD = clang++ -dynamiclib -undefined dynamic_lookup \ -Wl,-search_paths_first \ -Wl,-headerpad_max_install_names \ - -current_version $(OR_TOOLS_SHORT_VERSION) \ - -compatibility_version $(OR_TOOLS_SHORT_VERSION) + -current_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) \ + -compatibility_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) DYNAMIC_LDFLAGS = -Wl,-rpath,\"@loader_path\" ZLIB_LNK = -lz @@ -228,8 +228,8 @@ ifeq ($(PLATFORM),MACOSX) LINK_CMD = clang++ -dynamiclib \ -Wl,-search_paths_first \ -Wl,-headerpad_max_install_names \ - -current_version $(OR_TOOLS_SHORT_VERSION) \ - -compatibility_version $(OR_TOOLS_SHORT_VERSION) + -current_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) \ + -compatibility_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) PRE_LIB = -L$(OR_ROOT)lib -l POST_LIB = LINK_FLAGS = \ diff --git a/ortools/base/integral_types.h b/ortools/base/integral_types.h index c8d4dca9d4..dd0081221b 100644 --- a/ortools/base/integral_types.h +++ b/ortools/base/integral_types.h @@ -22,8 +22,8 @@ #define ARCH_K8 #elif defined(__APPLE__) && defined(__GNUC__) #define ARCH_K8 // We only support 64 bit on Mac OS X. -#elif defined(__GNUC__) && defined(__LP64__) && !defined(__aarch64__) -#define ARCH_K8 // Linux x64 +#elif defined(__GNUC__) && defined(__LP64__) && !defined(__aarch64__) +#define ARCH_K8 // Linux x86_64 #endif #ifndef SWIG @@ -65,7 +65,7 @@ typedef signed int char32; // unsigned int, but our 64-bit architectures use the LP64 model // (http://www.opengroup.org/public/tech/aspen/lp64_wp.htm), hence // their ints are only 32 bits. We want to use the same fundamental -// type on all archs if possible to preserve *printf() compatability. +// type on all archs if possible to preserve *printf() compatibility. typedef unsigned long uword_t; // NOLINT // A signed natural machine word. In general you want to use "int" @@ -81,22 +81,11 @@ typedef long sword_t; // NOLINT #undef GG_LL_FORMAT #ifdef COMPILER_MSVC /* if Visual C++ */ - -// VC++ long long suffixes #define GG_LONGLONG(x) x##I64 #define GG_ULONGLONG(x) x##UI64 - -// Length modifier in printf format std::string for int64's (e.g. within %d) -#define GG_LL_FORMAT "I64" // As in printf("%I64d", ...) -#define GG_LL_FORMAT_W L"I64" - #else /* not Visual C++ */ - #define GG_LONGLONG(x) x##LL #define GG_ULONGLONG(x) x##ULL -#define GG_LL_FORMAT "ll" // As in "%lld". Note that "q" is poor form also. -#define GG_LL_FORMAT_W L"ll" - #endif // COMPILER_MSVC static const uint8 kuint8max = static_cast(0xFF); diff --git a/ortools/com/google/ortools/sat/CpModel.java b/ortools/com/google/ortools/sat/CpModel.java index 474d1c283e..fc7cbf974e 100644 --- a/ortools/com/google/ortools/sat/CpModel.java +++ b/ortools/com/google/ortools/sat/CpModel.java @@ -717,9 +717,8 @@ public class CpModel { * @return an instance of the Constraint class * @throws MismatchedArrayLengths if times, demands, or actives have different length */ - public Constraint addReservoirConstraintWithActive( - IntVar[] times, long[] demands, IntVar[] actives, long minLevel, long maxLevel) - throws MismatchedArrayLengths { + public Constraint addReservoirConstraintWithActive(IntVar[] times, long[] demands, + IntVar[] actives, long minLevel, long maxLevel) throws MismatchedArrayLengths { if (times.length != demands.length) { throw new MismatchedArrayLengths("addReservoirConstraint", "times", "demands"); } @@ -748,9 +747,8 @@ public class CpModel { * * @see #addReservoirConstraintWithActive(IntVar[], long[], actives, long, long) Reservoir */ - public Constraint addReservoirConstraintWithActive( - IntVar[] times, int[] demands, IntVar[] actives, long minLevel, long maxLevel) - throws MismatchedArrayLengths { + public Constraint addReservoirConstraintWithActive(IntVar[] times, int[] demands, + IntVar[] actives, long minLevel, long maxLevel) throws MismatchedArrayLengths { return addReservoirConstraintWithActive( times, toLongArray(demands), actives, minLevel, maxLevel); } diff --git a/ortools/constraint_solver/alldiff_cst.cc b/ortools/constraint_solver/alldiff_cst.cc index ffcac29b1d..1eec9ae4c8 100644 --- a/ortools/constraint_solver/alldiff_cst.cc +++ b/ortools/constraint_solver/alldiff_cst.cc @@ -572,7 +572,7 @@ class AllDifferentExcept : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("AllDifferentExcept([%s], %" GG_LL_FORMAT "d", + return absl::StrFormat("AllDifferentExcept([%s], %d", JoinDebugStringPtr(vars_, ", "), escape_value_); } @@ -663,10 +663,10 @@ class NullIntersectArrayExcept : public Constraint { } std::string DebugString() const override { - return absl::StrFormat( - "NullIntersectArray([%s], [%s], escape = %" GG_LL_FORMAT "d", - JoinDebugStringPtr(first_vars_, ", "), - JoinDebugStringPtr(second_vars_, ", "), escape_value_); + return absl::StrFormat("NullIntersectArray([%s], [%s], escape = %d", + JoinDebugStringPtr(first_vars_, ", "), + JoinDebugStringPtr(second_vars_, ", "), + escape_value_); } void Accept(ModelVisitor* const visitor) const override { diff --git a/ortools/constraint_solver/assignment.cc b/ortools/constraint_solver/assignment.cc index e1fad8ebf1..200b930572 100644 --- a/ortools/constraint_solver/assignment.cc +++ b/ortools/constraint_solver/assignment.cc @@ -96,10 +96,9 @@ void IntVarElement::WriteToProto( std::string IntVarElement::DebugString() const { if (Activated()) { if (min_ == max_) { - return absl::StrFormat("(%" GG_LL_FORMAT "d)", min_); + return absl::StrFormat("(%d)", min_); } else { - return absl::StrFormat("(%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d)", min_, - max_); + return absl::StrFormat("(%d..%d)", min_, max_); } } else { return "(...)"; @@ -201,19 +200,17 @@ void IntervalVarElement::WriteToProto( std::string IntervalVarElement::DebugString() const { if (Activated()) { std::string out; - absl::StrAppendFormat(&out, "(start = %" GG_LL_FORMAT "d", start_min_); + absl::StrAppendFormat(&out, "(start = %d", start_min_); if (start_max_ != start_min_) { - absl::StrAppendFormat(&out, "..%" GG_LL_FORMAT "d", start_max_); + absl::StrAppendFormat(&out, "..%d", start_max_); } - absl::StrAppendFormat(&out, ", duration = %" GG_LL_FORMAT "d", - duration_min_); + absl::StrAppendFormat(&out, ", duration = %d", duration_min_); if (duration_max_ != duration_min_) { - absl::StrAppendFormat(&out, "..%" GG_LL_FORMAT "d", duration_max_); + absl::StrAppendFormat(&out, "..%d", duration_max_); } - absl::StrAppendFormat(&out, ", status = %" GG_LL_FORMAT "d", - performed_min_); + absl::StrAppendFormat(&out, ", status = %d", performed_min_); if (performed_max_ != performed_min_) { - absl::StrAppendFormat(&out, "..%" GG_LL_FORMAT "d", performed_max_); + absl::StrAppendFormat(&out, "..%d", performed_max_); } out.append(")"); return out; diff --git a/ortools/constraint_solver/constraint_solver.cc b/ortools/constraint_solver/constraint_solver.cc index 23b9cb3920..2997573b63 100644 --- a/ortools/constraint_solver/constraint_solver.cc +++ b/ortools/constraint_solver/constraint_solver.cc @@ -1462,11 +1462,8 @@ std::string Solver::DebugString() const { } absl::StrAppendFormat( &out, - ", branches = %" GG_LL_FORMAT "d, fails = %" GG_LL_FORMAT - "d, decisions = %" GG_LL_FORMAT "d, delayed demon runs = %" GG_LL_FORMAT - "d, var demon runs = %" GG_LL_FORMAT - "d, normal demon runs = %" GG_LL_FORMAT "d, Run time = %" GG_LL_FORMAT - "d ms)", + ", branches = %d, fails = %d, decisions = %d, delayed demon runs = %d, " + "var demon runs = %d, normal demon runs = %d, Run time = %d ms)", branches_, fails_, decisions_, demon_runs_[DELAYED_PRIORITY], demon_runs_[VAR_PRIORITY], demon_runs_[NORMAL_PRIORITY], wall_time()); return out; diff --git a/ortools/constraint_solver/constraint_solver.h b/ortools/constraint_solver/constraint_solver.h index 5f56f7dc73..40b2a9b8f5 100644 --- a/ortools/constraint_solver/constraint_solver.h +++ b/ortools/constraint_solver/constraint_solver.h @@ -2237,7 +2237,6 @@ class Solver { // ----- Search Log ----- // The SearchMonitors below will display a periodic search log // on LOG(INFO) every branch_period branches explored. - SearchMonitor* MakeSearchLog(int branch_period); // At each solution, this monitor also display the var value. @@ -2255,7 +2254,6 @@ class Solver { // OptimizeVar Search Logs // At each solution, this monitor will also display the 'opt_var' value. - SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var); // Creates a search monitor that will also print the result of the @@ -2263,6 +2261,23 @@ class Solver { SearchMonitor* MakeSearchLog(int branch_period, OptimizeVar* const opt_var, std::function display_callback); + // Creates a search monitor from logging parameters. + struct SearchLogParameters { + // SearchMonitors will display a periodic search log every branch_period + // branches explored. + int branch_period = 1; + // SearchMonitors will display values of objective or variable (both cannot + // be used together). + OptimizeVar* objective = nullptr; + IntVar* variable = nullptr; + // Objective or var values are unscaled by this factor when displayed. + double scaling_factor = 1.0; + // SearchMonitors will display the result of display_callback at each new + // solution found. + std::function display_callback; + }; + SearchMonitor* MakeSearchLog(SearchLogParameters parameters); + // ----- Search Trace ------ // Creates a search monitor that will trace precisely the behavior of the diff --git a/ortools/constraint_solver/constraint_solveri.h b/ortools/constraint_solver/constraint_solveri.h index 28fadcd62c..2a83e8ab06 100644 --- a/ortools/constraint_solver/constraint_solveri.h +++ b/ortools/constraint_solver/constraint_solveri.h @@ -1763,6 +1763,7 @@ class SymmetryBreaker : public DecisionVisitor { class SearchLog : public SearchMonitor { public: SearchLog(Solver* const s, OptimizeVar* const obj, IntVar* const var, + double scaling_factor, std::function display_callback, int period); ~SearchLog() override; void EnterSearch() override; @@ -1789,6 +1790,7 @@ class SearchLog : public SearchMonitor { std::unique_ptr timer_; IntVar* const var_; OptimizeVar* const obj_; + const double scaling_factor_; std::function display_callback_; int nsol_; int64 tick_; diff --git a/ortools/constraint_solver/count_cst.cc b/ortools/constraint_solver/count_cst.cc index f95574dc1b..156ed6aaef 100644 --- a/ortools/constraint_solver/count_cst.cc +++ b/ortools/constraint_solver/count_cst.cc @@ -126,7 +126,7 @@ class AtMost : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("AtMost(%s, %" GG_LL_FORMAT "d, %" GG_LL_FORMAT "d)", + return absl::StrFormat("AtMost(%s, %d, %d)", JoinDebugStringPtr(vars_, ", "), value_, max_count_); } diff --git a/ortools/constraint_solver/demon_profiler.cc b/ortools/constraint_solver/demon_profiler.cc index 4f2a79fc93..1d443f10a6 100644 --- a/ortools/constraint_solver/demon_profiler.cc +++ b/ortools/constraint_solver/demon_profiler.cc @@ -256,14 +256,12 @@ class DemonProfiler : public PropagationMonitor { // Exports collected data as human-readable text. void PrintOverview(Solver* const solver, const std::string& filename) { const char* const kConstraintFormat = - " - Constraint: %s\n failures=%" GG_LL_FORMAT - "d, initial propagation runtime=%" GG_LL_FORMAT - "d us, demons=%d, demon invocations=%" GG_LL_FORMAT - "d, total demon runtime=%" GG_LL_FORMAT "d us\n"; + " - Constraint: %s\n failures=%d, initial propagation " + "runtime=%d us, demons=%d, demon invocations=%d, total demon " + "runtime=%d us\n"; const char* const kDemonFormat = - " --- Demon: %s\n invocations=%" GG_LL_FORMAT - "d, failures=%" GG_LL_FORMAT "d, total runtime=%" GG_LL_FORMAT - "d us, [average=%.2lf, median=%.2lf, stddev=%.2lf]\n"; + " --- Demon: %s\n invocations=%d, failures=%d, total " + "runtime=%d us, [average=%.2lf, median=%.2lf, stddev=%.2lf]\n"; File* file; const std::string model = absl::StrFormat("Model %s:\n", solver->model_name()); diff --git a/ortools/constraint_solver/element.cc b/ortools/constraint_solver/element.cc index 266bb8d1a9..33ed125a73 100644 --- a/ortools/constraint_solver/element.cc +++ b/ortools/constraint_solver/element.cc @@ -1323,8 +1323,7 @@ std::string StringifyEvaluatorBare(const Solver::Int64ToIntVar& evaluator, if (i != range_start) { out += ", "; } - out += absl::StrFormat("%" GG_LL_FORMAT "d -> %s", i, - evaluator(i)->DebugString()); + out += absl::StrFormat("%d -> %s", i, evaluator(i)->DebugString()); } return out; } @@ -1390,8 +1389,8 @@ std::string IntExprArrayElementCt::DebugString() const { int64 size = vars_.size(); if (size > 10) { return absl::StrFormat( - "IntExprArrayElement(var array of size %" GG_LL_FORMAT "d, %s) == %s", - size, index_->DebugString(), target_var_->DebugString()); + "IntExprArrayElement(var array of size %d, %s) == %s", size, + index_->DebugString(), target_var_->DebugString()); } else { return absl::StrFormat("IntExprArrayElement([%s], %s) == %s", JoinDebugStringPtr(vars_, ", "), @@ -1458,9 +1457,9 @@ class IntExprArrayElementCstCt : public Constraint { } std::string DebugString() const override { - return absl::StrFormat( - "IntExprArrayElement([%s], %s) == %" GG_LL_FORMAT "d", - JoinDebugStringPtr(vars_, ", "), index_->DebugString(), target_); + return absl::StrFormat("IntExprArrayElement([%s], %s) == %d", + JoinDebugStringPtr(vars_, ", "), + index_->DebugString(), target_); } void Accept(ModelVisitor* const visitor) const override { @@ -1551,7 +1550,7 @@ class IntExprIndexOfCt : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("IntExprIndexOf([%s], %s) == %" GG_LL_FORMAT "d", + return absl::StrFormat("IntExprIndexOf([%s], %s) == %d", JoinDebugStringPtr(vars_, ", "), index_->DebugString(), target_); } @@ -1752,8 +1751,8 @@ IntExpr* Solver::MakeIndexExpression(const std::vector& vars, if (cache != nullptr) { return cache->Var(); } else { - const std::string name = absl::StrFormat("Index(%s, %" GG_LL_FORMAT "d)", - JoinNamePtr(vars, ", "), value); + const std::string name = + absl::StrFormat("Index(%s, %d)", JoinNamePtr(vars, ", "), value); IntVar* const index = MakeIntVar(0, vars.size() - 1, name); AddConstraint(MakeIndexOfConstraint(vars, index, value)); model_cache_->InsertVarArrayConstantExpression( diff --git a/ortools/constraint_solver/expr_array.cc b/ortools/constraint_solver/expr_array.cc index fc9b6f80d0..26c3b411e7 100644 --- a/ortools/constraint_solver/expr_array.cc +++ b/ortools/constraint_solver/expr_array.cc @@ -1985,7 +1985,7 @@ class BooleanScalProdLessConstant : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("BooleanScalProd([%s], [%s]) <= %" GG_LL_FORMAT "d)", + return absl::StrFormat("BooleanScalProd([%s], [%s]) <= %d)", JoinDebugStringPtr(vars_, ", "), absl::StrJoin(coefs_, ", "), upper_bound_); } @@ -2351,10 +2351,9 @@ class PositiveBooleanScalProdEqCst : public Constraint { } std::string DebugString() const override { - return absl::StrFormat( - "PositiveBooleanScalProd([%s], [%s]) == %" GG_LL_FORMAT "d", - JoinDebugStringPtr(vars_, ", "), absl::StrJoin(coefs_, ", "), - constant_); + return absl::StrFormat("PositiveBooleanScalProd([%s], [%s]) == %d", + JoinDebugStringPtr(vars_, ", "), + absl::StrJoin(coefs_, ", "), constant_); } void Accept(ModelVisitor* const visitor) const override { diff --git a/ortools/constraint_solver/expr_cst.cc b/ortools/constraint_solver/expr_cst.cc index aef0716391..5ec779c28c 100644 --- a/ortools/constraint_solver/expr_cst.cc +++ b/ortools/constraint_solver/expr_cst.cc @@ -77,8 +77,7 @@ void EqualityExprCst::Post() { void EqualityExprCst::InitialPropagate() { expr_->SetValue(value_); } std::string EqualityExprCst::DebugString() const { - return absl::StrFormat("(%s == %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s == %d)", expr_->DebugString(), value_); } } // namespace @@ -162,8 +161,7 @@ void GreaterEqExprCst::InitialPropagate() { } std::string GreaterEqExprCst::DebugString() const { - return absl::StrFormat("(%s >= %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s >= %d)", expr_->DebugString(), value_); } } // namespace @@ -260,8 +258,7 @@ void LessEqExprCst::InitialPropagate() { } std::string LessEqExprCst::DebugString() const { - return absl::StrFormat("(%s <= %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s <= %d)", expr_->DebugString(), value_); } } // namespace @@ -333,6 +330,8 @@ class DiffCst : public Constraint { } private: + bool HasLargeDomain(IntVar* var); + IntVar* const var_; int64 value_; Demon* demon_; @@ -342,7 +341,7 @@ DiffCst::DiffCst(Solver* const s, IntVar* const var, int64 value) : Constraint(s), var_(var), value_(value), demon_(nullptr) {} void DiffCst::InitialPropagate() { - if (var_->Size() >= 0xFFFFFF) { + if (HasLargeDomain(var_)) { demon_ = MakeConstraintDemon0(solver(), this, &DiffCst::BoundPropagate, "BoundPropagate"); var_->WhenRange(demon_); @@ -360,15 +359,18 @@ void DiffCst::BoundPropagate() { var_->SetMin(value_ + 1); } else if (var_max == value_) { var_->SetMax(value_ - 1); - } else if (var_->Size() <= 0xFFFFFF) { + } else if (!HasLargeDomain(var_)) { demon_->inhibit(solver()); var_->RemoveValue(value_); } } std::string DiffCst::DebugString() const { - return absl::StrFormat("(%s != %" GG_LL_FORMAT "d)", var_->DebugString(), - value_); + return absl::StrFormat("(%s != %d)", var_->DebugString(), value_); +} + +bool DiffCst::HasLargeDomain(IntVar* var) { + return CapSub(var->Max(), var->Min()) > 0xFFFFFF; } } // namespace @@ -434,9 +436,8 @@ class IsEqualCstCt : public CastConstraint { } } std::string DebugString() const override { - return absl::StrFormat("IsEqualCstCt(%s, %" GG_LL_FORMAT "d, %s)", - var_->DebugString(), cst_, - target_var_->DebugString()); + return absl::StrFormat("IsEqualCstCt(%s, %d, %s)", var_->DebugString(), + cst_, target_var_->DebugString()); } void Accept(ModelVisitor* const visitor) const override { @@ -474,8 +475,8 @@ IntVar* Solver::MakeIsEqualCstVar(IntExpr* const var, int64 value) { if (var->IsVar()) { return var->Var()->IsEqual(value); } else { - IntVar* const boolvar = MakeBoolVar(absl::StrFormat( - "Is(%s == %" GG_LL_FORMAT "d)", var->DebugString(), value)); + IntVar* const boolvar = + MakeBoolVar(absl::StrFormat("Is(%s == %d)", var->DebugString(), value)); AddConstraint(MakeIsEqualCstCt(var, value, boolvar)); return boolvar; } @@ -553,8 +554,7 @@ class IsDiffCstCt : public CastConstraint { } std::string DebugString() const override { - return absl::StrFormat("IsDiffCstCt(%s, %" GG_LL_FORMAT "d, %s)", - var_->DebugString(), cst_, + return absl::StrFormat("IsDiffCstCt(%s, %d, %s)", var_->DebugString(), cst_, target_var_->DebugString()); } @@ -652,7 +652,7 @@ class IsGreaterEqualCstCt : public CastConstraint { } } std::string DebugString() const override { - return absl::StrFormat("IsGreaterEqualCstCt(%s, %" GG_LL_FORMAT "d, %s)", + return absl::StrFormat("IsGreaterEqualCstCt(%s, %d, %s)", expr_->DebugString(), cst_, target_var_->DebugString()); } @@ -684,8 +684,8 @@ IntVar* Solver::MakeIsGreaterOrEqualCstVar(IntExpr* const var, int64 value) { if (var->IsVar()) { return var->Var()->IsGreaterOrEqual(value); } else { - IntVar* const boolvar = MakeBoolVar(absl::StrFormat( - "Is(%s >= %" GG_LL_FORMAT "d)", var->DebugString(), value)); + IntVar* const boolvar = + MakeBoolVar(absl::StrFormat("Is(%s >= %d)", var->DebugString(), value)); AddConstraint(MakeIsGreaterOrEqualCstCt(var, value, boolvar)); return boolvar; } @@ -752,9 +752,8 @@ class IsLessEqualCstCt : public CastConstraint { } std::string DebugString() const override { - return absl::StrFormat("IsLessEqualCstCt(%s, %" GG_LL_FORMAT "d, %s)", - expr_->DebugString(), cst_, - target_var_->DebugString()); + return absl::StrFormat("IsLessEqualCstCt(%s, %d, %s)", expr_->DebugString(), + cst_, target_var_->DebugString()); } void Accept(ModelVisitor* const visitor) const override { @@ -784,8 +783,8 @@ IntVar* Solver::MakeIsLessOrEqualCstVar(IntExpr* const var, int64 value) { if (var->IsVar()) { return var->Var()->IsLessOrEqual(value); } else { - IntVar* const boolvar = MakeBoolVar(absl::StrFormat( - "Is(%s <= %" GG_LL_FORMAT "d)", var->DebugString(), value)); + IntVar* const boolvar = + MakeBoolVar(absl::StrFormat("Is(%s <= %d)", var->DebugString(), value)); AddConstraint(MakeIsLessOrEqualCstCt(var, value, boolvar)); return boolvar; } @@ -842,9 +841,8 @@ class BetweenCt : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("BetweenCt(%s, %" GG_LL_FORMAT "d, %" GG_LL_FORMAT - "d)", - expr_->DebugString(), min_, max_); + return absl::StrFormat("BetweenCt(%s, %d, %d)", expr_->DebugString(), min_, + max_); } void Accept(ModelVisitor* const visitor) const override { @@ -891,9 +889,8 @@ class NotBetweenCt : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("NotBetweenCt(%s, %" GG_LL_FORMAT "d, %" GG_LL_FORMAT - "d)", - expr_->DebugString(), min_, max_); + return absl::StrFormat("NotBetweenCt(%s, %d, %d)", expr_->DebugString(), + min_, max_); } void Accept(ModelVisitor* const visitor) const override { @@ -1024,9 +1021,8 @@ class IsBetweenCt : public Constraint { } std::string DebugString() const override { - return absl::StrFormat( - "IsBetweenCt(%s, %" GG_LL_FORMAT "d, %" GG_LL_FORMAT "d, %s)", - expr_->DebugString(), min_, max_, boolvar_->DebugString()); + return absl::StrFormat("IsBetweenCt(%s, %d, %d, %s)", expr_->DebugString(), + min_, max_, boolvar_->DebugString()); } void Accept(ModelVisitor* const visitor) const override { diff --git a/ortools/constraint_solver/expressions.cc b/ortools/constraint_solver/expressions.cc index a84507462e..f7c7589712 100644 --- a/ortools/constraint_solver/expressions.cc +++ b/ortools/constraint_solver/expressions.cc @@ -451,7 +451,7 @@ class DomainIntVar : public IntVar { ? variable_->name() : variable_->DebugString(); const std::string bname = - absl::StrFormat("Watch<%s == %" GG_LL_FORMAT "d>", vname, value); + absl::StrFormat("Watch<%s == %d>", vname, value); IntVar* const boolvar = solver()->MakeBoolVar(bname); watchers_.UnsafeRevInsert(value, boolvar); if (posted_.Switched()) { @@ -685,7 +685,7 @@ class DomainIntVar : public IntVar { ? variable_->name() : variable_->DebugString(); const std::string bname = - absl::StrFormat("Watch<%s == %" GG_LL_FORMAT "d>", vname, value); + absl::StrFormat("Watch<%s == %d>", vname, value); IntVar* const boolvar = solver()->MakeBoolVar(bname); RevInsert(index, boolvar); if (posted_.Switched()) { @@ -940,7 +940,7 @@ class DomainIntVar : public IntVar { ? variable_->name() : variable_->DebugString(); const std::string bname = - absl::StrFormat("Watch<%s >= %" GG_LL_FORMAT "d>", vname, value); + absl::StrFormat("Watch<%s >= %d>", vname, value); IntVar* const boolvar = solver()->MakeBoolVar(bname); watchers_.UnsafeRevInsert(value, boolvar); if (posted_.Switched()) { @@ -1180,7 +1180,7 @@ class DomainIntVar : public IntVar { ? variable_->name() : variable_->DebugString(); const std::string bname = - absl::StrFormat("Watch<%s >= %" GG_LL_FORMAT "d>", vname, value); + absl::StrFormat("Watch<%s >= %d>", vname, value); IntVar* const boolvar = solver()->MakeBoolVar(bname); RevInsert(value - offset_, boolvar); if (posted_.Switched()) { @@ -1725,9 +1725,7 @@ class SimpleBitSet : public DomainIntVar::BitSet { std::string DebugString() const override { std::string out; - absl::StrAppendFormat( - &out, "SimpleBitSet(%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d : ", omin_, - omax_); + absl::StrAppendFormat(&out, "SimpleBitSet(%d..%d : ", omin_, omax_); for (int i = 0; i < bsize_; ++i) { absl::StrAppendFormat(&out, "%x", bits_[i]); } @@ -1763,15 +1761,11 @@ class SimpleBitSet : public DomainIntVar::BitSet { } else { if (cumul) { if (v == start_cumul + 1) { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d ", start_cumul); + absl::StrAppendFormat(&out, "%d ", start_cumul); } else if (v == start_cumul + 2) { - absl::StrAppendFormat(&out, - "%" GG_LL_FORMAT "d %" GG_LL_FORMAT "d ", - start_cumul, v - 1); + absl::StrAppendFormat(&out, "%d %d ", start_cumul, v - 1); } else { - absl::StrAppendFormat(&out, - "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d ", - start_cumul, v - 1); + absl::StrAppendFormat(&out, "%d..%d ", start_cumul, v - 1); } cumul = false; } @@ -1779,17 +1773,15 @@ class SimpleBitSet : public DomainIntVar::BitSet { } if (cumul) { if (max == start_cumul + 1) { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d %" GG_LL_FORMAT "d", - start_cumul, max); + absl::StrAppendFormat(&out, "%d %d", start_cumul, max); } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d", - start_cumul, max); + absl::StrAppendFormat(&out, "%d..%d", start_cumul, max); } } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", max); + absl::StrAppendFormat(&out, "%d", max); } } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", min); + absl::StrAppendFormat(&out, "%d", min); } return out; } @@ -1943,9 +1935,7 @@ class SmallBitSet : public DomainIntVar::BitSet { uint64 Size() const override { return size_.Value(); } std::string DebugString() const override { - return absl::StrFormat("SmallBitSet(%" GG_LL_FORMAT "d..%" GG_LL_FORMAT - "d : %llx)", - omin_, omax_, bits_); + return absl::StrFormat("SmallBitSet(%d..%d : %llx)", omin_, omax_, bits_); } void DelayRemoveValue(int64 val) override { @@ -1980,15 +1970,11 @@ class SmallBitSet : public DomainIntVar::BitSet { } else { if (cumul) { if (v == start_cumul + 1) { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d ", start_cumul); + absl::StrAppendFormat(&out, "%d ", start_cumul); } else if (v == start_cumul + 2) { - absl::StrAppendFormat(&out, - "%" GG_LL_FORMAT "d %" GG_LL_FORMAT "d ", - start_cumul, v - 1); + absl::StrAppendFormat(&out, "%d %d ", start_cumul, v - 1); } else { - absl::StrAppendFormat(&out, - "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d ", - start_cumul, v - 1); + absl::StrAppendFormat(&out, "%d..%d ", start_cumul, v - 1); } cumul = false; } @@ -1996,17 +1982,15 @@ class SmallBitSet : public DomainIntVar::BitSet { } if (cumul) { if (max == start_cumul + 1) { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d %" GG_LL_FORMAT "d", - start_cumul, max); + absl::StrAppendFormat(&out, "%d %d", start_cumul, max); } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d", - start_cumul, max); + absl::StrAppendFormat(&out, "%d..%d", start_cumul, max); } } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", max); + absl::StrAppendFormat(&out, "%d", max); } } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", min); + absl::StrAppendFormat(&out, "%d", min); } return out; } @@ -2493,12 +2477,11 @@ std::string DomainIntVar::DebugString() const { out = "DomainIntVar("; } if (min_.Value() == max_.Value()) { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", min_.Value()); + absl::StrAppendFormat(&out, "%d", min_.Value()); } else if (bits_ != nullptr) { out.append(bits_->pretty_DebugString(min_.Value(), max_.Value())); } else { - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d", - min_.Value(), max_.Value()); + absl::StrAppendFormat(&out, "%d..%d", min_.Value(), max_.Value()); } out += ")"; return out; @@ -2624,9 +2607,9 @@ class IntConst : public IntVar { std::string out; if (solver()->HasName(this)) { const std::string& var_name = name(); - absl::StrAppendFormat(&out, "%s(%" GG_LL_FORMAT "d)", var_name, value_); + absl::StrAppendFormat(&out, "%s(%d)", var_name, value_); } else { - absl::StrAppendFormat(&out, "IntConst(%" GG_LL_FORMAT "d)", value_); + absl::StrAppendFormat(&out, "IntConst(%d)", value_); } return out; } @@ -2690,11 +2673,9 @@ class PlusCstVar : public IntVar { std::string DebugString() const override { if (HasName()) { - return absl::StrFormat("%s(%s + %" GG_LL_FORMAT "d)", name(), - var_->DebugString(), cst_); + return absl::StrFormat("%s(%s + %d)", name(), var_->DebugString(), cst_); } else { - return absl::StrFormat("(%s + %" GG_LL_FORMAT "d)", var_->DebugString(), - cst_); + return absl::StrFormat("(%s + %d)", var_->DebugString(), cst_); } } @@ -3005,8 +2986,7 @@ std::string SubCstIntVar::DebugString() const { if (cst_ == 1 && var_->VarType() == BOOLEAN_VAR) { return absl::StrFormat("Not(%s)", var_->DebugString()); } else { - return absl::StrFormat("(%" GG_LL_FORMAT "d - %s)", cst_, - var_->DebugString()); + return absl::StrFormat("(%d - %s)", cst_, var_->DebugString()); } } @@ -3016,7 +2996,7 @@ std::string SubCstIntVar::name() const { } else if (cst_ == 1 && var_->VarType() == BOOLEAN_VAR) { return absl::StrFormat("Not(%s)", var_->name()); } else { - return absl::StrFormat("(%" GG_LL_FORMAT "d - %s)", cst_, var_->name()); + return absl::StrFormat("(%d - %s)", cst_, var_->name()); } } @@ -3182,8 +3162,7 @@ class TimesCstIntVar : public IntVar { } std::string DebugString() const override { - return absl::StrFormat("(%s * %" GG_LL_FORMAT "d)", var_->DebugString(), - cst_); + return absl::StrFormat("(%s * %d)", var_->DebugString(), cst_); } int VarType() const override { return VAR_TIMES_CST; } @@ -3745,11 +3724,10 @@ class PlusIntCstExpr : public BaseIntExpr { void SetMax(int64 m) override { expr_->SetMax(CapSub(m, value_)); } bool Bound() const override { return (expr_->Bound()); } std::string name() const override { - return absl::StrFormat("(%s + %" GG_LL_FORMAT "d)", expr_->name(), value_); + return absl::StrFormat("(%s + %d)", expr_->name(), value_); } std::string DebugString() const override { - return absl::StrFormat("(%s + %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s + %d)", expr_->DebugString(), value_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } IntVar* CastToVar() override; @@ -3919,11 +3897,10 @@ class SubIntCstExpr : public BaseIntExpr { void SetMax(int64 m) override { expr_->SetMin(CapSub(value_, m)); } bool Bound() const override { return (expr_->Bound()); } std::string name() const override { - return absl::StrFormat("(%" GG_LL_FORMAT "d - %s)", value_, expr_->name()); + return absl::StrFormat("(%d - %s)", value_, expr_->name()); } std::string DebugString() const override { - return absl::StrFormat("(%" GG_LL_FORMAT "d - %s)", value_, - expr_->DebugString()); + return absl::StrFormat("(%d - %s)", value_, expr_->DebugString()); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } IntVar* CastToVar() override; @@ -4002,12 +3979,11 @@ class TimesIntCstExpr : public BaseIntExpr { bool Bound() const override { return (expr_->Bound()); } std::string name() const override { - return absl::StrFormat("(%s * %" GG_LL_FORMAT "d)", expr_->name(), value_); + return absl::StrFormat("(%s * %d)", expr_->name(), value_); } std::string DebugString() const override { - return absl::StrFormat("(%s * %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s * %d)", expr_->DebugString(), value_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -4738,13 +4714,11 @@ class DivPosIntCstExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat("(%s div %" GG_LL_FORMAT "d)", expr_->name(), - value_); + return absl::StrFormat("(%s div %d)", expr_->name(), value_); } std::string DebugString() const override { - return absl::StrFormat("(%s div %" GG_LL_FORMAT "d)", expr_->DebugString(), - value_); + return absl::StrFormat("(%s div %d)", expr_->DebugString(), value_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -5387,13 +5361,11 @@ class BasePower : public BaseIntExpr { void WhenRange(Demon* d) override { expr_->WhenRange(d); } std::string name() const override { - return absl::StrFormat("IntPower(%s, %" GG_LL_FORMAT "d)", expr_->name(), - pow_); + return absl::StrFormat("IntPower(%s, %d)", expr_->name(), pow_); } std::string DebugString() const override { - return absl::StrFormat("IntPower(%s, %" GG_LL_FORMAT "d)", - expr_->DebugString(), pow_); + return absl::StrFormat("IntPower(%s, %d)", expr_->DebugString(), pow_); } void Accept(ModelVisitor* const visitor) const override { @@ -5660,13 +5632,12 @@ class MinCstIntExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat("MinCstIntExpr(%s, %" GG_LL_FORMAT "d)", - expr_->name(), value_); + return absl::StrFormat("MinCstIntExpr(%s, %d)", expr_->name(), value_); } std::string DebugString() const override { - return absl::StrFormat("MinCstIntExpr(%s, %" GG_LL_FORMAT "d)", - expr_->DebugString(), value_); + return absl::StrFormat("MinCstIntExpr(%s, %d)", expr_->DebugString(), + value_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -5770,13 +5741,12 @@ class MaxCstIntExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat("MaxCstIntExpr(%s, %" GG_LL_FORMAT "d)", - expr_->name(), value_); + return absl::StrFormat("MaxCstIntExpr(%s, %d)", expr_->name(), value_); } std::string DebugString() const override { - return absl::StrFormat("MaxCstIntExpr(%s, %" GG_LL_FORMAT "d)", - expr_->DebugString(), value_); + return absl::StrFormat("MaxCstIntExpr(%s, %d)", expr_->DebugString(), + value_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -5884,15 +5854,13 @@ class SimpleConvexPiecewiseExpr : public BaseIntExpr { std::string name() const override { return absl::StrFormat( - "ConvexPiecewiseExpr(%s, ec = %" GG_LL_FORMAT "d, ed = %" GG_LL_FORMAT - "d, ld = %" GG_LL_FORMAT "d, lc = %" GG_LL_FORMAT "d)", + "ConvexPiecewiseExpr(%s, ec = %d, ed = %d, ld = %d, lc = %d)", expr_->name(), early_cost_, early_date_, late_date_, late_cost_); } std::string DebugString() const override { return absl::StrFormat( - "ConvexPiecewiseExpr(%s, ec = %" GG_LL_FORMAT "d, ed = %" GG_LL_FORMAT - "d, ld = %" GG_LL_FORMAT "d, lc = %" GG_LL_FORMAT "d)", + "ConvexPiecewiseExpr(%s, ec = %d, ed = %d, ld = %d, lc = %d)", expr_->DebugString(), early_cost_, early_date_, late_date_, late_cost_); } @@ -5969,14 +5937,12 @@ class SemiContinuousExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat("SemiContinuous(%s, fixed_charge = %" GG_LL_FORMAT - "d, step = %" GG_LL_FORMAT "d)", + return absl::StrFormat("SemiContinuous(%s, fixed_charge = %d, step = %d)", expr_->name(), fixed_charge_, step_); } std::string DebugString() const override { - return absl::StrFormat("SemiContinuous(%s, fixed_charge = %" GG_LL_FORMAT - "d, step = %" GG_LL_FORMAT "d)", + return absl::StrFormat("SemiContinuous(%s, fixed_charge = %d, step = %d)", expr_->DebugString(), fixed_charge_, step_); } @@ -6040,15 +6006,13 @@ class SemiContinuousStepOneExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat( - "SemiContinuousStepOne(%s, fixed_charge = %" GG_LL_FORMAT "d)", - expr_->name(), fixed_charge_); + return absl::StrFormat("SemiContinuousStepOne(%s, fixed_charge = %d)", + expr_->name(), fixed_charge_); } std::string DebugString() const override { - return absl::StrFormat( - "SemiContinuousStepOne(%s, fixed_charge = %" GG_LL_FORMAT "d)", - expr_->DebugString(), fixed_charge_); + return absl::StrFormat("SemiContinuousStepOne(%s, fixed_charge = %d)", + expr_->DebugString(), fixed_charge_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -6108,15 +6072,13 @@ class SemiContinuousStepZeroExpr : public BaseIntExpr { } std::string name() const override { - return absl::StrFormat( - "SemiContinuousStepZero(%s, fixed_charge = %" GG_LL_FORMAT "d)", - expr_->name(), fixed_charge_); + return absl::StrFormat("SemiContinuousStepZero(%s, fixed_charge = %d)", + expr_->name(), fixed_charge_); } std::string DebugString() const override { - return absl::StrFormat( - "SemiContinuousStepZero(%s, fixed_charge = %" GG_LL_FORMAT "d)", - expr_->DebugString(), fixed_charge_); + return absl::StrFormat("SemiContinuousStepZero(%s, fixed_charge = %d)", + expr_->DebugString(), fixed_charge_); } void WhenRange(Demon* d) override { expr_->WhenRange(d); } @@ -6263,7 +6225,7 @@ class ExprWithEscapeValue : public BaseIntExpr { } std::string DebugString() const override { - return absl::StrFormat("ConditionExpr(%s, %s, %" GG_LL_FORMAT "d)", + return absl::StrFormat("ConditionExpr(%s, %s, %d)", condition_->DebugString(), expression_->DebugString(), unperformed_value_); } diff --git a/ortools/constraint_solver/interval.cc b/ortools/constraint_solver/interval.cc index c47f34948e..f2467aa081 100644 --- a/ortools/constraint_solver/interval.cc +++ b/ortools/constraint_solver/interval.cc @@ -605,7 +605,7 @@ class RangeVar : public IntExpr { std::string DebugString() const override { std::string out = absl::StrCat(min_.Value()); if (!Bound()) { - absl::StrAppendFormat(&out, " .. %" GG_LL_FORMAT "d", max_.Value()); + absl::StrAppendFormat(&out, " .. %d", max_.Value()); } return out; } @@ -963,9 +963,9 @@ std::string FixedDurationIntervalVar::DebugString() const { } else { out = "IntervalVar(start = "; } - absl::StrAppendFormat( - &out, "%s, duration = %" GG_LL_FORMAT "d, performed = %s)", - start_.DebugString(), duration_, performed_.DebugString()); + absl::StrAppendFormat(&out, "%s, duration = %d, performed = %s)", + start_.DebugString(), duration_, + performed_.DebugString()); return out; } } @@ -1157,8 +1157,7 @@ std::string FixedDurationPerformedIntervalVar::DebugString() const { } else { out = "IntervalVar(start = "; } - absl::StrAppendFormat(&out, - "%s, duration = %" GG_LL_FORMAT "d, performed = true)", + absl::StrAppendFormat(&out, "%s, duration = %d, performed = true)", start_.DebugString(), duration_); return out; } @@ -1315,13 +1314,12 @@ std::string StartVarPerformedIntervalVar::DebugString() const { } else { out = "IntervalVar(start = "; } - absl::StrAppendFormat(&out, "%" GG_LL_FORMAT "d", start_var_->Min()); + absl::StrAppendFormat(&out, "%d", start_var_->Min()); if (!start_var_->Bound()) { - absl::StrAppendFormat(&out, " .. %" GG_LL_FORMAT "d", start_var_->Max()); + absl::StrAppendFormat(&out, " .. %d", start_var_->Max()); } - absl::StrAppendFormat( - &out, ", duration = %" GG_LL_FORMAT "d, performed = true)", duration_); + absl::StrAppendFormat(&out, ", duration = %d, performed = true)", duration_); return out; } @@ -1552,9 +1550,9 @@ std::string StartVarIntervalVar::DebugString() const { } else { out = "IntervalVar(start = "; } - absl::StrAppendFormat( - &out, "%s, duration = %" GG_LL_FORMAT "d, performed = %s)", - start_->DebugString(), duration_, performed_->DebugString()); + absl::StrAppendFormat(&out, "%s, duration = %d, performed = %s)", + start_->DebugString(), duration_, + performed_->DebugString()); return out; } } @@ -1736,10 +1734,8 @@ std::string FixedInterval::DebugString() const { } else { out = "IntervalVar(start = "; } - absl::StrAppendFormat(&out, - "%" GG_LL_FORMAT "d, duration = %" GG_LL_FORMAT - "d, performed = true)", - start_, duration_); + absl::StrAppendFormat(&out, "%d, duration = %d, performed = true)", start_, + duration_); return out; } @@ -2093,8 +2089,7 @@ class FixedDurationIntervalVarStartSyncedOnStart : FixedDurationSyncedIntervalVar( t, duration, offset, absl::StrFormat( - "IntervalStartSyncedOnStart(%s, duration = %" GG_LL_FORMAT - "d, offset = %" GG_LL_FORMAT "d)", + "IntervalStartSyncedOnStart(%s, duration = %d, offset = %d)", t->name(), duration, offset)) {} ~FixedDurationIntervalVarStartSyncedOnStart() override {} int64 StartMin() const override { return CapAdd(t_->StartMin(), offset_); } @@ -2138,8 +2133,7 @@ class FixedDurationIntervalVarStartSyncedOnStart } std::string DebugString() const override { return absl::StrFormat( - "IntervalStartSyncedOnStart(%s, duration = %" GG_LL_FORMAT - "d, offset = %" GG_LL_FORMAT "d)", + "IntervalStartSyncedOnStart(%s, duration = %d, offset = %d)", t_->DebugString(), duration_, offset_); } }; @@ -2154,8 +2148,7 @@ class FixedDurationIntervalVarStartSyncedOnEnd : FixedDurationSyncedIntervalVar( t, duration, offset, absl::StrFormat( - "IntervalStartSyncedOnEnd(%s, duration = %" GG_LL_FORMAT - "d, offset = %" GG_LL_FORMAT "d)", + "IntervalStartSyncedOnEnd(%s, duration = %d, offset = %d)", t->name(), duration, offset)) {} ~FixedDurationIntervalVarStartSyncedOnEnd() override {} int64 StartMin() const override { return CapAdd(t_->EndMin(), offset_); } @@ -2200,8 +2193,7 @@ class FixedDurationIntervalVarStartSyncedOnEnd } std::string DebugString() const override { return absl::StrFormat( - "IntervalStartSyncedOnEnd(%s, duration = %" GG_LL_FORMAT - "d, offset = %" GG_LL_FORMAT "d)", + "IntervalStartSyncedOnEnd(%s, duration = %d, offset = %d)", t_->DebugString(), duration_, offset_); } }; diff --git a/ortools/constraint_solver/resource.cc b/ortools/constraint_solver/resource.cc index 142cb05d76..0b61b8175f 100644 --- a/ortools/constraint_solver/resource.cc +++ b/ortools/constraint_solver/resource.cc @@ -115,8 +115,8 @@ struct CumulativeTask { void WhenAnything(Demon* const demon) { interval->WhenAnything(demon); } std::string DebugString() const { - return absl::StrFormat("Task{ %s, demand: %" GG_LL_FORMAT "d }", - interval->DebugString(), demand); + return absl::StrFormat("Task{ %s, demand: %d }", interval->DebugString(), + demand); } IntervalVar* interval; @@ -1136,8 +1136,7 @@ class FullDisjunctiveConstraint : public DisjunctiveConstraint { if (var->MayBePerformed()) { const int64 duration_min = var->DurationMin(); time_slacks_[i + 1] = s->MakeIntVar( - duration_min, horizon, - absl::StrFormat("time_slacks(%" GG_LL_FORMAT "d)", i + 1)); + duration_min, horizon, absl::StrFormat("time_slacks(%d)", i + 1)); // TODO(user): Check SafeStartExpr(); time_cumuls_[i + 1] = var->SafeStartExpr(var->StartMin())->Var(); if (var->DurationMax() != duration_min) { @@ -1146,8 +1145,7 @@ class FullDisjunctiveConstraint : public DisjunctiveConstraint { } } else { time_slacks_[i + 1] = s->MakeIntVar( - 0, horizon, - absl::StrFormat("time_slacks(%" GG_LL_FORMAT "d)", i + 1)); + 0, horizon, absl::StrFormat("time_slacks(%d)", i + 1)); time_cumuls_[i + 1] = s->MakeIntConst(horizon); } } diff --git a/ortools/constraint_solver/routing.cc b/ortools/constraint_solver/routing.cc index c042f05745..9e709762b1 100644 --- a/ortools/constraint_solver/routing.cc +++ b/ortools/constraint_solver/routing.cc @@ -2757,10 +2757,14 @@ bool RoutingModel::AppendAssignmentIfFeasible( return false; } -void RoutingModel::LogSolution(const std::string& description, +void RoutingModel::LogSolution(const RoutingSearchParameters& parameters, + const std::string& description, int64 solution_cost, int64 start_time_ms) { const std::string memory_str = MemoryUsage(); - LOG(INFO) << description << " (" << solution_cost + const double cost_scaling_factor = parameters.log_cost_scaling_factor(); + LOG(INFO) << description << " (" + << (cost_scaling_factor != 1.0 ? solution_cost / cost_scaling_factor + : solution_cost) << ", time = " << (solver_->wall_time() - start_time_ms) << " ms, memory used = " << memory_str << ")"; } @@ -2789,7 +2793,7 @@ const Assignment* RoutingModel::SolveFromAssignmentWithParameters( if (IsMatchingModel() && SolveMatchingModel(&matching) && AppendAssignmentIfFeasible(matching, &solution_pool)) { if (parameters.log_search()) { - LogSolution("Min-Cost Flow Solution", + LogSolution(parameters, "Min-Cost Flow Solution", solution_pool.back()->ObjectiveValue(), start_time_ms); } solution_found = true; @@ -2801,7 +2805,7 @@ const Assignment* RoutingModel::SolveFromAssignmentWithParameters( MakeAllUnperformed(this, &unperformed); if (AppendAssignmentIfFeasible(unperformed, &solution_pool) && parameters.log_search()) { - LogSolution("All Unperformed Solution", + LogSolution(parameters, "All Unperformed Solution", solution_pool.back()->ObjectiveValue(), start_time_ms); } const int64 elapsed_time_ms = solver_->wall_time() - start_time_ms; @@ -3663,16 +3667,14 @@ std::string RoutingModel::DebugOutputAssignment( int64 index = Start(vehicle); for (;;) { const IntVar* vehicle_var = VehicleVar(index); - absl::StrAppendFormat(&output, - "%" GG_LL_FORMAT "d Vehicle(%" GG_LL_FORMAT "d) ", - index, solution_assignment.Value(vehicle_var)); + absl::StrAppendFormat(&output, "%d Vehicle(%d) ", index, + solution_assignment.Value(vehicle_var)); for (const RoutingDimension* const dimension : dimensions_) { if (gtl::ContainsKey(dimension_names, dimension->name())) { const IntVar* const var = dimension->CumulVar(index); - absl::StrAppendFormat( - &output, "%s(%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d) ", - dimension->name(), solution_assignment.Min(var), - solution_assignment.Max(var)); + absl::StrAppendFormat(&output, "%s(%d..%d) ", dimension->name(), + solution_assignment.Min(var), + solution_assignment.Max(var)); } } if (IsEnd(index)) break; @@ -4587,7 +4589,10 @@ void RoutingModel::SetupTrace( const RoutingSearchParameters& search_parameters) { if (search_parameters.log_search()) { const int kLogPeriod = 10000; - monitors_.push_back(solver_->MakeSearchLog(kLogPeriod, cost_)); + Solver::SearchLogParameters params; + params.branch_period = kLogPeriod; + params.scaling_factor = search_parameters.log_cost_scaling_factor(); + monitors_.push_back(solver_->MakeSearchLog(params)); } } @@ -5060,33 +5065,41 @@ void GlobalVehicleBreaksConstraint::PropagateVehicle(int vehicle) { tasks_.forbidden_intervals.clear(); task_translators_.clear(); // Translate route to tasks: visits are nonpreemptible, transits are. + int64 group_delay = 0LL; current = model_->Start(vehicle); while (true) { // Tasks from visits. const bool node_is_last = current == model_->End(vehicle); const int64 visit_duration = node_is_last ? 0LL : node_visit_transit[current]; - tasks_.start_min.push_back(dimension_->CumulVar(current)->Min()); - tasks_.duration_min.push_back(visit_duration); + tasks_.start_min.push_back( + CapSub(dimension_->CumulVar(current)->Min(), group_delay)); + tasks_.duration_min.push_back(CapAdd(group_delay, visit_duration)); tasks_.end_max.push_back( CapAdd(dimension_->CumulVar(current)->Max(), visit_duration)); tasks_.is_preemptible.push_back(false); task_translators_.emplace_back(dimension_->CumulVar(current), - visit_duration); + visit_duration, group_delay); if (node_is_last) break; // Tasks from transits. - const int next = model_->NextVar(current)->Bound() - ? model_->NextVar(current)->Min() - : model_->End(vehicle); - tasks_.start_min.push_back(tasks_.start_min.back() + visit_duration); + const bool next_is_bound = model_->NextVar(current)->Bound(); + const int next = + next_is_bound ? model_->NextVar(current)->Min() : model_->End(vehicle); + tasks_.start_min.push_back( + CapAdd(CapAdd(tasks_.start_min.back(), group_delay), visit_duration)); + group_delay = + next_is_bound ? dimension_->GetGroupDelay(vehicle, current, next) : 0LL; + DCHECK_GE(group_delay, 0); tasks_.duration_min.push_back( - std::max(visit_duration, dimension_->FixedTransitVar(current)->Min()) - - visit_duration); - tasks_.end_max.push_back(dimension_->CumulVar(next)->Max()); + std::max(0LL, CapSub(CapSub(dimension_->FixedTransitVar(current)->Min(), + visit_duration), + group_delay))); + DCHECK_GE(tasks_.duration_min.back(), 0); + tasks_.end_max.push_back( + CapSub(dimension_->CumulVar(next)->Max(), group_delay)); tasks_.is_preemptible.push_back(true); task_translators_.emplace_back(); // Dummy translator, prunes nothing. - current = next; } tasks_.num_chain_tasks = tasks_.start_min.size(); @@ -5625,17 +5638,43 @@ void RoutingDimension::SetupGlobalSpanCost( } IntVar* const min_start_cumul = solver->MakeMin(start_cumuls)->Var(); model_->AddVariableMaximizedByFinalizer(min_start_cumul); - IntVar* const end_range = - solver->MakeDifference(max_end_cumul, min_start_cumul)->Var(); - end_range->SetMin(0); - cost_elements->push_back( - solver->MakeProd(end_range, global_span_cost_coefficient_)->Var()); + // If there is a single vehicle, model the cost as the sum of its transits + // to avoid slow (infinite) propagation loops. + // TODO(user): Avoid slow propagation in the path constraints. + if (model_->vehicles() == 1) { + for (int var_index = 0; var_index < model_->Size(); ++var_index) { + model_->AddVariableMinimizedByFinalizer(slacks_[var_index]); + cost_elements->push_back( + solver + ->MakeProd(solver->MakeProd( + solver->MakeSum(transits_[var_index], + dependent_transits_[var_index]), + global_span_cost_coefficient_), + model_->ActiveVar(var_index)) + ->Var()); + } + } else { + IntVar* const end_range = + solver->MakeDifference(max_end_cumul, min_start_cumul)->Var(); + end_range->SetMin(0); + cost_elements->push_back( + solver->MakeProd(end_range, global_span_cost_coefficient_)->Var()); + } } } void RoutingDimension::SetBreakIntervalsOfVehicle( std::vector breaks, int vehicle, std::vector node_visit_transits) { + SetBreakIntervalsOfVehicle(std::move(breaks), vehicle, + std::move(node_visit_transits), + [](int64, int64) { return 0LL; }); +} + +void RoutingDimension::SetBreakIntervalsOfVehicle( + std::vector breaks, int vehicle, + std::vector node_visit_transits, + std::function group_delay) { for (IntervalVar* const interval : breaks) { model_->AddIntervalToAssignment(interval); model_->AddVariableMinimizedByFinalizer(interval->SafeStartExpr(0)->Var()); @@ -5645,10 +5684,13 @@ void RoutingDimension::SetBreakIntervalsOfVehicle( if (vehicle_node_visit_transits_.empty()) { vehicle_node_visit_transits_.resize(model_->vehicles()); vehicle_break_intervals_.resize(model_->vehicles()); + vehicle_group_delays_.resize(model_->vehicles(), + [](int64, int64) { return 0LL; }); } DCHECK_EQ(0, vehicle_node_visit_transits_[vehicle].size()); vehicle_node_visit_transits_[vehicle] = std::move(node_visit_transits); vehicle_break_intervals_[vehicle] = std::move(breaks); + vehicle_group_delays_[vehicle] = std::move(group_delay); } bool RoutingDimension::VehicleHasBreakIntervals(int vehicle) const { diff --git a/ortools/constraint_solver/routing.h b/ortools/constraint_solver/routing.h index 93da86b7b2..3a996799e6 100644 --- a/ortools/constraint_solver/routing.h +++ b/ortools/constraint_solver/routing.h @@ -1250,7 +1250,8 @@ class RoutingModel { std::vector>* assignments); #endif // Log a solution. - void LogSolution(const std::string& description, int64 solution_cost, + void LogSolution(const RoutingSearchParameters& parameters, + const std::string& description, int64 solution_cost, int64 start_time_ms); // See CompactAssignment. Checks the final solution if // check_compact_assignement is true. @@ -1555,14 +1556,16 @@ class GlobalVehicleBreaksConstraint : public Constraint { // adjust to usage and eventually no more dynamic allocation will be made. class TaskTranslator { public: - TaskTranslator(IntVar* start, int64 duration_min) - : start_(start), duration_min_(duration_min) {} + TaskTranslator(IntVar* start, int64 duration_min, int64 group_delay) + : start_(start), + duration_min_(duration_min), + group_delay_(group_delay) {} explicit TaskTranslator(IntervalVar* interval) : interval_(interval) {} TaskTranslator() {} void SetStartMin(int64 value) { if (start_ != nullptr) { - start_->SetMin(value); + start_->SetMin(CapAdd(group_delay_, value)); } else if (interval_ != nullptr) { interval_->SetStartMin(value); } @@ -1578,6 +1581,7 @@ class GlobalVehicleBreaksConstraint : public Constraint { private: IntVar* start_ = nullptr; int64 duration_min_; + int64 group_delay_; IntervalVar* interval_ = nullptr; }; @@ -1741,9 +1745,16 @@ class RoutingDimension { // [CumulVar(node), CumulVar(node) + node_visit_transits[node]), i.e. the // break interval must either end before CumulVar(node) or start after // CumulVar(node) + node_visit_transits[node]. + // In the case where the route entails some group delay on a visit, the break + // cannot overlap that delay either, so the time window it cannot overlap is + // [CumulVar(node) - delay, CumulVar(node) + node_visit_transits[node]). void SetBreakIntervalsOfVehicle(std::vector breaks, int vehicle, std::vector node_visit_transits); #if !defined(SWIGPYTHON) + void SetBreakIntervalsOfVehicle( + std::vector breaks, int vehicle, + std::vector node_visit_transits, + std::function group_delay); // Returns true if the vehicle has break intervals. bool VehicleHasBreakIntervals(int vehicle) const; // Returns the break intervals set by SetBreakIntervalsOfVehicle(). @@ -1814,6 +1825,11 @@ class RoutingDimension { return global_span_cost_coefficient_; } + int64 GetGroupDelay(int vehicle, int64 from_index, int64 to_index) const { + DCHECK_LT(vehicle, vehicle_group_delays_.size()); + return vehicle_group_delays_[vehicle](from_index, to_index); + } + private: struct SoftBound { IntVar* var; @@ -1892,6 +1908,8 @@ class RoutingDimension { // clang-format off std::vector > vehicle_break_intervals_; std::vector > vehicle_node_visit_transits_; + std::vector > + vehicle_group_delays_; // clang-format on std::vector slacks_; diff --git a/ortools/constraint_solver/routing_flags.cc b/ortools/constraint_solver/routing_flags.cc index b9b51a7fb1..63ee6eaa95 100644 --- a/ortools/constraint_solver/routing_flags.cc +++ b/ortools/constraint_solver/routing_flags.cc @@ -264,6 +264,7 @@ void SetMiscellaneousParametersFromFlags(RoutingSearchParameters* parameters) { CHECK(parameters != nullptr); parameters->set_use_full_propagation(!FLAGS_routing_use_light_propagation); parameters->set_log_search(FLAGS_routing_trace); + parameters->set_log_cost_scaling_factor(1.0); parameters->set_relocate_expensive_chain_num_arcs_to_consider( FLAGS_routing_relocate_expensive_chain_num_arcs_to_consider); } diff --git a/ortools/constraint_solver/routing_parameters.cc b/ortools/constraint_solver/routing_parameters.cc index 8e17044dee..3897083576 100644 --- a/ortools/constraint_solver/routing_parameters.cc +++ b/ortools/constraint_solver/routing_parameters.cc @@ -88,7 +88,8 @@ RoutingSearchParameters DefaultRoutingSearchParameters() { "solution_limit: 0x7fffffffffffffff " // kint64max "lns_time_limit: { seconds:0 nanos:100000000 } " // 0.1s "use_full_propagation: false " - "log_search: false"; + "log_search: false " + "log_cost_scaling_factor: 1.0"; RoutingSearchParameters parameters; if (!google::protobuf::TextFormat::ParseFromString(kSearchParameters, ¶meters)) { @@ -215,6 +216,10 @@ std::string FindErrorInRoutingSearchParameters( search_parameters.local_search_metaheuristic()); } + if (search_parameters.log_cost_scaling_factor() == 0) { + return "log_cost_scaling_factor must be non-null"; + } + return ""; // = Valid (No error). } diff --git a/ortools/constraint_solver/routing_parameters.proto b/ortools/constraint_solver/routing_parameters.proto index cd9ea4d8d9..ba858f572c 100644 --- a/ortools/constraint_solver/routing_parameters.proto +++ b/ortools/constraint_solver/routing_parameters.proto @@ -346,6 +346,8 @@ message RoutingSearchParameters { // search neighbors accepted, the total memory used and the percentage of the // search done. bool log_search = 13; + // In logs, cost values will be unscaled by this factor. + double log_cost_scaling_factor = 22; } // Parameters which have to be set when creating a RoutingModel. diff --git a/ortools/constraint_solver/routing_search.cc b/ortools/constraint_solver/routing_search.cc index 90f46de0e6..6a4f16dec1 100644 --- a/ortools/constraint_solver/routing_search.cc +++ b/ortools/constraint_solver/routing_search.cc @@ -2016,6 +2016,7 @@ bool VehicleBreaksFilter::AcceptPath(int64 path_start, int64 chain_start, tasks_.is_preemptible.clear(); tasks_.forbidden_intervals.clear(); bool has_forbidden_intervals = false; + int64 group_delay = 0LL; int64 current = path_start; while (true) { // Add tasks from visits. @@ -2024,8 +2025,9 @@ bool VehicleBreaksFilter::AcceptPath(int64 path_start, int64 chain_start, node_is_last ? 0LL : dimension_.GetNodeVisitTransitsOfVehicle(vehicle)[current]; - tasks_.start_min.push_back(dimension_.CumulVar(current)->Min()); - tasks_.duration_min.push_back(visit_duration); + tasks_.start_min.push_back( + CapSub(dimension_.CumulVar(current)->Min(), group_delay)); + tasks_.duration_min.push_back(CapAdd(group_delay, visit_duration)); tasks_.end_max.push_back( CapAdd(dimension_.CumulVar(current)->Max(), visit_duration)); tasks_.is_preemptible.push_back(false); @@ -2037,10 +2039,15 @@ bool VehicleBreaksFilter::AcceptPath(int64 path_start, int64 chain_start, // Add tasks from transits. const int next = GetNext(current); - tasks_.start_min.push_back(CapAdd(tasks_.start_min.back(), visit_duration)); - tasks_.duration_min.push_back(CapSub( - dimension_.transit_evaluator(vehicle)(current, next), visit_duration)); - tasks_.end_max.push_back(dimension_.CumulVar(next)->Max()); + tasks_.start_min.push_back( + CapAdd(CapAdd(tasks_.start_min.back(), group_delay), visit_duration)); + group_delay = dimension_.GetGroupDelay(vehicle, current, next); + tasks_.duration_min.push_back( + CapSub(CapSub(dimension_.transit_evaluator(vehicle)(current, next), + visit_duration), + group_delay)); + tasks_.end_max.push_back( + CapSub(dimension_.CumulVar(next)->Max(), group_delay)); tasks_.is_preemptible.push_back(true); tasks_.forbidden_intervals.push_back(nullptr); diff --git a/ortools/constraint_solver/sched_search.cc b/ortools/constraint_solver/sched_search.cc index 20fcdf267c..5472bbcff7 100644 --- a/ortools/constraint_solver/sched_search.cc +++ b/ortools/constraint_solver/sched_search.cc @@ -61,11 +61,11 @@ std::string SequenceVar::DebugString() const { int ranked = 0; int not_ranked = 0; ComputeStatistics(&ranked, ¬_ranked, &unperformed); - return absl::StrFormat("%s(horizon = %" GG_LL_FORMAT "d..%" GG_LL_FORMAT - "d, duration = %" GG_LL_FORMAT "d..%" GG_LL_FORMAT - "d, not ranked = %d, ranked = %d, nexts = [%s])", - name(), hmin, hmax, dmin, dmax, not_ranked, ranked, - JoinDebugStringPtr(nexts_, ", ")); + return absl::StrFormat( + "%s(horizon = %d..%d, duration = %d..%d, not ranked = %d, ranked = %d, " + "nexts = [%s])", + name(), hmin, hmax, dmin, dmax, not_ranked, ranked, + JoinDebugStringPtr(nexts_, ", ")); } void SequenceVar::Accept(ModelVisitor* const visitor) const { @@ -408,8 +408,8 @@ class ScheduleOrPostpone : public Decision { } std::string DebugString() const override { - return absl::StrFormat("ScheduleOrPostpone(%s at %" GG_LL_FORMAT "d)", - var_->DebugString(), est_.Value()); + return absl::StrFormat("ScheduleOrPostpone(%s at %d)", var_->DebugString(), + est_.Value()); } private: @@ -518,8 +518,8 @@ class ScheduleOrExpedite : public Decision { } std::string DebugString() const override { - return absl::StrFormat("ScheduleOrExpedite(%s at %" GG_LL_FORMAT "d)", - var_->DebugString(), est_.Value()); + return absl::StrFormat("ScheduleOrExpedite(%s at %d)", var_->DebugString(), + est_.Value()); } private: diff --git a/ortools/constraint_solver/search.cc b/ortools/constraint_solver/search.cc index 26ba10af49..ee8ba55db1 100644 --- a/ortools/constraint_solver/search.cc +++ b/ortools/constraint_solver/search.cc @@ -53,12 +53,14 @@ namespace operations_research { // ---------- Search Log --------- SearchLog::SearchLog(Solver* const s, OptimizeVar* const obj, IntVar* const var, + double scaling_factor, std::function display_callback, int period) : SearchMonitor(s), period_(period), timer_(new WallTimer), var_(var), obj_(obj), + scaling_factor_(scaling_factor), display_callback_(std::move(display_callback)), nsol_(0), tick_(0LL), @@ -91,9 +93,8 @@ void SearchLog::ExitSearch() { ms = 1; } const std::string buffer = absl::StrFormat( - "End search (time = %" GG_LL_FORMAT "d ms, branches = %" GG_LL_FORMAT - "d, failures = %" GG_LL_FORMAT "d, %s, speed = %" GG_LL_FORMAT - "d branches/s)", + "End search (time = %d ms, branches = %d, failures = %d, %s, speed = %d " + "branches/s)", ms, branches, solver()->failures(), MemoryUsage(), branches * 1000 / ms); OutputLine(buffer); } @@ -104,35 +105,40 @@ bool SearchLog::AtSolution() { std::string obj_str = ""; int64 current = 0; bool objective_updated = false; + const auto scaled_str = [this](int64 value) { + if (scaling_factor_ != 1.0) { + return absl::StrCat(value, " (", value / scaling_factor_, ")"); + } else { + return absl::StrCat(value); + } + }; if (obj_ != nullptr) { current = obj_->Var()->Value(); obj_str = obj_->Print(); objective_updated = true; } else if (var_ != nullptr) { current = var_->Value(); - absl::StrAppendFormat(&obj_str, "%" GG_LL_FORMAT "d, ", current); + absl::StrAppend(&obj_str, scaled_str(current), ", "); objective_updated = true; } if (objective_updated) { if (current >= objective_min_) { - absl::StrAppendFormat( - &obj_str, "objective minimum = %" GG_LL_FORMAT "d, ", objective_min_); + absl::StrAppend(&obj_str, + "objective minimum = ", scaled_str(objective_min_), ", "); } else { objective_min_ = current; } if (current <= objective_max_) { - absl::StrAppendFormat( - &obj_str, "objective maximum = %" GG_LL_FORMAT "d, ", objective_max_); + absl::StrAppend(&obj_str, + "objective maximum = ", scaled_str(objective_max_), ", "); } else { objective_max_ = current; } } std::string log; absl::StrAppendFormat(&log, - "Solution #%d (%stime = %" GG_LL_FORMAT - "d ms, branches = %" GG_LL_FORMAT - "d," - " failures = %" GG_LL_FORMAT "d, depth = %d", + "Solution #%d (%stime = %d ms, branches = %d," + " failures = %d, depth = %d", nsol_++, obj_str, timer_->GetInMs(), solver()->branches(), solver()->failures(), depth); if (!solver()->SearchContext().empty()) { @@ -140,10 +146,8 @@ bool SearchLog::AtSolution() { } if (solver()->neighbors() != 0) { absl::StrAppendFormat(&log, - ", neighbors = %" GG_LL_FORMAT - "d, filtered neighbors = %" GG_LL_FORMAT - "d," - " accepted neighbors = %" GG_LL_FORMAT "d", + ", neighbors = %d, filtered neighbors = %d," + " accepted neighbors = %d", solver()->neighbors(), solver()->filtered_neighbors(), solver()->accepted_neighbors()); } @@ -164,17 +168,13 @@ void SearchLog::BeginFail() { Maintain(); } void SearchLog::NoMoreSolutions() { std::string buffer = absl::StrFormat( - "Finished search tree (time = %" GG_LL_FORMAT - "d ms, branches = %" GG_LL_FORMAT - "d," - " failures = %" GG_LL_FORMAT "d", + "Finished search tree (time = %d ms, branches = %d," + " failures = %d", timer_->GetInMs(), solver()->branches(), solver()->failures()); if (solver()->neighbors() != 0) { absl::StrAppendFormat(&buffer, - ", neighbors = %" GG_LL_FORMAT - "d, filtered neighbors = %" GG_LL_FORMAT - "d," - " accepted neigbors = %" GG_LL_FORMAT "d", + ", neighbors = %d, filtered neighbors = %d," + " accepted neigbors = %d", solver()->neighbors(), solver()->filtered_neighbors(), solver()->accepted_neighbors()); } @@ -196,10 +196,9 @@ void SearchLog::RefuteDecision(Decision* const decision) { } void SearchLog::OutputDecision() { - std::string buffer = absl::StrFormat( - "%" GG_LL_FORMAT "d branches, %" GG_LL_FORMAT "d ms, %" GG_LL_FORMAT - "d failures", - solver()->branches(), timer_->GetInMs(), solver()->failures()); + std::string buffer = + absl::StrFormat("%d branches, %d ms, %d failures", solver()->branches(), + timer_->GetInMs(), solver()->failures()); if (min_right_depth_ != kint32max && max_depth_ != 0) { const int depth = solver()->SearchDepth(); absl::StrAppendFormat(&buffer, ", tree pos=%d/%d/%d minref=%d max=%d", @@ -211,9 +210,8 @@ void SearchLog::OutputDecision() { if (obj_ != nullptr && objective_min_ != kint64max && objective_max_ != kint64min) { absl::StrAppendFormat(&buffer, - ", objective minimum = %" GG_LL_FORMAT - "d" - ", objective maximum = %" GG_LL_FORMAT "d", + ", objective minimum = %d" + ", objective maximum = %d", objective_min_, objective_max_); } const int progress = solver()->TopProgressPercent(); @@ -234,10 +232,9 @@ void SearchLog::BeginInitialPropagation() { tick_ = timer_->GetInMs(); } void SearchLog::EndInitialPropagation() { const int64 delta = std::max(timer_->GetInMs() - tick_, int64{0}); - const std::string buffer = - absl::StrFormat("Root node processed (time = %" GG_LL_FORMAT - "d ms, constraints = %d, %s)", - delta, solver()->constraints(), MemoryUsage()); + const std::string buffer = absl::StrFormat( + "Root node processed (time = %d ms, constraints = %d, %s)", delta, + solver()->constraints(), MemoryUsage()); OutputLine(buffer); } @@ -265,45 +262,53 @@ std::string SearchLog::MemoryUsage() { return absl::StrFormat("memory used = %2lf KB", memory_usage * 1.0 / kKiloByte); } else { - return absl::StrFormat("memory used = %" GG_LL_FORMAT "d", memory_usage); + return absl::StrFormat("memory used = %d", memory_usage); } } SearchMonitor* Solver::MakeSearchLog(int branch_period) { return RevAlloc( - new SearchLog(this, nullptr, nullptr, nullptr, branch_period)); + new SearchLog(this, nullptr, nullptr, 1.0, nullptr, branch_period)); } SearchMonitor* Solver::MakeSearchLog(int branch_period, IntVar* const var) { - return RevAlloc(new SearchLog(this, nullptr, var, nullptr, branch_period)); + return RevAlloc( + new SearchLog(this, nullptr, var, 1.0, nullptr, branch_period)); } SearchMonitor* Solver::MakeSearchLog( int branch_period, std::function display_callback) { - return RevAlloc(new SearchLog(this, nullptr, nullptr, + return RevAlloc(new SearchLog(this, nullptr, nullptr, 1.0, std::move(display_callback), branch_period)); } SearchMonitor* Solver::MakeSearchLog( int branch_period, IntVar* const var, std::function display_callback) { - return RevAlloc(new SearchLog(this, nullptr, var, std::move(display_callback), - branch_period)); + return RevAlloc(new SearchLog(this, nullptr, var, 1.0, + std::move(display_callback), branch_period)); } SearchMonitor* Solver::MakeSearchLog(int branch_period, OptimizeVar* const opt_var) { return RevAlloc( - new SearchLog(this, opt_var, nullptr, nullptr, branch_period)); + new SearchLog(this, opt_var, nullptr, 1.0, nullptr, branch_period)); } SearchMonitor* Solver::MakeSearchLog( int branch_period, OptimizeVar* const opt_var, std::function display_callback) { - return RevAlloc(new SearchLog(this, opt_var, nullptr, + return RevAlloc(new SearchLog(this, opt_var, nullptr, 1.0, std::move(display_callback), branch_period)); } +SearchMonitor* Solver::MakeSearchLog(SearchLogParameters parameters) { + return RevAlloc(new SearchLog(this, parameters.objective, parameters.variable, + parameters.scaling_factor, + std::move(parameters.display_callback), + parameters.branch_period)); +} + // ---------- Search Trace ---------- namespace { class SearchTrace : public SearchMonitor { @@ -1524,8 +1529,7 @@ AssignOneVariableValue::AssignOneVariableValue(IntVar* const v, int64 val) : var_(v), value_(val) {} std::string AssignOneVariableValue::DebugString() const { - return absl::StrFormat("[%s == %" GG_LL_FORMAT "d]", var_->DebugString(), - value_); + return absl::StrFormat("[%s == %d]", var_->DebugString(), value_); } void AssignOneVariableValue::Apply(Solver* const s) { var_->SetValue(value_); } @@ -1563,8 +1567,7 @@ AssignOneVariableValueOrFail::AssignOneVariableValueOrFail(IntVar* const v, : var_(v), value_(value) {} std::string AssignOneVariableValueOrFail::DebugString() const { - return absl::StrFormat("[%s == %" GG_LL_FORMAT "d]", var_->DebugString(), - value_); + return absl::StrFormat("[%s == %d]", var_->DebugString(), value_); } void AssignOneVariableValueOrFail::Apply(Solver* const s) { @@ -1605,11 +1608,9 @@ SplitOneVariable::SplitOneVariable(IntVar* const v, int64 val, std::string SplitOneVariable::DebugString() const { if (start_with_lower_half_) { - return absl::StrFormat("[%s <= %" GG_LL_FORMAT "d]", var_->DebugString(), - value_); + return absl::StrFormat("[%s <= %d]", var_->DebugString(), value_); } else { - return absl::StrFormat("[%s >= %" GG_LL_FORMAT "d]", var_->DebugString(), - value_); + return absl::StrFormat("[%s >= %d]", var_->DebugString(), value_); } } @@ -1680,8 +1681,8 @@ AssignVariablesValues::AssignVariablesValues(const std::vector& vars, std::string AssignVariablesValues::DebugString() const { std::string out; for (int i = 0; i < vars_.size(); ++i) { - absl::StrAppendFormat(&out, "[%s == %" GG_LL_FORMAT "d]", - vars_[i]->DebugString(), values_[i]); + absl::StrAppendFormat(&out, "[%s == %d]", vars_[i]->DebugString(), + values_[i]); } return out; } @@ -2728,8 +2729,7 @@ bool OptimizeVar::AtSolution() { } std::string OptimizeVar::Print() const { - return absl::StrFormat("objective value = %" GG_LL_FORMAT "d, ", - var_->Value()); + return absl::StrFormat("objective value = %d, ", var_->Value()); } std::string OptimizeVar::DebugString() const { @@ -2739,9 +2739,8 @@ std::string OptimizeVar::DebugString() const { } else { out = "MinimizeVar("; } - absl::StrAppendFormat( - &out, "%s, step = %" GG_LL_FORMAT "d, best = %" GG_LL_FORMAT "d)", - var_->DebugString(), step_, best_); + absl::StrAppendFormat(&out, "%s, step = %d, best = %d)", var_->DebugString(), + step_, best_); return out; } @@ -3981,13 +3980,11 @@ void RegularLimit::UpdateLimits(int64 time, int64 branches, int64 failures, } std::string RegularLimit::DebugString() const { - return absl::StrFormat("RegularLimit(crossed = %i, wall_time = %" GG_LL_FORMAT - "d, " - "branches = %" GG_LL_FORMAT - "d, failures = %" GG_LL_FORMAT - "d, solutions = %" GG_LL_FORMAT "d cumulative = %s", - crossed(), wall_time_, branches_, failures_, - solutions_, (cumulative_ ? "true" : "false")); + return absl::StrFormat( + "RegularLimit(crossed = %i, wall_time = %d, " + "branches = %d, failures = %d, solutions = %d cumulative = %s", + crossed(), wall_time_, branches_, failures_, solutions_, + (cumulative_ ? "true" : "false")); } bool RegularLimit::CheckTime() { return TimeDelta() >= wall_time_; } diff --git a/ortools/constraint_solver/table.cc b/ortools/constraint_solver/table.cc index c7026587f2..3fca3c7807 100644 --- a/ortools/constraint_solver/table.cc +++ b/ortools/constraint_solver/table.cc @@ -63,8 +63,7 @@ struct AffineTransformation { // y == a*x + b. } std::string DebugString() const { - return absl::StrFormat("(%" GG_LL_FORMAT "d * x + %" GG_LL_FORMAT "d)", a, - b); + return absl::StrFormat("(%d * x + %d)", a, b); } }; @@ -1225,8 +1224,8 @@ class TransitionConstraint : public Constraint { std::string DebugString() const override { return absl::StrFormat( - "TransitionConstraint([%s], %d transitions, initial = %" GG_LL_FORMAT - "d, final = [%s])", + "TransitionConstraint([%s], %d transitions, initial = %d, final = " + "[%s])", JoinDebugStringPtr(vars_, ", "), transition_table_.NumTuples(), initial_state_, absl::StrJoin(final_states_, ", ")); } diff --git a/ortools/constraint_solver/timetabling.cc b/ortools/constraint_solver/timetabling.cc index 3f21706d9f..59efd68d9e 100644 --- a/ortools/constraint_solver/timetabling.cc +++ b/ortools/constraint_solver/timetabling.cc @@ -47,8 +47,8 @@ class IntervalUnaryRelation : public Constraint { void InitialPropagate() override; std::string DebugString() const override { - return absl::StrFormat("(%s %s %" GG_LL_FORMAT "d)", t_->DebugString(), - kUnaryNames[rel_], d_); + return absl::StrFormat("(%s %s %d)", t_->DebugString(), kUnaryNames[rel_], + d_); } void Accept(ModelVisitor* const visitor) const override { diff --git a/ortools/flatzinc/flatzinc_constraints.cc b/ortools/flatzinc/flatzinc_constraints.cc index 7be48ea69f..a88cca04bb 100644 --- a/ortools/flatzinc/flatzinc_constraints.cc +++ b/ortools/flatzinc/flatzinc_constraints.cc @@ -152,8 +152,8 @@ class FixedModulo : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("(%s %% %s == %" GG_LL_FORMAT "d)", - var_->DebugString(), mod_->DebugString(), residual_); + return absl::StrFormat("(%s %% %s == %d)", var_->DebugString(), + mod_->DebugString(), residual_); } private: @@ -303,8 +303,7 @@ class IsBooleanSumInRange : public Constraint { } std::string DebugString() const override { - return absl::StrFormat("Sum([%s]) in [%" GG_LL_FORMAT "d..%" GG_LL_FORMAT - "d] == %s", + return absl::StrFormat("Sum([%s]) in [%d..%d] == %s", JoinDebugStringPtr(vars_, ", "), range_min_, range_max_, target_->DebugString()); } @@ -422,9 +421,9 @@ class BooleanSumInRange : public Constraint { } std::string DebugString() const override { - return absl::StrFormat( - "Sum([%s]) in [%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d]", - JoinDebugStringPtr(vars_, ", "), range_min_, range_max_); + return absl::StrFormat("Sum([%s]) in [%d..%d]", + JoinDebugStringPtr(vars_, ", "), range_min_, + range_max_); } void Accept(ModelVisitor* const visitor) const override { diff --git a/ortools/flatzinc/model.cc b/ortools/flatzinc/model.cc index 0c3c58feaf..ad8dc2b297 100644 --- a/ortools/flatzinc/model.cc +++ b/ortools/flatzinc/model.cc @@ -372,8 +372,7 @@ std::string Domain::DebugString() const { if (values.empty()) { return "int"; } else { - return absl::StrFormat("[%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d]", - values[0], values[1]); + return absl::StrFormat("[%d..%d]", values[0], values[1]); } } else if (values.size() == 1) { return absl::StrCat(values.back()); @@ -448,10 +447,9 @@ Argument Argument::FromDomain(const Domain& domain) { std::string Argument::DebugString() const { switch (type) { case INT_VALUE: - return absl::StrFormat("% " GG_LL_FORMAT "d", values[0]); + return absl::StrFormat("% d", values[0]); case INT_INTERVAL: - return absl::StrFormat("[%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d]", - values[0], values[1]); + return absl::StrFormat("[%d..%d]", values[0], values[1]); case INT_LIST: return absl::StrFormat("[%s]", absl::StrJoin(values, ", ")); case DOMAIN_LIST: @@ -619,7 +617,7 @@ bool IntegerVariable::Merge(const std::string& other_name, std::string IntegerVariable::DebugString() const { if (!domain.is_interval && domain.values.size() == 1) { - return absl::StrFormat("% " GG_LL_FORMAT "d", domain.values.back()); + return absl::StrFormat("% d", domain.values.back()); } else { return absl::StrFormat( "%s(%s%s%s)%s", name, domain.DebugString(), @@ -787,8 +785,7 @@ std::string Annotation::DebugString() const { return absl::StrFormat("%s(%s)", id, JoinDebugString(annotations, ", ")); } case INTERVAL: { - return absl::StrFormat("%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d", - interval_min, interval_max); + return absl::StrFormat("%d..%d", interval_min, interval_max); } case INT_VALUE: { return absl::StrCat(interval_min); @@ -815,8 +812,7 @@ std::string Annotation::DebugString() const { // ----- SolutionOutputSpecs ----- std::string SolutionOutputSpecs::Bounds::DebugString() const { - return absl::StrFormat("%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d", min_value, - max_value); + return absl::StrFormat("%d..%d", min_value, max_value); } SolutionOutputSpecs SolutionOutputSpecs::SingleVariable( diff --git a/ortools/flatzinc/presolve.cc b/ortools/flatzinc/presolve.cc index 7a071e9485..392f557e3e 100644 --- a/ortools/flatzinc/presolve.cc +++ b/ortools/flatzinc/presolve.cc @@ -1268,11 +1268,9 @@ Presolver::RuleStatus Presolver::PresolveArrayIntElement(Constraint* ct, if (last_index < ct->arguments[0].Var()->domain.Max() || first_index > ct->arguments[0].Var()->domain.Min()) { - absl::StrAppendFormat(log, - "filter index to [%" GG_LL_FORMAT - "d..%" GG_LL_FORMAT - "d] and reduce array to size %" GG_LL_FORMAT "d", - first_index, last_index, last_index); + absl::StrAppendFormat( + log, "filter index to [%d..%d] and reduce array to size %d", + first_index, last_index, last_index); IntersectVarWithInterval(ct->arguments[0].Var(), first_index, last_index); ct->arguments[1].values.resize(last_index); @@ -1546,8 +1544,7 @@ Presolver::RuleStatus Presolver::PropagatePositiveLinear(Constraint* ct, IntegerVariable* const var = ct->arguments[1].variables[i]; const int64 bound = rhs / coef; if (bound < var->domain.Max()) { - absl::StrAppendFormat(log, - ", intersect %s with [0..%" GG_LL_FORMAT "d]", + absl::StrAppendFormat(log, ", intersect %s with [0..%d]", var->DebugString(), bound); IntersectVarWithInterval(var, 0, bound); } @@ -1560,9 +1557,8 @@ Presolver::RuleStatus Presolver::PropagatePositiveLinear(Constraint* ct, IntegerVariable* const var = ct->arguments[1].variables[0]; const int64 bound = (rhs + coef - 1) / coef; if (bound > var->domain.Min()) { - absl::StrAppendFormat( - log, ", intersect %s with [%" GG_LL_FORMAT "d .. INT_MAX]", - var->DebugString(), bound); + absl::StrAppendFormat(log, ", intersect %s with [%d .. INT_MAX]", + var->DebugString(), bound); IntersectVarWithInterval(var, bound, kint64max); return CONSTRAINT_ALWAYS_TRUE; } diff --git a/ortools/flatzinc/reporting.cc b/ortools/flatzinc/reporting.cc index 73432cf721..94a0733b54 100644 --- a/ortools/flatzinc/reporting.cc +++ b/ortools/flatzinc/reporting.cc @@ -133,8 +133,7 @@ class MtOptimizeVar : public OptimizeVar { if (verbose_) { report_->Log( thread_id_, - absl::StrFormat("Polling improved objective %" GG_LL_FORMAT "d", - polled_best)); + absl::StrFormat("Polling improved objective %d", polled_best)); } best_ = polled_best; } @@ -236,10 +235,8 @@ void MultiThreadReporting::OnOptimizeSolution( best_objective_ = value; IncrementSolutions(); if (verbose_) { - LogNoLock( - thread_id, - absl::StrFormat("solution found with value %" GG_LL_FORMAT "d", - value)); + LogNoLock(thread_id, + absl::StrFormat("solution found with value %d", value)); } if (ShouldPrintAllSolutions() || MaxNumSolutions() > 1) { Print(thread_id, solution_string); @@ -255,10 +252,8 @@ void MultiThreadReporting::OnOptimizeSolution( best_objective_ = value; IncrementSolutions(); if (verbose_) { - LogNoLock( - thread_id, - absl::StrFormat("solution found with value %" GG_LL_FORMAT "d", - value)); + LogNoLock(thread_id, + absl::StrFormat("solution found with value %d", value)); } if (ShouldPrintAllSolutions() || MaxNumSolutions() > 1) { Print(thread_id, solution_string); @@ -297,9 +292,8 @@ void MultiThreadReporting::OnSearchEnd(int thread_id, bool interrupted) { } if (!last_solution_.empty()) { if (verbose_) { - LogNoLock(last_thread_, - absl::StrFormat("solution found with value %" GG_LL_FORMAT "d", - best_objective_)); + LogNoLock(last_thread_, absl::StrFormat("solution found with value %d", + best_objective_)); } Print(thread_id, last_solution_); last_solution_.clear(); diff --git a/ortools/flatzinc/solver.cc b/ortools/flatzinc/solver.cc index 973173a937..ad3fbf7321 100644 --- a/ortools/flatzinc/solver.cc +++ b/ortools/flatzinc/solver.cc @@ -95,7 +95,7 @@ std::string Solver::SolutionString(const SolutionOutputSpecs& output) const { return absl::StrFormat("%s = %s;", output.name, value == 1 ? "true" : "false"); } else { - return absl::StrFormat("%s = %" GG_LL_FORMAT "d;", output.name, value); + return absl::StrFormat("%s = %d;", output.name, value); } } else { const int bound_size = output.bounds.size(); @@ -103,9 +103,8 @@ std::string Solver::SolutionString(const SolutionOutputSpecs& output) const { absl::StrFormat("%s = array%dd(", output.name, bound_size); for (int i = 0; i < bound_size; ++i) { if (output.bounds[i].max_value != 0) { - result.append(absl::StrFormat( - "%" GG_LL_FORMAT "d..%" GG_LL_FORMAT "d, ", - output.bounds[i].min_value, output.bounds[i].max_value)); + result.append(absl::StrFormat("%d..%d, ", output.bounds[i].min_value, + output.bounds[i].max_value)); } else { result.append("{},"); } @@ -853,41 +852,38 @@ void Solver::Solve(FlatzincParameters p, SearchReportingInterface* report) { search_status = "=========="; proven = true; } + solver_status.append(absl::StrFormat("%%%% total runtime: %d ms\n", + solve_time + build_time)); solver_status.append( - absl::StrFormat("%%%% total runtime: %" GG_LL_FORMAT "d ms\n", - solve_time + build_time)); - solver_status.append(absl::StrFormat( - "%%%% build time: %" GG_LL_FORMAT "d ms\n", build_time)); - solver_status.append(absl::StrFormat( - "%%%% solve time: %" GG_LL_FORMAT "d ms\n", solve_time)); + absl::StrFormat("%%%% build time: %d ms\n", build_time)); + solver_status.append( + absl::StrFormat("%%%% solve time: %d ms\n", solve_time)); solver_status.append( absl::StrFormat("%%%% solutions: %d\n", num_solutions)); solver_status.append(absl::StrFormat("%%%% constraints: %d\n", solver_->constraints())); solver_status.append(absl::StrFormat( - "%%%% normal propagations: %" GG_LL_FORMAT "d\n", + "%%%% normal propagations: %d\n", solver_->demon_runs(operations_research::Solver::NORMAL_PRIORITY))); solver_status.append(absl::StrFormat( - "%%%% delayed propagations: %" GG_LL_FORMAT "d\n", + "%%%% delayed propagations: %d\n", solver_->demon_runs(operations_research::Solver::DELAYED_PRIORITY))); - solver_status.append( - absl::StrFormat("%%%% branches: %" GG_LL_FORMAT "d\n", - solver_->branches())); - solver_status.append( - absl::StrFormat("%%%% failures: %" GG_LL_FORMAT "d\n", - solver_->failures())); + solver_status.append(absl::StrFormat("%%%% branches: %d\n", + solver_->branches())); + solver_status.append(absl::StrFormat("%%%% failures: %d\n", + solver_->failures())); solver_status.append( absl::StrFormat("%%%% memory: %s\n", MemoryUsage())); const int64 best = report->BestSolution(); if (model_.objective() != nullptr) { if (!model_.maximize() && num_solutions > 0) { - solver_status.append(absl::StrFormat( - "%%%% min objective: %" GG_LL_FORMAT "d%s\n", best, - (proven ? " (proven)" : ""))); + solver_status.append( + absl::StrFormat("%%%% min objective: %d%s\n", best, + (proven ? " (proven)" : ""))); } else if (num_solutions > 0) { - solver_status.append(absl::StrFormat( - "%%%% max objective: %" GG_LL_FORMAT "d%s\n", best, - (proven ? " (proven)" : ""))); + solver_status.append( + absl::StrFormat("%%%% max objective: %d%s\n", best, + (proven ? " (proven)" : ""))); } } @@ -913,9 +909,7 @@ void Solver::Solve(FlatzincParameters p, SearchReportingInterface* report) { "%% name, status, obj, solns, s_time, b_time, br, " "fails, cts, demon, delayed, mem, search\n"); solver_status.append(absl::StrFormat( - "%%%% csv: %s, %s, %s, %d, %" GG_LL_FORMAT "d ms, %" GG_LL_FORMAT - "d ms, %" GG_LL_FORMAT "d, %" GG_LL_FORMAT "d, %d, %" GG_LL_FORMAT - "d, %" GG_LL_FORMAT "d, %s, %s", + "%%%% csv: %s, %s, %s, %d, %d ms, %d ms, %d, %d, %d, %d, %d, %s, %s", model_.name(), status_string, obj_string, num_solutions, solve_time, build_time, solver_->branches(), solver_->failures(), solver_->constraints(), diff --git a/ortools/flatzinc/solver_util.h b/ortools/flatzinc/solver_util.h index d5a5220dd8..b62868c856 100644 --- a/ortools/flatzinc/solver_util.h +++ b/ortools/flatzinc/solver_util.h @@ -27,7 +27,7 @@ namespace fz { class Log : public SearchLog { public: Log(operations_research::Solver* s, OptimizeVar* obj, int period) - : SearchLog(s, obj, nullptr, nullptr, period) {} + : SearchLog(s, obj, nullptr, 1.0, nullptr, period) {} ~Log() override {} protected: diff --git a/ortools/glop/markowitz.cc b/ortools/glop/markowitz.cc index bbf838a91c..f084c5083b 100644 --- a/ortools/glop/markowitz.cc +++ b/ortools/glop/markowitz.cc @@ -78,10 +78,10 @@ Status Markowitz::ComputeRowAndColumnPermutation(const MatrixView& basis_matrix, // report the singularity of the matrix. if (pivot_row == kInvalidRow || pivot_col == kInvalidCol || std::abs(pivot_coefficient) <= singularity_threshold) { - GLOP_RETURN_AND_LOG_ERROR( - Status::ERROR_LU, - absl::StrFormat("The matrix is singular! pivot = %E", - pivot_coefficient)); + const std::string error_message = absl::StrFormat( + "The matrix is singular! pivot = %E", pivot_coefficient); + VLOG(1) << "ERROR_LU: " << error_message; + return Status(Status::ERROR_LU, error_message); } DCHECK_EQ((*row_perm)[pivot_row], kInvalidRow); DCHECK_EQ((*col_perm)[pivot_col], kInvalidCol); diff --git a/ortools/glop/revised_simplex.cc b/ortools/glop/revised_simplex.cc index 6d8ef4b833..8497e0f0eb 100644 --- a/ortools/glop/revised_simplex.cc +++ b/ortools/glop/revised_simplex.cc @@ -1154,31 +1154,10 @@ Status RevisedSimplex::Initialize(const LinearProgram& lp) { // scenarios of warm-start depending on how did the problem change and which // simplex algorithm is used (primal or dual). bool solve_from_scratch = true; - if (!solution_state_.IsEmpty()) { - if (solution_state_has_been_set_externally_) { - // If an external basis has been provided we need to perform more work, - // e.g., factorize and validate it. - InitializeVariableStatusesForWarmStart(solution_state_, ColIndex(0)); - basis_.assign(num_rows_, kInvalidCol); - RowIndex row(0); - for (ColIndex col : variables_info_.GetIsBasicBitRow()) { - basis_[row] = col; - ++row; - } - // TODO(user): If the basis is incomplete, we could complete it with - // better slack variables than is done by InitializeFirstBasis() by - // using a partial LU decomposition (see markowitz.h). - dual_edge_norms_.Clear(); - dual_pricing_vector_.clear(); - if (InitializeFirstBasis(basis_).ok()) { - primal_edge_norms_.Clear(); - reduced_costs_.ClearAndRemoveCostShifts(); - solve_from_scratch = false; - } else { - LOG(WARNING) << "RevisedSimplex is not using the externally provided " - "basis because it is not factorizable."; - } - } else if (!parameters_.use_dual_simplex()) { + + // Try to perform a "quick" warm-start with no matrix factorization involved. + if (!solution_state_.IsEmpty() && !solution_state_has_been_set_externally_) { + if (!parameters_.use_dual_simplex()) { // With primal simplex, always clear dual norms and dual pricing. // Incrementality is supported only if only change to the matrix and // bounds is adding new columns (objective may change), and that all @@ -1198,6 +1177,7 @@ Status RevisedSimplex::Initialize(const LinearProgram& lp) { col_ref += num_new_cols; } } + // Make sure the primal edge norm are recomputed from scratch. // TODO(user): only the norms of the new columns actually need to be // computed. @@ -1239,6 +1219,36 @@ Status RevisedSimplex::Initialize(const LinearProgram& lp) { } } + // If we couldn't perform a "quick" warm start above, we can at least try to + // reuse the variable statuses. + if (solve_from_scratch && !solution_state_.IsEmpty()) { + // If an external basis has been provided or if the matrix changed, we need + // to perform more work, e.g., factorize the proposed basis and validate it. + InitializeVariableStatusesForWarmStart(solution_state_, ColIndex(0)); + basis_.assign(num_rows_, kInvalidCol); + RowIndex row(0); + for (ColIndex col : variables_info_.GetIsBasicBitRow()) { + basis_[row] = col; + ++row; + } + + basis_factorization_.Clear(); + reduced_costs_.ClearAndRemoveCostShifts(); + primal_edge_norms_.Clear(); + dual_edge_norms_.Clear(); + dual_pricing_vector_.clear(); + + // TODO(user): If the basis is incomplete, we could complete it with + // better slack variables than is done by InitializeFirstBasis() by + // using a partial LU decomposition (see markowitz.h). + if (InitializeFirstBasis(basis_).ok()) { + solve_from_scratch = false; + } else { + VLOG(1) << "RevisedSimplex is not using the warm start " + "basis because it is not factorizable."; + } + } + if (solve_from_scratch) { VLOG(1) << "Solve from scratch."; basis_factorization_.Clear(); diff --git a/ortools/graph/christofides.h b/ortools/graph/christofides.h index ac4975a986..08f3c7fa24 100644 --- a/ortools/graph/christofides.h +++ b/ortools/graph/christofides.h @@ -28,6 +28,7 @@ #include "ortools/graph/minimum_spanning_tree.h" #include "ortools/linear_solver/linear_solver.h" #include "ortools/linear_solver/linear_solver.pb.h" +#include "ortools/util/saturated_arithmetic.h" namespace operations_research { @@ -68,6 +69,16 @@ class ChristofidesPathSolver { // Runs the Christofides algorithm. void Solve(); + // Safe addition operator to avoid overflows when possible. + // template + // T SafeAdd(T a, T b) { + // return a + b; + // } + //template <> + int64 SafeAdd(int64 a, int64 b) { + return CapAdd(a, b); + } + // Matching algorithm to use. MatchingAlgorithm matching_; @@ -288,10 +299,12 @@ void ChristofidesPathSolver; +// ConnectedComponentsFinder +// cc; +// ... +// std::vector components; +// cc.FindConnectedComponents(&components); +// // If you want to, you can continue adding nodes and edges after calling // FindConnectedComponents, then call it again later. // diff --git a/ortools/graph/samples/SimpleMaxFlowProgram.csproj b/ortools/graph/samples/SimpleMaxFlowProgram.csproj index 63eda95d4b..7f79818bcc 100644 --- a/ortools/graph/samples/SimpleMaxFlowProgram.csproj +++ b/ortools/graph/samples/SimpleMaxFlowProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/graph/samples/SimpleMinCostFlowProgram.csproj b/ortools/graph/samples/SimpleMinCostFlowProgram.csproj index ea0323aa00..3c82e766ca 100644 --- a/ortools/graph/samples/SimpleMinCostFlowProgram.csproj +++ b/ortools/graph/samples/SimpleMinCostFlowProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/linear_solver/bop_interface.cc b/ortools/linear_solver/bop_interface.cc index 096eca9836..023d91899b 100644 --- a/ortools/linear_solver/bop_interface.cc +++ b/ortools/linear_solver/bop_interface.cc @@ -12,7 +12,6 @@ // limitations under the License. #include -#include #include #include diff --git a/ortools/linear_solver/glop_interface.cc b/ortools/linear_solver/glop_interface.cc index 919d033558..4e2757ced8 100644 --- a/ortools/linear_solver/glop_interface.cc +++ b/ortools/linear_solver/glop_interface.cc @@ -12,7 +12,6 @@ // limitations under the License. #include -#include #include #include diff --git a/ortools/linear_solver/samples/SimpleLpProgram.csproj b/ortools/linear_solver/samples/SimpleLpProgram.csproj index ce5fe6f04c..f414091e38 100644 --- a/ortools/linear_solver/samples/SimpleLpProgram.csproj +++ b/ortools/linear_solver/samples/SimpleLpProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/linear_solver/samples/SimpleMipProgram.csproj b/ortools/linear_solver/samples/SimpleMipProgram.csproj index 44db6e0c12..716dfb312c 100644 --- a/ortools/linear_solver/samples/SimpleMipProgram.csproj +++ b/ortools/linear_solver/samples/SimpleMipProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/cp_model_loader.cc b/ortools/sat/cp_model_loader.cc index d336ae832b..70c0cf2b50 100644 --- a/ortools/sat/cp_model_loader.cc +++ b/ortools/sat/cp_model_loader.cc @@ -544,8 +544,14 @@ void LoadEquivalenceAC(const std::vector enforcement_literal, } // Exclude the values that can never be "matched" by coeff2 * var2. + // We need the std::sort() to be deterministic! + std::vector implied_false; for (const auto entry : term1_value_to_literal) { - m->Add(EnforcedClause(enforcement_literal, {entry.second.Negated()})); + implied_false.push_back(entry.second); + } + std::sort(implied_false.begin(), implied_false.end()); + for (const Literal l : implied_false) { + m->Add(EnforcedClause(enforcement_literal, {l.Negated()})); } } diff --git a/ortools/sat/cp_model_loader.h b/ortools/sat/cp_model_loader.h index 0fd6b464a1..0b44d85152 100644 --- a/ortools/sat/cp_model_loader.h +++ b/ortools/sat/cp_model_loader.h @@ -17,10 +17,10 @@ #include #include -#include "ortools/base/integral_types.h" #include "absl/container/flat_hash_set.h" #include "ortools/base/int_type.h" #include "ortools/base/int_type_indexed_vector.h" +#include "ortools/base/integral_types.h" #include "ortools/base/logging.h" #include "ortools/base/map_util.h" #include "ortools/sat/cp_model.pb.h" diff --git a/ortools/sat/cp_model_presolve.cc b/ortools/sat/cp_model_presolve.cc index d8f6063a9d..fa8a874100 100644 --- a/ortools/sat/cp_model_presolve.cc +++ b/ortools/sat/cp_model_presolve.cc @@ -2499,11 +2499,13 @@ bool PresolveOneConstraint(int c, PresolveContext* context) { if (PresolveLinear(ct, context)) { context->UpdateConstraintVariableUsage(c); } + if (context->is_unsat) return false; if (ct->constraint_case() == ConstraintProto::ConstraintCase::kLinear) { const int old_num_enforcement_literals = ct->enforcement_literal_size(); ExtractEnforcementLiteralFromLinearConstraint(ct, context); if (ct->enforcement_literal_size() > old_num_enforcement_literals) { PresolveLinear(ct, context); + if (context->is_unsat) return false; context->UpdateConstraintVariableUsage(c); } } @@ -2532,7 +2534,7 @@ bool PresolveOneConstraint(int c, PresolveContext* context) { } } -void PresolveToFixPoint(PresolveContext* context) { +void PresolveToFixPoint(PresolveContext* context, TimeLimit* time_limit) { if (context->is_unsat) return; // This is used for constraint having unique variables in them (i.e. not @@ -2545,7 +2547,9 @@ void PresolveToFixPoint(PresolveContext* context) { std::deque queue(context->working_model->constraints_size()); std::iota(queue.begin(), queue.end(), 0); while (!queue.empty() && !context->is_unsat) { + if (time_limit != nullptr && time_limit->LimitReached()) break; while (!queue.empty() && !context->is_unsat) { + if (time_limit != nullptr && time_limit->LimitReached()) break; const int c = queue.front(); in_queue[c] = false; queue.pop_front(); @@ -2765,13 +2769,15 @@ void PresolveCpModel(const PresolveOptions& options, } // Main propagation loop. - PresolveToFixPoint(&context); + PresolveToFixPoint(&context, options.time_limit); // Runs the probing. // TODO(user): do that and the pure-SAT part below more than once. if (options.parameters.cp_model_probing_level() > 0) { - Probe(options.time_limit, &context); - PresolveToFixPoint(&context); + if (options.time_limit == nullptr || !options.time_limit->LimitReached()) { + Probe(options.time_limit, &context); + PresolveToFixPoint(&context, options.time_limit); + } } RemoveUnusedEquivalentVariables(&context); @@ -2782,7 +2788,9 @@ void PresolveCpModel(const PresolveOptions& options, // // TODO(user): expose the parameters here so we can use // cp_model_use_sat_presolve(). - PresolvePureSatPart(&context); + if (options.time_limit == nullptr || !options.time_limit->LimitReached()) { + PresolvePureSatPart(&context); + } // Extract redundant at most one constraint form the linear ones. // diff --git a/ortools/sat/cp_model_solver.cc b/ortools/sat/cp_model_solver.cc index 086703fd67..b289a3ae4a 100644 --- a/ortools/sat/cp_model_solver.cc +++ b/ortools/sat/cp_model_solver.cc @@ -29,7 +29,6 @@ #include "ortools/base/file.h" #endif // __PORTABLE_PLATFORM__ -#include "ortools/base/integral_types.h" #include "absl/container/flat_hash_set.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -38,6 +37,7 @@ #include "ortools/base/commandlineflags.h" #include "ortools/base/int_type.h" #include "ortools/base/int_type_indexed_vector.h" +#include "ortools/base/integral_types.h" #include "ortools/base/logging.h" #include "ortools/base/map_util.h" #include "ortools/base/status.h" @@ -94,6 +94,10 @@ DEFINE_double(max_drat_time_in_seconds, std::numeric_limits::infinity(), "Maximum time in seconds to check the DRAT proof. This will only " "be used is the drat_check flag is enabled."); +DEFINE_bool(cp_model_check_intermediate_solutions, false, + "When true, all intermediate solutions found by the solver will be " + "checked. This can be expensive, therefore it is off by default."); + namespace operations_research { namespace sat { @@ -536,7 +540,10 @@ void FillSolutionInResponse(const CpModelProto& model_proto, const Model& model, } if (!solution.empty()) { - DCHECK(SolutionIsFeasible(model_proto, solution)); + if (DEBUG_MODE || FLAGS_cp_model_check_intermediate_solutions) { + // TODO(user): Checks against initial model. + CHECK(SolutionIsFeasible(model_proto, solution)); + } for (const int64 value : solution) response->add_solution(value); } else { // Not all variables are fixed. @@ -573,7 +580,7 @@ void FillSolutionInResponse(const CpModelProto& model_proto, const Model& model, } response->set_objective_value(ScaleObjectiveValue(obj, objective_value)); response->set_best_objective_bound(ScaleObjectiveValue( - obj, integer_trail->LevelZeroBound(objective_var).value())); + obj, integer_trail->LevelZeroLowerBound(objective_var).value())); } else { response->clear_objective_value(); response->clear_best_objective_bound(); @@ -1016,9 +1023,11 @@ IntegerVariable AddLPConstraints(const CpModelProto& model_proto, // Dispatch every constraint to its LinearProgrammingConstraint. std::map representative_to_lp_constraint; std::vector lp_constraints; + std::map> id_to_constraints; for (int i = 0; i < num_lp_constraints; i++) { const int id = components.GetClassRepresentative(get_constraint_index(i)); if (components_to_size[id] <= 1) continue; + id_to_constraints[id].push_back(relaxation.linear_constraints[i]); if (!gtl::ContainsKey(representative_to_lp_constraint, id)) { auto* lp = m->Create(); representative_to_lp_constraint[id] = lp; @@ -1026,15 +1035,8 @@ IntegerVariable AddLPConstraints(const CpModelProto& model_proto, } // Load the constraint. - LinearProgrammingConstraint* lp = representative_to_lp_constraint[id]; - const auto lp_constraint = - lp->CreateNewConstraint(relaxation.linear_constraints[i].lb, - relaxation.linear_constraints[i].ub); - for (int j = 0; j < relaxation.linear_constraints[i].vars.size(); ++j) { - lp->SetCoefficient(lp_constraint, - relaxation.linear_constraints[i].vars[j], - relaxation.linear_constraints[i].coeffs[j]); - } + gtl::FindOrDie(representative_to_lp_constraint, id) + ->AddLinearConstraint(relaxation.linear_constraints[i]); } // Dispatch every cut generator to its LinearProgrammingConstraint. @@ -1050,6 +1052,8 @@ IntegerVariable AddLPConstraints(const CpModelProto& model_proto, lp->AddCutGenerator(std::move(relaxation.cut_generators[i])); } + const SatParameters& params = *(m->GetOrCreate()); + // Add the objective. std::map>> representative_to_cp_terms; @@ -1140,11 +1144,13 @@ void SetSynchronizationFunction(std::function f, model->GetOrCreate()->f = std::move(f); } -void SetObjectiveSynchronizationFunction(std::function f, - Model* model) { +void SetObjectiveSynchronizationFunctions(std::function f, + std::function g, + Model* model) { ObjectiveSynchronizationHelper* helper = model->GetOrCreate(); helper->get_external_bound = std::move(f); + helper->get_external_best_bound = std::move(g); } #if !defined(__PORTABLE_PLATFORM__) @@ -1180,7 +1186,7 @@ CpSolverResponse SolveCpModelInternal( const CpModelProto& model_proto, bool is_real_solve, const std::function& external_solution_observer, - Model* model) { + bool watch_objective_lower_bound, Model* model) { // Timing. WallTimer wall_timer; UserTimer user_timer; @@ -1402,6 +1408,38 @@ CpSolverResponse SolveCpModelInternal( external_solution_observer(response); }; + CpSolverResponse lb_response; + if (watch_objective_lower_bound) { + const auto broadcast_lower_bound = + [&model_proto, &fill_response_statistics, external_solution_observer, + &lb_response, objective_var, &solution_info, + model](const std::vector& modified_vars) { + auto* integer_trail = model->Get(); + const CpObjectiveProto& obj = model_proto.objective(); + const double new_best_bound = ScaleObjectiveValue( + obj, integer_trail->LevelZeroLowerBound(objective_var).value()); + ObjectiveSynchronizationHelper* helper = + model->GetOrCreate(); + const double current_best_bound = helper->get_external_best_bound(); + const double current_objective_value = helper->get_external_bound(); + if ((helper->scaling_factor >= 0 && + new_best_bound > current_best_bound) || + (helper->scaling_factor < 0 && + new_best_bound < current_best_bound)) { + lb_response.clear_solution(); + lb_response.clear_solution_lower_bounds(); + lb_response.clear_solution_upper_bounds(); + lb_response.set_status(CpSolverStatus::UNKNOWN); + lb_response.set_objective_value(current_objective_value); + lb_response.set_best_objective_bound(new_best_bound); + external_solution_observer(lb_response); + } + }; + + model->GetOrCreate() + ->RegisterLevelZeroModifiedVariablesCallback(broadcast_lower_bound); + } + // Load solution hint. // We follow it and allow for a tiny number of conflicts before giving up. // @@ -1567,7 +1605,8 @@ void PostsolveResponse(const CpModelProto& model_proto, postsolve_model.Add(operations_research::sat::NewSatParameters(params)); } const CpSolverResponse postsolve_response = SolveCpModelInternal( - mapping_proto, false, [](const CpSolverResponse&) {}, &postsolve_model); + mapping_proto, false, [](const CpSolverResponse&) {}, false, + &postsolve_model); CHECK_EQ(postsolve_response.status(), CpSolverStatus::FEASIBLE); // We only copy the solution from the postsolve_response to the response. @@ -1770,7 +1809,7 @@ CpSolverResponse SolveCpModelWithLNS( response = synchro->f(); } else { response = SolveCpModelInternal(model_proto, /*is_real_solve=*/true, - observer, model); + observer, false, model); } if (response.status() != CpSolverStatus::FEASIBLE) { return response; @@ -1858,7 +1897,7 @@ CpSolverResponse SolveCpModelWithLNS( &postsolve_mapping); local_response = SolveCpModelInternal( local_problem, true, [](const CpSolverResponse& response) {}, - &local_model); + false, &local_model); PostsolveResponse(model_proto, mapping_proto, postsolve_mapping, &local_response); } @@ -1902,10 +1941,12 @@ CpSolverResponse SolveCpModelWithLNS( response.set_deterministic_time( response.deterministic_time() + local_response.deterministic_time()); - DCHECK(SolutionIsFeasible( - model_proto, - std::vector(local_response.solution().begin(), - local_response.solution().end()))); + if (DEBUG_MODE || FLAGS_cp_model_check_intermediate_solutions) { + CHECK(SolutionIsFeasible( + model_proto, + std::vector(local_response.solution().begin(), + local_response.solution().end()))); + } if (num_no_progress == 0) { // Improving solution. response.set_solution_info(solution_info); observer(response); @@ -1980,7 +2021,7 @@ CpSolverResponse SolveCpModelParallel( local_model.GetOrCreate()->RegisterExternalBooleanAsLimit( stopped); const CpSolverResponse local_response = SolveCpModelInternal( - model_proto, true, [](const CpSolverResponse& response) {}, + model_proto, true, [](const CpSolverResponse& response) {}, false, &local_model); absl::MutexLock lock(&mutex); @@ -2003,6 +2044,10 @@ CpSolverResponse SolveCpModelParallel( absl::MutexLock lock(&mutex); return best_response.objective_value(); }; + const auto objective_bound_synchronization = [&mutex, &best_response]() { + absl::MutexLock lock(&mutex); + return best_response.best_objective_bound(); + }; const auto solution_synchronization = [&mutex, &best_response]() { absl::MutexLock lock(&mutex); return best_response; @@ -2018,7 +2063,7 @@ CpSolverResponse SolveCpModelParallel( params, model_proto, worker_id, &worker_name); const auto solution_observer = [maximize, worker_name, &mutex, - &best_response, &observer, + &best_response, &observer, &model_proto, &first_solution_found_or_search_finished]( const CpSolverResponse& r) { absl::MutexLock lock(&mutex); @@ -2028,9 +2073,14 @@ CpSolverResponse SolveCpModelParallel( if (MergeOptimizationSolution(r, maximize, &best_response)) { best_response.set_solution_info( absl::StrCat(worker_name, " ", r.solution_info())); + CHECK(SolutionIsFeasible( + model_proto, + std::vector(r.solution().begin(), r.solution().end()))); observer(best_response); // We have potentially displayed the improving solution, and updated // the best_response. We can awaken sleeping LNS threads. + // + CHECK(r.status() == CpSolverStatus::FEASIBLE); if (!first_solution_found_or_search_finished.HasBeenNotified()) { first_solution_found_or_search_finished.Notify(); } @@ -2038,18 +2088,20 @@ CpSolverResponse SolveCpModelParallel( }; pool.Schedule([&model_proto, solution_observer, solution_synchronization, - objective_synchronization, stopped, local_params, - worker_id, &mutex, &best_response, num_search_workers, - random_seed, &first_solution_found_or_search_finished, - maximize, worker_name]() { + objective_synchronization, objective_bound_synchronization, + stopped, local_params, worker_id, &mutex, &best_response, + num_search_workers, random_seed, + &first_solution_found_or_search_finished, maximize, + worker_name]() { Model local_model; local_model.Add(NewSatParameters(local_params)); local_model.GetOrCreate()->RegisterExternalBooleanAsLimit( stopped); SetSynchronizationFunction(std::move(solution_synchronization), &local_model); - SetObjectiveSynchronizationFunction( - std::move(objective_synchronization), &local_model); + SetObjectiveSynchronizationFunctions( + std::move(objective_synchronization), + std::move(objective_bound_synchronization), &local_model); CpSolverResponse thread_response; if (local_params.use_lns()) { @@ -2061,7 +2113,7 @@ CpSolverResponse SolveCpModelParallel( worker_id + random_seed, &local_model); } else { thread_response = SolveCpModelInternal( - model_proto, true, solution_observer, &local_model); + model_proto, true, solution_observer, true, &local_model); } // Process final solution. Decide which worker has the 'best' @@ -2213,9 +2265,11 @@ CpSolverResponse SolveCpModel(const CpModelProto& model_proto, Model* model) { CpSolverResponse copy = response; postprocess_solution(©); if (!copy.solution().empty()) { - DCHECK(SolutionIsFeasible(model_proto, - std::vector(copy.solution().begin(), - copy.solution().end()))); + if (DEBUG_MODE || FLAGS_cp_model_check_intermediate_solutions) { + CHECK(SolutionIsFeasible( + model_proto, std::vector(copy.solution().begin(), + copy.solution().end()))); + } } for (const auto& observer : observers) { observer(copy); @@ -2240,7 +2294,7 @@ CpSolverResponse SolveCpModel(const CpModelProto& model_proto, Model* model) { model); } else { response = SolveCpModelInternal(new_model, /*is_real_solve=*/true, - observer_function, model); + observer_function, false, model); } postprocess_solution(&response); diff --git a/ortools/sat/cp_model_solver.h b/ortools/sat/cp_model_solver.h index 7385cba044..a5f9bceabd 100644 --- a/ortools/sat/cp_model_solver.h +++ b/ortools/sat/cp_model_solver.h @@ -62,10 +62,12 @@ std::function NewFeasibleSolutionObserver( void SetSynchronizationFunction(std::function f, Model* model); -// Wait until this function returns with the objective value of the current -// best solution. -void SetObjectiveSynchronizationFunction(std::function f, - Model* model); +// Sets two funtions to query the state of the shared objective. +// - f will wait and return the best objective value. +// - g will wait and return the best objective 'best bound'. +void SetObjectiveSynchronizationFunctions(std::function f, + std::function g, + Model* model); // Allows to change the default parameters with // model->Add(NewSatParameters(parameters_as_string_or_proto)) diff --git a/ortools/sat/cuts.cc b/ortools/sat/cuts.cc new file mode 100644 index 0000000000..d7be6fae3c --- /dev/null +++ b/ortools/sat/cuts.cc @@ -0,0 +1,26 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "ortools/sat/cuts.h" + +#include +#include +#include + +#include "ortools/base/integral_types.h" +#include "ortools/sat/integer.h" +#include "ortools/util/time_limit.h" + +namespace operations_research { +namespace sat {} // namespace sat +} // namespace operations_research diff --git a/ortools/sat/cuts.h b/ortools/sat/cuts.h new file mode 100644 index 0000000000..06b32f6881 --- /dev/null +++ b/ortools/sat/cuts.h @@ -0,0 +1,47 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OR_TOOLS_SAT_CUTS_H_ +#define OR_TOOLS_SAT_CUTS_H_ + +#include +#include + +#include "ortools/base/int_type.h" +#include "ortools/sat/integer.h" +#include "ortools/sat/linear_constraint.h" +#include "ortools/sat/model.h" +#include "ortools/util/time_limit.h" + +namespace operations_research { +namespace sat { + +// A "cut" generator on a set of IntegerVariable. +// +// The generate_cuts() function will usually be called with the current LP +// optimal solution (but should work for any lp_values). Note that a +// CutGenerator should: +// - Only look at the lp_values positions that corresponds to its 'vars' or +// their negation. +// - Only return cuts in term of the same variables or their negation. +struct CutGenerator { + std::vector vars; + std::function( + const gtl::ITIVector& lp_values)> + generate_cuts; +}; + +} // namespace sat +} // namespace operations_research + +#endif // OR_TOOLS_SAT_CUTS_H_ diff --git a/ortools/sat/doc/scheduling.md b/ortools/sat/doc/scheduling.md index 9e8f71313f..53b51f35d3 100644 --- a/ortools/sat/doc/scheduling.md +++ b/ortools/sat/doc/scheduling.md @@ -881,9 +881,10 @@ public class RankingSampleSat { /** * This code takes a list of interval variables in a noOverlap constraint, and a parallel list of * integer variables and enforces the following constraint - * - *

- rank[i] == -1 iff interval[i] is not active. - rank[i] == number of active intervals that - * precede interval[i]. + *

    + *
  • rank[i] == -1 iff interval[i] is not active. + *
  • rank[i] == number of active intervals that precede interval[i]. + *
*/ static void rankTasks(CpModel model, IntVar[] starts, Literal[] presences, IntVar[] ranks) { int numTasks = starts.length; diff --git a/ortools/sat/integer.cc b/ortools/sat/integer.cc index 3edd99678a..7552347c6d 100644 --- a/ortools/sat/integer.cc +++ b/ortools/sat/integer.cc @@ -637,7 +637,7 @@ int IntegerTrail::NumConstantVariables() const { int IntegerTrail::FindLowestTrailIndexThatExplainBound( IntegerLiteral i_lit) const { DCHECK_LE(i_lit.bound, vars_[i_lit.var].current_bound); - if (i_lit.bound <= LevelZeroBound(i_lit.var)) return -1; + if (i_lit.bound <= LevelZeroLowerBound(i_lit.var)) return -1; int trail_index = vars_[i_lit.var].current_trail_index; // Check the validity of the cached index and use it if possible. This caching @@ -718,7 +718,7 @@ void IntegerTrail::RemoveLevelZeroBounds( std::vector* reason) const { int new_size = 0; for (const IntegerLiteral literal : *reason) { - if (literal.bound <= LevelZeroBound(literal.var)) continue; + if (literal.bound <= LevelZeroLowerBound(literal.var)) continue; (*reason)[new_size++] = literal; } reason->resize(new_size); @@ -854,7 +854,7 @@ bool IntegerTrail::ReasonIsValid( } } for (const IntegerLiteral i_lit : integer_reason) { - if (LevelZeroBound(i_lit.var) < i_lit.bound) { + if (LevelZeroLowerBound(i_lit.var) < i_lit.bound) { num_literal_assigned_after_root_node++; } } @@ -1308,6 +1308,14 @@ void GenericLiteralWatcher::UpdateCallingNeeds(Trail* trail) { } } } + + if (trail->CurrentDecisionLevel() == 0 && + level_zero_modified_variable_callback_ != nullptr && + !modified_vars_.PositionsSetAtLeastOnce().empty()) { + level_zero_modified_variable_callback_( + modified_vars_.PositionsSetAtLeastOnce()); + } + modified_vars_.ClearAndResize(integer_trail_->NumIntegerVariables()); } diff --git a/ortools/sat/integer.h b/ortools/sat/integer.h index 323cadeee9..c6fc96bf29 100644 --- a/ortools/sat/integer.h +++ b/ortools/sat/integer.h @@ -66,6 +66,31 @@ const IntegerValue kMaxIntegerValue( std::numeric_limits::max() - 1); const IntegerValue kMinIntegerValue(-kMaxIntegerValue); +inline double ToDouble(IntegerValue value) { + const double kInfinity = std::numeric_limits::infinity(); + if (value >= kMaxIntegerValue) return kInfinity; + if (value <= kMinIntegerValue) return -kInfinity; + return static_cast(value.value()); +} + +inline IntegerValue CeilRatio(IntegerValue dividend, + IntegerValue positive_divisor) { + CHECK_GT(positive_divisor, 0); + const IntegerValue result = dividend / positive_divisor; + const IntegerValue adjust = + static_cast(result * positive_divisor < dividend); + return result + adjust; +} + +inline IntegerValue FloorRatio(IntegerValue dividend, + IntegerValue positive_divisor) { + CHECK_GT(positive_divisor, 0); + const IntegerValue result = dividend / positive_divisor; + const IntegerValue adjust = + static_cast(result * positive_divisor > dividend); + return result - adjust; +} + // Index of an IntegerVariable. // // Each time we create an IntegerVariable we also create its negation. This is @@ -496,11 +521,6 @@ class IntegerTrail : public SatPropagator { IntegerValue LowerBound(IntegerVariable i) const; IntegerValue UpperBound(IntegerVariable i) const; - // Returns the value of the lower bound before the last Enqueue() that changed - // it. Note that PreviousLowerBound() == LowerBound() iff this is the level - // zero bound. - IntegerValue PreviousLowerBound(IntegerVariable i) const; - // Returns the integer literal that represent the current lower/upper bound of // the given integer variable. IntegerLiteral LowerBoundAsLiteral(IntegerVariable i) const; @@ -510,6 +530,10 @@ class IntegerTrail : public SatPropagator { bool IntegerLiteralIsTrue(IntegerLiteral l) const; bool IntegerLiteralIsFalse(IntegerLiteral l) const; + // Returns globally valid lower/upper bound on the given integer variable. + IntegerValue LevelZeroLowerBound(IntegerVariable var) const; + IntegerValue LevelZeroUpperBound(IntegerVariable var) const; + // Advanced usage. Given the reason for // (Sum_i coeffs[i] * reason[i].var >= current_lb) initially in reason, // this function relaxes the reason given that we only need the explanation of @@ -619,13 +643,6 @@ class IntegerTrail : public SatPropagator { return false; } - // Returns a lower bound on the given var that will always be valid. - IntegerValue LevelZeroBound(IntegerVariable var) const { - // The level zero bounds are stored at the beginning of the trail and they - // also serves as sentinels. Their index match the variables index. - return integer_trail_[var.value()].bound; - } - // Returns true if the variable lower bound is still the one from level zero. bool VariableLowerBoundIsFromLevelZero(IntegerVariable var) const { return vars_[var].current_trail_index < vars_.size(); @@ -889,6 +906,17 @@ class GenericLiteralWatcher : public SatPropagator { // Returns the number of registered propagators. int NumPropagators() const { return in_queue_.size(); } + // Set a callback for new variable bounds at level 0. + // + // This will be called (only at level zero) with the list + // of IntegerVariable with changed lower bounds. Note that it + // might be called more than once during the same propagation + // cycle if we fix variables in "stages". + void RegisterLevelZeroModifiedVariablesCallback( + const std::function&)> cb) { + level_zero_modified_variable_callback_ = cb; + } + private: // Updates queue_ and in_queue_ with the propagator ids that need to be // called. @@ -920,6 +948,9 @@ class GenericLiteralWatcher : public SatPropagator { std::vector id_to_priority_; std::vector id_to_idempotence_; + std::function&)> + level_zero_modified_variable_callback_ = nullptr; + DISALLOW_COPY_AND_ASSIGN(GenericLiteralWatcher); }; @@ -951,12 +982,6 @@ inline IntegerValue IntegerTrail::LowerBound(IntegerVariable i) const { return vars_[i].current_bound; } -inline IntegerValue IntegerTrail::PreviousLowerBound(IntegerVariable i) const { - const int index = vars_[i].current_trail_index; - if (index < vars_.size()) return LowerBound(i); - return integer_trail_[integer_trail_[index].prev_trail_index].bound; -} - inline IntegerValue IntegerTrail::UpperBound(IntegerVariable i) const { return -vars_[NegationOf(i)].current_bound; } @@ -979,6 +1004,18 @@ inline bool IntegerTrail::IntegerLiteralIsFalse(IntegerLiteral l) const { return l.bound > UpperBound(l.var); } +// The level zero bounds are stored at the beginning of the trail and they also +// serves as sentinels. Their index match the variables index. +inline IntegerValue IntegerTrail::LevelZeroLowerBound( + IntegerVariable var) const { + return integer_trail_[var.value()].bound; +} + +inline IntegerValue IntegerTrail::LevelZeroUpperBound( + IntegerVariable var) const { + return -integer_trail_[NegationOf(var).value()].bound; +} + inline void GenericLiteralWatcher::WatchLiteral(Literal l, int id, int watch_index) { if (l.Index() >= literal_to_watcher_.size()) { diff --git a/ortools/sat/integer_search.cc b/ortools/sat/integer_search.cc index b0abfc153f..33249fdc8d 100644 --- a/ortools/sat/integer_search.cc +++ b/ortools/sat/integer_search.cc @@ -209,9 +209,11 @@ std::function ExploitIntegerLpSolution( VLOG(2) << "Integer LP solution at level:" << old_level << " obj:" << old_obj; } - for (IntegerLiteral l : encoder->GetIntegerLiterals(Literal(decision))) { + for (const IntegerLiteral l : + encoder->GetIntegerLiterals(Literal(decision))) { const IntegerVariable positive_var = VariableIsPositive(l.var) ? l.var : NegationOf(l.var); + if (integer_trail->IsCurrentlyIgnored(positive_var)) continue; LinearProgrammingConstraint* lp = gtl::FindWithDefault(*lp_dispatcher, positive_var, nullptr); if (lp != nullptr) { @@ -417,23 +419,46 @@ SatSolver::Status SolveProblemWithPortfolioSearch( // TODO(user): Maybe do not check this at each decision. if (synchronize_objective) { const double external_bound = helper->get_external_bound(); - if (std::isfinite(external_bound)) { - IntegerValue best_bound(helper->UnscaledObjective(external_bound)); - IntegerTrail* const integer_trail = model->GetOrCreate(); - if (best_bound <= integer_trail->UpperBound(helper->objective_var)) { - if (!solver->RestoreSolverToAssumptionLevel()) { - return solver->UnsatStatus(); - } - DCHECK_EQ(solver->CurrentDecisionLevel(), 0); - if (!integer_trail->Enqueue( - IntegerLiteral::LowerOrEqual(helper->objective_var, - best_bound - 1), - {}, {})) { - return SatSolver::INFEASIBLE; - } - if (!solver->FinishPropagation()) { - return solver->UnsatStatus(); - } + CHECK(helper->get_external_best_bound != nullptr); + const double external_best_bound = helper->get_external_best_bound(); + IntegerTrail* const integer_trail = model->GetOrCreate(); + IntegerValue current_objective_upper_bound( + integer_trail->UpperBound(helper->objective_var)); + IntegerValue current_objective_lower_bound( + integer_trail->LowerBound(helper->objective_var)); + const bool has_new_upper_bound = std::isfinite(external_bound); + const bool has_new_lower_bound = std::isfinite(external_best_bound); + IntegerValue new_objective_upper_bound( + has_new_upper_bound ? helper->UnscaledObjective(external_bound) : 0); + IntegerValue new_objective_lower_bound( + has_new_lower_bound ? helper->UnscaledObjective(external_best_bound) + : 0); + if ((has_new_upper_bound && + new_objective_upper_bound <= current_objective_upper_bound) || + (has_new_lower_bound && + new_objective_lower_bound > current_objective_lower_bound)) { + if (!solver->RestoreSolverToAssumptionLevel()) { + return solver->UnsatStatus(); + } + DCHECK_EQ(solver->CurrentDecisionLevel(), 0); + if (has_new_upper_bound && + new_objective_upper_bound <= current_objective_upper_bound && + !integer_trail->Enqueue( + IntegerLiteral::LowerOrEqual(helper->objective_var, + new_objective_upper_bound - 1), + {}, {})) { + return SatSolver::INFEASIBLE; + } + if (has_new_lower_bound && + new_objective_lower_bound > current_objective_lower_bound && + !integer_trail->Enqueue( + IntegerLiteral::GreaterOrEqual(helper->objective_var, + new_objective_lower_bound), + {}, {})) { + return SatSolver::INFEASIBLE; + } + if (!solver->FinishPropagation()) { + return solver->UnsatStatus(); } } } diff --git a/ortools/sat/integer_search.h b/ortools/sat/integer_search.h index 8cede37ca9..7f78c325d7 100644 --- a/ortools/sat/integer_search.h +++ b/ortools/sat/integer_search.h @@ -114,6 +114,7 @@ struct ObjectiveSynchronizationHelper { double offset = 0.0; IntegerVariable objective_var = kNoIntegerVariable; std::function get_external_bound = nullptr; + std::function get_external_best_bound = nullptr; int64 UnscaledObjective(double value) const { return static_cast(std::round(value / scaling_factor - offset)); diff --git a/ortools/sat/linear_constraint.cc b/ortools/sat/linear_constraint.cc new file mode 100644 index 0000000000..e8ae29eaf1 --- /dev/null +++ b/ortools/sat/linear_constraint.cc @@ -0,0 +1,31 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "ortools/sat/linear_constraint.h" + +namespace operations_research { +namespace sat { + +double ComputeActivity(const LinearConstraint& constraint, + const gtl::ITIVector& values) { + double activity = 0; + for (int i = 0; i < constraint.vars.size(); ++i) { + const IntegerVariable var = constraint.vars[i]; + const IntegerValue coeff = constraint.coeffs[i]; + activity += coeff.value() * values[var]; + } + return activity; +} + +} // namespace sat +} // namespace operations_research diff --git a/ortools/sat/linear_constraint.h b/ortools/sat/linear_constraint.h new file mode 100644 index 0000000000..a29ccded6b --- /dev/null +++ b/ortools/sat/linear_constraint.h @@ -0,0 +1,180 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OR_TOOLS_SAT_LINEAR_CONSTRAINT_H_ +#define OR_TOOLS_SAT_LINEAR_CONSTRAINT_H_ + +#include + +#include "ortools/sat/integer.h" +#include "ortools/sat/model.h" + +namespace operations_research { +namespace sat { + +// One linear constraint on a set of Integer variables. +// Important: there should be no duplicate variables. +// +// We also assume that we never have integer overflow when evaluating such +// constraint. This should be enforced by the checker for user given +// constraints, and we must enforce it ourselves for the newly created +// constraint. We requires: +// - sum_i max(0, max(c_i * lb_i, c_i * ub_i)) < kMaxIntegerValue. +// - sum_i min(0, min(c_i * lb_i, c_i * ub_i)) > kMinIntegerValue +// so that in whichever order we compute the sum, we have no overflow. Note +// that this condition invoves the bounds of the variables. +// +// TODO(user): Add DCHECKs for the no-overflow property? but we need access +// to the variable bounds. +struct LinearConstraint { + IntegerValue lb; + IntegerValue ub; + std::vector vars; + std::vector coeffs; + + LinearConstraint() {} + LinearConstraint(IntegerValue _lb, IntegerValue _ub) : lb(_lb), ub(_ub) {} + + void AddTerm(IntegerVariable var, IntegerValue coeff) { + vars.push_back(var); + coeffs.push_back(coeff); + } + + std::string DebugString() const { + std::string result; + if (lb.value() > kMinIntegerValue) { + absl::StrAppend(&result, lb.value(), " <= "); + } + for (int i = 0; i < vars.size(); ++i) { + const IntegerValue coeff = + VariableIsPositive(vars[i]) ? coeffs[i] : -coeffs[i]; + absl::StrAppend(&result, coeff.value(), "*X", vars[i].value() / 2, " "); + } + if (ub.value() < kMaxIntegerValue) { + absl::StrAppend(&result, "<= ", ub.value()); + } + return result; + } + + bool operator==(const LinearConstraint other) const { + if (this->lb != other.lb) return false; + if (this->ub != other.ub) return false; + if (this->vars != other.vars) return false; + if (this->coeffs != other.coeffs) return false; + return true; + } +}; + +// Allow to build a LinearConstraint while making sure there is no duplicate +// variables. +// +// TODO(user): Storing all coeff in the vector then sorting and merging +// duplicates might be more efficient. Change if required. +class LinearConstraintBuilder { + public: + // We support "sticky" kMinIntegerValue for lb and kMaxIntegerValue for ub + // for one-sided constraints. + LinearConstraintBuilder(const Model* model, IntegerValue lb, IntegerValue ub) + : assignment_(model->Get()->Assignment()), + encoder_(*model->Get()), + lb_(lb), + ub_(ub) {} + + int size() const { return terms_.size(); } + bool IsEmpty() const { return terms_.empty(); } + + // Adds var * coeff to the constraint. + void AddTerm(IntegerVariable var, IntegerValue coeff) { + // We can either add var or NegationOf(var), and we always choose the + // positive one. + if (VariableIsPositive(var)) { + terms_[var] += coeff; + if (terms_[var] == 0) terms_.erase(var); + } else { + const IntegerVariable minus_var = NegationOf(var); + terms_[minus_var] -= coeff; + if (terms_[minus_var] == 0) terms_.erase(minus_var); + } + } + + // Add literal * coeff to the constaint. Returns false and do nothing if the + // given literal didn't have an integer view. + ABSL_MUST_USE_RESULT bool AddLiteralTerm(Literal lit, IntegerValue coeff) { + if (assignment_.LiteralIsTrue(lit)) { + if (lb_ > kMinIntegerValue) lb_ -= coeff; + if (ub_ < kMaxIntegerValue) ub_ -= coeff; + return true; + } + if (assignment_.LiteralIsFalse(lit)) { + return true; + } + + bool has_direct_view = encoder_.GetLiteralView(lit) != kNoIntegerVariable; + bool has_opposite_view = + encoder_.GetLiteralView(lit.Negated()) != kNoIntegerVariable; + + // If a literal has both views, we want to always keep the same + // representative: the smallest IntegerVariable. Note that AddTerm() will + // also make sure to use the associated positive variable. + if (has_direct_view && has_opposite_view) { + if (encoder_.GetLiteralView(lit) <= + encoder_.GetLiteralView(lit.Negated())) { + has_direct_view = true; + has_opposite_view = false; + } else { + has_direct_view = false; + has_opposite_view = true; + } + } + if (has_direct_view) { + AddTerm(encoder_.GetLiteralView(lit), coeff); + return true; + } + if (has_opposite_view) { + AddTerm(encoder_.GetLiteralView(lit.Negated()), -coeff); + if (lb_ > kMinIntegerValue) lb_ -= coeff; + if (ub_ < kMaxIntegerValue) ub_ -= coeff; + return true; + } + return false; + } + + LinearConstraint Build() { + LinearConstraint result; + result.lb = lb_; + result.ub = ub_; + for (const auto entry : terms_) { + result.vars.push_back(entry.first); + result.coeffs.push_back(entry.second); + } + return result; + } + + private: + const VariablesAssignment& assignment_; + const IntegerEncoder& encoder_; + IntegerValue lb_; + IntegerValue ub_; + IntegerValue offset_; + std::map terms_; +}; + +// Returns the activity of the given constraint. That is the current value of +// the linear terms. +double ComputeActivity(const LinearConstraint& constraint, + const gtl::ITIVector& values); + +} // namespace sat +} // namespace operations_research + +#endif // OR_TOOLS_SAT_LINEAR_CONSTRAINT_H_ diff --git a/ortools/sat/linear_constraint_manager.cc b/ortools/sat/linear_constraint_manager.cc new file mode 100644 index 0000000000..405ed339fb --- /dev/null +++ b/ortools/sat/linear_constraint_manager.cc @@ -0,0 +1,126 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "ortools/sat/linear_constraint_manager.h" + +namespace operations_research { +namespace sat { + +namespace { + +// TODO(user): it would be better if LinearConstraint natively supported +// term and not two separated vectors. Fix? +// +// TODO(user): Divide by gcd? perform coefficient strengthening (note that as +// the search progress the variable bounds get tighter)? +std::vector> +CanonicalizeConstraintAndGetTerms(LinearConstraint* ct) { + std::vector> terms; + + const int size = ct->vars.size(); + for (int i = 0; i < size; ++i) { + if (VariableIsPositive(ct->vars[i])) { + terms.push_back({ct->vars[i], ct->coeffs[i]}); + } else { + terms.push_back({NegationOf(ct->vars[i]), -ct->coeffs[i]}); + } + } + std::sort(terms.begin(), terms.end()); + + ct->vars.clear(); + ct->coeffs.clear(); + for (const auto& term : terms) { + ct->vars.push_back(term.first); + ct->coeffs.push_back(term.second); + } + return terms; +} + +} // namespace + +// Because sometimes we split a == constraint in two (>= and <=), it makes sense +// to detect duplicate constraints and merge bounds. This is also relevant if +// we regenerate identical cuts for some reason. +void LinearConstraintManager::Add(const LinearConstraint& ct) { + LinearConstraint canonicalized = ct; + const Terms terms = CanonicalizeConstraintAndGetTerms(&canonicalized); + + if (gtl::ContainsKey(equiv_constraints_, terms)) { + const ConstraintIndex index( + gtl::FindOrDieNoPrint(equiv_constraints_, terms)); + if (canonicalized.lb > constraints_[index].lb) { + if (constraint_is_in_lp_[index]) { + some_lp_constraint_bounds_changed_ = true; + } + constraints_[index].lb = canonicalized.lb; + } + if (canonicalized.ub < constraints_[index].ub) { + if (constraint_is_in_lp_[index]) { + some_lp_constraint_bounds_changed_ = true; + } + constraints_[index].ub = canonicalized.ub; + } + ++num_merged_constraints_; + } else { + for (const IntegerVariable var : canonicalized.vars) { + used_variables_.insert(var); + } + equiv_constraints_[terms] = constraints_.size(); + constraint_is_in_lp_.push_back(false); + constraints_.push_back(std::move(canonicalized)); + } +} + +bool LinearConstraintManager::ChangeLp( + const gtl::ITIVector& lp_solution) { + const int old_num_constraints = lp_constraints_.size(); + + // We keep any constraints that is already present, and otherwise, we add the + // ones that are currently not satisfied by at least "tolerance". + const double tolerance = 1e-6; + for (ConstraintIndex i(0); i < constraints_.size(); ++i) { + if (constraint_is_in_lp_[i]) continue; + + const double activity = ComputeActivity(constraints_[i], lp_solution); + if (activity > ToDouble(constraints_[i].ub) + tolerance || + activity < ToDouble(constraints_[i].lb) - tolerance) { + constraint_is_in_lp_[i] = true; + + // Note that it is important for LP incremental solving that the old + // constraints stays at the same position in this list (and thus in the + // returned GetLp()). + lp_constraints_.push_back(i); + } + } + + // The LP changed only if we added new constraints or if the bounds of some + // constraints already in the LP changed because of parallel constraints + // merging during Add(). + if (some_lp_constraint_bounds_changed_ || + lp_constraints_.size() > old_num_constraints) { + some_lp_constraint_bounds_changed_ = false; + return true; + } + return false; +} + +void LinearConstraintManager::AddAllConstraintsToLp() { + for (ConstraintIndex i(0); i < constraints_.size(); ++i) { + if (constraint_is_in_lp_[i]) continue; + constraint_is_in_lp_[i] = true; + lp_constraints_.push_back(i); + } +} + +} // namespace sat +} // namespace operations_research diff --git a/ortools/sat/linear_constraint_manager.h b/ortools/sat/linear_constraint_manager.h new file mode 100644 index 0000000000..dc6fc96eff --- /dev/null +++ b/ortools/sat/linear_constraint_manager.h @@ -0,0 +1,111 @@ +// Copyright 2010-2018 Google LLC +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OR_TOOLS_SAT_LINEAR_CONSTRAINT_MANAGER_H_ +#define OR_TOOLS_SAT_LINEAR_CONSTRAINT_MANAGER_H_ + +#include + +#include "absl/container/flat_hash_map.h" +#include "ortools/sat/linear_constraint.h" +#include "ortools/sat/model.h" + +namespace operations_research { +namespace sat { + +// This class holds a list of globally valid linear constraints and has some +// logic to decide which one should be part of the LP relaxation. We want more +// for a better relaxation, but for efficiency we do not want to have too much +// constraints while solving the LP. +// +// This class is meant to contain all the initial constraints of the LP +// relaxation and to get new cuts as they are generated. Thus, it can both +// manage cuts but also only add the initial constraints lazily if there is too +// many of them. +// +// TODO(user): Also store the LP objective there as it can be useful to decide +// which constraint should go into the current LP. +class LinearConstraintManager { + public: + LinearConstraintManager() {} + ~LinearConstraintManager() { + if (num_merged_constraints_ > 0) { + VLOG(2) << "num_merged_constraints: " << num_merged_constraints_; + } + } + + // Add a new constraint to the manager. Note that we canonicalize constraints + // and merge the bounds of constraints with the same terms. + void Add(const LinearConstraint& ct); + + // Heuristic to decides what LP is best solved next. The given lp_solution + // should usually be the optimal solution of the LP returned by GetLp() before + // this call, but is just used as an heuristic. + // + // Returns true iff LpConstraints() will return a different LP than before. + bool ChangeLp(const gtl::ITIVector& lp_solution); + + // This can be called initially to add all the current constraint to the LP + // returned by GetLp(). + void AddAllConstraintsToLp(); + + // All the constraints managed by this class. + DEFINE_INT_TYPE(ConstraintIndex, int32); + const gtl::ITIVector& AllConstraints() + const { + return constraints_; + } + + // The set of constraints indices in AllConstraints() that should be part + // of the next LP to solve. + const std::vector& LpConstraints() const { + return lp_constraints_; + } + + private: + // The set of variables that appear in at least one constraint. + std::set used_variables_; + + // Set at true by Add() and at false by ChangeLp(). + bool some_lp_constraint_bounds_changed_ = false; + + // The global list of constraint. + gtl::ITIVector constraints_; + + // The subset of constraints currently in the lp. + gtl::ITIVector constraint_is_in_lp_; + std::vector lp_constraints_; + + // For each constraint "terms", equiv_constraints_ indicates the index of a + // constraint with the same terms in constraints_. This way, when a + // "duplicate" constraint is added, we can just update its bound. + using Terms = std::vector>; + struct TermsHash { + std::size_t operator()(const Terms& terms) const { + size_t hash = 0; + for (const auto& term : terms) { + const size_t pair_hash = + util_hash::Hash(term.first.value(), term.second.value()); + hash = util_hash::Hash(pair_hash, hash); + } + return hash; + } + }; + absl::flat_hash_map equiv_constraints_; + int64 num_merged_constraints_ = 0; +}; + +} // namespace sat +} // namespace operations_research + +#endif // OR_TOOLS_SAT_LINEAR_CONSTRAINT_MANAGER_H_ diff --git a/ortools/sat/linear_programming_constraint.cc b/ortools/sat/linear_programming_constraint.cc index 9d31bb5cd7..d08428f815 100644 --- a/ortools/sat/linear_programming_constraint.cc +++ b/ortools/sat/linear_programming_constraint.cc @@ -39,31 +39,6 @@ using glop::RowIndex; const double LinearProgrammingConstraint::kCpEpsilon = 1e-4; const double LinearProgrammingConstraint::kLpEpsilon = 1e-6; -namespace { - -double ToDouble(IntegerValue value) { - const double kInfinity = std::numeric_limits::infinity(); - if (value >= kMaxIntegerValue) return kInfinity; - if (value <= kMinIntegerValue) return -kInfinity; - return static_cast(value.value()); -} - -// TODO(user): Also used in sorted_interval_lists.h remove duplication. -int64 CeilRatio(int64 value, int64 positive_coeff) { - CHECK_GT(positive_coeff, 0); - const int64 result = value / positive_coeff; - const int64 adjust = static_cast(result * positive_coeff < value); - return result + adjust; -} -int64 FloorRatio(int64 value, int64 positive_coeff) { - CHECK_GT(positive_coeff, 0); - const int64 result = value / positive_coeff; - const int64 adjust = static_cast(result * positive_coeff > value); - return result - adjust; -} - -} // namespace - // TODO(user): make SatParameters singleton too, otherwise changing them after // a constraint was added will have no effect on this class. LinearProgrammingConstraint::LinearProgrammingConstraint(Model* model) @@ -80,43 +55,42 @@ LinearProgrammingConstraint::LinearProgrammingConstraint(Model* model) simplex_.SetParameters(parameters); } -LinearProgrammingConstraint::ConstraintIndex -LinearProgrammingConstraint::CreateNewConstraint(IntegerValue lb, - IntegerValue ub) { +void LinearProgrammingConstraint::AddLinearConstraint( + const LinearConstraint& ct) { DCHECK(!lp_constraint_is_registered_); - const int index = integer_lp_.size(); - integer_lp_.push_back(LinearConstraintInternal()); - integer_lp_.back().lb = lb; - integer_lp_.back().ub = ub; - return ConstraintIndex(index); + constraint_manager_.Add(ct); + + // We still create the mirror variable right away though. + // + // TODO(user): clean this up? Note that it is important that the variable + // in lp_data_ never changes though, so we can restart from the current + // lp solution and be incremental (even if the constraints changed). + for (const IntegerVariable var : ct.vars) { + GetOrCreateMirrorVariable(PositiveVariable(var)); + } } glop::ColIndex LinearProgrammingConstraint::GetOrCreateMirrorVariable( IntegerVariable positive_variable) { DCHECK(VariableIsPositive(positive_variable)); if (!gtl::ContainsKey(mirror_lp_variable_, positive_variable)) { - const glop::ColIndex col = lp_data_.CreateNewVariable(); - DCHECK_EQ(col, integer_variables_.size()); + const glop::ColIndex col(integer_variables_.size()); mirror_lp_variable_[positive_variable] = col; integer_variables_.push_back(positive_variable); lp_solution_.push_back(std::numeric_limits::infinity()); lp_reduced_cost_.push_back(0.0); (*dispatcher_)[positive_variable] = this; + + const int index = std::max(positive_variable.value(), + NegationOf(positive_variable).value()); + if (index >= expanded_lp_solution_.size()) { + expanded_lp_solution_.resize(index + 1, 0.0); + } return col; } return mirror_lp_variable_[positive_variable]; } -void LinearProgrammingConstraint::SetCoefficient(ConstraintIndex ct, - IntegerVariable ivar, - IntegerValue coefficient) { - CHECK(!lp_constraint_is_registered_); - IntegerVariable pos_var = VariableIsPositive(ivar) ? ivar : NegationOf(ivar); - if (ivar != pos_var) coefficient = -coefficient; - const glop::ColIndex col = GetOrCreateMirrorVariable(pos_var); - integer_lp_[ct.value()].terms.push_back({col, coefficient}); -} - void LinearProgrammingConstraint::SetObjectiveCoefficient(IntegerVariable ivar, IntegerValue coeff) { CHECK(!lp_constraint_is_registered_); @@ -125,42 +99,47 @@ void LinearProgrammingConstraint::SetObjectiveCoefficient(IntegerVariable ivar, if (ivar != pos_var) coeff = -coeff; const glop::ColIndex col = GetOrCreateMirrorVariable(pos_var); - lp_data_.SetObjectiveCoefficient(col, ToDouble(coeff)); integer_objective_.push_back({col, coeff}); } -void LinearProgrammingConstraint::RegisterWith(Model* model) { - DCHECK(!lp_constraint_is_registered_); - lp_constraint_is_registered_ = true; - model->GetOrCreate()->push_back(this); - - std::sort(integer_objective_.begin(), integer_objective_.end()); - - // Because sometimes we split a == constraint in two (>= and <=), it makes - // sense to detect duplicate constraints and merge bounds. - { - int new_size = 0; - absl::flat_hash_map - equiv_constraint; - for (LinearConstraintInternal& constraint : integer_lp_) { - std::sort(constraint.terms.begin(), constraint.terms.end()); - if (gtl::ContainsKey(equiv_constraint, constraint)) { - const int index = equiv_constraint[constraint]; - integer_lp_[index].lb = std::max(integer_lp_[index].lb, constraint.lb); - integer_lp_[index].ub = std::min(integer_lp_[index].ub, constraint.ub); - continue; +// TODO(user): As the search progress, some variables might get fixed. Exploit +// this to reduce the number of variables in the LP and in the +// ConstraintManager? We might also detect during the search that two variable +// are equivalent. +void LinearProgrammingConstraint::CreateLpFromConstraintManager() { + // Fill integer_lp_. + integer_lp_.clear(); + const auto& all_constraints = constraint_manager_.AllConstraints(); + for (const auto index : constraint_manager_.LpConstraints()) { + const LinearConstraint& ct = all_constraints[index]; + integer_lp_.push_back(LinearConstraintInternal()); + LinearConstraintInternal& new_ct = integer_lp_.back(); + new_ct.lb = ct.lb; + new_ct.ub = ct.ub; + const int size = ct.vars.size(); + for (int i = 0; i < size; ++i) { + // We only use positive variable inside this class. + IntegerVariable var = ct.vars[i]; + IntegerValue coeff = ct.coeffs[i]; + if (!VariableIsPositive(var)) { + var = NegationOf(var); + coeff = -coeff; } - equiv_constraint[constraint] = new_size; - integer_lp_[new_size++] = constraint; + new_ct.terms.push_back({GetOrCreateMirrorVariable(var), coeff}); } - if (new_size < integer_lp_.size()) { - VLOG(1) << "Merged " << integer_lp_.size() - new_size << " constraints."; - } - integer_lp_.resize(new_size); + + // Important to keep lp_data_ "clean". + std::sort(new_ct.terms.begin(), new_ct.terms.end()); } - // Copy the integer_lp_ into lp_data_. Note that the objective is already - // copied. + // Copy the integer_lp_ into lp_data_. + lp_data_.Clear(); + for (int i = 0; i < integer_variables_.size(); ++i) { + CHECK_EQ(glop::ColIndex(i), lp_data_.CreateNewVariable()); + } + for (const auto entry : integer_objective_) { + lp_data_.SetObjectiveCoefficient(entry.first, ToDouble(entry.second)); + } for (const LinearConstraintInternal& ct : integer_lp_) { const ConstraintIndex row = lp_data_.CreateNewConstraint(); lp_data_.SetConstraintBounds(row, ToDouble(ct.lb), ToDouble(ct.ub)); @@ -170,6 +149,7 @@ void LinearProgrammingConstraint::RegisterWith(Model* model) { } // Scale lp_data_. + scaler_.Clear(); Scale(&lp_data_, &scaler_, glop::GlopParameters::DEFAULT); lp_data_.ScaleObjective(); @@ -183,7 +163,27 @@ void LinearProgrammingConstraint::RegisterWith(Model* model) { UpdateBoundsOfLpVariables(); bound_scaling_factor_ = lp_data_.ScaleBounds(); + lp_data_.NotifyThatColumnsAreClean(); lp_data_.AddSlackVariablesWhereNecessary(false); + VLOG(1) << "LP relaxation: " << lp_data_.GetDimensionString() << ". " + << constraint_manager_.AllConstraints().size() + << " Managed constraints."; +} + +void LinearProgrammingConstraint::RegisterWith(Model* model) { + DCHECK(!lp_constraint_is_registered_); + lp_constraint_is_registered_ = true; + model->GetOrCreate()->push_back(this); + + // Note fdid, this is not really needed by should lead to better cache + // locality. + std::sort(integer_objective_.begin(), integer_objective_.end()); + + // Set the LP to its initial content. + if (!sat_parameters_.add_lp_constraints_lazily()) { + constraint_manager_.AddAllConstraintsToLp(); + } + CreateLpFromConstraintManager(); GenericLiteralWatcher* watcher = model->GetOrCreate(); const int watcher_id = watcher->Register(this); @@ -211,6 +211,21 @@ void LinearProgrammingConstraint::SetLevel(int level) { if (lp_solution_is_set_ && level < lp_solution_level_) { lp_solution_is_set_ = false; } + + // Special case for level zero, we "reload" any previously known optimal + // solution from that level. + // + // TODO(user): Keep all optimal solution in the current branch? + if (level == 0 && !level_zero_lp_solution_.empty()) { + lp_solution_is_set_ = true; + lp_solution_ = level_zero_lp_solution_; + lp_solution_level_ = 0; + for (int i = 0; i < lp_solution_.size(); i++) { + expanded_lp_solution_[integer_variables_[i]] = lp_solution_[i]; + expanded_lp_solution_[NegationOf(integer_variables_[i])] = + -lp_solution_[i]; + } + } } void LinearProgrammingConstraint::AddCutGenerator(CutGenerator generator) { @@ -220,11 +235,12 @@ void LinearProgrammingConstraint::AddCutGenerator(CutGenerator generator) { cut_generators_.push_back(std::move(generator)); } -// Check whether the change breaks the current LP solution. -// Call Propagate() only if it does. bool LinearProgrammingConstraint::IncrementalPropagate( const std::vector& watch_indices) { if (!lp_solution_is_set_) return Propagate(); + + // Check whether the change breaks the current LP solution. If it does, call + // Propagate() on the current LP. for (const int index : watch_indices) { const double lb = ToDouble(integer_trail_->LowerBound(integer_variables_[index])); @@ -233,6 +249,10 @@ bool LinearProgrammingConstraint::IncrementalPropagate( const double value = lp_solution_[index]; if (value < lb - kCpEpsilon || value > ub + kCpEpsilon) return Propagate(); } + + // TODO(user): The saved lp solution is still valid given the current variable + // bounds, so the LP optimal didn't change. However we might still want to add + // new cuts or new lazy constraints? return true; } @@ -272,6 +292,34 @@ void LinearProgrammingConstraint::UpdateBoundsOfLpVariables() { } } +bool LinearProgrammingConstraint::SolveLp() { + const auto status = simplex_.Solve(lp_data_, time_limit_); + if (!status.ok()) { + LOG(WARNING) << "The LP solver encountered an error: " + << status.error_message(); + simplex_.ClearStateForNextSolve(); + return false; + } + + if (simplex_.GetProblemStatus() == glop::ProblemStatus::OPTIMAL) { + lp_solution_is_set_ = true; + lp_solution_level_ = trail_->CurrentDecisionLevel(); + const int num_vars = integer_variables_.size(); + for (int i = 0; i < num_vars; i++) { + const glop::Fractional value = + GetVariableValueAtCpScale(glop::ColIndex(i)); + lp_solution_[i] = value; + expanded_lp_solution_[integer_variables_[i]] = value; + expanded_lp_solution_[NegationOf(integer_variables_[i])] = -value; + } + + if (lp_solution_level_ == 0) { + level_zero_lp_solution_ = lp_solution_; + } + } + return true; +} + bool LinearProgrammingConstraint::Propagate() { UpdateBoundsOfLpVariables(); @@ -305,77 +353,47 @@ bool LinearProgrammingConstraint::Propagate() { simplex_.SetParameters(parameters); simplex_.NotifyThatMatrixIsUnchangedForNextSolve(); - const auto status = simplex_.Solve(lp_data_, time_limit_); - if (!status.ok()) { - LOG(WARNING) << "The LP solver encountered an error: " - << status.error_message(); - simplex_.ClearStateForNextSolve(); - return true; - } + if (!SolveLp()) return true; - // Add cuts and resolve. - // TODO(user): for the cuts, we scale back and forth, is this really needed? - if (!cut_generators_.empty() && num_cuts_ < sat_parameters_.max_num_cuts() && - (trail_->CurrentDecisionLevel() == 0 || - !sat_parameters_.only_add_cuts_at_level_zero()) && - (simplex_.GetProblemStatus() == glop::ProblemStatus::OPTIMAL || - simplex_.GetProblemStatus() == glop::ProblemStatus::DUAL_FEASIBLE)) { - int num_new_cuts = 0; - for (const CutGenerator& generator : cut_generators_) { - std::vector local_solution; - for (const IntegerVariable var : generator.vars) { - if (VariableIsPositive(var)) { - const auto index = gtl::FindOrDie(mirror_lp_variable_, var); - local_solution.push_back(GetVariableValueAtCpScale(index)); - } else { - const auto index = - gtl::FindOrDie(mirror_lp_variable_, NegationOf(var)); - local_solution.push_back(-GetVariableValueAtCpScale(index)); + // Add new constraints to the LP and resolve? + // + // TODO(user): We might want to do that more than once. Currently we rely on + // this beeing called again on the next IncrementalPropagate() call, but that + // might not always happen at level zero. + if (simplex_.GetProblemStatus() == glop::ProblemStatus::OPTIMAL) { + // First add any new lazy constraints or cuts that where previsouly + // generated and are now cutting the current solution. + if (constraint_manager_.ChangeLp(expanded_lp_solution_)) { + CreateLpFromConstraintManager(); + if (!SolveLp()) return true; + } else { + // Try to add cuts. + if (!cut_generators_.empty() && + num_cuts_ < sat_parameters_.max_num_cuts() && + (trail_->CurrentDecisionLevel() == 0 || + !sat_parameters_.only_add_cuts_at_level_zero())) { + int num_new_cuts = 0; + for (const CutGenerator& generator : cut_generators_) { + // TODO(user): Change api so cuts can directly be added to the manager + // and we don't need this intermediate vector. + std::vector cuts = + generator.generate_cuts(expanded_lp_solution_); + + // Add the cuts to the manager. + for (const LinearConstraint& cut : cuts) { + ++num_new_cuts; + constraint_manager_.Add(cut); + } } - } - std::vector cuts = - generator.generate_cuts(local_solution); - if (cuts.empty()) continue; + if (num_new_cuts > 0) { + num_cuts_ += num_new_cuts; + VLOG(1) << "#cuts " << num_cuts_; - // Add the cuts to the LP! - if (num_new_cuts == 0) lp_data_.DeleteSlackVariables(); - for (const LinearConstraint& cut : cuts) { - ++num_new_cuts; - const glop::RowIndex row = lp_data_.CreateNewConstraint(); - lp_data_.SetConstraintBounds(row, ToDouble(cut.lb), ToDouble(cut.ub)); - integer_lp_.push_back(LinearConstraintInternal()); - integer_lp_.back().lb = cut.lb; - integer_lp_.back().ub = cut.ub; - for (int i = 0; i < cut.vars.size(); ++i) { - const glop::ColIndex col = GetOrCreateMirrorVariable(cut.vars[i]); - - // The returned coefficients correspond to variables at the CP scale, - // so we need to divide them by CpToLpScalingFactor() which is the - // same as multiplying by LpToCpScalingFactor(). - // - // TODO(user): we should still multiply this row by a row_scale so - // that its maximum magnitude is one. - lp_data_.SetCoefficient( - row, col, ToDouble(cut.coeffs[i]) * LpToCpScalingFactor(col)); - integer_lp_.back().terms.push_back({col, cut.coeffs[i]}); + if (constraint_manager_.ChangeLp(expanded_lp_solution_)) { + CreateLpFromConstraintManager(); + if (!SolveLp()) return true; + } } - std::sort(integer_lp_.back().terms.begin(), - integer_lp_.back().terms.end()); - } - } - - // Resolve if we added some cuts. - if (num_new_cuts > 0) { - num_cuts_ += num_new_cuts; - VLOG(1) << "#cuts " << num_cuts_; - lp_data_.NotifyThatColumnsAreClean(); - lp_data_.AddSlackVariablesWhereNecessary(false); - const auto status = simplex_.Solve(lp_data_, time_limit_); - if (!status.ok()) { - LOG(WARNING) << "The LP solver encountered an error: " - << status.error_message(); - simplex_.ClearStateForNextSolve(); - return true; } } } @@ -411,9 +429,12 @@ bool LinearProgrammingConstraint::Propagate() { // A difference of 1 happens relatively often, so we just display when // there is more. Note that when we are over the objective upper bound, // we relax new_lb for a better reason, so we ignore this case. - if (new_lb <= integer_trail_->UpperBound(objective_cp_) && - std::abs((approximate_new_lb - new_lb).value()) > 1) { - VLOG(1) << "LP exact objective diff " << approximate_new_lb - new_lb; + if (new_lb <= kMinIntegerValue) { + VLOG(2) << "Overflow during exact LP reasoning."; + } else if (new_lb <= integer_trail_->UpperBound(objective_cp_) && + std::abs((approximate_new_lb - new_lb).value()) > 1) { + VLOG(2) << "LP objective lower bound approx = " << approximate_new_lb; + VLOG(2) << " exact = " << new_lb; } } else { FillReducedCostsReason(); @@ -450,17 +471,15 @@ bool LinearProgrammingConstraint::Propagate() { } } - // Copy current LP solution. + // Copy more info about the current solution. if (simplex_.GetProblemStatus() == glop::ProblemStatus::OPTIMAL) { - const double objective_scale = lp_data_.objective_scaling_factor(); - lp_solution_is_set_ = true; - lp_solution_level_ = trail_->CurrentDecisionLevel(); + CHECK(lp_solution_is_set_); + lp_objective_ = simplex_.GetObjectiveValue(); lp_solution_is_integer_ = true; const int num_vars = integer_variables_.size(); + const double objective_scale = lp_data_.objective_scaling_factor(); for (int i = 0; i < num_vars; i++) { - lp_solution_[i] = GetVariableValueAtCpScale(glop::ColIndex(i)); - // The reduced cost need to be divided by LpToCpScalingFactor(). lp_reduced_cost_[i] = simplex_.GetReducedCost(glop::ColIndex(i)) * CpToLpScalingFactor(glop::ColIndex(i)) * @@ -766,8 +785,7 @@ IntegerValue LinearProgrammingConstraint::ExactLpReasonning() { return kMinIntegerValue; // Overflow. } - IntegerValue exact_objective_lb( - CeilRatio(scaled_objective_lb.value(), obj_scale.value())); + IntegerValue exact_objective_lb(CeilRatio(scaled_objective_lb, obj_scale)); if (exact_objective_lb > objective_ub) { // We will have a conflict, so we can can relax more! exact_objective_lb = objective_ub + 1; @@ -789,8 +807,8 @@ IntegerValue LinearProgrammingConstraint::ExactLpReasonning() { // Any change by more than this will make scaled_objective_lb go past // the objective upper bound - const IntegerValue allowed_change( - FloorRatio(feasibility_slack.value(), std::abs(coeff.value()))); + const IntegerValue allowed_change(FloorRatio( + feasibility_slack, IntegerValue(std::abs(coeff.value())))); CHECK_GE(allowed_change, 0); if (coeff > 0) { const IntegerValue new_ub = @@ -951,7 +969,7 @@ namespace { void AddIncomingAndOutgoingCutsIfNeeded( int num_nodes, const std::vector& s, const std::vector& tails, const std::vector& heads, const std::vector& vars, - const std::vector& lp_solution, int64 rhs_lower_bound, + const std::vector& var_lp_values, int64 rhs_lower_bound, std::vector* cuts) { LinearConstraint incoming; LinearConstraint outgoing; @@ -967,12 +985,12 @@ void AddIncomingAndOutgoingCutsIfNeeded( const bool in = gtl::ContainsKey(subset, heads[i]); if (out && in) continue; if (out) { - sum_outgoing += lp_solution[i]; + sum_outgoing += var_lp_values[i]; outgoing.vars.push_back(vars[i]); outgoing.coeffs.push_back(IntegerValue(1)); } if (in) { - sum_incoming += lp_solution[i]; + sum_incoming += var_lp_values[i]; incoming.vars.push_back(vars[i]); incoming.coeffs.push_back(IntegerValue(1)); } @@ -993,13 +1011,13 @@ void AddIncomingAndOutgoingCutsIfNeeded( if (gtl::ContainsKey(subset, tails[i])) { num_optional_nodes_in++; if (optional_loop_in == -1 || - lp_solution[i] < lp_solution[optional_loop_in]) { + var_lp_values[i] < var_lp_values[optional_loop_in]) { optional_loop_in = i; } } else { num_optional_nodes_out++; if (optional_loop_out == -1 || - lp_solution[i] < lp_solution[optional_loop_out]) { + var_lp_values[i] < var_lp_values[optional_loop_out]) { optional_loop_out = i; } } @@ -1009,12 +1027,12 @@ void AddIncomingAndOutgoingCutsIfNeeded( // When all optionals of one side are excluded in lp solution, no cut. if (num_optional_nodes_in == subset.size() && (optional_loop_in == -1 || - lp_solution[optional_loop_in] > 1.0 - 1e-6)) { + var_lp_values[optional_loop_in] > 1.0 - 1e-6)) { return; } if (num_optional_nodes_out == num_nodes - subset.size() && (optional_loop_out == -1 || - lp_solution[optional_loop_out] > 1.0 - 1e-6)) { + var_lp_values[optional_loop_out] > 1.0 - 1e-6)) { return; } @@ -1022,22 +1040,22 @@ void AddIncomingAndOutgoingCutsIfNeeded( if (num_optional_nodes_in == subset.size()) { incoming.vars.push_back(vars[optional_loop_in]); incoming.coeffs.push_back(IntegerValue(1)); - sum_incoming += lp_solution[optional_loop_in]; + sum_incoming += var_lp_values[optional_loop_in]; outgoing.vars.push_back(vars[optional_loop_in]); outgoing.coeffs.push_back(IntegerValue(1)); - sum_outgoing += lp_solution[optional_loop_in]; + sum_outgoing += var_lp_values[optional_loop_in]; } // There is no mandatory node out of subset, add optional_loop_out. if (num_optional_nodes_out == num_nodes - subset.size()) { incoming.vars.push_back(vars[optional_loop_out]); incoming.coeffs.push_back(IntegerValue(1)); - sum_incoming += lp_solution[optional_loop_out]; + sum_incoming += var_lp_values[optional_loop_out]; outgoing.vars.push_back(vars[optional_loop_out]); outgoing.coeffs.push_back(IntegerValue(1)); - sum_outgoing += lp_solution[optional_loop_out]; + sum_outgoing += var_lp_values[optional_loop_out]; } } @@ -1059,39 +1077,43 @@ CutGenerator CreateStronglyConnectedGraphCutGenerator( const std::vector& vars) { CutGenerator result; result.vars = vars; - result.generate_cuts = [num_nodes, tails, heads, - vars](const std::vector& lp_solution) { - int num_arcs_in_lp_solution = 0; - std::vector> graph(num_nodes); - for (int i = 0; i < lp_solution.size(); ++i) { - // TODO(user): a more advanced algorithm consist of adding the arcs - // in the decreasing order of their lp_solution, and for each strongly - // connected components S along the way, try to add the corresponding - // cuts. We can stop as soon as there is only two components left, after - // adding the corresponding cut. - if (lp_solution[i] > 1e-6) { - ++num_arcs_in_lp_solution; - graph[tails[i]].push_back(heads[i]); - } - } - std::vector cuts; - std::vector> components; - FindStronglyConnectedComponents(num_nodes, graph, &components); - if (components.size() == 1) return cuts; + result.generate_cuts = + [num_nodes, tails, heads, + vars](const gtl::ITIVector& lp_values) { + int num_arcs_in_lp_solution = 0; + std::vector var_lp_values; + std::vector> graph(num_nodes); + for (int i = 0; i < vars.size(); ++i) { + var_lp_values.push_back(lp_values[vars[i]]); - VLOG(1) << "num_arcs_in_lp_solution:" << num_arcs_in_lp_solution - << " sccs:" << components.size(); - for (const std::vector& component : components) { - if (component.size() == 1) continue; - AddIncomingAndOutgoingCutsIfNeeded(num_nodes, component, tails, heads, - vars, lp_solution, - /*rhs_lower_bound=*/1, &cuts); + // TODO(user): a more advanced algorithm consist of adding the arcs + // in the decreasing order of their lp_values, and for each strongly + // connected components S along the way, try to add the corresponding + // cuts. We can stop as soon as there is only two components left, + // after adding the corresponding cut. + if (lp_values[vars[i]] > 1e-6) { + ++num_arcs_in_lp_solution; + graph[tails[i]].push_back(heads[i]); + } + } + std::vector cuts; + std::vector> components; + FindStronglyConnectedComponents(num_nodes, graph, &components); + if (components.size() == 1) return cuts; - // In this case, the cuts for each component are the same. - if (components.size() == 2) break; - } - return cuts; - }; + VLOG(1) << "num_arcs_in_lp_solution:" << num_arcs_in_lp_solution + << " sccs:" << components.size(); + for (const std::vector& component : components) { + if (component.size() == 1) continue; + AddIncomingAndOutgoingCutsIfNeeded(num_nodes, component, tails, heads, + vars, var_lp_values, + /*rhs_lower_bound=*/1, &cuts); + + // In this case, the cuts for each component are the same. + if (components.size() == 2) break; + } + return cuts; + }; return result; } @@ -1107,48 +1129,50 @@ CutGenerator CreateCVRPCutGenerator(int num_nodes, CutGenerator result; result.vars = vars; - result.generate_cuts = [num_nodes, tails, heads, total_demands, demands, - capacity, - vars](const std::vector& lp_solution) { - int num_arcs_in_lp_solution = 0; - std::vector> graph(num_nodes); - for (int i = 0; i < lp_solution.size(); ++i) { - if (lp_solution[i] > 1e-6) { - ++num_arcs_in_lp_solution; - graph[tails[i]].push_back(heads[i]); - } - } - std::vector cuts; - std::vector> components; - FindStronglyConnectedComponents(num_nodes, graph, &components); - if (components.size() == 1) return cuts; + result.generate_cuts = + [num_nodes, tails, heads, total_demands, demands, capacity, + vars](const gtl::ITIVector& lp_values) { + int num_arcs_in_lp_solution = 0; + std::vector var_lp_values; + std::vector> graph(num_nodes); + for (int i = 0; i < vars.size(); ++i) { + var_lp_values.push_back(lp_values[vars[i]]); + if (lp_values[vars[i]] > 1e-6) { + ++num_arcs_in_lp_solution; + graph[tails[i]].push_back(heads[i]); + } + } + std::vector cuts; + std::vector> components; + FindStronglyConnectedComponents(num_nodes, graph, &components); + if (components.size() == 1) return cuts; - VLOG(1) << "num_arcs_in_lp_solution:" << num_arcs_in_lp_solution - << " sccs:" << components.size(); - for (const std::vector& component : components) { - if (component.size() == 1) continue; + VLOG(1) << "num_arcs_in_lp_solution:" << num_arcs_in_lp_solution + << " sccs:" << components.size(); + for (const std::vector& component : components) { + if (component.size() == 1) continue; - bool contain_depot = false; - int64 component_demand = 0; - for (const int node : component) { - if (node == 0) contain_depot = true; - component_demand += demands[node]; - } - const int min_num_vehicles = - contain_depot - ? (total_demands - component_demand + capacity - 1) / capacity - : (component_demand + capacity - 1) / capacity; - CHECK_GE(min_num_vehicles, 1); + bool contain_depot = false; + int64 component_demand = 0; + for (const int node : component) { + if (node == 0) contain_depot = true; + component_demand += demands[node]; + } + const int min_num_vehicles = + contain_depot + ? (total_demands - component_demand + capacity - 1) / capacity + : (component_demand + capacity - 1) / capacity; + CHECK_GE(min_num_vehicles, 1); - AddIncomingAndOutgoingCutsIfNeeded( - num_nodes, component, tails, heads, vars, lp_solution, - /*rhs_lower_bound=*/min_num_vehicles, &cuts); + AddIncomingAndOutgoingCutsIfNeeded( + num_nodes, component, tails, heads, vars, var_lp_values, + /*rhs_lower_bound=*/min_num_vehicles, &cuts); - // In this case, the cuts for each component are the same. - if (components.size() == 2) break; - } - return cuts; - }; + // In this case, the cuts for each component are the same. + if (components.size() == 2) break; + } + return cuts; + }; return result; } diff --git a/ortools/sat/linear_programming_constraint.h b/ortools/sat/linear_programming_constraint.h index b4f45cbc72..fa20e4b3f8 100644 --- a/ortools/sat/linear_programming_constraint.h +++ b/ortools/sat/linear_programming_constraint.h @@ -19,12 +19,14 @@ #include "absl/container/flat_hash_map.h" #include "ortools/base/int_type.h" -#include "ortools/base/hash.h" #include "ortools/glop/revised_simplex.h" #include "ortools/lp_data/lp_data.h" #include "ortools/lp_data/lp_types.h" #include "ortools/lp_data/matrix_scaler.h" +#include "ortools/sat/cuts.h" #include "ortools/sat/integer.h" +#include "ortools/sat/linear_constraint.h" +#include "ortools/sat/linear_constraint_manager.h" #include "ortools/sat/model.h" #include "ortools/util/rev.h" #include "ortools/util/time_limit.h" @@ -32,148 +34,6 @@ namespace operations_research { namespace sat { -// One linear constraint on a set of Integer variables. -// Important: there should be no duplicate variables. -// -// We also assume that we never have integer overflow when evaluating such -// constraint. This should be enforced by the checker for user given -// cosntraints, and we must enforce it ourselves for the newly created -// constraint. We requires: -// - sum_i max(0, max(c_i * lb_i, c_i * ub_i)) < kMaxIntegerValue. -// - sum_i min(0, min(c_i * lb_i, c_i * ub_i)) > kMinIntegerValue -// so that in whichever order we compute the sum, we have no overflow. Note -// that this condition invoves the bounds of the variables. -// -// TODO(user): Add DCHECKs for the no-overflow property? but we need access -// to the variable bounds. -struct LinearConstraint { - IntegerValue lb; - IntegerValue ub; - std::vector vars; - std::vector coeffs; - - std::string DebugString() const { - std::string result; - if (lb.value() > kMinIntegerValue) { - absl::StrAppend(&result, lb.value(), " <= "); - } - for (int i = 0; i < vars.size(); ++i) { - const IntegerValue coeff = - VariableIsPositive(vars[i]) ? coeffs[i] : -coeffs[i]; - absl::StrAppend(&result, coeff.value(), "*X", vars[i].value() / 2, " "); - } - if (ub.value() < kMaxIntegerValue) { - absl::StrAppend(&result, "<= ", ub.value()); - } - return result; - } -}; - -// Allow to build a LinearConstraint while making sure there is no duplicate -// variables. -// -// TODO(user): Storing all coeff in the vector then sorting and merging -// duplicates might be more efficient. Change if required. -class LinearConstraintBuilder { - public: - // We support "sticky" kMinIntegerValue for lb and kMaxIntegerValue for ub - // for one-sided constraints. - LinearConstraintBuilder(const Model* model, IntegerValue lb, IntegerValue ub) - : assignment_(model->Get()->Assignment()), - encoder_(*model->Get()), - lb_(lb), - ub_(ub) {} - - int size() const { return terms_.size(); } - bool IsEmpty() const { return terms_.empty(); } - - // Adds var * coeff to the constraint. - void AddTerm(IntegerVariable var, IntegerValue coeff) { - // We can either add var or NegationOf(var), and we always choose the - // positive one. - if (VariableIsPositive(var)) { - terms_[var] += coeff; - if (terms_[var] == 0) terms_.erase(var); - } else { - const IntegerVariable minus_var = NegationOf(var); - terms_[minus_var] -= coeff; - if (terms_[minus_var] == 0) terms_.erase(minus_var); - } - } - - // Add literal * coeff to the constaint. Returns false and do nothing if the - // given literal didn't have an integer view. - ABSL_MUST_USE_RESULT bool AddLiteralTerm(Literal lit, IntegerValue coeff) { - if (assignment_.LiteralIsTrue(lit)) { - if (lb_ > kMinIntegerValue) lb_ -= coeff; - if (ub_ < kMaxIntegerValue) ub_ -= coeff; - return true; - } - if (assignment_.LiteralIsFalse(lit)) { - return true; - } - - bool has_direct_view = encoder_.GetLiteralView(lit) != kNoIntegerVariable; - bool has_opposite_view = - encoder_.GetLiteralView(lit.Negated()) != kNoIntegerVariable; - - // If a literal has both views, we want to always keep the same - // representative: the smallest IntegerVariable. Note that AddTerm() will - // also make sure to use the associated positive variable. - if (has_direct_view && has_opposite_view) { - if (encoder_.GetLiteralView(lit) <= - encoder_.GetLiteralView(lit.Negated())) { - has_direct_view = true; - has_opposite_view = false; - } else { - has_direct_view = false; - has_opposite_view = true; - } - } - if (has_direct_view) { - AddTerm(encoder_.GetLiteralView(lit), coeff); - return true; - } - if (has_opposite_view) { - AddTerm(encoder_.GetLiteralView(lit.Negated()), -coeff); - if (lb_ > kMinIntegerValue) lb_ -= coeff; - if (ub_ < kMaxIntegerValue) ub_ -= coeff; - return true; - } - return false; - } - - LinearConstraint Build() { - LinearConstraint result; - result.lb = lb_; - result.ub = ub_; - for (const auto entry : terms_) { - result.vars.push_back(entry.first); - result.coeffs.push_back(entry.second); - } - return result; - } - - private: - const VariablesAssignment& assignment_; - const IntegerEncoder& encoder_; - IntegerValue lb_; - IntegerValue ub_; - IntegerValue offset_; - std::map terms_; -}; - -// A "cut" generator on a set of IntegerVariable. The generate_cuts() function -// will be called with the value of these variables in the current LP optimal -// solution and can return a list of extra constraints to add to the relaxation -// in terms of the same variables. -struct CutGenerator { - std::vector vars; - std::function( - const std::vector& lp_solution)> - generate_cuts; -}; - // A SAT constraint that enforces a set of linear inequality constraints on // integer variables using an LP solver. // @@ -187,21 +47,10 @@ struct CutGenerator { // it should be done by redundant constraints, as reduced cost propagation // may miss some filtering. // -// Workflow: create a LinearProgrammingConstraint instance, make linear -// inequality constraints, call RegisterWith() to finalize the set of linear -// constraints. A linear constraint a x + b y + c z <= k, with x y z -// IntegerVariables, can be created by calling: -// auto ct = lp->CreateNewConstraint(kMinIntegerValue, k); -// lp->SetCoefficient(ct, x, a); -// lp->SetCoefficient(ct, y, b); -// lp->SetCoefficient(ct, z, c); -// lp->RegisterWith(); // No new modifications allowed after this. -// // Note that this constraint works with double floating-point numbers, so one // could be worried that it may filter too much in case of precision issues. -// However, the underlying LP solver reports infeasibility only if the problem -// is still infeasible by relaxing the bounds by some small relative value. -// Thus the constraint will tend to filter less than it could, not the opposite. +// However, by default, we interpret the LP result by recomputing everything +// in integer arithmetic, so we are exact. class LinearProgrammingDispatcher; class LinearProgrammingConstraint : public PropagatorInterface, ReversibleInterface { @@ -210,19 +59,8 @@ class LinearProgrammingConstraint : public PropagatorInterface, explicit LinearProgrammingConstraint(Model* model); - // User API, see header description. - ConstraintIndex CreateNewConstraint(IntegerValue lb, IntegerValue ub); - - // This function only accept positive integer variable. It is easy enough to - // always satify this precondition by calling it with a negated variable and - // coefficient if needed. - // - // TODO(user): Allow Literals to appear in linear constraints. - // TODO(user): Calling SetCoefficient() twice on the same - // (constraint, variable) pair will overwrite coefficients where accumulating - // them might be desired, this is a common mistake, change API. - void SetCoefficient(ConstraintIndex ct, IntegerVariable ivar, - IntegerValue coefficient); + // Add a new linear constraint to this LP. + void AddLinearConstraint(const LinearConstraint& ct); // Set the coefficient of the variable in the objective. Calling it twice will // overwrite the previous value. @@ -255,6 +93,9 @@ class LinearProgrammingConstraint : public PropagatorInterface, void SetLevel(int level) override; int NumVariables() const { return integer_variables_.size(); } + const std::vector& integer_variables() const { + return integer_variables_; + } std::string DimensionString() const { return lp_data_.GetDimensionString(); } // Returns a LiteralIndex guided by the underlying LP constraints. @@ -293,6 +134,13 @@ class LinearProgrammingConstraint : public PropagatorInterface, std::function LPReducedCostAverageBranching(); private: + // Reinitialize the LP from a potentially new set of constraints. + // This fills all data structure and properly rescale the underlying LP. + void CreateLpFromConstraintManager(); + + // Solve the LP, returns false if something went wrong in the LP solver. + bool SolveLp(); + // The factor to multiply a CP variable value to get the value in the LP side. glop::Fractional CpToLpScalingFactor(glop::ColIndex col) const; glop::Fractional LpToCpScalingFactor(glop::ColIndex col) const; @@ -373,6 +221,10 @@ class LinearProgrammingConstraint : public PropagatorInterface, // Same but at the LP scale. static const double kLpEpsilon; + // Class responsible for managing all possible constraints that may be part + // of the LP. + LinearConstraintManager constraint_manager_; + // Initial problem in integer form. // We always sort the inner vectors by increasing glop::ColIndex. struct LinearConstraintInternal { @@ -383,24 +235,6 @@ class LinearProgrammingConstraint : public PropagatorInterface, LinearExpression integer_objective_; std::vector integer_lp_; - // Custom Hash/Equiv function on a LinearConstraintInternal to detect - // constraint with exactly the same terms (once sorted). - struct TermsHash { - std::size_t operator()(const LinearConstraintInternal& ct) const { - size_t hash = 0; - for (const std::pair& term : ct.terms) { - hash = util_hash::Hash(term.first.value(), term.second.value(), hash); - } - return hash; - } - }; - struct TermsEquiv { - bool operator()(const LinearConstraintInternal& a, - const LinearConstraintInternal& b) const { - return a.terms == b.terms; - } - }; - // Underlying LP solver API. glop::LinearProgram lp_data_; glop::RevisedSimplex simplex_; @@ -447,6 +281,14 @@ class LinearProgrammingConstraint : public PropagatorInterface, std::vector lp_solution_; std::vector lp_reduced_cost_; + // If non-empty, this is the last known optimal lp solution at root-node. If + // the variable bounds changed, or cuts where added, it is possible that this + // solution is no longer optimal though. + std::vector level_zero_lp_solution_; + + // Same as lp_solution_ but this vector is indexed differently. + gtl::ITIVector expanded_lp_solution_; + // Linear constraints cannot be created or modified after this is registered. bool lp_constraint_is_registered_ = false; diff --git a/ortools/sat/optimization.cc b/ortools/sat/optimization.cc index 825d41ff2c..befe88f5f6 100644 --- a/ortools/sat/optimization.cc +++ b/ortools/sat/optimization.cc @@ -1534,17 +1534,17 @@ SatSolver::Status MinimizeWithCoreAndLazyEncoding( // TODO(user): Add some conflict limit? and/or come up with an algo that // dynamically turn this on or not depending on the situation? const IntegerVariable var = terms[index].var; - const IntegerValue lb = integer_trail->LowerBound(var); - IntegerValue best = terms[index].cover_ub; + IntegerValue best = + std::min(terms[index].cover_ub, integer_trail->UpperBound(var)); // Note(user): this can happen in some corner case because each time we // find a solution, we constrain the objective to be smaller than it, so // it is possible that a previous best is now infeasible. - if (best <= lb) continue; + if (best <= integer_trail->LowerBound(var)) continue; // Simple linear scan algorithm to find the optimal of var. some_cover_opt = true; - while (best > lb) { + while (best > integer_trail->LowerBound(var)) { const Literal a = integer_encoder->GetOrCreateAssociatedLiteral( IntegerLiteral::LowerOrEqual(var, best - 1)); result = @@ -1561,8 +1561,9 @@ SatSolver::Status MinimizeWithCoreAndLazyEncoding( } if (log_info) { - LOG(INFO) << "cover_opt var:" << var << " domain:[" << lb << "," - << best << "]"; + LOG(INFO) << "cover_opt var:" << var << " domain:[" + << integer_trail->LevelZeroLowerBound(var) << "," << best + << "]"; } if (!process_solution()) { result = SatSolver::INFEASIBLE; diff --git a/ortools/sat/python/cp_model.py b/ortools/sat/python/cp_model.py index 031b600ddb..fec3396d72 100644 --- a/ortools/sat/python/cp_model.py +++ b/ortools/sat/python/cp_model.py @@ -721,6 +721,7 @@ class CpModel(object): for v in t: cp_model_helper.AssertIsInt64(v) model_ct.table.values.extend(t) + return ct def AddForbiddenAssignments(self, variables, tuples_list): """Adds AddForbiddenAssignments(variables, [tuples_list]). @@ -749,8 +750,9 @@ class CpModel(object): 'array') index = len(self.__model.constraints) - self.AddAllowedAssignments(variables, tuples_list) + ct = self.AddAllowedAssignments(variables, tuples_list) self.__model.constraints[index].table.negated = True + return ct def AddAutomaton(self, transition_variables, starting_state, final_states, transition_triples): @@ -823,6 +825,7 @@ class CpModel(object): model_ct.automata.transition_tail.append(t[0]) model_ct.automata.transition_label.append(t[1]) model_ct.automata.transition_head.append(t[2]) + return ct def AddInverse(self, variables, inverse_variables): """Adds Inverse(variables, inverse_variables). diff --git a/ortools/sat/samples/BinPackingProblemSat.csproj b/ortools/sat/samples/BinPackingProblemSat.csproj index c7652b4bb4..9529bcc7f7 100644 --- a/ortools/sat/samples/BinPackingProblemSat.csproj +++ b/ortools/sat/samples/BinPackingProblemSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/BoolOrSampleSat.csproj b/ortools/sat/samples/BoolOrSampleSat.csproj index 0962bac62a..6d5fd1e936 100644 --- a/ortools/sat/samples/BoolOrSampleSat.csproj +++ b/ortools/sat/samples/BoolOrSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/ChannelingSampleSat.csproj b/ortools/sat/samples/ChannelingSampleSat.csproj index 702d7fe257..fbcb1f0151 100644 --- a/ortools/sat/samples/ChannelingSampleSat.csproj +++ b/ortools/sat/samples/ChannelingSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/CpIsFunSat.csproj b/ortools/sat/samples/CpIsFunSat.csproj index ca46243a06..816d59934c 100644 --- a/ortools/sat/samples/CpIsFunSat.csproj +++ b/ortools/sat/samples/CpIsFunSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/IntervalSampleSat.csproj b/ortools/sat/samples/IntervalSampleSat.csproj index 53b2b11929..a055851b28 100644 --- a/ortools/sat/samples/IntervalSampleSat.csproj +++ b/ortools/sat/samples/IntervalSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/LiteralSampleSat.csproj b/ortools/sat/samples/LiteralSampleSat.csproj index 93deff2859..598422e849 100644 --- a/ortools/sat/samples/LiteralSampleSat.csproj +++ b/ortools/sat/samples/LiteralSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/NoOverlapSampleSat.csproj b/ortools/sat/samples/NoOverlapSampleSat.csproj index 8b35d712fc..86ecb974eb 100644 --- a/ortools/sat/samples/NoOverlapSampleSat.csproj +++ b/ortools/sat/samples/NoOverlapSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/OptionalIntervalSampleSat.csproj b/ortools/sat/samples/OptionalIntervalSampleSat.csproj index 53af2c3d96..8a0225532a 100644 --- a/ortools/sat/samples/OptionalIntervalSampleSat.csproj +++ b/ortools/sat/samples/OptionalIntervalSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/RabbitsAndPheasantsSat.csproj b/ortools/sat/samples/RabbitsAndPheasantsSat.csproj index 7f3b560013..22d049f283 100644 --- a/ortools/sat/samples/RabbitsAndPheasantsSat.csproj +++ b/ortools/sat/samples/RabbitsAndPheasantsSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/RankingSampleSat.csproj b/ortools/sat/samples/RankingSampleSat.csproj index 4c921e721f..bca558a387 100644 --- a/ortools/sat/samples/RankingSampleSat.csproj +++ b/ortools/sat/samples/RankingSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/ReifiedSampleSat.csproj b/ortools/sat/samples/ReifiedSampleSat.csproj index 484525c568..9c75a3b580 100644 --- a/ortools/sat/samples/ReifiedSampleSat.csproj +++ b/ortools/sat/samples/ReifiedSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/SearchForAllSolutionsSampleSat.csproj b/ortools/sat/samples/SearchForAllSolutionsSampleSat.csproj index c46efcaa1e..599cce4965 100644 --- a/ortools/sat/samples/SearchForAllSolutionsSampleSat.csproj +++ b/ortools/sat/samples/SearchForAllSolutionsSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/SimpleSatProgram.csproj b/ortools/sat/samples/SimpleSatProgram.csproj index c6ef4460fe..1ec39ef656 100644 --- a/ortools/sat/samples/SimpleSatProgram.csproj +++ b/ortools/sat/samples/SimpleSatProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/SolveAndPrintIntermediateSolutionsSampleSat.csproj b/ortools/sat/samples/SolveAndPrintIntermediateSolutionsSampleSat.csproj index 7a3b35c827..4fc05659d8 100644 --- a/ortools/sat/samples/SolveAndPrintIntermediateSolutionsSampleSat.csproj +++ b/ortools/sat/samples/SolveAndPrintIntermediateSolutionsSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/SolveWithTimeLimitSampleSat.csproj b/ortools/sat/samples/SolveWithTimeLimitSampleSat.csproj index 3670b9ed45..b1254355df 100644 --- a/ortools/sat/samples/SolveWithTimeLimitSampleSat.csproj +++ b/ortools/sat/samples/SolveWithTimeLimitSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj b/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj index f8b24f661f..b54dd90896 100644 --- a/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj +++ b/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/cp_is_fun_sat.py b/ortools/sat/samples/cp_is_fun_sat.py index 44b08b9797..10837e57c7 100644 --- a/ortools/sat/samples/cp_is_fun_sat.py +++ b/ortools/sat/samples/cp_is_fun_sat.py @@ -76,8 +76,8 @@ def CPIsFunSat(): model.AddAllDifferent(letters) # CP + IS + FUN = TRUE - model.Add(c * base + p + i * base + s + f * base * base + u * base + n == - t * base * base * base + r * base * base + u * base + e) + model.Add(c * base + p + i * base + s + f * base * base + u * base + + n == t * base * base * base + r * base * base + u * base + e) # [END constraints] # [START solve] diff --git a/ortools/sat/samples/minimal_jobshop_sat.py b/ortools/sat/samples/minimal_jobshop_sat.py index 9f040927bc..8843d9f19f 100644 --- a/ortools/sat/samples/minimal_jobshop_sat.py +++ b/ortools/sat/samples/minimal_jobshop_sat.py @@ -53,8 +53,8 @@ def MinimalJobshopSat(): all_tasks = {} for job in all_jobs: for task_id, task in enumerate(jobs_data[job]): - start_var = model.NewIntVar(0, horizon, 'start_%i_%i' % (job, - task_id)) + start_var = model.NewIntVar(0, horizon, + 'start_%i_%i' % (job, task_id)) duration = task[1] end_var = model.NewIntVar(0, horizon, 'end_%i_%i' % (job, task_id)) interval_var = model.NewIntervalVar( @@ -76,8 +76,8 @@ def MinimalJobshopSat(): # Add precedence contraints. for job in all_jobs: for task_id in range(0, len(jobs_data[job]) - 1): - model.Add(all_tasks[job, task_id + 1].start >= - all_tasks[job, task_id].end) + model.Add(all_tasks[job, task_id + + 1].start >= all_tasks[job, task_id].end) # [END constraints] # [START objective] diff --git a/ortools/sat/samples/rabbits_and_pheasants_sat.py b/ortools/sat/samples/rabbits_and_pheasants_sat.py index 55dfc7e563..aa9916dcf4 100644 --- a/ortools/sat/samples/rabbits_and_pheasants_sat.py +++ b/ortools/sat/samples/rabbits_and_pheasants_sat.py @@ -36,8 +36,8 @@ def RabbitsAndPheasantsSat(): status = solver.Solve(model) if status == cp_model.FEASIBLE: - print('%i rabbits and %i pheasants' % (solver.Value(r), - solver.Value(p))) + print( + '%i rabbits and %i pheasants' % (solver.Value(r), solver.Value(p))) RabbitsAndPheasantsSat() diff --git a/ortools/sat/sat_parameters.proto b/ortools/sat/sat_parameters.proto index 7bab3e3eef..77978c4977 100644 --- a/ortools/sat/sat_parameters.proto +++ b/ortools/sat/sat_parameters.proto @@ -21,7 +21,7 @@ package operations_research.sat; // Contains the definitions for all the sat algorithm parameters and their // default values. // -// NEXT TAG: 111 +// NEXT TAG: 113 message SatParameters { // ========================================================================== // Branching and polarity @@ -498,6 +498,13 @@ message SatParameters { // generated cuts until this limit is reached. optional int32 max_num_cuts = 91 [default = 1000]; optional bool only_add_cuts_at_level_zero = 92 [default = false]; + optional bool add_knapsack_cuts = 111 [default = false]; + + // If true, we start by an empty LP, and only add constraints not satisfied + // by the current LP solution batch by batch. A constraint that is only added + // like this is known as a "lazy" constraint in the literature, except that we + // currently consider all constraints as lazy here. + optional bool add_lp_constraints_lazily = 112 [default = false]; // The search branching will be used to decide how to branch on unfixed nodes. enum SearchBranching { diff --git a/ortools/sat/sat_solver.cc b/ortools/sat/sat_solver.cc index 1e8f9246ab..9e93783b4e 100644 --- a/ortools/sat/sat_solver.cc +++ b/ortools/sat/sat_solver.cc @@ -1411,38 +1411,33 @@ std::string SatSolver::StatusString(Status status) const { absl::StrFormat(" time: %fs\n", time_in_s) + absl::StrFormat(" memory: %s\n", MemoryUsage()) + absl::StrFormat( - " num failures: %" GG_LL_FORMAT "d (%.0f /sec)\n", - counters_.num_failures, + " num failures: %d (%.0f /sec)\n", counters_.num_failures, static_cast(counters_.num_failures) / time_in_s) + absl::StrFormat( - " num branches: %" GG_LL_FORMAT "d (%.0f /sec)\n", - counters_.num_branches, + " num branches: %d (%.0f /sec)\n", counters_.num_branches, static_cast(counters_.num_branches) / time_in_s) + - absl::StrFormat(" num propagations: %" GG_LL_FORMAT - "d (%.0f /sec)\n", + absl::StrFormat(" num propagations: %d (%.0f /sec)\n", num_propagations(), static_cast(num_propagations()) / time_in_s) + - absl::StrFormat(" num binary propagations: %" GG_LL_FORMAT "d\n", + absl::StrFormat(" num binary propagations: %d\n", binary_implication_graph_->num_propagations()) + - absl::StrFormat(" num binary inspections: %" GG_LL_FORMAT "d\n", + absl::StrFormat(" num binary inspections: %d\n", binary_implication_graph_->num_inspections()) + absl::StrFormat( - " num binary redundant implications: %" GG_LL_FORMAT "d\n", + " num binary redundant implications: %d\n", binary_implication_graph_->num_redundant_implications()) + - absl::StrFormat(" num classic minimizations: %" GG_LL_FORMAT - "d" - " (literals removed: %" GG_LL_FORMAT "d)\n", - counters_.num_minimizations, - counters_.num_literals_removed) + - absl::StrFormat(" num binary minimizations: %" GG_LL_FORMAT - "d" - " (literals removed: %" GG_LL_FORMAT "d)\n", - binary_implication_graph_->num_minimization(), - binary_implication_graph_->num_literals_removed()) + - absl::StrFormat(" num inspected clauses: %" GG_LL_FORMAT "d\n", + absl::StrFormat( + " num classic minimizations: %d" + " (literals removed: %d)\n", + counters_.num_minimizations, counters_.num_literals_removed) + + absl::StrFormat( + " num binary minimizations: %d" + " (literals removed: %d)\n", + binary_implication_graph_->num_minimization(), + binary_implication_graph_->num_literals_removed()) + + absl::StrFormat(" num inspected clauses: %d\n", clauses_propagator_.num_inspected_clauses()) + - absl::StrFormat(" num inspected clause_literals: %" GG_LL_FORMAT - "d\n", + absl::StrFormat(" num inspected clause_literals: %d\n", clauses_propagator_.num_inspected_clause_literals()) + absl::StrFormat( " num learned literals: %d (avg: %.1f /clause)\n", @@ -1477,8 +1472,7 @@ std::string SatSolver::StatusString(Status status) const { std::string SatSolver::RunningStatisticsString() const { const double time_in_s = timer_.Get(); return absl::StrFormat( - "%6.2fs, mem:%s, fails:%" GG_LL_FORMAT - "d, " + "%6.2fs, mem:%s, fails:%d, " "depth:%d, clauses:%lld, tmp:%lld, bin:%llu, restarts:%d, vars:%d", time_in_s, MemoryUsage(), counters_.num_failures, CurrentDecisionLevel(), clauses_propagator_.num_clauses() - diff --git a/ortools/util/piecewise_linear_function.cc b/ortools/util/piecewise_linear_function.cc index 657007cbf3..d30ffc115e 100644 --- a/ortools/util/piecewise_linear_function.cc +++ b/ortools/util/piecewise_linear_function.cc @@ -257,13 +257,8 @@ void PiecewiseSegment::AddConstantToY(int64 constant) { std::string PiecewiseSegment::DebugString() const { std::string result = absl::StrFormat( - "PiecewiseSegment()", + "PiecewiseSegment()", start_x_, Value(start_x_), end_x_, Value(end_x_), reference_x_, reference_y_, slope_); return result; diff --git a/ortools/util/sorted_interval_list.cc b/ortools/util/sorted_interval_list.cc index 06249469d0..e15a5e43b7 100644 --- a/ortools/util/sorted_interval_list.cc +++ b/ortools/util/sorted_interval_list.cc @@ -22,8 +22,8 @@ namespace operations_research { std::string ClosedInterval::DebugString() const { - if (start == end) return absl::StrFormat("[%" GG_LL_FORMAT "d]", start); - return absl::StrFormat("[%" GG_LL_FORMAT "d,%" GG_LL_FORMAT "d]", start, end); + if (start == end) return absl::StrFormat("[%d]", start); + return absl::StrFormat("[%d,%d]", start, end); } bool IntervalsAreSortedAndNonAdjacent( diff --git a/ortools/util/stats.cc b/ortools/util/stats.cc index e34c1eb62b..6f4b9b026c 100644 --- a/ortools/util/stats.cc +++ b/ortools/util/stats.cc @@ -35,7 +35,7 @@ std::string MemoryUsage() { } else if (mem > kDisplayThreshold * kKiloByte) { return absl::StrFormat("%2lf KB", mem * 1.0 / kKiloByte); } else { - return absl::StrFormat("%" GG_LL_FORMAT "d", mem); + return absl::StrFormat("%d", mem); } } diff --git a/ortools/util/time_limit.h b/ortools/util/time_limit.h index 18e640004e..c7b533d370 100644 --- a/ortools/util/time_limit.h +++ b/ortools/util/time_limit.h @@ -20,11 +20,10 @@ #include #include #include -#include "absl/memory/memory.h" -#include "absl/time/clock.h" #include "absl/container/flat_hash_map.h" -#include "absl/time/time.h" +#include "absl/memory/memory.h" +#include "absl/time/clock.h" #include "ortools/base/commandlineflags.h" #include "ortools/base/logging.h" #include "ortools/base/macros.h" diff --git a/patches/abseil-cpp-master.patch b/patches/abseil-cpp-master.patch index c26d93f81d..f34057963b 100644 --- a/patches/abseil-cpp-master.patch +++ b/patches/abseil-cpp-master.patch @@ -188,10 +188,24 @@ index 0c93417..46d7ba4 100644 # create an abseil unit_test and add it to the executed test list # diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9a7e103..a19164c 100644 +index 9a7e103..353dbb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -96,3 +96,12 @@ if(BUILD_TESTING) +@@ -23,6 +23,13 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake) + + include(GNUInstallDirs) + include(AbseilHelpers) ++if(UNIX) ++ if(NOT APPLE) ++ set(CMAKE_INSTALL_RPATH "$ORIGIN") ++ else() ++ set(CMAKE_INSTALL_RPATH "@loader_path") ++ endif() ++endif() + + + # config options +@@ -96,3 +103,12 @@ if(BUILD_TESTING) endif() add_subdirectory(absl) diff --git a/patches/gflags.patch b/patches/gflags-2.2.1.patch similarity index 100% rename from patches/gflags.patch rename to patches/gflags-2.2.1.patch diff --git a/tools/Makefile.cc.java.dotnet b/tools/Makefile.cc.java.dotnet index 734eec51f5..2b4b29a9fa 100644 --- a/tools/Makefile.cc.java.dotnet +++ b/tools/Makefile.cc.java.dotnet @@ -68,7 +68,31 @@ ifeq ($(SYSTEM),unix) LIB_PREFIX = lib PRE_LIB = -Llib -Llib64 CBC_LNK = -lCbcSolver -lCbc -lOsiCbc -lCgl -lClpSolver -lClp -lOsiClp -lOsi -lCoinUtils - OR_TOOLS_LNK = $(PRE_LIB) -lprotobuf -lglog -lgflags $(CBC_LNK) -lortools + ABSL_LNK = \ +-labsl_bad_any_cast \ +-labsl_bad_optional_access \ +-labsl_base \ +-labsl_container \ +-labsl_dynamic_annotations \ +-labsl_examine_stack \ +-labsl_failure_signal_handler \ +-labsl_hash \ +-labsl_int128 \ +-labsl_leak_check \ +-labsl_malloc_internal \ +-labsl_optional \ +-labsl_spinlock_wait \ +-labsl_stack_consumption \ +-labsl_stacktrace \ +-labsl_strings \ +-labsl_str_format_extension_internal \ +-labsl_str_format_internal \ +-labsl_symbolize \ +-labsl_synchronization \ +-labsl_throw_delegate \ +-labsl_time \ +-labsl_variant + OR_TOOLS_LNK = $(PRE_LIB) $(ABSL_LNK) -lprotobuf -lglog -lgflags $(CBC_LNK) -lortools OBJ_OUT = -o # EXE_OUT = -o # O = .o diff --git a/tools/docker/Makefile b/tools/docker/Makefile index 6d74045255..954f84e18d 100644 --- a/tools/docker/Makefile +++ b/tools/docker/Makefile @@ -39,6 +39,9 @@ $(info branch: $(OR_TOOLS_BRANCH)) include ../../Version.txt OR_TOOLS_PATCH := $(shell git rev-list --count HEAD) OR_TOOLS_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR).$(OR_TOOLS_PATCH) +ifdef PRE_RELEASE +OR_TOOLS_VERSION := $(OR_TOOLS_VERSION)-beta +endif $(info version: $(OR_TOOLS_VERSION)) DOCKER_RUN_CMD := docker run --rm -it --init ifdef NOCACHE diff --git a/tools/generate_dotnet_proj.sh b/tools/generate_dotnet_proj.sh index b2ebaf3e99..49c9c0a3e0 100755 --- a/tools/generate_dotnet_proj.sh +++ b/tools/generate_dotnet_proj.sh @@ -44,7 +44,7 @@ ${LANG_VERSION} - + EOL