From 1bec01c1ce6b860f13e8dac5d13ce1499c628028 Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 10:41:57 +0900
Subject: [PATCH 1/6] Skip zapsmall when matrix is sparse

---
 R/proxy.R | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/R/proxy.R b/R/proxy.R
index cf4e240..f679df0 100644
--- a/R/proxy.R
+++ b/R/proxy.R
@@ -226,7 +226,8 @@ proxy <- function(x, y = NULL, margin = 1,
     }
     if (diag)
         result <- as(as(result, "diagonalMatrix"), "ddiMatrix")
-    result@x <- zapsmall(result@x, digits)
+    if (is.null(min_proxy) && is.null(rank))
+        result@x <- zapsmall(result@x, digits)
     dimnames(result) <- list(colnames(x), colnames(y))
     return(result)
 }

From f70c4f1e81043c8e18f9291f5b1113a18ffaab7a Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 14:43:27 +0900
Subject: [PATCH 2/6] Round small values in C++

---
 R/RcppExports.R     |  8 ++++----
 R/proxy.R           |  4 ++--
 src/RcppExports.cpp | 18 ++++++++++--------
 src/linear.cpp      | 11 +++++++----
 src/pair.cpp        |  9 ++++++---
 5 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/R/RcppExports.R b/R/RcppExports.R
index 95aaba1..5635b72 100644
--- a/R/RcppExports.R
+++ b/R/RcppExports.R
@@ -1,8 +1,8 @@
 # Generated by using Rcpp::compileAttributes() -> do not edit by hand
 # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
 
-cpp_linear <- function(mt1, mt2, method, rank, limit = -1.0, symm = FALSE, drop0 = FALSE, use_nan = FALSE, thread = -1L) {
-    .Call('_proxyC_cpp_linear', PACKAGE = 'proxyC', mt1, mt2, method, rank, limit, symm, drop0, use_nan, thread)
+cpp_linear <- function(mt1, mt2, method, rank, limit = -1.0, symm = FALSE, drop0 = FALSE, use_nan = FALSE, digits = 14L, thread = -1L) {
+    .Call('_proxyC_cpp_linear', PACKAGE = 'proxyC', mt1, mt2, method, rank, limit, symm, drop0, use_nan, digits, thread)
 }
 
 cpp_sd <- function(mt) {
@@ -13,8 +13,8 @@ cpp_nz <- function(mt) {
     .Call('_proxyC_cpp_nz', PACKAGE = 'proxyC', mt)
 }
 
-cpp_pair <- function(mt1, mt2, method, rank, limit = -1.0, weight = 1.0, smooth = 0, symm = FALSE, diag = FALSE, drop0 = FALSE, use_nan = FALSE, thread = -1L) {
-    .Call('_proxyC_cpp_pair', PACKAGE = 'proxyC', mt1, mt2, method, rank, limit, weight, smooth, symm, diag, drop0, use_nan, thread)
+cpp_pair <- function(mt1, mt2, method, rank, limit = -1.0, weight = 1.0, smooth = 0, symm = FALSE, diag = FALSE, drop0 = FALSE, use_nan = FALSE, digits = 14L, thread = -1L) {
+    .Call('_proxyC_cpp_pair', PACKAGE = 'proxyC', mt1, mt2, method, rank, limit, weight, smooth, symm, diag, drop0, use_nan, digits, thread)
 }
 
 cpp_get_max_thread <- function() {
diff --git a/R/proxy.R b/R/proxy.R
index f679df0..bdf914c 100644
--- a/R/proxy.R
+++ b/R/proxy.R
@@ -202,6 +202,7 @@ proxy <- function(x, y = NULL, margin = 1,
             symm = symm,
             drop0 = drop0,
             use_nan = use_nan,
+            digits = digits,
             thread = getThreads()
         )
     } else {
@@ -221,13 +222,12 @@ proxy <- function(x, y = NULL, margin = 1,
             diag = diag,
             drop0 = drop0,
             use_nan = use_nan,
+            digits = digits,
             thread = getThreads()
         )
     }
     if (diag)
         result <- as(as(result, "diagonalMatrix"), "ddiMatrix")
-    if (is.null(min_proxy) && is.null(rank))
-        result@x <- zapsmall(result@x, digits)
     dimnames(result) <- list(colnames(x), colnames(y))
     return(result)
 }
diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp
index eccec56..13965ae 100644
--- a/src/RcppExports.cpp
+++ b/src/RcppExports.cpp
@@ -12,8 +12,8 @@ Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
 #endif
 
 // cpp_linear
-S4 cpp_linear(arma::sp_mat& mt1, arma::sp_mat& mt2, const int method, unsigned int rank, const double limit, bool symm, const bool drop0, const bool use_nan, const int thread);
-RcppExport SEXP _proxyC_cpp_linear(SEXP mt1SEXP, SEXP mt2SEXP, SEXP methodSEXP, SEXP rankSEXP, SEXP limitSEXP, SEXP symmSEXP, SEXP drop0SEXP, SEXP use_nanSEXP, SEXP threadSEXP) {
+S4 cpp_linear(arma::sp_mat& mt1, arma::sp_mat& mt2, const int method, unsigned int rank, const double limit, bool symm, const bool drop0, const bool use_nan, const int digits, const int thread);
+RcppExport SEXP _proxyC_cpp_linear(SEXP mt1SEXP, SEXP mt2SEXP, SEXP methodSEXP, SEXP rankSEXP, SEXP limitSEXP, SEXP symmSEXP, SEXP drop0SEXP, SEXP use_nanSEXP, SEXP digitsSEXP, SEXP threadSEXP) {
 BEGIN_RCPP
     Rcpp::RObject rcpp_result_gen;
     Rcpp::RNGScope rcpp_rngScope_gen;
@@ -25,8 +25,9 @@ BEGIN_RCPP
     Rcpp::traits::input_parameter< bool >::type symm(symmSEXP);
     Rcpp::traits::input_parameter< const bool >::type drop0(drop0SEXP);
     Rcpp::traits::input_parameter< const bool >::type use_nan(use_nanSEXP);
+    Rcpp::traits::input_parameter< const int >::type digits(digitsSEXP);
     Rcpp::traits::input_parameter< const int >::type thread(threadSEXP);
-    rcpp_result_gen = Rcpp::wrap(cpp_linear(mt1, mt2, method, rank, limit, symm, drop0, use_nan, thread));
+    rcpp_result_gen = Rcpp::wrap(cpp_linear(mt1, mt2, method, rank, limit, symm, drop0, use_nan, digits, thread));
     return rcpp_result_gen;
 END_RCPP
 }
@@ -53,8 +54,8 @@ BEGIN_RCPP
 END_RCPP
 }
 // cpp_pair
-S4 cpp_pair(arma::sp_mat& mt1, arma::sp_mat& mt2, const int method, unsigned int rank, const double limit, const double weight, const double smooth, bool symm, const bool diag, const bool drop0, const bool use_nan, const int thread);
-RcppExport SEXP _proxyC_cpp_pair(SEXP mt1SEXP, SEXP mt2SEXP, SEXP methodSEXP, SEXP rankSEXP, SEXP limitSEXP, SEXP weightSEXP, SEXP smoothSEXP, SEXP symmSEXP, SEXP diagSEXP, SEXP drop0SEXP, SEXP use_nanSEXP, SEXP threadSEXP) {
+S4 cpp_pair(arma::sp_mat& mt1, arma::sp_mat& mt2, const int method, unsigned int rank, const double limit, const double weight, const double smooth, bool symm, const bool diag, const bool drop0, const bool use_nan, const int digits, const int thread);
+RcppExport SEXP _proxyC_cpp_pair(SEXP mt1SEXP, SEXP mt2SEXP, SEXP methodSEXP, SEXP rankSEXP, SEXP limitSEXP, SEXP weightSEXP, SEXP smoothSEXP, SEXP symmSEXP, SEXP diagSEXP, SEXP drop0SEXP, SEXP use_nanSEXP, SEXP digitsSEXP, SEXP threadSEXP) {
 BEGIN_RCPP
     Rcpp::RObject rcpp_result_gen;
     Rcpp::RNGScope rcpp_rngScope_gen;
@@ -69,8 +70,9 @@ BEGIN_RCPP
     Rcpp::traits::input_parameter< const bool >::type diag(diagSEXP);
     Rcpp::traits::input_parameter< const bool >::type drop0(drop0SEXP);
     Rcpp::traits::input_parameter< const bool >::type use_nan(use_nanSEXP);
+    Rcpp::traits::input_parameter< const int >::type digits(digitsSEXP);
     Rcpp::traits::input_parameter< const int >::type thread(threadSEXP);
-    rcpp_result_gen = Rcpp::wrap(cpp_pair(mt1, mt2, method, rank, limit, weight, smooth, symm, diag, drop0, use_nan, thread));
+    rcpp_result_gen = Rcpp::wrap(cpp_pair(mt1, mt2, method, rank, limit, weight, smooth, symm, diag, drop0, use_nan, digits, thread));
     return rcpp_result_gen;
 END_RCPP
 }
@@ -96,10 +98,10 @@ END_RCPP
 }
 
 static const R_CallMethodDef CallEntries[] = {
-    {"_proxyC_cpp_linear", (DL_FUNC) &_proxyC_cpp_linear, 9},
+    {"_proxyC_cpp_linear", (DL_FUNC) &_proxyC_cpp_linear, 10},
     {"_proxyC_cpp_sd", (DL_FUNC) &_proxyC_cpp_sd, 1},
     {"_proxyC_cpp_nz", (DL_FUNC) &_proxyC_cpp_nz, 1},
-    {"_proxyC_cpp_pair", (DL_FUNC) &_proxyC_cpp_pair, 12},
+    {"_proxyC_cpp_pair", (DL_FUNC) &_proxyC_cpp_pair, 13},
     {"_proxyC_cpp_get_max_thread", (DL_FUNC) &_proxyC_cpp_get_max_thread, 0},
     {"_proxyC_cpp_tbb_enabled", (DL_FUNC) &_proxyC_cpp_tbb_enabled, 0},
     {NULL, NULL, 0}
diff --git a/src/linear.cpp b/src/linear.cpp
index 088f5a3..c212943 100644
--- a/src/linear.cpp
+++ b/src/linear.cpp
@@ -35,11 +35,12 @@ void proxy_linear(const uword i,
                   const rowvec& square1, const rowvec& center1,
                   const rowvec& square2, const rowvec& center2,
                   const int method,
-                  const unsigned int rank, const double limit,
-                  const bool symm, const bool drop0, const bool use_nan) {
+                  const unsigned int rank, const double limit, const bool symm,
+                  const bool drop0, const bool use_nan, const int digits) {
 
     uword nrow = mt1t.n_rows;
     uword ncol = mt1t.n_cols;
+    double shift = std::pow(10, digits);
 
     rowvec v1, v2;
     std::vector<double> simils(nrow);
@@ -61,6 +62,7 @@ void proxy_linear(const uword i,
         double l = get_limit(simils, rank, limit);
         for (std::size_t k = 0; k < simils.size(); k++) {
             if (symm && k > i) continue;
+            simils[k] = round(simils[k] * shift) / shift; // round small values
             if (drop0 && simils[k] == 0) continue;
             if (simils[k] >= l || (use_nan && std::isnan(simils[k])))
                 simil_tri.push_back(std::make_tuple(k, i, simils[k]));
@@ -77,6 +79,7 @@ S4 cpp_linear(arma::sp_mat& mt1,
               bool symm = false,
               const bool drop0 = false,
               const bool use_nan = false,
+              const int digits = 14,
               const int thread = -1) {
 
     if (mt1.n_rows != mt2.n_rows)
@@ -120,7 +123,7 @@ S4 cpp_linear(arma::sp_mat& mt1,
             for (int i = r.begin(); i < r.end(); i++) {
                 proxy_linear(i, mt1, mt2, simil_tri,
                              square1, center1, square2, center2,
-                             method, rank, limit, symm, drop0, use_nan);
+                             method, rank, limit, symm, drop0, use_nan, digits);
             }
         });
     });
@@ -128,7 +131,7 @@ S4 cpp_linear(arma::sp_mat& mt1,
     for (std::size_t i = 0; i < I; i++) {
         proxy_linear(i, mt1, mt2, simil_tri,
                      square1, center1, square2, center2,
-                     method, rank, limit, symm, drop0, use_nan);
+                     method, rank, limit, symm, drop0, use_nan, digits);
     }
 # endif
 
diff --git a/src/pair.cpp b/src/pair.cpp
index a1420db..85946c6 100644
--- a/src/pair.cpp
+++ b/src/pair.cpp
@@ -136,10 +136,11 @@ void proxy_pair(const uword i,
                 const int method,
                 const unsigned int rank, const double limit, const bool symm,
                 const bool diag, const double weight, const double smooth,
-                const bool drop0, const bool use_nan) {
+                const bool drop0, const bool use_nan, const int digits) {
 
     arma::uword nrow = mt1.n_rows;
     arma::uword ncol = mt1.n_cols;
+    double shift = std::pow(10, digits);
 
     colvec col_i(nrow);
     colvec col_j(nrow);
@@ -217,6 +218,7 @@ void proxy_pair(const uword i,
     }
     double l = get_limit(simils, rank, limit);
     for (std::size_t k = 0; k < simils.size(); k++) {
+        simils[k] = round(simils[k] * shift) / shift; // round small values
         if (drop0 && simils[k] == 0) continue;
         if (simils[k] >= l || (use_nan && std::isnan(simils[k]))) {
             if (diag) {
@@ -240,6 +242,7 @@ S4 cpp_pair(arma::sp_mat& mt1,
             const bool diag = false,
             const bool drop0 = false,
             const bool use_nan = false,
+            const int digits = 14,
             const int thread = -1) {
 
     if (mt1.n_rows != mt2.n_rows)
@@ -258,14 +261,14 @@ S4 cpp_pair(arma::sp_mat& mt1,
         tbb::parallel_for(tbb::blocked_range<int>(0, I), [&](tbb::blocked_range<int> r) {
             for (int i = r.begin(); i < r.end(); i++) {
                 proxy_pair(i, mt1, mt2, simil_tri, method, rank, limit, symm,
-                           diag, weight, smooth, drop0, use_nan);
+                           diag, weight, smooth, drop0, use_nan, digits);
             }
         });
     });
 #else
     for (std::size_t i = 0; i < I; i++) {
         proxy_pair(i, mt1, mt2, simil_tri, method, rank, limit, symm,
-                   diag, weight, smooth, drop0, use_nan);
+                   diag, weight, smooth, drop0, use_nan, digits);
     }
 # endif
 

From e59d30be30739d10bff3b423635997391c285165 Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 15:37:27 +0900
Subject: [PATCH 3/6] Add round() function

---
 src/linear.cpp |  8 ++++----
 src/pair.cpp   | 12 ++++++------
 src/proxyc.h   | 11 ++++++++++-
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/linear.cpp b/src/linear.cpp
index c212943..8611928 100644
--- a/src/linear.cpp
+++ b/src/linear.cpp
@@ -40,7 +40,6 @@ void proxy_linear(const uword i,
 
     uword nrow = mt1t.n_rows;
     uword ncol = mt1t.n_cols;
-    double shift = std::pow(10, digits);
 
     rowvec v1, v2;
     std::vector<double> simils(nrow);
@@ -59,13 +58,14 @@ void proxy_linear(const uword i,
             simils = to_vector(sqrt(trans(mt1t * mt2.col(i)) * -2 + square1 + square2[i]));
             break;
         }
+        simils = round(simils, digits);
         double l = get_limit(simils, rank, limit);
         for (std::size_t k = 0; k < simils.size(); k++) {
+            double s = simils[k];
             if (symm && k > i) continue;
-            simils[k] = round(simils[k] * shift) / shift; // round small values
             if (drop0 && simils[k] == 0) continue;
-            if (simils[k] >= l || (use_nan && std::isnan(simils[k])))
-                simil_tri.push_back(std::make_tuple(k, i, simils[k]));
+            if (s >= l || (use_nan && std::isnan(s)))
+                simil_tri.push_back(std::make_tuple(k, i, s));
         }
     //}
 }
diff --git a/src/pair.cpp b/src/pair.cpp
index 85946c6..fb0e5cf 100644
--- a/src/pair.cpp
+++ b/src/pair.cpp
@@ -140,7 +140,6 @@ void proxy_pair(const uword i,
 
     arma::uword nrow = mt1.n_rows;
     arma::uword ncol = mt1.n_cols;
-    double shift = std::pow(10, digits);
 
     colvec col_i(nrow);
     colvec col_j(nrow);
@@ -216,15 +215,16 @@ void proxy_pair(const uword i,
         //Rcout << "simil=" << simil << "\n";
         simils.push_back(simil);
     }
+    simils = round(simils, digits);
     double l = get_limit(simils, rank, limit);
     for (std::size_t k = 0; k < simils.size(); k++) {
-        simils[k] = round(simils[k] * shift) / shift; // round small values
-        if (drop0 && simils[k] == 0) continue;
-        if (simils[k] >= l || (use_nan && std::isnan(simils[k]))) {
+        double s = simils[k];
+        if (drop0 && s == 0) continue;
+        if (s >= l || (use_nan && std::isnan(s))) {
             if (diag) {
-                simil_tri.push_back(std::make_tuple(i, i, simils[k]));
+                simil_tri.push_back(std::make_tuple(i, i, s));
             } else {
-                simil_tri.push_back(std::make_tuple(k, i, simils[k]));
+                simil_tri.push_back(std::make_tuple(k, i, s));
             }
         }
     }
diff --git a/src/proxyc.h b/src/proxyc.h
index 879b0cb..93cf215 100644
--- a/src/proxyc.h
+++ b/src/proxyc.h
@@ -62,7 +62,8 @@ namespace proxyc{
         }
     }
 
-    inline double get_limit(std::vector<double> simils, const unsigned int rank, double limit) {
+    inline double get_limit(std::vector<double> simils, const unsigned int rank,
+                            double limit) {
 
         if (simils.size() > rank) {
             std::nth_element(simils.begin(), simils.begin() + rank - 1, simils.end(),
@@ -73,6 +74,14 @@ namespace proxyc{
         return limit;
     }
 
+    inline std::vector<double> round(std::vector<double> simils, const int digits) {
+        double shift = std::pow(10, digits);
+        for (auto it = simils.begin() ; it != simils.end(); ++it) {
+            *it = std::round(*it * shift) / shift;
+        }
+        return simils;
+    }
+
     inline std::vector<double> replace_inf(std::vector<double> simils) {
         for (auto it = simils.begin() ; it != simils.end(); ++it) {
             if (std::isinf(*it)) {

From e9b0de2e770d0a24f9a061128d652d5f71f38bd1 Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 17:52:37 +0900
Subject: [PATCH 4/6] Use iterator for faster access

---
 src/proxyc.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/proxyc.h b/src/proxyc.h
index 93cf215..1ca4dab 100644
--- a/src/proxyc.h
+++ b/src/proxyc.h
@@ -38,11 +38,12 @@ namespace proxyc{
         IntegerVector i_(l), j_(l);
         NumericVector x_(l);
 
-        for (std::size_t k = 0; k < tri.size(); k++) {
-            Triplet t = tri[k];
+        std::size_t k = 0;
+        for (Triplet t : tri) {
             i_[k] = std::get<0>(t);
             j_[k] = std::get<1>(t);
             x_[k] = std::get<2>(t);
+            k++;
         }
         if (symmetric) {
             S4 simil_("dsTMatrix");

From 13a3e783895d8048ae8225f81ce96ba28e479ac3 Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 18:08:22 +0900
Subject: [PATCH 5/6] Update MAN and NEWS

---
 NEWS.md      |  6 ++++++
 R/proxy.R    | 30 +++++++++++++++---------------
 man/simil.Rd | 11 ++++++-----
 3 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 6b150fb..015a498 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,9 @@
+# proxyC 0.4.2
+
+## New features and improvements
+
+- Reduce the execution time by improving the efficiency in rounding numbers and creating Rcpp vectors.
+
 # proxyC 0.4.1
 
 ## Bug fixes
diff --git a/R/proxy.R b/R/proxy.R
index bdf914c..a9de4c8 100644
--- a/R/proxy.R
+++ b/R/proxy.R
@@ -30,11 +30,11 @@
 #'   situations as above. If `NULL`, will also return zero but also generate a
 #'   warning (default).
 #' @param digits determines rounding of small values towards zero. Use primarily
-#'   to correct rounding errors in C++. See \link{zapsmall}.
-#' @details
-#'   ## Available Methods
+#'   to correct floating point errors. Rounding is performed in C++ in a similar
+#'   way as \link{zapsmall}.
+#' @details ## Available Methods
 #'
-#'   Similarity:
+#' Similarity:
 #' \itemize{
 #'   \item `cosine`: cosine similarity
 #'   \item `correlation`: Pearson's correlation
@@ -47,7 +47,7 @@
 #'   \item `faith`: Faith similarity
 #'   \item `simple matching`: the percentage of common elements
 #' }
-#'   Distance:
+#' Distance:
 #' \itemize{
 #'   \item `euclidean`: Euclidean distance
 #'   \item `chisquared`: chi-squared distance
@@ -60,18 +60,18 @@
 #'   \item `minkowski`: Minkowski distance
 #'   \item `hamming`: Hamming distance
 #' }
-#'   See the vignette for how the similarity and distance are computed:
-#'   `vignette("measures", package = "proxyC")`
+#' See the vignette for how the similarity and distance are computed:
+#' `vignette("measures", package = "proxyC")`
 #'
-#'   ## Parallel Computing
+#' ## Parallel Computing
 #'
-#'   It performs parallel computing using Intel oneAPI Threads Building Blocks.
-#'   The number of threads for parallel computing should be specified via
-#'   `options(proxyC.threads)` before calling the functions. If the value is -1,
-#'   all the available threads will be used. Unless the option is used, the
-#'   number of threads will be limited by the environmental variables
-#'   (`OMP_THREAD_LIMIT` or `RCPP_PARALLEL_NUM_THREADS`) to comply with CRAN
-#'   policy and offer backward compatibility.
+#' It performs parallel computing using Intel oneAPI Threads Building Blocks.
+#' The number of threads for parallel computing should be specified via
+#' `options(proxyC.threads)` before calling the functions. If the value is -1,
+#' all the available threads will be used. Unless the option is used, the number
+#' of threads will be limited by the environmental variables (`OMP_THREAD_LIMIT`
+#' or `RCPP_PARALLEL_NUM_THREADS`) to comply with CRAN policy and offer backward
+#' compatibility.
 #'
 #' @import methods Matrix
 #' @seealso zapsmall
diff --git a/man/simil.Rd b/man/simil.Rd
index 255a000..3e786c9 100644
--- a/man/simil.Rd
+++ b/man/simil.Rd
@@ -66,7 +66,8 @@ situations as above. If \code{NULL}, will also return zero but also generate a
 warning (default).}
 
 \item{digits}{determines rounding of small values towards zero. Use primarily
-to correct rounding errors in C++. See \link{zapsmall}.}
+to correct floating point errors. Rounding is performed in C++ in a similar
+way as \link{zapsmall}.}
 
 \item{p}{weight for Minkowski distance}
 
@@ -118,10 +119,10 @@ See the vignette for how the similarity and distance are computed:
 It performs parallel computing using Intel oneAPI Threads Building Blocks.
 The number of threads for parallel computing should be specified via
 \code{options(proxyC.threads)} before calling the functions. If the value is -1,
-all the available threads will be used. Unless the option is used, the
-number of threads will be limited by the environmental variables
-(\code{OMP_THREAD_LIMIT} or \code{RCPP_PARALLEL_NUM_THREADS}) to comply with CRAN
-policy and offer backward compatibility.
+all the available threads will be used. Unless the option is used, the number
+of threads will be limited by the environmental variables (\code{OMP_THREAD_LIMIT}
+or \code{RCPP_PARALLEL_NUM_THREADS}) to comply with CRAN policy and offer backward
+compatibility.
 }
 }
 \examples{

From 3a68abae542bccd9d522d721f3090d98acc065e5 Mon Sep 17 00:00:00 2001
From: Kohei Watanabe <watanabe.kohei@gmail.com>
Date: Wed, 10 Apr 2024 18:19:59 +0900
Subject: [PATCH 6/6] Update README

---
 NEWS.md                          |   2 +-
 man/images/unnamed-chunk-5-1.png | Bin 10050 -> 10697 bytes
 man/images/unnamed-chunk-6-1.png | Bin 8832 -> 10671 bytes
 man/images/unnamed-chunk-8-1.png | Bin 10716 -> 10612 bytes
 4 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/NEWS.md b/NEWS.md
index 015a498..983988c 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2,7 +2,7 @@
 
 ## New features and improvements
 
-- Reduce the execution time by improving the efficiency in rounding numbers and creating Rcpp vectors.
+- Reduce the overhead for dense similarity matrices by improving rounding numbers and conversion to Rcpp vectors.
 
 # proxyC 0.4.1
 
diff --git a/man/images/unnamed-chunk-5-1.png b/man/images/unnamed-chunk-5-1.png
index 54b6af93083bb835f42ed9e9d7b89e040b8d156e..92a9291038eccdee5d4d4d76bc0b0def3d4a1f14 100644
GIT binary patch
literal 10697
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

literal 10050
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

diff --git a/man/images/unnamed-chunk-6-1.png b/man/images/unnamed-chunk-6-1.png
index 31ad810dd7170d313b0d72dbb8daf68f39c174f3..8a9c67014e87b0c32bbbcf52960b1cf9c360b369 100644
GIT binary patch
literal 10671
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
S#^o0;tqvUCpJ9ID{67Iu3uE{I

literal 8832
zcmeG?XH-+!x<OG;niK_tfD8(b4B|*Y4ZQ^!1%#m}RV?8E5=4<+6e}emjG_V}V2~Cm
z4iKbYba0|hga8pC6qRCV0ff*YZzB?tyVhIlz5D0Ad)FK`2eQxC_V?}mwUg-MmS!TG
z;hSMFn27li6B`(80}2M?dm*?U%t(#*;J}Apjvuo%1s`EBBn*azA(1d7xZ`1Hl7@x`
zm|C7#zR*ZC9*HI)@nFy`mM@Hj1<nG4vA}>k(E>+C1AHVHNHn<ccr>1b#?#RxFxUWe
z8F2Z+VQ^p&F*q`Y2u3gN8x<VJ0!Jj`z(+C>M<(OQ;2$;~3B#k2csvPDqT}goBF2J<
z0|P_E;Q$bkNCrPdaxan0Cib#PXc!5NB;mmT;B*q5O=7djI14fkLneX&s1nKKUUDxO
zY%-fo$0O-@G@S$no=#`e+3a2-rk9B8C4)ii?F9qCf{P8nd)e%vp&`HnPz0E4I*AQ%
zdWq~_Kxvr|pa%%B*=%FM7(CGBrVB?-UV_1-#g~8i-Y8G#!(cmM<|c-=K@Ue#=R<dS
z_@VkPY`<mDF~oX<7b5eg*lF?08fo=b-26lQ=Giuw>yC8^YLfZqC~UU(+yN!Z5tg||
zvkQ$D(hw|P_=I}Q*RFaoHCtVyz4|Z=HhIc-cpVIuB?8|7V{G^z-s;b4&RH8>wC}rd
zyx6g>eSef{Xk8w*k#VK>=^LR8bZJznJ3oZD`Oq#{vE`|KkyacG`wCyYSN(c2ZS(t^
z;^|bGHQaRwxbeHZsx4mjswZSoS5RljCljTOC|(=9UkWxt!iR}pjdD)rpYoC6gJTsv
z>|6ykiCdqFC>aob{+rqVr5bbd+ThPLXA=&rQ@F^)JlhZK_|nv_SY&%?drfBCKW;s&
zboy!8?)%fE{mboVUHm-X2!@f%E9+kXv+|qz-b*U^MH2PV^i`)C9GJbj?R^^Y7%lVl
z4`aLNOs$OowW7&5<7n2NreorV?sx^tZURt?jKanZcQibc1s7fyS7HUgHgFa0YrGd7
zjWFjIKik&%>biKkwe-fz(4Tirk`<$N+6-fqz&^@ZFDl{l0B81R{LVQ3N;(5bi#((!
z>XQ_6<WJmAJT<V4e|c&@P9oK+|1Vd_CBr)RxllUQa6A!uxl3nnNkL<dZN~<%!)K0`
zxUZAn>gWL3?q#ln{P&;Ug-m<Fm)lrjM6mIbHXy7QSEkPLbD``s`K3g${K$>>Tj7Z@
zl`yzm)T!uq#i6zwCS4{9(fi25))|*?pq_l*cLf#tc{2Km$Pw<DpOcNhKnQ^qrX>Pr
zev!iV!?3^9yTGu_zn)8&5)K=zu&?~NYd2M>5!(1&U{T>I?~%}}D2*#Cw9Axla8dGC
zy}096Ksr@8ePzAafeH29p;tK22i@;kWQahB^(%}g(dgp4n|%xj+rM)&m5?pjfJJ|o
z1b$W;5`a@+E9<O&u}io;ibKlbL5zX+nq0q`|5(Du!3;QdjEhalxr?Hy1nQ3OLfsoM
zUt28+7)5+l`+&D-3`g^7kpJ=Pt6KIkBwYJp)ohRuTuzFkUZ+Mzx?sL4V(->KJ_L|Z
zz?5T(Z3yHZqoK_!iv4$DwWW|ckyc}EH{HE&VQl<bPl{Xk$R>)?P&{-0#<ex=bS7jA
z*u8b?x1uuoSFLX1Jvm$yG88y5>nm?JD*W6Iku3CGSNpG{8blQy?XWG>_4FsPt3p@<
z3-yG&kdc9~rK*raX=%1%R*s(U8;0bQ4hlRG8c&tiSs44+71+<()}`Yr@3=IK&5M8%
zClu^y)n(f5$?ArL=q=xk_Y#_Pq9n~#tCTh|6>P<DR_&70Q}Ygy5dj|-%G~rvd%N!R
zUuBxsx>U_frU#E#M|!#bUVGtmV0&%I^NOJ1)ElV6+RSFg({n1jN5&o}B%P+fPM^=9
zda-8~7VSMLb?C(}bV>r0Pr8$*r;{HZ)be41QRnxi+0IgIP$lvNt<YQaxHP;|zrd}g
zcIs&vZb*Mh8eY95f!GY2{a{4M|HI2JKp+LnOdcJ2Nu9N(4Hg|H`o0@b!!p%LMU(Dj
z2`rCC@*Qj<`+N-p5wf`ZVT*?m<EQvLA;576U$W_jj|N|Q*Too~OxIP=_e6w*G%mF1
zJ(=xlV!Z6zhO<u%S_&FTGNT+`OtHG(ilW^Asm)z@Z3AB^Ls@NWJv3xYBTS9?1^Z04
zmP*QMwJ;WH6=?E4xIijn9U_@;c?(~4N3;hQ-sxyJUu^s29q;J($hKSeJd>(E+H&yV
zqjq&I8bo0)xUfXw)v)j9?UW4GzT36y^q_E%Uu>?Pk*;Tb@X}05Z1H^GJW4wilS92T
z=ldY7wp(uWF?HJ-pAdGsZjWn?$kJyKtIlfH)boj8nq0&_{rZx-y=b^g)u-HfML0Nk
zE8and(GE>m&Sc+DQ%1T}EiUC$zHJfo^~=&vtDX5&H|Q~VP$$>7JA(cG=duU;I7nmL
znkf&3=LQ;NdGuj$7v-i?(HDplCX1diSUcLM5g`F5)O>&Rsr!1sD>Uh{P=L((wX?p3
zK%MyWhFe^q5;Tcg^*u8q)BiD^;+&RY{9}&y#+`ioA<=gO#{;_@NU=EfgyX&a6U}p_
zI4;-qoL0*1W7O3^kyC$Oi!W)7)`8b9F&y9RtCW9~1Ia+0wf&L9qx0ceWm8T(a7uWc
zxyH}?_XlhIm`0lu*2v3kcjE%|c%`>%jfk#{!`ibF1*MoZB2#Cplx)6lNZ`9u5=@ZB
z9OlMb)SFJCWB0DQcBCNHEVEoKZ#4=q3`}AW<t9&7Lxf!1{)DWuoF-1>mQZS%lt^3+
zF8;?COq1EiCzWzn<Fddjhs<L06SkhK=|SDN<bcVpy`=@H?oNq+ET<WkwF&-vmuYMY
zD5HWTxaC%zDKbfkdQ(dL5B!-xS?T3eM`jZ5uk|Akl=xF6{Q*ck2Fb^jQ|}q;|K{ir
z4e(9@y!&13ja}zY3p`fK{b6i(D^p8!IU_2bul0)@fAh@g!@cw3hknBZ%JKn%#t-s~
zti_67?=4Y0!*7|{(HZqE{m#m3dmrb*D&Wq>ifm||TF_ChRP65z`~O9ulEoH8Yp$0%
z0Ozios!{u$&gA?SWyn?Rw1x9a&po|Aa@Qh;t5zx=65J;o^4f%VvPZDsaLJh%c~fqD
zPkxfIwz7&1SKXB&hq|!nAA!x414neNs5q}5m9o2izZ!5cT$8#{PGE93FQj%9_9x_z
zynuyN5r?m5b-2as$)djAf#)VS<LSSbM?Sw6hKc1cm8<e|)<kaNp*-W|znK^3J%fKA
z57{7ZM6DS&kq*t|E&{i1m*5npHMb66Smj#kbuOJsKBl(tu!*KZ{gR>FI6JY*Q+v4T
zQj5E&i4ZBSVpsVX!Bdx81CrU)r#wVAwLnd>Q{0kez%2%NBs+mcPx5dnLP_#+aU{%Q
z5E)!ny6%lg<yrq{&14GC`jsF=+XkLZV2wzA!voR-A)2Fgxt2#c0=MYp5$zcw*$g=A
zwNk&w6A{b97}Wwv@a&biJgO9r2DUp8bWM>?Mf2PAj0o18s(!l@VL}dZNcCA?0Ft{A
zfNF(Qnk+<u>QjhLA7~)Ftufz(sA&1<6FIIKx{Xx)#GKpyHjsaWyTN>6$3M~?%1Y|_
z8zDhXYvFhBtgmGO>E!F#yeXZ!h0~na)dU&4T`lm1ig~A-8Tj)I9zAG3rHVw#DRAjZ
z1kQcx40#j_ac_~0Snl(X&P`Sp!M$~^p|}^+$h{-}EtpYXLz4^HzP7Z*GOU75#D$K9
zz*+LWjGLU!&_=AK=}Ljp8WDw>Sm_->{y)HVwV!s)b%rgan9;NyBCoGKGQmEQ)6+Se
z;~LuZ-~v0CHP}2GYi7r4Z=PKUW?j(J&y{~v()2W~Rri3e=r8JFv+m))MUHAi2&Hcg
zrfVoO8lx;(gB5D!CE2B)Bflf9M1?srUAVL`Tr}%j8`1T;T7|N{Gd7|!j5WdB#ZJ}4
zzH@vywDF4GG0*6!0-76vwlqFFPmAz*(SNFVX<`HwUn*{uH#b(IC!y;#96b5)`NY89
z(i3S~0@?GB)G0@RW@$jkpI@mhBvV#u3%gQ*$E8P8F3k<W^JhmImX^}nzhvqut~9~S
z7jslt`LbyTzYJqHSc$dM%~Y@`E3ssKdN!h47VgqfVMf?4{;hk4NVX-Y*aaS~(X-8O
z82AFpipa(O=K5Ho?_y8n!l)vga{F7qE}d$v+5Wun=Uy9vv<l1PR-vv}eXvdVbWyok
zZPl;c9YJ2TjEAADcIZ!D>)`UJgY>sf$5M~0V}7QY<*4KzYEX#0<QGsI)(vGhqtgGR
z$YvsMJf=FYH0j`Sc7*Aap%m7qz86u_zCnYc2k1TTzSsrMlrKm%e}#LFbb#tY{9D7&
zkkI2Qn_u7NJml;+=083)Phjr*mGD=6(o)#c=UW2aX`oifV>g&}Zsl99PnUa)0HynM
zMbe$2w56&<HDi&r?jYQvfGQntFQ#$u?AznUoQC2x)UV66u49)?`^|rX&j*FVEA>~E
zsl4;4Wc4@n7~Z-6)MIUd#J($N^wyTOfMM6pr1Bk9A>2POX`gFp8;{d$f+k-)XkB{Y
zbFKnwtk3PZUuRIAC}p`vh4$6>t%DHPIc?zWh>F}<j1I+ZmU>UpfS|bM>fH$R<k6d|
zIZmpeDYVuqM*Cx#{dzC6D$i%~OrOP0jdvSxw~;|maWzXYzRDH8HL_3|N2IW*gw@6~
zS_j*Y2VV1s)h;pxf>TZde`~VZe@+46%=9sYh~bC~LLeoBVa7cLJoz0{Dzt?YK3+9K
z%F&OhdpKbuE}iPU&6HrsSzmN3bRhOIbteY`gy$3<8c~|bgZ(xFT=B!=DN52&3cHab
zzOpT0)9x4)fwP?@bE$WE*nm{Rl84P7o`_r?HZKs#G_bzgob_45ExdU&AcIAR5t=2q
zlbkJBG-(f9grhc#>nM$*+=^8;Ae5`cpssNw>nWu6@<`^_3I*^;2J*9N9?8NqljpWA
z^1KXiz*^Sv2>S@08f8L-q&S-2p@|gXA^Y6ZUqWRPG%VM00#|ry91kawd>vXoHI9c+
zKqF&BKK0!{Sz0^pqgKK@<#Rj=azX8{G|!a0!?TevN_%4bFM>AgTKdxF$FK2grsQ27
zIHuBrd}7Ib059l(MpT>TMpe}<+*+?udO$Lg<xYJ5egpC^zer*}Mrj;K!MgB0Hz>N$
z<9Y=paGe%lrg*}DU|rPC+`}&fAvW97<!+qf!=mcEDhXSDN~i8Q;S(qowE^@4KMMT!
z@5SV96Bef;)#dGIZaQ-1+hk(Ix^wal#-|ht+9!Ie(m!l%WbD@|Y<EwSv)3$K3LCz7
zYRe;sw}&=;d)f}3Zh6Sg9K5+$H8-`KNxXa}6s34bJ8Z1v^^{zcUHyr+_XR-OkHceK
zZVFm2^&%HO2F<E;h+B%uOFZ54>Wx<51_To3!M+goUbJ%lQp6vxyE{KEFuEk8wgTLK
zfO{)L7IW#N%|w-J&;^x4k<Oj-(otLc2UjqKp-Ifesr$aRmy`Kbh2SFm*shbVJM<1I
zpE%hF?R=}cXXJMI^?>Xg2jRLm7cZYnsayw_yQ#r!>DILrtC+6n2sJAD-PxtBBRBAD
zFuNews?91W^i$`@1wYnQ*pj<lp-hxrU;7(U01#3*)_ubLzIOd<LrITITjNgIm6Lv-
zmAa!4>t2>t7LJW~?cQqHs&~YqD9YKb?G+H54;FIuU$`m$*f3=u^kiu&QN(Qqv$&w1
zEE{%iX<#UFY?Kn|be^fDSM&9L;!?=-%5>`^o8dQdub>n)^1qULJF9&=o>#k&g4a7}
zdg-nUltpY#G9>KhYut0T-zIqEWRMTps-|MPDXrlPoAtHpOGM++$La3KVBgXBuF5cr
zZ0eAersZHHyL3)?;iy}hTX&;+ZAIC1d8|T9!`#=<SReLhvHRVBMUH>%I_fr>SzfUl
zk+%_k<1goCMp{jW>t3II2F&WoGFDGoiP&(pe=vVV3xk&J+RFG`n#y{wHF-YRoYdcw
zs8Cfo{bVYIlo#+eG_t8G%;zX%D*{9<&!ScrhK;qwduNA-FU^l?lIA8^a|ywVjeXH`
zHUx*X5DP+DI1pApM@+{Jv#XMn(H_IHig>m#_qH}Ua*AMI&$6$bF}x%-hkbRAm8I`3
zf3jNwp12-sgf8%$6jCTT?JX*)kEsbJ9e@8Ob@~aaP@ffp(hsjL?YcOxD(e{5jPabk
z7MQ{gbjoK>zxf>hD&5VQi$da5UA<wqwBF2cs8D41*Na1CHvtVDnhtz%p;pbcgp@HS
zAl)jsuLe^#j`1LSs1Am`m&3ZA--I2!3QSbyJ^4BRiL?hx*1M!~-P~-g=K@#)?b_Se
zLi+v7PA*W%ysSQRpN#V=LhEQtLu<#(z|c9YYjED>?3(hSnpS6%)IuMKrDiSd=0;<v
zs24*1=YRsmmKEqiAWHAnCN)CgQgelF-lJpyIZvP_s%2Q~E^h)YY=LXN^Y4i$Z@u|(
znn<U=kH0AaB-svS*HJ730zQe3aMbVUbeszsZCA^3(yY)?^YyjL_hGd4rDhTX2h|Z3
zA=wej_7YuYXGch@shPep-5(oxG2r}DYWo$6w|du=kn#*>IHA@#VzJMS!XBNEoyNL)
zm4s{1JoH7|ESTU60*%Yx1#qnLoxHe4>TQF}NO<38&6Knjb^XxE+5XWJ^u}VE*zWxB
zm;oC?tP1#>OP7FeT{b5M>?y*S{_`-(wpJ9qHG<ht@s`h9c5g&hgeieCG8@~_QV6t|
zcNO)iz^~aiXfxl+|G*3~h|Pgux7DRvKlhGXC=42lzs*<%TX_U)6awz@e|L*z3*^>+
WaZJ8+`QY+5Nz6?xO$v-oMg14hf>}ra

diff --git a/man/images/unnamed-chunk-8-1.png b/man/images/unnamed-chunk-8-1.png
index f5961f1dccfa8db6e6ef4da8703b732f173d7cbb..fbbb00009dada9b313511e2074466d8cbdcc8bd1 100644
GIT binary patch
literal 10612
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

literal 10716
zcmeG?Yg7~GwozNKM}fAsVz5A4kJ9=8A-oKb_#8w<M6EfB0ToOTB@qb(0!ivcZ7m_7
zh)^D;?NlB{K?Q?=5S8*$2}VE+0iqHhJW~h|NJw%g)^lVC=d62w+#h!>XAL3wX7By&
z_w2oA&hOgkY4SIVzabC^6R)kCcOwuV0tm#Mhx6w_E1wN_vY{WCT|4$}fqo(oXas_Q
zK%)_8=rajH;Gs|`Xi2}IKL}_-5}Lq6Cqbv!TYr$ez1iL*k~azZ<a)Df2@pOSI?)8^
zNJ=6k@d!y`0uMTM5U3tdf3Qg;E{V-1v7yge5*Iq9>^FqiByTqKy_U<at!39jUvx=m
zL=pj=l*CKoiIc=SF3FqACUMzp2!hM4<<_#fwNh@ajw{vi2nZel%}at#2v*D!>v%d{
zE!(@6O{(QWCq$B4TPv-V>S}d5aS~dbL=f|!Gf6DgiFG<Dmn7w~rL}CSlq=OAItWmz
z)AjfFL!==>5ROjF(?QTuu1*Tk(36KKL8v;Nu9p_}2-4q2C%5hoM<C2U(f`ePv_gSJ
zAihL+ZQigqDswRFe9S>=G_Ym=C0-HIhPTOOSF6#@zRPE9hXBjqylr{ObHl#<W%DkZ
zpSpEAW12jxOK@$n;%6bffynQP{xrz56vNPTx>FY~w+Ren*&CnyZSmUbv{qNJdP(@l
zf?WIRFV3Jsp!HWQi@+xv{^Rm}7Gw2>(Z?i2;BPAM1)}<cBCqsEeP1X`>W&m<3Y#OO
zhj#o(#F+#qJEk<R8xjNuTdrHO=(Xs(d98o<J{rL;Ls=Z~G_5`p71{i~v)7*eS)D_y
zbI&it*?)Bf@AQlJv%ULz?z(}$z9;j4shfZZtVc>z>;TKC1=9SS<?{mP>a8<&RM}{H
z;n7swhi?tJzV3e78!OT4%0p%UX!a#K7O}rzee?}-$)cw#j;-X{l@@;zDx@?aO>QhR
z4xGEq=&d_EMrNJa7>@1x%e3z{_)saT&y__Qz?a7a_<DP037?`*tzGd;(4igcGk(vz
zUXdomd@hhho(mux(|ge_2k4^SMI@QNTMVEvRBQwgxDfMX1V#iC9+02=8~D}{|3yNM
zD*a*sk+O7?{Pt~_NN(W%a~(&I!uI2o7GSc?4aHQj@}ECMwm-aIcs(B`zaI)6WyoMy
z0CR_&MGAcJ-E+Oizf;S8pe6hji$pNEFo?7)HDtZb#Uq;v6t9(i)8AkFAnp5$r|sv2
zUd+C&as)GI5S^f>zR%%?^>aX<G~j25ML?cPHi40#^;b;h`4TCpO{Ck0;W`MSY_~TW
z%>65VKe)7z_0gLc&l0YlxAQjKK2)G^p=({XK8XM2LYn6+(^dlq(reo<s1s%}Jzt~?
z2{67?kS1;$XhOe_b8R<lAG#-CJTM!Vn+9*et*XbqQ*#-PjRSt@pACCn{jE@#KJ?g*
zH9R;r5ip(=yYl+22m|cG>gRB5D)2+!Y<tJCZqW^}9jeD+*d9s3)99H27eRD<{IOpf
z+`~N`&^rvAfq_GMgx2Ma?(`7I`e5c@cp^PKyr~8;`ztHkjn;~PhV-z?M4g-F&1H{*
zwcN}ZvCObRdPD$;COxdf?|j1Jvhd(1IiEx8^I_{6QwKCR7e(9bN?bTCt2|&4F1qqF
zQ8ah>dQF2Y4@EORDOghd&M!e^g3B#_x&g4~8(?!da3wMU2zzxzARB&}X+JH$S-XKb
z0$JAmb%E2ePa@HAUscudbzn_gc=fb&#gMYDph4<9m?$0>gj*M<+IF$5%mm2FX|WoH
zqV=&lK7p%l2SBBUO>Q&f!%5Ev{sD{+pQ9Aq5}d8nfVBM^(nvVzg8+F=XULW;;j)Kt
zDuhv<V?Msxz>Ft=;^MGDLKD*CYd9qeP+S#O{#%LzO~D~20_2LaSJv*)Cq>$3-IK#{
z@&$1DIl}sgwq3%FNP3ua-^BA)Y#4x>p0liwp(A%&YZ|>jzmY8LR|tz4>#TJ0PGJmJ
zSBu1dIL-X(prS$9k*|DQaC<W#NKYIQRQrfO#l&K0ouY}x8c?Vqb`C3q;P6DqsO(xi
zK@pwIK^D7QRrqV~MJF-kc3HxRY4)nX0XARZgC5&l-Al{4vdKZUQ@vHw(U^UPd?mr^
zpnrr}TbVU~_`z7Tx}~yPkw4@S$~-c%g`Y+rQ`E&xDK9(F9+R7wC_)Nx7Lfp@q2D%q
zE8uBnM`k$EUR=6aE;^yrk}_(tf5d^^<3%Nl%7go(hhLt0*0?48CgwPKr!^X^PMfd(
z{jjn;*B!*G)A#NqIg3~Duq2XajXCH`UDjGuMBl-`B0Lu`HDN6P%rw6+OjsYu=B$2u
zmsNY@a=I0ri8(&3udSP?p|Kqp0(sTM>+3O-vTOCS_`-2{drlFyBT3l1T`7>Er};3p
zdi##0l0io!;%JCtv{yyRccE5|iRvCe*OSqZ9pFyu;b{ADJu{F5ORqQwY|Iq$=%HT`
zky+SWK8CNmyP&68=2jo58lFl~ji1dKit`G`ah7JCJkzZF9u^=KEn>Ng^b=);u>0JI
zxG*(s#fB{YA5Cq)`bWIF7d?{G=&3AJCScNI!xlY#JZ`c(`3xG2pLPqObI3;R|L|<3
z+T%HV5r!{n^WVA3m08&+T~SyjkHw_7F$5Ly$Hu=n*4SoBq*zW1WchHx3el&YFO*FI
z9PEjQB23FV?#uXIvD|J&fy14;Ow2RuM65<#cvYS!@3^KbkFP_`70AAxrm+TH{0NVC
zVT>HrI$@jrUH)^vI^4$iIvoKIjv#=XCsRfIiPVe^zYZlNl^0{?!vddX3l{GyIsg<j
zcowE!au{$MI}Fc7g~;-;kl%HS8;4jO?xH{Ks>St;P1b*dM^%bYOa}HN%TeP?RlDHX
zu#Po!H&f>}M*R?uk}Sl#fC5?jj3g37p>Dw$<|o=p@bm&(|HlStAqrTgCo>}#H3T_Q
zs?Nq6<U}h$@BoxT%9p`;JkK(+69v>85Dx~xH#{07+}Qfbu1sMkoOkFJ9K`UMk%g_E
z1W(y(9*!A6n-Lwue2JqIaBT-7z1vv=JK4-6N^=BD9`DRISXZ?NQBHXgN2B0mHX*$+
z*>YRah26bbw3*ejN1AZ-Y?iPSo_G_39GR%n)NS&nPF6m=e7wan{q33Cm@CMI6+xw_
z^rJtnA?=6yr+4?cc}UA{`*M_pA8d6K(h|5z?SpbHybx?hTFM}MB*4q{3oO&$|IL1B
zPCPhoZYXq9AdTqAgH_GO4(Lm>Ng@coe7gGu99I5Fb||qoOZWm-W>mO=akG^l`f4yF
zaSconDmKehnbt8=42ZSNf5XHBBhft=!;&k)Io6GC;4N4YMaKcgduOp=JF?!P?dzp*
zT|z~^)KC-hT3OP{@;!;D(o)!lP^D{>8Po`qnc)W*)1j828r}{F=-WMwZ$OnG+@?^a
zZBUi-mxGlUs2K=^>*og2a^Gy`Kd-K4qrs&}%B3;5+%bSL!;lfN1N!D{3f-eLv5Wv*
zPy;KE!}o=1e2t-9ii0S@DIIw=NIV|qq{JbvrR9{NJBm^0yR&T@uIyr)GEsdq^#w`m
zKby22^gJk2?K83_M8nEwsC|53XgIsOc9gxlpbiD@t>h=UuMJs@A1Y*TTWP?_a;2B2
z6I9R6Fvm8)=cwW8ZS}DqwjR|!fNnJKio2rE7OH+{SpWSj<^6!@{qXGlVDbOmw6uT#
z_!Jku$-wW%!0J_(g?_4%yzKi}8>c@CxkhiN$hdF7_>?y7f;D$Oo9Oxd+`B2UHYCXL
zS;JAD`=iv;>+Gjtq+-FzGlDsHJ_|oGZSHIr4Jd7c&6ZtFTeQi&Eac5NQ4q!~LD7OY
z_SE|Q1Sf$8Jws%l^=^uNa(>zvnlD9ql-9Jy{AM&4Mq41WIzfx?U3_|QU=qgT5NoJD
zG=X)ifs<_UPSi3KZEf+{Q#GlB!!w}!P6B3cN3Z(9__a!;$3LfPP`1xCC62CrJMh%c
z#L=0;%D3ZK{m>kStWH9fPc{^Lf-aJF&H0udGaNIdKmtulVyEe39$~afl-ud&hHXT)
zYhk=#4(j_6iK;7Vil68yAJpz8Qp7MR)Q6Gf7$zmcxl~saeP1hmr4TM{sODg-5{9r#
z6FG@i2{ky-6Nh)qXvmm)a<}|j`biOet@<Lz#cWKjIjZh7#xly(xsPS_$u1Zf^J+OG
z9GY@W)3$ZGklO0mr@Z1Uj8U8zeK~S1=4FRwBEc-bLCkMm`j{Kzqh6^!qN-}Ni^fFf
z>iiX*BF{l{CywrfMTVusl;W2&uDbo}_x;E~(=RUwg_VyptP@)M?zm*sOC+K4%^B)?
zu5WmOsO`Le(b&DHlO@{q^zr4PwgH(DsZmj)*x^cN(8VWxF%^3Hkw*KwL#xMn^6qsd
zq7%noXzzNztO{;w|1px9n&|8<S;xm}suFdtuCEGHcaAI4`L=}5vu?NCaK5*Pv5UFn
z?QA@}&5XWFa%VVNomOtr7hgEk1#)?(?F6Nt@;J}5QG0+gBcFi#OjpfteX=uH@8f<z
zB{k5B1P>Gd$*Ix|zvgbJt62r;6!mq<SCZ|HU7QqPH7x~#R1{6#e$_lJ(--EvkUG64
zTaCw(SpsXQ=an$qQvM7X&4P$TX}8hU5BDe^9ErARNEk=bUCWwS1{*{8!eXMGy|;xc
z^L$>(rt-dr(F&<gPT~+zzLf4b`8qn<PF(EeardA=HgTj^b2UcO4Ygd;f(`2kl6eg$
zoQqQ%ZO}dBsPs1fNM%-oXR^3KM76IUa_H$A{KsS2XczZeL)?iH;fl<`@T^7_J79-|
z!L*M~$@A`>dNrBDWb!6F#v1K<J8nX4x=1ls!4hyjl)dP8>0wz}zY9CHum6$KEN;6*
zQ<7mIorDfx>GvjH#s-Y5>Y=9fhj)pF(Si(>%vA+*s;}Q{A(QU12wK0$1p!4h@NmEr
zN4vdV2C&Qz6-e6fM9O{LLx=7^K5odjc=KQ+yiG&qOX9OOPyo5r+ex{;g1fA7i24SW
zlc>O=t#i?HU>OF=UOtK6?LNH0ZLQ7p9JrfE8DH3Sn$NrYizSQ*l-N{Zx&sXi{_0<6
zUg|})o+|a(-fY&H`XF=3GzG1?AiR8b<&f%*V?mX~6vlkO&n({ciqP<0+>6odoiE{{
zuSyYqbiBOnv!^Ng9%5R8DL4eg@csy|)b}{kGBgei4$pvm|5)(-v(ER=f&Zt^$p2Uv
zV1Yo)ch$cO@cw!EyA1Ze9s2j}P)rKTVt!6e$ULi#&2#CI#HJH*jL6TU7JW1-%JMBV
zQHj2L>HYVoL@H44EF<DhyIfe$X-7JVf8pRioCP6}wQfGKX-S~zL!?u6THHw>!M^*;
zOyB9t$ET(Sg|dv)K~H^As2%vZ^@saaxn05+84GKxDu<Y=sywk9NJ#0y+jmSHa<9N}
z=%d%d6+xGM$qq{zJn?|K>XshhY`?;|q1r`fPb=`KkyPB9^rf1O|D<?5P~Pj=5%gvH
zGS|9bzH4L*B$2dA1a>bTc+eH4QsOe90@21gD*5zX3}1=s35DpD=;<wTG52=KFAH?9
zKwy5dNbey}DMT`D<1H8DPyNh$nJ3!q1nnJ2r~Wo~WV<@G&hl8LLX`Dl)f4IG*}|BP
zp!F+61Li#>IV(LPU-x>@H+)}7O=K|XN}IYPYDyuD+fH`)LXi8dAg5<%wS~D<w~8O@
z3TC704@1>*6XSze+ihoDke5W^U}CE^r6ECp`E*<8A4sQF_gpjX)k{0}46On;p~}rd
zv}Oa|=Q>*pnli3IoRqsoTb+y*R`|%V-^&}9rf1kFJ1iwrxpZsL1<4YvQYijXRtmRp
zd`oYP&jX2*gDY+s*}=7ur7BC?vBiHi-AqA$sa$L3Q&z``N#5`?fpR#kZ~TAvuFovc
z=kEVtv*2FG)SqK7%_}6aTAZ{0pJT&BvgSFzn7Q1xINoO;<5npDUi8(IfXN(U(`VI4
zrzNG*<<UCn(qexy=Xl4%5Wq#litd808xfnDAZ093Nh1;;W^B}|j@txGBo9yU1KcKG
zOCohIU6`8Ix;nY`rY_wJXu(EQ#;GJz8x-@Ws1+E0{!<@*<f)OWNo+8tpNq}(SKIJC
z)DI?X3bJBf^(P10`qv?y1i7znUKV0$H)5_8(dUjx7cg6<rV7e9u9F*?#^}egzMOm_
zMRg~+Zw+2nDcW<}gtK}oPU*wQQEwnN<0qwNV!MFSi>Q!H-^#;lKpVbN*n<sDA0Hbg
zSBRhY6&9y+kS^F}>@Lnx%GjP32h}9ihoJ+zs}*;gZ*Mmbx%Ofznezmr?SpzHCVzWa
zcymE)Q^#2bc;jezZ-bb#zv2z;c}LcO0ovRJelZynUg|iroVo*1UG&SsF&})Lj7W}X
z&cHKYZEUor;L<g5O0h2M;GIcMOAhn+0#!=as&ycw<S(B)sA$UM#*7L(=IA6fN23}$
zj+Y!DAn}t;2~;pZRorX72A?}=tmv8FZB1>7V(zXrGk-SuN=l+ImJ^#;S-$g*P=Oxu
znk?)!Ga_YVp)6IKJt%*6b}`wu$C?`8T+-(VCI<{B*DW$qKzkAfSQa1m7c?cNwoZur
z#HiAdybS+5GW2fIG0tX7JACl)8ec^s4yEdES?o}H^4%8ZoJ*NWwZY-$ssiTI@~`=n
zU#Hq-4^uLIQIUYjk9Z_Lc5yhc5;WoH4vlRr_HZdp5^76?RsY<w%%OE^RC@KQ&(7!m
zM_PXtiYiBjy7I0rpugZ>EK+ULxP$QpO?LP<wx4qg1#-$GM!KxoIdW;{$AaKJ_s5U-
zkk=2|IYvulK16Hg7_n2Q?(bCtYE~pUTQ#L_R3?n$P5}w1ko5ykWCJm*oeZ+pY1nwI
zQ0}4Htv<dQa+E6awgW2LYz)}wqyJwAG2h9uSXhQaYxYg>2l*?8+k%yM0;W3a8s}^`
zZ&i7WEkK3_T;VW%G<rchS?R59<K!rd4~R`rws02Y3ZbQEt{{+z3fZ<yTM#vY{rX5X
rlvmiOkkSA6I^HZHI^&(bVV&*{p@2EE@38(YO|LCGH|K9W^k4rC2s(oS