From 29064869ed32b59a770aa25eb3ede3bf482058d0 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Mon, 3 Dec 2018 10:51:15 +0100 Subject: [PATCH 01/18] remove obsolete test after code removal --- examples/tests/visitor_test.cc | 64 ---------------------------------- makefiles/Makefile.cpp.mk | 3 +- 2 files changed, 1 insertion(+), 66 deletions(-) delete mode 100644 examples/tests/visitor_test.cc 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..c33118dfab 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) From ee3520a5a14f4708358677de77b9cd131a8453d7 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Mon, 3 Dec 2018 14:26:31 +0100 Subject: [PATCH 02/18] remove GG_LL_FORMAT from code; reorganize SAT-LP connection; fix bug in routing library --- makefiles/Makefile.gen.mk | 126 +++-- ortools/base/integral_types.h | 15 +- ortools/constraint_solver/alldiff_cst.cc | 10 +- ortools/constraint_solver/assignment.cc | 19 +- .../constraint_solver/constraint_solver.cc | 7 +- ortools/constraint_solver/count_cst.cc | 2 +- ortools/constraint_solver/demon_profiler.cc | 12 +- ortools/constraint_solver/element.cc | 19 +- ortools/constraint_solver/expr_array.cc | 9 +- ortools/constraint_solver/expr_cst.cc | 64 ++- ortools/constraint_solver/expressions.cc | 154 +++---- ortools/constraint_solver/interval.cc | 42 +- ortools/constraint_solver/resource.cc | 10 +- ortools/constraint_solver/routing.cc | 81 +++- ortools/constraint_solver/routing.h | 23 +- ortools/constraint_solver/routing_search.cc | 19 +- ortools/constraint_solver/sched_search.cc | 18 +- ortools/constraint_solver/search.cc | 96 ++-- ortools/constraint_solver/table.cc | 7 +- ortools/constraint_solver/timetabling.cc | 4 +- ortools/flatzinc/flatzinc_constraints.cc | 13 +- ortools/flatzinc/model.cc | 16 +- ortools/flatzinc/presolve.cc | 16 +- ortools/flatzinc/reporting.cc | 20 +- ortools/flatzinc/solver.cc | 48 +- ortools/graph/christofides.h | 17 +- ortools/sat/cp_model_loader.cc | 8 +- ortools/sat/cp_model_loader.h | 2 +- ortools/sat/cp_model_solver.cc | 19 +- ortools/sat/doc/scheduling.md | 7 +- ortools/sat/integer.cc | 6 +- ortools/sat/integer.h | 59 ++- ortools/sat/integer_search.cc | 4 +- ortools/sat/linear_constraint.h | 167 +++++++ ortools/sat/linear_constraint_manager.cc | 106 +++++ ortools/sat/linear_constraint_manager.h | 102 +++++ ortools/sat/linear_programming_constraint.cc | 429 +++++++++--------- ortools/sat/linear_programming_constraint.h | 211 +-------- ortools/sat/optimization.cc | 13 +- ortools/sat/samples/cp_is_fun_sat.py | 4 +- ortools/sat/samples/minimal_jobshop_sat.py | 8 +- .../sat/samples/rabbits_and_pheasants_sat.py | 4 +- ortools/sat/sat_parameters.proto | 3 +- ortools/sat/sat_solver.cc | 42 +- ortools/util/piecewise_linear_function.cc | 9 +- ortools/util/sorted_interval_list.cc | 4 +- ortools/util/stats.cc | 2 +- ortools/util/time_limit.h | 5 +- 48 files changed, 1145 insertions(+), 936 deletions(-) create mode 100644 ortools/sat/linear_constraint.h create mode 100644 ortools/sat/linear_constraint_manager.cc create mode 100644 ortools/sat/linear_constraint_manager.h diff --git a/makefiles/Makefile.gen.mk b/makefiles/Makefile.gen.mk index 024d10fcbf..27c3a104b3 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,7 @@ 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_manager.$O \ $(OBJ_DIR)/sat/linear_programming_constraint.$O \ $(OBJ_DIR)/sat/linear_relaxation.$O \ $(OBJ_DIR)/sat/lp_utils.$O \ @@ -1287,9 +1292,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 +1410,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 +1462,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 +1617,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 +1640,35 @@ 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_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 +1676,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 +1732,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 +3274,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 +3418,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/ortools/base/integral_types.h b/ortools/base/integral_types.h index c8d4dca9d4..b46fa9135f 100644 --- a/ortools/base/integral_types.h +++ b/ortools/base/integral_types.h @@ -22,7 +22,7 @@ #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__) +#elif defined(__GNUC__) && defined(__LP64__) && !defined(__aarch64__) #define ARCH_K8 // Linux x64 #endif @@ -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/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/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..29393a83a4 100644 --- a/ortools/constraint_solver/routing.cc +++ b/ortools/constraint_solver/routing.cc @@ -3663,16 +3663,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; @@ -5060,33 +5058,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 +5631,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 +5677,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..661edae4d8 100644 --- a/ortools/constraint_solver/routing.h +++ b/ortools/constraint_solver/routing.h @@ -1555,14 +1555,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 +1580,7 @@ class GlobalVehicleBreaksConstraint : public Constraint { private: IntVar* start_ = nullptr; int64 duration_min_; + int64 group_delay_; IntervalVar* interval_ = nullptr; }; @@ -1741,9 +1744,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 +1824,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 +1907,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_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..17a36c0283 100644 --- a/ortools/constraint_solver/search.cc +++ b/ortools/constraint_solver/search.cc @@ -91,9 +91,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); } @@ -110,29 +109,27 @@ bool SearchLog::AtSolution() { objective_updated = true; } else if (var_ != nullptr) { current = var_->Value(); - absl::StrAppendFormat(&obj_str, "%" GG_LL_FORMAT "d, ", current); + absl::StrAppendFormat(&obj_str, "%d, ", current); objective_updated = true; } if (objective_updated) { if (current >= objective_min_) { - absl::StrAppendFormat( - &obj_str, "objective minimum = %" GG_LL_FORMAT "d, ", objective_min_); + absl::StrAppendFormat(&obj_str, "objective minimum = %d, ", + objective_min_); } else { objective_min_ = current; } if (current <= objective_max_) { - absl::StrAppendFormat( - &obj_str, "objective maximum = %" GG_LL_FORMAT "d, ", objective_max_); + absl::StrAppendFormat(&obj_str, "objective maximum = %d, ", + 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 +137,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 +159,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 +187,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 +201,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 +223,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,7 +253,7 @@ 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); } } @@ -1524,8 +1512,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 +1550,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 +1591,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 +1664,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 +2712,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 +2722,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 +3963,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/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 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_solver.cc b/ortools/sat/cp_model_solver.cc index 086703fd67..73ec4b4b03 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" @@ -573,7 +573,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 +1016,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 +1028,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 +1045,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; 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..2b572a8a92 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++; } } diff --git a/ortools/sat/integer.h b/ortools/sat/integer.h index 323cadeee9..0928f6a695 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(); @@ -951,12 +968,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 +990,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..6c23e0b416 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) { diff --git a/ortools/sat/linear_constraint.h b/ortools/sat/linear_constraint.h new file mode 100644 index 0000000000..6a2ecf20d6 --- /dev/null +++ b/ortools/sat/linear_constraint.h @@ -0,0 +1,167 @@ +// 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; + } +}; + +// 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_; +}; + +} // 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..096aed77ae --- /dev/null +++ b/ortools/sat/linear_constraint_manager.cc @@ -0,0 +1,106 @@ +// 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 int index = gtl::FindOrDieNoPrint(equiv_constraints_, terms); + if (canonicalized.lb > constraints_[index].lb) { + some_constraint_changed_ = true; + constraints_[index].lb = canonicalized.lb; + } + if (canonicalized.ub < constraints_[index].ub) { + some_constraint_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_in_lp_.push_back(false); + constraints_.push_back(std::move(canonicalized)); + some_constraint_changed_ = true; + } +} + +bool LinearConstraintManager::LpShouldBeChanged() { + if (some_constraint_changed_) return true; + + // TODO(user): for now we limit the total number of constraint in the LP + // to be twice the total number of variables. + const size_t max_num_constraints = used_variables_.size() * 2; + return num_constraints_in_lp_ < + std::min(constraints_.size(), max_num_constraints); +} + +// TODO(user): Implement, for now we just return all the constraint we know +// about. We could at least only return an "increasing" list of constraint, but +// never add the one currently satisfied by the given solution. +std::vector LinearConstraintManager::GetLp( + const gtl::ITIVector& lp_solution) { + std::vector result; + for (int i = 0; i < constraints_.size(); ++i) { + constraint_in_lp_[i] = true; + result.push_back(&constraints_[i]); + } + num_constraints_in_lp_ = result.size(); + some_constraint_changed_ = false; + return result; +} + +} // 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..ae5abf082d --- /dev/null +++ b/ortools/sat/linear_constraint_manager.h @@ -0,0 +1,102 @@ +// 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/base/hash.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); + + // Basic heuristic to decides if we should change the LP by removing/adding + // constraints. + bool LpShouldBeChanged(); + + // Returns a list of constraints that should form the next LP to solve. + // The given lp_solution should be the optimal solution of the LP returned + // by the last call to GetLp(). + // + // Note: The first time this is called, lp_solution will be ignored as there + // is no previous call to GetLp(). + // + // Important: The returned pointers are only valid until the next Add() call. + std::vector GetLp( + const gtl::ITIVector& lp_solution); + + 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 GetLp(). + bool some_constraint_changed_ = true; + + // The list of constraint and whether each of them where added by the last + // call the GetLp(). + int num_constraints_in_lp_ = 0; + std::vector constraint_in_lp_; + std::vector 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..6ffa347868 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 >= last_lp_solution_.size()) { + last_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,46 @@ 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(); + for (const LinearConstraint* ct : + constraint_manager_.GetLp(last_lp_solution_)) { + 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 +148,7 @@ void LinearProgrammingConstraint::RegisterWith(Model* model) { } // Scale lp_data_. + scaler_.Clear(); Scale(&lp_data_, &scaler_, glop::GlopParameters::DEFAULT); lp_data_.ScaleObjective(); @@ -183,7 +162,18 @@ 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() << "."; +} + +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()); + CreateLpFromConstraintManager(); GenericLiteralWatcher* watcher = model->GetOrCreate(); const int watcher_id = watcher->Register(this); @@ -272,6 +262,27 @@ 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) { + const int num_vars = integer_variables_.size(); + for (int i = 0; i < num_vars; i++) { + const glop::Fractional value = + GetVariableValueAtCpScale(glop::ColIndex(i)); + last_lp_solution_[integer_variables_[i]] = value; + last_lp_solution_[NegationOf(integer_variables_[i])] = -value; + } + } + return true; +} + bool LinearProgrammingConstraint::Propagate() { UpdateBoundsOfLpVariables(); @@ -305,78 +316,42 @@ 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)); + // Modify the LP? + if (simplex_.GetProblemStatus() == glop::ProblemStatus::OPTIMAL) { + // Add cuts? + if (!cut_generators_.empty() && + num_cuts_ < sat_parameters_.max_num_cuts() && + !constraint_manager_.LpShouldBeChanged() && + (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(last_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; - - // 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]}); - } - std::sort(integer_lp_.back().terms.begin(), - integer_lp_.back().terms.end()); + if (num_new_cuts > 0) { + VLOG(1) << "#cuts " << num_cuts_; + num_cuts_ += num_new_cuts; } } - // 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; - } + // Resolve? + // + // Note that we might want to change the LP again after this, but we will + // wait for the next Propagate() call to do so. + if (constraint_manager_.LpShouldBeChanged()) { + CreateLpFromConstraintManager(); + if (!SolveLp()) return true; } } @@ -460,6 +435,7 @@ bool LinearProgrammingConstraint::Propagate() { const int num_vars = integer_variables_.size(); for (int i = 0; i < num_vars; i++) { lp_solution_[i] = GetVariableValueAtCpScale(glop::ColIndex(i)); + last_lp_solution_[integer_variables_[i]] = lp_solution_[i]; // The reduced cost need to be divided by LpToCpScalingFactor(). lp_reduced_cost_[i] = simplex_.GetReducedCost(glop::ColIndex(i)) * @@ -766,8 +742,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 +764,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 +926,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 +942,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 +968,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 +984,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 +997,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 +1034,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 +1086,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..460fe9a6d6 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,9 @@ class LinearProgrammingConstraint : public PropagatorInterface, std::vector lp_solution_; std::vector lp_reduced_cost_; + // Same as lp_solution_ but this vector is indexed differently. + gtl::ITIVector last_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/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..ea0de37567 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: 112 message SatParameters { // ========================================================================== // Branching and polarity @@ -498,6 +498,7 @@ 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]; // 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" From 5bf6d6e0582e08d257109ef9b2df214bb5c173f8 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Mon, 3 Dec 2018 15:08:37 +0100 Subject: [PATCH 03/18] add missing files --- ortools/sat/cuts.cc | 26 +++++++++++++++++++++++++ ortools/sat/cuts.h | 47 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 ortools/sat/cuts.cc create mode 100644 ortools/sat/cuts.h 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_ From 7ecfc6681f979f69d68fae9cb14eafbaac228efe Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Mon, 3 Dec 2018 16:01:50 +0100 Subject: [PATCH 04/18] Fix RPATH in abseil-cpp install rules --- patches/abseil-cpp-master.patch | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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) From 164d1790889e2d04b4973248b7af1092666ff4b2 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Mon, 3 Dec 2018 17:58:24 +0100 Subject: [PATCH 05/18] Bump Gflags v2.2.1 -> v2.2.2 --- cmake/external/gflags.CMakeLists.txt | 4 ++-- makefiles/Makefile.third_party.unix.mk | 2 +- makefiles/Makefile.third_party.win.mk | 2 +- patches/{gflags.patch => gflags-2.2.1.patch} | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename patches/{gflags.patch => gflags-2.2.1.patch} (100%) diff --git a/cmake/external/gflags.CMakeLists.txt b/cmake/external/gflags.CMakeLists.txt index 8d5b09b8c8..17f0f79522 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.patch" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" 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/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 From 0bc9b79bf27913c18c885c9f3796d0cfadf1fa1e Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Mon, 3 Dec 2018 18:55:22 +0100 Subject: [PATCH 06/18] minor sync with internal code; prepare glop for more incrementality when used inside the CP-SAT solver --- ortools/base/integral_types.h | 2 +- ortools/glop/revised_simplex.cc | 60 ++++++++++++++----------- ortools/linear_solver/bop_interface.cc | 1 - ortools/linear_solver/glop_interface.cc | 1 - ortools/sat/linear_constraint_manager.h | 1 - 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/ortools/base/integral_types.h b/ortools/base/integral_types.h index b46fa9135f..dd0081221b 100644 --- a/ortools/base/integral_types.h +++ b/ortools/base/integral_types.h @@ -23,7 +23,7 @@ #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 +#define ARCH_K8 // Linux x86_64 #endif #ifndef SWIG 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/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/sat/linear_constraint_manager.h b/ortools/sat/linear_constraint_manager.h index ae5abf082d..249938d58e 100644 --- a/ortools/sat/linear_constraint_manager.h +++ b/ortools/sat/linear_constraint_manager.h @@ -17,7 +17,6 @@ #include #include "absl/container/flat_hash_map.h" -#include "ortools/base/hash.h" #include "ortools/sat/linear_constraint.h" #include "ortools/sat/model.h" From 6a3184872fa856e8709528ea109c787e75a7c5e3 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Tue, 4 Dec 2018 14:36:46 +0100 Subject: [PATCH 07/18] option for add sat constraints to the lp relaxation lazily --- makefiles/Makefile.gen.mk | 20 +++ ortools/com/google/ortools/sat/CpModel.java | 10 +- ortools/glop/markowitz.cc | 8 +- ortools/graph/connected_components.h | 9 ++ ortools/sat/linear_constraint.cc | 31 ++++ ortools/sat/linear_constraint.h | 13 ++ ortools/sat/linear_constraint_manager.cc | 72 ++++++---- ortools/sat/linear_constraint_manager.h | 50 ++++--- ortools/sat/linear_programming_constraint.cc | 144 ++++++++++++------- ortools/sat/linear_programming_constraint.h | 7 +- ortools/sat/sat_parameters.proto | 8 +- 11 files changed, 262 insertions(+), 110 deletions(-) create mode 100644 ortools/sat/linear_constraint.cc diff --git a/makefiles/Makefile.gen.mk b/makefiles/Makefile.gen.mk index 27c3a104b3..e72b45fc3e 100644 --- a/makefiles/Makefile.gen.mk +++ b/makefiles/Makefile.gen.mk @@ -1139,6 +1139,7 @@ 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 \ @@ -1640,6 +1641,25 @@ 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 \ 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/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/graph/connected_components.h b/ortools/graph/connected_components.h index bbe0872b0d..3a6db9d67a 100644 --- a/ortools/graph/connected_components.h +++ b/ortools/graph/connected_components.h @@ -166,6 +166,15 @@ struct ConnectedComponentsTypeHelper { // Each entry in components now contains all the nodes in a single // connected component. // +// Usage with flat_hash_set: +// using ConnectedComponentType = flat_hash_set; +// 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/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 index 6a2ecf20d6..a29ccded6b 100644 --- a/ortools/sat/linear_constraint.h +++ b/ortools/sat/linear_constraint.h @@ -65,6 +65,14 @@ struct LinearConstraint { } 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 @@ -161,6 +169,11 @@ class LinearConstraintBuilder { 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 diff --git a/ortools/sat/linear_constraint_manager.cc b/ortools/sat/linear_constraint_manager.cc index 096aed77ae..405ed339fb 100644 --- a/ortools/sat/linear_constraint_manager.cc +++ b/ortools/sat/linear_constraint_manager.cc @@ -56,13 +56,18 @@ void LinearConstraintManager::Add(const LinearConstraint& ct) { const Terms terms = CanonicalizeConstraintAndGetTerms(&canonicalized); if (gtl::ContainsKey(equiv_constraints_, terms)) { - const int index = gtl::FindOrDieNoPrint(equiv_constraints_, terms); + const ConstraintIndex index( + gtl::FindOrDieNoPrint(equiv_constraints_, terms)); if (canonicalized.lb > constraints_[index].lb) { - some_constraint_changed_ = true; + if (constraint_is_in_lp_[index]) { + some_lp_constraint_bounds_changed_ = true; + } constraints_[index].lb = canonicalized.lb; } if (canonicalized.ub < constraints_[index].ub) { - some_constraint_changed_ = true; + if (constraint_is_in_lp_[index]) { + some_lp_constraint_bounds_changed_ = true; + } constraints_[index].ub = canonicalized.ub; } ++num_merged_constraints_; @@ -71,35 +76,50 @@ void LinearConstraintManager::Add(const LinearConstraint& ct) { used_variables_.insert(var); } equiv_constraints_[terms] = constraints_.size(); - constraint_in_lp_.push_back(false); + constraint_is_in_lp_.push_back(false); constraints_.push_back(std::move(canonicalized)); - some_constraint_changed_ = true; } } -bool LinearConstraintManager::LpShouldBeChanged() { - if (some_constraint_changed_) return true; - - // TODO(user): for now we limit the total number of constraint in the LP - // to be twice the total number of variables. - const size_t max_num_constraints = used_variables_.size() * 2; - return num_constraints_in_lp_ < - std::min(constraints_.size(), max_num_constraints); -} - -// TODO(user): Implement, for now we just return all the constraint we know -// about. We could at least only return an "increasing" list of constraint, but -// never add the one currently satisfied by the given solution. -std::vector LinearConstraintManager::GetLp( +bool LinearConstraintManager::ChangeLp( const gtl::ITIVector& lp_solution) { - std::vector result; - for (int i = 0; i < constraints_.size(); ++i) { - constraint_in_lp_[i] = true; - result.push_back(&constraints_[i]); + 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); } - num_constraints_in_lp_ = result.size(); - some_constraint_changed_ = false; - return result; } } // namespace sat diff --git a/ortools/sat/linear_constraint_manager.h b/ortools/sat/linear_constraint_manager.h index 249938d58e..dc6fc96eff 100644 --- a/ortools/sat/linear_constraint_manager.h +++ b/ortools/sat/linear_constraint_manager.h @@ -48,33 +48,43 @@ class LinearConstraintManager { // and merge the bounds of constraints with the same terms. void Add(const LinearConstraint& ct); - // Basic heuristic to decides if we should change the LP by removing/adding - // constraints. - bool LpShouldBeChanged(); + // 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); - // Returns a list of constraints that should form the next LP to solve. - // The given lp_solution should be the optimal solution of the LP returned - // by the last call to GetLp(). - // - // Note: The first time this is called, lp_solution will be ignored as there - // is no previous call to GetLp(). - // - // Important: The returned pointers are only valid until the next Add() call. - std::vector GetLp( - 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 GetLp(). - bool some_constraint_changed_ = true; + // Set at true by Add() and at false by ChangeLp(). + bool some_lp_constraint_bounds_changed_ = false; - // The list of constraint and whether each of them where added by the last - // call the GetLp(). - int num_constraints_in_lp_ = 0; - std::vector constraint_in_lp_; - std::vector constraints_; + // 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 diff --git a/ortools/sat/linear_programming_constraint.cc b/ortools/sat/linear_programming_constraint.cc index 6ffa347868..ea7ce6d36b 100644 --- a/ortools/sat/linear_programming_constraint.cc +++ b/ortools/sat/linear_programming_constraint.cc @@ -83,8 +83,8 @@ glop::ColIndex LinearProgrammingConstraint::GetOrCreateMirrorVariable( const int index = std::max(positive_variable.value(), NegationOf(positive_variable).value()); - if (index >= last_lp_solution_.size()) { - last_lp_solution_.resize(index + 1, 0.0); + if (index >= expanded_lp_solution_.size()) { + expanded_lp_solution_.resize(index + 1, 0.0); } return col; } @@ -109,17 +109,18 @@ void LinearProgrammingConstraint::SetObjectiveCoefficient(IntegerVariable ivar, void LinearProgrammingConstraint::CreateLpFromConstraintManager() { // Fill integer_lp_. integer_lp_.clear(); - for (const LinearConstraint* ct : - constraint_manager_.GetLp(last_lp_solution_)) { + 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(); + 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]; + IntegerVariable var = ct.vars[i]; + IntegerValue coeff = ct.coeffs[i]; if (!VariableIsPositive(var)) { var = NegationOf(var); coeff = -coeff; @@ -164,7 +165,9 @@ void LinearProgrammingConstraint::CreateLpFromConstraintManager() { lp_data_.NotifyThatColumnsAreClean(); lp_data_.AddSlackVariablesWhereNecessary(false); - VLOG(1) << "LP relaxation: " << lp_data_.GetDimensionString() << "."; + VLOG(1) << "LP relaxation: " << lp_data_.GetDimensionString() << ". " + << constraint_manager_.AllConstraints().size() + << " Managed constraints."; } void LinearProgrammingConstraint::RegisterWith(Model* model) { @@ -172,7 +175,14 @@ void LinearProgrammingConstraint::RegisterWith(Model* model) { 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(); @@ -201,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) { @@ -210,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])); @@ -223,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,12 +302,19 @@ bool LinearProgrammingConstraint::SolveLp() { } 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)); - last_lp_solution_[integer_variables_[i]] = value; - last_lp_solution_[NegationOf(integer_variables_[i])] = -value; + 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; @@ -318,40 +355,46 @@ bool LinearProgrammingConstraint::Propagate() { simplex_.NotifyThatMatrixIsUnchangedForNextSolve(); if (!SolveLp()) return true; - // Modify the LP? + // 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) { - // Add cuts? - if (!cut_generators_.empty() && - num_cuts_ < sat_parameters_.max_num_cuts() && - !constraint_manager_.LpShouldBeChanged() && - (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(last_lp_solution_); - - // Add the cuts to the manager. - for (const LinearConstraint& cut : cuts) { - ++num_new_cuts; - constraint_manager_.Add(cut); - } - } - if (num_new_cuts > 0) { - VLOG(1) << "#cuts " << num_cuts_; - num_cuts_ += num_new_cuts; - } - } - - // Resolve? - // - // Note that we might want to change the LP again after this, but we will - // wait for the next Propagate() call to do so. - if (constraint_manager_.LpShouldBeChanged()) { + // 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); + } + } + if (num_new_cuts > 0) { + VLOG(1) << "#cuts " << num_cuts_; + num_cuts_ += num_new_cuts; + + if (constraint_manager_.ChangeLp(expanded_lp_solution_)) { + CreateLpFromConstraintManager(); + if (!SolveLp()) return true; + } + } + } } } @@ -425,18 +468,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)); - last_lp_solution_[integer_variables_[i]] = lp_solution_[i]; - // The reduced cost need to be divided by LpToCpScalingFactor(). lp_reduced_cost_[i] = simplex_.GetReducedCost(glop::ColIndex(i)) * CpToLpScalingFactor(glop::ColIndex(i)) * diff --git a/ortools/sat/linear_programming_constraint.h b/ortools/sat/linear_programming_constraint.h index 460fe9a6d6..fa20e4b3f8 100644 --- a/ortools/sat/linear_programming_constraint.h +++ b/ortools/sat/linear_programming_constraint.h @@ -281,8 +281,13 @@ 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 last_lp_solution_; + 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/sat_parameters.proto b/ortools/sat/sat_parameters.proto index ea0de37567..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: 112 +// NEXT TAG: 113 message SatParameters { // ========================================================================== // Branching and polarity @@ -500,6 +500,12 @@ message SatParameters { 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 { // Try to fix all literals using the underlying SAT solver's heuristics, From 6ba307dccf23f66e118f1441765bbbbfab386c66 Mon Sep 17 00:00:00 2001 From: Mizux Date: Tue, 4 Dec 2018 17:36:44 +0100 Subject: [PATCH 08/18] Update WORKSPACE Bump gflags to v2.2.2 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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. From 5052ab2013ba57660bcce3906d03ea06dc1338cf Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Wed, 5 Dec 2018 14:29:16 +0100 Subject: [PATCH 09/18] Update CMakeLists.txt --- CMakeLists.txt | 2 +- cmake/external/CMakeLists.txt | 45 +++++++++++++++------------- cmake/external/gflags.CMakeLists.txt | 2 +- 3 files changed, 26 insertions(+), 23 deletions(-) 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/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 17f0f79522..1c9c57be64 100644 --- a/cmake/external/gflags.CMakeLists.txt +++ b/cmake/external/gflags.CMakeLists.txt @@ -13,7 +13,7 @@ ExternalProject_Add(gflags_project 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 "" From 79003d78f3348880e4310f27596e04b099285e9d Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Wed, 5 Dec 2018 15:40:23 +0100 Subject: [PATCH 10/18] Travis-CI CMake workaround Since we are integrating dependencies using add_subdirectory(). We should add them to install(TARGETS) but we can't. Until cmake 3.13 it is impossible to add target to install which has not been declare in the current scope i.e. CMakeLists.txt It is also impossible to install target alias so you must retrieve the ALIASED_TARGET if any... --- .travis/script.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 756e36bab5c4cce1ab32d42814acfb240a365fde Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Thu, 6 Dec 2018 09:28:49 +0100 Subject: [PATCH 11/18] Bump version to 7.0 - Also regenerate .Net proj to avoid sample to use the published 6.10 nuget package --- Version.txt | 4 +- examples/contrib/3_jugs_regular.csproj | 2 +- examples/contrib/Google.OrTools.Contrib.sln | 3120 ++++++++--------- examples/contrib/SimpleProgramFSharp.fsproj | 2 +- examples/contrib/a_puzzle.csproj | 2 +- examples/contrib/a_round_of_golf.csproj | 2 +- examples/contrib/all_interval.csproj | 2 +- examples/contrib/alldifferent_except_0.csproj | 2 +- examples/contrib/assignment.csproj | 2 +- examples/contrib/broken_weights.csproj | 2 +- examples/contrib/bus_schedule.csproj | 2 +- examples/contrib/circuit.csproj | 2 +- examples/contrib/circuit2.csproj | 2 +- examples/contrib/coins3.csproj | 2 +- examples/contrib/coins_grid.csproj | 2 +- .../contrib/combinatorial_auction2.csproj | 2 +- examples/contrib/contiguity_regular.csproj | 2 +- examples/contrib/contiguity_transition.csproj | 2 +- examples/contrib/costas_array.csproj | 2 +- examples/contrib/covering_opl.csproj | 2 +- examples/contrib/crew.csproj | 2 +- examples/contrib/crossword.csproj | 2 +- examples/contrib/crypta.csproj | 2 +- examples/contrib/crypto.csproj | 2 +- examples/contrib/csdiet.csproj | 2 +- .../contrib/curious_set_of_integers.csproj | 2 +- examples/contrib/debruijn.csproj | 2 +- examples/contrib/discrete_tomography.csproj | 2 +- .../contrib/divisible_by_9_through_1.csproj | 2 +- examples/contrib/dudeney.csproj | 2 +- examples/contrib/einav_puzzle2.csproj | 2 +- examples/contrib/eq10.csproj | 2 +- examples/contrib/eq20.csproj | 2 +- examples/contrib/fill_a_pix.csproj | 2 +- examples/contrib/fsProgram.fsproj | 2 +- examples/contrib/fsdiet.fsproj | 2 +- examples/contrib/fsequality-inequality.fsproj | 2 +- examples/contrib/fsequality.fsproj | 2 +- .../contrib/fsinteger-linear-program.fsproj | 2 +- examples/contrib/fsintegerprogramming.fsproj | 2 +- examples/contrib/fsknapsack.fsproj | 2 +- examples/contrib/fslinearprogramming.fsproj | 2 +- .../contrib/fsnetwork-max-flow-lpSolve.fsproj | 2 +- examples/contrib/fsnetwork-max-flow.fsproj | 2 +- .../contrib/fsnetwork-min-cost-flow.fsproj | 2 +- examples/contrib/fsrabbit-pheasant.fsproj | 2 +- examples/contrib/fsvolsay.fsproj | 2 +- examples/contrib/fsvolsay3-lpSolve.fsproj | 2 +- examples/contrib/fsvolsay3.fsproj | 2 +- examples/contrib/furniture_moving.csproj | 2 +- .../contrib/furniture_moving_intervals.csproj | 2 +- examples/contrib/futoshiki.csproj | 2 +- examples/contrib/golomb_ruler.csproj | 2 +- examples/contrib/grocery.csproj | 2 +- examples/contrib/hidato_table.csproj | 2 +- examples/contrib/just_forgotten.csproj | 2 +- examples/contrib/kakuro.csproj | 2 +- examples/contrib/kenken2.csproj | 2 +- examples/contrib/killer_sudoku.csproj | 2 +- examples/contrib/labeled_dice.csproj | 2 +- examples/contrib/langford.csproj | 2 +- examples/contrib/least_diff.csproj | 2 +- examples/contrib/lectures.csproj | 2 +- examples/contrib/magic_sequence.csproj | 2 +- examples/contrib/magic_square.csproj | 2 +- .../contrib/magic_square_and_cards.csproj | 2 +- examples/contrib/map.csproj | 2 +- examples/contrib/map2.csproj | 2 +- examples/contrib/marathon2.csproj | 2 +- examples/contrib/max_flow_taha.csproj | 2 +- examples/contrib/max_flow_winston1.csproj | 2 +- examples/contrib/minesweeper.csproj | 2 +- examples/contrib/mr_smith.csproj | 2 +- examples/contrib/nontransitive_dice.csproj | 2 +- examples/contrib/nqueens.csproj | 2 +- .../contrib/nurse_rostering_regular.csproj | 2 +- .../contrib/nurse_rostering_transition.csproj | 2 +- examples/contrib/olympic.csproj | 2 +- examples/contrib/organize_day.csproj | 2 +- .../contrib/organize_day_intervals.csproj | 2 +- examples/contrib/p_median.csproj | 2 +- examples/contrib/pandigital_numbers.csproj | 2 +- examples/contrib/partition.csproj | 2 +- .../contrib/perfect_square_sequence.csproj | 2 +- examples/contrib/photo_problem.csproj | 2 +- examples/contrib/place_number_puzzle.csproj | 2 +- examples/contrib/post_office_problem2.csproj | 2 +- examples/contrib/quasigroup_completion.csproj | 2 +- examples/contrib/regex.csproj | 2 +- examples/contrib/rogo2.csproj | 2 +- examples/contrib/scheduling_speakers.csproj | 2 +- examples/contrib/secret_santa.csproj | 2 +- examples/contrib/secret_santa2.csproj | 2 +- examples/contrib/send_more_money.csproj | 2 +- examples/contrib/send_more_money2.csproj | 2 +- examples/contrib/send_most_money.csproj | 2 +- examples/contrib/seseman.csproj | 2 +- examples/contrib/set_covering.csproj | 2 +- examples/contrib/set_covering2.csproj | 2 +- examples/contrib/set_covering3.csproj | 2 +- examples/contrib/set_covering4.csproj | 2 +- .../contrib/set_covering_deployment.csproj | 2 +- examples/contrib/set_covering_skiena.csproj | 2 +- examples/contrib/set_partition.csproj | 2 +- examples/contrib/sicherman_dice.csproj | 2 +- examples/contrib/ski_assignment.csproj | 2 +- examples/contrib/stable_marriage.csproj | 2 +- examples/contrib/strimko2.csproj | 2 +- examples/contrib/subset_sum.csproj | 2 +- examples/contrib/sudoku.csproj | 2 +- examples/contrib/survo_puzzle.csproj | 2 +- examples/contrib/to_num.csproj | 2 +- examples/contrib/traffic_lights.csproj | 2 +- examples/contrib/volsay.csproj | 2 +- examples/contrib/volsay2.csproj | 2 +- examples/contrib/volsay3.csproj | 2 +- examples/contrib/wedding_optimal_chart.csproj | 2 +- examples/contrib/who_killed_agatha.csproj | 2 +- examples/contrib/word_square.csproj | 2 +- examples/contrib/xkcd.csproj | 2 +- examples/contrib/young_tableaux.csproj | 2 +- examples/contrib/zebra.csproj | 2 +- examples/dotnet/GateSchedulingSat.csproj | 2 +- examples/dotnet/Google.OrTools.Examples.sln | 442 +-- examples/dotnet/JobshopFt06Sat.csproj | 2 +- examples/dotnet/JobshopSat.csproj | 2 +- examples/dotnet/NursesSat.csproj | 2 +- examples/dotnet/SpeakerSchedulingSat.csproj | 2 +- examples/dotnet/TaskSchedulingSat.csproj | 2 +- examples/dotnet/cscvrptw.csproj | 2 +- examples/dotnet/csflow.csproj | 2 +- examples/dotnet/csfz.csproj | 2 +- examples/dotnet/csintegerprogramming.csproj | 2 +- examples/dotnet/csknapsack.csproj | 2 +- examples/dotnet/cslinearprogramming.csproj | 2 +- examples/dotnet/csls_api.csproj | 2 +- examples/dotnet/csrabbitspheasants.csproj | 2 +- examples/dotnet/cstsp.csproj | 2 +- examples/dotnet/tsp.csproj | 2 +- examples/dotnet/vrp.csproj | 2 +- examples/tests/issue18.csproj | 2 +- examples/tests/issue22.csproj | 2 +- examples/tests/issue33.csproj | 2 +- examples/tests/test_sat_model.csproj | 2 +- examples/tests/testcp.csproj | 2 +- examples/tests/testlp.csproj | 2 +- examples/tests/testsat.csproj | 2 +- .../graph/samples/SimpleMaxFlowProgram.csproj | 2 +- .../samples/SimpleMinCostFlowProgram.csproj | 2 +- .../samples/SimpleLpProgram.csproj | 2 +- .../samples/SimpleMipProgram.csproj | 2 +- .../sat/samples/BinPackingProblemSat.csproj | 2 +- ortools/sat/samples/BoolOrSampleSat.csproj | 2 +- .../sat/samples/ChannelingSampleSat.csproj | 2 +- ortools/sat/samples/CpIsFunSat.csproj | 2 +- ortools/sat/samples/IntervalSampleSat.csproj | 2 +- ortools/sat/samples/LiteralSampleSat.csproj | 2 +- ortools/sat/samples/NoOverlapSampleSat.csproj | 2 +- .../samples/OptionalIntervalSampleSat.csproj | 2 +- .../sat/samples/RabbitsAndPheasantsSat.csproj | 2 +- ortools/sat/samples/RankingSampleSat.csproj | 2 +- ortools/sat/samples/ReifiedSampleSat.csproj | 2 +- .../SearchForAllSolutionsSampleSat.csproj | 2 +- ortools/sat/samples/SimpleSatProgram.csproj | 2 +- ...PrintIntermediateSolutionsSampleSat.csproj | 2 +- .../SolveWithTimeLimitSampleSat.csproj | 2 +- .../StopAfterNSolutionsSampleSat.csproj | 2 +- 167 files changed, 1947 insertions(+), 1947 deletions(-) diff --git a/Version.txt b/Version.txt index 61b578ded7..2472515a68 100644 --- a/Version.txt +++ b/Version.txt @@ -1,2 +1,2 @@ -OR_TOOLS_MAJOR=6 -OR_TOOLS_MINOR=10 +OR_TOOLS_MAJOR=7 +OR_TOOLS_MINOR=0 diff --git a/examples/contrib/3_jugs_regular.csproj b/examples/contrib/3_jugs_regular.csproj index fe16ffc7cd..c43d904852 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..7d98185d02 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..66d5f12015 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..76fd500c01 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..32e9d28e67 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..4f89c6c87e 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..e917e5085c 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..15c89a8a70 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..91b434cd5d 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..78127866e7 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..5d07913fe9 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..25619f02f9 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..ee64cbf535 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..1a2648506d 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..dc3fc8125f 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..6b9f3594fa 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..1ee0bb2f4b 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..2b50e669a3 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..0bdeecc988 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..1959508f17 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..50d26b6473 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..685727079c 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..b698b3b299 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..6af82038d0 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..e551d217c3 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..1a4651dc8f 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..8f3e8208b2 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..3b7c9c7a03 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..92e6d0992b 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..5d9cc82ad4 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..132f13aa51 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..5b419fdf38 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..4bb12ee8ce 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..53a775c929 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..33cb7f2c1b 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..5807fc0d35 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..fc0320dcb4 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..f691bb0637 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..2e672cc4c7 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..fb3129d3fa 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..3796e9e517 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..339acc904c 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..05256e7b17 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..fccb328f2d 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..9c2fe515b5 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..bd3057519b 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..25c975cfe8 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..9291240d5b 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..f8f409a25d 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..f66e1e582b 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..ceb0704c64 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..89347647c1 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..94dd3e2706 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..d4d6653f9f 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..898b992c2e 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..eb66cdee79 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..b1a1f227d5 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..484ab049e4 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..2e91687a00 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..ce6945dcda 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..a20c02d2d2 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..f7aaebe244 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..eec690819d 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..2e047a58c4 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..69b468c1f3 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..1f34c941d5 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..33a688c8c7 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..b64f969299 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..f65f7ea47b 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..62534d1016 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..7bb244e75a 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..1f8cdd87ac 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..4dc9fccefe 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..c750d55069 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..797d5d4d8a 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..3cafe11e1e 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..f8df8fe5f0 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..da7bb713ed 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..f11277be46 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..663384f0f8 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..c08f6aa8e6 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..f32578291b 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..97594d938c 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..c72fff9c71 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..cbf67efb20 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..434026ad55 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..be3a6719c7 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..5fa7b6d7d3 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..b8e37bab72 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..065a1778e3 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..32c4fcb363 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..94774e7a00 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..0a3a12da5f 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..dbe6f72da0 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..4879e1adb4 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..96322bc760 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..fe19c27810 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..15111154e2 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..8501479c8c 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..975085b9da 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..6786404471 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..dbd99696b4 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..6099f68fed 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..8b9d90454a 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..1422b5e538 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..ce9a2cef8b 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..3877dda02b 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..b3821bf339 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..df1e77db6b 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..add0332f02 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..b50431886b 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..0dcd45bf9b 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..139407d450 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..ca8bc4f8fd 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..f592686674 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..24839e539d 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..1c269ac12a 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..98d4bd11e9 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..9d92d43827 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..46e33a2eb4 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..28ce61bdd7 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 68b5f26008..d8a5ff8628 100644 --- a/examples/dotnet/Google.OrTools.Examples.sln +++ b/examples/dotnet/Google.OrTools.Examples.sln @@ -3,39 +3,39 @@ 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}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cscvrptw", "cscvrptw.csproj", "{A6E213B7-2AC0-4759-B3D5-BB0FDD714915}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csflow", "csflow.csproj", "{63FC51D4-C5E3-4EF0-84BE-A11D6176B54A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csflow", "csflow.csproj", "{F623C1BE-13CC-4342-A32A-8CD881A199D9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csfz", "csfz.csproj", "{D3BD3816-AF4F-44DC-A75D-56492550E53B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csfz", "csfz.csproj", "{C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csintegerprogramming", "csintegerprogramming.csproj", "{B3A1ADA7-1DE7-4065-97B9-26E85360DE04}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csintegerprogramming", "csintegerprogramming.csproj", "{0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csknapsack", "csknapsack.csproj", "{3AD280FB-35EA-4CF4-9452-F90BEA18649E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csknapsack", "csknapsack.csproj", "{E100DAEA-85F1-4450-A385-D796EB676630}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cslinearprogramming", "cslinearprogramming.csproj", "{FABFC6A2-2CC4-4A07-810A-E77DEE6F436E}" +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", "{9E03C995-2794-4C82-B164-2DB90A077262}" +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", "{D776D661-577D-46FB-A09F-97597A80CC4D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csrabbitspheasants", "csrabbitspheasants.csproj", "{16022C04-2A33-4A95-9B41-F390F4AC0355}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cstsp", "cstsp.csproj", "{2FC5ADD5-81E1-4EB0-B6F9-5158129BFAC7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cstsp", "cstsp.csproj", "{51E8911B-F773-4A18-A8B7-2BCC48114AAB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GateSchedulingSat", "GateSchedulingSat.csproj", "{87B880DA-44AF-4DB1-8E97-A7977A99B679}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GateSchedulingSat", "GateSchedulingSat.csproj", "{682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopFt06Sat", "JobshopFt06Sat.csproj", "{15524DD4-2EA3-468C-A5BF-F5AD8440278E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopFt06Sat", "JobshopFt06Sat.csproj", "{8E94B0B6-493F-4214-858F-81AFA18416E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopSat", "JobshopSat.csproj", "{7E9DEE69-E38A-486B-BB0C-B2124F3E2F3F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobshopSat", "JobshopSat.csproj", "{ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NursesSat", "NursesSat.csproj", "{9DFA95DD-A78D-41FA-9527-FD610E9A3EFC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NursesSat", "NursesSat.csproj", "{8525EA38-48C0-4D64-A1DE-FE54F5287B4F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeakerSchedulingSat", "SpeakerSchedulingSat.csproj", "{3175CB54-187D-45E4-A500-668BE8EA601F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeakerSchedulingSat", "SpeakerSchedulingSat.csproj", "{E3114C14-B906-4FC8-A5B4-A815E70575B4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskSchedulingSat", "TaskSchedulingSat.csproj", "{BD62083D-52CF-4128-AED8-DD996E364893}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskSchedulingSat", "TaskSchedulingSat.csproj", "{768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tsp", "tsp.csproj", "{8D696773-89A1-4790-93DE-D57C45E61515}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tsp", "tsp.csproj", "{4BBD7983-D698-4638-B690-9D27BC44CD64}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vrp", "vrp.csproj", "{921FA31F-F200-4144-8925-7F93F5BC7062}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vrp", "vrp.csproj", "{DA83621B-14F2-4D26-8DD2-4E79D684DFA7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -50,209 +50,209 @@ Global 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 + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|x64.Build.0 = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Debug|x86.Build.0 = Debug|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|Any CPU.Build.0 = Release|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|x64.ActiveCfg = Release|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|x64.Build.0 = Release|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|x86.ActiveCfg = Release|Any CPU + {A6E213B7-2AC0-4759-B3D5-BB0FDD714915}.Release|x86.Build.0 = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|x64.ActiveCfg = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|x64.Build.0 = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|x86.ActiveCfg = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Debug|x86.Build.0 = Debug|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|Any CPU.Build.0 = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|x64.ActiveCfg = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|x64.Build.0 = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|x86.ActiveCfg = Release|Any CPU + {F623C1BE-13CC-4342-A32A-8CD881A199D9}.Release|x86.Build.0 = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|x64.ActiveCfg = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|x64.Build.0 = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Debug|x86.Build.0 = Debug|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|Any CPU.Build.0 = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|x64.ActiveCfg = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|x64.Build.0 = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|x86.ActiveCfg = Release|Any CPU + {C5BF397A-03AC-4FC2-95D5-942CD52BD6FD}.Release|x86.Build.0 = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|x64.ActiveCfg = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|x64.Build.0 = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|x86.ActiveCfg = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Debug|x86.Build.0 = Debug|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|Any CPU.Build.0 = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|x64.ActiveCfg = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|x64.Build.0 = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|x86.ActiveCfg = Release|Any CPU + {0DC1F4BE-4160-4A2B-8780-7551BBE34BE2}.Release|x86.Build.0 = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|x64.ActiveCfg = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|x64.Build.0 = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|x86.ActiveCfg = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Debug|x86.Build.0 = Debug|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|Any CPU.Build.0 = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|x64.ActiveCfg = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|x64.Build.0 = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|x86.ActiveCfg = Release|Any CPU + {E100DAEA-85F1-4450-A385-D796EB676630}.Release|x86.Build.0 = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|x64.Build.0 = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Debug|x86.Build.0 = Debug|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|Any CPU.Build.0 = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|x64.ActiveCfg = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|x64.Build.0 = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|x86.ActiveCfg = Release|Any CPU + {B34DA790-9540-4204-B9D4-1B7B7F6327E7}.Release|x86.Build.0 = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|x64.ActiveCfg = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|x64.Build.0 = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|x86.ActiveCfg = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Debug|x86.Build.0 = Debug|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|Any CPU.Build.0 = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|x64.ActiveCfg = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|x64.Build.0 = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|x86.ActiveCfg = Release|Any CPU + {58A793AC-54C1-4DC4-9FC3-7448F8C4DB19}.Release|x86.Build.0 = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|x64.ActiveCfg = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|x64.Build.0 = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|x86.ActiveCfg = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Debug|x86.Build.0 = Debug|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|Any CPU.Build.0 = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|x64.ActiveCfg = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|x64.Build.0 = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|x86.ActiveCfg = Release|Any CPU + {16022C04-2A33-4A95-9B41-F390F4AC0355}.Release|x86.Build.0 = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|x64.Build.0 = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Debug|x86.Build.0 = Debug|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|Any CPU.Build.0 = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|x64.ActiveCfg = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|x64.Build.0 = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|x86.ActiveCfg = Release|Any CPU + {51E8911B-F773-4A18-A8B7-2BCC48114AAB}.Release|x86.Build.0 = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|x64.ActiveCfg = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|x64.Build.0 = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|x86.ActiveCfg = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Debug|x86.Build.0 = Debug|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|Any CPU.Build.0 = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|x64.ActiveCfg = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|x64.Build.0 = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|x86.ActiveCfg = Release|Any CPU + {682A4597-1CD1-48C0-BC1D-8ED2496C0B9C}.Release|x86.Build.0 = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|x64.ActiveCfg = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|x64.Build.0 = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|x86.ActiveCfg = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Debug|x86.Build.0 = Debug|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|Any CPU.Build.0 = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|x64.ActiveCfg = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|x64.Build.0 = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|x86.ActiveCfg = Release|Any CPU + {8E94B0B6-493F-4214-858F-81AFA18416E8}.Release|x86.Build.0 = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|x64.Build.0 = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|x86.ActiveCfg = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Debug|x86.Build.0 = Debug|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|Any CPU.Build.0 = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|x64.ActiveCfg = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|x64.Build.0 = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|x86.ActiveCfg = Release|Any CPU + {ED4158FF-7E32-4C4A-A3AB-20DC162CAB6E}.Release|x86.Build.0 = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|x64.ActiveCfg = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|x64.Build.0 = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|x86.ActiveCfg = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Debug|x86.Build.0 = Debug|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|Any CPU.Build.0 = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|x64.ActiveCfg = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|x64.Build.0 = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|x86.ActiveCfg = Release|Any CPU + {8525EA38-48C0-4D64-A1DE-FE54F5287B4F}.Release|x86.Build.0 = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|x64.ActiveCfg = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|x64.Build.0 = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|x86.ActiveCfg = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Debug|x86.Build.0 = Debug|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|Any CPU.Build.0 = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|x64.ActiveCfg = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|x64.Build.0 = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|x86.ActiveCfg = Release|Any CPU + {E3114C14-B906-4FC8-A5B4-A815E70575B4}.Release|x86.Build.0 = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|x64.ActiveCfg = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|x64.Build.0 = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|x86.ActiveCfg = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Debug|x86.Build.0 = Debug|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|Any CPU.Build.0 = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|x64.ActiveCfg = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|x64.Build.0 = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|x86.ActiveCfg = Release|Any CPU + {768FEDB1-45A7-4051-847F-2D9B4C0E2FA3}.Release|x86.Build.0 = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|x64.ActiveCfg = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|x64.Build.0 = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|x86.ActiveCfg = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Debug|x86.Build.0 = Debug|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|Any CPU.Build.0 = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|x64.ActiveCfg = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|x64.Build.0 = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|x86.ActiveCfg = Release|Any CPU + {4BBD7983-D698-4638-B690-9D27BC44CD64}.Release|x86.Build.0 = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|x64.ActiveCfg = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|x64.Build.0 = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|x86.ActiveCfg = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Debug|x86.Build.0 = Debug|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|Any CPU.Build.0 = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|x64.ActiveCfg = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|x64.Build.0 = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|x86.ActiveCfg = Release|Any CPU + {DA83621B-14F2-4D26-8DD2-4E79D684DFA7}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/examples/dotnet/JobshopFt06Sat.csproj b/examples/dotnet/JobshopFt06Sat.csproj index 80b0478f3b..3fa3c8dcc8 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..e69c7282da 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..089fa51fec 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..9314a1cd58 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..634fb9d953 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..bafc7d499a 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..49f111f699 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..0ae819e3f2 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..6aba9d1a28 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..83e0659f2b 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..c155956fac 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..204845eecf 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..782eb8c2a7 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..ec196931f2 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..2070062b9f 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..554c93e39e 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..d8a409fe1d 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..1d1a08669b 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..a7bd71c2b8 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..261b078ffd 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..7e6118f221 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..ea74e3b0af 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..834849fac8 100644 --- a/examples/tests/testsat.csproj +++ b/examples/tests/testsat.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/graph/samples/SimpleMaxFlowProgram.csproj b/ortools/graph/samples/SimpleMaxFlowProgram.csproj index 63eda95d4b..c4e9ec2f0c 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..6715530313 100644 --- a/ortools/graph/samples/SimpleMinCostFlowProgram.csproj +++ b/ortools/graph/samples/SimpleMinCostFlowProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/linear_solver/samples/SimpleLpProgram.csproj b/ortools/linear_solver/samples/SimpleLpProgram.csproj index ce5fe6f04c..85bb418dae 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..ecffd20b9e 100644 --- a/ortools/linear_solver/samples/SimpleMipProgram.csproj +++ b/ortools/linear_solver/samples/SimpleMipProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/sat/samples/BinPackingProblemSat.csproj b/ortools/sat/samples/BinPackingProblemSat.csproj index c7652b4bb4..45e52be779 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..f63e7a18f2 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..3ccde89f15 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..42b57ad718 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..e01597adc1 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..84c8fec29a 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..9872f7c76d 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..5c05aa6aa4 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..4657b3e89c 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..9dc6bd29d5 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..43df1a6a3d 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..508bcc8713 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..7c5ffe8c90 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..3a9b627d8f 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..a88bcbdbc9 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..a7614ae812 100644 --- a/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj +++ b/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj @@ -15,6 +15,6 @@ - + From 13c82b0bd4b44b2040387ee1f155fce0c1d9ffa5 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Thu, 6 Dec 2018 12:58:47 +0100 Subject: [PATCH 12/18] Add PRE_RELEASE support Python PEP440: https://www.python.org/dev/peps/pep-0440/#pre-releases .Net: https://docs.microsoft.com/en-us/nuget/create-packages/prerelease-packages note: Microsoft has a 3 years still open bug to manage prerelease in version see: https://github.com/NuGet/Home/issues/912 --- Version.txt | 1 + examples/contrib/3_jugs_regular.csproj | 2 +- examples/contrib/SimpleProgramFSharp.fsproj | 2 +- examples/contrib/a_puzzle.csproj | 2 +- examples/contrib/a_round_of_golf.csproj | 2 +- examples/contrib/all_interval.csproj | 2 +- examples/contrib/alldifferent_except_0.csproj | 2 +- examples/contrib/assignment.csproj | 2 +- examples/contrib/broken_weights.csproj | 2 +- examples/contrib/bus_schedule.csproj | 2 +- examples/contrib/circuit.csproj | 2 +- examples/contrib/circuit2.csproj | 2 +- examples/contrib/coins3.csproj | 2 +- examples/contrib/coins_grid.csproj | 2 +- examples/contrib/combinatorial_auction2.csproj | 2 +- examples/contrib/contiguity_regular.csproj | 2 +- examples/contrib/contiguity_transition.csproj | 2 +- examples/contrib/costas_array.csproj | 2 +- examples/contrib/covering_opl.csproj | 2 +- examples/contrib/crew.csproj | 2 +- examples/contrib/crossword.csproj | 2 +- examples/contrib/crypta.csproj | 2 +- examples/contrib/crypto.csproj | 2 +- examples/contrib/csdiet.csproj | 2 +- examples/contrib/curious_set_of_integers.csproj | 2 +- examples/contrib/debruijn.csproj | 2 +- examples/contrib/discrete_tomography.csproj | 2 +- examples/contrib/divisible_by_9_through_1.csproj | 2 +- examples/contrib/dudeney.csproj | 2 +- examples/contrib/einav_puzzle2.csproj | 2 +- examples/contrib/eq10.csproj | 2 +- examples/contrib/eq20.csproj | 2 +- examples/contrib/fill_a_pix.csproj | 2 +- examples/contrib/fsProgram.fsproj | 2 +- examples/contrib/fsdiet.fsproj | 2 +- examples/contrib/fsequality-inequality.fsproj | 2 +- examples/contrib/fsequality.fsproj | 2 +- examples/contrib/fsinteger-linear-program.fsproj | 2 +- examples/contrib/fsintegerprogramming.fsproj | 2 +- examples/contrib/fsknapsack.fsproj | 2 +- examples/contrib/fslinearprogramming.fsproj | 2 +- examples/contrib/fsnetwork-max-flow-lpSolve.fsproj | 2 +- examples/contrib/fsnetwork-max-flow.fsproj | 2 +- examples/contrib/fsnetwork-min-cost-flow.fsproj | 2 +- examples/contrib/fsrabbit-pheasant.fsproj | 2 +- examples/contrib/fsvolsay.fsproj | 2 +- examples/contrib/fsvolsay3-lpSolve.fsproj | 2 +- examples/contrib/fsvolsay3.fsproj | 2 +- examples/contrib/furniture_moving.csproj | 2 +- examples/contrib/furniture_moving_intervals.csproj | 2 +- examples/contrib/futoshiki.csproj | 2 +- examples/contrib/golomb_ruler.csproj | 2 +- examples/contrib/grocery.csproj | 2 +- examples/contrib/hidato_table.csproj | 2 +- examples/contrib/just_forgotten.csproj | 2 +- examples/contrib/kakuro.csproj | 2 +- examples/contrib/kenken2.csproj | 2 +- examples/contrib/killer_sudoku.csproj | 2 +- examples/contrib/labeled_dice.csproj | 2 +- examples/contrib/langford.csproj | 2 +- examples/contrib/least_diff.csproj | 2 +- examples/contrib/lectures.csproj | 2 +- examples/contrib/magic_sequence.csproj | 2 +- examples/contrib/magic_square.csproj | 2 +- examples/contrib/magic_square_and_cards.csproj | 2 +- examples/contrib/map.csproj | 2 +- examples/contrib/map2.csproj | 2 +- examples/contrib/marathon2.csproj | 2 +- examples/contrib/max_flow_taha.csproj | 2 +- examples/contrib/max_flow_winston1.csproj | 2 +- examples/contrib/minesweeper.csproj | 2 +- examples/contrib/mr_smith.csproj | 2 +- examples/contrib/nontransitive_dice.csproj | 2 +- examples/contrib/nqueens.csproj | 2 +- examples/contrib/nurse_rostering_regular.csproj | 2 +- examples/contrib/nurse_rostering_transition.csproj | 2 +- examples/contrib/olympic.csproj | 2 +- examples/contrib/organize_day.csproj | 2 +- examples/contrib/organize_day_intervals.csproj | 2 +- examples/contrib/p_median.csproj | 2 +- examples/contrib/pandigital_numbers.csproj | 2 +- examples/contrib/partition.csproj | 2 +- examples/contrib/perfect_square_sequence.csproj | 2 +- examples/contrib/photo_problem.csproj | 2 +- examples/contrib/place_number_puzzle.csproj | 2 +- examples/contrib/post_office_problem2.csproj | 2 +- examples/contrib/quasigroup_completion.csproj | 2 +- examples/contrib/regex.csproj | 2 +- examples/contrib/rogo2.csproj | 2 +- examples/contrib/scheduling_speakers.csproj | 2 +- examples/contrib/secret_santa.csproj | 2 +- examples/contrib/secret_santa2.csproj | 2 +- examples/contrib/send_more_money.csproj | 2 +- examples/contrib/send_more_money2.csproj | 2 +- examples/contrib/send_most_money.csproj | 2 +- examples/contrib/seseman.csproj | 2 +- examples/contrib/set_covering.csproj | 2 +- examples/contrib/set_covering2.csproj | 2 +- examples/contrib/set_covering3.csproj | 2 +- examples/contrib/set_covering4.csproj | 2 +- examples/contrib/set_covering_deployment.csproj | 2 +- examples/contrib/set_covering_skiena.csproj | 2 +- examples/contrib/set_partition.csproj | 2 +- examples/contrib/sicherman_dice.csproj | 2 +- examples/contrib/ski_assignment.csproj | 2 +- examples/contrib/stable_marriage.csproj | 2 +- examples/contrib/strimko2.csproj | 2 +- examples/contrib/subset_sum.csproj | 2 +- examples/contrib/sudoku.csproj | 2 +- examples/contrib/survo_puzzle.csproj | 2 +- examples/contrib/to_num.csproj | 2 +- examples/contrib/traffic_lights.csproj | 2 +- examples/contrib/volsay.csproj | 2 +- examples/contrib/volsay2.csproj | 2 +- examples/contrib/volsay3.csproj | 2 +- examples/contrib/wedding_optimal_chart.csproj | 2 +- examples/contrib/who_killed_agatha.csproj | 2 +- examples/contrib/word_square.csproj | 2 +- examples/contrib/xkcd.csproj | 2 +- examples/contrib/young_tableaux.csproj | 2 +- examples/contrib/zebra.csproj | 2 +- examples/dotnet/GateSchedulingSat.csproj | 2 +- examples/dotnet/JobshopFt06Sat.csproj | 2 +- examples/dotnet/JobshopSat.csproj | 2 +- examples/dotnet/NursesSat.csproj | 2 +- examples/dotnet/SpeakerSchedulingSat.csproj | 2 +- examples/dotnet/TaskSchedulingSat.csproj | 2 +- examples/dotnet/cscvrptw.csproj | 2 +- examples/dotnet/csflow.csproj | 2 +- examples/dotnet/csfz.csproj | 2 +- examples/dotnet/csintegerprogramming.csproj | 2 +- examples/dotnet/csknapsack.csproj | 2 +- examples/dotnet/cslinearprogramming.csproj | 2 +- examples/dotnet/csls_api.csproj | 2 +- examples/dotnet/csrabbitspheasants.csproj | 2 +- examples/dotnet/cstsp.csproj | 2 +- examples/dotnet/tsp.csproj | 2 +- examples/dotnet/vrp.csproj | 2 +- examples/tests/issue18.csproj | 2 +- examples/tests/issue22.csproj | 2 +- examples/tests/issue33.csproj | 2 +- examples/tests/test_sat_model.csproj | 2 +- examples/tests/testcp.csproj | 2 +- examples/tests/testlp.csproj | 2 +- examples/tests/testsat.csproj | 2 +- makefiles/Makefile.port.mk | 5 +++++ makefiles/Makefile.python.mk | 13 ++++++++++--- makefiles/Makefile.unix.mk | 8 ++++---- ortools/graph/samples/SimpleMaxFlowProgram.csproj | 2 +- .../graph/samples/SimpleMinCostFlowProgram.csproj | 2 +- .../linear_solver/samples/SimpleLpProgram.csproj | 2 +- .../linear_solver/samples/SimpleMipProgram.csproj | 2 +- ortools/sat/samples/BinPackingProblemSat.csproj | 2 +- ortools/sat/samples/BoolOrSampleSat.csproj | 2 +- ortools/sat/samples/ChannelingSampleSat.csproj | 2 +- ortools/sat/samples/CpIsFunSat.csproj | 2 +- ortools/sat/samples/IntervalSampleSat.csproj | 2 +- ortools/sat/samples/LiteralSampleSat.csproj | 2 +- ortools/sat/samples/NoOverlapSampleSat.csproj | 2 +- .../sat/samples/OptionalIntervalSampleSat.csproj | 2 +- ortools/sat/samples/RabbitsAndPheasantsSat.csproj | 2 +- ortools/sat/samples/RankingSampleSat.csproj | 2 +- ortools/sat/samples/ReifiedSampleSat.csproj | 2 +- .../samples/SearchForAllSolutionsSampleSat.csproj | 2 +- ortools/sat/samples/SimpleSatProgram.csproj | 2 +- ...lveAndPrintIntermediateSolutionsSampleSat.csproj | 2 +- .../sat/samples/SolveWithTimeLimitSampleSat.csproj | 2 +- .../sat/samples/StopAfterNSolutionsSampleSat.csproj | 2 +- tools/docker/Makefile | 3 +++ tools/generate_dotnet_proj.sh | 2 +- 170 files changed, 188 insertions(+), 172 deletions(-) diff --git a/Version.txt b/Version.txt index 2472515a68..f4cc82c454 100644 --- a/Version.txt +++ b/Version.txt @@ -1,2 +1,3 @@ OR_TOOLS_MAJOR=7 OR_TOOLS_MINOR=0 +PRE_RELEASE=YES diff --git a/examples/contrib/3_jugs_regular.csproj b/examples/contrib/3_jugs_regular.csproj index c43d904852..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/SimpleProgramFSharp.fsproj b/examples/contrib/SimpleProgramFSharp.fsproj index 7d98185d02..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 66d5f12015..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 76fd500c01..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 32e9d28e67..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 4f89c6c87e..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 e917e5085c..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 15c89a8a70..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 91b434cd5d..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 78127866e7..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 5d07913fe9..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 25619f02f9..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 ee64cbf535..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 1a2648506d..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 dc3fc8125f..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 6b9f3594fa..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 1ee0bb2f4b..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 2b50e669a3..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 0bdeecc988..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 1959508f17..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 50d26b6473..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 685727079c..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 b698b3b299..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 6af82038d0..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 e551d217c3..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 1a4651dc8f..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 8f3e8208b2..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 3b7c9c7a03..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 92e6d0992b..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 5d9cc82ad4..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 132f13aa51..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 5b419fdf38..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 4bb12ee8ce..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 53a775c929..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 33cb7f2c1b..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 5807fc0d35..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 fc0320dcb4..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 f691bb0637..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 2e672cc4c7..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 fb3129d3fa..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 3796e9e517..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 339acc904c..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 05256e7b17..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 fccb328f2d..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 9c2fe515b5..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 bd3057519b..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 25c975cfe8..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 9291240d5b..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 f8f409a25d..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 f66e1e582b..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 ceb0704c64..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 89347647c1..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 94dd3e2706..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 d4d6653f9f..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 898b992c2e..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 eb66cdee79..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 b1a1f227d5..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 484ab049e4..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 2e91687a00..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 ce6945dcda..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 a20c02d2d2..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 f7aaebe244..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 eec690819d..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 2e047a58c4..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 69b468c1f3..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 1f34c941d5..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 33a688c8c7..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 b64f969299..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 f65f7ea47b..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 62534d1016..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 7bb244e75a..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 1f8cdd87ac..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 4dc9fccefe..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 c750d55069..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 797d5d4d8a..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 3cafe11e1e..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 f8df8fe5f0..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 da7bb713ed..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 f11277be46..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 663384f0f8..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 c08f6aa8e6..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 f32578291b..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 97594d938c..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 c72fff9c71..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 cbf67efb20..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 434026ad55..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 be3a6719c7..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 5fa7b6d7d3..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 b8e37bab72..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 065a1778e3..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 32c4fcb363..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 94774e7a00..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 0a3a12da5f..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 dbe6f72da0..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 4879e1adb4..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 96322bc760..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 fe19c27810..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 15111154e2..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 8501479c8c..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 975085b9da..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 6786404471..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 dbd99696b4..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 6099f68fed..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 8b9d90454a..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 1422b5e538..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 ce9a2cef8b..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 3877dda02b..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 b3821bf339..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 df1e77db6b..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 add0332f02..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 b50431886b..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 0dcd45bf9b..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 139407d450..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 ca8bc4f8fd..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 f592686674..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 24839e539d..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 1c269ac12a..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 98d4bd11e9..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 9d92d43827..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 46e33a2eb4..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 28ce61bdd7..ea696f18d5 100644 --- a/examples/dotnet/GateSchedulingSat.csproj +++ b/examples/dotnet/GateSchedulingSat.csproj @@ -15,6 +15,6 @@ - + diff --git a/examples/dotnet/JobshopFt06Sat.csproj b/examples/dotnet/JobshopFt06Sat.csproj index 3fa3c8dcc8..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 e69c7282da..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 089fa51fec..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 9314a1cd58..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 634fb9d953..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 bafc7d499a..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 49f111f699..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 0ae819e3f2..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 6aba9d1a28..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 83e0659f2b..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 c155956fac..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 204845eecf..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 782eb8c2a7..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 ec196931f2..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 2070062b9f..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 554c93e39e..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 d8a409fe1d..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 1d1a08669b..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 a7bd71c2b8..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 261b078ffd..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 7e6118f221..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 ea74e3b0af..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 834849fac8..ffb6999fa8 100644 --- a/examples/tests/testsat.csproj +++ b/examples/tests/testsat.csproj @@ -15,6 +15,6 @@ - + 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..8225dc03c5 100755 --- a/makefiles/Makefile.python.mk +++ b/makefiles/Makefile.python.mk @@ -886,10 +886,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 +915,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 diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index aef7701b0f..91373a92b0 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).$(GIT_REVISION) \ + -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).$(GIT_REVISION) \ + -compatibility_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) PRE_LIB = -L$(OR_ROOT)lib -l POST_LIB = LINK_FLAGS = \ diff --git a/ortools/graph/samples/SimpleMaxFlowProgram.csproj b/ortools/graph/samples/SimpleMaxFlowProgram.csproj index c4e9ec2f0c..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 6715530313..3c82e766ca 100644 --- a/ortools/graph/samples/SimpleMinCostFlowProgram.csproj +++ b/ortools/graph/samples/SimpleMinCostFlowProgram.csproj @@ -15,6 +15,6 @@ - + diff --git a/ortools/linear_solver/samples/SimpleLpProgram.csproj b/ortools/linear_solver/samples/SimpleLpProgram.csproj index 85bb418dae..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 ecffd20b9e..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/samples/BinPackingProblemSat.csproj b/ortools/sat/samples/BinPackingProblemSat.csproj index 45e52be779..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 f63e7a18f2..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 3ccde89f15..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 42b57ad718..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 e01597adc1..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 84c8fec29a..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 9872f7c76d..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 5c05aa6aa4..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 4657b3e89c..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 9dc6bd29d5..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 43df1a6a3d..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 508bcc8713..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 7c5ffe8c90..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 3a9b627d8f..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 a88bcbdbc9..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 a7614ae812..b54dd90896 100644 --- a/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj +++ b/ortools/sat/samples/StopAfterNSolutionsSampleSat.csproj @@ -15,6 +15,6 @@ - + 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 From 3543a90dacaa32c15cf882bd6a3823d71bb7914e Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Thu, 6 Dec 2018 15:54:11 +0100 Subject: [PATCH 13/18] Fix MacOS version managment --- makefiles/Makefile.unix.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index 91373a92b0..bf09f84ee3 100644 --- a/makefiles/Makefile.unix.mk +++ b/makefiles/Makefile.unix.mk @@ -189,7 +189,7 @@ ifeq ($(PLATFORM),MACOSX) DYNAMIC_LD = clang++ -dynamiclib -undefined dynamic_lookup \ -Wl,-search_paths_first \ -Wl,-headerpad_max_install_names \ - -current_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR).$(GIT_REVISION) \ + -current_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) \ -compatibility_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR) DYNAMIC_LDFLAGS = -Wl,-rpath,\"@loader_path\" @@ -228,7 +228,7 @@ ifeq ($(PLATFORM),MACOSX) LINK_CMD = clang++ -dynamiclib \ -Wl,-search_paths_first \ -Wl,-headerpad_max_install_names \ - -current_version $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR).$(GIT_REVISION) \ + -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 = From 57551466529b6551c3774caf630b94bf19ca1cdc Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Thu, 6 Dec 2018 16:00:12 +0100 Subject: [PATCH 14/18] Fix python archive --- makefiles/Makefile.python.mk | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk index 8225dc03c5..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' @@ -994,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 From 4ba98b615a41cb525f6652d169e70e8bd5e77534 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Thu, 6 Dec 2018 16:11:47 +0100 Subject: [PATCH 15/18] Fix missing absl libraries in archive --- makefiles/Makefile.cpp.mk | 8 ++++++++ tools/Makefile.cc.java.dotnet | 26 +++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/makefiles/Makefile.cpp.mk b/makefiles/Makefile.cpp.mk index c33118dfab..d873ec7296 100755 --- a/makefiles/Makefile.cpp.mk +++ b/makefiles/Makefile.cpp.mk @@ -621,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" @@ -647,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/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 From b52ed623f4ebc9b658ef82e865705064e7d7d48f Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Thu, 6 Dec 2018 17:16:22 +0100 Subject: [PATCH 16/18] add scaling to routing log --- ortools/constraint_solver/constraint_solver.h | 19 ++++++++- .../constraint_solver/constraint_solveri.h | 2 + ortools/constraint_solver/routing.cc | 17 +++++--- ortools/constraint_solver/routing.h | 3 +- ortools/constraint_solver/routing_flags.cc | 1 + .../constraint_solver/routing_parameters.cc | 7 +++- .../routing_parameters.proto | 2 + ortools/constraint_solver/search.cc | 41 +++++++++++++------ ortools/flatzinc/solver_util.h | 2 +- 9 files changed, 72 insertions(+), 22 deletions(-) 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/routing.cc b/ortools/constraint_solver/routing.cc index 29393a83a4..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; @@ -4585,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)); } } diff --git a/ortools/constraint_solver/routing.h b/ortools/constraint_solver/routing.h index 661edae4d8..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. 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/search.cc b/ortools/constraint_solver/search.cc index 17a36c0283..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), @@ -103,25 +105,32 @@ 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, "%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 = %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 = %d, ", - objective_max_); + absl::StrAppend(&obj_str, + "objective maximum = ", scaled_str(objective_max_), ", "); } else { objective_max_ = current; } @@ -259,39 +268,47 @@ std::string SearchLog::MemoryUsage() { 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 { 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: From 49816f439bc61d568755860e007df29aa0108a6d Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Thu, 6 Dec 2018 17:16:54 +0100 Subject: [PATCH 17/18] experimental objective lower bound sharing in // CP-SAT search --- ortools/sat/cp_model_presolve.cc | 18 +++- ortools/sat/cp_model_solver.cc | 106 ++++++++++++++----- ortools/sat/cp_model_solver.h | 10 +- ortools/sat/integer.cc | 8 ++ ortools/sat/integer.h | 14 +++ ortools/sat/integer_search.cc | 57 +++++++--- ortools/sat/integer_search.h | 1 + ortools/sat/linear_programming_constraint.cc | 11 +- ortools/sat/python/cp_model.py | 5 +- 9 files changed, 175 insertions(+), 55 deletions(-) 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 73ec4b4b03..7c3e94df15 100644 --- a/ortools/sat/cp_model_solver.cc +++ b/ortools/sat/cp_model_solver.cc @@ -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. @@ -1137,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__) @@ -1177,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; @@ -1399,6 +1408,39 @@ 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(); + 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_solution_info(absl::StrCat( + "num_bool:", model->Get()->NumVariables(), " ", + solution_info)); + lb_response.set_status(CpSolverStatus::UNKNOWN); + 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. // @@ -1564,7 +1606,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. @@ -1767,7 +1810,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; @@ -1855,7 +1898,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); } @@ -1899,10 +1942,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); @@ -1977,7 +2022,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); @@ -2000,6 +2045,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; @@ -2015,7 +2064,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); @@ -2025,9 +2074,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(); } @@ -2035,18 +2089,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()) { @@ -2058,7 +2114,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' @@ -2210,9 +2266,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); @@ -2237,7 +2295,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/integer.cc b/ortools/sat/integer.cc index 2b572a8a92..7552347c6d 100644 --- a/ortools/sat/integer.cc +++ b/ortools/sat/integer.cc @@ -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 0928f6a695..c6fc96bf29 100644 --- a/ortools/sat/integer.h +++ b/ortools/sat/integer.h @@ -906,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. @@ -937,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); }; diff --git a/ortools/sat/integer_search.cc b/ortools/sat/integer_search.cc index 6c23e0b416..33249fdc8d 100644 --- a/ortools/sat/integer_search.cc +++ b/ortools/sat/integer_search.cc @@ -419,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_programming_constraint.cc b/ortools/sat/linear_programming_constraint.cc index ea7ce6d36b..d08428f815 100644 --- a/ortools/sat/linear_programming_constraint.cc +++ b/ortools/sat/linear_programming_constraint.cc @@ -386,8 +386,8 @@ bool LinearProgrammingConstraint::Propagate() { } } if (num_new_cuts > 0) { - VLOG(1) << "#cuts " << num_cuts_; num_cuts_ += num_new_cuts; + VLOG(1) << "#cuts " << num_cuts_; if (constraint_manager_.ChangeLp(expanded_lp_solution_)) { CreateLpFromConstraintManager(); @@ -429,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(); 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). From 97b256a4289d94a001bb5053a2312b29cfaff409 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Thu, 6 Dec 2018 17:32:47 +0100 Subject: [PATCH 18/18] fix --- ortools/sat/cp_model_solver.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ortools/sat/cp_model_solver.cc b/ortools/sat/cp_model_solver.cc index 7c3e94df15..b289a3ae4a 100644 --- a/ortools/sat/cp_model_solver.cc +++ b/ortools/sat/cp_model_solver.cc @@ -1421,6 +1421,7 @@ CpSolverResponse SolveCpModelInternal( 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 && @@ -1428,10 +1429,8 @@ CpSolverResponse SolveCpModelInternal( lb_response.clear_solution(); lb_response.clear_solution_lower_bounds(); lb_response.clear_solution_upper_bounds(); - lb_response.set_solution_info(absl::StrCat( - "num_bool:", model->Get()->NumVariables(), " ", - solution_info)); 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); }