diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 978bbafd5..db07d248a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,20 +30,23 @@ jobs: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.06 with: + matrix_filter: map(select((.CUDA_VER | startswith("12")))) build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} + script: ci/build_cpp.sh python-build: needs: [cpp-build] secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.06 with: + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER == "3.12")) build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} - matrix_filter: map(select(.PY_VER != "3.13")) + script: ci/build_python.sh wheel-build-cuopt-mps-parser: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06 @@ -69,14 +72,13 @@ jobs: script: ci/build_wheel_libcuopt.sh package-name: libcuopt package-type: cpp - # build for every combination of arch and CUDA version, but only for the latest Python - matrix_filter: map(select(.PY_VER == "3.12")) | group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | add + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) wheel-build-cuopt: needs: [wheel-build-cuopt-mps-parser, wheel-build-libcuopt] secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06 with: - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} sha: ${{ inputs.sha }} @@ -89,7 +91,7 @@ jobs: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06 with: - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} sha: ${{ inputs.sha }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 8aae3f8d2..5867c04c7 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -96,6 +96,8 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.06 with: build_type: pull-request + matrix_filter: map(select((.CUDA_VER | startswith("12")))) + script: ci/build_cpp.sh conda-cpp-tests: needs: [conda-cpp-build, changed-files] secrets: inherit @@ -103,14 +105,16 @@ jobs: #if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp with: build_type: pull-request - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) + script: ci/test_cpp.sh conda-python-build: needs: conda-cpp-build secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.06 with: build_type: pull-request - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) + script: ci/build_python.sh conda-python-tests: needs: [conda-python-build, changed-files] secrets: inherit @@ -119,7 +123,8 @@ jobs: with: run_codecov: false build_type: pull-request - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) + script: ci/test_python.sh #docs-build: # needs: checks # secrets: inherit @@ -157,9 +162,9 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06 with: # build for every combination of arch and CUDA version, but only for the latest Python - matrix_filter: map(select(.PY_VER == "3.12")) | group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | add - package-name: libcuopt + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER == "3.12")) package-type: cpp + package-name: libcuopt build_type: pull-request script: ci/build_wheel_libcuopt.sh wheel-build-cuopt: @@ -171,7 +176,7 @@ jobs: script: ci/build_wheel_cuopt.sh package-name: cuopt package-type: python - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) wheel-tests-cuopt: needs: [wheel-build-cuopt, wheel-build-cuopt-mps-parser, changed-files] secrets: inherit @@ -180,7 +185,7 @@ jobs: with: build_type: pull-request script: ci/test_wheel_cuopt.sh - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) wheel-build-cuopt-server: needs: wheel-build-cuopt secrets: inherit @@ -190,7 +195,7 @@ jobs: script: ci/build_wheel_cuopt_server.sh package-name: cuopt_server package-type: python - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) wheel-build-cuopt-sh-client: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06 @@ -209,7 +214,7 @@ jobs: with: build_type: pull-request script: ci/test_wheel_cuopt_server.sh - matrix_filter: map(select(.PY_VER != "3.13")) + matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13")) test-self-hosted-server: needs: [wheel-build-cuopt-server, changed-files] secrets: inherit diff --git a/.github/workflows/self_hosted_service_test.yaml b/.github/workflows/self_hosted_service_test.yaml index b9d3f6980..ce98e199e 100644 --- a/.github/workflows/self_hosted_service_test.yaml +++ b/.github/workflows/self_hosted_service_test.yaml @@ -44,9 +44,9 @@ jobs: runs-on: linux-amd64-gpu-l4-latest-1 strategy: matrix: - ctk: ["11.8.0"] - linux_ver: ["ubuntu20.04"] - py_ver: ["3.10"] + ctk: ["12.8.0"] + linux_ver: ["ubuntu24.04"] + py_ver: ["3.12"] container: image: "rapidsai/citestwheel:cuda${{ matrix.ctk }}-${{ matrix.linux_ver}}-py${{ matrix.py_ver }}" options: "--network-alias cuopt-service" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 838021886..a73878943 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,6 +25,7 @@ jobs: branch: ${{ inputs.branch }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} + script: ci/test_cpp.sh conda-cpp-memcheck-tests: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.06 @@ -45,6 +46,7 @@ jobs: branch: ${{ inputs.branch }} date: ${{ inputs.date }} sha: ${{ inputs.sha }} + script: ci/test_python.sh wheel-tests-cuopt: secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.06 diff --git a/README.md b/README.md index 122c10afc..04cee3911 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,8 @@ Review the [CONTRIBUTING.md](CONTRIBUTING.md) file for information on how to con ### CUDA/GPU requirements -* CUDA 11.2+ -* NVIDIA driver 450.80.02+ +* CUDA 12.0+ +* NVIDIA driver >= 525.60.13 (Linux) and >= 527.41 (Windows) * Volta architecture or better (Compute Capability >=7.0) ### Pip @@ -32,12 +32,6 @@ cuOpt can be installed via `pip` from the NVIDIA Python Package Index. Be sure to select the appropriate cuOpt package depending on the major version of CUDA available in your environment: -For CUDA 11.x: - -```bash -pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu11 -``` - For CUDA 12.x: ```bash @@ -48,11 +42,6 @@ pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu12 cuOpt can be installed with conda (via [miniforge](https://github.com/conda-forge/miniforge)) from the `nvidia` channel: -For CUDA 11.x: -```bash -conda install -c rapidsai -c conda-forge -c nvidia \ - cuopt=25.05 python=3.12 cuda-version=11.8 -``` For CUDA 12.x: ```bash diff --git a/benchmarks/linear_programming/cuopt/run_pdlp.cu b/benchmarks/linear_programming/cuopt/run_pdlp.cu index b69a87466..e4fad3c26 100644 --- a/benchmarks/linear_programming/cuopt/run_pdlp.cu +++ b/benchmarks/linear_programming/cuopt/run_pdlp.cu @@ -41,8 +41,8 @@ static void parse_arguments(argparse::ArgumentParser& program) program.add_argument("--time-limit") .help("Time limit in seconds") - .default_value(3600) - .scan<'f', double>(); + .default_value(3600.0) + .scan<'g', double>(); program.add_argument("--iteration-limit") .help("Iteration limit") @@ -52,7 +52,7 @@ static void parse_arguments(argparse::ArgumentParser& program) program.add_argument("--optimality-tolerance") .help("Optimality tolerance") .default_value(1e-4) - .scan<'f', double>(); + .scan<'g', double>(); program.add_argument("--pdlp-solver-mode") .help("Solver mode for PDLP. Possible values: Stable2 (default), Methodical1, Fast1") @@ -102,7 +102,8 @@ static cuopt::linear_programming::pdlp_solver_settings_t create_sol settings.time_limit = program.get("--time-limit"); settings.iteration_limit = program.get("--iteration-limit"); settings.set_optimality_tolerance(program.get("--optimality-tolerance")); - settings.solver_mode = string_to_pdlp_solver_mode(program.get("--pdlp-solver-mode")); + settings.pdlp_solver_mode = + string_to_pdlp_solver_mode(program.get("--pdlp-solver-mode")); settings.method = static_cast(program.get("--method")); settings.crossover = program.get("--crossover"); diff --git a/build.sh b/build.sh index da9a02a9a..9165dbfbe 100755 --- a/build.sh +++ b/build.sh @@ -27,7 +27,7 @@ REPODIR=$(cd $(dirname $0); pwd) LIBCUOPT_BUILD_DIR=${LIBCUOPT_BUILD_DIR:=${REPODIR}/cpp/build} LIBMPS_PARSER_BUILD_DIR=${LIBMPS_PARSER_BUILD_DIR:=${REPODIR}/cpp/libmps_parser/build} -VALIDARGS="clean libcuopt libmps_parser cuopt_mps_parser cuopt cuopt_server cuopt_sh_client docs -a -b -d -g -v -l= --verbose-pdlp [--cmake-args=\\\"\\\"] [--cache-tool=] -n --no-fetch-rapids --skip_l1_tests --allgpuarch --ci-only-arch --show_depr_warn -h --help" +VALIDARGS="clean libcuopt libmps_parser cuopt_mps_parser cuopt cuopt_server cuopt_sh_client docs -a -b -g -v -l= --verbose-pdlp [--cmake-args=\\\"\\\"] [--cache-tool=] -n --allgpuarch --ci-only-arch --show_depr_warn -h --help" HELP="$0 [ ...] [ ...] where is: clean - remove all existing build artifacts and configuration (start over) @@ -43,15 +43,12 @@ HELP="$0 [ ...] [ ...] -g - build for debug -a - Enable assertion (by default in debug mode) -b - Build with benchmark settings - -d - Build with under development, non-release modules -n - no install step - --no-fetch-rapids - don't fetch rapids dependencies -l= - log level. Options are: TRACE | DEBUG | INFO | WARN | ERROR | CRITICAL | OFF. Default=INFO --verbose-pdlp - verbose mode for pdlp solver --cache-tool= - pass the build cache tool (eg: ccache, sccache, distcc) that will be used to speedup the build process. --cmake-args=\\\"\\\" - pass arbitrary list of CMake configuration options (escape all quotes in argument) - --skip_l1_tests - Do not build level 1 regression tests --allgpuarch - build for all supported GPU architectures --ci-only-arch - build for volta and ampere only --show_depr_warn - show cmake deprecation warnings @@ -78,7 +75,6 @@ DEFINE_ASSERT=False DEFINE_PDLP_VERBOSE_MODE=False INSTALL_TARGET=install BUILD_DISABLE_DEPRECATION_WARNING=ON -BUILD_L1_TESTS=ON BUILD_ALL_GPU_ARCH=0 BUILD_CI_ONLY=0 CACHE_ARGS="" @@ -203,21 +199,12 @@ fi if hasArg -b; then DEFINE_BENCHMARK=true fi -if hasArg -d; then - DEFINE_DEVELOPMENT=true -fi if hasArg --verbose-pdlp; then DEFINE_PDLP_VERBOSE_MODE=true fi if hasArg -n; then INSTALL_TARGET="" fi -if hasArg --no-fetch-rapids; then - FETCH_RAPIDS=OFF -fi -if hasArg --skip_l1_tests; then - BUILD_L1_TESTS=OFF -fi if hasArg --allgpuarch; then BUILD_ALL_GPU_ARCH=1 fi @@ -300,15 +287,13 @@ if buildAll || hasArg libcuopt; then mkdir -p ${LIBCUOPT_BUILD_DIR} cd ${LIBCUOPT_BUILD_DIR} cmake -DDEFINE_ASSERT=${DEFINE_ASSERT} \ - -DDEFINE_BENCHMARK=${DEFINE_BENCHMARK} \ - -DDEFINE_DEVELOPMENT=${DEFINE_DEVELOPMENT} \ + -DDEFINE_BENCHMARK=${DEFINE_BENCHMARK} \ -DDEFINE_PDLP_VERBOSE_MODE=${DEFINE_PDLP_VERBOSE_MODE} \ -DLIBCUOPT_LOGGING_LEVEL=${LOGGING_ACTIVE_LEVEL} \ -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ -DCMAKE_CUDA_ARCHITECTURES=${CUOPT_CMAKE_CUDA_ARCHITECTURES} \ -DDISABLE_DEPRECATION_WARNING=${BUILD_DISABLE_DEPRECATION_WARNING} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ - -DBUILD_L1_TESTS=${BUILD_L1_TESTS} \ -DFETCH_RAPIDS=${FETCH_RAPIDS} \ ${EXTRA_CMAKE_ARGS} \ ${REPODIR}/cpp diff --git a/ci/release/update-version-cuopt.sh b/ci/release/update-version-cuopt.sh index c29f990a0..97f9f8b3b 100755 --- a/ci/release/update-version-cuopt.sh +++ b/ci/release/update-version-cuopt.sh @@ -37,7 +37,7 @@ function sed_runner() { # Centralized version file update echo "${NEXT_FULL_TAG}" > VERSION -dependencies='cuopt-cu11 cuopt-cu12 cuopt-mps-parser' +dependencies='cuopt-cu12 cuopt-mps-parser' for FILE in conda/environments/*.yaml dependencies.yaml; do for dependency in ${dependencies}; do sed_runner "s/- ${dependency}==.*/- ${dependency}==${NEXT_SHORT_TAG}\.*/g" "${FILE}"; diff --git a/ci/release/update-version-rapids.sh b/ci/release/update-version-rapids.sh index 67eca55e5..1969187c8 100755 --- a/ci/release/update-version-rapids.sh +++ b/ci/release/update-version-rapids.sh @@ -43,7 +43,7 @@ sed_runner 's/'"DEPENDENT_LIB_MAJOR_VERSION \"[0-9][0-9]\""'/'"DEPENDENT_LIB_MAJ sed_runner 's/'"DEPENDENT_LIB_MINOR_VERSION \"[0-9][0-9]\""'/'"DEPENDENT_LIB_MINOR_VERSION \"${NEXT_MINOR}\""'/g' cpp/CMakeLists.txt # RTD update -dependencies='cudf cudf-cu11 cudf-cu12 cuvs cuvs-cu11 cuvs-cu12 libcudf rmm rmm-cu11 rmm-cu12 librmm libraft-headers pylibraft pylibraft-cu11 pylibraft-cu12 raft-dask raft-dask-cu11 raft-dask-cu12 rapids-dask-dependency' +dependencies='cudf cudf-cu12 cuvs cuvs-cu12 libcudf rmm rmm-cu12 librmm libraft-headers pylibraft pylibraft-cu12 raft-dask rapids-dask-dependency' for FILE in conda/environments/*.yaml dependencies.yaml; do for dependency in ${dependencies}; do sed_runner "s/- ${dependency}==.*/- ${dependency}==${NEXT_SHORT_TAG_PEP440}\.*/g" "${FILE}"; diff --git a/conda/environments/all_cuda-118_arch-aarch64.yaml b/conda/environments/all_cuda-118_arch-aarch64.yaml deleted file mode 100644 index 4875949da..000000000 --- a/conda/environments/all_cuda-118_arch-aarch64.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# This file is generated by `rapids-dependency-file-generator`. -# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. -channels: -- rapidsai -- rapidsai-nightly -- conda-forge -- nvidia -- nvidia/label/cuda-12.4.0 -dependencies: -- breathe -- c-compiler -- ccache -- clang-tools=20.1.4 -- clang==20.1.4 -- cmake>=3.30.4 -- cpp-argparse -- cuda-nvtx=11.8 -- cuda-sanitizer-api=11.8.86 -- cuda-version=11.8 -- cudatoolkit -- cudf==25.4.*,>=0.0.0a0 -- cupy>=12.0.0 -- cuvs==25.4.*,>=0.0.0a0 -- cxx-compiler -- cython>=3.0.3 -- doxygen=1.9.1 -- exhale -- fastapi -- folium -- gcc_linux-aarch64=11.* -- geopandas -- gmock -- gtest -- httpx -- ipython -- jsonref==1.1.0 -- libgdal<3.9.0 -- libraft-headers==25.4.* -- librmm==25.4.* -- make -- matplotlib -- msgpack-numpy==0.4.8 -- msgpack-python==1.1.0 -- myst-nb -- myst-parser -- ninja -- notebook -- numba>=0.59.1,<0.61.0a0 -- numpy>=1.23.5,<3.0a0 -- numpydoc -- nvcc_linux-aarch64=11.8 -- pandas>=2.0,<2.2.3dev0 -- pexpect -- pip -- polyline -- pre-commit -- psutil>=5.9,<6.0a0 -- pylibraft==25.4.*,>=0.0.0a0 -- pyrsistent -- pytest-cov -- pytest<8 -- python>=3.10,<3.13 -- raft-dask==25.4.*,>=0.0.0a0 -- rapids-build-backend>=0.3.0,<0.4.0.dev0 -- rapids-dask-dependency==25.4.* -- rapids-logger==0.1.*,>=0.0.0a0 -- requests -- rmm==25.4.*,>=0.0.0a0 -- scikit-build-core>=0.10.0 -- scipy -- sphinx -- sphinx-copybutton -- sphinx-design -- sphinx-markdown-tables -- sphinx_rtd_theme -- sphinxcontrib-openapi -- sphinxcontrib-websupport -- sysroot_linux-aarch64==2.28 -- uvicorn==0.30.* -- pip: - - nvidia_sphinx_theme - - swagger-plugin-for-sphinx - - veroviz -name: all_cuda-118_arch-aarch64 diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml deleted file mode 100644 index 9fbf5685e..000000000 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# This file is generated by `rapids-dependency-file-generator`. -# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. -channels: -- rapidsai -- rapidsai-nightly -- conda-forge -- nvidia -- nvidia/label/cuda-12.4.0 -dependencies: -- breathe -- c-compiler -- ccache -- clang-tools=20.1.4 -- clang==20.1.4 -- cmake>=3.30.4 -- cpp-argparse -- cuda-nvtx=11.8 -- cuda-sanitizer-api=11.8.86 -- cuda-version=11.8 -- cudatoolkit -- cudf==25.4.*,>=0.0.0a0 -- cupy>=12.0.0 -- cuvs==25.4.*,>=0.0.0a0 -- cxx-compiler -- cython>=3.0.3 -- doxygen=1.9.1 -- exhale -- fastapi -- folium -- gcc_linux-64=11.* -- geopandas -- gmock -- gtest -- httpx -- ipython -- jsonref==1.1.0 -- libgdal<3.9.0 -- libraft-headers==25.4.* -- librmm==25.4.* -- make -- matplotlib -- msgpack-numpy==0.4.8 -- msgpack-python==1.1.0 -- myst-nb -- myst-parser -- ninja -- notebook -- numba>=0.59.1,<0.61.0a0 -- numpy>=1.23.5,<3.0a0 -- numpydoc -- nvcc_linux-64=11.8 -- pandas>=2.0,<2.2.3dev0 -- pexpect -- pip -- polyline -- pre-commit -- psutil>=5.9,<6.0a0 -- pylibraft==25.4.*,>=0.0.0a0 -- pyrsistent -- pytest-cov -- pytest<8 -- python>=3.10,<3.13 -- raft-dask==25.4.*,>=0.0.0a0 -- rapids-build-backend>=0.3.0,<0.4.0.dev0 -- rapids-dask-dependency==25.4.* -- rapids-logger==0.1.*,>=0.0.0a0 -- requests -- rmm==25.4.*,>=0.0.0a0 -- scikit-build-core>=0.10.0 -- scipy -- sphinx -- sphinx-copybutton -- sphinx-design -- sphinx-markdown-tables -- sphinx_rtd_theme -- sphinxcontrib-openapi -- sphinxcontrib-websupport -- sysroot_linux-64==2.28 -- uvicorn==0.30.* -- pip: - - nvidia_sphinx_theme - - swagger-plugin-for-sphinx - - veroviz -name: all_cuda-118_arch-x86_64 diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 5ae7dc1aa..0a615aea7 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -86,11 +86,6 @@ if(DEFINE_BENCHMARK) add_definitions(-DBENCHMARK) endif(DEFINE_BENCHMARK) -# keep development flag in case we have experimental features -if(DEFINE_DEVELOPMENT) - add_definitions(-DDEVELOPMENT) -endif(DEFINE_DEVELOPMENT) - if(DEFINE_PDLP_VERBOSE_MODE) add_definitions(-DPDLP_VERBOSE_MODE) endif(DEFINE_PDLP_VERBOSE_MODE) diff --git a/cpp/cuopt_cli.cpp b/cpp/cuopt_cli.cpp index afb59d58b..a81804a70 100644 --- a/cpp/cuopt_cli.cpp +++ b/cpp/cuopt_cli.cpp @@ -81,6 +81,7 @@ inline auto make_async() { return std::make_shared& settings_strings) { const raft::handle_t handle_{}; @@ -131,7 +132,7 @@ int run_single_file(const std::string& file_path, initial_solution_file, mps_data_model.get_variable_names()); try { - if (is_mip) { + if (is_mip && !solve_relaxation) { auto& mip_settings = settings.get_mip_settings(); if (initial_solution.size() > 0) { mip_settings.set_initial_solution(initial_solution.data(), initial_solution.size()); @@ -191,6 +192,11 @@ int main(int argc, char* argv[]) .help("path to the initial solution .sol file") .default_value(""); + program.add_argument("--relaxation") + .help("solve the LP relaxation of the MIP") + .default_value(false) + .implicit_value(true); + std::map arg_name_to_param_name; { // Add all solver settings as arguments @@ -257,8 +263,9 @@ int main(int argc, char* argv[]) std::string file_name = program.get("filename"); const auto initial_solution_file = program.get("--initial-solution"); + const auto solve_relaxation = program.get("--relaxation"); auto memory_resource = make_async(); rmm::mr::set_current_device_resource(memory_resource.get()); - return run_single_file(file_name, initial_solution_file, settings_strings); + return run_single_file(file_name, initial_solution_file, solve_relaxation, settings_strings); } diff --git a/cpp/include/cuopt/linear_programming/pdlp/solver_solution.hpp b/cpp/include/cuopt/linear_programming/pdlp/solver_solution.hpp index bb80250c9..197d60b32 100644 --- a/cpp/include/cuopt/linear_programming/pdlp/solver_solution.hpp +++ b/cpp/include/cuopt/linear_programming/pdlp/solver_solution.hpp @@ -62,41 +62,44 @@ class optimization_problem_solution_t : public base_solution_t { */ struct additional_termination_information_t { /** Number of pdlp steps taken before termination */ - i_t number_of_steps_taken; + i_t number_of_steps_taken{-1}; /** Number of pdhg steps taken before termination */ - i_t total_number_of_attempted_steps; + i_t total_number_of_attempted_steps{-1}; /** L2 norm of the primal residual (absolute primal residual) */ - f_t l2_primal_residual; + f_t l2_primal_residual{std::numeric_limits::signaling_NaN()}; /** L2 norm of the primal residual divided by the L2 norm of the right hand side (b) */ - f_t l2_relative_primal_residual; + f_t l2_relative_primal_residual{std::numeric_limits::signaling_NaN()}; /** L2 norm of the dual residual */ - f_t l2_dual_residual; + f_t l2_dual_residual{std::numeric_limits::signaling_NaN()}; /** L2 norm of the dual residual divided by the L2 norm of the objective coefficient (c) */ - f_t l2_relative_dual_residual; + f_t l2_relative_dual_residual{std::numeric_limits::signaling_NaN()}; /** Primal Objective */ - f_t primal_objective; + f_t primal_objective{std::numeric_limits::signaling_NaN()}; /** Dual Objective */ - f_t dual_objective; + f_t dual_objective{std::numeric_limits::signaling_NaN()}; /** Gap between primal and dual objective value */ - f_t gap; + f_t gap{std::numeric_limits::signaling_NaN()}; /** Gap divided by the absolute sum of the primal and dual objective values */ - f_t relative_gap; + f_t relative_gap{std::numeric_limits::signaling_NaN()}; /** Maximum error for the linear constraints and sign constraints */ - f_t max_primal_ray_infeasibility; + f_t max_primal_ray_infeasibility{std::numeric_limits::signaling_NaN()}; /** Objective value for the extreme primal ray */ - f_t primal_ray_linear_objective; + f_t primal_ray_linear_objective{std::numeric_limits::signaling_NaN()}; /** Maximum constraint error */ - f_t max_dual_ray_infeasibility; + f_t max_dual_ray_infeasibility{std::numeric_limits::signaling_NaN()}; /** Objective value for the extreme dual ray */ - f_t dual_ray_linear_objective; + f_t dual_ray_linear_objective{std::numeric_limits::signaling_NaN()}; /** Solve time in seconds */ - double solve_time; + double solve_time{std::numeric_limits::signaling_NaN()}; + + /** Whether the problem was solved by PDLP or Dual Simplex */ + bool solved_by_pdlp{false}; }; /** diff --git a/cpp/include/cuopt/linear_programming/utilities/cython_solve.hpp b/cpp/include/cuopt/linear_programming/utilities/cython_solve.hpp index 15bc9ed94..de4d9cf66 100644 --- a/cpp/include/cuopt/linear_programming/utilities/cython_solve.hpp +++ b/cpp/include/cuopt/linear_programming/utilities/cython_solve.hpp @@ -70,6 +70,7 @@ struct linear_programming_ret_t { double gap_; int nb_iterations_; double solve_time_; + bool solved_by_pdlp_; }; struct mip_ret_t { diff --git a/cpp/include/cuopt/logger.hpp b/cpp/include/cuopt/logger.hpp index ed0877d4e..5fb42b62d 100644 --- a/cpp/include/cuopt/logger.hpp +++ b/cpp/include/cuopt/logger.hpp @@ -72,8 +72,13 @@ inline rapids_logger::logger& default_logger() { static rapids_logger::logger logger_ = [] { rapids_logger::logger logger_{"CUOPT", {default_sink()}}; +#if CUOPT_LOG_ACTIVE_LEVEL >= RAPIDS_LOGGER_LOG_LEVEL_INFO + logger_.set_pattern("%v"); +#else logger_.set_pattern(default_pattern()); +#endif logger_.set_level(default_level()); + logger_.flush_on(rapids_logger::level_enum::info); return logger_; }(); @@ -89,8 +94,13 @@ inline void reset_default_logger() { default_logger().sinks().clear(); default_logger().sinks().push_back(default_sink()); +#if CUOPT_LOG_ACTIVE_LEVEL >= RAPIDS_LOGGER_LOG_LEVEL_INFO + default_logger().set_pattern("%v"); +#else default_logger().set_pattern(default_pattern()); +#endif default_logger().set_level(default_level()); + default_logger().flush_on(rapids_logger::level_enum::info); } } // namespace cuopt diff --git a/cpp/src/dual_simplex/crossover.cpp b/cpp/src/dual_simplex/crossover.cpp index 37a67fc38..957b8d2ca 100644 --- a/cpp/src/dual_simplex/crossover.cpp +++ b/cpp/src/dual_simplex/crossover.cpp @@ -1217,6 +1217,15 @@ crossover_status_t crossover(const lp_problem_t& lp, std::vector edge_norms; dual::status_t status = dual_phase2(2, 0, start_time, lp, settings, vstatus, solution, dual_iter, edge_norms); + if (toc(start_time) > settings.time_limit) { + settings.log.printf("Time limit exceeded\n"); + return crossover_status_t::TIME_LIMIT; + } + if (settings.concurrent_halt != nullptr && + settings.concurrent_halt->load(std::memory_order_acquire) == 1) { + settings.log.printf("Concurrent halt\n"); + return crossover_status_t::CONCURRENT_LIMIT; + } primal_infeas = primal_infeasibility(lp, settings, vstatus, solution.x); dual_infeas = dual_infeasibility(lp, settings, vstatus, solution.z); primal_res = primal_residual(lp, solution); @@ -1337,6 +1346,15 @@ crossover_status_t crossover(const lp_problem_t& lp, std::vector edge_norms; dual::status_t status = dual_phase2( 2, iter == 0 ? 1 : 0, start_time, lp, settings, vstatus, solution, iter, edge_norms); + if (toc(start_time) > settings.time_limit) { + settings.log.printf("Time limit exceeded\n"); + return crossover_status_t::TIME_LIMIT; + } + if (settings.concurrent_halt != nullptr && + settings.concurrent_halt->load(std::memory_order_acquire) == 1) { + settings.log.printf("Concurrent halt\n"); + return crossover_status_t::CONCURRENT_LIMIT; + } solution.iterations += iter; primal_infeas = primal_infeasibility(lp, settings, vstatus, solution.x); dual_infeas = dual_infeasibility(lp, settings, vstatus, solution.z); @@ -1345,7 +1363,6 @@ crossover_status_t crossover(const lp_problem_t& lp, if (status != dual::status_t::OPTIMAL) { print_crossover_info(lp, settings, vstatus, solution, "Dual phase 2 complete"); } - primal_feasible = primal_infeas <= primal_tol && primal_res <= primal_tol; dual_feasible = dual_infeas <= dual_tol && dual_res <= dual_tol; } else { @@ -1355,7 +1372,6 @@ crossover_status_t crossover(const lp_problem_t& lp, settings.log.printf("Crossover time %.2f seconds\n", toc(crossover_start)); settings.log.printf("Total time %.2f seconds\n", toc(start_time)); - settings.log.printf("\n"); crossover_status_t status = crossover_status_t::NUMERICAL_ISSUES; if (dual_feasible) { status = crossover_status_t::DUAL_FEASIBLE; } diff --git a/cpp/src/dual_simplex/presolve.cpp b/cpp/src/dual_simplex/presolve.cpp index 11b86348a..e87c88b40 100644 --- a/cpp/src/dual_simplex/presolve.cpp +++ b/cpp/src/dual_simplex/presolve.cpp @@ -24,7 +24,9 @@ namespace cuopt::linear_programming::dual_simplex { template -i_t remove_empty_cols(lp_problem_t& problem, i_t& num_empty_cols) +i_t remove_empty_cols(lp_problem_t& problem, + i_t& num_empty_cols, + presolve_info_t& presolve_info) { constexpr bool verbose = false; if (verbose) { printf("Removing %d empty columns\n", num_empty_cols); } @@ -35,15 +37,22 @@ i_t remove_empty_cols(lp_problem_t& problem, i_t& num_empty_cols) // sum_{k != j} c_k * x_k + c_j * l_j if c_j > 0 // or // sum_{k != j} c_k * x_k + c_j * u_j if c_j < 0 + presolve_info.removed_variables.reserve(num_empty_cols); + presolve_info.removed_values.reserve(num_empty_cols); + presolve_info.removed_reduced_costs.reserve(num_empty_cols); std::vector col_marker(problem.num_cols); i_t new_cols = 0; for (i_t j = 0; j < problem.num_cols; ++j) { if ((problem.A.col_start[j + 1] - problem.A.col_start[j]) == 0) { col_marker[j] = 1; + presolve_info.removed_variables.push_back(j); + presolve_info.removed_reduced_costs.push_back(problem.objective[j]); if (problem.objective[j] >= 0) { + presolve_info.removed_values.push_back(problem.lower[j]); problem.obj_constant += problem.objective[j] * problem.lower[j]; assert(problem.lower[j] > -inf); } else { + presolve_info.removed_values.push_back(problem.upper[j]); problem.obj_constant += problem.objective[j] * problem.upper[j]; assert(problem.upper[j] < inf); } @@ -52,6 +61,7 @@ i_t remove_empty_cols(lp_problem_t& problem, i_t& num_empty_cols) new_cols++; } } + presolve_info.remaining_variables.reserve(new_cols); problem.A.remove_columns(col_marker); // Clean up objective, lower, upper, and col_names @@ -66,6 +76,7 @@ i_t remove_empty_cols(lp_problem_t& problem, i_t& num_empty_cols) objective[new_j] = problem.objective[j]; lower[new_j] = problem.lower[j]; upper[new_j] = problem.upper[j]; + presolve_info.remaining_variables.push_back(j); new_j++; } else { num_empty_cols--; @@ -574,7 +585,8 @@ void convert_user_problem(const user_problem_t& user_problem, template i_t presolve(const lp_problem_t& original, const simplex_solver_settings_t& settings, - lp_problem_t& problem) + lp_problem_t& problem, + presolve_info_t& presolve_info) { problem = original; std::vector row_sense(problem.num_rows, '='); @@ -595,6 +607,7 @@ i_t presolve(const lp_problem_t& original, } } if (num_empty_rows > 0) { + settings.log.printf("Presolve removing %d empty rows\n", num_empty_rows); i_t i = remove_empty_rows(problem, row_sense, num_empty_rows); if (i != 0) { return -1; } } @@ -606,7 +619,10 @@ i_t presolve(const lp_problem_t& original, if ((problem.A.col_start[j + 1] - problem.A.col_start[j]) == 0) { num_empty_cols++; } } } - if (num_empty_cols > 0) { remove_empty_cols(problem, num_empty_cols); } + if (num_empty_cols > 0) { + settings.log.printf("Presolve removing %d empty cols\n", num_empty_cols); + remove_empty_cols(problem, num_empty_cols, presolve_info); + } // Check for dependent rows constexpr bool check_dependent_rows = false; @@ -826,6 +842,38 @@ void uncrush_primal_solution(const user_problem_t& user_problem, std::copy(solution.begin(), solution.begin() + user_problem.num_cols, user_solution.data()); } +template +void uncrush_solution(const presolve_info_t& presolve_info, + const std::vector& crushed_x, + const std::vector& crushed_z, + std::vector& uncrushed_x, + std::vector& uncrushed_z) +{ + if (presolve_info.removed_variables.size() == 0) { + uncrushed_x = crushed_x; + uncrushed_z = crushed_z; + return; + } + + const i_t n = presolve_info.removed_variables.size() + presolve_info.remaining_variables.size(); + uncrushed_x.resize(n); + uncrushed_z.resize(n); + + i_t k = 0; + for (const i_t j : presolve_info.remaining_variables) { + uncrushed_x[j] = crushed_x[k]; + uncrushed_z[j] = crushed_z[k]; + k++; + } + + k = 0; + for (const i_t j : presolve_info.removed_variables) { + uncrushed_x[j] = presolve_info.removed_values[k]; + uncrushed_z[j] = presolve_info.removed_reduced_costs[k]; + k++; + } +} + #ifdef DUAL_SIMPLEX_INSTANTIATE_DOUBLE template void convert_user_problem(const user_problem_t& user_problem, @@ -841,7 +889,9 @@ template void convert_user_lp_with_guess( template int presolve(const lp_problem_t& original, const simplex_solver_settings_t& settings, - lp_problem_t& presolved); + lp_problem_t& presolved, + presolve_info_t& presolve_info); + template void crush_primal_solution(const user_problem_t& user_problem, const lp_problem_t& problem, const std::vector& user_solution, @@ -853,6 +903,11 @@ template void uncrush_primal_solution(const user_problem_t& solution, std::vector& user_solution); +template void uncrush_solution(const presolve_info_t& presolve_info, + const std::vector& crushed_x, + const std::vector& crushed_z, + std::vector& uncrushed_x, + std::vector& uncrushed_z); #endif } // namespace cuopt::linear_programming::dual_simplex diff --git a/cpp/src/dual_simplex/presolve.hpp b/cpp/src/dual_simplex/presolve.hpp index 4b877caef..e6eb542ac 100644 --- a/cpp/src/dual_simplex/presolve.hpp +++ b/cpp/src/dual_simplex/presolve.hpp @@ -49,6 +49,18 @@ struct lp_problem_t { f_t obj_scale; // 1.0 for min, -1.0 for max }; +template +struct presolve_info_t { + // indices of variables in the original problem that remain in the presolved problem + std::vector remaining_variables; + // indicies of variables in the original problem that have been removed in the presolved problem + std::vector removed_variables; + // values of the removed variables + std::vector removed_values; + // values of the removed reduced costs + std::vector removed_reduced_costs; +}; + template void convert_user_problem(const user_problem_t& user_problem, lp_problem_t& problem, @@ -70,7 +82,8 @@ void convert_user_lp_with_guess(const user_problem_t& user_problem, template i_t presolve(const lp_problem_t& original, const simplex_solver_settings_t& settings, - lp_problem_t& presolved); + lp_problem_t& presolved, + presolve_info_t& presolve_info); template void crush_primal_solution(const user_problem_t& user_problem, @@ -102,4 +115,11 @@ void uncrush_primal_solution(const user_problem_t& user_problem, const std::vector& solution, std::vector& user_solution); +template +void uncrush_solution(const presolve_info_t& presolve_info, + const std::vector& crushed_x, + const std::vector& crushed_z, + std::vector& uncrushed_x, + std::vector& uncrushed_z); + } // namespace cuopt::linear_programming::dual_simplex diff --git a/cpp/src/dual_simplex/scaling.cpp b/cpp/src/dual_simplex/scaling.cpp index bc33a58e1..3a19ec613 100644 --- a/cpp/src/dual_simplex/scaling.cpp +++ b/cpp/src/dual_simplex/scaling.cpp @@ -48,7 +48,7 @@ i_t column_scaling(const lp_problem_t& unscaled, const f_t x = scaled.A.x[p]; sum += x * x; } - f_t col_norm_j = column_scaling[j] = std::sqrt(sum); + f_t col_norm_j = column_scaling[j] = sum > 0 ? std::sqrt(sum) : 1.0; max = std::max(col_norm_j, max); } settings.log.printf("Scaling matrix. Maximum column norm %e\n", max); @@ -76,6 +76,22 @@ i_t column_scaling(const lp_problem_t& unscaled, return 0; } +template +void unscale_solution(const std::vector& column_scaling, + const std::vector& scaled_x, + const std::vector& scaled_z, + std::vector& unscaled_x, + std::vector& unscaled_z) +{ + const i_t n = scaled_x.size(); + unscaled_x.resize(n); + unscaled_z.resize(n); + for (i_t j = 0; j < n; ++j) { + unscaled_x[j] = scaled_x[j] / column_scaling[j]; + unscaled_z[j] = scaled_z[j] / column_scaling[j]; + } +} + #ifdef DUAL_SIMPLEX_INSTANTIATE_DOUBLE template int column_scaling(const lp_problem_t& unscaled, @@ -83,6 +99,12 @@ template int column_scaling(const lp_problem_t& unscal lp_problem_t& scaled, std::vector& column_scaling); +template void unscale_solution(const std::vector& column_scaling, + const std::vector& scaled_x, + const std::vector& scaled_z, + std::vector& unscaled_x, + std::vector& unscaled_z); + #endif } // namespace cuopt::linear_programming::dual_simplex diff --git a/cpp/src/dual_simplex/scaling.hpp b/cpp/src/dual_simplex/scaling.hpp index 09f463080..898a001c6 100644 --- a/cpp/src/dual_simplex/scaling.hpp +++ b/cpp/src/dual_simplex/scaling.hpp @@ -32,4 +32,11 @@ i_t column_scaling(const lp_problem_t& unscaled, lp_problem_t& scaled, std::vector& column_scaling); +template +void unscale_solution(const std::vector& column_scaling, + const std::vector& scaled_x, + const std::vector& scaled_z, + std::vector& unscaled_x, + std::vector& unscaled_z); + } // namespace cuopt::linear_programming::dual_simplex diff --git a/cpp/src/dual_simplex/solve.cpp b/cpp/src/dual_simplex/solve.cpp index b422be873..11a0f6d42 100644 --- a/cpp/src/dual_simplex/solve.cpp +++ b/cpp/src/dual_simplex/solve.cpp @@ -117,7 +117,8 @@ lp_status_t solve_linear_program_advanced(const lp_problem_t& original { lp_status_t lp_status = lp_status_t::UNSET; lp_problem_t presolved_lp(1, 1, 1); - const i_t ok = presolve(original_lp, settings, presolved_lp); + presolve_info_t presolve_info; + const i_t ok = presolve(original_lp, settings, presolved_lp, presolve_info); if (ok == -1) { return lp_status_t::INFEASIBLE; } constexpr bool write_out_matlab = false; @@ -199,11 +200,11 @@ lp_status_t solve_linear_program_advanced(const lp_problem_t& original primal_phase2(2, start_time, lp, settings, vstatus, solution, iter); } if (status == dual::status_t::OPTIMAL) { - // Unscale solution - for (i_t j = 0; j < original_lp.num_cols; j++) { - original_solution.x[j] = solution.x[j] / column_scales[j]; - original_solution.z[j] = solution.z[j] / column_scales[j]; - } + std::vector unscaled_x(lp.num_cols); + std::vector unscaled_z(lp.num_cols); + unscale_solution(column_scales, solution.x, solution.z, unscaled_x, unscaled_z); + uncrush_solution( + presolve_info, unscaled_x, unscaled_z, original_solution.x, original_solution.z); original_solution.y = solution.y; original_solution.objective = solution.objective; original_solution.user_objective = solution.user_objective; @@ -218,6 +219,16 @@ lp_status_t solve_linear_program_advanced(const lp_problem_t& original original_solution.iterations = iter; } else { // Dual infeasible -> Primal unbounded + settings.log.printf("Dual infeasible\n"); + original_solution.objective = -inf; + if (lp.obj_scale == 1.0) { + // Objective for unbounded minimization is -inf + original_solution.user_objective = -inf; + } else { + // Objective for unbounded maximization is inf + original_solution.user_objective = inf; + } + original_solution.iterations = iter; return lp_status_t::UNBOUNDED; } return lp_status; diff --git a/cpp/src/linear_programming/cuopt_c.cpp b/cpp/src/linear_programming/cuopt_c.cpp index eaa934ca5..074566ba7 100644 --- a/cpp/src/linear_programming/cuopt_c.cpp +++ b/cpp/src/linear_programming/cuopt_c.cpp @@ -492,6 +492,14 @@ cuopt_int_t cuOptSetIntegerParameter(cuOptSolverSettings settings, static_cast*>(settings); try { solver_settings->set_parameter(parameter_name, parameter_value); + } catch (const std::invalid_argument& e) { + // We could be trying to set a boolean parameter. Try that + try { + bool value = static_cast(parameter_value); + solver_settings->set_parameter(parameter_name, value); + } catch (const std::exception& e) { + return CUOPT_INVALID_ARGUMENT; + } } catch (const std::exception& e) { return CUOPT_INVALID_ARGUMENT; } @@ -509,6 +517,14 @@ cuopt_int_t cuOptGetIntegerParameter(cuOptSolverSettings settings, static_cast*>(settings); try { *parameter_value_ptr = solver_settings->get_parameter(parameter_name); + } catch (const std::invalid_argument& e) { + // We could be trying to get a boolean parameter. Try that + try { + *parameter_value_ptr = + static_cast(solver_settings->get_parameter(parameter_name)); + } catch (const std::exception& e) { + return CUOPT_INVALID_ARGUMENT; + } } catch (const std::exception& e) { return CUOPT_INVALID_ARGUMENT; } diff --git a/cpp/src/linear_programming/pdlp.cu b/cpp/src/linear_programming/pdlp.cu index ea54d047d..7acadae50 100644 --- a/cpp/src/linear_programming/pdlp.cu +++ b/cpp/src/linear_programming/pdlp.cu @@ -41,11 +41,14 @@ namespace cuopt::linear_programming::detail { -void set_pdlp_hyper_parameters() +void set_pdlp_hyper_parameters(rmm::cuda_stream_view stream_view) { - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::primal_importance, - &pdlp_hyper_params::host_primal_importance, - sizeof(double))); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::primal_importance, + &pdlp_hyper_params::host_primal_importance, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); } template diff --git a/cpp/src/linear_programming/pdlp.cuh b/cpp/src/linear_programming/pdlp.cuh index 88d20873f..10a028f26 100644 --- a/cpp/src/linear_programming/pdlp.cuh +++ b/cpp/src/linear_programming/pdlp.cuh @@ -38,7 +38,7 @@ #include "linear_programming/termination_strategy/convergence_information.hpp" namespace cuopt::linear_programming::detail { -void set_pdlp_hyper_parameters(); +void set_pdlp_hyper_parameters(rmm::cuda_stream_view stream_view); /** * @brief Solver for an optimization problem (Currently only linear program) to be solved, * pdlp_parameters and pdlp_internal_state diff --git a/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu b/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu index 6f53cc5b9..55b06aecf 100644 --- a/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu +++ b/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu @@ -54,24 +54,41 @@ namespace cg = cooperative_groups; namespace cuopt::linear_programming::detail { -void set_restart_hyper_parameters() +void set_restart_hyper_parameters(rmm::cuda_stream_view stream_view) { - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::default_primal_weight_update_smoothing, - &pdlp_hyper_params::host_default_primal_weight_update_smoothing, - sizeof(double))); RAFT_CUDA_TRY( - cudaMemcpyToSymbol(pdlp_hyper_params::default_sufficient_reduction_for_restart, - &pdlp_hyper_params::host_default_sufficient_reduction_for_restart, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::default_necessary_reduction_for_restart, - &pdlp_hyper_params::host_default_necessary_reduction_for_restart, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::primal_distance_smoothing, - &pdlp_hyper_params::host_primal_distance_smoothing, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::dual_distance_smoothing, - &pdlp_hyper_params::host_dual_distance_smoothing, - sizeof(double))); + cudaMemcpyToSymbolAsync(pdlp_hyper_params::default_primal_weight_update_smoothing, + &pdlp_hyper_params::host_default_primal_weight_update_smoothing, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY( + cudaMemcpyToSymbolAsync(pdlp_hyper_params::default_sufficient_reduction_for_restart, + &pdlp_hyper_params::host_default_sufficient_reduction_for_restart, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY( + cudaMemcpyToSymbolAsync(pdlp_hyper_params::default_necessary_reduction_for_restart, + &pdlp_hyper_params::host_default_necessary_reduction_for_restart, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::primal_distance_smoothing, + &pdlp_hyper_params::host_primal_distance_smoothing, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::dual_distance_smoothing, + &pdlp_hyper_params::host_dual_distance_smoothing, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); } template diff --git a/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cuh b/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cuh index ca897ef49..403f77239 100644 --- a/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cuh +++ b/cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cuh @@ -37,7 +37,7 @@ #include namespace cuopt::linear_programming::detail { -void set_restart_hyper_parameters(); +void set_restart_hyper_parameters(rmm::cuda_stream_view stream_view); template class pdlp_restart_strategy_t { public: diff --git a/cpp/src/linear_programming/solve.cu b/cpp/src/linear_programming/solve.cu index 8cca93915..03346650f 100644 --- a/cpp/src/linear_programming/solve.cu +++ b/cpp/src/linear_programming/solve.cu @@ -211,12 +211,12 @@ void set_pdlp_solver_mode(pdlp_solver_settings_t const& settings) set_Fast1(); } -void setup_device_symbols() +void setup_device_symbols(rmm::cuda_stream_view stream_view) { raft::common::nvtx::range fun_scope("Setting device symbol"); - detail::set_adaptive_step_size_hyper_parameters(); - detail::set_restart_hyper_parameters(); - detail::set_pdlp_hyper_parameters(); + detail::set_adaptive_step_size_hyper_parameters(stream_view); + detail::set_restart_hyper_parameters(stream_view); + detail::set_pdlp_hyper_parameters(stream_view); } std::atomic global_concurrent_halt; @@ -256,7 +256,9 @@ optimization_problem_solution_t convert_dual_simplex_sol( info.primal_objective = solution.user_objective; info.solve_time = duration; info.number_of_steps_taken = solution.iterations; + info.solved_by_pdlp = false; + pdlp_termination_status_t termination_status = to_termination_status(status); auto sol = optimization_problem_solution_t(final_primal_solution, final_dual_solution, final_reduced_cost, @@ -264,7 +266,13 @@ optimization_problem_solution_t convert_dual_simplex_sol( problem.var_names, problem.row_names, info, - to_termination_status(status)); + termination_status); + + if (termination_status != pdlp_termination_status_t::Optimal && + termination_status != pdlp_termination_status_t::TimeLimit && + termination_status != pdlp_termination_status_t::ConcurrentLimit) { + CUOPT_LOG_INFO("Dual simplex status %s", sol.get_termination_status_string().c_str()); + } problem.handle_ptr->sync_stream(); return sol; @@ -295,7 +303,9 @@ std::tuple, dual_simplex::lp_status_t, f_t CUOPT_LOG_INFO("Dual simplex finished in %.2f seconds", duration.count() / 1000.0); - if (settings.concurrent_halt != nullptr) { + if (settings.concurrent_halt != nullptr && (status == dual_simplex::lp_status_t::OPTIMAL || + status == dual_simplex::lp_status_t::UNBOUNDED || + status == dual_simplex::lp_status_t::INFEASIBLE)) { // We finished. Tell PDLP to stop if it is still running. settings.concurrent_halt->store(1, std::memory_order_release); } @@ -396,8 +406,10 @@ optimization_problem_solution_t run_pdlp(detail::problem_t& info, termination_status); sol.copy_from(problem.handle_ptr, sol_crossover); + CUOPT_LOG_INFO("Crossover status %s", sol.get_termination_status_string().c_str()); } - if (crossover_info == 0 && settings.concurrent_halt != nullptr) { + if (settings.concurrent_halt != nullptr && crossover_info == 0 && + sol.get_termination_status() == pdlp_termination_status_t::Optimal) { // We finished. Tell dual simplex to stop if it is still running. settings.concurrent_halt->store(1, std::memory_order_release); } @@ -510,9 +522,6 @@ optimization_problem_solution_t solve_lp(optimization_problem_t= RAPIDS_LOGGER_LOG_LEVEL_INFO - cuopt::default_logger().set_pattern("%v"); -#endif // Init libraies before to not include it in solve time // This needs to be called before pdlp is initialized @@ -540,7 +549,7 @@ optimization_problem_solution_t solve_lp(optimization_problem_tget_stream()); auto sol = solve_lp_with_method(op_problem, problem, settings); @@ -553,6 +562,11 @@ optimization_problem_solution_t solve_lp(optimization_problem_t{e, op_problem.get_handle_ptr()->get_stream()}; + } catch (const std::bad_alloc& e) { + CUOPT_LOG_ERROR("Error in solve_lp: %s", e.what()); + return optimization_problem_solution_t{ + cuopt::logic_error("Memory allocation failed", cuopt::error_type_t::RuntimeError), + op_problem.get_handle_ptr()->get_stream()}; } } diff --git a/cpp/src/linear_programming/solver_solution.cu b/cpp/src/linear_programming/solver_solution.cu index f59d47493..41cb9b47a 100644 --- a/cpp/src/linear_programming/solver_solution.cu +++ b/cpp/src/linear_programming/solver_solution.cu @@ -152,37 +152,41 @@ void optimization_problem_solution_t::write_additional_termination_sta myfile << "\t\"Additional termination information\" : { " << std::endl; myfile << "\t\"Number of steps taken\" : " << termination_stats_.number_of_steps_taken << "," << std::endl; - myfile << "\t\"Total number of attempted steps\" : " - << termination_stats_.total_number_of_attempted_steps << "," << std::endl; - myfile << "\t\"Total solve time (ms)\" : " << termination_stats_.solve_time << "," << std::endl; - - myfile << "\t\t\"Convergence measures\" : { " << std::endl; - myfile << "\t\t\t\"Absolute primal residual\" : " << termination_stats_.l2_primal_residual << "," - << std::endl; - myfile << "\t\t\t\"Relative primal residual\" : " - << termination_stats_.l2_relative_primal_residual << "," << std::endl; - myfile << "\t\t\t\"Absolute dual residual\" : " << termination_stats_.l2_dual_residual << "," - << std::endl; - myfile << "\t\t\t\"Relative dual residual\" : " << termination_stats_.l2_relative_dual_residual - << "," << std::endl; - myfile << "\t\t\t\"Primal objective value\" : " << termination_stats_.primal_objective << "," - << std::endl; - myfile << "\t\t\t\"Dual objective value\" : " << termination_stats_.dual_objective << "," - << std::endl; - myfile << "\t\t\t\"Gap\" : " << termination_stats_.gap << std::endl; - myfile << "\t\t\t\"Relative gap\" : " << termination_stats_.relative_gap << "," << std::endl; - myfile << "\t\t}, " << std::endl; - - myfile << "\t\t\"Infeasibility measures\" : {" << std::endl; - myfile << "\t\t\t\"Maximum error for the linear constraints and sign constraints\" : " - << termination_stats_.max_primal_ray_infeasibility << "," << std::endl; - myfile << "\t\t\t\"Objective value for the extreme primal ray\" : " - << termination_stats_.primal_ray_linear_objective << "," << std::endl; - myfile << "\t\t\t\"Maximum constraint error\" : " << termination_stats_.max_dual_ray_infeasibility - << "," << std::endl; - myfile << "\t\t\t\"Objective value for the extreme dual ray\" : " - << termination_stats_.dual_ray_linear_objective << std::endl; - myfile << "\t\t} " << std::endl; + if (termination_stats_.solved_by_pdlp) { + myfile << "\t\"Total number of attempted steps\" : " + << termination_stats_.total_number_of_attempted_steps << "," << std::endl; + } + myfile << "\t\"Total solve time\" : " << termination_stats_.solve_time; + if (termination_stats_.solved_by_pdlp) { + myfile << "," << std::endl; + myfile << "\t\t\"Convergence measures\" : { " << std::endl; + myfile << "\t\t\t\"Absolute primal residual\" : " << termination_stats_.l2_primal_residual + << "," << std::endl; + myfile << "\t\t\t\"Relative primal residual\" : " + << termination_stats_.l2_relative_primal_residual << "," << std::endl; + myfile << "\t\t\t\"Absolute dual residual\" : " << termination_stats_.l2_dual_residual << "," + << std::endl; + myfile << "\t\t\t\"Relative dual residual\" : " << termination_stats_.l2_relative_dual_residual + << "," << std::endl; + myfile << "\t\t\t\"Primal objective value\" : " << termination_stats_.primal_objective << "," + << std::endl; + myfile << "\t\t\t\"Dual objective value\" : " << termination_stats_.dual_objective << "," + << std::endl; + myfile << "\t\t\t\"Gap\" : " << termination_stats_.gap << "," << std::endl; + myfile << "\t\t\t\"Relative gap\" : " << termination_stats_.relative_gap << std::endl; + myfile << "\t\t}, " << std::endl; + myfile << "\t\t\"Infeasibility measures\" : {" << std::endl; + myfile << "\t\t\t\"Maximum error for the linear constraints and sign constraints\" : " + << termination_stats_.max_primal_ray_infeasibility << "," << std::endl; + myfile << "\t\t\t\"Objective value for the extreme primal ray\" : " + << termination_stats_.primal_ray_linear_objective << "," << std::endl; + myfile << "\t\t\t\"Maximum constraint error\" : " + << termination_stats_.max_dual_ray_infeasibility << "," << std::endl; + myfile << "\t\t\t\"Objective value for the extreme dual ray\" : " + << termination_stats_.dual_ray_linear_objective << std::endl; + myfile << "\t\t} " << std::endl; + } else + myfile << std::endl; myfile << "\t} " << std::endl; } diff --git a/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.cu b/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.cu index b26a5a097..3abfa669e 100644 --- a/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.cu +++ b/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.cu @@ -59,20 +59,32 @@ adaptive_step_size_strategy_t::adaptive_step_size_strategy_t( { } -void set_adaptive_step_size_hyper_parameters() +void set_adaptive_step_size_hyper_parameters(rmm::cuda_stream_view stream_view) { - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::default_reduction_exponent, - &pdlp_hyper_params::host_default_reduction_exponent, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::default_growth_exponent, - &pdlp_hyper_params::host_default_growth_exponent, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::primal_distance_smoothing, - &pdlp_hyper_params::host_primal_distance_smoothing, - sizeof(double))); - RAFT_CUDA_TRY(cudaMemcpyToSymbol(pdlp_hyper_params::dual_distance_smoothing, - &pdlp_hyper_params::host_dual_distance_smoothing, - sizeof(double))); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::default_reduction_exponent, + &pdlp_hyper_params::host_default_reduction_exponent, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::default_growth_exponent, + &pdlp_hyper_params::host_default_growth_exponent, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::primal_distance_smoothing, + &pdlp_hyper_params::host_primal_distance_smoothing, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); + RAFT_CUDA_TRY(cudaMemcpyToSymbolAsync(pdlp_hyper_params::dual_distance_smoothing, + &pdlp_hyper_params::host_dual_distance_smoothing, + sizeof(double), + 0, + cudaMemcpyHostToDevice, + stream_view)); } template diff --git a/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp b/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp index fca459431..d848429dc 100644 --- a/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp +++ b/cpp/src/linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp @@ -33,7 +33,7 @@ #include namespace cuopt::linear_programming::detail { -void set_adaptive_step_size_hyper_parameters(); +void set_adaptive_step_size_hyper_parameters(rmm::cuda_stream_view stream_view); template class adaptive_step_size_strategy_t { public: diff --git a/cpp/src/linear_programming/termination_strategy/termination_strategy.cu b/cpp/src/linear_programming/termination_strategy/termination_strategy.cu index 254fdd6b2..fcb66cdd0 100644 --- a/cpp/src/linear_programming/termination_strategy/termination_strategy.cu +++ b/cpp/src/linear_programming/termination_strategy/termination_strategy.cu @@ -324,6 +324,7 @@ pdlp_termination_strategy_t::fill_return_problem_solution( infeasibility_information_view.dual_ray_linear_objective, 1, stream_view_); + term_stats.solved_by_pdlp = (termination_status != pdlp_termination_status_t::ConcurrentLimit); RAFT_CUDA_TRY(cudaStreamSynchronize(stream_view_)); diff --git a/cpp/src/linear_programming/utilities/cython_solve.cu b/cpp/src/linear_programming/utilities/cython_solve.cu index 4a2941c84..b333e99a4 100644 --- a/cpp/src/linear_programming/utilities/cython_solve.cu +++ b/cpp/src/linear_programming/utilities/cython_solve.cu @@ -165,7 +165,8 @@ linear_programming_ret_t call_solve_lp( solution.get_additional_termination_information().dual_objective, solution.get_additional_termination_information().gap, solution.get_additional_termination_information().number_of_steps_taken, - solution.get_additional_termination_information().solve_time}; + solution.get_additional_termination_information().solve_time, + solution.get_additional_termination_information().solved_by_pdlp}; return lp_ret; } @@ -274,6 +275,14 @@ std::pair>, double> call_batch_solve( // Limit parallelism as too much stream overlap gets too slow const int max_thread = compute_max_thread(data_models); + if (solver_settings->get_parameter(CUOPT_METHOD) == CUOPT_METHOD_CONCURRENT) { + CUOPT_LOG_INFO("Concurrent mode not supported for batch solve. Using PDLP instead. "); + CUOPT_LOG_INFO( + "Set the CUOPT_METHOD parameter to CUOPT_METHOD_PDLP or CUOPT_METHOD_DUAL_SIMPLEX to avoid " + "this warning."); + solver_settings->set_parameter(CUOPT_METHOD, CUOPT_METHOD_PDLP); + } + #pragma omp parallel for num_threads(max_thread) for (std::size_t i = 0; i < size; ++i) list[i] = std::move(call_solve(data_models[i], solver_settings)); diff --git a/cpp/src/math_optimization/solver_settings.cu b/cpp/src/math_optimization/solver_settings.cu index 0eef789be..2666e7bd5 100644 --- a/cpp/src/math_optimization/solver_settings.cu +++ b/cpp/src/math_optimization/solver_settings.cu @@ -16,6 +16,7 @@ */ #include +#include #include namespace cuopt::linear_programming { @@ -119,7 +120,8 @@ template void solver_settings_t::set_parameter_from_string(const std::string& name, const std::string& value) { - bool found = false; + bool found = false; + bool output = false; for (auto& param : int_parameters) { if (param.param_name == name) { i_t value_int; @@ -129,6 +131,10 @@ void solver_settings_t::set_parameter_from_string(const std::string& n } *param.value_ptr = value_int; found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %d", name.c_str(), value_int); + output = true; + } } else { throw std::invalid_argument("Parameter " + name + " value " + value + " is not an integer"); } @@ -143,6 +149,10 @@ void solver_settings_t::set_parameter_from_string(const std::string& n } *param.value_ptr = value_float; found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %e", name.c_str(), value_float); + output = true; + } } else { throw std::invalid_argument("Parameter " + name + " value " + value + " is not a float"); } @@ -154,6 +164,10 @@ void solver_settings_t::set_parameter_from_string(const std::string& n if (string_to_bool(value, value_bool)) { *param.value_ptr = value_bool; found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %s", name.c_str(), value_bool ? "true" : "false"); + output = true; + } } else { throw std::invalid_argument("Parameter " + name + " value " + value + " must be true or false"); @@ -164,7 +178,11 @@ void solver_settings_t::set_parameter_from_string(const std::string& n for (auto& param : string_parameters) { if (param.param_name == name) { *param.value_ptr = value; - found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %s", name.c_str(), value.c_str()); + output = true; + } + found = true; } } if (!found) { throw std::invalid_argument("Parameter " + name + " not found"); } @@ -174,7 +192,8 @@ template template void solver_settings_t::set_parameter(const std::string& name, T value) { - bool found = false; + bool found = false; + bool output = false; if constexpr (std::is_same_v) { for (auto& param : int_parameters) { if (param.param_name == name) { @@ -182,7 +201,11 @@ void solver_settings_t::set_parameter(const std::string& name, T value throw std::invalid_argument("Parameter " + name + " out of range"); } *param.value_ptr = value; - found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %d", name.c_str(), value); + output = true; + } + found = true; } } } @@ -193,7 +216,11 @@ void solver_settings_t::set_parameter(const std::string& name, T value throw std::invalid_argument("Parameter " + name + " out of range"); } *param.value_ptr = value; - found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %e", name.c_str(), value); + output = true; + } + found = true; } } } @@ -201,7 +228,11 @@ void solver_settings_t::set_parameter(const std::string& name, T value for (auto& param : bool_parameters) { if (param.param_name == name) { *param.value_ptr = value; - found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %s", name.c_str(), value ? "true" : "false"); + output = true; + } + found = true; } } } @@ -209,7 +240,11 @@ void solver_settings_t::set_parameter(const std::string& name, T value for (auto& param : string_parameters) { if (param.param_name == name) { *param.value_ptr = value; - found = true; + if (!output) { + CUOPT_LOG_INFO("Setting parameter %s to %s", name.c_str(), value.c_str()); + output = true; + } + found = true; } } } diff --git a/cpp/src/mip/diversity/diversity_manager.cu b/cpp/src/mip/diversity/diversity_manager.cu index 72f6c2f21..4a8f56e98 100644 --- a/cpp/src/mip/diversity/diversity_manager.cu +++ b/cpp/src/mip/diversity/diversity_manager.cu @@ -147,16 +147,12 @@ void diversity_manager_t::add_user_given_solution( if (context.settings.has_initial_solution()) { solution_t sol(*problem_ptr); auto& init_sol = context.settings.get_initial_solution(); - if (sol.assignment.size() <= init_sol.size()) { - thrust::for_each( - sol.handle_ptr->get_thrust_policy(), - thrust::make_counting_iterator(0), - thrust::make_counting_iterator((int)sol.assignment.size()), - [assgn = make_span(sol.assignment), - init_sol = make_span(init_sol), - var_map = make_span(problem_ptr->presolve_data.variable_mapping)] __device__(i_t i) { - assgn[i] = init_sol[var_map[i]]; - }); + rmm::device_uvector init_sol_assignment(init_sol, sol.handle_ptr->get_stream()); + if (problem_ptr->pre_process_assignment(init_sol_assignment)) { + raft::copy(sol.assignment.data(), + init_sol_assignment.data(), + init_sol_assignment.size(), + sol.handle_ptr->get_stream()); bool is_feasible = sol.compute_feasibility(); cuopt_func_call(sol.test_variable_bounds(true)); CUOPT_LOG_INFO("Adding initial solution success! feas %d objective %f excess %f", @@ -168,8 +164,8 @@ void diversity_manager_t::add_user_given_solution( } else { CUOPT_LOG_ERROR( "Error cannot add the provided initial solution! \ - Assignment size %lu \ - initial solution size %lu", + Assignment size %lu \ + initial solution size %lu", sol.assignment.size(), init_sol.size()); } @@ -250,14 +246,16 @@ bool diversity_manager_t::run_presolve(f_t time_limit) if (termination_criterion_t::NO_UPDATE != term_crit) { ls.constraint_prop.bounds_update.set_updated_bounds(*problem_ptr); trivial_presolve(*problem_ptr); + if (!problem_ptr->empty) { check_bounds_sanity(*problem_ptr); } + } + if (!problem_ptr->empty) { + // do the resizing no-matter what, bounds presolve might not change the bounds but initial + // trivial presolve might have + ls.constraint_prop.bounds_update.resize(*problem_ptr); + ls.constraint_prop.conditional_bounds_update.update_constraint_bounds( + *problem_ptr, ls.constraint_prop.bounds_update); check_bounds_sanity(*problem_ptr); } - // do the resizing no-matter what, bounds presolve might not change the bounds but initial trivial - // presolve might have - ls.constraint_prop.bounds_update.resize(*problem_ptr); - ls.constraint_prop.conditional_bounds_update.update_constraint_bounds( - *problem_ptr, ls.constraint_prop.bounds_update); - check_bounds_sanity(*problem_ptr); stats.presolve_time = presolve_timer.elapsed_time(); return true; } @@ -339,7 +337,7 @@ solution_t diversity_manager_t::run_solver() ls.constraint_prop.bounds_update.probing_cache.probing_cache; if (check_b_b_preemption()) { return population.best_feasible(); } - lp_state_t& lp_state = lp_state_t::get_default_lp_state(*problem_ptr); + lp_state_t& lp_state = context.lp_state; // resize because some constructor might be called before the presolve lp_state.resize(*problem_ptr, problem_ptr->handle_ptr->get_stream()); auto lp_result = get_relaxed_lp_solution(*problem_ptr, @@ -453,6 +451,7 @@ void diversity_manager_t::recombine_and_ls_with_all( if (solutions.size() > 0) { CUOPT_LOG_INFO("Running recombiners on B&B solutions with size %lu", solutions.size()); for (auto& sol : solutions) { + population.add_solution(std::move(solution_t(sol))); cuopt_func_call(sol.test_feasibility(true)); solution_t ls_solution(sol); ls.run_local_search(ls_solution, population.weights, timer); @@ -548,6 +547,7 @@ diversity_manager_t::recombine_and_local_search(solution_t& lp_offspring, lp_offspring.problem_ptr->integer_indices, context.settings.get_tolerances(), + context.lp_state, lp_run_time); cuopt_assert(population.test_invariant(), ""); cuopt_assert(lp_offspring.test_number_all_integer(), "All must be integers after LP"); diff --git a/cpp/src/mip/diversity/population.cu b/cpp/src/mip/diversity/population.cu index 23b1f745e..d82ac0f14 100644 --- a/cpp/src/mip/diversity/population.cu +++ b/cpp/src/mip/diversity/population.cu @@ -146,6 +146,7 @@ std::vector> population_t::get_external_solutions solution_t sol(*problem_ptr); sol.copy_new_assignment(h_solution_vec); sol.compute_feasibility(); + sol.handle_ptr->sync_stream(); return_vector.emplace_back(std::move(sol)); } if (external_solution_queue.size() > 0) { @@ -163,7 +164,6 @@ void population_t::run_solution_callbacks(solution_t& sol) ? sol.get_user_objective() > best_feasible_objective : sol.get_user_objective() < best_feasible_objective; auto user_callbacks = context.settings.get_mip_callbacks(); - if (better_solution_found && sol.get_feasible()) { CUOPT_LOG_DEBUG("Population: Found new best solution %g", sol.get_user_objective()); best_feasible_objective = sol.get_user_objective(); @@ -174,19 +174,29 @@ void population_t::run_solution_callbacks(solution_t& sol) for (auto callback : user_callbacks) { if (callback->get_type() == internals::base_solution_callback_type::GET_SOLUTION) { auto get_sol_callback = static_cast(callback); - rmm::device_uvector incumbent_assignment(sol.assignment, sol.handle_ptr->get_stream()); - problem_ptr->post_process_assignment(incumbent_assignment); - rmm::device_uvector dummy(0, sol.handle_ptr->get_stream()); + solution_t temp_sol(sol); + problem_ptr->post_process_assignment(temp_sol.assignment); + rmm::device_uvector dummy(0, temp_sol.handle_ptr->get_stream()); if (context.settings.mip_scaling) { - context.scaling.unscale_solutions(incumbent_assignment, dummy); + context.scaling.unscale_solutions(temp_sol.assignment, dummy); + // Need to get unscaled problem as well + problem_t n_problem(*sol.problem_ptr->original_problem_ptr); + temp_sol.problem_ptr = &n_problem; + temp_sol.resize_to_original_problem(); + temp_sol.compute_feasibility(); + if (!temp_sol.get_feasible()) { + CUOPT_LOG_DEBUG("Discard infeasible after unscaling"); + return; + } } - rmm::device_uvector user_objective_vec(1, sol.handle_ptr->get_stream()); + rmm::device_uvector user_objective_vec(1, temp_sol.handle_ptr->get_stream()); - f_t user_objective = sol.problem_ptr->get_user_obj_from_solver_obj(sol.get_objective()); - user_objective_vec.set_element_async(0, user_objective, sol.handle_ptr->get_stream()); + f_t user_objective = + temp_sol.problem_ptr->get_user_obj_from_solver_obj(temp_sol.get_objective()); + user_objective_vec.set_element_async(0, user_objective, temp_sol.handle_ptr->get_stream()); CUOPT_LOG_DEBUG("Returning incumbent solution with objective %g", user_objective); - get_sol_callback->get_solution(incumbent_assignment.data(), user_objective_vec.data()); + get_sol_callback->get_solution(temp_sol.assignment.data(), user_objective_vec.data()); } } } @@ -199,10 +209,15 @@ void population_t::run_solution_callbacks(solution_t& sol) rmm::device_uvector dummy(0, sol.handle_ptr->get_stream()); solution_t outside_sol(sol); rmm::device_scalar d_outside_sol_objective(sol.handle_ptr->get_stream()); + auto inf = std::numeric_limits::infinity(); + d_outside_sol_objective.set_value_async(inf, sol.handle_ptr->get_stream()); + sol.handle_ptr->sync_stream(); set_sol_callback->set_solution(incumbent_assignment.data(), d_outside_sol_objective.data()); f_t outside_sol_objective = d_outside_sol_objective.value(sol.handle_ptr->get_stream()); - + // The callback might be called without setting any valid solution or objective which triggers + // asserts + if (outside_sol_objective == inf) { return; } CUOPT_LOG_DEBUG("Injecting external solution with objective %g", outside_sol_objective); if (context.settings.mip_scaling) { @@ -210,21 +225,19 @@ void population_t::run_solution_callbacks(solution_t& sol) } bool is_valid = problem_ptr->pre_process_assignment(incumbent_assignment); if (!is_valid) { return; } - cuopt_assert(outside_sol.assignment.size() == incumbent_assignment.size(), "Incumbent assignment size mismatch"); raft::copy(outside_sol.assignment.data(), incumbent_assignment.data(), incumbent_assignment.size(), sol.handle_ptr->get_stream()); - outside_sol.compute_feasibility(); - CUOPT_LOG_DEBUG("Injected solution feasibility = %d", outside_sol.get_feasible()); + CUOPT_LOG_DEBUG("Injected solution feasibility = %d objective = %g", + outside_sol.get_feasible(), + outside_sol.get_user_objective()); - cuopt_assert(std::abs(outside_sol.problem_ptr->get_user_obj_from_solver_obj( - outside_sol.get_objective()) - - outside_sol_objective) <= 1e-6, + cuopt_assert(std::abs(outside_sol.get_user_objective() - outside_sol_objective) <= 1e-6, "External solution objective mismatch"); auto h_outside_sol = outside_sol.get_host_assignment(); add_external_solution(h_outside_sol, outside_sol.get_objective()); diff --git a/cpp/src/mip/diversity/recombiners/fp_recombiner.cuh b/cpp/src/mip/diversity/recombiners/fp_recombiner.cuh index 9693f01fb..aa6206ff0 100644 --- a/cpp/src/mip/diversity/recombiners/fp_recombiner.cuh +++ b/cpp/src/mip/diversity/recombiners/fp_recombiner.cuh @@ -99,7 +99,7 @@ class fp_recombiner_t : public recombiner_t { const bool return_first_feasible = false; const bool save_state = false; // every sub problem is different,so it is very hard to find a valid initial solution - lp_state_t lp_state = lp_state_t::get_default_lp_state(fixed_problem); + lp_state_t lp_state = this->context.lp_state; auto solver_response = get_relaxed_lp_solution(fixed_problem, fixed_assignment, lp_state, diff --git a/cpp/src/mip/local_search/feasibility_pump/feasibility_pump.cu b/cpp/src/mip/local_search/feasibility_pump/feasibility_pump.cu index 86f8a3e28..c15a5d2f4 100644 --- a/cpp/src/mip/local_search/feasibility_pump/feasibility_pump.cu +++ b/cpp/src/mip/local_search/feasibility_pump/feasibility_pump.cu @@ -667,6 +667,7 @@ bool feasibility_pump_t::run_single_fp_descent(solution_t& s solution, solution.problem_ptr->integer_indices, context.settings.get_tolerances(), + context.lp_state, lp_verify_time_limit, return_first_feasible, &constraint_prop.bounds_update); diff --git a/cpp/src/mip/local_search/line_segment_search/line_segment_search.cu b/cpp/src/mip/local_search/line_segment_search/line_segment_search.cu index c512714ee..1f166bdf6 100644 --- a/cpp/src/mip/local_search/line_segment_search/line_segment_search.cu +++ b/cpp/src/mip/local_search/line_segment_search/line_segment_search.cu @@ -80,7 +80,7 @@ bool line_segment_search_t::search_line_segment(solution_t& delta_vector.begin(), [n_points_to_search] __device__(const f_t& x) { return x / (n_points_to_search + 1); }); - f_t best_cost = std::numeric_limits::max(); + f_t best_cost = solution.get_quality(fj.cstr_weights, fj.objective_weight); bool initial_is_feasible = solution.get_feasible(); // TODO start from middle and increase the resolution later for (i_t i = 1; i <= n_points_to_search; ++i) { @@ -92,7 +92,7 @@ bool line_segment_search_t::search_line_segment(solution_t& const i_t index) { return point_1_ptr[index] + delta_ptr[index] * i; }); cuopt_func_call(solution.test_variable_bounds(false)); bool is_feasible = solution.round_nearest(); - if (is_feasible) { + if (is_feasibility_run && is_feasible) { CUOPT_LOG_DEBUG("Feasible found after line segment"); return true; } diff --git a/cpp/src/mip/local_search/local_search.cu b/cpp/src/mip/local_search/local_search.cu index 847d7d7d5..8e3ef2e11 100644 --- a/cpp/src/mip/local_search/local_search.cu +++ b/cpp/src/mip/local_search/local_search.cu @@ -198,6 +198,7 @@ bool local_search_t::check_fj_on_lp_optimal(solution_t& solu solution, solution.problem_ptr->integer_indices, solution.problem_ptr->tolerances, + context.lp_state, lp_run_time); } else { return is_feasible; diff --git a/cpp/src/mip/local_search/rounding/constraint_prop.cu b/cpp/src/mip/local_search/rounding/constraint_prop.cu index a922ccec5..93770ef7b 100644 --- a/cpp/src/mip/local_search/rounding/constraint_prop.cu +++ b/cpp/src/mip/local_search/rounding/constraint_prop.cu @@ -896,6 +896,7 @@ bool constraint_prop_t::find_integer( orig_sol, orig_sol.problem_ptr->integer_indices, context.settings.get_tolerances(), + context.lp_state, lp_run_time_after_feasible, true); } diff --git a/cpp/src/mip/local_search/rounding/lb_constraint_prop.cu b/cpp/src/mip/local_search/rounding/lb_constraint_prop.cu index a0719ea5e..e414aac33 100644 --- a/cpp/src/mip/local_search/rounding/lb_constraint_prop.cu +++ b/cpp/src/mip/local_search/rounding/lb_constraint_prop.cu @@ -949,6 +949,7 @@ bool lb_constraint_prop_t::find_integer( orig_sol, orig_sol.problem_ptr->integer_indices, context.settings.get_tolerances(), + context.lp_state, lp_run_time_after_feasible, true); } diff --git a/cpp/src/mip/presolve/trivial_presolve.cuh b/cpp/src/mip/presolve/trivial_presolve.cuh index 495a191fa..d7cfa6dc1 100644 --- a/cpp/src/mip/presolve/trivial_presolve.cuh +++ b/cpp/src/mip/presolve/trivial_presolve.cuh @@ -277,8 +277,9 @@ void update_from_csr(problem_t& pb) pb.n_constraints = updated_n_cnst; pb.n_variables = updated_n_vars; - CUOPT_LOG_INFO( - "After trivial presolve updated %d constraints %d variables", updated_n_cnst, updated_n_vars); + CUOPT_LOG_INFO("After trivial presolve updated number of %d constraints %d variables", + updated_n_cnst, + updated_n_vars); // check successive cnst in coo increases by atmost 1 // update csr offset pb.offsets.resize(pb.n_constraints + 1, handle_ptr->get_stream()); diff --git a/cpp/src/mip/problem/problem.cu b/cpp/src/mip/problem/problem.cu index 174d6af58..e0caf1a26 100644 --- a/cpp/src/mip/problem/problem.cu +++ b/cpp/src/mip/problem/problem.cu @@ -572,64 +572,64 @@ void problem_t::check_problem_representation(bool check_transposed, template bool problem_t::pre_process_assignment(rmm::device_uvector& assignment) { - cuopt_assert(assignment.size() == original_problem_ptr->get_n_variables(), "size mismatch"); auto has_nans = cuopt::linear_programming::detail::has_nans(handle_ptr, assignment); if (has_nans) { - CUOPT_LOG_DEBUG("Solution discared due to nans"); + CUOPT_LOG_DEBUG("Solution discarded due to nans"); return false; } + cuopt_assert(assignment.size() == original_problem_ptr->get_n_variables(), "size mismatch"); + + // create a temp assignment with the var size after bounds standardization (free vars added) + rmm::device_uvector temp_assignment(presolve_data.additional_var_used.size(), + handle_ptr->get_stream()); + // copy the assignment to the first part(the original variable count) of the temp_assignment + raft::copy( + temp_assignment.data(), assignment.data(), assignment.size(), handle_ptr->get_stream()); + auto d_additional_var_used = + cuopt::device_copy(presolve_data.additional_var_used, handle_ptr->get_stream()); + auto d_additional_var_id_per_var = + cuopt::device_copy(presolve_data.additional_var_id_per_var, handle_ptr->get_stream()); + + // handle free var logic by substituting the free vars and their corresponding vars + thrust::for_each(handle_ptr->get_thrust_policy(), + thrust::make_counting_iterator(0), + thrust::make_counting_iterator(original_problem_ptr->get_n_variables()), + [additional_var_used = d_additional_var_used.data(), + additional_var_id_per_var = d_additional_var_id_per_var.data(), + assgn = temp_assignment.data()] __device__(auto idx) { + if (additional_var_used[idx]) { + cuopt_assert(additional_var_id_per_var[idx] != -1, + "additional_var_id_per_var is not set"); + // We have two non-negative variables y and z that simulate a free variable + // x. If the value of x is negative, we can set z to be something higher than + // y. If the value of x is positive we can set y greater than z + assgn[additional_var_id_per_var[idx]] = (assgn[idx] < 0 ? -assgn[idx] : 0.); + assgn[idx] += assgn[additional_var_id_per_var[idx]]; + } + }); + assignment.resize(n_variables, handle_ptr->get_stream()); + assignment.shrink_to_fit(handle_ptr->get_stream()); + cuopt_assert(presolve_data.variable_mapping.size() == n_variables, "size mismatch"); + thrust::gather(handle_ptr->get_thrust_policy(), + presolve_data.variable_mapping.begin(), + presolve_data.variable_mapping.end(), + temp_assignment.begin(), + assignment.begin()); + handle_ptr->sync_stream(); auto has_integrality_discrepancy = cuopt::linear_programming::detail::has_integrality_discrepancy( handle_ptr, integer_indices, assignment, tolerances.integrality_tolerance); if (has_integrality_discrepancy) { - CUOPT_LOG_DEBUG("Solution discared due to integrality discrepancy"); + CUOPT_LOG_DEBUG("Solution discarded due to integrality discrepancy"); return false; } auto has_variable_bounds_violation = cuopt::linear_programming::detail::has_variable_bounds_violation(handle_ptr, assignment, this); if (has_variable_bounds_violation) { - CUOPT_LOG_DEBUG("Solution discared due to variable bounds violation"); + CUOPT_LOG_DEBUG("Solution discarded due to variable bounds violation"); return false; } - - // Map assignment to internal solution using variable mapping - rmm::device_uvector internal_assignment(presolve_data.variable_mapping.size(), - handle_ptr->get_stream()); - thrust::gather(handle_ptr->get_thrust_policy(), - presolve_data.variable_mapping.begin(), - presolve_data.variable_mapping.end(), - assignment.begin(), - internal_assignment.begin()); - - auto d_additional_var_used = - cuopt::device_copy(presolve_data.additional_var_used, handle_ptr->get_stream()); - auto d_additional_var_id_per_var = - cuopt::device_copy(presolve_data.additional_var_id_per_var, handle_ptr->get_stream()); - - thrust::for_each( - handle_ptr->get_thrust_policy(), - thrust::make_counting_iterator(0), - thrust::make_counting_iterator(presolve_data.variable_mapping.size()), - [additional_var_used = d_additional_var_used.data(), - additional_var_id_per_var = d_additional_var_id_per_var.data(), - assgn = internal_assignment.data()] __device__(auto idx) { - if (additional_var_used[idx]) { - cuopt_assert(additional_var_id_per_var[idx] != -1, "additional_var_id_per_var is not set"); - // We have two non-negative variables y and z that simulate a free variable x. If the value - // of x is negative, we can set z to be something higher than y. If the value of x is - // positive we can set y greater than z - assgn[additional_var_id_per_var[idx]] = assgn[idx] < 0 ? -assgn[idx] : assgn[idx]; - assgn[idx] += assgn[additional_var_id_per_var[idx]]; - } - }); - assignment.resize(internal_assignment.size(), handle_ptr->get_stream()); - assignment.shrink_to_fit(handle_ptr->get_stream()); - raft::copy(assignment.data(), - internal_assignment.data(), - internal_assignment.size(), - handle_ptr->get_stream()); - handle_ptr->sync_stream(); return true; } @@ -643,11 +643,14 @@ void problem_t::post_process_assignment(rmm::device_uvector& curr auto assgn = make_span(current_assignment); auto fixed_assgn = make_span(presolve_data.fixed_var_assignment); auto var_map = make_span(presolve_data.variable_mapping); - thrust::for_each( - handle_ptr->get_thrust_policy(), - thrust::make_counting_iterator(0), - thrust::make_counting_iterator(current_assignment.size()), - [fixed_assgn, var_map, assgn] __device__(auto idx) { fixed_assgn[var_map[idx]] = assgn[idx]; }); + if (current_assignment.size() > 0) { + thrust::for_each(handle_ptr->get_thrust_policy(), + thrust::make_counting_iterator(0), + thrust::make_counting_iterator(current_assignment.size()), + [fixed_assgn, var_map, assgn] __device__(auto idx) { + fixed_assgn[var_map[idx]] = assgn[idx]; + }); + } expand_device_copy( current_assignment, presolve_data.fixed_var_assignment, handle_ptr->get_stream()); auto h_assignment = cuopt::host_copy(current_assignment, handle_ptr->get_stream()); @@ -682,7 +685,10 @@ void problem_t::recompute_auxilliary_data(bool check_representation) { compute_n_integer_vars(); compute_binary_var_table(); - compute_related_variables(); + + // TODO: speedup compute related variables + const double time_limit = 30.; + compute_related_variables(time_limit); if (check_representation) check_problem_representation(true); } @@ -758,7 +764,7 @@ void problem_t::compute_binary_var_table() } template -void problem_t::compute_related_variables() +void problem_t::compute_related_variables(double time_limit) { auto pb_view = view(); @@ -785,6 +791,7 @@ void problem_t::compute_related_variables() i_t output_offset = 0; i_t related_var_offset = 0; + auto start_time = std::chrono::high_resolution_clock::now(); for (i_t i = 0;; ++i) { i_t slice_size = min(max_slice_size, n_variables - i * max_slice_size); if (slice_size <= 0) break; @@ -813,10 +820,14 @@ void problem_t::compute_related_variables() i_t related_var_base = related_variables.size(); related_variables.resize(related_variables.size() + array_size, handle_ptr->get_stream()); + auto current_time = std::chrono::high_resolution_clock::now(); // if the related variable array would wind up being too large for available memory, abort // TODO this used to be 1e9 - if (related_variables.size() > 1e9) { - CUOPT_LOG_DEBUG("Computing the related variable array would use too much memory, aborting\n"); + if (related_variables.size() > 1e9 || + std::chrono::duration_cast(current_time - start_time).count() > + time_limit) { + CUOPT_LOG_DEBUG( + "Computing the related variable array would use too much memory or time, aborting\n"); related_variables.resize(0, handle_ptr->get_stream()); related_variables_offsets.resize(0, handle_ptr->get_stream()); return; diff --git a/cpp/src/mip/problem/problem.cuh b/cpp/src/mip/problem/problem.cuh index 71daf7e33..6115dd162 100644 --- a/cpp/src/mip/problem/problem.cuh +++ b/cpp/src/mip/problem/problem.cuh @@ -79,7 +79,7 @@ class problem_t { void recompute_auxilliary_data(bool check_representation = true); void compute_n_integer_vars(); void compute_binary_var_table(); - void compute_related_variables(); + void compute_related_variables(double time_limit); void fix_given_variables(problem_t& original_problem, rmm::device_uvector& assignment, const rmm::device_uvector& variables_to_fix, diff --git a/cpp/src/mip/relaxed_lp/lp_state.cuh b/cpp/src/mip/relaxed_lp/lp_state.cuh index 41a078cdc..e43c342be 100644 --- a/cpp/src/mip/relaxed_lp/lp_state.cuh +++ b/cpp/src/mip/relaxed_lp/lp_state.cuh @@ -24,15 +24,23 @@ namespace cuopt::linear_programming::detail { template class lp_state_t { - // this constructor should be used only once by get_default_lp_state - private: + public: lp_state_t(problem_t& problem, rmm::cuda_stream_view stream) : prev_primal(problem.n_variables, stream), prev_dual(problem.n_constraints, stream) { + thrust::fill(problem.handle_ptr->get_thrust_policy(), + prev_primal.data(), + prev_primal.data() + problem.n_variables, + 0); + thrust::fill(problem.handle_ptr->get_thrust_policy(), + prev_dual.data(), + prev_dual.data() + problem.n_constraints, + 0); } - public: - lp_state_t(problem_t& problem) : lp_state_t(get_default_lp_state(problem)) {} + lp_state_t(problem_t& problem) : lp_state_t(problem, problem.handle_ptr->get_stream()) + { + } lp_state_t(const lp_state_t& other) : prev_primal(other.prev_primal, other.prev_primal.stream()), @@ -43,23 +51,6 @@ class lp_state_t { lp_state_t(lp_state_t&& other) noexcept = default; lp_state_t& operator=(lp_state_t&& other) noexcept = default; - static lp_state_t& get_default_lp_state(problem_t& problem) - { - if (!default_lp_state) { - default_lp_state.reset(new lp_state_t(problem, problem.handle_ptr->get_stream())); - thrust::fill(problem.handle_ptr->get_thrust_policy(), - default_lp_state->prev_primal.data(), - default_lp_state->prev_primal.data() + problem.n_variables, - 0); - thrust::fill(problem.handle_ptr->get_thrust_policy(), - default_lp_state->prev_dual.data(), - default_lp_state->prev_dual.data() + problem.n_constraints, - 0); - } - if (!root_is_initialized) { root_is_initialized = true; } - return *default_lp_state; - } - void resize(problem_t& problem, rmm::cuda_stream_view stream) { prev_primal.resize(problem.n_variables, stream); @@ -79,14 +70,6 @@ class lp_state_t { } rmm::device_uvector prev_primal; rmm::device_uvector prev_dual; - static std::unique_ptr> default_lp_state; - static bool root_is_initialized; }; -template -std::unique_ptr> lp_state_t::default_lp_state = nullptr; - -template -bool lp_state_t::root_is_initialized = false; - } // namespace cuopt::linear_programming::detail diff --git a/cpp/src/mip/relaxed_lp/relaxed_lp.cu b/cpp/src/mip/relaxed_lp/relaxed_lp.cu index 20fda2fca..05fcf3205 100644 --- a/cpp/src/mip/relaxed_lp/relaxed_lp.cu +++ b/cpp/src/mip/relaxed_lp/relaxed_lp.cu @@ -135,6 +135,7 @@ bool run_lp_with_vars_fixed(problem_t& op_problem, solution_t& solution, const rmm::device_uvector& variables_to_fix, typename mip_solver_settings_t::tolerances_t tols, + lp_state_t& lp_state, f_t time_limit, bool return_first_feasible, bound_presolve_t* bound_presolve) @@ -160,7 +161,6 @@ bool run_lp_with_vars_fixed(problem_t& op_problem, // if we are on the original problem and fixing the integers, save the state // if we are in recombiners and on a smaller problem, don't update the state with integers fixed bool save_state = false; - auto& lp_state = lp_state_t::get_default_lp_state(fixed_problem); auto solver_response = get_relaxed_lp_solution(fixed_problem, fixed_assignment, lp_state, @@ -197,6 +197,7 @@ bool run_lp_with_vars_fixed(problem_t& op_problem, solution_t & solution, \ const rmm::device_uvector& variables_to_fix, \ typename mip_solver_settings_t::tolerances_t tols, \ + lp_state_t& lp_state, \ F_TYPE time_limit, \ bool return_first_feasible, \ bound_presolve_t* bound_presolve); diff --git a/cpp/src/mip/relaxed_lp/relaxed_lp.cuh b/cpp/src/mip/relaxed_lp/relaxed_lp.cuh index 713e93d60..39ccc7ef5 100644 --- a/cpp/src/mip/relaxed_lp/relaxed_lp.cuh +++ b/cpp/src/mip/relaxed_lp/relaxed_lp.cuh @@ -51,6 +51,7 @@ bool run_lp_with_vars_fixed(problem_t& op_problem, solution_t& solution, const rmm::device_uvector& variables_to_fix, typename mip_solver_settings_t::tolerances_t tols, + lp_state_t& lp_state, f_t time_limit = 20., bool return_first_feasible = false, bound_presolve_t* bound_presolve = nullptr); diff --git a/cpp/src/mip/solution/solution.cu b/cpp/src/mip/solution/solution.cu index b72e67d6b..05309fb3a 100644 --- a/cpp/src/mip/solution/solution.cu +++ b/cpp/src/mip/solution/solution.cu @@ -68,7 +68,9 @@ solution_t::solution_t(const solution_t& other) h_user_obj(other.h_user_obj), h_infeasibility_cost(other.h_infeasibility_cost), is_feasible(other.is_feasible), + is_problem_fully_reduced(other.is_problem_fully_reduced), is_scaled_(other.is_scaled_), + post_process_completed(other.post_process_completed), lp_state(other.lp_state) { } @@ -94,8 +96,10 @@ void solution_t::copy_from(const solution_t& other_sol) other_sol.n_feasible_constraints.data(), 1, handle_ptr->get_stream()); - is_feasible = other_sol.is_feasible; - is_scaled_ = other_sol.is_scaled_; + is_feasible = other_sol.is_feasible; + is_problem_fully_reduced = other_sol.is_problem_fully_reduced; + is_scaled_ = other_sol.is_scaled_; + post_process_completed = other_sol.post_process_completed; expand_device_copy( lp_state.prev_primal, other_sol.lp_state.prev_primal, handle_ptr->get_stream()); expand_device_copy(lp_state.prev_dual, other_sol.lp_state.prev_dual, handle_ptr->get_stream()); @@ -183,15 +187,15 @@ bool solution_t::get_feasible() } template -bool solution_t::get_problem_infeasible() +bool solution_t::get_problem_fully_reduced() { - return is_problem_infeasible; + return is_problem_fully_reduced; } template -void solution_t::set_problem_infeasible() +void solution_t::set_problem_fully_reduced() { - is_problem_infeasible = true; + is_problem_fully_reduced = true; } template @@ -267,6 +271,8 @@ void solution_t::set_vars_to_values( template void solution_t::compute_constraints() { + if (problem_ptr->n_constraints == 0) { return; } + i_t TPB = 64; compute_constraint_values <<n_constraints, TPB, 0, handle_ptr->get_stream()>>>(view()); @@ -587,6 +593,7 @@ mip_solution_t solution_t::get_solution(bool output_feasible const double optimality_threshold = problem_ptr->tolerances.relative_mip_gap; auto term_reason = rel_mip_gap > optimality_threshold ? mip_termination_status_t::FeasibleFound : mip_termination_status_t::Optimal; + if (is_problem_fully_reduced) { term_reason = mip_termination_status_t::Optimal; } return mip_solution_t(std::move(assignment), problem_ptr->var_names, h_user_obj, @@ -601,8 +608,8 @@ mip_solution_t solution_t::get_solution(bool output_feasible num_nodes, num_simplex_iterations); } else { - return mip_solution_t{is_problem_infeasible ? mip_termination_status_t::Infeasible - : mip_termination_status_t::TimeLimit, + return mip_solution_t{is_problem_fully_reduced ? mip_termination_status_t::Infeasible + : mip_termination_status_t::TimeLimit, handle_ptr->get_stream()}; } } diff --git a/cpp/src/mip/solution/solution.cuh b/cpp/src/mip/solution/solution.cuh index f1cb930db..fc139fb31 100644 --- a/cpp/src/mip/solution/solution.cuh +++ b/cpp/src/mip/solution/solution.cuh @@ -72,10 +72,10 @@ class solution_t { void set_infeasible(); // gets the is_feasible bool get_feasible(); - // gets the is_problem_infeasible - bool get_problem_infeasible(); - // sets the is_problem_infeasible flag to 1 - void set_problem_infeasible(); + // gets the is_problem_fully_reduced + bool get_problem_fully_reduced(); + // sets the is_problem_fully_reduced flag to 1 + void set_problem_fully_reduced(); // computes the number of integral variables that have integral value i_t compute_number_of_integers(); // computes the l2 residual value from the excess values @@ -148,7 +148,7 @@ class solution_t { f_t h_user_obj = 0.; f_t h_infeasibility_cost = 0.; bool is_feasible = false; - bool is_problem_infeasible{false}; + bool is_problem_fully_reduced{false}; bool is_scaled_{false}; bool post_process_completed{false}; lp_state_t lp_state; diff --git a/cpp/src/mip/solve.cu b/cpp/src/mip/solve.cu index 71c23651d..6ca891a3b 100644 --- a/cpp/src/mip/solve.cu +++ b/cpp/src/mip/solve.cu @@ -55,12 +55,12 @@ static void init_handler(const raft::handle_t* handle_ptr) handle_ptr->get_cusparse_handle(), CUSPARSE_POINTER_MODE_DEVICE, handle_ptr->get_stream())); } -static void setup_device_symbols() +static void setup_device_symbols(rmm::cuda_stream_view stream_view) { raft::common::nvtx::range fun_scope("Setting device symbol"); - detail::set_adaptive_step_size_hyper_parameters(); - detail::set_restart_hyper_parameters(); - detail::set_pdlp_hyper_parameters(); + detail::set_adaptive_step_size_hyper_parameters(stream_view); + detail::set_restart_hyper_parameters(stream_view); + detail::set_pdlp_hyper_parameters(stream_view); } template @@ -136,16 +136,6 @@ mip_solution_t run_mip(detail::problem_t& problem, "please provide a more numerically stable problem."); } - // If the trivial presolve fully reduced the problem: - if (scaled_problem.empty) { - detail::solution_t fixed_assignment_solution(problem); - if (fixed_assignment_solution.compute_feasibility()) { - solver.get_solver_stats().solution_bound = scaled_sol.get_user_objective(); - } else { - scaled_sol.set_problem_infeasible(); - } - } - auto sol = scaled_sol.get_solution(is_feasible_before_scaling || is_feasible_after_unscaling, solver.get_solver_stats()); detail::print_solution(scaled_problem.handle_ptr, sol.get_solution()); @@ -159,9 +149,6 @@ mip_solution_t solve_mip(optimization_problem_t& op_problem, try { // Create log stream for file logging and add it to default logger init_logger_t log(settings.log_file, settings.log_to_console); -#if CUOPT_LOG_ACTIVE_LEVEL >= RAPIDS_LOGGER_LOG_LEVEL_INFO - cuopt::default_logger().set_pattern("%v"); -#endif // Init libraies before to not include it in solve time // This needs to be called before pdlp is initialized init_handler(op_problem.get_handle_ptr()); @@ -176,7 +163,7 @@ mip_solution_t solve_mip(optimization_problem_t& op_problem, detail::problem_t problem(op_problem); // this is for PDLP, i think this should be part of pdlp solver - setup_device_symbols(); + setup_device_symbols(op_problem.get_handle_ptr()->get_stream()); auto sol = run_mip(problem, settings); @@ -189,6 +176,11 @@ mip_solution_t solve_mip(optimization_problem_t& op_problem, } catch (const cuopt::logic_error& e) { CUOPT_LOG_ERROR("Error in solve_mip: %s", e.what()); return mip_solution_t{e, op_problem.get_handle_ptr()->get_stream()}; + } catch (const std::bad_alloc& e) { + CUOPT_LOG_ERROR("Error in solve_mip: %s", e.what()); + return mip_solution_t{ + cuopt::logic_error("Memory allocation failed", cuopt::error_type_t::RuntimeError), + op_problem.get_handle_ptr()->get_stream()}; } } diff --git a/cpp/src/mip/solver.cu b/cpp/src/mip/solver.cu index 4aded0a08..13690423e 100644 --- a/cpp/src/mip/solver.cu +++ b/cpp/src/mip/solver.cu @@ -96,8 +96,9 @@ solution_t mip_solver_t::run_solver() "preprocess_problem should be called before running the solver"); if (context.problem_ptr->empty) { - CUOPT_LOG_INFO("Problem fully reduced at presolve"); + CUOPT_LOG_INFO("Problem fully reduced in presolve"); solution_t sol(*context.problem_ptr); + sol.set_problem_fully_reduced(); context.problem_ptr->post_process_solution(sol); return sol; } @@ -106,9 +107,16 @@ solution_t mip_solver_t::run_solver() dm.timer = timer_; bool presolve_success = dm.run_presolve(timer_.remaining_time()); if (!presolve_success) { - CUOPT_LOG_INFO("Presolve is infeasible, returning infeasible solution!"); + CUOPT_LOG_INFO("Problem proven infeasible in presolve"); solution_t sol(*context.problem_ptr); - sol.set_problem_infeasible(); + sol.set_problem_fully_reduced(); + context.problem_ptr->post_process_solution(sol); + return sol; + } + if (context.problem_ptr->empty) { + CUOPT_LOG_INFO("Problem full reduced in presolve"); + solution_t sol(*context.problem_ptr); + sol.set_problem_fully_reduced(); context.problem_ptr->post_process_solution(sol); return sol; } @@ -176,7 +184,7 @@ solution_t mip_solver_t::run_solver() context.stats.solution_bound = context.problem_ptr->get_user_obj_from_solver_obj(branch_and_bound_solution.lower_bound); } - if (bb_status == dual_simplex::mip_status_t::INFEASIBLE) { sol.set_problem_infeasible(); } + if (bb_status == dual_simplex::mip_status_t::INFEASIBLE) { sol.set_problem_fully_reduced(); } context.stats.num_nodes = branch_and_bound_solution.nodes_explored; context.stats.num_simplex_iterations = branch_and_bound_solution.simplex_iterations; } diff --git a/cpp/src/mip/solver_context.cuh b/cpp/src/mip/solver_context.cuh index c78ecc9e8..a714a25b4 100644 --- a/cpp/src/mip/solver_context.cuh +++ b/cpp/src/mip/solver_context.cuh @@ -17,6 +17,7 @@ #include #include +#include #include #pragma once @@ -31,14 +32,20 @@ struct mip_solver_context_t { problem_t* problem_ptr_, mip_solver_settings_t settings_, pdlp_initial_scaling_strategy_t& scaling) - : handle_ptr(handle_ptr_), problem_ptr(problem_ptr_), settings(settings_), scaling(scaling) + : handle_ptr(handle_ptr_), + problem_ptr(problem_ptr_), + settings(settings_), + scaling(scaling), + lp_state(*problem_ptr) { + cuopt_assert(problem_ptr != nullptr, "problem_ptr is nullptr"); stats.solution_bound = problem_ptr->maximize ? std::numeric_limits::infinity() : -std::numeric_limits::infinity(); } raft::handle_t const* const handle_ptr; problem_t* problem_ptr; + lp_state_t lp_state; const mip_solver_settings_t settings; pdlp_initial_scaling_strategy_t& scaling; solver_stats_t stats; diff --git a/cpp/src/routing/solve.cu b/cpp/src/routing/solve.cu index 641935e28..11fedcf18 100644 --- a/cpp/src/routing/solve.cu +++ b/cpp/src/routing/solve.cu @@ -31,6 +31,11 @@ assignment_t solve(data_model_view_t const& data_model, } catch (const cuopt::logic_error& e) { CUOPT_LOG_ERROR("Error in solve: %s", e.what()); return assignment_t(e, data_model.get_handle_ptr()->get_stream()); + } catch (const std::bad_alloc& e) { + CUOPT_LOG_ERROR("Error in solve: %s", e.what()); + return assignment_t( + cuopt::logic_error("Memory allocation failed", cuopt::error_type_t::RuntimeError), + data_model.get_handle_ptr()->get_stream()); } } diff --git a/cpp/tests/dual_simplex/unit_tests/solve.cpp b/cpp/tests/dual_simplex/unit_tests/solve.cpp index 9664e0ac7..3fbfc3766 100644 --- a/cpp/tests/dual_simplex/unit_tests/solve.cpp +++ b/cpp/tests/dual_simplex/unit_tests/solve.cpp @@ -175,4 +175,91 @@ TEST(dual_simplex, burglar) EXPECT_NEAR(solution[5], 1, 1e-6); } +TEST(dual_simplex, empty_columns) +{ + // Same as burglar problem above but with an empty column inserted + constexpr int num_items = 9; + constexpr double max_weight = 102; + + std::vector value({15, 100, 90, 0, 60, 40, 15, 10, 1}); + std::vector weight({2, 20, 20, 0, 30, 40, 30, 60, 10}); + + // maximize sum_i value[i] * take[i] + // sum_i weight[i] * take[i] <= max_weight + // take[i] binary for all i + + cuopt::linear_programming::dual_simplex::user_problem_t user_problem; + constexpr int m = 1; + constexpr int n = num_items; + constexpr int nz = num_items - 1; + + user_problem.num_rows = m; + user_problem.num_cols = n; + user_problem.objective.resize(n); + for (int j = 0; j < num_items; ++j) { + user_problem.objective[j] = -value[j]; + } + user_problem.A.m = m; + user_problem.A.n = n; + user_problem.A.nz_max = nz; + user_problem.A.reallocate(nz); + user_problem.A.col_start.resize(n + 1); + int nnz = 0; + for (int j = 0; j < num_items; ++j) { + user_problem.A.col_start[j] = nnz; + if (weight[j] > 0) { + user_problem.A.i[nnz] = 0; + user_problem.A.x[nnz] = weight[j]; + nnz++; + } + } + user_problem.A.col_start[n] = nnz; + user_problem.rhs.resize(m); + user_problem.rhs[0] = max_weight; + user_problem.row_sense.resize(m); + user_problem.row_sense[0] = 'L'; + user_problem.lower.resize(n); + user_problem.upper.resize(n); + for (int j = 0; j < num_items; ++j) { + user_problem.lower[j] = 0.0; + user_problem.upper[j] = 1.0; + } + user_problem.num_range_rows = 0; + user_problem.problem_name = "burglar"; + user_problem.row_names.resize(m); + user_problem.row_names[0] = "weight restriction"; + user_problem.col_names.resize(n); + for (int j = 0; j < num_items; ++j) { + user_problem.col_names[j] = "x"; + } + user_problem.obj_constant = 0.0; + user_problem.var_types.resize(n); + for (int j = 0; j < num_items; ++j) { + user_problem.var_types[j] = + cuopt::linear_programming::dual_simplex::variable_type_t::CONTINUOUS; + } + + cuopt::linear_programming::dual_simplex::simplex_solver_settings_t settings; + + cuopt::linear_programming::dual_simplex::lp_solution_t solution( + user_problem.num_rows, user_problem.num_cols); + EXPECT_EQ((cuopt::linear_programming::dual_simplex::solve_linear_program( + user_problem, settings, solution)), + cuopt::linear_programming::dual_simplex::lp_status_t::OPTIMAL); + double objective = 0.0; + for (int j = 0; j < num_items; ++j) { + objective += value[j] * solution.x[j]; + } + EXPECT_NEAR(objective, 295, 1e-6); + EXPECT_NEAR(solution.x[0], 1, 1e-6); + EXPECT_NEAR(solution.x[1], 1, 1e-6); + EXPECT_NEAR(solution.x[2], 1, 1e-6); + EXPECT_NEAR(solution.x[3], 0, 1e-6); + EXPECT_NEAR(solution.x[4], 1, 1e-6); + EXPECT_NEAR(solution.x[5], 0.75, 1e-6); + EXPECT_NEAR(solution.x[6], 0, 1e-6); + EXPECT_NEAR(solution.x[7], 0, 1e-6); + EXPECT_NEAR(solution.x[8], 0, 1e-6); +} + } // namespace cuopt::linear_programming::dual_simplex::test diff --git a/cpp/tests/mip/bounds_standardization_test.cu b/cpp/tests/mip/bounds_standardization_test.cu index cca505800..fd6318447 100644 --- a/cpp/tests/mip/bounds_standardization_test.cu +++ b/cpp/tests/mip/bounds_standardization_test.cu @@ -50,11 +50,11 @@ void init_handler(const raft::handle_t* handle_ptr) handle_ptr->get_cusparse_handle(), CUSPARSE_POINTER_MODE_DEVICE, handle_ptr->get_stream())); } -void setup_pdlp() +void setup_pdlp(rmm::cuda_stream_view stream_view) { - detail::set_adaptive_step_size_hyper_parameters(); - detail::set_restart_hyper_parameters(); - detail::set_pdlp_hyper_parameters(); + detail::set_adaptive_step_size_hyper_parameters(stream_view); + detail::set_restart_hyper_parameters(stream_view); + detail::set_pdlp_hyper_parameters(stream_view); } void test_bounds_standardization_test(std::string test_instance) @@ -67,7 +67,7 @@ void test_bounds_standardization_test(std::string test_instance) handle_.sync_stream(); auto op_problem = mps_data_model_to_optimization_problem(&handle_, problem); problem_checking_t::check_problem_representation(op_problem); - setup_pdlp(); + setup_pdlp(handle_.get_stream()); init_handler(op_problem.get_handle_ptr()); // run the problem constructor of MIP, so that we do bounds standardization detail::problem_t standardized_problem(op_problem); diff --git a/cpp/tests/mip/elim_var_remap_test.cu b/cpp/tests/mip/elim_var_remap_test.cu index dbde49b27..4d1c2fd17 100644 --- a/cpp/tests/mip/elim_var_remap_test.cu +++ b/cpp/tests/mip/elim_var_remap_test.cu @@ -53,11 +53,11 @@ void init_handler(const raft::handle_t* handle_ptr) handle_ptr->get_cusparse_handle(), CUSPARSE_POINTER_MODE_DEVICE, handle_ptr->get_stream())); } -void setup_pdlp() +void setup_pdlp(rmm::cuda_stream_view stream_view) { - detail::set_adaptive_step_size_hyper_parameters(); - detail::set_restart_hyper_parameters(); - detail::set_pdlp_hyper_parameters(); + detail::set_adaptive_step_size_hyper_parameters(stream_view); + detail::set_restart_hyper_parameters(stream_view); + detail::set_pdlp_hyper_parameters(stream_view); } std::vector select_k_random(int population_size, int sample_size) @@ -150,7 +150,7 @@ void test_elim_var_solution(std::string test_instance) handle_.sync_stream(); auto op_problem = mps_data_model_to_optimization_problem(&handle_, mps_problem); problem_checking_t::check_problem_representation(op_problem); - setup_pdlp(); + setup_pdlp(handle_.get_stream()); init_handler(op_problem.get_handle_ptr()); // run the problem constructor of MIP, so that we do bounds standardization detail::problem_t standardized_problem(op_problem); diff --git a/cpp/tests/mip/incumbent_callback_test.cu b/cpp/tests/mip/incumbent_callback_test.cu index 35481256b..f45efca72 100644 --- a/cpp/tests/mip/incumbent_callback_test.cu +++ b/cpp/tests/mip/incumbent_callback_test.cu @@ -52,14 +52,16 @@ class test_set_solution_callback_t : public cuopt::internals::set_solution_callb // This will check that the we are able to recompute our own solution void set_solution(void* data, void* cost) override { + n_calls++; rmm::cuda_stream_view stream{}; - auto assignment = static_cast(data); - auto cost_ptr = static_cast(cost); + auto assignment = static_cast(data); + auto cost_ptr = static_cast(cost); + if (solutions.empty()) { return; } + auto const& [last_assignment, last_cost] = solutions.back(); raft::copy(assignment, last_assignment.data(), last_assignment.size(), stream); raft::copy(cost_ptr, &last_cost, 1, stream); stream.synchronize(); - n_calls++; } std::vector, double>>& solutions; int n_calls; @@ -74,6 +76,7 @@ class test_get_solution_callback_t : public cuopt::internals::get_solution_callb } void get_solution(void* data, void* cost) override { + n_calls++; rmm::cuda_stream_view stream{}; rmm::device_uvector assignment(n_variables, stream); raft::copy(assignment.data(), static_cast(data), n_variables, stream); @@ -81,7 +84,6 @@ class test_get_solution_callback_t : public cuopt::internals::get_solution_callb raft::copy(&h_cost, static_cast(cost), 1, stream); stream.synchronize(); solutions.push_back(std::make_pair(std::move(assignment), h_cost)); - n_calls++; } std::vector, double>>& solutions; int n_calls; @@ -131,7 +133,8 @@ void test_incumbent_callback(std::string test_instance) TEST(mip_solve, incumbent_callback_test) { - std::vector test_instances = {"mip/50v-10.mps", "mip/neos5.mps", "mip/swath1.mps"}; + std::vector test_instances = { + "mip/50v-10.mps", "mip/neos5-free-bound.mps", "mip/swath1.mps"}; for (const auto& test_instance : test_instances) { test_incumbent_callback(test_instance); } diff --git a/cpp/tests/mip/server_test.cu b/cpp/tests/mip/server_test.cu index ce3499e3d..cf8268b9f 100644 --- a/cpp/tests/mip/server_test.cu +++ b/cpp/tests/mip/server_test.cu @@ -15,7 +15,7 @@ * limitations under the License. */ -#include "../utilities/pdlp_test_utilities.cuh" +#include "../linear_programming/utilities/pdlp_test_utilities.cuh" #include "mip_utils.cuh" #include diff --git a/cpp/tests/mip/termination_test.cu b/cpp/tests/mip/termination_test.cu index f69eaa535..6a8c4b6fd 100644 --- a/cpp/tests/mip/termination_test.cu +++ b/cpp/tests/mip/termination_test.cu @@ -62,6 +62,20 @@ static std::pair test_mps_file(std::string tes return std::make_pair(solution.get_termination_status(), solution.get_objective_value()); } +TEST(termination_status, trivial_presolve_optimality_test) +{ + auto [termination_status, obj_val] = test_mps_file("mip/trivial-presolve-optimality.mps"); + EXPECT_EQ(termination_status, mip_termination_status_t::Optimal); + EXPECT_EQ(obj_val, -1); +} + +TEST(termination_status, presolve_optimality_test) +{ + auto [termination_status, obj_val] = test_mps_file("mip/sudoku.mps"); + EXPECT_EQ(termination_status, mip_termination_status_t::Optimal); + EXPECT_EQ(obj_val, 0); +} + TEST(termination_status, presolve_infeasible_test) { auto [termination_status, obj_val] = test_mps_file("mip/presolve-infeasible.mps"); @@ -84,6 +98,7 @@ TEST(termination_status, optimality_test) { auto [termination_status, obj_val] = test_mps_file("mip/bb_optimality.mps", false); EXPECT_EQ(termination_status, mip_termination_status_t::Optimal); + EXPECT_EQ(obj_val, 2); } TEST(termination_status, bb_infeasible_test) diff --git a/datasets/mip/sudoku.mps b/datasets/mip/sudoku.mps new file mode 100755 index 000000000..b8a0ed3a3 --- /dev/null +++ b/datasets/mip/sudoku.mps @@ -0,0 +1,5848 @@ +*SENSE:Minimize +NAME Sudoku_Problem +ROWS + N OBJ + E _C1 + E _C2 + E _C3 + E _C4 + E _C5 + E _C6 + E _C7 + E _C8 + E _C9 + E _C10 + E _C11 + E _C12 + E _C13 + E _C14 + E _C15 + E _C16 + E _C17 + E _C18 + E _C19 + E _C20 + E _C21 + E _C22 + E _C23 + E _C24 + E _C25 + E _C26 + E _C27 + E _C28 + E _C29 + E _C30 + E _C31 + E _C32 + E _C33 + E _C34 + E _C35 + E _C36 + E _C37 + E _C38 + E _C39 + E _C40 + E _C41 + E _C42 + E _C43 + E _C44 + E _C45 + E _C46 + E _C47 + E _C48 + E _C49 + E _C50 + E _C51 + E _C52 + E _C53 + E _C54 + E _C55 + E _C56 + E _C57 + E _C58 + E _C59 + E _C60 + E _C61 + E _C62 + E _C63 + E _C64 + E _C65 + E _C66 + E _C67 + E _C68 + E _C69 + E _C70 + E _C71 + E _C72 + E _C73 + E _C74 + E _C75 + E _C76 + E _C77 + E _C78 + E _C79 + E _C80 + E _C81 + E _C82 + E _C83 + E _C84 + E _C85 + E _C86 + E _C87 + E _C88 + E _C89 + E _C90 + E _C91 + E _C92 + E _C93 + E _C94 + E _C95 + E _C96 + E _C97 + E _C98 + E _C99 + E _C100 + E _C101 + E _C102 + E _C103 + E _C104 + E _C105 + E _C106 + E _C107 + E _C108 + E _C109 + E _C110 + E _C111 + E _C112 + E _C113 + E _C114 + E _C115 + E _C116 + E _C117 + E _C118 + E _C119 + E _C120 + E _C121 + E _C122 + E _C123 + E _C124 + E _C125 + E _C126 + E _C127 + E _C128 + E _C129 + E _C130 + E _C131 + E _C132 + E _C133 + E _C134 + E _C135 + E _C136 + E _C137 + E _C138 + E _C139 + E _C140 + E _C141 + E _C142 + E _C143 + E _C144 + E _C145 + E _C146 + E _C147 + E _C148 + E _C149 + E _C150 + E _C151 + E _C152 + E _C153 + E _C154 + E _C155 + E _C156 + E _C157 + E _C158 + E _C159 + E _C160 + E _C161 + E _C162 + E _C163 + E _C164 + E _C165 + E _C166 + E _C167 + E _C168 + E _C169 + E _C170 + E _C171 + E _C172 + E _C173 + E _C174 + E _C175 + E _C176 + E _C177 + E _C178 + E _C179 + E _C180 + E _C181 + E _C182 + E _C183 + E _C184 + E _C185 + E _C186 + E _C187 + E _C188 + E _C189 + E _C190 + E _C191 + E _C192 + E _C193 + E _C194 + E _C195 + E _C196 + E _C197 + E _C198 + E _C199 + E _C200 + E _C201 + E _C202 + E _C203 + E _C204 + E _C205 + E _C206 + E _C207 + E _C208 + E _C209 + E _C210 + E _C211 + E _C212 + E _C213 + E _C214 + E _C215 + E _C216 + E _C217 + E _C218 + E _C219 + E _C220 + E _C221 + E _C222 + E _C223 + E _C224 + E _C225 + E _C226 + E _C227 + E _C228 + E _C229 + E _C230 + E _C231 + E _C232 + E _C233 + E _C234 + E _C235 + E _C236 + E _C237 + E _C238 + E _C239 + E _C240 + E _C241 + E _C242 + E _C243 + E _C244 + E _C245 + E _C246 + E _C247 + E _C248 + E _C249 + E _C250 + E _C251 + E _C252 + E _C253 + E _C254 + E _C255 + E _C256 + E _C257 + E _C258 + E _C259 + E _C260 + E _C261 + E _C262 + E _C263 + E _C264 + E _C265 + E _C266 + E _C267 + E _C268 + E _C269 + E _C270 + E _C271 + E _C272 + E _C273 + E _C274 + E _C275 + E _C276 + E _C277 + E _C278 + E _C279 + E _C280 + E _C281 + E _C282 + E _C283 + E _C284 + E _C285 + E _C286 + E _C287 + E _C288 + E _C289 + E _C290 + E _C291 + E _C292 + E _C293 + E _C294 + E _C295 + E _C296 + E _C297 + E _C298 + E _C299 + E _C300 + E _C301 + E _C302 + E _C303 + E _C304 + E _C305 + E _C306 + E _C307 + E _C308 + E _C309 + E _C310 + E _C311 + E _C312 + E _C313 + E _C314 + E _C315 + E _C316 + E _C317 + E _C318 + E _C319 + E _C320 + E _C321 + E _C322 + E _C323 + E _C324 + E _C325 + E _C326 + E _C327 + E _C328 + E _C329 + E _C330 + E _C331 + E _C332 + E _C333 + E _C334 + E _C335 + E _C336 + E _C337 + E _C338 + E _C339 + E _C340 + E _C341 + E _C342 + E _C343 + E _C344 + E _C345 + E _C346 + E _C347 + E _C348 + E _C349 + E _C350 + E _C351 + E _C352 + E _C353 +COLUMNS + MARK 'MARKER' 'INTORG' + Choice_1_1_1 _C1 1.000000000000e+00 + Choice_1_1_1 _C82 1.000000000000e+00 + Choice_1_1_1 _C91 1.000000000000e+00 + Choice_1_1_1 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_2 _C2 1.000000000000e+00 + Choice_1_1_2 _C82 1.000000000000e+00 + Choice_1_1_2 _C92 1.000000000000e+00 + Choice_1_1_2 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_3 _C3 1.000000000000e+00 + Choice_1_1_3 _C82 1.000000000000e+00 + Choice_1_1_3 _C93 1.000000000000e+00 + Choice_1_1_3 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_4 _C4 1.000000000000e+00 + Choice_1_1_4 _C82 1.000000000000e+00 + Choice_1_1_4 _C94 1.000000000000e+00 + Choice_1_1_4 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_5 _C5 1.000000000000e+00 + Choice_1_1_5 _C82 1.000000000000e+00 + Choice_1_1_5 _C95 1.000000000000e+00 + Choice_1_1_5 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_6 _C6 1.000000000000e+00 + Choice_1_1_6 _C82 1.000000000000e+00 + Choice_1_1_6 _C96 1.000000000000e+00 + Choice_1_1_6 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_7 _C7 1.000000000000e+00 + Choice_1_1_7 _C82 1.000000000000e+00 + Choice_1_1_7 _C97 1.000000000000e+00 + Choice_1_1_7 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_8 _C8 1.000000000000e+00 + Choice_1_1_8 _C82 1.000000000000e+00 + Choice_1_1_8 _C98 1.000000000000e+00 + Choice_1_1_8 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_1_9 _C9 1.000000000000e+00 + Choice_1_1_9 _C82 1.000000000000e+00 + Choice_1_1_9 _C99 1.000000000000e+00 + Choice_1_1_9 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_1 _C10 1.000000000000e+00 + Choice_1_2_1 _C83 1.000000000000e+00 + Choice_1_2_1 _C91 1.000000000000e+00 + Choice_1_2_1 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_2 _C11 1.000000000000e+00 + Choice_1_2_2 _C83 1.000000000000e+00 + Choice_1_2_2 _C92 1.000000000000e+00 + Choice_1_2_2 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_3 _C12 1.000000000000e+00 + Choice_1_2_3 _C83 1.000000000000e+00 + Choice_1_2_3 _C93 1.000000000000e+00 + Choice_1_2_3 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_4 _C13 1.000000000000e+00 + Choice_1_2_4 _C83 1.000000000000e+00 + Choice_1_2_4 _C94 1.000000000000e+00 + Choice_1_2_4 _C101 1.000000000000e+00 + Choice_1_2_4 _C334 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_5 _C14 1.000000000000e+00 + Choice_1_2_5 _C83 1.000000000000e+00 + Choice_1_2_5 _C95 1.000000000000e+00 + Choice_1_2_5 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_6 _C15 1.000000000000e+00 + Choice_1_2_6 _C83 1.000000000000e+00 + Choice_1_2_6 _C96 1.000000000000e+00 + Choice_1_2_6 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_7 _C16 1.000000000000e+00 + Choice_1_2_7 _C83 1.000000000000e+00 + Choice_1_2_7 _C97 1.000000000000e+00 + Choice_1_2_7 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_8 _C17 1.000000000000e+00 + Choice_1_2_8 _C83 1.000000000000e+00 + Choice_1_2_8 _C98 1.000000000000e+00 + Choice_1_2_8 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_2_9 _C18 1.000000000000e+00 + Choice_1_2_9 _C83 1.000000000000e+00 + Choice_1_2_9 _C99 1.000000000000e+00 + Choice_1_2_9 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_1 _C19 1.000000000000e+00 + Choice_1_3_1 _C84 1.000000000000e+00 + Choice_1_3_1 _C91 1.000000000000e+00 + Choice_1_3_1 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_2 _C20 1.000000000000e+00 + Choice_1_3_2 _C84 1.000000000000e+00 + Choice_1_3_2 _C92 1.000000000000e+00 + Choice_1_3_2 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_3 _C21 1.000000000000e+00 + Choice_1_3_3 _C84 1.000000000000e+00 + Choice_1_3_3 _C93 1.000000000000e+00 + Choice_1_3_3 _C100 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_4 _C22 1.000000000000e+00 + Choice_1_3_4 _C84 1.000000000000e+00 + Choice_1_3_4 _C94 1.000000000000e+00 + Choice_1_3_4 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_5 _C23 1.000000000000e+00 + Choice_1_3_5 _C84 1.000000000000e+00 + Choice_1_3_5 _C95 1.000000000000e+00 + Choice_1_3_5 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_6 _C24 1.000000000000e+00 + Choice_1_3_6 _C84 1.000000000000e+00 + Choice_1_3_6 _C96 1.000000000000e+00 + Choice_1_3_6 _C101 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_7 _C25 1.000000000000e+00 + Choice_1_3_7 _C84 1.000000000000e+00 + Choice_1_3_7 _C97 1.000000000000e+00 + Choice_1_3_7 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_8 _C26 1.000000000000e+00 + Choice_1_3_8 _C84 1.000000000000e+00 + Choice_1_3_8 _C98 1.000000000000e+00 + Choice_1_3_8 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_3_9 _C27 1.000000000000e+00 + Choice_1_3_9 _C84 1.000000000000e+00 + Choice_1_3_9 _C99 1.000000000000e+00 + Choice_1_3_9 _C102 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_1 _C28 1.000000000000e+00 + Choice_1_4_1 _C85 1.000000000000e+00 + Choice_1_4_1 _C91 1.000000000000e+00 + Choice_1_4_1 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_2 _C29 1.000000000000e+00 + Choice_1_4_2 _C85 1.000000000000e+00 + Choice_1_4_2 _C92 1.000000000000e+00 + Choice_1_4_2 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_3 _C30 1.000000000000e+00 + Choice_1_4_3 _C85 1.000000000000e+00 + Choice_1_4_3 _C93 1.000000000000e+00 + Choice_1_4_3 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_4 _C31 1.000000000000e+00 + Choice_1_4_4 _C85 1.000000000000e+00 + Choice_1_4_4 _C94 1.000000000000e+00 + Choice_1_4_4 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_5 _C32 1.000000000000e+00 + Choice_1_4_5 _C85 1.000000000000e+00 + Choice_1_4_5 _C95 1.000000000000e+00 + Choice_1_4_5 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_6 _C33 1.000000000000e+00 + Choice_1_4_6 _C85 1.000000000000e+00 + Choice_1_4_6 _C96 1.000000000000e+00 + Choice_1_4_6 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_7 _C34 1.000000000000e+00 + Choice_1_4_7 _C85 1.000000000000e+00 + Choice_1_4_7 _C97 1.000000000000e+00 + Choice_1_4_7 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_8 _C35 1.000000000000e+00 + Choice_1_4_8 _C85 1.000000000000e+00 + Choice_1_4_8 _C98 1.000000000000e+00 + Choice_1_4_8 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_4_9 _C36 1.000000000000e+00 + Choice_1_4_9 _C85 1.000000000000e+00 + Choice_1_4_9 _C99 1.000000000000e+00 + Choice_1_4_9 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_1 _C37 1.000000000000e+00 + Choice_1_5_1 _C86 1.000000000000e+00 + Choice_1_5_1 _C91 1.000000000000e+00 + Choice_1_5_1 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_2 _C38 1.000000000000e+00 + Choice_1_5_2 _C86 1.000000000000e+00 + Choice_1_5_2 _C92 1.000000000000e+00 + Choice_1_5_2 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_3 _C39 1.000000000000e+00 + Choice_1_5_3 _C86 1.000000000000e+00 + Choice_1_5_3 _C93 1.000000000000e+00 + Choice_1_5_3 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_4 _C40 1.000000000000e+00 + Choice_1_5_4 _C86 1.000000000000e+00 + Choice_1_5_4 _C94 1.000000000000e+00 + Choice_1_5_4 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_5 _C41 1.000000000000e+00 + Choice_1_5_5 _C86 1.000000000000e+00 + Choice_1_5_5 _C95 1.000000000000e+00 + Choice_1_5_5 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_6 _C42 1.000000000000e+00 + Choice_1_5_6 _C86 1.000000000000e+00 + Choice_1_5_6 _C96 1.000000000000e+00 + Choice_1_5_6 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_7 _C43 1.000000000000e+00 + Choice_1_5_7 _C86 1.000000000000e+00 + Choice_1_5_7 _C97 1.000000000000e+00 + Choice_1_5_7 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_8 _C44 1.000000000000e+00 + Choice_1_5_8 _C86 1.000000000000e+00 + Choice_1_5_8 _C98 1.000000000000e+00 + Choice_1_5_8 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_5_9 _C45 1.000000000000e+00 + Choice_1_5_9 _C86 1.000000000000e+00 + Choice_1_5_9 _C99 1.000000000000e+00 + Choice_1_5_9 _C105 1.000000000000e+00 + Choice_1_5_9 _C351 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_1 _C46 1.000000000000e+00 + Choice_1_6_1 _C87 1.000000000000e+00 + Choice_1_6_1 _C91 1.000000000000e+00 + Choice_1_6_1 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_2 _C47 1.000000000000e+00 + Choice_1_6_2 _C87 1.000000000000e+00 + Choice_1_6_2 _C92 1.000000000000e+00 + Choice_1_6_2 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_3 _C48 1.000000000000e+00 + Choice_1_6_3 _C87 1.000000000000e+00 + Choice_1_6_3 _C93 1.000000000000e+00 + Choice_1_6_3 _C103 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_4 _C49 1.000000000000e+00 + Choice_1_6_4 _C87 1.000000000000e+00 + Choice_1_6_4 _C94 1.000000000000e+00 + Choice_1_6_4 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_5 _C50 1.000000000000e+00 + Choice_1_6_5 _C87 1.000000000000e+00 + Choice_1_6_5 _C95 1.000000000000e+00 + Choice_1_6_5 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_6 _C51 1.000000000000e+00 + Choice_1_6_6 _C87 1.000000000000e+00 + Choice_1_6_6 _C96 1.000000000000e+00 + Choice_1_6_6 _C104 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_7 _C52 1.000000000000e+00 + Choice_1_6_7 _C87 1.000000000000e+00 + Choice_1_6_7 _C97 1.000000000000e+00 + Choice_1_6_7 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_8 _C53 1.000000000000e+00 + Choice_1_6_8 _C87 1.000000000000e+00 + Choice_1_6_8 _C98 1.000000000000e+00 + Choice_1_6_8 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_6_9 _C54 1.000000000000e+00 + Choice_1_6_9 _C87 1.000000000000e+00 + Choice_1_6_9 _C99 1.000000000000e+00 + Choice_1_6_9 _C105 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_1 _C55 1.000000000000e+00 + Choice_1_7_1 _C88 1.000000000000e+00 + Choice_1_7_1 _C91 1.000000000000e+00 + Choice_1_7_1 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_2 _C56 1.000000000000e+00 + Choice_1_7_2 _C88 1.000000000000e+00 + Choice_1_7_2 _C92 1.000000000000e+00 + Choice_1_7_2 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_3 _C57 1.000000000000e+00 + Choice_1_7_3 _C88 1.000000000000e+00 + Choice_1_7_3 _C93 1.000000000000e+00 + Choice_1_7_3 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_4 _C58 1.000000000000e+00 + Choice_1_7_4 _C88 1.000000000000e+00 + Choice_1_7_4 _C94 1.000000000000e+00 + Choice_1_7_4 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_5 _C59 1.000000000000e+00 + Choice_1_7_5 _C88 1.000000000000e+00 + Choice_1_7_5 _C95 1.000000000000e+00 + Choice_1_7_5 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_6 _C60 1.000000000000e+00 + Choice_1_7_6 _C88 1.000000000000e+00 + Choice_1_7_6 _C96 1.000000000000e+00 + Choice_1_7_6 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_7 _C61 1.000000000000e+00 + Choice_1_7_7 _C88 1.000000000000e+00 + Choice_1_7_7 _C97 1.000000000000e+00 + Choice_1_7_7 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_8 _C62 1.000000000000e+00 + Choice_1_7_8 _C88 1.000000000000e+00 + Choice_1_7_8 _C98 1.000000000000e+00 + Choice_1_7_8 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_7_9 _C63 1.000000000000e+00 + Choice_1_7_9 _C88 1.000000000000e+00 + Choice_1_7_9 _C99 1.000000000000e+00 + Choice_1_7_9 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_1 _C64 1.000000000000e+00 + Choice_1_8_1 _C89 1.000000000000e+00 + Choice_1_8_1 _C91 1.000000000000e+00 + Choice_1_8_1 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_2 _C65 1.000000000000e+00 + Choice_1_8_2 _C89 1.000000000000e+00 + Choice_1_8_2 _C92 1.000000000000e+00 + Choice_1_8_2 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_3 _C66 1.000000000000e+00 + Choice_1_8_3 _C89 1.000000000000e+00 + Choice_1_8_3 _C93 1.000000000000e+00 + Choice_1_8_3 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_4 _C67 1.000000000000e+00 + Choice_1_8_4 _C89 1.000000000000e+00 + Choice_1_8_4 _C94 1.000000000000e+00 + Choice_1_8_4 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_5 _C68 1.000000000000e+00 + Choice_1_8_5 _C89 1.000000000000e+00 + Choice_1_8_5 _C95 1.000000000000e+00 + Choice_1_8_5 _C107 1.000000000000e+00 + Choice_1_8_5 _C341 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_6 _C69 1.000000000000e+00 + Choice_1_8_6 _C89 1.000000000000e+00 + Choice_1_8_6 _C96 1.000000000000e+00 + Choice_1_8_6 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_7 _C70 1.000000000000e+00 + Choice_1_8_7 _C89 1.000000000000e+00 + Choice_1_8_7 _C97 1.000000000000e+00 + Choice_1_8_7 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_8 _C71 1.000000000000e+00 + Choice_1_8_8 _C89 1.000000000000e+00 + Choice_1_8_8 _C98 1.000000000000e+00 + Choice_1_8_8 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_8_9 _C72 1.000000000000e+00 + Choice_1_8_9 _C89 1.000000000000e+00 + Choice_1_8_9 _C99 1.000000000000e+00 + Choice_1_8_9 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_1 _C73 1.000000000000e+00 + Choice_1_9_1 _C90 1.000000000000e+00 + Choice_1_9_1 _C91 1.000000000000e+00 + Choice_1_9_1 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_2 _C74 1.000000000000e+00 + Choice_1_9_2 _C90 1.000000000000e+00 + Choice_1_9_2 _C92 1.000000000000e+00 + Choice_1_9_2 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_3 _C75 1.000000000000e+00 + Choice_1_9_3 _C90 1.000000000000e+00 + Choice_1_9_3 _C93 1.000000000000e+00 + Choice_1_9_3 _C106 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_4 _C76 1.000000000000e+00 + Choice_1_9_4 _C90 1.000000000000e+00 + Choice_1_9_4 _C94 1.000000000000e+00 + Choice_1_9_4 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_5 _C77 1.000000000000e+00 + Choice_1_9_5 _C90 1.000000000000e+00 + Choice_1_9_5 _C95 1.000000000000e+00 + Choice_1_9_5 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_6 _C78 1.000000000000e+00 + Choice_1_9_6 _C90 1.000000000000e+00 + Choice_1_9_6 _C96 1.000000000000e+00 + Choice_1_9_6 _C107 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_7 _C79 1.000000000000e+00 + Choice_1_9_7 _C90 1.000000000000e+00 + Choice_1_9_7 _C97 1.000000000000e+00 + Choice_1_9_7 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_8 _C80 1.000000000000e+00 + Choice_1_9_8 _C90 1.000000000000e+00 + Choice_1_9_8 _C98 1.000000000000e+00 + Choice_1_9_8 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_1_9_9 _C81 1.000000000000e+00 + Choice_1_9_9 _C90 1.000000000000e+00 + Choice_1_9_9 _C99 1.000000000000e+00 + Choice_1_9_9 _C108 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_1 _C1 1.000000000000e+00 + Choice_2_1_1 _C109 1.000000000000e+00 + Choice_2_1_1 _C118 1.000000000000e+00 + Choice_2_1_1 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_2 _C2 1.000000000000e+00 + Choice_2_1_2 _C109 1.000000000000e+00 + Choice_2_1_2 _C119 1.000000000000e+00 + Choice_2_1_2 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_3 _C3 1.000000000000e+00 + Choice_2_1_3 _C109 1.000000000000e+00 + Choice_2_1_3 _C120 1.000000000000e+00 + Choice_2_1_3 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_4 _C4 1.000000000000e+00 + Choice_2_1_4 _C109 1.000000000000e+00 + Choice_2_1_4 _C121 1.000000000000e+00 + Choice_2_1_4 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_5 _C5 1.000000000000e+00 + Choice_2_1_5 _C109 1.000000000000e+00 + Choice_2_1_5 _C122 1.000000000000e+00 + Choice_2_1_5 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_6 _C6 1.000000000000e+00 + Choice_2_1_6 _C109 1.000000000000e+00 + Choice_2_1_6 _C123 1.000000000000e+00 + Choice_2_1_6 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_7 _C7 1.000000000000e+00 + Choice_2_1_7 _C109 1.000000000000e+00 + Choice_2_1_7 _C124 1.000000000000e+00 + Choice_2_1_7 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_8 _C8 1.000000000000e+00 + Choice_2_1_8 _C109 1.000000000000e+00 + Choice_2_1_8 _C125 1.000000000000e+00 + Choice_2_1_8 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_1_9 _C9 1.000000000000e+00 + Choice_2_1_9 _C109 1.000000000000e+00 + Choice_2_1_9 _C126 1.000000000000e+00 + Choice_2_1_9 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_1 _C10 1.000000000000e+00 + Choice_2_2_1 _C110 1.000000000000e+00 + Choice_2_2_1 _C118 1.000000000000e+00 + Choice_2_2_1 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_2 _C11 1.000000000000e+00 + Choice_2_2_2 _C110 1.000000000000e+00 + Choice_2_2_2 _C119 1.000000000000e+00 + Choice_2_2_2 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_3 _C12 1.000000000000e+00 + Choice_2_2_3 _C110 1.000000000000e+00 + Choice_2_2_3 _C120 1.000000000000e+00 + Choice_2_2_3 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_4 _C13 1.000000000000e+00 + Choice_2_2_4 _C110 1.000000000000e+00 + Choice_2_2_4 _C121 1.000000000000e+00 + Choice_2_2_4 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_5 _C14 1.000000000000e+00 + Choice_2_2_5 _C110 1.000000000000e+00 + Choice_2_2_5 _C122 1.000000000000e+00 + Choice_2_2_5 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_6 _C15 1.000000000000e+00 + Choice_2_2_6 _C110 1.000000000000e+00 + Choice_2_2_6 _C123 1.000000000000e+00 + Choice_2_2_6 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_7 _C16 1.000000000000e+00 + Choice_2_2_7 _C110 1.000000000000e+00 + Choice_2_2_7 _C124 1.000000000000e+00 + Choice_2_2_7 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_8 _C17 1.000000000000e+00 + Choice_2_2_8 _C110 1.000000000000e+00 + Choice_2_2_8 _C125 1.000000000000e+00 + Choice_2_2_8 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_2_9 _C18 1.000000000000e+00 + Choice_2_2_9 _C110 1.000000000000e+00 + Choice_2_2_9 _C126 1.000000000000e+00 + Choice_2_2_9 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_1 _C19 1.000000000000e+00 + Choice_2_3_1 _C111 1.000000000000e+00 + Choice_2_3_1 _C118 1.000000000000e+00 + Choice_2_3_1 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_2 _C20 1.000000000000e+00 + Choice_2_3_2 _C111 1.000000000000e+00 + Choice_2_3_2 _C119 1.000000000000e+00 + Choice_2_3_2 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_3 _C21 1.000000000000e+00 + Choice_2_3_3 _C111 1.000000000000e+00 + Choice_2_3_3 _C120 1.000000000000e+00 + Choice_2_3_3 _C127 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_4 _C22 1.000000000000e+00 + Choice_2_3_4 _C111 1.000000000000e+00 + Choice_2_3_4 _C121 1.000000000000e+00 + Choice_2_3_4 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_5 _C23 1.000000000000e+00 + Choice_2_3_5 _C111 1.000000000000e+00 + Choice_2_3_5 _C122 1.000000000000e+00 + Choice_2_3_5 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_6 _C24 1.000000000000e+00 + Choice_2_3_6 _C111 1.000000000000e+00 + Choice_2_3_6 _C123 1.000000000000e+00 + Choice_2_3_6 _C128 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_7 _C25 1.000000000000e+00 + Choice_2_3_7 _C111 1.000000000000e+00 + Choice_2_3_7 _C124 1.000000000000e+00 + Choice_2_3_7 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_8 _C26 1.000000000000e+00 + Choice_2_3_8 _C111 1.000000000000e+00 + Choice_2_3_8 _C125 1.000000000000e+00 + Choice_2_3_8 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_3_9 _C27 1.000000000000e+00 + Choice_2_3_9 _C111 1.000000000000e+00 + Choice_2_3_9 _C126 1.000000000000e+00 + Choice_2_3_9 _C129 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_1 _C28 1.000000000000e+00 + Choice_2_4_1 _C112 1.000000000000e+00 + Choice_2_4_1 _C118 1.000000000000e+00 + Choice_2_4_1 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_2 _C29 1.000000000000e+00 + Choice_2_4_2 _C112 1.000000000000e+00 + Choice_2_4_2 _C119 1.000000000000e+00 + Choice_2_4_2 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_3 _C30 1.000000000000e+00 + Choice_2_4_3 _C112 1.000000000000e+00 + Choice_2_4_3 _C120 1.000000000000e+00 + Choice_2_4_3 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_4 _C31 1.000000000000e+00 + Choice_2_4_4 _C112 1.000000000000e+00 + Choice_2_4_4 _C121 1.000000000000e+00 + Choice_2_4_4 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_5 _C32 1.000000000000e+00 + Choice_2_4_5 _C112 1.000000000000e+00 + Choice_2_4_5 _C122 1.000000000000e+00 + Choice_2_4_5 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_6 _C33 1.000000000000e+00 + Choice_2_4_6 _C112 1.000000000000e+00 + Choice_2_4_6 _C123 1.000000000000e+00 + Choice_2_4_6 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_7 _C34 1.000000000000e+00 + Choice_2_4_7 _C112 1.000000000000e+00 + Choice_2_4_7 _C124 1.000000000000e+00 + Choice_2_4_7 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_8 _C35 1.000000000000e+00 + Choice_2_4_8 _C112 1.000000000000e+00 + Choice_2_4_8 _C125 1.000000000000e+00 + Choice_2_4_8 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_4_9 _C36 1.000000000000e+00 + Choice_2_4_9 _C112 1.000000000000e+00 + Choice_2_4_9 _C126 1.000000000000e+00 + Choice_2_4_9 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_1 _C37 1.000000000000e+00 + Choice_2_5_1 _C113 1.000000000000e+00 + Choice_2_5_1 _C118 1.000000000000e+00 + Choice_2_5_1 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_2 _C38 1.000000000000e+00 + Choice_2_5_2 _C113 1.000000000000e+00 + Choice_2_5_2 _C119 1.000000000000e+00 + Choice_2_5_2 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_3 _C39 1.000000000000e+00 + Choice_2_5_3 _C113 1.000000000000e+00 + Choice_2_5_3 _C120 1.000000000000e+00 + Choice_2_5_3 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_4 _C40 1.000000000000e+00 + Choice_2_5_4 _C113 1.000000000000e+00 + Choice_2_5_4 _C121 1.000000000000e+00 + Choice_2_5_4 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_5 _C41 1.000000000000e+00 + Choice_2_5_5 _C113 1.000000000000e+00 + Choice_2_5_5 _C122 1.000000000000e+00 + Choice_2_5_5 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_6 _C42 1.000000000000e+00 + Choice_2_5_6 _C113 1.000000000000e+00 + Choice_2_5_6 _C123 1.000000000000e+00 + Choice_2_5_6 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_7 _C43 1.000000000000e+00 + Choice_2_5_7 _C113 1.000000000000e+00 + Choice_2_5_7 _C124 1.000000000000e+00 + Choice_2_5_7 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_8 _C44 1.000000000000e+00 + Choice_2_5_8 _C113 1.000000000000e+00 + Choice_2_5_8 _C125 1.000000000000e+00 + Choice_2_5_8 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_5_9 _C45 1.000000000000e+00 + Choice_2_5_9 _C113 1.000000000000e+00 + Choice_2_5_9 _C126 1.000000000000e+00 + Choice_2_5_9 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_1 _C46 1.000000000000e+00 + Choice_2_6_1 _C114 1.000000000000e+00 + Choice_2_6_1 _C118 1.000000000000e+00 + Choice_2_6_1 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_2 _C47 1.000000000000e+00 + Choice_2_6_2 _C114 1.000000000000e+00 + Choice_2_6_2 _C119 1.000000000000e+00 + Choice_2_6_2 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_3 _C48 1.000000000000e+00 + Choice_2_6_3 _C114 1.000000000000e+00 + Choice_2_6_3 _C120 1.000000000000e+00 + Choice_2_6_3 _C130 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_4 _C49 1.000000000000e+00 + Choice_2_6_4 _C114 1.000000000000e+00 + Choice_2_6_4 _C121 1.000000000000e+00 + Choice_2_6_4 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_5 _C50 1.000000000000e+00 + Choice_2_6_5 _C114 1.000000000000e+00 + Choice_2_6_5 _C122 1.000000000000e+00 + Choice_2_6_5 _C131 1.000000000000e+00 + Choice_2_6_5 _C340 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_6 _C51 1.000000000000e+00 + Choice_2_6_6 _C114 1.000000000000e+00 + Choice_2_6_6 _C123 1.000000000000e+00 + Choice_2_6_6 _C131 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_7 _C52 1.000000000000e+00 + Choice_2_6_7 _C114 1.000000000000e+00 + Choice_2_6_7 _C124 1.000000000000e+00 + Choice_2_6_7 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_8 _C53 1.000000000000e+00 + Choice_2_6_8 _C114 1.000000000000e+00 + Choice_2_6_8 _C125 1.000000000000e+00 + Choice_2_6_8 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_6_9 _C54 1.000000000000e+00 + Choice_2_6_9 _C114 1.000000000000e+00 + Choice_2_6_9 _C126 1.000000000000e+00 + Choice_2_6_9 _C132 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_1 _C55 1.000000000000e+00 + Choice_2_7_1 _C115 1.000000000000e+00 + Choice_2_7_1 _C118 1.000000000000e+00 + Choice_2_7_1 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_2 _C56 1.000000000000e+00 + Choice_2_7_2 _C115 1.000000000000e+00 + Choice_2_7_2 _C119 1.000000000000e+00 + Choice_2_7_2 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_3 _C57 1.000000000000e+00 + Choice_2_7_3 _C115 1.000000000000e+00 + Choice_2_7_3 _C120 1.000000000000e+00 + Choice_2_7_3 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_4 _C58 1.000000000000e+00 + Choice_2_7_4 _C115 1.000000000000e+00 + Choice_2_7_4 _C121 1.000000000000e+00 + Choice_2_7_4 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_5 _C59 1.000000000000e+00 + Choice_2_7_5 _C115 1.000000000000e+00 + Choice_2_7_5 _C122 1.000000000000e+00 + Choice_2_7_5 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_6 _C60 1.000000000000e+00 + Choice_2_7_6 _C115 1.000000000000e+00 + Choice_2_7_6 _C123 1.000000000000e+00 + Choice_2_7_6 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_7 _C61 1.000000000000e+00 + Choice_2_7_7 _C115 1.000000000000e+00 + Choice_2_7_7 _C124 1.000000000000e+00 + Choice_2_7_7 _C135 1.000000000000e+00 + Choice_2_7_7 _C346 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_8 _C62 1.000000000000e+00 + Choice_2_7_8 _C115 1.000000000000e+00 + Choice_2_7_8 _C125 1.000000000000e+00 + Choice_2_7_8 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_7_9 _C63 1.000000000000e+00 + Choice_2_7_9 _C115 1.000000000000e+00 + Choice_2_7_9 _C126 1.000000000000e+00 + Choice_2_7_9 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_1 _C64 1.000000000000e+00 + Choice_2_8_1 _C116 1.000000000000e+00 + Choice_2_8_1 _C118 1.000000000000e+00 + Choice_2_8_1 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_2 _C65 1.000000000000e+00 + Choice_2_8_2 _C116 1.000000000000e+00 + Choice_2_8_2 _C119 1.000000000000e+00 + Choice_2_8_2 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_3 _C66 1.000000000000e+00 + Choice_2_8_3 _C116 1.000000000000e+00 + Choice_2_8_3 _C120 1.000000000000e+00 + Choice_2_8_3 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_4 _C67 1.000000000000e+00 + Choice_2_8_4 _C116 1.000000000000e+00 + Choice_2_8_4 _C121 1.000000000000e+00 + Choice_2_8_4 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_5 _C68 1.000000000000e+00 + Choice_2_8_5 _C116 1.000000000000e+00 + Choice_2_8_5 _C122 1.000000000000e+00 + Choice_2_8_5 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_6 _C69 1.000000000000e+00 + Choice_2_8_6 _C116 1.000000000000e+00 + Choice_2_8_6 _C123 1.000000000000e+00 + Choice_2_8_6 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_7 _C70 1.000000000000e+00 + Choice_2_8_7 _C116 1.000000000000e+00 + Choice_2_8_7 _C124 1.000000000000e+00 + Choice_2_8_7 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_8 _C71 1.000000000000e+00 + Choice_2_8_8 _C116 1.000000000000e+00 + Choice_2_8_8 _C125 1.000000000000e+00 + Choice_2_8_8 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_8_9 _C72 1.000000000000e+00 + Choice_2_8_9 _C116 1.000000000000e+00 + Choice_2_8_9 _C126 1.000000000000e+00 + Choice_2_8_9 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_1 _C73 1.000000000000e+00 + Choice_2_9_1 _C117 1.000000000000e+00 + Choice_2_9_1 _C118 1.000000000000e+00 + Choice_2_9_1 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_2 _C74 1.000000000000e+00 + Choice_2_9_2 _C117 1.000000000000e+00 + Choice_2_9_2 _C119 1.000000000000e+00 + Choice_2_9_2 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_3 _C75 1.000000000000e+00 + Choice_2_9_3 _C117 1.000000000000e+00 + Choice_2_9_3 _C120 1.000000000000e+00 + Choice_2_9_3 _C133 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_4 _C76 1.000000000000e+00 + Choice_2_9_4 _C117 1.000000000000e+00 + Choice_2_9_4 _C121 1.000000000000e+00 + Choice_2_9_4 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_5 _C77 1.000000000000e+00 + Choice_2_9_5 _C117 1.000000000000e+00 + Choice_2_9_5 _C122 1.000000000000e+00 + Choice_2_9_5 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_6 _C78 1.000000000000e+00 + Choice_2_9_6 _C117 1.000000000000e+00 + Choice_2_9_6 _C123 1.000000000000e+00 + Choice_2_9_6 _C134 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_7 _C79 1.000000000000e+00 + Choice_2_9_7 _C117 1.000000000000e+00 + Choice_2_9_7 _C124 1.000000000000e+00 + Choice_2_9_7 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_8 _C80 1.000000000000e+00 + Choice_2_9_8 _C117 1.000000000000e+00 + Choice_2_9_8 _C125 1.000000000000e+00 + Choice_2_9_8 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_2_9_9 _C81 1.000000000000e+00 + Choice_2_9_9 _C117 1.000000000000e+00 + Choice_2_9_9 _C126 1.000000000000e+00 + Choice_2_9_9 _C135 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_1 _C1 1.000000000000e+00 + Choice_3_1_1 _C136 1.000000000000e+00 + Choice_3_1_1 _C145 1.000000000000e+00 + Choice_3_1_1 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_2 _C2 1.000000000000e+00 + Choice_3_1_2 _C136 1.000000000000e+00 + Choice_3_1_2 _C146 1.000000000000e+00 + Choice_3_1_2 _C154 1.000000000000e+00 + Choice_3_1_2 _C330 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_3 _C3 1.000000000000e+00 + Choice_3_1_3 _C136 1.000000000000e+00 + Choice_3_1_3 _C147 1.000000000000e+00 + Choice_3_1_3 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_4 _C4 1.000000000000e+00 + Choice_3_1_4 _C136 1.000000000000e+00 + Choice_3_1_4 _C148 1.000000000000e+00 + Choice_3_1_4 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_5 _C5 1.000000000000e+00 + Choice_3_1_5 _C136 1.000000000000e+00 + Choice_3_1_5 _C149 1.000000000000e+00 + Choice_3_1_5 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_6 _C6 1.000000000000e+00 + Choice_3_1_6 _C136 1.000000000000e+00 + Choice_3_1_6 _C150 1.000000000000e+00 + Choice_3_1_6 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_7 _C7 1.000000000000e+00 + Choice_3_1_7 _C136 1.000000000000e+00 + Choice_3_1_7 _C151 1.000000000000e+00 + Choice_3_1_7 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_8 _C8 1.000000000000e+00 + Choice_3_1_8 _C136 1.000000000000e+00 + Choice_3_1_8 _C152 1.000000000000e+00 + Choice_3_1_8 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_1_9 _C9 1.000000000000e+00 + Choice_3_1_9 _C136 1.000000000000e+00 + Choice_3_1_9 _C153 1.000000000000e+00 + Choice_3_1_9 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_1 _C10 1.000000000000e+00 + Choice_3_2_1 _C137 1.000000000000e+00 + Choice_3_2_1 _C145 1.000000000000e+00 + Choice_3_2_1 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_2 _C11 1.000000000000e+00 + Choice_3_2_2 _C137 1.000000000000e+00 + Choice_3_2_2 _C146 1.000000000000e+00 + Choice_3_2_2 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_3 _C12 1.000000000000e+00 + Choice_3_2_3 _C137 1.000000000000e+00 + Choice_3_2_3 _C147 1.000000000000e+00 + Choice_3_2_3 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_4 _C13 1.000000000000e+00 + Choice_3_2_4 _C137 1.000000000000e+00 + Choice_3_2_4 _C148 1.000000000000e+00 + Choice_3_2_4 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_5 _C14 1.000000000000e+00 + Choice_3_2_5 _C137 1.000000000000e+00 + Choice_3_2_5 _C149 1.000000000000e+00 + Choice_3_2_5 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_6 _C15 1.000000000000e+00 + Choice_3_2_6 _C137 1.000000000000e+00 + Choice_3_2_6 _C150 1.000000000000e+00 + Choice_3_2_6 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_7 _C16 1.000000000000e+00 + Choice_3_2_7 _C137 1.000000000000e+00 + Choice_3_2_7 _C151 1.000000000000e+00 + Choice_3_2_7 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_8 _C17 1.000000000000e+00 + Choice_3_2_8 _C137 1.000000000000e+00 + Choice_3_2_8 _C152 1.000000000000e+00 + Choice_3_2_8 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_2_9 _C18 1.000000000000e+00 + Choice_3_2_9 _C137 1.000000000000e+00 + Choice_3_2_9 _C153 1.000000000000e+00 + Choice_3_2_9 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_1 _C19 1.000000000000e+00 + Choice_3_3_1 _C138 1.000000000000e+00 + Choice_3_3_1 _C145 1.000000000000e+00 + Choice_3_3_1 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_2 _C20 1.000000000000e+00 + Choice_3_3_2 _C138 1.000000000000e+00 + Choice_3_3_2 _C146 1.000000000000e+00 + Choice_3_3_2 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_3 _C21 1.000000000000e+00 + Choice_3_3_3 _C138 1.000000000000e+00 + Choice_3_3_3 _C147 1.000000000000e+00 + Choice_3_3_3 _C154 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_4 _C22 1.000000000000e+00 + Choice_3_3_4 _C138 1.000000000000e+00 + Choice_3_3_4 _C148 1.000000000000e+00 + Choice_3_3_4 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_5 _C23 1.000000000000e+00 + Choice_3_3_5 _C138 1.000000000000e+00 + Choice_3_3_5 _C149 1.000000000000e+00 + Choice_3_3_5 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_6 _C24 1.000000000000e+00 + Choice_3_3_6 _C138 1.000000000000e+00 + Choice_3_3_6 _C150 1.000000000000e+00 + Choice_3_3_6 _C155 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_7 _C25 1.000000000000e+00 + Choice_3_3_7 _C138 1.000000000000e+00 + Choice_3_3_7 _C151 1.000000000000e+00 + Choice_3_3_7 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_8 _C26 1.000000000000e+00 + Choice_3_3_8 _C138 1.000000000000e+00 + Choice_3_3_8 _C152 1.000000000000e+00 + Choice_3_3_8 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_3_9 _C27 1.000000000000e+00 + Choice_3_3_9 _C138 1.000000000000e+00 + Choice_3_3_9 _C153 1.000000000000e+00 + Choice_3_3_9 _C156 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_1 _C28 1.000000000000e+00 + Choice_3_4_1 _C139 1.000000000000e+00 + Choice_3_4_1 _C145 1.000000000000e+00 + Choice_3_4_1 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_2 _C29 1.000000000000e+00 + Choice_3_4_2 _C139 1.000000000000e+00 + Choice_3_4_2 _C146 1.000000000000e+00 + Choice_3_4_2 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_3 _C30 1.000000000000e+00 + Choice_3_4_3 _C139 1.000000000000e+00 + Choice_3_4_3 _C147 1.000000000000e+00 + Choice_3_4_3 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_4 _C31 1.000000000000e+00 + Choice_3_4_4 _C139 1.000000000000e+00 + Choice_3_4_4 _C148 1.000000000000e+00 + Choice_3_4_4 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_5 _C32 1.000000000000e+00 + Choice_3_4_5 _C139 1.000000000000e+00 + Choice_3_4_5 _C149 1.000000000000e+00 + Choice_3_4_5 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_6 _C33 1.000000000000e+00 + Choice_3_4_6 _C139 1.000000000000e+00 + Choice_3_4_6 _C150 1.000000000000e+00 + Choice_3_4_6 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_7 _C34 1.000000000000e+00 + Choice_3_4_7 _C139 1.000000000000e+00 + Choice_3_4_7 _C151 1.000000000000e+00 + Choice_3_4_7 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_8 _C35 1.000000000000e+00 + Choice_3_4_8 _C139 1.000000000000e+00 + Choice_3_4_8 _C152 1.000000000000e+00 + Choice_3_4_8 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_4_9 _C36 1.000000000000e+00 + Choice_3_4_9 _C139 1.000000000000e+00 + Choice_3_4_9 _C153 1.000000000000e+00 + Choice_3_4_9 _C159 1.000000000000e+00 + Choice_3_4_9 _C350 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_1 _C37 1.000000000000e+00 + Choice_3_5_1 _C140 1.000000000000e+00 + Choice_3_5_1 _C145 1.000000000000e+00 + Choice_3_5_1 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_2 _C38 1.000000000000e+00 + Choice_3_5_2 _C140 1.000000000000e+00 + Choice_3_5_2 _C146 1.000000000000e+00 + Choice_3_5_2 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_3 _C39 1.000000000000e+00 + Choice_3_5_3 _C140 1.000000000000e+00 + Choice_3_5_3 _C147 1.000000000000e+00 + Choice_3_5_3 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_4 _C40 1.000000000000e+00 + Choice_3_5_4 _C140 1.000000000000e+00 + Choice_3_5_4 _C148 1.000000000000e+00 + Choice_3_5_4 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_5 _C41 1.000000000000e+00 + Choice_3_5_5 _C140 1.000000000000e+00 + Choice_3_5_5 _C149 1.000000000000e+00 + Choice_3_5_5 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_6 _C42 1.000000000000e+00 + Choice_3_5_6 _C140 1.000000000000e+00 + Choice_3_5_6 _C150 1.000000000000e+00 + Choice_3_5_6 _C158 1.000000000000e+00 + Choice_3_5_6 _C344 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_7 _C43 1.000000000000e+00 + Choice_3_5_7 _C140 1.000000000000e+00 + Choice_3_5_7 _C151 1.000000000000e+00 + Choice_3_5_7 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_8 _C44 1.000000000000e+00 + Choice_3_5_8 _C140 1.000000000000e+00 + Choice_3_5_8 _C152 1.000000000000e+00 + Choice_3_5_8 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_5_9 _C45 1.000000000000e+00 + Choice_3_5_9 _C140 1.000000000000e+00 + Choice_3_5_9 _C153 1.000000000000e+00 + Choice_3_5_9 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_1 _C46 1.000000000000e+00 + Choice_3_6_1 _C141 1.000000000000e+00 + Choice_3_6_1 _C145 1.000000000000e+00 + Choice_3_6_1 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_2 _C47 1.000000000000e+00 + Choice_3_6_2 _C141 1.000000000000e+00 + Choice_3_6_2 _C146 1.000000000000e+00 + Choice_3_6_2 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_3 _C48 1.000000000000e+00 + Choice_3_6_3 _C141 1.000000000000e+00 + Choice_3_6_3 _C147 1.000000000000e+00 + Choice_3_6_3 _C157 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_4 _C49 1.000000000000e+00 + Choice_3_6_4 _C141 1.000000000000e+00 + Choice_3_6_4 _C148 1.000000000000e+00 + Choice_3_6_4 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_5 _C50 1.000000000000e+00 + Choice_3_6_5 _C141 1.000000000000e+00 + Choice_3_6_5 _C149 1.000000000000e+00 + Choice_3_6_5 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_6 _C51 1.000000000000e+00 + Choice_3_6_6 _C141 1.000000000000e+00 + Choice_3_6_6 _C150 1.000000000000e+00 + Choice_3_6_6 _C158 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_7 _C52 1.000000000000e+00 + Choice_3_6_7 _C141 1.000000000000e+00 + Choice_3_6_7 _C151 1.000000000000e+00 + Choice_3_6_7 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_8 _C53 1.000000000000e+00 + Choice_3_6_8 _C141 1.000000000000e+00 + Choice_3_6_8 _C152 1.000000000000e+00 + Choice_3_6_8 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_6_9 _C54 1.000000000000e+00 + Choice_3_6_9 _C141 1.000000000000e+00 + Choice_3_6_9 _C153 1.000000000000e+00 + Choice_3_6_9 _C159 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_1 _C55 1.000000000000e+00 + Choice_3_7_1 _C142 1.000000000000e+00 + Choice_3_7_1 _C145 1.000000000000e+00 + Choice_3_7_1 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_2 _C56 1.000000000000e+00 + Choice_3_7_2 _C142 1.000000000000e+00 + Choice_3_7_2 _C146 1.000000000000e+00 + Choice_3_7_2 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_3 _C57 1.000000000000e+00 + Choice_3_7_3 _C142 1.000000000000e+00 + Choice_3_7_3 _C147 1.000000000000e+00 + Choice_3_7_3 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_4 _C58 1.000000000000e+00 + Choice_3_7_4 _C142 1.000000000000e+00 + Choice_3_7_4 _C148 1.000000000000e+00 + Choice_3_7_4 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_5 _C59 1.000000000000e+00 + Choice_3_7_5 _C142 1.000000000000e+00 + Choice_3_7_5 _C149 1.000000000000e+00 + Choice_3_7_5 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_6 _C60 1.000000000000e+00 + Choice_3_7_6 _C142 1.000000000000e+00 + Choice_3_7_6 _C150 1.000000000000e+00 + Choice_3_7_6 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_7 _C61 1.000000000000e+00 + Choice_3_7_7 _C142 1.000000000000e+00 + Choice_3_7_7 _C151 1.000000000000e+00 + Choice_3_7_7 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_8 _C62 1.000000000000e+00 + Choice_3_7_8 _C142 1.000000000000e+00 + Choice_3_7_8 _C152 1.000000000000e+00 + Choice_3_7_8 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_7_9 _C63 1.000000000000e+00 + Choice_3_7_9 _C142 1.000000000000e+00 + Choice_3_7_9 _C153 1.000000000000e+00 + Choice_3_7_9 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_1 _C64 1.000000000000e+00 + Choice_3_8_1 _C143 1.000000000000e+00 + Choice_3_8_1 _C145 1.000000000000e+00 + Choice_3_8_1 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_2 _C65 1.000000000000e+00 + Choice_3_8_2 _C143 1.000000000000e+00 + Choice_3_8_2 _C146 1.000000000000e+00 + Choice_3_8_2 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_3 _C66 1.000000000000e+00 + Choice_3_8_3 _C143 1.000000000000e+00 + Choice_3_8_3 _C147 1.000000000000e+00 + Choice_3_8_3 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_4 _C67 1.000000000000e+00 + Choice_3_8_4 _C143 1.000000000000e+00 + Choice_3_8_4 _C148 1.000000000000e+00 + Choice_3_8_4 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_5 _C68 1.000000000000e+00 + Choice_3_8_5 _C143 1.000000000000e+00 + Choice_3_8_5 _C149 1.000000000000e+00 + Choice_3_8_5 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_6 _C69 1.000000000000e+00 + Choice_3_8_6 _C143 1.000000000000e+00 + Choice_3_8_6 _C150 1.000000000000e+00 + Choice_3_8_6 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_7 _C70 1.000000000000e+00 + Choice_3_8_7 _C143 1.000000000000e+00 + Choice_3_8_7 _C151 1.000000000000e+00 + Choice_3_8_7 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_8 _C71 1.000000000000e+00 + Choice_3_8_8 _C143 1.000000000000e+00 + Choice_3_8_8 _C152 1.000000000000e+00 + Choice_3_8_8 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_8_9 _C72 1.000000000000e+00 + Choice_3_8_9 _C143 1.000000000000e+00 + Choice_3_8_9 _C153 1.000000000000e+00 + Choice_3_8_9 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_1 _C73 1.000000000000e+00 + Choice_3_9_1 _C144 1.000000000000e+00 + Choice_3_9_1 _C145 1.000000000000e+00 + Choice_3_9_1 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_2 _C74 1.000000000000e+00 + Choice_3_9_2 _C144 1.000000000000e+00 + Choice_3_9_2 _C146 1.000000000000e+00 + Choice_3_9_2 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_3 _C75 1.000000000000e+00 + Choice_3_9_3 _C144 1.000000000000e+00 + Choice_3_9_3 _C147 1.000000000000e+00 + Choice_3_9_3 _C160 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_4 _C76 1.000000000000e+00 + Choice_3_9_4 _C144 1.000000000000e+00 + Choice_3_9_4 _C148 1.000000000000e+00 + Choice_3_9_4 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_5 _C77 1.000000000000e+00 + Choice_3_9_5 _C144 1.000000000000e+00 + Choice_3_9_5 _C149 1.000000000000e+00 + Choice_3_9_5 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_6 _C78 1.000000000000e+00 + Choice_3_9_6 _C144 1.000000000000e+00 + Choice_3_9_6 _C150 1.000000000000e+00 + Choice_3_9_6 _C161 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_7 _C79 1.000000000000e+00 + Choice_3_9_7 _C144 1.000000000000e+00 + Choice_3_9_7 _C151 1.000000000000e+00 + Choice_3_9_7 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_8 _C80 1.000000000000e+00 + Choice_3_9_8 _C144 1.000000000000e+00 + Choice_3_9_8 _C152 1.000000000000e+00 + Choice_3_9_8 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_3_9_9 _C81 1.000000000000e+00 + Choice_3_9_9 _C144 1.000000000000e+00 + Choice_3_9_9 _C153 1.000000000000e+00 + Choice_3_9_9 _C162 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_1 _C1 1.000000000000e+00 + Choice_4_1_1 _C163 1.000000000000e+00 + Choice_4_1_1 _C172 1.000000000000e+00 + Choice_4_1_1 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_2 _C2 1.000000000000e+00 + Choice_4_1_2 _C163 1.000000000000e+00 + Choice_4_1_2 _C173 1.000000000000e+00 + Choice_4_1_2 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_3 _C3 1.000000000000e+00 + Choice_4_1_3 _C163 1.000000000000e+00 + Choice_4_1_3 _C174 1.000000000000e+00 + Choice_4_1_3 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_4 _C4 1.000000000000e+00 + Choice_4_1_4 _C163 1.000000000000e+00 + Choice_4_1_4 _C175 1.000000000000e+00 + Choice_4_1_4 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_5 _C5 1.000000000000e+00 + Choice_4_1_5 _C163 1.000000000000e+00 + Choice_4_1_5 _C176 1.000000000000e+00 + Choice_4_1_5 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_6 _C6 1.000000000000e+00 + Choice_4_1_6 _C163 1.000000000000e+00 + Choice_4_1_6 _C177 1.000000000000e+00 + Choice_4_1_6 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_7 _C7 1.000000000000e+00 + Choice_4_1_7 _C163 1.000000000000e+00 + Choice_4_1_7 _C178 1.000000000000e+00 + Choice_4_1_7 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_8 _C8 1.000000000000e+00 + Choice_4_1_8 _C163 1.000000000000e+00 + Choice_4_1_8 _C179 1.000000000000e+00 + Choice_4_1_8 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_1_9 _C9 1.000000000000e+00 + Choice_4_1_9 _C163 1.000000000000e+00 + Choice_4_1_9 _C180 1.000000000000e+00 + Choice_4_1_9 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_1 _C10 1.000000000000e+00 + Choice_4_2_1 _C164 1.000000000000e+00 + Choice_4_2_1 _C172 1.000000000000e+00 + Choice_4_2_1 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_2 _C11 1.000000000000e+00 + Choice_4_2_2 _C164 1.000000000000e+00 + Choice_4_2_2 _C173 1.000000000000e+00 + Choice_4_2_2 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_3 _C12 1.000000000000e+00 + Choice_4_2_3 _C164 1.000000000000e+00 + Choice_4_2_3 _C174 1.000000000000e+00 + Choice_4_2_3 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_4 _C13 1.000000000000e+00 + Choice_4_2_4 _C164 1.000000000000e+00 + Choice_4_2_4 _C175 1.000000000000e+00 + Choice_4_2_4 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_5 _C14 1.000000000000e+00 + Choice_4_2_5 _C164 1.000000000000e+00 + Choice_4_2_5 _C176 1.000000000000e+00 + Choice_4_2_5 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_6 _C15 1.000000000000e+00 + Choice_4_2_6 _C164 1.000000000000e+00 + Choice_4_2_6 _C177 1.000000000000e+00 + Choice_4_2_6 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_7 _C16 1.000000000000e+00 + Choice_4_2_7 _C164 1.000000000000e+00 + Choice_4_2_7 _C178 1.000000000000e+00 + Choice_4_2_7 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_8 _C17 1.000000000000e+00 + Choice_4_2_8 _C164 1.000000000000e+00 + Choice_4_2_8 _C179 1.000000000000e+00 + Choice_4_2_8 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_2_9 _C18 1.000000000000e+00 + Choice_4_2_9 _C164 1.000000000000e+00 + Choice_4_2_9 _C180 1.000000000000e+00 + Choice_4_2_9 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_1 _C19 1.000000000000e+00 + Choice_4_3_1 _C165 1.000000000000e+00 + Choice_4_3_1 _C172 1.000000000000e+00 + Choice_4_3_1 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_2 _C20 1.000000000000e+00 + Choice_4_3_2 _C165 1.000000000000e+00 + Choice_4_3_2 _C173 1.000000000000e+00 + Choice_4_3_2 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_3 _C21 1.000000000000e+00 + Choice_4_3_3 _C165 1.000000000000e+00 + Choice_4_3_3 _C174 1.000000000000e+00 + Choice_4_3_3 _C181 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_4 _C22 1.000000000000e+00 + Choice_4_3_4 _C165 1.000000000000e+00 + Choice_4_3_4 _C175 1.000000000000e+00 + Choice_4_3_4 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_5 _C23 1.000000000000e+00 + Choice_4_3_5 _C165 1.000000000000e+00 + Choice_4_3_5 _C176 1.000000000000e+00 + Choice_4_3_5 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_6 _C24 1.000000000000e+00 + Choice_4_3_6 _C165 1.000000000000e+00 + Choice_4_3_6 _C177 1.000000000000e+00 + Choice_4_3_6 _C182 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_7 _C25 1.000000000000e+00 + Choice_4_3_7 _C165 1.000000000000e+00 + Choice_4_3_7 _C178 1.000000000000e+00 + Choice_4_3_7 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_8 _C26 1.000000000000e+00 + Choice_4_3_8 _C165 1.000000000000e+00 + Choice_4_3_8 _C179 1.000000000000e+00 + Choice_4_3_8 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_3_9 _C27 1.000000000000e+00 + Choice_4_3_9 _C165 1.000000000000e+00 + Choice_4_3_9 _C180 1.000000000000e+00 + Choice_4_3_9 _C183 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_1 _C28 1.000000000000e+00 + Choice_4_4_1 _C166 1.000000000000e+00 + Choice_4_4_1 _C172 1.000000000000e+00 + Choice_4_4_1 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_2 _C29 1.000000000000e+00 + Choice_4_4_2 _C166 1.000000000000e+00 + Choice_4_4_2 _C173 1.000000000000e+00 + Choice_4_4_2 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_3 _C30 1.000000000000e+00 + Choice_4_4_3 _C166 1.000000000000e+00 + Choice_4_4_3 _C174 1.000000000000e+00 + Choice_4_4_3 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_4 _C31 1.000000000000e+00 + Choice_4_4_4 _C166 1.000000000000e+00 + Choice_4_4_4 _C175 1.000000000000e+00 + Choice_4_4_4 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_5 _C32 1.000000000000e+00 + Choice_4_4_5 _C166 1.000000000000e+00 + Choice_4_4_5 _C176 1.000000000000e+00 + Choice_4_4_5 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_6 _C33 1.000000000000e+00 + Choice_4_4_6 _C166 1.000000000000e+00 + Choice_4_4_6 _C177 1.000000000000e+00 + Choice_4_4_6 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_7 _C34 1.000000000000e+00 + Choice_4_4_7 _C166 1.000000000000e+00 + Choice_4_4_7 _C178 1.000000000000e+00 + Choice_4_4_7 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_8 _C35 1.000000000000e+00 + Choice_4_4_8 _C166 1.000000000000e+00 + Choice_4_4_8 _C179 1.000000000000e+00 + Choice_4_4_8 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_4_9 _C36 1.000000000000e+00 + Choice_4_4_9 _C166 1.000000000000e+00 + Choice_4_4_9 _C180 1.000000000000e+00 + Choice_4_4_9 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_1 _C37 1.000000000000e+00 + Choice_4_5_1 _C167 1.000000000000e+00 + Choice_4_5_1 _C172 1.000000000000e+00 + Choice_4_5_1 _C184 1.000000000000e+00 + Choice_4_5_1 _C328 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_2 _C38 1.000000000000e+00 + Choice_4_5_2 _C167 1.000000000000e+00 + Choice_4_5_2 _C173 1.000000000000e+00 + Choice_4_5_2 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_3 _C39 1.000000000000e+00 + Choice_4_5_3 _C167 1.000000000000e+00 + Choice_4_5_3 _C174 1.000000000000e+00 + Choice_4_5_3 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_4 _C40 1.000000000000e+00 + Choice_4_5_4 _C167 1.000000000000e+00 + Choice_4_5_4 _C175 1.000000000000e+00 + Choice_4_5_4 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_5 _C41 1.000000000000e+00 + Choice_4_5_5 _C167 1.000000000000e+00 + Choice_4_5_5 _C176 1.000000000000e+00 + Choice_4_5_5 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_6 _C42 1.000000000000e+00 + Choice_4_5_6 _C167 1.000000000000e+00 + Choice_4_5_6 _C177 1.000000000000e+00 + Choice_4_5_6 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_7 _C43 1.000000000000e+00 + Choice_4_5_7 _C167 1.000000000000e+00 + Choice_4_5_7 _C178 1.000000000000e+00 + Choice_4_5_7 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_8 _C44 1.000000000000e+00 + Choice_4_5_8 _C167 1.000000000000e+00 + Choice_4_5_8 _C179 1.000000000000e+00 + Choice_4_5_8 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_5_9 _C45 1.000000000000e+00 + Choice_4_5_9 _C167 1.000000000000e+00 + Choice_4_5_9 _C180 1.000000000000e+00 + Choice_4_5_9 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_1 _C46 1.000000000000e+00 + Choice_4_6_1 _C168 1.000000000000e+00 + Choice_4_6_1 _C172 1.000000000000e+00 + Choice_4_6_1 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_2 _C47 1.000000000000e+00 + Choice_4_6_2 _C168 1.000000000000e+00 + Choice_4_6_2 _C173 1.000000000000e+00 + Choice_4_6_2 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_3 _C48 1.000000000000e+00 + Choice_4_6_3 _C168 1.000000000000e+00 + Choice_4_6_3 _C174 1.000000000000e+00 + Choice_4_6_3 _C184 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_4 _C49 1.000000000000e+00 + Choice_4_6_4 _C168 1.000000000000e+00 + Choice_4_6_4 _C175 1.000000000000e+00 + Choice_4_6_4 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_5 _C50 1.000000000000e+00 + Choice_4_6_5 _C168 1.000000000000e+00 + Choice_4_6_5 _C176 1.000000000000e+00 + Choice_4_6_5 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_6 _C51 1.000000000000e+00 + Choice_4_6_6 _C168 1.000000000000e+00 + Choice_4_6_6 _C177 1.000000000000e+00 + Choice_4_6_6 _C185 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_7 _C52 1.000000000000e+00 + Choice_4_6_7 _C168 1.000000000000e+00 + Choice_4_6_7 _C178 1.000000000000e+00 + Choice_4_6_7 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_8 _C53 1.000000000000e+00 + Choice_4_6_8 _C168 1.000000000000e+00 + Choice_4_6_8 _C179 1.000000000000e+00 + Choice_4_6_8 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_6_9 _C54 1.000000000000e+00 + Choice_4_6_9 _C168 1.000000000000e+00 + Choice_4_6_9 _C180 1.000000000000e+00 + Choice_4_6_9 _C186 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_1 _C55 1.000000000000e+00 + Choice_4_7_1 _C169 1.000000000000e+00 + Choice_4_7_1 _C172 1.000000000000e+00 + Choice_4_7_1 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_2 _C56 1.000000000000e+00 + Choice_4_7_2 _C169 1.000000000000e+00 + Choice_4_7_2 _C173 1.000000000000e+00 + Choice_4_7_2 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_3 _C57 1.000000000000e+00 + Choice_4_7_3 _C169 1.000000000000e+00 + Choice_4_7_3 _C174 1.000000000000e+00 + Choice_4_7_3 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_4 _C58 1.000000000000e+00 + Choice_4_7_4 _C169 1.000000000000e+00 + Choice_4_7_4 _C175 1.000000000000e+00 + Choice_4_7_4 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_5 _C59 1.000000000000e+00 + Choice_4_7_5 _C169 1.000000000000e+00 + Choice_4_7_5 _C176 1.000000000000e+00 + Choice_4_7_5 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_6 _C60 1.000000000000e+00 + Choice_4_7_6 _C169 1.000000000000e+00 + Choice_4_7_6 _C177 1.000000000000e+00 + Choice_4_7_6 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_7 _C61 1.000000000000e+00 + Choice_4_7_7 _C169 1.000000000000e+00 + Choice_4_7_7 _C178 1.000000000000e+00 + Choice_4_7_7 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_8 _C62 1.000000000000e+00 + Choice_4_7_8 _C169 1.000000000000e+00 + Choice_4_7_8 _C179 1.000000000000e+00 + Choice_4_7_8 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_7_9 _C63 1.000000000000e+00 + Choice_4_7_9 _C169 1.000000000000e+00 + Choice_4_7_9 _C180 1.000000000000e+00 + Choice_4_7_9 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_1 _C64 1.000000000000e+00 + Choice_4_8_1 _C170 1.000000000000e+00 + Choice_4_8_1 _C172 1.000000000000e+00 + Choice_4_8_1 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_2 _C65 1.000000000000e+00 + Choice_4_8_2 _C170 1.000000000000e+00 + Choice_4_8_2 _C173 1.000000000000e+00 + Choice_4_8_2 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_3 _C66 1.000000000000e+00 + Choice_4_8_3 _C170 1.000000000000e+00 + Choice_4_8_3 _C174 1.000000000000e+00 + Choice_4_8_3 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_4 _C67 1.000000000000e+00 + Choice_4_8_4 _C170 1.000000000000e+00 + Choice_4_8_4 _C175 1.000000000000e+00 + Choice_4_8_4 _C188 1.000000000000e+00 + Choice_4_8_4 _C336 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_5 _C68 1.000000000000e+00 + Choice_4_8_5 _C170 1.000000000000e+00 + Choice_4_8_5 _C176 1.000000000000e+00 + Choice_4_8_5 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_6 _C69 1.000000000000e+00 + Choice_4_8_6 _C170 1.000000000000e+00 + Choice_4_8_6 _C177 1.000000000000e+00 + Choice_4_8_6 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_7 _C70 1.000000000000e+00 + Choice_4_8_7 _C170 1.000000000000e+00 + Choice_4_8_7 _C178 1.000000000000e+00 + Choice_4_8_7 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_8 _C71 1.000000000000e+00 + Choice_4_8_8 _C170 1.000000000000e+00 + Choice_4_8_8 _C179 1.000000000000e+00 + Choice_4_8_8 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_8_9 _C72 1.000000000000e+00 + Choice_4_8_9 _C170 1.000000000000e+00 + Choice_4_8_9 _C180 1.000000000000e+00 + Choice_4_8_9 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_1 _C73 1.000000000000e+00 + Choice_4_9_1 _C171 1.000000000000e+00 + Choice_4_9_1 _C172 1.000000000000e+00 + Choice_4_9_1 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_2 _C74 1.000000000000e+00 + Choice_4_9_2 _C171 1.000000000000e+00 + Choice_4_9_2 _C173 1.000000000000e+00 + Choice_4_9_2 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_3 _C75 1.000000000000e+00 + Choice_4_9_3 _C171 1.000000000000e+00 + Choice_4_9_3 _C174 1.000000000000e+00 + Choice_4_9_3 _C187 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_4 _C76 1.000000000000e+00 + Choice_4_9_4 _C171 1.000000000000e+00 + Choice_4_9_4 _C175 1.000000000000e+00 + Choice_4_9_4 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_5 _C77 1.000000000000e+00 + Choice_4_9_5 _C171 1.000000000000e+00 + Choice_4_9_5 _C176 1.000000000000e+00 + Choice_4_9_5 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_6 _C78 1.000000000000e+00 + Choice_4_9_6 _C171 1.000000000000e+00 + Choice_4_9_6 _C177 1.000000000000e+00 + Choice_4_9_6 _C188 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_7 _C79 1.000000000000e+00 + Choice_4_9_7 _C171 1.000000000000e+00 + Choice_4_9_7 _C178 1.000000000000e+00 + Choice_4_9_7 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_8 _C80 1.000000000000e+00 + Choice_4_9_8 _C171 1.000000000000e+00 + Choice_4_9_8 _C179 1.000000000000e+00 + Choice_4_9_8 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_4_9_9 _C81 1.000000000000e+00 + Choice_4_9_9 _C171 1.000000000000e+00 + Choice_4_9_9 _C180 1.000000000000e+00 + Choice_4_9_9 _C189 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_1 _C1 1.000000000000e+00 + Choice_5_1_1 _C190 1.000000000000e+00 + Choice_5_1_1 _C199 1.000000000000e+00 + Choice_5_1_1 _C208 1.000000000000e+00 + Choice_5_1_1 _C325 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_2 _C2 1.000000000000e+00 + Choice_5_1_2 _C190 1.000000000000e+00 + Choice_5_1_2 _C200 1.000000000000e+00 + Choice_5_1_2 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_3 _C3 1.000000000000e+00 + Choice_5_1_3 _C190 1.000000000000e+00 + Choice_5_1_3 _C201 1.000000000000e+00 + Choice_5_1_3 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_4 _C4 1.000000000000e+00 + Choice_5_1_4 _C190 1.000000000000e+00 + Choice_5_1_4 _C202 1.000000000000e+00 + Choice_5_1_4 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_5 _C5 1.000000000000e+00 + Choice_5_1_5 _C190 1.000000000000e+00 + Choice_5_1_5 _C203 1.000000000000e+00 + Choice_5_1_5 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_6 _C6 1.000000000000e+00 + Choice_5_1_6 _C190 1.000000000000e+00 + Choice_5_1_6 _C204 1.000000000000e+00 + Choice_5_1_6 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_7 _C7 1.000000000000e+00 + Choice_5_1_7 _C190 1.000000000000e+00 + Choice_5_1_7 _C205 1.000000000000e+00 + Choice_5_1_7 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_8 _C8 1.000000000000e+00 + Choice_5_1_8 _C190 1.000000000000e+00 + Choice_5_1_8 _C206 1.000000000000e+00 + Choice_5_1_8 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_1_9 _C9 1.000000000000e+00 + Choice_5_1_9 _C190 1.000000000000e+00 + Choice_5_1_9 _C207 1.000000000000e+00 + Choice_5_1_9 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_1 _C10 1.000000000000e+00 + Choice_5_2_1 _C191 1.000000000000e+00 + Choice_5_2_1 _C199 1.000000000000e+00 + Choice_5_2_1 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_2 _C11 1.000000000000e+00 + Choice_5_2_2 _C191 1.000000000000e+00 + Choice_5_2_2 _C200 1.000000000000e+00 + Choice_5_2_2 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_3 _C12 1.000000000000e+00 + Choice_5_2_3 _C191 1.000000000000e+00 + Choice_5_2_3 _C201 1.000000000000e+00 + Choice_5_2_3 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_4 _C13 1.000000000000e+00 + Choice_5_2_4 _C191 1.000000000000e+00 + Choice_5_2_4 _C202 1.000000000000e+00 + Choice_5_2_4 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_5 _C14 1.000000000000e+00 + Choice_5_2_5 _C191 1.000000000000e+00 + Choice_5_2_5 _C203 1.000000000000e+00 + Choice_5_2_5 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_6 _C15 1.000000000000e+00 + Choice_5_2_6 _C191 1.000000000000e+00 + Choice_5_2_6 _C204 1.000000000000e+00 + Choice_5_2_6 _C209 1.000000000000e+00 + Choice_5_2_6 _C343 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_7 _C16 1.000000000000e+00 + Choice_5_2_7 _C191 1.000000000000e+00 + Choice_5_2_7 _C205 1.000000000000e+00 + Choice_5_2_7 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_8 _C17 1.000000000000e+00 + Choice_5_2_8 _C191 1.000000000000e+00 + Choice_5_2_8 _C206 1.000000000000e+00 + Choice_5_2_8 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_2_9 _C18 1.000000000000e+00 + Choice_5_2_9 _C191 1.000000000000e+00 + Choice_5_2_9 _C207 1.000000000000e+00 + Choice_5_2_9 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_1 _C19 1.000000000000e+00 + Choice_5_3_1 _C192 1.000000000000e+00 + Choice_5_3_1 _C199 1.000000000000e+00 + Choice_5_3_1 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_2 _C20 1.000000000000e+00 + Choice_5_3_2 _C192 1.000000000000e+00 + Choice_5_3_2 _C200 1.000000000000e+00 + Choice_5_3_2 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_3 _C21 1.000000000000e+00 + Choice_5_3_3 _C192 1.000000000000e+00 + Choice_5_3_3 _C201 1.000000000000e+00 + Choice_5_3_3 _C208 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_4 _C22 1.000000000000e+00 + Choice_5_3_4 _C192 1.000000000000e+00 + Choice_5_3_4 _C202 1.000000000000e+00 + Choice_5_3_4 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_5 _C23 1.000000000000e+00 + Choice_5_3_5 _C192 1.000000000000e+00 + Choice_5_3_5 _C203 1.000000000000e+00 + Choice_5_3_5 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_6 _C24 1.000000000000e+00 + Choice_5_3_6 _C192 1.000000000000e+00 + Choice_5_3_6 _C204 1.000000000000e+00 + Choice_5_3_6 _C209 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_7 _C25 1.000000000000e+00 + Choice_5_3_7 _C192 1.000000000000e+00 + Choice_5_3_7 _C205 1.000000000000e+00 + Choice_5_3_7 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_8 _C26 1.000000000000e+00 + Choice_5_3_8 _C192 1.000000000000e+00 + Choice_5_3_8 _C206 1.000000000000e+00 + Choice_5_3_8 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_3_9 _C27 1.000000000000e+00 + Choice_5_3_9 _C192 1.000000000000e+00 + Choice_5_3_9 _C207 1.000000000000e+00 + Choice_5_3_9 _C210 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_1 _C28 1.000000000000e+00 + Choice_5_4_1 _C193 1.000000000000e+00 + Choice_5_4_1 _C199 1.000000000000e+00 + Choice_5_4_1 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_2 _C29 1.000000000000e+00 + Choice_5_4_2 _C193 1.000000000000e+00 + Choice_5_4_2 _C200 1.000000000000e+00 + Choice_5_4_2 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_3 _C30 1.000000000000e+00 + Choice_5_4_3 _C193 1.000000000000e+00 + Choice_5_4_3 _C201 1.000000000000e+00 + Choice_5_4_3 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_4 _C31 1.000000000000e+00 + Choice_5_4_4 _C193 1.000000000000e+00 + Choice_5_4_4 _C202 1.000000000000e+00 + Choice_5_4_4 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_5 _C32 1.000000000000e+00 + Choice_5_4_5 _C193 1.000000000000e+00 + Choice_5_4_5 _C203 1.000000000000e+00 + Choice_5_4_5 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_6 _C33 1.000000000000e+00 + Choice_5_4_6 _C193 1.000000000000e+00 + Choice_5_4_6 _C204 1.000000000000e+00 + Choice_5_4_6 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_7 _C34 1.000000000000e+00 + Choice_5_4_7 _C193 1.000000000000e+00 + Choice_5_4_7 _C205 1.000000000000e+00 + Choice_5_4_7 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_8 _C35 1.000000000000e+00 + Choice_5_4_8 _C193 1.000000000000e+00 + Choice_5_4_8 _C206 1.000000000000e+00 + Choice_5_4_8 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_4_9 _C36 1.000000000000e+00 + Choice_5_4_9 _C193 1.000000000000e+00 + Choice_5_4_9 _C207 1.000000000000e+00 + Choice_5_4_9 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_1 _C37 1.000000000000e+00 + Choice_5_5_1 _C194 1.000000000000e+00 + Choice_5_5_1 _C199 1.000000000000e+00 + Choice_5_5_1 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_2 _C38 1.000000000000e+00 + Choice_5_5_2 _C194 1.000000000000e+00 + Choice_5_5_2 _C200 1.000000000000e+00 + Choice_5_5_2 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_3 _C39 1.000000000000e+00 + Choice_5_5_3 _C194 1.000000000000e+00 + Choice_5_5_3 _C201 1.000000000000e+00 + Choice_5_5_3 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_4 _C40 1.000000000000e+00 + Choice_5_5_4 _C194 1.000000000000e+00 + Choice_5_5_4 _C202 1.000000000000e+00 + Choice_5_5_4 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_5 _C41 1.000000000000e+00 + Choice_5_5_5 _C194 1.000000000000e+00 + Choice_5_5_5 _C203 1.000000000000e+00 + Choice_5_5_5 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_6 _C42 1.000000000000e+00 + Choice_5_5_6 _C194 1.000000000000e+00 + Choice_5_5_6 _C204 1.000000000000e+00 + Choice_5_5_6 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_7 _C43 1.000000000000e+00 + Choice_5_5_7 _C194 1.000000000000e+00 + Choice_5_5_7 _C205 1.000000000000e+00 + Choice_5_5_7 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_8 _C44 1.000000000000e+00 + Choice_5_5_8 _C194 1.000000000000e+00 + Choice_5_5_8 _C206 1.000000000000e+00 + Choice_5_5_8 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_5_9 _C45 1.000000000000e+00 + Choice_5_5_9 _C194 1.000000000000e+00 + Choice_5_5_9 _C207 1.000000000000e+00 + Choice_5_5_9 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_1 _C46 1.000000000000e+00 + Choice_5_6_1 _C195 1.000000000000e+00 + Choice_5_6_1 _C199 1.000000000000e+00 + Choice_5_6_1 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_2 _C47 1.000000000000e+00 + Choice_5_6_2 _C195 1.000000000000e+00 + Choice_5_6_2 _C200 1.000000000000e+00 + Choice_5_6_2 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_3 _C48 1.000000000000e+00 + Choice_5_6_3 _C195 1.000000000000e+00 + Choice_5_6_3 _C201 1.000000000000e+00 + Choice_5_6_3 _C211 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_4 _C49 1.000000000000e+00 + Choice_5_6_4 _C195 1.000000000000e+00 + Choice_5_6_4 _C202 1.000000000000e+00 + Choice_5_6_4 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_5 _C50 1.000000000000e+00 + Choice_5_6_5 _C195 1.000000000000e+00 + Choice_5_6_5 _C203 1.000000000000e+00 + Choice_5_6_5 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_6 _C51 1.000000000000e+00 + Choice_5_6_6 _C195 1.000000000000e+00 + Choice_5_6_6 _C204 1.000000000000e+00 + Choice_5_6_6 _C212 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_7 _C52 1.000000000000e+00 + Choice_5_6_7 _C195 1.000000000000e+00 + Choice_5_6_7 _C205 1.000000000000e+00 + Choice_5_6_7 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_8 _C53 1.000000000000e+00 + Choice_5_6_8 _C195 1.000000000000e+00 + Choice_5_6_8 _C206 1.000000000000e+00 + Choice_5_6_8 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_6_9 _C54 1.000000000000e+00 + Choice_5_6_9 _C195 1.000000000000e+00 + Choice_5_6_9 _C207 1.000000000000e+00 + Choice_5_6_9 _C213 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_1 _C55 1.000000000000e+00 + Choice_5_7_1 _C196 1.000000000000e+00 + Choice_5_7_1 _C199 1.000000000000e+00 + Choice_5_7_1 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_2 _C56 1.000000000000e+00 + Choice_5_7_2 _C196 1.000000000000e+00 + Choice_5_7_2 _C200 1.000000000000e+00 + Choice_5_7_2 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_3 _C57 1.000000000000e+00 + Choice_5_7_3 _C196 1.000000000000e+00 + Choice_5_7_3 _C201 1.000000000000e+00 + Choice_5_7_3 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_4 _C58 1.000000000000e+00 + Choice_5_7_4 _C196 1.000000000000e+00 + Choice_5_7_4 _C202 1.000000000000e+00 + Choice_5_7_4 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_5 _C59 1.000000000000e+00 + Choice_5_7_5 _C196 1.000000000000e+00 + Choice_5_7_5 _C203 1.000000000000e+00 + Choice_5_7_5 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_6 _C60 1.000000000000e+00 + Choice_5_7_6 _C196 1.000000000000e+00 + Choice_5_7_6 _C204 1.000000000000e+00 + Choice_5_7_6 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_7 _C61 1.000000000000e+00 + Choice_5_7_7 _C196 1.000000000000e+00 + Choice_5_7_7 _C205 1.000000000000e+00 + Choice_5_7_7 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_8 _C62 1.000000000000e+00 + Choice_5_7_8 _C196 1.000000000000e+00 + Choice_5_7_8 _C206 1.000000000000e+00 + Choice_5_7_8 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_7_9 _C63 1.000000000000e+00 + Choice_5_7_9 _C196 1.000000000000e+00 + Choice_5_7_9 _C207 1.000000000000e+00 + Choice_5_7_9 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_1 _C64 1.000000000000e+00 + Choice_5_8_1 _C197 1.000000000000e+00 + Choice_5_8_1 _C199 1.000000000000e+00 + Choice_5_8_1 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_2 _C65 1.000000000000e+00 + Choice_5_8_2 _C197 1.000000000000e+00 + Choice_5_8_2 _C200 1.000000000000e+00 + Choice_5_8_2 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_3 _C66 1.000000000000e+00 + Choice_5_8_3 _C197 1.000000000000e+00 + Choice_5_8_3 _C201 1.000000000000e+00 + Choice_5_8_3 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_4 _C67 1.000000000000e+00 + Choice_5_8_4 _C197 1.000000000000e+00 + Choice_5_8_4 _C202 1.000000000000e+00 + Choice_5_8_4 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_5 _C68 1.000000000000e+00 + Choice_5_8_5 _C197 1.000000000000e+00 + Choice_5_8_5 _C203 1.000000000000e+00 + Choice_5_8_5 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_6 _C69 1.000000000000e+00 + Choice_5_8_6 _C197 1.000000000000e+00 + Choice_5_8_6 _C204 1.000000000000e+00 + Choice_5_8_6 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_7 _C70 1.000000000000e+00 + Choice_5_8_7 _C197 1.000000000000e+00 + Choice_5_8_7 _C205 1.000000000000e+00 + Choice_5_8_7 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_8 _C71 1.000000000000e+00 + Choice_5_8_8 _C197 1.000000000000e+00 + Choice_5_8_8 _C206 1.000000000000e+00 + Choice_5_8_8 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_8_9 _C72 1.000000000000e+00 + Choice_5_8_9 _C197 1.000000000000e+00 + Choice_5_8_9 _C207 1.000000000000e+00 + Choice_5_8_9 _C216 1.000000000000e+00 + Choice_5_8_9 _C353 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_1 _C73 1.000000000000e+00 + Choice_5_9_1 _C198 1.000000000000e+00 + Choice_5_9_1 _C199 1.000000000000e+00 + Choice_5_9_1 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_2 _C74 1.000000000000e+00 + Choice_5_9_2 _C198 1.000000000000e+00 + Choice_5_9_2 _C200 1.000000000000e+00 + Choice_5_9_2 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_3 _C75 1.000000000000e+00 + Choice_5_9_3 _C198 1.000000000000e+00 + Choice_5_9_3 _C201 1.000000000000e+00 + Choice_5_9_3 _C214 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_4 _C76 1.000000000000e+00 + Choice_5_9_4 _C198 1.000000000000e+00 + Choice_5_9_4 _C202 1.000000000000e+00 + Choice_5_9_4 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_5 _C77 1.000000000000e+00 + Choice_5_9_5 _C198 1.000000000000e+00 + Choice_5_9_5 _C203 1.000000000000e+00 + Choice_5_9_5 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_6 _C78 1.000000000000e+00 + Choice_5_9_6 _C198 1.000000000000e+00 + Choice_5_9_6 _C204 1.000000000000e+00 + Choice_5_9_6 _C215 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_7 _C79 1.000000000000e+00 + Choice_5_9_7 _C198 1.000000000000e+00 + Choice_5_9_7 _C205 1.000000000000e+00 + Choice_5_9_7 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_8 _C80 1.000000000000e+00 + Choice_5_9_8 _C198 1.000000000000e+00 + Choice_5_9_8 _C206 1.000000000000e+00 + Choice_5_9_8 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_5_9_9 _C81 1.000000000000e+00 + Choice_5_9_9 _C198 1.000000000000e+00 + Choice_5_9_9 _C207 1.000000000000e+00 + Choice_5_9_9 _C216 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_1 _C1 1.000000000000e+00 + Choice_6_1_1 _C217 1.000000000000e+00 + Choice_6_1_1 _C226 1.000000000000e+00 + Choice_6_1_1 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_2 _C2 1.000000000000e+00 + Choice_6_1_2 _C217 1.000000000000e+00 + Choice_6_1_2 _C227 1.000000000000e+00 + Choice_6_1_2 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_3 _C3 1.000000000000e+00 + Choice_6_1_3 _C217 1.000000000000e+00 + Choice_6_1_3 _C228 1.000000000000e+00 + Choice_6_1_3 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_4 _C4 1.000000000000e+00 + Choice_6_1_4 _C217 1.000000000000e+00 + Choice_6_1_4 _C229 1.000000000000e+00 + Choice_6_1_4 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_5 _C5 1.000000000000e+00 + Choice_6_1_5 _C217 1.000000000000e+00 + Choice_6_1_5 _C230 1.000000000000e+00 + Choice_6_1_5 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_6 _C6 1.000000000000e+00 + Choice_6_1_6 _C217 1.000000000000e+00 + Choice_6_1_6 _C231 1.000000000000e+00 + Choice_6_1_6 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_7 _C7 1.000000000000e+00 + Choice_6_1_7 _C217 1.000000000000e+00 + Choice_6_1_7 _C232 1.000000000000e+00 + Choice_6_1_7 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_8 _C8 1.000000000000e+00 + Choice_6_1_8 _C217 1.000000000000e+00 + Choice_6_1_8 _C233 1.000000000000e+00 + Choice_6_1_8 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_1_9 _C9 1.000000000000e+00 + Choice_6_1_9 _C217 1.000000000000e+00 + Choice_6_1_9 _C234 1.000000000000e+00 + Choice_6_1_9 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_1 _C10 1.000000000000e+00 + Choice_6_2_1 _C218 1.000000000000e+00 + Choice_6_2_1 _C226 1.000000000000e+00 + Choice_6_2_1 _C235 1.000000000000e+00 + Choice_6_2_1 _C326 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_2 _C11 1.000000000000e+00 + Choice_6_2_2 _C218 1.000000000000e+00 + Choice_6_2_2 _C227 1.000000000000e+00 + Choice_6_2_2 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_3 _C12 1.000000000000e+00 + Choice_6_2_3 _C218 1.000000000000e+00 + Choice_6_2_3 _C228 1.000000000000e+00 + Choice_6_2_3 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_4 _C13 1.000000000000e+00 + Choice_6_2_4 _C218 1.000000000000e+00 + Choice_6_2_4 _C229 1.000000000000e+00 + Choice_6_2_4 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_5 _C14 1.000000000000e+00 + Choice_6_2_5 _C218 1.000000000000e+00 + Choice_6_2_5 _C230 1.000000000000e+00 + Choice_6_2_5 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_6 _C15 1.000000000000e+00 + Choice_6_2_6 _C218 1.000000000000e+00 + Choice_6_2_6 _C231 1.000000000000e+00 + Choice_6_2_6 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_7 _C16 1.000000000000e+00 + Choice_6_2_7 _C218 1.000000000000e+00 + Choice_6_2_7 _C232 1.000000000000e+00 + Choice_6_2_7 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_8 _C17 1.000000000000e+00 + Choice_6_2_8 _C218 1.000000000000e+00 + Choice_6_2_8 _C233 1.000000000000e+00 + Choice_6_2_8 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_2_9 _C18 1.000000000000e+00 + Choice_6_2_9 _C218 1.000000000000e+00 + Choice_6_2_9 _C234 1.000000000000e+00 + Choice_6_2_9 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_1 _C19 1.000000000000e+00 + Choice_6_3_1 _C219 1.000000000000e+00 + Choice_6_3_1 _C226 1.000000000000e+00 + Choice_6_3_1 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_2 _C20 1.000000000000e+00 + Choice_6_3_2 _C219 1.000000000000e+00 + Choice_6_3_2 _C227 1.000000000000e+00 + Choice_6_3_2 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_3 _C21 1.000000000000e+00 + Choice_6_3_3 _C219 1.000000000000e+00 + Choice_6_3_3 _C228 1.000000000000e+00 + Choice_6_3_3 _C235 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_4 _C22 1.000000000000e+00 + Choice_6_3_4 _C219 1.000000000000e+00 + Choice_6_3_4 _C229 1.000000000000e+00 + Choice_6_3_4 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_5 _C23 1.000000000000e+00 + Choice_6_3_5 _C219 1.000000000000e+00 + Choice_6_3_5 _C230 1.000000000000e+00 + Choice_6_3_5 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_6 _C24 1.000000000000e+00 + Choice_6_3_6 _C219 1.000000000000e+00 + Choice_6_3_6 _C231 1.000000000000e+00 + Choice_6_3_6 _C236 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_7 _C25 1.000000000000e+00 + Choice_6_3_7 _C219 1.000000000000e+00 + Choice_6_3_7 _C232 1.000000000000e+00 + Choice_6_3_7 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_8 _C26 1.000000000000e+00 + Choice_6_3_8 _C219 1.000000000000e+00 + Choice_6_3_8 _C233 1.000000000000e+00 + Choice_6_3_8 _C237 1.000000000000e+00 + Choice_6_3_8 _C347 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_3_9 _C27 1.000000000000e+00 + Choice_6_3_9 _C219 1.000000000000e+00 + Choice_6_3_9 _C234 1.000000000000e+00 + Choice_6_3_9 _C237 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_1 _C28 1.000000000000e+00 + Choice_6_4_1 _C220 1.000000000000e+00 + Choice_6_4_1 _C226 1.000000000000e+00 + Choice_6_4_1 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_2 _C29 1.000000000000e+00 + Choice_6_4_2 _C220 1.000000000000e+00 + Choice_6_4_2 _C227 1.000000000000e+00 + Choice_6_4_2 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_3 _C30 1.000000000000e+00 + Choice_6_4_3 _C220 1.000000000000e+00 + Choice_6_4_3 _C228 1.000000000000e+00 + Choice_6_4_3 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_4 _C31 1.000000000000e+00 + Choice_6_4_4 _C220 1.000000000000e+00 + Choice_6_4_4 _C229 1.000000000000e+00 + Choice_6_4_4 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_5 _C32 1.000000000000e+00 + Choice_6_4_5 _C220 1.000000000000e+00 + Choice_6_4_5 _C230 1.000000000000e+00 + Choice_6_4_5 _C239 1.000000000000e+00 + Choice_6_4_5 _C339 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_6 _C33 1.000000000000e+00 + Choice_6_4_6 _C220 1.000000000000e+00 + Choice_6_4_6 _C231 1.000000000000e+00 + Choice_6_4_6 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_7 _C34 1.000000000000e+00 + Choice_6_4_7 _C220 1.000000000000e+00 + Choice_6_4_7 _C232 1.000000000000e+00 + Choice_6_4_7 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_8 _C35 1.000000000000e+00 + Choice_6_4_8 _C220 1.000000000000e+00 + Choice_6_4_8 _C233 1.000000000000e+00 + Choice_6_4_8 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_4_9 _C36 1.000000000000e+00 + Choice_6_4_9 _C220 1.000000000000e+00 + Choice_6_4_9 _C234 1.000000000000e+00 + Choice_6_4_9 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_1 _C37 1.000000000000e+00 + Choice_6_5_1 _C221 1.000000000000e+00 + Choice_6_5_1 _C226 1.000000000000e+00 + Choice_6_5_1 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_2 _C38 1.000000000000e+00 + Choice_6_5_2 _C221 1.000000000000e+00 + Choice_6_5_2 _C227 1.000000000000e+00 + Choice_6_5_2 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_3 _C39 1.000000000000e+00 + Choice_6_5_3 _C221 1.000000000000e+00 + Choice_6_5_3 _C228 1.000000000000e+00 + Choice_6_5_3 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_4 _C40 1.000000000000e+00 + Choice_6_5_4 _C221 1.000000000000e+00 + Choice_6_5_4 _C229 1.000000000000e+00 + Choice_6_5_4 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_5 _C41 1.000000000000e+00 + Choice_6_5_5 _C221 1.000000000000e+00 + Choice_6_5_5 _C230 1.000000000000e+00 + Choice_6_5_5 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_6 _C42 1.000000000000e+00 + Choice_6_5_6 _C221 1.000000000000e+00 + Choice_6_5_6 _C231 1.000000000000e+00 + Choice_6_5_6 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_7 _C43 1.000000000000e+00 + Choice_6_5_7 _C221 1.000000000000e+00 + Choice_6_5_7 _C232 1.000000000000e+00 + Choice_6_5_7 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_8 _C44 1.000000000000e+00 + Choice_6_5_8 _C221 1.000000000000e+00 + Choice_6_5_8 _C233 1.000000000000e+00 + Choice_6_5_8 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_5_9 _C45 1.000000000000e+00 + Choice_6_5_9 _C221 1.000000000000e+00 + Choice_6_5_9 _C234 1.000000000000e+00 + Choice_6_5_9 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_1 _C46 1.000000000000e+00 + Choice_6_6_1 _C222 1.000000000000e+00 + Choice_6_6_1 _C226 1.000000000000e+00 + Choice_6_6_1 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_2 _C47 1.000000000000e+00 + Choice_6_6_2 _C222 1.000000000000e+00 + Choice_6_6_2 _C227 1.000000000000e+00 + Choice_6_6_2 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_3 _C48 1.000000000000e+00 + Choice_6_6_3 _C222 1.000000000000e+00 + Choice_6_6_3 _C228 1.000000000000e+00 + Choice_6_6_3 _C238 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_4 _C49 1.000000000000e+00 + Choice_6_6_4 _C222 1.000000000000e+00 + Choice_6_6_4 _C229 1.000000000000e+00 + Choice_6_6_4 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_5 _C50 1.000000000000e+00 + Choice_6_6_5 _C222 1.000000000000e+00 + Choice_6_6_5 _C230 1.000000000000e+00 + Choice_6_6_5 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_6 _C51 1.000000000000e+00 + Choice_6_6_6 _C222 1.000000000000e+00 + Choice_6_6_6 _C231 1.000000000000e+00 + Choice_6_6_6 _C239 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_7 _C52 1.000000000000e+00 + Choice_6_6_7 _C222 1.000000000000e+00 + Choice_6_6_7 _C232 1.000000000000e+00 + Choice_6_6_7 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_8 _C53 1.000000000000e+00 + Choice_6_6_8 _C222 1.000000000000e+00 + Choice_6_6_8 _C233 1.000000000000e+00 + Choice_6_6_8 _C240 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_6_9 _C54 1.000000000000e+00 + Choice_6_6_9 _C222 1.000000000000e+00 + Choice_6_6_9 _C234 1.000000000000e+00 + Choice_6_6_9 _C240 1.000000000000e+00 + Choice_6_6_9 _C352 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_1 _C55 1.000000000000e+00 + Choice_6_7_1 _C223 1.000000000000e+00 + Choice_6_7_1 _C226 1.000000000000e+00 + Choice_6_7_1 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_2 _C56 1.000000000000e+00 + Choice_6_7_2 _C223 1.000000000000e+00 + Choice_6_7_2 _C227 1.000000000000e+00 + Choice_6_7_2 _C241 1.000000000000e+00 + Choice_6_7_2 _C332 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_3 _C57 1.000000000000e+00 + Choice_6_7_3 _C223 1.000000000000e+00 + Choice_6_7_3 _C228 1.000000000000e+00 + Choice_6_7_3 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_4 _C58 1.000000000000e+00 + Choice_6_7_4 _C223 1.000000000000e+00 + Choice_6_7_4 _C229 1.000000000000e+00 + Choice_6_7_4 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_5 _C59 1.000000000000e+00 + Choice_6_7_5 _C223 1.000000000000e+00 + Choice_6_7_5 _C230 1.000000000000e+00 + Choice_6_7_5 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_6 _C60 1.000000000000e+00 + Choice_6_7_6 _C223 1.000000000000e+00 + Choice_6_7_6 _C231 1.000000000000e+00 + Choice_6_7_6 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_7 _C61 1.000000000000e+00 + Choice_6_7_7 _C223 1.000000000000e+00 + Choice_6_7_7 _C232 1.000000000000e+00 + Choice_6_7_7 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_8 _C62 1.000000000000e+00 + Choice_6_7_8 _C223 1.000000000000e+00 + Choice_6_7_8 _C233 1.000000000000e+00 + Choice_6_7_8 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_7_9 _C63 1.000000000000e+00 + Choice_6_7_9 _C223 1.000000000000e+00 + Choice_6_7_9 _C234 1.000000000000e+00 + Choice_6_7_9 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_1 _C64 1.000000000000e+00 + Choice_6_8_1 _C224 1.000000000000e+00 + Choice_6_8_1 _C226 1.000000000000e+00 + Choice_6_8_1 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_2 _C65 1.000000000000e+00 + Choice_6_8_2 _C224 1.000000000000e+00 + Choice_6_8_2 _C227 1.000000000000e+00 + Choice_6_8_2 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_3 _C66 1.000000000000e+00 + Choice_6_8_3 _C224 1.000000000000e+00 + Choice_6_8_3 _C228 1.000000000000e+00 + Choice_6_8_3 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_4 _C67 1.000000000000e+00 + Choice_6_8_4 _C224 1.000000000000e+00 + Choice_6_8_4 _C229 1.000000000000e+00 + Choice_6_8_4 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_5 _C68 1.000000000000e+00 + Choice_6_8_5 _C224 1.000000000000e+00 + Choice_6_8_5 _C230 1.000000000000e+00 + Choice_6_8_5 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_6 _C69 1.000000000000e+00 + Choice_6_8_6 _C224 1.000000000000e+00 + Choice_6_8_6 _C231 1.000000000000e+00 + Choice_6_8_6 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_7 _C70 1.000000000000e+00 + Choice_6_8_7 _C224 1.000000000000e+00 + Choice_6_8_7 _C232 1.000000000000e+00 + Choice_6_8_7 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_8 _C71 1.000000000000e+00 + Choice_6_8_8 _C224 1.000000000000e+00 + Choice_6_8_8 _C233 1.000000000000e+00 + Choice_6_8_8 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_8_9 _C72 1.000000000000e+00 + Choice_6_8_9 _C224 1.000000000000e+00 + Choice_6_8_9 _C234 1.000000000000e+00 + Choice_6_8_9 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_1 _C73 1.000000000000e+00 + Choice_6_9_1 _C225 1.000000000000e+00 + Choice_6_9_1 _C226 1.000000000000e+00 + Choice_6_9_1 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_2 _C74 1.000000000000e+00 + Choice_6_9_2 _C225 1.000000000000e+00 + Choice_6_9_2 _C227 1.000000000000e+00 + Choice_6_9_2 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_3 _C75 1.000000000000e+00 + Choice_6_9_3 _C225 1.000000000000e+00 + Choice_6_9_3 _C228 1.000000000000e+00 + Choice_6_9_3 _C241 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_4 _C76 1.000000000000e+00 + Choice_6_9_4 _C225 1.000000000000e+00 + Choice_6_9_4 _C229 1.000000000000e+00 + Choice_6_9_4 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_5 _C77 1.000000000000e+00 + Choice_6_9_5 _C225 1.000000000000e+00 + Choice_6_9_5 _C230 1.000000000000e+00 + Choice_6_9_5 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_6 _C78 1.000000000000e+00 + Choice_6_9_6 _C225 1.000000000000e+00 + Choice_6_9_6 _C231 1.000000000000e+00 + Choice_6_9_6 _C242 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_7 _C79 1.000000000000e+00 + Choice_6_9_7 _C225 1.000000000000e+00 + Choice_6_9_7 _C232 1.000000000000e+00 + Choice_6_9_7 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_8 _C80 1.000000000000e+00 + Choice_6_9_8 _C225 1.000000000000e+00 + Choice_6_9_8 _C233 1.000000000000e+00 + Choice_6_9_8 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_6_9_9 _C81 1.000000000000e+00 + Choice_6_9_9 _C225 1.000000000000e+00 + Choice_6_9_9 _C234 1.000000000000e+00 + Choice_6_9_9 _C243 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_1 _C1 1.000000000000e+00 + Choice_7_1_1 _C244 1.000000000000e+00 + Choice_7_1_1 _C253 1.000000000000e+00 + Choice_7_1_1 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_2 _C2 1.000000000000e+00 + Choice_7_1_2 _C244 1.000000000000e+00 + Choice_7_1_2 _C254 1.000000000000e+00 + Choice_7_1_2 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_3 _C3 1.000000000000e+00 + Choice_7_1_3 _C244 1.000000000000e+00 + Choice_7_1_3 _C255 1.000000000000e+00 + Choice_7_1_3 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_4 _C4 1.000000000000e+00 + Choice_7_1_4 _C244 1.000000000000e+00 + Choice_7_1_4 _C256 1.000000000000e+00 + Choice_7_1_4 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_5 _C5 1.000000000000e+00 + Choice_7_1_5 _C244 1.000000000000e+00 + Choice_7_1_5 _C257 1.000000000000e+00 + Choice_7_1_5 _C263 1.000000000000e+00 + Choice_7_1_5 _C337 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_6 _C6 1.000000000000e+00 + Choice_7_1_6 _C244 1.000000000000e+00 + Choice_7_1_6 _C258 1.000000000000e+00 + Choice_7_1_6 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_7 _C7 1.000000000000e+00 + Choice_7_1_7 _C244 1.000000000000e+00 + Choice_7_1_7 _C259 1.000000000000e+00 + Choice_7_1_7 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_8 _C8 1.000000000000e+00 + Choice_7_1_8 _C244 1.000000000000e+00 + Choice_7_1_8 _C260 1.000000000000e+00 + Choice_7_1_8 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_1_9 _C9 1.000000000000e+00 + Choice_7_1_9 _C244 1.000000000000e+00 + Choice_7_1_9 _C261 1.000000000000e+00 + Choice_7_1_9 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_1 _C10 1.000000000000e+00 + Choice_7_2_1 _C245 1.000000000000e+00 + Choice_7_2_1 _C253 1.000000000000e+00 + Choice_7_2_1 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_2 _C11 1.000000000000e+00 + Choice_7_2_2 _C245 1.000000000000e+00 + Choice_7_2_2 _C254 1.000000000000e+00 + Choice_7_2_2 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_3 _C12 1.000000000000e+00 + Choice_7_2_3 _C245 1.000000000000e+00 + Choice_7_2_3 _C255 1.000000000000e+00 + Choice_7_2_3 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_4 _C13 1.000000000000e+00 + Choice_7_2_4 _C245 1.000000000000e+00 + Choice_7_2_4 _C256 1.000000000000e+00 + Choice_7_2_4 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_5 _C14 1.000000000000e+00 + Choice_7_2_5 _C245 1.000000000000e+00 + Choice_7_2_5 _C257 1.000000000000e+00 + Choice_7_2_5 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_6 _C15 1.000000000000e+00 + Choice_7_2_6 _C245 1.000000000000e+00 + Choice_7_2_6 _C258 1.000000000000e+00 + Choice_7_2_6 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_7 _C16 1.000000000000e+00 + Choice_7_2_7 _C245 1.000000000000e+00 + Choice_7_2_7 _C259 1.000000000000e+00 + Choice_7_2_7 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_8 _C17 1.000000000000e+00 + Choice_7_2_8 _C245 1.000000000000e+00 + Choice_7_2_8 _C260 1.000000000000e+00 + Choice_7_2_8 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_2_9 _C18 1.000000000000e+00 + Choice_7_2_9 _C245 1.000000000000e+00 + Choice_7_2_9 _C261 1.000000000000e+00 + Choice_7_2_9 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_1 _C19 1.000000000000e+00 + Choice_7_3_1 _C246 1.000000000000e+00 + Choice_7_3_1 _C253 1.000000000000e+00 + Choice_7_3_1 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_2 _C20 1.000000000000e+00 + Choice_7_3_2 _C246 1.000000000000e+00 + Choice_7_3_2 _C254 1.000000000000e+00 + Choice_7_3_2 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_3 _C21 1.000000000000e+00 + Choice_7_3_3 _C246 1.000000000000e+00 + Choice_7_3_3 _C255 1.000000000000e+00 + Choice_7_3_3 _C262 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_4 _C22 1.000000000000e+00 + Choice_7_3_4 _C246 1.000000000000e+00 + Choice_7_3_4 _C256 1.000000000000e+00 + Choice_7_3_4 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_5 _C23 1.000000000000e+00 + Choice_7_3_5 _C246 1.000000000000e+00 + Choice_7_3_5 _C257 1.000000000000e+00 + Choice_7_3_5 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_6 _C24 1.000000000000e+00 + Choice_7_3_6 _C246 1.000000000000e+00 + Choice_7_3_6 _C258 1.000000000000e+00 + Choice_7_3_6 _C263 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_7 _C25 1.000000000000e+00 + Choice_7_3_7 _C246 1.000000000000e+00 + Choice_7_3_7 _C259 1.000000000000e+00 + Choice_7_3_7 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_8 _C26 1.000000000000e+00 + Choice_7_3_8 _C246 1.000000000000e+00 + Choice_7_3_8 _C260 1.000000000000e+00 + Choice_7_3_8 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_3_9 _C27 1.000000000000e+00 + Choice_7_3_9 _C246 1.000000000000e+00 + Choice_7_3_9 _C261 1.000000000000e+00 + Choice_7_3_9 _C264 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_1 _C28 1.000000000000e+00 + Choice_7_4_1 _C247 1.000000000000e+00 + Choice_7_4_1 _C253 1.000000000000e+00 + Choice_7_4_1 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_2 _C29 1.000000000000e+00 + Choice_7_4_2 _C247 1.000000000000e+00 + Choice_7_4_2 _C254 1.000000000000e+00 + Choice_7_4_2 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_3 _C30 1.000000000000e+00 + Choice_7_4_3 _C247 1.000000000000e+00 + Choice_7_4_3 _C255 1.000000000000e+00 + Choice_7_4_3 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_4 _C31 1.000000000000e+00 + Choice_7_4_4 _C247 1.000000000000e+00 + Choice_7_4_4 _C256 1.000000000000e+00 + Choice_7_4_4 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_5 _C32 1.000000000000e+00 + Choice_7_4_5 _C247 1.000000000000e+00 + Choice_7_4_5 _C257 1.000000000000e+00 + Choice_7_4_5 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_6 _C33 1.000000000000e+00 + Choice_7_4_6 _C247 1.000000000000e+00 + Choice_7_4_6 _C258 1.000000000000e+00 + Choice_7_4_6 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_7 _C34 1.000000000000e+00 + Choice_7_4_7 _C247 1.000000000000e+00 + Choice_7_4_7 _C259 1.000000000000e+00 + Choice_7_4_7 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_8 _C35 1.000000000000e+00 + Choice_7_4_8 _C247 1.000000000000e+00 + Choice_7_4_8 _C260 1.000000000000e+00 + Choice_7_4_8 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_4_9 _C36 1.000000000000e+00 + Choice_7_4_9 _C247 1.000000000000e+00 + Choice_7_4_9 _C261 1.000000000000e+00 + Choice_7_4_9 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_1 _C37 1.000000000000e+00 + Choice_7_5_1 _C248 1.000000000000e+00 + Choice_7_5_1 _C253 1.000000000000e+00 + Choice_7_5_1 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_2 _C38 1.000000000000e+00 + Choice_7_5_2 _C248 1.000000000000e+00 + Choice_7_5_2 _C254 1.000000000000e+00 + Choice_7_5_2 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_3 _C39 1.000000000000e+00 + Choice_7_5_3 _C248 1.000000000000e+00 + Choice_7_5_3 _C255 1.000000000000e+00 + Choice_7_5_3 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_4 _C40 1.000000000000e+00 + Choice_7_5_4 _C248 1.000000000000e+00 + Choice_7_5_4 _C256 1.000000000000e+00 + Choice_7_5_4 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_5 _C41 1.000000000000e+00 + Choice_7_5_5 _C248 1.000000000000e+00 + Choice_7_5_5 _C257 1.000000000000e+00 + Choice_7_5_5 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_6 _C42 1.000000000000e+00 + Choice_7_5_6 _C248 1.000000000000e+00 + Choice_7_5_6 _C258 1.000000000000e+00 + Choice_7_5_6 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_7 _C43 1.000000000000e+00 + Choice_7_5_7 _C248 1.000000000000e+00 + Choice_7_5_7 _C259 1.000000000000e+00 + Choice_7_5_7 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_8 _C44 1.000000000000e+00 + Choice_7_5_8 _C248 1.000000000000e+00 + Choice_7_5_8 _C260 1.000000000000e+00 + Choice_7_5_8 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_5_9 _C45 1.000000000000e+00 + Choice_7_5_9 _C248 1.000000000000e+00 + Choice_7_5_9 _C261 1.000000000000e+00 + Choice_7_5_9 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_1 _C46 1.000000000000e+00 + Choice_7_6_1 _C249 1.000000000000e+00 + Choice_7_6_1 _C253 1.000000000000e+00 + Choice_7_6_1 _C265 1.000000000000e+00 + Choice_7_6_1 _C329 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_2 _C47 1.000000000000e+00 + Choice_7_6_2 _C249 1.000000000000e+00 + Choice_7_6_2 _C254 1.000000000000e+00 + Choice_7_6_2 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_3 _C48 1.000000000000e+00 + Choice_7_6_3 _C249 1.000000000000e+00 + Choice_7_6_3 _C255 1.000000000000e+00 + Choice_7_6_3 _C265 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_4 _C49 1.000000000000e+00 + Choice_7_6_4 _C249 1.000000000000e+00 + Choice_7_6_4 _C256 1.000000000000e+00 + Choice_7_6_4 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_5 _C50 1.000000000000e+00 + Choice_7_6_5 _C249 1.000000000000e+00 + Choice_7_6_5 _C257 1.000000000000e+00 + Choice_7_6_5 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_6 _C51 1.000000000000e+00 + Choice_7_6_6 _C249 1.000000000000e+00 + Choice_7_6_6 _C258 1.000000000000e+00 + Choice_7_6_6 _C266 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_7 _C52 1.000000000000e+00 + Choice_7_6_7 _C249 1.000000000000e+00 + Choice_7_6_7 _C259 1.000000000000e+00 + Choice_7_6_7 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_8 _C53 1.000000000000e+00 + Choice_7_6_8 _C249 1.000000000000e+00 + Choice_7_6_8 _C260 1.000000000000e+00 + Choice_7_6_8 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_6_9 _C54 1.000000000000e+00 + Choice_7_6_9 _C249 1.000000000000e+00 + Choice_7_6_9 _C261 1.000000000000e+00 + Choice_7_6_9 _C267 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_1 _C55 1.000000000000e+00 + Choice_7_7_1 _C250 1.000000000000e+00 + Choice_7_7_1 _C253 1.000000000000e+00 + Choice_7_7_1 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_2 _C56 1.000000000000e+00 + Choice_7_7_2 _C250 1.000000000000e+00 + Choice_7_7_2 _C254 1.000000000000e+00 + Choice_7_7_2 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_3 _C57 1.000000000000e+00 + Choice_7_7_3 _C250 1.000000000000e+00 + Choice_7_7_3 _C255 1.000000000000e+00 + Choice_7_7_3 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_4 _C58 1.000000000000e+00 + Choice_7_7_4 _C250 1.000000000000e+00 + Choice_7_7_4 _C256 1.000000000000e+00 + Choice_7_7_4 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_5 _C59 1.000000000000e+00 + Choice_7_7_5 _C250 1.000000000000e+00 + Choice_7_7_5 _C257 1.000000000000e+00 + Choice_7_7_5 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_6 _C60 1.000000000000e+00 + Choice_7_7_6 _C250 1.000000000000e+00 + Choice_7_7_6 _C258 1.000000000000e+00 + Choice_7_7_6 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_7 _C61 1.000000000000e+00 + Choice_7_7_7 _C250 1.000000000000e+00 + Choice_7_7_7 _C259 1.000000000000e+00 + Choice_7_7_7 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_8 _C62 1.000000000000e+00 + Choice_7_7_8 _C250 1.000000000000e+00 + Choice_7_7_8 _C260 1.000000000000e+00 + Choice_7_7_8 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_7_9 _C63 1.000000000000e+00 + Choice_7_7_9 _C250 1.000000000000e+00 + Choice_7_7_9 _C261 1.000000000000e+00 + Choice_7_7_9 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_1 _C64 1.000000000000e+00 + Choice_7_8_1 _C251 1.000000000000e+00 + Choice_7_8_1 _C253 1.000000000000e+00 + Choice_7_8_1 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_2 _C65 1.000000000000e+00 + Choice_7_8_2 _C251 1.000000000000e+00 + Choice_7_8_2 _C254 1.000000000000e+00 + Choice_7_8_2 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_3 _C66 1.000000000000e+00 + Choice_7_8_3 _C251 1.000000000000e+00 + Choice_7_8_3 _C255 1.000000000000e+00 + Choice_7_8_3 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_4 _C67 1.000000000000e+00 + Choice_7_8_4 _C251 1.000000000000e+00 + Choice_7_8_4 _C256 1.000000000000e+00 + Choice_7_8_4 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_5 _C68 1.000000000000e+00 + Choice_7_8_5 _C251 1.000000000000e+00 + Choice_7_8_5 _C257 1.000000000000e+00 + Choice_7_8_5 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_6 _C69 1.000000000000e+00 + Choice_7_8_6 _C251 1.000000000000e+00 + Choice_7_8_6 _C258 1.000000000000e+00 + Choice_7_8_6 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_7 _C70 1.000000000000e+00 + Choice_7_8_7 _C251 1.000000000000e+00 + Choice_7_8_7 _C259 1.000000000000e+00 + Choice_7_8_7 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_8 _C71 1.000000000000e+00 + Choice_7_8_8 _C251 1.000000000000e+00 + Choice_7_8_8 _C260 1.000000000000e+00 + Choice_7_8_8 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_8_9 _C72 1.000000000000e+00 + Choice_7_8_9 _C251 1.000000000000e+00 + Choice_7_8_9 _C261 1.000000000000e+00 + Choice_7_8_9 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_1 _C73 1.000000000000e+00 + Choice_7_9_1 _C252 1.000000000000e+00 + Choice_7_9_1 _C253 1.000000000000e+00 + Choice_7_9_1 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_2 _C74 1.000000000000e+00 + Choice_7_9_2 _C252 1.000000000000e+00 + Choice_7_9_2 _C254 1.000000000000e+00 + Choice_7_9_2 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_3 _C75 1.000000000000e+00 + Choice_7_9_3 _C252 1.000000000000e+00 + Choice_7_9_3 _C255 1.000000000000e+00 + Choice_7_9_3 _C268 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_4 _C76 1.000000000000e+00 + Choice_7_9_4 _C252 1.000000000000e+00 + Choice_7_9_4 _C256 1.000000000000e+00 + Choice_7_9_4 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_5 _C77 1.000000000000e+00 + Choice_7_9_5 _C252 1.000000000000e+00 + Choice_7_9_5 _C257 1.000000000000e+00 + Choice_7_9_5 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_6 _C78 1.000000000000e+00 + Choice_7_9_6 _C252 1.000000000000e+00 + Choice_7_9_6 _C258 1.000000000000e+00 + Choice_7_9_6 _C269 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_7 _C79 1.000000000000e+00 + Choice_7_9_7 _C252 1.000000000000e+00 + Choice_7_9_7 _C259 1.000000000000e+00 + Choice_7_9_7 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_8 _C80 1.000000000000e+00 + Choice_7_9_8 _C252 1.000000000000e+00 + Choice_7_9_8 _C260 1.000000000000e+00 + Choice_7_9_8 _C270 1.000000000000e+00 + Choice_7_9_8 _C349 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_7_9_9 _C81 1.000000000000e+00 + Choice_7_9_9 _C252 1.000000000000e+00 + Choice_7_9_9 _C261 1.000000000000e+00 + Choice_7_9_9 _C270 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_1 _C1 1.000000000000e+00 + Choice_8_1_1 _C271 1.000000000000e+00 + Choice_8_1_1 _C280 1.000000000000e+00 + Choice_8_1_1 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_2 _C2 1.000000000000e+00 + Choice_8_1_2 _C271 1.000000000000e+00 + Choice_8_1_2 _C281 1.000000000000e+00 + Choice_8_1_2 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_3 _C3 1.000000000000e+00 + Choice_8_1_3 _C271 1.000000000000e+00 + Choice_8_1_3 _C282 1.000000000000e+00 + Choice_8_1_3 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_4 _C4 1.000000000000e+00 + Choice_8_1_4 _C271 1.000000000000e+00 + Choice_8_1_4 _C283 1.000000000000e+00 + Choice_8_1_4 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_5 _C5 1.000000000000e+00 + Choice_8_1_5 _C271 1.000000000000e+00 + Choice_8_1_5 _C284 1.000000000000e+00 + Choice_8_1_5 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_6 _C6 1.000000000000e+00 + Choice_8_1_6 _C271 1.000000000000e+00 + Choice_8_1_6 _C285 1.000000000000e+00 + Choice_8_1_6 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_7 _C7 1.000000000000e+00 + Choice_8_1_7 _C271 1.000000000000e+00 + Choice_8_1_7 _C286 1.000000000000e+00 + Choice_8_1_7 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_8 _C8 1.000000000000e+00 + Choice_8_1_8 _C271 1.000000000000e+00 + Choice_8_1_8 _C287 1.000000000000e+00 + Choice_8_1_8 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_1_9 _C9 1.000000000000e+00 + Choice_8_1_9 _C271 1.000000000000e+00 + Choice_8_1_9 _C288 1.000000000000e+00 + Choice_8_1_9 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_1 _C10 1.000000000000e+00 + Choice_8_2_1 _C272 1.000000000000e+00 + Choice_8_2_1 _C280 1.000000000000e+00 + Choice_8_2_1 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_2 _C11 1.000000000000e+00 + Choice_8_2_2 _C272 1.000000000000e+00 + Choice_8_2_2 _C281 1.000000000000e+00 + Choice_8_2_2 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_3 _C12 1.000000000000e+00 + Choice_8_2_3 _C272 1.000000000000e+00 + Choice_8_2_3 _C282 1.000000000000e+00 + Choice_8_2_3 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_4 _C13 1.000000000000e+00 + Choice_8_2_4 _C272 1.000000000000e+00 + Choice_8_2_4 _C283 1.000000000000e+00 + Choice_8_2_4 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_5 _C14 1.000000000000e+00 + Choice_8_2_5 _C272 1.000000000000e+00 + Choice_8_2_5 _C284 1.000000000000e+00 + Choice_8_2_5 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_6 _C15 1.000000000000e+00 + Choice_8_2_6 _C272 1.000000000000e+00 + Choice_8_2_6 _C285 1.000000000000e+00 + Choice_8_2_6 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_7 _C16 1.000000000000e+00 + Choice_8_2_7 _C272 1.000000000000e+00 + Choice_8_2_7 _C286 1.000000000000e+00 + Choice_8_2_7 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_8 _C17 1.000000000000e+00 + Choice_8_2_8 _C272 1.000000000000e+00 + Choice_8_2_8 _C287 1.000000000000e+00 + Choice_8_2_8 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_2_9 _C18 1.000000000000e+00 + Choice_8_2_9 _C272 1.000000000000e+00 + Choice_8_2_9 _C288 1.000000000000e+00 + Choice_8_2_9 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_1 _C19 1.000000000000e+00 + Choice_8_3_1 _C273 1.000000000000e+00 + Choice_8_3_1 _C280 1.000000000000e+00 + Choice_8_3_1 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_2 _C20 1.000000000000e+00 + Choice_8_3_2 _C273 1.000000000000e+00 + Choice_8_3_2 _C281 1.000000000000e+00 + Choice_8_3_2 _C289 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_3 _C21 1.000000000000e+00 + Choice_8_3_3 _C273 1.000000000000e+00 + Choice_8_3_3 _C282 1.000000000000e+00 + Choice_8_3_3 _C289 1.000000000000e+00 + Choice_8_3_3 _C333 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_4 _C22 1.000000000000e+00 + Choice_8_3_4 _C273 1.000000000000e+00 + Choice_8_3_4 _C283 1.000000000000e+00 + Choice_8_3_4 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_5 _C23 1.000000000000e+00 + Choice_8_3_5 _C273 1.000000000000e+00 + Choice_8_3_5 _C284 1.000000000000e+00 + Choice_8_3_5 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_6 _C24 1.000000000000e+00 + Choice_8_3_6 _C273 1.000000000000e+00 + Choice_8_3_6 _C285 1.000000000000e+00 + Choice_8_3_6 _C290 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_7 _C25 1.000000000000e+00 + Choice_8_3_7 _C273 1.000000000000e+00 + Choice_8_3_7 _C286 1.000000000000e+00 + Choice_8_3_7 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_8 _C26 1.000000000000e+00 + Choice_8_3_8 _C273 1.000000000000e+00 + Choice_8_3_8 _C287 1.000000000000e+00 + Choice_8_3_8 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_3_9 _C27 1.000000000000e+00 + Choice_8_3_9 _C273 1.000000000000e+00 + Choice_8_3_9 _C288 1.000000000000e+00 + Choice_8_3_9 _C291 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_1 _C28 1.000000000000e+00 + Choice_8_4_1 _C274 1.000000000000e+00 + Choice_8_4_1 _C280 1.000000000000e+00 + Choice_8_4_1 _C292 1.000000000000e+00 + Choice_8_4_1 _C327 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_2 _C29 1.000000000000e+00 + Choice_8_4_2 _C274 1.000000000000e+00 + Choice_8_4_2 _C281 1.000000000000e+00 + Choice_8_4_2 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_3 _C30 1.000000000000e+00 + Choice_8_4_3 _C274 1.000000000000e+00 + Choice_8_4_3 _C282 1.000000000000e+00 + Choice_8_4_3 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_4 _C31 1.000000000000e+00 + Choice_8_4_4 _C274 1.000000000000e+00 + Choice_8_4_4 _C283 1.000000000000e+00 + Choice_8_4_4 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_5 _C32 1.000000000000e+00 + Choice_8_4_5 _C274 1.000000000000e+00 + Choice_8_4_5 _C284 1.000000000000e+00 + Choice_8_4_5 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_6 _C33 1.000000000000e+00 + Choice_8_4_6 _C274 1.000000000000e+00 + Choice_8_4_6 _C285 1.000000000000e+00 + Choice_8_4_6 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_7 _C34 1.000000000000e+00 + Choice_8_4_7 _C274 1.000000000000e+00 + Choice_8_4_7 _C286 1.000000000000e+00 + Choice_8_4_7 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_8 _C35 1.000000000000e+00 + Choice_8_4_8 _C274 1.000000000000e+00 + Choice_8_4_8 _C287 1.000000000000e+00 + Choice_8_4_8 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_4_9 _C36 1.000000000000e+00 + Choice_8_4_9 _C274 1.000000000000e+00 + Choice_8_4_9 _C288 1.000000000000e+00 + Choice_8_4_9 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_1 _C37 1.000000000000e+00 + Choice_8_5_1 _C275 1.000000000000e+00 + Choice_8_5_1 _C280 1.000000000000e+00 + Choice_8_5_1 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_2 _C38 1.000000000000e+00 + Choice_8_5_2 _C275 1.000000000000e+00 + Choice_8_5_2 _C281 1.000000000000e+00 + Choice_8_5_2 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_3 _C39 1.000000000000e+00 + Choice_8_5_3 _C275 1.000000000000e+00 + Choice_8_5_3 _C282 1.000000000000e+00 + Choice_8_5_3 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_4 _C40 1.000000000000e+00 + Choice_8_5_4 _C275 1.000000000000e+00 + Choice_8_5_4 _C283 1.000000000000e+00 + Choice_8_5_4 _C293 1.000000000000e+00 + Choice_8_5_4 _C335 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_5 _C41 1.000000000000e+00 + Choice_8_5_5 _C275 1.000000000000e+00 + Choice_8_5_5 _C284 1.000000000000e+00 + Choice_8_5_5 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_6 _C42 1.000000000000e+00 + Choice_8_5_6 _C275 1.000000000000e+00 + Choice_8_5_6 _C285 1.000000000000e+00 + Choice_8_5_6 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_7 _C43 1.000000000000e+00 + Choice_8_5_7 _C275 1.000000000000e+00 + Choice_8_5_7 _C286 1.000000000000e+00 + Choice_8_5_7 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_8 _C44 1.000000000000e+00 + Choice_8_5_8 _C275 1.000000000000e+00 + Choice_8_5_8 _C287 1.000000000000e+00 + Choice_8_5_8 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_5_9 _C45 1.000000000000e+00 + Choice_8_5_9 _C275 1.000000000000e+00 + Choice_8_5_9 _C288 1.000000000000e+00 + Choice_8_5_9 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_1 _C46 1.000000000000e+00 + Choice_8_6_1 _C276 1.000000000000e+00 + Choice_8_6_1 _C280 1.000000000000e+00 + Choice_8_6_1 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_2 _C47 1.000000000000e+00 + Choice_8_6_2 _C276 1.000000000000e+00 + Choice_8_6_2 _C281 1.000000000000e+00 + Choice_8_6_2 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_3 _C48 1.000000000000e+00 + Choice_8_6_3 _C276 1.000000000000e+00 + Choice_8_6_3 _C282 1.000000000000e+00 + Choice_8_6_3 _C292 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_4 _C49 1.000000000000e+00 + Choice_8_6_4 _C276 1.000000000000e+00 + Choice_8_6_4 _C283 1.000000000000e+00 + Choice_8_6_4 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_5 _C50 1.000000000000e+00 + Choice_8_6_5 _C276 1.000000000000e+00 + Choice_8_6_5 _C284 1.000000000000e+00 + Choice_8_6_5 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_6 _C51 1.000000000000e+00 + Choice_8_6_6 _C276 1.000000000000e+00 + Choice_8_6_6 _C285 1.000000000000e+00 + Choice_8_6_6 _C293 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_7 _C52 1.000000000000e+00 + Choice_8_6_7 _C276 1.000000000000e+00 + Choice_8_6_7 _C286 1.000000000000e+00 + Choice_8_6_7 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_8 _C53 1.000000000000e+00 + Choice_8_6_8 _C276 1.000000000000e+00 + Choice_8_6_8 _C287 1.000000000000e+00 + Choice_8_6_8 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_6_9 _C54 1.000000000000e+00 + Choice_8_6_9 _C276 1.000000000000e+00 + Choice_8_6_9 _C288 1.000000000000e+00 + Choice_8_6_9 _C294 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_1 _C55 1.000000000000e+00 + Choice_8_7_1 _C277 1.000000000000e+00 + Choice_8_7_1 _C280 1.000000000000e+00 + Choice_8_7_1 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_2 _C56 1.000000000000e+00 + Choice_8_7_2 _C277 1.000000000000e+00 + Choice_8_7_2 _C281 1.000000000000e+00 + Choice_8_7_2 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_3 _C57 1.000000000000e+00 + Choice_8_7_3 _C277 1.000000000000e+00 + Choice_8_7_3 _C282 1.000000000000e+00 + Choice_8_7_3 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_4 _C58 1.000000000000e+00 + Choice_8_7_4 _C277 1.000000000000e+00 + Choice_8_7_4 _C283 1.000000000000e+00 + Choice_8_7_4 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_5 _C59 1.000000000000e+00 + Choice_8_7_5 _C277 1.000000000000e+00 + Choice_8_7_5 _C284 1.000000000000e+00 + Choice_8_7_5 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_6 _C60 1.000000000000e+00 + Choice_8_7_6 _C277 1.000000000000e+00 + Choice_8_7_6 _C285 1.000000000000e+00 + Choice_8_7_6 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_7 _C61 1.000000000000e+00 + Choice_8_7_7 _C277 1.000000000000e+00 + Choice_8_7_7 _C286 1.000000000000e+00 + Choice_8_7_7 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_8 _C62 1.000000000000e+00 + Choice_8_7_8 _C277 1.000000000000e+00 + Choice_8_7_8 _C287 1.000000000000e+00 + Choice_8_7_8 _C297 1.000000000000e+00 + Choice_8_7_8 _C348 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_7_9 _C63 1.000000000000e+00 + Choice_8_7_9 _C277 1.000000000000e+00 + Choice_8_7_9 _C288 1.000000000000e+00 + Choice_8_7_9 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_1 _C64 1.000000000000e+00 + Choice_8_8_1 _C278 1.000000000000e+00 + Choice_8_8_1 _C280 1.000000000000e+00 + Choice_8_8_1 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_2 _C65 1.000000000000e+00 + Choice_8_8_2 _C278 1.000000000000e+00 + Choice_8_8_2 _C281 1.000000000000e+00 + Choice_8_8_2 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_3 _C66 1.000000000000e+00 + Choice_8_8_3 _C278 1.000000000000e+00 + Choice_8_8_3 _C282 1.000000000000e+00 + Choice_8_8_3 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_4 _C67 1.000000000000e+00 + Choice_8_8_4 _C278 1.000000000000e+00 + Choice_8_8_4 _C283 1.000000000000e+00 + Choice_8_8_4 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_5 _C68 1.000000000000e+00 + Choice_8_8_5 _C278 1.000000000000e+00 + Choice_8_8_5 _C284 1.000000000000e+00 + Choice_8_8_5 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_6 _C69 1.000000000000e+00 + Choice_8_8_6 _C278 1.000000000000e+00 + Choice_8_8_6 _C285 1.000000000000e+00 + Choice_8_8_6 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_7 _C70 1.000000000000e+00 + Choice_8_8_7 _C278 1.000000000000e+00 + Choice_8_8_7 _C286 1.000000000000e+00 + Choice_8_8_7 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_8 _C71 1.000000000000e+00 + Choice_8_8_8 _C278 1.000000000000e+00 + Choice_8_8_8 _C287 1.000000000000e+00 + Choice_8_8_8 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_8_9 _C72 1.000000000000e+00 + Choice_8_8_9 _C278 1.000000000000e+00 + Choice_8_8_9 _C288 1.000000000000e+00 + Choice_8_8_9 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_1 _C73 1.000000000000e+00 + Choice_8_9_1 _C279 1.000000000000e+00 + Choice_8_9_1 _C280 1.000000000000e+00 + Choice_8_9_1 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_2 _C74 1.000000000000e+00 + Choice_8_9_2 _C279 1.000000000000e+00 + Choice_8_9_2 _C281 1.000000000000e+00 + Choice_8_9_2 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_3 _C75 1.000000000000e+00 + Choice_8_9_3 _C279 1.000000000000e+00 + Choice_8_9_3 _C282 1.000000000000e+00 + Choice_8_9_3 _C295 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_4 _C76 1.000000000000e+00 + Choice_8_9_4 _C279 1.000000000000e+00 + Choice_8_9_4 _C283 1.000000000000e+00 + Choice_8_9_4 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_5 _C77 1.000000000000e+00 + Choice_8_9_5 _C279 1.000000000000e+00 + Choice_8_9_5 _C284 1.000000000000e+00 + Choice_8_9_5 _C296 1.000000000000e+00 + Choice_8_9_5 _C342 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_6 _C78 1.000000000000e+00 + Choice_8_9_6 _C279 1.000000000000e+00 + Choice_8_9_6 _C285 1.000000000000e+00 + Choice_8_9_6 _C296 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_7 _C79 1.000000000000e+00 + Choice_8_9_7 _C279 1.000000000000e+00 + Choice_8_9_7 _C286 1.000000000000e+00 + Choice_8_9_7 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_8 _C80 1.000000000000e+00 + Choice_8_9_8 _C279 1.000000000000e+00 + Choice_8_9_8 _C287 1.000000000000e+00 + Choice_8_9_8 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_8_9_9 _C81 1.000000000000e+00 + Choice_8_9_9 _C279 1.000000000000e+00 + Choice_8_9_9 _C288 1.000000000000e+00 + Choice_8_9_9 _C297 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_1 _C1 1.000000000000e+00 + Choice_9_1_1 _C298 1.000000000000e+00 + Choice_9_1_1 _C307 1.000000000000e+00 + Choice_9_1_1 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_2 _C2 1.000000000000e+00 + Choice_9_1_2 _C298 1.000000000000e+00 + Choice_9_1_2 _C308 1.000000000000e+00 + Choice_9_1_2 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_3 _C3 1.000000000000e+00 + Choice_9_1_3 _C298 1.000000000000e+00 + Choice_9_1_3 _C309 1.000000000000e+00 + Choice_9_1_3 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_4 _C4 1.000000000000e+00 + Choice_9_1_4 _C298 1.000000000000e+00 + Choice_9_1_4 _C310 1.000000000000e+00 + Choice_9_1_4 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_5 _C5 1.000000000000e+00 + Choice_9_1_5 _C298 1.000000000000e+00 + Choice_9_1_5 _C311 1.000000000000e+00 + Choice_9_1_5 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_6 _C6 1.000000000000e+00 + Choice_9_1_6 _C298 1.000000000000e+00 + Choice_9_1_6 _C312 1.000000000000e+00 + Choice_9_1_6 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_7 _C7 1.000000000000e+00 + Choice_9_1_7 _C298 1.000000000000e+00 + Choice_9_1_7 _C313 1.000000000000e+00 + Choice_9_1_7 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_8 _C8 1.000000000000e+00 + Choice_9_1_8 _C298 1.000000000000e+00 + Choice_9_1_8 _C314 1.000000000000e+00 + Choice_9_1_8 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_1_9 _C9 1.000000000000e+00 + Choice_9_1_9 _C298 1.000000000000e+00 + Choice_9_1_9 _C315 1.000000000000e+00 + Choice_9_1_9 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_1 _C10 1.000000000000e+00 + Choice_9_2_1 _C299 1.000000000000e+00 + Choice_9_2_1 _C307 1.000000000000e+00 + Choice_9_2_1 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_2 _C11 1.000000000000e+00 + Choice_9_2_2 _C299 1.000000000000e+00 + Choice_9_2_2 _C308 1.000000000000e+00 + Choice_9_2_2 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_3 _C12 1.000000000000e+00 + Choice_9_2_3 _C299 1.000000000000e+00 + Choice_9_2_3 _C309 1.000000000000e+00 + Choice_9_2_3 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_4 _C13 1.000000000000e+00 + Choice_9_2_4 _C299 1.000000000000e+00 + Choice_9_2_4 _C310 1.000000000000e+00 + Choice_9_2_4 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_5 _C14 1.000000000000e+00 + Choice_9_2_5 _C299 1.000000000000e+00 + Choice_9_2_5 _C311 1.000000000000e+00 + Choice_9_2_5 _C317 1.000000000000e+00 + Choice_9_2_5 _C338 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_6 _C15 1.000000000000e+00 + Choice_9_2_6 _C299 1.000000000000e+00 + Choice_9_2_6 _C312 1.000000000000e+00 + Choice_9_2_6 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_7 _C16 1.000000000000e+00 + Choice_9_2_7 _C299 1.000000000000e+00 + Choice_9_2_7 _C313 1.000000000000e+00 + Choice_9_2_7 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_8 _C17 1.000000000000e+00 + Choice_9_2_8 _C299 1.000000000000e+00 + Choice_9_2_8 _C314 1.000000000000e+00 + Choice_9_2_8 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_2_9 _C18 1.000000000000e+00 + Choice_9_2_9 _C299 1.000000000000e+00 + Choice_9_2_9 _C315 1.000000000000e+00 + Choice_9_2_9 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_1 _C19 1.000000000000e+00 + Choice_9_3_1 _C300 1.000000000000e+00 + Choice_9_3_1 _C307 1.000000000000e+00 + Choice_9_3_1 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_2 _C20 1.000000000000e+00 + Choice_9_3_2 _C300 1.000000000000e+00 + Choice_9_3_2 _C308 1.000000000000e+00 + Choice_9_3_2 _C316 1.000000000000e+00 + Choice_9_3_2 _C331 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_3 _C21 1.000000000000e+00 + Choice_9_3_3 _C300 1.000000000000e+00 + Choice_9_3_3 _C309 1.000000000000e+00 + Choice_9_3_3 _C316 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_4 _C22 1.000000000000e+00 + Choice_9_3_4 _C300 1.000000000000e+00 + Choice_9_3_4 _C310 1.000000000000e+00 + Choice_9_3_4 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_5 _C23 1.000000000000e+00 + Choice_9_3_5 _C300 1.000000000000e+00 + Choice_9_3_5 _C311 1.000000000000e+00 + Choice_9_3_5 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_6 _C24 1.000000000000e+00 + Choice_9_3_6 _C300 1.000000000000e+00 + Choice_9_3_6 _C312 1.000000000000e+00 + Choice_9_3_6 _C317 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_7 _C25 1.000000000000e+00 + Choice_9_3_7 _C300 1.000000000000e+00 + Choice_9_3_7 _C313 1.000000000000e+00 + Choice_9_3_7 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_8 _C26 1.000000000000e+00 + Choice_9_3_8 _C300 1.000000000000e+00 + Choice_9_3_8 _C314 1.000000000000e+00 + Choice_9_3_8 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_3_9 _C27 1.000000000000e+00 + Choice_9_3_9 _C300 1.000000000000e+00 + Choice_9_3_9 _C315 1.000000000000e+00 + Choice_9_3_9 _C318 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_1 _C28 1.000000000000e+00 + Choice_9_4_1 _C301 1.000000000000e+00 + Choice_9_4_1 _C307 1.000000000000e+00 + Choice_9_4_1 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_2 _C29 1.000000000000e+00 + Choice_9_4_2 _C301 1.000000000000e+00 + Choice_9_4_2 _C308 1.000000000000e+00 + Choice_9_4_2 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_3 _C30 1.000000000000e+00 + Choice_9_4_3 _C301 1.000000000000e+00 + Choice_9_4_3 _C309 1.000000000000e+00 + Choice_9_4_3 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_4 _C31 1.000000000000e+00 + Choice_9_4_4 _C301 1.000000000000e+00 + Choice_9_4_4 _C310 1.000000000000e+00 + Choice_9_4_4 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_5 _C32 1.000000000000e+00 + Choice_9_4_5 _C301 1.000000000000e+00 + Choice_9_4_5 _C311 1.000000000000e+00 + Choice_9_4_5 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_6 _C33 1.000000000000e+00 + Choice_9_4_6 _C301 1.000000000000e+00 + Choice_9_4_6 _C312 1.000000000000e+00 + Choice_9_4_6 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_7 _C34 1.000000000000e+00 + Choice_9_4_7 _C301 1.000000000000e+00 + Choice_9_4_7 _C313 1.000000000000e+00 + Choice_9_4_7 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_8 _C35 1.000000000000e+00 + Choice_9_4_8 _C301 1.000000000000e+00 + Choice_9_4_8 _C314 1.000000000000e+00 + Choice_9_4_8 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_4_9 _C36 1.000000000000e+00 + Choice_9_4_9 _C301 1.000000000000e+00 + Choice_9_4_9 _C315 1.000000000000e+00 + Choice_9_4_9 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_1 _C37 1.000000000000e+00 + Choice_9_5_1 _C302 1.000000000000e+00 + Choice_9_5_1 _C307 1.000000000000e+00 + Choice_9_5_1 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_2 _C38 1.000000000000e+00 + Choice_9_5_2 _C302 1.000000000000e+00 + Choice_9_5_2 _C308 1.000000000000e+00 + Choice_9_5_2 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_3 _C39 1.000000000000e+00 + Choice_9_5_3 _C302 1.000000000000e+00 + Choice_9_5_3 _C309 1.000000000000e+00 + Choice_9_5_3 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_4 _C40 1.000000000000e+00 + Choice_9_5_4 _C302 1.000000000000e+00 + Choice_9_5_4 _C310 1.000000000000e+00 + Choice_9_5_4 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_5 _C41 1.000000000000e+00 + Choice_9_5_5 _C302 1.000000000000e+00 + Choice_9_5_5 _C311 1.000000000000e+00 + Choice_9_5_5 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_6 _C42 1.000000000000e+00 + Choice_9_5_6 _C302 1.000000000000e+00 + Choice_9_5_6 _C312 1.000000000000e+00 + Choice_9_5_6 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_7 _C43 1.000000000000e+00 + Choice_9_5_7 _C302 1.000000000000e+00 + Choice_9_5_7 _C313 1.000000000000e+00 + Choice_9_5_7 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_8 _C44 1.000000000000e+00 + Choice_9_5_8 _C302 1.000000000000e+00 + Choice_9_5_8 _C314 1.000000000000e+00 + Choice_9_5_8 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_5_9 _C45 1.000000000000e+00 + Choice_9_5_9 _C302 1.000000000000e+00 + Choice_9_5_9 _C315 1.000000000000e+00 + Choice_9_5_9 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_1 _C46 1.000000000000e+00 + Choice_9_6_1 _C303 1.000000000000e+00 + Choice_9_6_1 _C307 1.000000000000e+00 + Choice_9_6_1 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_2 _C47 1.000000000000e+00 + Choice_9_6_2 _C303 1.000000000000e+00 + Choice_9_6_2 _C308 1.000000000000e+00 + Choice_9_6_2 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_3 _C48 1.000000000000e+00 + Choice_9_6_3 _C303 1.000000000000e+00 + Choice_9_6_3 _C309 1.000000000000e+00 + Choice_9_6_3 _C319 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_4 _C49 1.000000000000e+00 + Choice_9_6_4 _C303 1.000000000000e+00 + Choice_9_6_4 _C310 1.000000000000e+00 + Choice_9_6_4 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_5 _C50 1.000000000000e+00 + Choice_9_6_5 _C303 1.000000000000e+00 + Choice_9_6_5 _C311 1.000000000000e+00 + Choice_9_6_5 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_6 _C51 1.000000000000e+00 + Choice_9_6_6 _C303 1.000000000000e+00 + Choice_9_6_6 _C312 1.000000000000e+00 + Choice_9_6_6 _C320 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_7 _C52 1.000000000000e+00 + Choice_9_6_7 _C303 1.000000000000e+00 + Choice_9_6_7 _C313 1.000000000000e+00 + Choice_9_6_7 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_8 _C53 1.000000000000e+00 + Choice_9_6_8 _C303 1.000000000000e+00 + Choice_9_6_8 _C314 1.000000000000e+00 + Choice_9_6_8 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_6_9 _C54 1.000000000000e+00 + Choice_9_6_9 _C303 1.000000000000e+00 + Choice_9_6_9 _C315 1.000000000000e+00 + Choice_9_6_9 _C321 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_1 _C55 1.000000000000e+00 + Choice_9_7_1 _C304 1.000000000000e+00 + Choice_9_7_1 _C307 1.000000000000e+00 + Choice_9_7_1 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_2 _C56 1.000000000000e+00 + Choice_9_7_2 _C304 1.000000000000e+00 + Choice_9_7_2 _C308 1.000000000000e+00 + Choice_9_7_2 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_3 _C57 1.000000000000e+00 + Choice_9_7_3 _C304 1.000000000000e+00 + Choice_9_7_3 _C309 1.000000000000e+00 + Choice_9_7_3 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_4 _C58 1.000000000000e+00 + Choice_9_7_4 _C304 1.000000000000e+00 + Choice_9_7_4 _C310 1.000000000000e+00 + Choice_9_7_4 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_5 _C59 1.000000000000e+00 + Choice_9_7_5 _C304 1.000000000000e+00 + Choice_9_7_5 _C311 1.000000000000e+00 + Choice_9_7_5 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_6 _C60 1.000000000000e+00 + Choice_9_7_6 _C304 1.000000000000e+00 + Choice_9_7_6 _C312 1.000000000000e+00 + Choice_9_7_6 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_7 _C61 1.000000000000e+00 + Choice_9_7_7 _C304 1.000000000000e+00 + Choice_9_7_7 _C313 1.000000000000e+00 + Choice_9_7_7 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_8 _C62 1.000000000000e+00 + Choice_9_7_8 _C304 1.000000000000e+00 + Choice_9_7_8 _C314 1.000000000000e+00 + Choice_9_7_8 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_7_9 _C63 1.000000000000e+00 + Choice_9_7_9 _C304 1.000000000000e+00 + Choice_9_7_9 _C315 1.000000000000e+00 + Choice_9_7_9 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_1 _C64 1.000000000000e+00 + Choice_9_8_1 _C305 1.000000000000e+00 + Choice_9_8_1 _C307 1.000000000000e+00 + Choice_9_8_1 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_2 _C65 1.000000000000e+00 + Choice_9_8_2 _C305 1.000000000000e+00 + Choice_9_8_2 _C308 1.000000000000e+00 + Choice_9_8_2 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_3 _C66 1.000000000000e+00 + Choice_9_8_3 _C305 1.000000000000e+00 + Choice_9_8_3 _C309 1.000000000000e+00 + Choice_9_8_3 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_4 _C67 1.000000000000e+00 + Choice_9_8_4 _C305 1.000000000000e+00 + Choice_9_8_4 _C310 1.000000000000e+00 + Choice_9_8_4 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_5 _C68 1.000000000000e+00 + Choice_9_8_5 _C305 1.000000000000e+00 + Choice_9_8_5 _C311 1.000000000000e+00 + Choice_9_8_5 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_6 _C69 1.000000000000e+00 + Choice_9_8_6 _C305 1.000000000000e+00 + Choice_9_8_6 _C312 1.000000000000e+00 + Choice_9_8_6 _C323 1.000000000000e+00 + Choice_9_8_6 _C345 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_7 _C70 1.000000000000e+00 + Choice_9_8_7 _C305 1.000000000000e+00 + Choice_9_8_7 _C313 1.000000000000e+00 + Choice_9_8_7 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_8 _C71 1.000000000000e+00 + Choice_9_8_8 _C305 1.000000000000e+00 + Choice_9_8_8 _C314 1.000000000000e+00 + Choice_9_8_8 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_8_9 _C72 1.000000000000e+00 + Choice_9_8_9 _C305 1.000000000000e+00 + Choice_9_8_9 _C315 1.000000000000e+00 + Choice_9_8_9 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_1 _C73 1.000000000000e+00 + Choice_9_9_1 _C306 1.000000000000e+00 + Choice_9_9_1 _C307 1.000000000000e+00 + Choice_9_9_1 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_2 _C74 1.000000000000e+00 + Choice_9_9_2 _C306 1.000000000000e+00 + Choice_9_9_2 _C308 1.000000000000e+00 + Choice_9_9_2 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_3 _C75 1.000000000000e+00 + Choice_9_9_3 _C306 1.000000000000e+00 + Choice_9_9_3 _C309 1.000000000000e+00 + Choice_9_9_3 _C322 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_4 _C76 1.000000000000e+00 + Choice_9_9_4 _C306 1.000000000000e+00 + Choice_9_9_4 _C310 1.000000000000e+00 + Choice_9_9_4 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_5 _C77 1.000000000000e+00 + Choice_9_9_5 _C306 1.000000000000e+00 + Choice_9_9_5 _C311 1.000000000000e+00 + Choice_9_9_5 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_6 _C78 1.000000000000e+00 + Choice_9_9_6 _C306 1.000000000000e+00 + Choice_9_9_6 _C312 1.000000000000e+00 + Choice_9_9_6 _C323 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_7 _C79 1.000000000000e+00 + Choice_9_9_7 _C306 1.000000000000e+00 + Choice_9_9_7 _C313 1.000000000000e+00 + Choice_9_9_7 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_8 _C80 1.000000000000e+00 + Choice_9_9_8 _C306 1.000000000000e+00 + Choice_9_9_8 _C314 1.000000000000e+00 + Choice_9_9_8 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + MARK 'MARKER' 'INTORG' + Choice_9_9_9 _C81 1.000000000000e+00 + Choice_9_9_9 _C306 1.000000000000e+00 + Choice_9_9_9 _C315 1.000000000000e+00 + Choice_9_9_9 _C324 1.000000000000e+00 + MARK 'MARKER' 'INTEND' + __dummy OBJ 1.000000000000e+00 +RHS + RHS _C1 1.000000000000e+00 + RHS _C2 1.000000000000e+00 + RHS _C3 1.000000000000e+00 + RHS _C4 1.000000000000e+00 + RHS _C5 1.000000000000e+00 + RHS _C6 1.000000000000e+00 + RHS _C7 1.000000000000e+00 + RHS _C8 1.000000000000e+00 + RHS _C9 1.000000000000e+00 + RHS _C10 1.000000000000e+00 + RHS _C11 1.000000000000e+00 + RHS _C12 1.000000000000e+00 + RHS _C13 1.000000000000e+00 + RHS _C14 1.000000000000e+00 + RHS _C15 1.000000000000e+00 + RHS _C16 1.000000000000e+00 + RHS _C17 1.000000000000e+00 + RHS _C18 1.000000000000e+00 + RHS _C19 1.000000000000e+00 + RHS _C20 1.000000000000e+00 + RHS _C21 1.000000000000e+00 + RHS _C22 1.000000000000e+00 + RHS _C23 1.000000000000e+00 + RHS _C24 1.000000000000e+00 + RHS _C25 1.000000000000e+00 + RHS _C26 1.000000000000e+00 + RHS _C27 1.000000000000e+00 + RHS _C28 1.000000000000e+00 + RHS _C29 1.000000000000e+00 + RHS _C30 1.000000000000e+00 + RHS _C31 1.000000000000e+00 + RHS _C32 1.000000000000e+00 + RHS _C33 1.000000000000e+00 + RHS _C34 1.000000000000e+00 + RHS _C35 1.000000000000e+00 + RHS _C36 1.000000000000e+00 + RHS _C37 1.000000000000e+00 + RHS _C38 1.000000000000e+00 + RHS _C39 1.000000000000e+00 + RHS _C40 1.000000000000e+00 + RHS _C41 1.000000000000e+00 + RHS _C42 1.000000000000e+00 + RHS _C43 1.000000000000e+00 + RHS _C44 1.000000000000e+00 + RHS _C45 1.000000000000e+00 + RHS _C46 1.000000000000e+00 + RHS _C47 1.000000000000e+00 + RHS _C48 1.000000000000e+00 + RHS _C49 1.000000000000e+00 + RHS _C50 1.000000000000e+00 + RHS _C51 1.000000000000e+00 + RHS _C52 1.000000000000e+00 + RHS _C53 1.000000000000e+00 + RHS _C54 1.000000000000e+00 + RHS _C55 1.000000000000e+00 + RHS _C56 1.000000000000e+00 + RHS _C57 1.000000000000e+00 + RHS _C58 1.000000000000e+00 + RHS _C59 1.000000000000e+00 + RHS _C60 1.000000000000e+00 + RHS _C61 1.000000000000e+00 + RHS _C62 1.000000000000e+00 + RHS _C63 1.000000000000e+00 + RHS _C64 1.000000000000e+00 + RHS _C65 1.000000000000e+00 + RHS _C66 1.000000000000e+00 + RHS _C67 1.000000000000e+00 + RHS _C68 1.000000000000e+00 + RHS _C69 1.000000000000e+00 + RHS _C70 1.000000000000e+00 + RHS _C71 1.000000000000e+00 + RHS _C72 1.000000000000e+00 + RHS _C73 1.000000000000e+00 + RHS _C74 1.000000000000e+00 + RHS _C75 1.000000000000e+00 + RHS _C76 1.000000000000e+00 + RHS _C77 1.000000000000e+00 + RHS _C78 1.000000000000e+00 + RHS _C79 1.000000000000e+00 + RHS _C80 1.000000000000e+00 + RHS _C81 1.000000000000e+00 + RHS _C82 1.000000000000e+00 + RHS _C83 1.000000000000e+00 + RHS _C84 1.000000000000e+00 + RHS _C85 1.000000000000e+00 + RHS _C86 1.000000000000e+00 + RHS _C87 1.000000000000e+00 + RHS _C88 1.000000000000e+00 + RHS _C89 1.000000000000e+00 + RHS _C90 1.000000000000e+00 + RHS _C91 1.000000000000e+00 + RHS _C92 1.000000000000e+00 + RHS _C93 1.000000000000e+00 + RHS _C94 1.000000000000e+00 + RHS _C95 1.000000000000e+00 + RHS _C96 1.000000000000e+00 + RHS _C97 1.000000000000e+00 + RHS _C98 1.000000000000e+00 + RHS _C99 1.000000000000e+00 + RHS _C100 1.000000000000e+00 + RHS _C101 1.000000000000e+00 + RHS _C102 1.000000000000e+00 + RHS _C103 1.000000000000e+00 + RHS _C104 1.000000000000e+00 + RHS _C105 1.000000000000e+00 + RHS _C106 1.000000000000e+00 + RHS _C107 1.000000000000e+00 + RHS _C108 1.000000000000e+00 + RHS _C109 1.000000000000e+00 + RHS _C110 1.000000000000e+00 + RHS _C111 1.000000000000e+00 + RHS _C112 1.000000000000e+00 + RHS _C113 1.000000000000e+00 + RHS _C114 1.000000000000e+00 + RHS _C115 1.000000000000e+00 + RHS _C116 1.000000000000e+00 + RHS _C117 1.000000000000e+00 + RHS _C118 1.000000000000e+00 + RHS _C119 1.000000000000e+00 + RHS _C120 1.000000000000e+00 + RHS _C121 1.000000000000e+00 + RHS _C122 1.000000000000e+00 + RHS _C123 1.000000000000e+00 + RHS _C124 1.000000000000e+00 + RHS _C125 1.000000000000e+00 + RHS _C126 1.000000000000e+00 + RHS _C127 1.000000000000e+00 + RHS _C128 1.000000000000e+00 + RHS _C129 1.000000000000e+00 + RHS _C130 1.000000000000e+00 + RHS _C131 1.000000000000e+00 + RHS _C132 1.000000000000e+00 + RHS _C133 1.000000000000e+00 + RHS _C134 1.000000000000e+00 + RHS _C135 1.000000000000e+00 + RHS _C136 1.000000000000e+00 + RHS _C137 1.000000000000e+00 + RHS _C138 1.000000000000e+00 + RHS _C139 1.000000000000e+00 + RHS _C140 1.000000000000e+00 + RHS _C141 1.000000000000e+00 + RHS _C142 1.000000000000e+00 + RHS _C143 1.000000000000e+00 + RHS _C144 1.000000000000e+00 + RHS _C145 1.000000000000e+00 + RHS _C146 1.000000000000e+00 + RHS _C147 1.000000000000e+00 + RHS _C148 1.000000000000e+00 + RHS _C149 1.000000000000e+00 + RHS _C150 1.000000000000e+00 + RHS _C151 1.000000000000e+00 + RHS _C152 1.000000000000e+00 + RHS _C153 1.000000000000e+00 + RHS _C154 1.000000000000e+00 + RHS _C155 1.000000000000e+00 + RHS _C156 1.000000000000e+00 + RHS _C157 1.000000000000e+00 + RHS _C158 1.000000000000e+00 + RHS _C159 1.000000000000e+00 + RHS _C160 1.000000000000e+00 + RHS _C161 1.000000000000e+00 + RHS _C162 1.000000000000e+00 + RHS _C163 1.000000000000e+00 + RHS _C164 1.000000000000e+00 + RHS _C165 1.000000000000e+00 + RHS _C166 1.000000000000e+00 + RHS _C167 1.000000000000e+00 + RHS _C168 1.000000000000e+00 + RHS _C169 1.000000000000e+00 + RHS _C170 1.000000000000e+00 + RHS _C171 1.000000000000e+00 + RHS _C172 1.000000000000e+00 + RHS _C173 1.000000000000e+00 + RHS _C174 1.000000000000e+00 + RHS _C175 1.000000000000e+00 + RHS _C176 1.000000000000e+00 + RHS _C177 1.000000000000e+00 + RHS _C178 1.000000000000e+00 + RHS _C179 1.000000000000e+00 + RHS _C180 1.000000000000e+00 + RHS _C181 1.000000000000e+00 + RHS _C182 1.000000000000e+00 + RHS _C183 1.000000000000e+00 + RHS _C184 1.000000000000e+00 + RHS _C185 1.000000000000e+00 + RHS _C186 1.000000000000e+00 + RHS _C187 1.000000000000e+00 + RHS _C188 1.000000000000e+00 + RHS _C189 1.000000000000e+00 + RHS _C190 1.000000000000e+00 + RHS _C191 1.000000000000e+00 + RHS _C192 1.000000000000e+00 + RHS _C193 1.000000000000e+00 + RHS _C194 1.000000000000e+00 + RHS _C195 1.000000000000e+00 + RHS _C196 1.000000000000e+00 + RHS _C197 1.000000000000e+00 + RHS _C198 1.000000000000e+00 + RHS _C199 1.000000000000e+00 + RHS _C200 1.000000000000e+00 + RHS _C201 1.000000000000e+00 + RHS _C202 1.000000000000e+00 + RHS _C203 1.000000000000e+00 + RHS _C204 1.000000000000e+00 + RHS _C205 1.000000000000e+00 + RHS _C206 1.000000000000e+00 + RHS _C207 1.000000000000e+00 + RHS _C208 1.000000000000e+00 + RHS _C209 1.000000000000e+00 + RHS _C210 1.000000000000e+00 + RHS _C211 1.000000000000e+00 + RHS _C212 1.000000000000e+00 + RHS _C213 1.000000000000e+00 + RHS _C214 1.000000000000e+00 + RHS _C215 1.000000000000e+00 + RHS _C216 1.000000000000e+00 + RHS _C217 1.000000000000e+00 + RHS _C218 1.000000000000e+00 + RHS _C219 1.000000000000e+00 + RHS _C220 1.000000000000e+00 + RHS _C221 1.000000000000e+00 + RHS _C222 1.000000000000e+00 + RHS _C223 1.000000000000e+00 + RHS _C224 1.000000000000e+00 + RHS _C225 1.000000000000e+00 + RHS _C226 1.000000000000e+00 + RHS _C227 1.000000000000e+00 + RHS _C228 1.000000000000e+00 + RHS _C229 1.000000000000e+00 + RHS _C230 1.000000000000e+00 + RHS _C231 1.000000000000e+00 + RHS _C232 1.000000000000e+00 + RHS _C233 1.000000000000e+00 + RHS _C234 1.000000000000e+00 + RHS _C235 1.000000000000e+00 + RHS _C236 1.000000000000e+00 + RHS _C237 1.000000000000e+00 + RHS _C238 1.000000000000e+00 + RHS _C239 1.000000000000e+00 + RHS _C240 1.000000000000e+00 + RHS _C241 1.000000000000e+00 + RHS _C242 1.000000000000e+00 + RHS _C243 1.000000000000e+00 + RHS _C244 1.000000000000e+00 + RHS _C245 1.000000000000e+00 + RHS _C246 1.000000000000e+00 + RHS _C247 1.000000000000e+00 + RHS _C248 1.000000000000e+00 + RHS _C249 1.000000000000e+00 + RHS _C250 1.000000000000e+00 + RHS _C251 1.000000000000e+00 + RHS _C252 1.000000000000e+00 + RHS _C253 1.000000000000e+00 + RHS _C254 1.000000000000e+00 + RHS _C255 1.000000000000e+00 + RHS _C256 1.000000000000e+00 + RHS _C257 1.000000000000e+00 + RHS _C258 1.000000000000e+00 + RHS _C259 1.000000000000e+00 + RHS _C260 1.000000000000e+00 + RHS _C261 1.000000000000e+00 + RHS _C262 1.000000000000e+00 + RHS _C263 1.000000000000e+00 + RHS _C264 1.000000000000e+00 + RHS _C265 1.000000000000e+00 + RHS _C266 1.000000000000e+00 + RHS _C267 1.000000000000e+00 + RHS _C268 1.000000000000e+00 + RHS _C269 1.000000000000e+00 + RHS _C270 1.000000000000e+00 + RHS _C271 1.000000000000e+00 + RHS _C272 1.000000000000e+00 + RHS _C273 1.000000000000e+00 + RHS _C274 1.000000000000e+00 + RHS _C275 1.000000000000e+00 + RHS _C276 1.000000000000e+00 + RHS _C277 1.000000000000e+00 + RHS _C278 1.000000000000e+00 + RHS _C279 1.000000000000e+00 + RHS _C280 1.000000000000e+00 + RHS _C281 1.000000000000e+00 + RHS _C282 1.000000000000e+00 + RHS _C283 1.000000000000e+00 + RHS _C284 1.000000000000e+00 + RHS _C285 1.000000000000e+00 + RHS _C286 1.000000000000e+00 + RHS _C287 1.000000000000e+00 + RHS _C288 1.000000000000e+00 + RHS _C289 1.000000000000e+00 + RHS _C290 1.000000000000e+00 + RHS _C291 1.000000000000e+00 + RHS _C292 1.000000000000e+00 + RHS _C293 1.000000000000e+00 + RHS _C294 1.000000000000e+00 + RHS _C295 1.000000000000e+00 + RHS _C296 1.000000000000e+00 + RHS _C297 1.000000000000e+00 + RHS _C298 1.000000000000e+00 + RHS _C299 1.000000000000e+00 + RHS _C300 1.000000000000e+00 + RHS _C301 1.000000000000e+00 + RHS _C302 1.000000000000e+00 + RHS _C303 1.000000000000e+00 + RHS _C304 1.000000000000e+00 + RHS _C305 1.000000000000e+00 + RHS _C306 1.000000000000e+00 + RHS _C307 1.000000000000e+00 + RHS _C308 1.000000000000e+00 + RHS _C309 1.000000000000e+00 + RHS _C310 1.000000000000e+00 + RHS _C311 1.000000000000e+00 + RHS _C312 1.000000000000e+00 + RHS _C313 1.000000000000e+00 + RHS _C314 1.000000000000e+00 + RHS _C315 1.000000000000e+00 + RHS _C316 1.000000000000e+00 + RHS _C317 1.000000000000e+00 + RHS _C318 1.000000000000e+00 + RHS _C319 1.000000000000e+00 + RHS _C320 1.000000000000e+00 + RHS _C321 1.000000000000e+00 + RHS _C322 1.000000000000e+00 + RHS _C323 1.000000000000e+00 + RHS _C324 1.000000000000e+00 + RHS _C325 1.000000000000e+00 + RHS _C326 1.000000000000e+00 + RHS _C327 1.000000000000e+00 + RHS _C328 1.000000000000e+00 + RHS _C329 1.000000000000e+00 + RHS _C330 1.000000000000e+00 + RHS _C331 1.000000000000e+00 + RHS _C332 1.000000000000e+00 + RHS _C333 1.000000000000e+00 + RHS _C334 1.000000000000e+00 + RHS _C335 1.000000000000e+00 + RHS _C336 1.000000000000e+00 + RHS _C337 1.000000000000e+00 + RHS _C338 1.000000000000e+00 + RHS _C339 1.000000000000e+00 + RHS _C340 1.000000000000e+00 + RHS _C341 1.000000000000e+00 + RHS _C342 1.000000000000e+00 + RHS _C343 1.000000000000e+00 + RHS _C344 1.000000000000e+00 + RHS _C345 1.000000000000e+00 + RHS _C346 1.000000000000e+00 + RHS _C347 1.000000000000e+00 + RHS _C348 1.000000000000e+00 + RHS _C349 1.000000000000e+00 + RHS _C350 1.000000000000e+00 + RHS _C351 1.000000000000e+00 + RHS _C352 1.000000000000e+00 + RHS _C353 1.000000000000e+00 +BOUNDS + BV BND Choice_1_1_1 + BV BND Choice_1_1_2 + BV BND Choice_1_1_3 + BV BND Choice_1_1_4 + BV BND Choice_1_1_5 + BV BND Choice_1_1_6 + BV BND Choice_1_1_7 + BV BND Choice_1_1_8 + BV BND Choice_1_1_9 + BV BND Choice_1_2_1 + BV BND Choice_1_2_2 + BV BND Choice_1_2_3 + BV BND Choice_1_2_4 + BV BND Choice_1_2_5 + BV BND Choice_1_2_6 + BV BND Choice_1_2_7 + BV BND Choice_1_2_8 + BV BND Choice_1_2_9 + BV BND Choice_1_3_1 + BV BND Choice_1_3_2 + BV BND Choice_1_3_3 + BV BND Choice_1_3_4 + BV BND Choice_1_3_5 + BV BND Choice_1_3_6 + BV BND Choice_1_3_7 + BV BND Choice_1_3_8 + BV BND Choice_1_3_9 + BV BND Choice_1_4_1 + BV BND Choice_1_4_2 + BV BND Choice_1_4_3 + BV BND Choice_1_4_4 + BV BND Choice_1_4_5 + BV BND Choice_1_4_6 + BV BND Choice_1_4_7 + BV BND Choice_1_4_8 + BV BND Choice_1_4_9 + BV BND Choice_1_5_1 + BV BND Choice_1_5_2 + BV BND Choice_1_5_3 + BV BND Choice_1_5_4 + BV BND Choice_1_5_5 + BV BND Choice_1_5_6 + BV BND Choice_1_5_7 + BV BND Choice_1_5_8 + BV BND Choice_1_5_9 + BV BND Choice_1_6_1 + BV BND Choice_1_6_2 + BV BND Choice_1_6_3 + BV BND Choice_1_6_4 + BV BND Choice_1_6_5 + BV BND Choice_1_6_6 + BV BND Choice_1_6_7 + BV BND Choice_1_6_8 + BV BND Choice_1_6_9 + BV BND Choice_1_7_1 + BV BND Choice_1_7_2 + BV BND Choice_1_7_3 + BV BND Choice_1_7_4 + BV BND Choice_1_7_5 + BV BND Choice_1_7_6 + BV BND Choice_1_7_7 + BV BND Choice_1_7_8 + BV BND Choice_1_7_9 + BV BND Choice_1_8_1 + BV BND Choice_1_8_2 + BV BND Choice_1_8_3 + BV BND Choice_1_8_4 + BV BND Choice_1_8_5 + BV BND Choice_1_8_6 + BV BND Choice_1_8_7 + BV BND Choice_1_8_8 + BV BND Choice_1_8_9 + BV BND Choice_1_9_1 + BV BND Choice_1_9_2 + BV BND Choice_1_9_3 + BV BND Choice_1_9_4 + BV BND Choice_1_9_5 + BV BND Choice_1_9_6 + BV BND Choice_1_9_7 + BV BND Choice_1_9_8 + BV BND Choice_1_9_9 + BV BND Choice_2_1_1 + BV BND Choice_2_1_2 + BV BND Choice_2_1_3 + BV BND Choice_2_1_4 + BV BND Choice_2_1_5 + BV BND Choice_2_1_6 + BV BND Choice_2_1_7 + BV BND Choice_2_1_8 + BV BND Choice_2_1_9 + BV BND Choice_2_2_1 + BV BND Choice_2_2_2 + BV BND Choice_2_2_3 + BV BND Choice_2_2_4 + BV BND Choice_2_2_5 + BV BND Choice_2_2_6 + BV BND Choice_2_2_7 + BV BND Choice_2_2_8 + BV BND Choice_2_2_9 + BV BND Choice_2_3_1 + BV BND Choice_2_3_2 + BV BND Choice_2_3_3 + BV BND Choice_2_3_4 + BV BND Choice_2_3_5 + BV BND Choice_2_3_6 + BV BND Choice_2_3_7 + BV BND Choice_2_3_8 + BV BND Choice_2_3_9 + BV BND Choice_2_4_1 + BV BND Choice_2_4_2 + BV BND Choice_2_4_3 + BV BND Choice_2_4_4 + BV BND Choice_2_4_5 + BV BND Choice_2_4_6 + BV BND Choice_2_4_7 + BV BND Choice_2_4_8 + BV BND Choice_2_4_9 + BV BND Choice_2_5_1 + BV BND Choice_2_5_2 + BV BND Choice_2_5_3 + BV BND Choice_2_5_4 + BV BND Choice_2_5_5 + BV BND Choice_2_5_6 + BV BND Choice_2_5_7 + BV BND Choice_2_5_8 + BV BND Choice_2_5_9 + BV BND Choice_2_6_1 + BV BND Choice_2_6_2 + BV BND Choice_2_6_3 + BV BND Choice_2_6_4 + BV BND Choice_2_6_5 + BV BND Choice_2_6_6 + BV BND Choice_2_6_7 + BV BND Choice_2_6_8 + BV BND Choice_2_6_9 + BV BND Choice_2_7_1 + BV BND Choice_2_7_2 + BV BND Choice_2_7_3 + BV BND Choice_2_7_4 + BV BND Choice_2_7_5 + BV BND Choice_2_7_6 + BV BND Choice_2_7_7 + BV BND Choice_2_7_8 + BV BND Choice_2_7_9 + BV BND Choice_2_8_1 + BV BND Choice_2_8_2 + BV BND Choice_2_8_3 + BV BND Choice_2_8_4 + BV BND Choice_2_8_5 + BV BND Choice_2_8_6 + BV BND Choice_2_8_7 + BV BND Choice_2_8_8 + BV BND Choice_2_8_9 + BV BND Choice_2_9_1 + BV BND Choice_2_9_2 + BV BND Choice_2_9_3 + BV BND Choice_2_9_4 + BV BND Choice_2_9_5 + BV BND Choice_2_9_6 + BV BND Choice_2_9_7 + BV BND Choice_2_9_8 + BV BND Choice_2_9_9 + BV BND Choice_3_1_1 + BV BND Choice_3_1_2 + BV BND Choice_3_1_3 + BV BND Choice_3_1_4 + BV BND Choice_3_1_5 + BV BND Choice_3_1_6 + BV BND Choice_3_1_7 + BV BND Choice_3_1_8 + BV BND Choice_3_1_9 + BV BND Choice_3_2_1 + BV BND Choice_3_2_2 + BV BND Choice_3_2_3 + BV BND Choice_3_2_4 + BV BND Choice_3_2_5 + BV BND Choice_3_2_6 + BV BND Choice_3_2_7 + BV BND Choice_3_2_8 + BV BND Choice_3_2_9 + BV BND Choice_3_3_1 + BV BND Choice_3_3_2 + BV BND Choice_3_3_3 + BV BND Choice_3_3_4 + BV BND Choice_3_3_5 + BV BND Choice_3_3_6 + BV BND Choice_3_3_7 + BV BND Choice_3_3_8 + BV BND Choice_3_3_9 + BV BND Choice_3_4_1 + BV BND Choice_3_4_2 + BV BND Choice_3_4_3 + BV BND Choice_3_4_4 + BV BND Choice_3_4_5 + BV BND Choice_3_4_6 + BV BND Choice_3_4_7 + BV BND Choice_3_4_8 + BV BND Choice_3_4_9 + BV BND Choice_3_5_1 + BV BND Choice_3_5_2 + BV BND Choice_3_5_3 + BV BND Choice_3_5_4 + BV BND Choice_3_5_5 + BV BND Choice_3_5_6 + BV BND Choice_3_5_7 + BV BND Choice_3_5_8 + BV BND Choice_3_5_9 + BV BND Choice_3_6_1 + BV BND Choice_3_6_2 + BV BND Choice_3_6_3 + BV BND Choice_3_6_4 + BV BND Choice_3_6_5 + BV BND Choice_3_6_6 + BV BND Choice_3_6_7 + BV BND Choice_3_6_8 + BV BND Choice_3_6_9 + BV BND Choice_3_7_1 + BV BND Choice_3_7_2 + BV BND Choice_3_7_3 + BV BND Choice_3_7_4 + BV BND Choice_3_7_5 + BV BND Choice_3_7_6 + BV BND Choice_3_7_7 + BV BND Choice_3_7_8 + BV BND Choice_3_7_9 + BV BND Choice_3_8_1 + BV BND Choice_3_8_2 + BV BND Choice_3_8_3 + BV BND Choice_3_8_4 + BV BND Choice_3_8_5 + BV BND Choice_3_8_6 + BV BND Choice_3_8_7 + BV BND Choice_3_8_8 + BV BND Choice_3_8_9 + BV BND Choice_3_9_1 + BV BND Choice_3_9_2 + BV BND Choice_3_9_3 + BV BND Choice_3_9_4 + BV BND Choice_3_9_5 + BV BND Choice_3_9_6 + BV BND Choice_3_9_7 + BV BND Choice_3_9_8 + BV BND Choice_3_9_9 + BV BND Choice_4_1_1 + BV BND Choice_4_1_2 + BV BND Choice_4_1_3 + BV BND Choice_4_1_4 + BV BND Choice_4_1_5 + BV BND Choice_4_1_6 + BV BND Choice_4_1_7 + BV BND Choice_4_1_8 + BV BND Choice_4_1_9 + BV BND Choice_4_2_1 + BV BND Choice_4_2_2 + BV BND Choice_4_2_3 + BV BND Choice_4_2_4 + BV BND Choice_4_2_5 + BV BND Choice_4_2_6 + BV BND Choice_4_2_7 + BV BND Choice_4_2_8 + BV BND Choice_4_2_9 + BV BND Choice_4_3_1 + BV BND Choice_4_3_2 + BV BND Choice_4_3_3 + BV BND Choice_4_3_4 + BV BND Choice_4_3_5 + BV BND Choice_4_3_6 + BV BND Choice_4_3_7 + BV BND Choice_4_3_8 + BV BND Choice_4_3_9 + BV BND Choice_4_4_1 + BV BND Choice_4_4_2 + BV BND Choice_4_4_3 + BV BND Choice_4_4_4 + BV BND Choice_4_4_5 + BV BND Choice_4_4_6 + BV BND Choice_4_4_7 + BV BND Choice_4_4_8 + BV BND Choice_4_4_9 + BV BND Choice_4_5_1 + BV BND Choice_4_5_2 + BV BND Choice_4_5_3 + BV BND Choice_4_5_4 + BV BND Choice_4_5_5 + BV BND Choice_4_5_6 + BV BND Choice_4_5_7 + BV BND Choice_4_5_8 + BV BND Choice_4_5_9 + BV BND Choice_4_6_1 + BV BND Choice_4_6_2 + BV BND Choice_4_6_3 + BV BND Choice_4_6_4 + BV BND Choice_4_6_5 + BV BND Choice_4_6_6 + BV BND Choice_4_6_7 + BV BND Choice_4_6_8 + BV BND Choice_4_6_9 + BV BND Choice_4_7_1 + BV BND Choice_4_7_2 + BV BND Choice_4_7_3 + BV BND Choice_4_7_4 + BV BND Choice_4_7_5 + BV BND Choice_4_7_6 + BV BND Choice_4_7_7 + BV BND Choice_4_7_8 + BV BND Choice_4_7_9 + BV BND Choice_4_8_1 + BV BND Choice_4_8_2 + BV BND Choice_4_8_3 + BV BND Choice_4_8_4 + BV BND Choice_4_8_5 + BV BND Choice_4_8_6 + BV BND Choice_4_8_7 + BV BND Choice_4_8_8 + BV BND Choice_4_8_9 + BV BND Choice_4_9_1 + BV BND Choice_4_9_2 + BV BND Choice_4_9_3 + BV BND Choice_4_9_4 + BV BND Choice_4_9_5 + BV BND Choice_4_9_6 + BV BND Choice_4_9_7 + BV BND Choice_4_9_8 + BV BND Choice_4_9_9 + BV BND Choice_5_1_1 + BV BND Choice_5_1_2 + BV BND Choice_5_1_3 + BV BND Choice_5_1_4 + BV BND Choice_5_1_5 + BV BND Choice_5_1_6 + BV BND Choice_5_1_7 + BV BND Choice_5_1_8 + BV BND Choice_5_1_9 + BV BND Choice_5_2_1 + BV BND Choice_5_2_2 + BV BND Choice_5_2_3 + BV BND Choice_5_2_4 + BV BND Choice_5_2_5 + BV BND Choice_5_2_6 + BV BND Choice_5_2_7 + BV BND Choice_5_2_8 + BV BND Choice_5_2_9 + BV BND Choice_5_3_1 + BV BND Choice_5_3_2 + BV BND Choice_5_3_3 + BV BND Choice_5_3_4 + BV BND Choice_5_3_5 + BV BND Choice_5_3_6 + BV BND Choice_5_3_7 + BV BND Choice_5_3_8 + BV BND Choice_5_3_9 + BV BND Choice_5_4_1 + BV BND Choice_5_4_2 + BV BND Choice_5_4_3 + BV BND Choice_5_4_4 + BV BND Choice_5_4_5 + BV BND Choice_5_4_6 + BV BND Choice_5_4_7 + BV BND Choice_5_4_8 + BV BND Choice_5_4_9 + BV BND Choice_5_5_1 + BV BND Choice_5_5_2 + BV BND Choice_5_5_3 + BV BND Choice_5_5_4 + BV BND Choice_5_5_5 + BV BND Choice_5_5_6 + BV BND Choice_5_5_7 + BV BND Choice_5_5_8 + BV BND Choice_5_5_9 + BV BND Choice_5_6_1 + BV BND Choice_5_6_2 + BV BND Choice_5_6_3 + BV BND Choice_5_6_4 + BV BND Choice_5_6_5 + BV BND Choice_5_6_6 + BV BND Choice_5_6_7 + BV BND Choice_5_6_8 + BV BND Choice_5_6_9 + BV BND Choice_5_7_1 + BV BND Choice_5_7_2 + BV BND Choice_5_7_3 + BV BND Choice_5_7_4 + BV BND Choice_5_7_5 + BV BND Choice_5_7_6 + BV BND Choice_5_7_7 + BV BND Choice_5_7_8 + BV BND Choice_5_7_9 + BV BND Choice_5_8_1 + BV BND Choice_5_8_2 + BV BND Choice_5_8_3 + BV BND Choice_5_8_4 + BV BND Choice_5_8_5 + BV BND Choice_5_8_6 + BV BND Choice_5_8_7 + BV BND Choice_5_8_8 + BV BND Choice_5_8_9 + BV BND Choice_5_9_1 + BV BND Choice_5_9_2 + BV BND Choice_5_9_3 + BV BND Choice_5_9_4 + BV BND Choice_5_9_5 + BV BND Choice_5_9_6 + BV BND Choice_5_9_7 + BV BND Choice_5_9_8 + BV BND Choice_5_9_9 + BV BND Choice_6_1_1 + BV BND Choice_6_1_2 + BV BND Choice_6_1_3 + BV BND Choice_6_1_4 + BV BND Choice_6_1_5 + BV BND Choice_6_1_6 + BV BND Choice_6_1_7 + BV BND Choice_6_1_8 + BV BND Choice_6_1_9 + BV BND Choice_6_2_1 + BV BND Choice_6_2_2 + BV BND Choice_6_2_3 + BV BND Choice_6_2_4 + BV BND Choice_6_2_5 + BV BND Choice_6_2_6 + BV BND Choice_6_2_7 + BV BND Choice_6_2_8 + BV BND Choice_6_2_9 + BV BND Choice_6_3_1 + BV BND Choice_6_3_2 + BV BND Choice_6_3_3 + BV BND Choice_6_3_4 + BV BND Choice_6_3_5 + BV BND Choice_6_3_6 + BV BND Choice_6_3_7 + BV BND Choice_6_3_8 + BV BND Choice_6_3_9 + BV BND Choice_6_4_1 + BV BND Choice_6_4_2 + BV BND Choice_6_4_3 + BV BND Choice_6_4_4 + BV BND Choice_6_4_5 + BV BND Choice_6_4_6 + BV BND Choice_6_4_7 + BV BND Choice_6_4_8 + BV BND Choice_6_4_9 + BV BND Choice_6_5_1 + BV BND Choice_6_5_2 + BV BND Choice_6_5_3 + BV BND Choice_6_5_4 + BV BND Choice_6_5_5 + BV BND Choice_6_5_6 + BV BND Choice_6_5_7 + BV BND Choice_6_5_8 + BV BND Choice_6_5_9 + BV BND Choice_6_6_1 + BV BND Choice_6_6_2 + BV BND Choice_6_6_3 + BV BND Choice_6_6_4 + BV BND Choice_6_6_5 + BV BND Choice_6_6_6 + BV BND Choice_6_6_7 + BV BND Choice_6_6_8 + BV BND Choice_6_6_9 + BV BND Choice_6_7_1 + BV BND Choice_6_7_2 + BV BND Choice_6_7_3 + BV BND Choice_6_7_4 + BV BND Choice_6_7_5 + BV BND Choice_6_7_6 + BV BND Choice_6_7_7 + BV BND Choice_6_7_8 + BV BND Choice_6_7_9 + BV BND Choice_6_8_1 + BV BND Choice_6_8_2 + BV BND Choice_6_8_3 + BV BND Choice_6_8_4 + BV BND Choice_6_8_5 + BV BND Choice_6_8_6 + BV BND Choice_6_8_7 + BV BND Choice_6_8_8 + BV BND Choice_6_8_9 + BV BND Choice_6_9_1 + BV BND Choice_6_9_2 + BV BND Choice_6_9_3 + BV BND Choice_6_9_4 + BV BND Choice_6_9_5 + BV BND Choice_6_9_6 + BV BND Choice_6_9_7 + BV BND Choice_6_9_8 + BV BND Choice_6_9_9 + BV BND Choice_7_1_1 + BV BND Choice_7_1_2 + BV BND Choice_7_1_3 + BV BND Choice_7_1_4 + BV BND Choice_7_1_5 + BV BND Choice_7_1_6 + BV BND Choice_7_1_7 + BV BND Choice_7_1_8 + BV BND Choice_7_1_9 + BV BND Choice_7_2_1 + BV BND Choice_7_2_2 + BV BND Choice_7_2_3 + BV BND Choice_7_2_4 + BV BND Choice_7_2_5 + BV BND Choice_7_2_6 + BV BND Choice_7_2_7 + BV BND Choice_7_2_8 + BV BND Choice_7_2_9 + BV BND Choice_7_3_1 + BV BND Choice_7_3_2 + BV BND Choice_7_3_3 + BV BND Choice_7_3_4 + BV BND Choice_7_3_5 + BV BND Choice_7_3_6 + BV BND Choice_7_3_7 + BV BND Choice_7_3_8 + BV BND Choice_7_3_9 + BV BND Choice_7_4_1 + BV BND Choice_7_4_2 + BV BND Choice_7_4_3 + BV BND Choice_7_4_4 + BV BND Choice_7_4_5 + BV BND Choice_7_4_6 + BV BND Choice_7_4_7 + BV BND Choice_7_4_8 + BV BND Choice_7_4_9 + BV BND Choice_7_5_1 + BV BND Choice_7_5_2 + BV BND Choice_7_5_3 + BV BND Choice_7_5_4 + BV BND Choice_7_5_5 + BV BND Choice_7_5_6 + BV BND Choice_7_5_7 + BV BND Choice_7_5_8 + BV BND Choice_7_5_9 + BV BND Choice_7_6_1 + BV BND Choice_7_6_2 + BV BND Choice_7_6_3 + BV BND Choice_7_6_4 + BV BND Choice_7_6_5 + BV BND Choice_7_6_6 + BV BND Choice_7_6_7 + BV BND Choice_7_6_8 + BV BND Choice_7_6_9 + BV BND Choice_7_7_1 + BV BND Choice_7_7_2 + BV BND Choice_7_7_3 + BV BND Choice_7_7_4 + BV BND Choice_7_7_5 + BV BND Choice_7_7_6 + BV BND Choice_7_7_7 + BV BND Choice_7_7_8 + BV BND Choice_7_7_9 + BV BND Choice_7_8_1 + BV BND Choice_7_8_2 + BV BND Choice_7_8_3 + BV BND Choice_7_8_4 + BV BND Choice_7_8_5 + BV BND Choice_7_8_6 + BV BND Choice_7_8_7 + BV BND Choice_7_8_8 + BV BND Choice_7_8_9 + BV BND Choice_7_9_1 + BV BND Choice_7_9_2 + BV BND Choice_7_9_3 + BV BND Choice_7_9_4 + BV BND Choice_7_9_5 + BV BND Choice_7_9_6 + BV BND Choice_7_9_7 + BV BND Choice_7_9_8 + BV BND Choice_7_9_9 + BV BND Choice_8_1_1 + BV BND Choice_8_1_2 + BV BND Choice_8_1_3 + BV BND Choice_8_1_4 + BV BND Choice_8_1_5 + BV BND Choice_8_1_6 + BV BND Choice_8_1_7 + BV BND Choice_8_1_8 + BV BND Choice_8_1_9 + BV BND Choice_8_2_1 + BV BND Choice_8_2_2 + BV BND Choice_8_2_3 + BV BND Choice_8_2_4 + BV BND Choice_8_2_5 + BV BND Choice_8_2_6 + BV BND Choice_8_2_7 + BV BND Choice_8_2_8 + BV BND Choice_8_2_9 + BV BND Choice_8_3_1 + BV BND Choice_8_3_2 + BV BND Choice_8_3_3 + BV BND Choice_8_3_4 + BV BND Choice_8_3_5 + BV BND Choice_8_3_6 + BV BND Choice_8_3_7 + BV BND Choice_8_3_8 + BV BND Choice_8_3_9 + BV BND Choice_8_4_1 + BV BND Choice_8_4_2 + BV BND Choice_8_4_3 + BV BND Choice_8_4_4 + BV BND Choice_8_4_5 + BV BND Choice_8_4_6 + BV BND Choice_8_4_7 + BV BND Choice_8_4_8 + BV BND Choice_8_4_9 + BV BND Choice_8_5_1 + BV BND Choice_8_5_2 + BV BND Choice_8_5_3 + BV BND Choice_8_5_4 + BV BND Choice_8_5_5 + BV BND Choice_8_5_6 + BV BND Choice_8_5_7 + BV BND Choice_8_5_8 + BV BND Choice_8_5_9 + BV BND Choice_8_6_1 + BV BND Choice_8_6_2 + BV BND Choice_8_6_3 + BV BND Choice_8_6_4 + BV BND Choice_8_6_5 + BV BND Choice_8_6_6 + BV BND Choice_8_6_7 + BV BND Choice_8_6_8 + BV BND Choice_8_6_9 + BV BND Choice_8_7_1 + BV BND Choice_8_7_2 + BV BND Choice_8_7_3 + BV BND Choice_8_7_4 + BV BND Choice_8_7_5 + BV BND Choice_8_7_6 + BV BND Choice_8_7_7 + BV BND Choice_8_7_8 + BV BND Choice_8_7_9 + BV BND Choice_8_8_1 + BV BND Choice_8_8_2 + BV BND Choice_8_8_3 + BV BND Choice_8_8_4 + BV BND Choice_8_8_5 + BV BND Choice_8_8_6 + BV BND Choice_8_8_7 + BV BND Choice_8_8_8 + BV BND Choice_8_8_9 + BV BND Choice_8_9_1 + BV BND Choice_8_9_2 + BV BND Choice_8_9_3 + BV BND Choice_8_9_4 + BV BND Choice_8_9_5 + BV BND Choice_8_9_6 + BV BND Choice_8_9_7 + BV BND Choice_8_9_8 + BV BND Choice_8_9_9 + BV BND Choice_9_1_1 + BV BND Choice_9_1_2 + BV BND Choice_9_1_3 + BV BND Choice_9_1_4 + BV BND Choice_9_1_5 + BV BND Choice_9_1_6 + BV BND Choice_9_1_7 + BV BND Choice_9_1_8 + BV BND Choice_9_1_9 + BV BND Choice_9_2_1 + BV BND Choice_9_2_2 + BV BND Choice_9_2_3 + BV BND Choice_9_2_4 + BV BND Choice_9_2_5 + BV BND Choice_9_2_6 + BV BND Choice_9_2_7 + BV BND Choice_9_2_8 + BV BND Choice_9_2_9 + BV BND Choice_9_3_1 + BV BND Choice_9_3_2 + BV BND Choice_9_3_3 + BV BND Choice_9_3_4 + BV BND Choice_9_3_5 + BV BND Choice_9_3_6 + BV BND Choice_9_3_7 + BV BND Choice_9_3_8 + BV BND Choice_9_3_9 + BV BND Choice_9_4_1 + BV BND Choice_9_4_2 + BV BND Choice_9_4_3 + BV BND Choice_9_4_4 + BV BND Choice_9_4_5 + BV BND Choice_9_4_6 + BV BND Choice_9_4_7 + BV BND Choice_9_4_8 + BV BND Choice_9_4_9 + BV BND Choice_9_5_1 + BV BND Choice_9_5_2 + BV BND Choice_9_5_3 + BV BND Choice_9_5_4 + BV BND Choice_9_5_5 + BV BND Choice_9_5_6 + BV BND Choice_9_5_7 + BV BND Choice_9_5_8 + BV BND Choice_9_5_9 + BV BND Choice_9_6_1 + BV BND Choice_9_6_2 + BV BND Choice_9_6_3 + BV BND Choice_9_6_4 + BV BND Choice_9_6_5 + BV BND Choice_9_6_6 + BV BND Choice_9_6_7 + BV BND Choice_9_6_8 + BV BND Choice_9_6_9 + BV BND Choice_9_7_1 + BV BND Choice_9_7_2 + BV BND Choice_9_7_3 + BV BND Choice_9_7_4 + BV BND Choice_9_7_5 + BV BND Choice_9_7_6 + BV BND Choice_9_7_7 + BV BND Choice_9_7_8 + BV BND Choice_9_7_9 + BV BND Choice_9_8_1 + BV BND Choice_9_8_2 + BV BND Choice_9_8_3 + BV BND Choice_9_8_4 + BV BND Choice_9_8_5 + BV BND Choice_9_8_6 + BV BND Choice_9_8_7 + BV BND Choice_9_8_8 + BV BND Choice_9_8_9 + BV BND Choice_9_9_1 + BV BND Choice_9_9_2 + BV BND Choice_9_9_3 + BV BND Choice_9_9_4 + BV BND Choice_9_9_5 + BV BND Choice_9_9_6 + BV BND Choice_9_9_7 + BV BND Choice_9_9_8 + BV BND Choice_9_9_9 + FX BND __dummy 0.000000000000e+00 +ENDATA diff --git a/datasets/mip/trivial-presolve-optimality.mps b/datasets/mip/trivial-presolve-optimality.mps new file mode 100644 index 000000000..c6cb3c470 --- /dev/null +++ b/datasets/mip/trivial-presolve-optimality.mps @@ -0,0 +1,16 @@ +NAME EXAMPLE +ROWS + N OBJ + E C1 +COLUMNS + X1 C1 1 + X1 OBJ 0 + X2 OBJ -1 +RHS + RHS1 C1 0 +BOUNDS + LO BND1 X1 0 + UP BND1 X1 1 + LO BND1 X2 0 + UP BND1 X2 1 +ENDATA diff --git a/dependencies.yaml b/dependencies.yaml index 0439b4c46..97b23a70f 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -19,7 +19,7 @@ files: all: output: conda matrix: - cuda: ["11.8", "12.8"] + cuda: ["12.8"] arch: [x86_64, aarch64] includes: - build_common @@ -284,18 +284,6 @@ dependencies: specific: - output_types: conda matrices: - - matrix: - arch: x86_64 - cuda: "11.8" - packages: - - gcc_linux-64=11.* - - sysroot_linux-64==2.28 - - matrix: - arch: aarch64 - cuda: "11.8" - packages: - - gcc_linux-aarch64=11.* - - sysroot_linux-aarch64==2.28 - matrix: arch: x86_64 cuda: "12.*" @@ -314,16 +302,6 @@ dependencies: cuda: "12.*" packages: - cuda-nvcc - - matrix: - arch: x86_64 - cuda: "11.8" - packages: - - nvcc_linux-64=11.8 - - matrix: - arch: aarch64 - cuda: "11.8" - packages: - - nvcc_linux-aarch64=11.8 build_cpp: common: - output_types: conda @@ -344,14 +322,6 @@ dependencies: cuda: "12.*" packages: - cuda-sanitizer-api - - matrix: - cuda: "11.8" - packages: - - cuda-sanitizer-api=11.8.86 - - matrix: - cuda: "11.5" - packages: - - cuda-sanitizer-api=11.5.114 - matrix: packages: build_wheels: @@ -405,14 +375,9 @@ dependencies: cuda_suffixed: "true" packages: - cupy-cuda12x - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - cupy-cuda11x>=12.0.0 - matrix: null packages: - - cupy-cuda11x>=12.0.0 + - cupy-cuda12x test_python_cuopt_server: common: @@ -480,11 +445,6 @@ dependencies: cuda_suffixed: "true" packages: - libcuopt-cu12==25.5.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - libcuopt-cu11==25.5.*,>=0.0.0a0 - {matrix: null, packages: [*libcuopt_unsuffixed]} depends_on_cuopt: common: @@ -504,11 +464,6 @@ dependencies: cuda_suffixed: "true" packages: - cuopt-cu12==25.5.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - cuopt-cu11==25.5.*,>=0.0.0a0 - {matrix: null, packages: [*cuopt_unsuffixed]} depends_on_mps_parser: common: @@ -543,11 +498,6 @@ dependencies: cuda_suffixed: "true" packages: - librmm-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - librmm-cu11==25.4.*,>=0.0.0a0 - {matrix: null, packages: [*librmm_unsuffixed]} depends_on_cupy: common: @@ -583,11 +533,6 @@ dependencies: cuda_suffixed: "true" packages: - rmm-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - rmm-cu11==25.4.*,>=0.0.0a0 - matrix: packages: - *rmm_unsuffixed @@ -609,11 +554,6 @@ dependencies: cuda_suffixed: "true" packages: - cudf-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - cudf-cu11==25.4.*,>=0.0.0a0 - matrix: packages: - *cudf_unsuffixed @@ -635,11 +575,6 @@ dependencies: cuda_suffixed: "true" packages: - cuvs-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - cuvs-cu11==25.4.*,>=0.0.0a0 - matrix: packages: - *cuvs_unsuffixed @@ -661,11 +596,6 @@ dependencies: cuda_suffixed: "true" packages: - raft-dask-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - raft-dask-cu11==25.4.*,>=0.0.0a0 - matrix: packages: - *raft_dask_unsuffixed @@ -687,11 +617,6 @@ dependencies: cuda_suffixed: "true" packages: - pylibraft-cu12==25.4.*,>=0.0.0a0 - - matrix: - cuda: "11.*" - cuda_suffixed: "true" - packages: - - pylibraft-cu11==25.4.*,>=0.0.0a0 - matrix: packages: - *pylibraft_unsuffixed @@ -699,22 +624,6 @@ dependencies: specific: - output_types: conda matrices: - - matrix: - cuda: "11.2" - packages: - - cuda-version=11.2 - - matrix: - cuda: "11.4" - packages: - - cuda-version=11.4 - - matrix: - cuda: "11.5" - packages: - - cuda-version=11.5 - - matrix: - cuda: "11.8" - packages: - - cuda-version=11.8 - matrix: cuda: "12.0" packages: @@ -756,29 +665,6 @@ dependencies: - cuda-nvvm - cuda-crt - pynvjitlink=0.5.0 - - matrix: - cuda: "11.8" - packages: - - cudatoolkit - - cuda-nvtx=11.8 - - matrix: - cuda: "11.5" - packages: - - cudatoolkit - - cuda-nvtx=11.5 - - matrix: - cuda: "11.4" - packages: - - cudatoolkit - - &cudanvtx114 cuda-nvtx=11.4 - - matrix: - cuda: "11.2" - packages: - - cudatoolkit - # The NVIDIA channel doesn't publish pkgs older than 11.4 for - # these libs, so 11.2 uses 11.4 packages (the oldest - # available). - - *cudanvtx114 cuda_wheels: specific: @@ -793,15 +679,6 @@ dependencies: - nvidia-cusparse-cu12 - nvidia-cusolver-cu12 - nvidia-nvtx-cu12 - - matrix: - cuda: "11.*" - use_cuda_wheels: "true" - packages: - - nvidia-cublas-cu11 - - nvidia-curand-cu11 - - nvidia-cusparse-cu11 - - nvidia-cusolver-cu11 - - nvidia-nvtx-cu11 # if use_cuda_wheels=false is provided, do not add dependencies on any CUDA wheels # (e.g. for DLFW and pip devcontainers) - matrix: diff --git a/python/cuopt/cuopt/linear_programming/solution/solution.py b/python/cuopt/cuopt/linear_programming/solution/solution.py index d84561c4c..952ecb73b 100644 --- a/python/cuopt/cuopt/linear_programming/solution/solution.py +++ b/python/cuopt/cuopt/linear_programming/solution/solution.py @@ -127,7 +127,9 @@ class Solution: Note: Applicable to only MILP Time used for pre-solve solve_time: Float64 - Solve time in milliseconds + Solve time in seconds + solved_by_pdlp: bool + Whether the problem was solved by PDLP or Dual Simplex """ def __init__( @@ -164,6 +166,7 @@ def __init__( dual_objective=0.0, gap=0.0, nb_iterations=0, + solved_by_pdlp=None, mip_gap=0.0, solution_bound=0.0, presolve_time=0.0, @@ -202,6 +205,7 @@ def __init__( self.primal_objective = primal_objective self.dual_objective = dual_objective self.solve_time = solve_time + self.solved_by_pdlp = solved_by_pdlp self.vars = vars self.lp_stats = { "primal_residual": primal_residual, @@ -297,6 +301,12 @@ def get_solve_time(self): """ return self.solve_time + def get_solved_by_pdlp(self): + """ + Returns whether the problem was solved by PDLP or Dual Simplex + """ + return self.solved_by_pdlp + def get_vars(self): """ Returns the dictionnary mapping each variable (name) to its value. diff --git a/python/cuopt/cuopt/linear_programming/solver/solver.pxd b/python/cuopt/cuopt/linear_programming/solver/solver.pxd index 202e8a3bf..3982e2ff8 100644 --- a/python/cuopt/cuopt/linear_programming/solver/solver.pxd +++ b/python/cuopt/cuopt/linear_programming/solver/solver.pxd @@ -163,6 +163,7 @@ cdef extern from "cuopt/linear_programming/utilities/cython_solve.hpp" namespace double gap_ int nb_iterations_ double solve_time_ + bool solved_by_pdlp_ cdef cppclass mip_ret_t: unique_ptr[device_buffer] solution_ diff --git a/python/cuopt/cuopt/linear_programming/solver/solver.py b/python/cuopt/cuopt/linear_programming/solver/solver.py index 94b4904f3..24812e70c 100644 --- a/python/cuopt/cuopt/linear_programming/solver/solver.py +++ b/python/cuopt/cuopt/linear_programming/solver/solver.py @@ -54,7 +54,7 @@ def Solve(data_model, solver_settings=None, log_file=""): -------- >>> from cuopt import linear_programming >>> from cuopt.linear_programming.solver_settings import PDLPSolverMode - >>> from cuopt.linear_programming.solver_parameters import * + >>> from cuopt.linear_programming.solver.solver_parameters import * >>> >>> data_model = linear_programming.DataModel() >>> @@ -140,7 +140,7 @@ def BatchSolve(data_model_list, solver_settings=None, log_file=""): -------- >>> from cuopt import linear_programming >>> from cuopt.linear_programming.solver_settings import PDLPSolverMode - >>> from cuopt.linear_programming.solver_parameters import * + >>> from cuopt.linear_programming.solver.solver_parameters import * >>> import cuopt_mps_parser >>> >>> data_models = [] diff --git a/python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx b/python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx index 238fef8a4..9ba65bbc0 100644 --- a/python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx +++ b/python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx @@ -520,6 +520,7 @@ cdef create_solution(unique_ptr[solver_ret_t] sol_ret_ptr, gap = sol_ret.lp_ret.gap_ nb_iterations = sol_ret.lp_ret.nb_iterations_ solve_time = sol_ret.lp_ret.solve_time_ + solved_by_pdlp = sol_ret.lp_ret.solved_by_pdlp_ # In BatchSolve, we don't get the warm start data if not is_batch: @@ -647,6 +648,7 @@ cdef create_solution(unique_ptr[solver_ret_t] sol_ret_ptr, dual_objective, gap, nb_iterations, + solved_by_pdlp, ) return Solution( problem_category=ProblemCategory(sol_ret.problem_type), @@ -664,6 +666,7 @@ cdef create_solution(unique_ptr[solver_ret_t] sol_ret_ptr, dual_objective=dual_objective, gap=gap, nb_iterations=nb_iterations, + solved_by_pdlp=solved_by_pdlp, ) diff --git a/python/cuopt/cuopt/tests/linear_programming/test_lp_solver.py b/python/cuopt/cuopt/tests/linear_programming/test_lp_solver.py index fac9c7747..81bae6e03 100644 --- a/python/cuopt/cuopt/tests/linear_programming/test_lp_solver.py +++ b/python/cuopt/cuopt/tests/linear_programming/test_lp_solver.py @@ -72,6 +72,7 @@ def test_solver(): settings = solver_settings.SolverSettings() settings.set_optimality_tolerance(1e-2) + settings.set_parameter(CUOPT_METHOD, SolverMethod.PDLP) solution = solver.Solve(data_model_obj, settings) assert solution.get_termination_reason() == "Optimal" @@ -81,6 +82,7 @@ def test_solver(): assert solution.get_primal_objective() == pytest.approx(0.0) assert solution.get_dual_objective() == pytest.approx(0.0) assert solution.get_lp_stats()["gap"] == pytest.approx(0.0) + assert solution.get_solved_by_pdlp() def test_parser_and_solver(): @@ -379,9 +381,6 @@ def test_check_data_model_validity(): solver.Solve(data_model_obj) -@pytest.mark.skip( - reason="skip until with can pick Method=PDLP on the Python side" -) # noqa def test_parse_var_names(): file_path = ( RAPIDS_DATASET_ROOT_DIR + "/linear_programming/afiro_original.mps" @@ -426,7 +425,9 @@ def test_parse_var_names(): for i, name in enumerate(data_model_obj.get_variable_names()): assert expected_names[i] == name - solution = solver.Solve(data_model_obj) + settings = solver_settings.SolverSettings() + settings.set_parameter(CUOPT_METHOD, SolverMethod.PDLP) + solution = solver.Solve(data_model_obj, settings) expected_dict = { "X01": 80.00603991232295, @@ -472,9 +473,6 @@ def test_parse_var_names(): ) -@pytest.mark.skip( - reason="skip until with can pick Method=PDLP on the Python side" -) # noqa def test_parser_and_batch_solver(): data_model_list = [] @@ -488,6 +486,7 @@ def test_parser_and_batch_solver(): data_model_list.append(cuopt_mps_parser.ParseMps(file_path)) settings = solver_settings.SolverSettings() + settings.set_parameter(CUOPT_METHOD, SolverMethod.PDLP) settings.set_optimality_tolerance(1e-4) # Call BatchSolve @@ -602,6 +601,7 @@ def test_dual_simplex(): assert solution.get_termination_status() == LPTerminationStatus.Optimal assert solution.get_primal_objective() == pytest.approx(-464.7531) + assert not solution.get_solved_by_pdlp() def test_heuristics_only(): diff --git a/python/cuopt/pyproject.toml b/python/cuopt/pyproject.toml index 9023a2fe4..da20ec194 100644 --- a/python/cuopt/pyproject.toml +++ b/python/cuopt/pyproject.toml @@ -33,7 +33,7 @@ requires-python = ">=3.10" dependencies = [ "cudf==25.4.*,>=0.0.0a0", "cuopt-mps-parser==25.5.*,>=0.0.0a0", - "cupy-cuda11x>=12.0.0", + "cupy-cuda12x", "cuvs==25.4.*,>=0.0.0a0", "libcuopt==25.5.*,>=0.0.0a0", "numba>=0.59.1,<0.61.0a0", diff --git a/python/cuopt_self_hosted/cuopt_sh_client/cuopt_self_host_client.py b/python/cuopt_self_hosted/cuopt_sh_client/cuopt_self_host_client.py index 86d9049c0..35687e392 100644 --- a/python/cuopt_self_hosted/cuopt_sh_client/cuopt_self_host_client.py +++ b/python/cuopt_self_hosted/cuopt_sh_client/cuopt_self_host_client.py @@ -180,8 +180,8 @@ def create_solution_obj(solver_response): solve_time=sol["solver_time"], termination_status=status, primal_solution=np.array(sol["primal_solution"]), + reduced_cost=np.array(sol["reduced_cost"]), primal_objective=sol["primal_objective"], - dual_objective=sol["dual_objective"], mip_gap=sol["milp_statistics"]["mip_gap"], solution_bound=sol["milp_statistics"]["solution_bound"], presolve_time=sol["milp_statistics"]["presolve_time"], @@ -192,6 +192,10 @@ def create_solution_obj(solver_response): max_variable_bound_violation=sol["milp_statistics"][ "max_variable_bound_violation" ], + num_nodes=sol["milp_statistics"]["num_nodes"], + num_simplex_iterations=sol["milp_statistics"][ + "num_simplex_iterations" + ], ) else: solution_obj = solution.Solution( @@ -201,12 +205,14 @@ def create_solution_obj(solver_response): termination_status=status, primal_solution=np.array(sol["primal_solution"]), dual_solution=np.array(sol["dual_solution"]), - reduced_cost=np.array(sol["lp_statistics"]["reduced_cost"]), + reduced_cost=np.array(sol["reduced_cost"]), primal_residual=sol["lp_statistics"]["primal_residual"], dual_residual=sol["lp_statistics"]["dual_residual"], + gap=sol["lp_statistics"]["gap"], + nb_iterations=sol["lp_statistics"]["nb_iterations"], primal_objective=sol["primal_objective"], dual_objective=sol["dual_objective"], - gap=sol["lp_statistics"]["gap"], + solved_by_pdlp=sol["solved_by_pdlp"], ) return status, solution_obj diff --git a/python/cuopt_server/cuopt_server/utils/linear_programming/data_definition.py b/python/cuopt_server/cuopt_server/utils/linear_programming/data_definition.py index 166947f06..302c1df98 100644 --- a/python/cuopt_server/cuopt_server/utils/linear_programming/data_definition.py +++ b/python/cuopt_server/cuopt_server/utils/linear_programming/data_definition.py @@ -596,6 +596,12 @@ class SolutionData(StrictModel): default=None, description=("Returns the engine solve time in seconds"), ) + solved_by_pdlp: bool = Field( + default=None, + description=( + "Returns whether problem was solved by PDLP or Dual Simplex" + ), + ) primal_objective: float = Field( default=None, description=("Primal objective of the LP problem"), diff --git a/python/cuopt_server/cuopt_server/utils/linear_programming/solver.py b/python/cuopt_server/cuopt_server/utils/linear_programming/solver.py index deeedd29b..5d1618595 100644 --- a/python/cuopt_server/cuopt_server/utils/linear_programming/solver.py +++ b/python/cuopt_server/cuopt_server/utils/linear_programming/solver.py @@ -380,6 +380,7 @@ def create_solution(sol): sol.get_dual_objective ) solution["solver_time"] = sol.get_solve_time() + solution["solved_by_pdlp"] = sol.get_solved_by_pdlp() solution["vars"] = sol.get_vars() solution["lp_statistics"] = {} if lp_stats is None else lp_stats solution["reduced_cost"] = reduced_cost diff --git a/python/libcuopt/CMakeLists.txt b/python/libcuopt/CMakeLists.txt index c89a7233c..7b85f2275 100644 --- a/python/libcuopt/CMakeLists.txt +++ b/python/libcuopt/CMakeLists.txt @@ -42,7 +42,7 @@ include(FetchContent) FetchContent_Declare( argparse GIT_REPOSITORY https://github.com/p-ranav/argparse.git - GIT_TAG v2.9 + GIT_TAG v3.2 ) FetchContent_MakeAvailable(argparse)