New Upstream Release - r-cran-mlr

Ready changes

Summary

Merged new upstream version: 2.19.1+dfsg (was: 2.19.0+dfsg).

Resulting package

Built on 2022-12-14T17:42 (took 10m47s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases r-cran-mlr-dbgsymapt install -t fresh-releases r-cran-mlr

Diff

diff --git a/DESCRIPTION b/DESCRIPTION
index f9f5306..47d905b 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,142 +1,58 @@
 Package: mlr
 Title: Machine Learning in R
-Version: 2.19.0
-Authors@R: 
-    c(person(given = "Bernd",
-             family = "Bischl",
-             role = "aut",
-             email = "bernd_bischl@gmx.net",
-             comment = c(ORCID = "0000-0001-6002-6980")),
-      person(given = "Michel",
-             family = "Lang",
-             role = "aut",
-             email = "michellang@gmail.com",
-             comment = c(ORCID = "0000-0001-9754-0393")),
-      person(given = "Lars",
-             family = "Kotthoff",
-             role = "aut",
-             email = "larsko@uwyo.edu"),
-      person(given = "Patrick",
-             family = "Schratz",
-             role = c("aut", "cre"),
-             email = "patrick.schratz@gmail.com",
-             comment = c(ORCID = "0000-0003-0748-6624")),
-      person(given = "Julia",
-             family = "Schiffner",
-             role = "aut",
-             email = "schiffner@math.uni-duesseldorf.de"),
-      person(given = "Jakob",
-             family = "Richter",
-             role = "aut",
-             email = "code@jakob-r.de"),
-      person(given = "Zachary",
-             family = "Jones",
-             role = "aut",
-             email = "zmj@zmjones.com"),
-      person(given = "Giuseppe",
-             family = "Casalicchio",
-             role = "aut",
-             email = "giuseppe.casalicchio@stat.uni-muenchen.de",
-             comment = c(ORCID = "0000-0001-5324-5966")),
-      person(given = "Mason",
-             family = "Gallo",
-             role = "aut",
-             email = "masonagallo@gmail.com"),
-      person(given = "Jakob",
-             family = "Bossek",
-             role = "ctb",
-             email = "jakob.bossek@tu-dortmund.de",
-             comment = c(ORCID = "0000-0002-4121-4668")),
-      person(given = "Erich",
-             family = "Studerus",
-             role = "ctb",
-             email = "erich.studerus@upkbs.ch",
-             comment = c(ORCID = "0000-0003-4233-0182")),
-      person(given = "Leonard",
-             family = "Judt",
-             role = "ctb",
-             email = "leonard.judt@tu-dortmund.de"),
-      person(given = "Tobias",
-             family = "Kuehn",
-             role = "ctb",
-             email = "tobi.kuehn@gmx.de"),
-      person(given = "Pascal",
-             family = "Kerschke",
-             role = "ctb",
-             email = "kerschke@uni-muenster.de",
-             comment = c(ORCID = "0000-0003-2862-1418")),
-      person(given = "Florian",
-             family = "Fendt",
-             role = "ctb",
-             email = "flo_fendt@gmx.de"),
-      person(given = "Philipp",
-             family = "Probst",
-             role = "ctb",
-             email = "philipp_probst@gmx.de",
-             comment = c(ORCID = "0000-0001-8402-6790")),
-      person(given = "Xudong",
-             family = "Sun",
-             role = "ctb",
-             email = "xudong.sun@stat.uni-muenchen.de",
-             comment = c(ORCID = "0000-0003-3269-2307")),
-      person(given = "Janek",
-             family = "Thomas",
-             role = "ctb",
-             email = "janek.thomas@stat.uni-muenchen.de",
-             comment = c(ORCID = "0000-0003-4511-6245")),
-      person(given = "Bruno",
-             family = "Vieira",
-             role = "ctb",
-             email = "bruno.hebling.vieira@usp.br"),
-      person(given = "Laura",
-             family = "Beggel",
-             role = "ctb",
-             email = "laura.beggel@web.de",
-             comment = c(ORCID = "0000-0002-8872-8535")),
-      person(given = "Quay",
-             family = "Au",
-             role = "ctb",
-             email = "quay.au@stat.uni-muenchen.de",
-             comment = c(ORCID = "0000-0002-5252-8902")),
-      person(given = "Martin",
-             family = "Binder",
-             role = "ctb",
-             email = "ma.binder@campus.lmu.de"),
-      person(given = "Florian",
-             family = "Pfisterer",
-             role = "ctb",
-             email = "pfistererf@googlemail.com"),
-      person(given = "Stefan",
-             family = "Coors",
-             role = "ctb",
-             email = "stefan.coors@gmx.net"),
-      person(given = "Steve",
-             family = "Bronder",
-             role = "ctb",
-             email = "sab2287@columbia.edu"),
-      person(given = "Alexander",
-             family = "Engelhardt",
-             role = "ctb",
-             email = "alexander.w.engelhardt@gmail.com"),
-      person(given = "Christoph",
-             family = "Molnar",
-             role = "ctb",
-             email = "christoph.molnar@stat.uni-muenchen.de"),
-      person(given = "Annette",
-             family = "Spooner",
-             role = "ctb",
-             email = "a.spooner@unsw.edu.au"))
-Description: Interface to a large number of classification and
-    regression techniques, including machine-readable parameter
-    descriptions. There is also an experimental extension for survival
-    analysis, clustering and general, example-specific cost-sensitive
-    learning. Generic resampling, including cross-validation,
-    bootstrapping and subsampling.  Hyperparameter tuning with modern
-    optimization techniques, for single- and multi-objective problems.
-    Filter and wrapper methods for feature selection. Extension of basic
-    learners with additional operations common in machine learning, also
-    allowing for easy nested resampling.  Most operations can be
-    parallelized.
+Version: 2.19.1
+Authors@R: c(
+    person("Bernd", "Bischl", , "bernd_bischl@gmx.net", role = "aut",
+           comment = c(ORCID = "0000-0001-6002-6980")),
+    person("Michel", "Lang", , "michellang@gmail.com", role = "aut",
+           comment = c(ORCID = "0000-0001-9754-0393")),
+    person("Lars", "Kotthoff", , "larsko@uwyo.edu", role = "aut"),
+    person("Patrick", "Schratz", , "patrick.schratz@gmail.com", role = c("aut", "cre"),
+           comment = c(ORCID = "0000-0003-0748-6624")),
+    person("Julia", "Schiffner", , "schiffner@math.uni-duesseldorf.de", role = "aut"),
+    person("Jakob", "Richter", , "code@jakob-r.de", role = "aut"),
+    person("Zachary", "Jones", , "zmj@zmjones.com", role = "aut"),
+    person("Giuseppe", "Casalicchio", , "giuseppe.casalicchio@stat.uni-muenchen.de", role = "aut",
+           comment = c(ORCID = "0000-0001-5324-5966")),
+    person("Mason", "Gallo", , "masonagallo@gmail.com", role = "aut"),
+    person("Jakob", "Bossek", , "jakob.bossek@tu-dortmund.de", role = "ctb",
+           comment = c(ORCID = "0000-0002-4121-4668")),
+    person("Erich", "Studerus", , "erich.studerus@upkbs.ch", role = "ctb",
+           comment = c(ORCID = "0000-0003-4233-0182")),
+    person("Leonard", "Judt", , "leonard.judt@tu-dortmund.de", role = "ctb"),
+    person("Tobias", "Kuehn", , "tobi.kuehn@gmx.de", role = "ctb"),
+    person("Pascal", "Kerschke", , "kerschke@uni-muenster.de", role = "ctb",
+           comment = c(ORCID = "0000-0003-2862-1418")),
+    person("Florian", "Fendt", , "flo_fendt@gmx.de", role = "ctb"),
+    person("Philipp", "Probst", , "philipp_probst@gmx.de", role = "ctb",
+           comment = c(ORCID = "0000-0001-8402-6790")),
+    person("Xudong", "Sun", , "xudong.sun@stat.uni-muenchen.de", role = "ctb",
+           comment = c(ORCID = "0000-0003-3269-2307")),
+    person("Janek", "Thomas", , "janek.thomas@stat.uni-muenchen.de", role = "ctb",
+           comment = c(ORCID = "0000-0003-4511-6245")),
+    person("Bruno", "Vieira", , "bruno.hebling.vieira@usp.br", role = "ctb"),
+    person("Laura", "Beggel", , "laura.beggel@web.de", role = "ctb",
+           comment = c(ORCID = "0000-0002-8872-8535")),
+    person("Quay", "Au", , "quay.au@stat.uni-muenchen.de", role = "ctb",
+           comment = c(ORCID = "0000-0002-5252-8902")),
+    person("Martin", "Binder", , "ma.binder@campus.lmu.de", role = "ctb"),
+    person("Florian", "Pfisterer", , "pfistererf@googlemail.com", role = "ctb"),
+    person("Stefan", "Coors", , "stefan.coors@gmx.net", role = "ctb"),
+    person("Steve", "Bronder", , "sab2287@columbia.edu", role = "ctb"),
+    person("Alexander", "Engelhardt", , "alexander.w.engelhardt@gmail.com", role = "ctb"),
+    person("Christoph", "Molnar", , "christoph.molnar@stat.uni-muenchen.de", role = "ctb"),
+    person("Annette", "Spooner", , "a.spooner@unsw.edu.au", role = "ctb")
+  )
+Description: Interface to a large number of classification and regression
+    techniques, including machine-readable parameter descriptions. There
+    is also an experimental extension for survival analysis, clustering
+    and general, example-specific cost-sensitive learning. Generic
+    resampling, including cross-validation, bootstrapping and subsampling.
+    Hyperparameter tuning with modern optimization techniques, for single-
+    and multi-objective problems.  Filter and wrapper methods for feature
+    selection. Extension of basic learners with additional operations
+    common in machine learning, also allowing for easy nested resampling.
+    Most operations can be parallelized.
 License: BSD_2_clause + file LICENSE
 URL: https://mlr.mlr-org.com, https://github.com/mlr-org/mlr
 BugReports: https://github.com/mlr-org/mlr/issues
@@ -147,37 +63,36 @@ Imports: backports (>= 1.1.0), BBmisc (>= 1.11), checkmate (>= 1.8.2),
 Suggests: ada, adabag, bartMachine, batchtools, bit64, brnn, bst, C50,
         care, caret (>= 6.0-57), class, clue, cluster, ClusterR,
         clusterSim (>= 0.44-5), cmaes, cowplot, crs, Cubist, deepnet,
-        DiceKriging, DiscriMiner, e1071, earth, elasticnet, emoa,
-        evtree, extraTrees, fda.usc, FDboost, FNN, forecast (>= 8.3),
-        fpc, frbs, FSelector, FSelectorRcpp (>= 0.3.5), gbm, GenSA,
-        ggpubr, glmnet, GPfit, h2o (>= 3.6.0.8), Hmisc, irace (>= 2.0),
-        kernlab, kknn, klaR, knitr, laGP, LiblineaR, lintr (>=
-        1.0.0.9001), MASS, mboost, mco, mda, memoise, mlbench, mldr,
-        mlrMBO, mmpf, modeltools, mRMRe, neuralnet, nnet, nodeHarvest
-        (>= 0.7-3), numDeriv, pamr, pander, party, pec, penalized (>=
-        0.9-47), pls, PMCMRplus, praznik (>= 5.0.0), randomForest,
-        randomForestSRC (>= 2.7.0), ranger (>= 0.8.0), rappdirs,
-        refund, rex, rFerns, rgenoud, rknn, rmarkdown, Rmpi, ROCR,
-        rotationForest, rpart, RRF, rrlda, rsm, RSNNS, rucrdtw, RWeka,
-        sda, sf, smoof, snow, sparseLDA, stepPlr, survAUC, svglite,
-        SwarmSVM, testthat, tgp, TH.data, tidyr, tsfeatures, vdiffr,
-        wavelets, xgboost (>= 0.7)
+        DiceKriging, e1071, earth, elasticnet, emoa, evtree, fda.usc,
+        FDboost, FNN, forecast (>= 8.3), fpc, frbs, FSelector,
+        FSelectorRcpp (>= 0.3.5), gbm, GenSA, ggpubr, glmnet, GPfit,
+        h2o (>= 3.6.0.8), Hmisc, irace (>= 2.0), kernlab, kknn, klaR,
+        knitr, laGP, LiblineaR, lintr (>= 1.0.0.9001), MASS, mboost,
+        mco, mda, memoise, mlbench, mldr, mlrMBO, mmpf, modeltools,
+        mRMRe, neuralnet, nnet, numDeriv, pamr, pander, party, pec,
+        penalized (>= 0.9-47), pls, PMCMRplus, praznik (>= 5.0.0),
+        randomForest, ranger (>= 0.8.0), rappdirs, refund, rex, rFerns,
+        rgenoud, rmarkdown, Rmpi, ROCR, rotationForest, rpart, RRF,
+        rsm, RSNNS, rucrdtw, RWeka, sda, sf, smoof, sparseLDA, stepPlr,
+        survAUC, svglite, SwarmSVM, testthat, tgp, TH.data, tidyr,
+        tsfeatures, vdiffr, wavelets, xgboost (>= 0.7)
 VignetteBuilder: knitr
 ByteCompile: yes
 Config/testthat/edition: 3
 Config/testthat/parallel: true
-Config/testthat/start-first: base_generateHyperParsEffect,
+Config/testthat/start-first:
+        featsel_plotFilterValues,base_plotResiduals,base_generateHyperParsEffect,
         classif_bartMachine, tune_tuneIrace, featsel_filters,
         learners_all*, regr_h2ogbm
 Encoding: UTF-8
 LazyData: yes
-RoxygenNote: 7.1.1
+RoxygenNote: 7.2.1
 SystemRequirements: gdal (optional), geos (optional), proj (optional),
         udunits (optional), gsl (optional), gmp (optional), glu
         (optional), jags (optional), mpfr (optional), openmpi
         (optional)
 NeedsCompilation: yes
-Packaged: 2021-02-22 07:43:12 UTC; pjs
+Packaged: 2022-09-08 17:02:32 UTC; pjs
 Author: Bernd Bischl [aut] (<https://orcid.org/0000-0001-6002-6980>),
   Michel Lang [aut] (<https://orcid.org/0000-0001-9754-0393>),
   Lars Kotthoff [aut],
@@ -208,4 +123,4 @@ Author: Bernd Bischl [aut] (<https://orcid.org/0000-0001-6002-6980>),
   Annette Spooner [ctb]
 Maintainer: Patrick Schratz <patrick.schratz@gmail.com>
 Repository: CRAN
-Date/Publication: 2021-02-22 14:50:09 UTC
+Date/Publication: 2022-09-29 13:30:14 UTC
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755
diff --git a/MD5 b/MD5
index 48c0987..658b101 100644
--- a/MD5
+++ b/MD5
@@ -1,25 +1,25 @@
-966a2d173987195b97460be0dc43cf90 *DESCRIPTION
+dc514e915cc7e3524d65cefc507b6c0a *DESCRIPTION
 014379787fb81bc5ac82de6cf37253dc *LICENSE
-85ee206c40a7bba45daa73a01dc3e082 *NAMESPACE
-2b22074bc78c7d7c21f09985bf87a4f1 *NEWS.md
+c35dbcee27a2e6575cc6868f396b054e *NAMESPACE
+78f58290feab0cdf3bd69e8a22e59714 *NEWS.md
 6fb7a1feb78d244fa1774072a7f7d86a *R/Aggregation.R
 e955c4f86156d9782d29c6fe9c0c58b2 *R/BaggingWrapper.R
 e3b18b82dde4b5088011decbc715dd19 *R/BaseEnsemble.R
 87ad5c287b466e3ce695115a0ddddc26 *R/BaseEnsemble_operators.R
-5d4e60416c20d8666ec44dc3d6236182 *R/BaseWrapper.R
+31280656bc14cca77e821af46bc1b639 *R/BaseWrapper.R
 a032cc9605332f4fa300c9264d98bff5 *R/BaseWrapper_operators.R
 69f4897c509eff8b558274981c82c9f6 *R/BenchmarkResultOrderLevels.R
 67aa7215b16f4009ab2b04a687a178a1 *R/BenchmarkResult_operators.R
 bb7ec3b2c1c43be4dbc742613ec2e993 *R/ChainModel.R
 5e5e71f2e8c5c52864323d36f3b5e052 *R/ChainModel_operators.R
-fb80a343bc35b3033b19cce8d57f2b08 *R/ClassifTask.R
+e7ade00789c51ba4a73d90aee47391ee *R/ClassifTask.R
 3b038c49b00ec9df843b4a49123d9136 *R/ClassificationViaRegressionWrapper.R
 c0a92fc4a152afe4e370a4c7ccfb7c17 *R/ClusterTask.R
 0282ddd66b30927b548efb11f5923b4b *R/ConstantClassWrapper.R
 30d89fe1c16450ad4d26703c490c07b4 *R/CostSensClassifWrapper.R
 e884b3a7362b4138645b6732b26b44a9 *R/CostSensRegrWrapper.R
 4b66508384936e79f34d2b13a1f4cf82 *R/CostSensTask.R
-33da2dd4e1f3d65618e249d1cf552680 *R/CostSensWeightedPairsWrapper.R
+88e5fd67682051cc239262c513bba311 *R/CostSensWeightedPairsWrapper.R
 88d242fb219697f1bfc52e8dfc717ede *R/DownsampleWrapper.R
 567ec5af5a94abf9d6ccda9ba8d90b9c *R/DummyFeaturesWrapper.R
 3ec4b1cecb40b78cb47c1c7f7f887dd7 *R/FailureModel.R
@@ -30,12 +30,12 @@ e884b3a7362b4138645b6732b26b44a9 *R/CostSensRegrWrapper.R
 b439a40d3825693ab78de82a22a32068 *R/FeatSelControlSequential.R
 676887f1b5ade2816845753134fcd8cd *R/FeatSelResult.R
 bfb4f7e8459eec274713efcd56e5e6be *R/FeatSelWrapper.R
-5de0f560a49a5ac940ac7acd4ba69c6b *R/Filter.R
+368d04e245064d8bca3a759c623262cb *R/Filter.R
 fe4361da7d5ca9bfcde91a7d8331c2d8 *R/FilterEnsemble.R
-fede8b56ef3128b822b9ad37ea872829 *R/FilterWrapper.R
+ea8663f25f3bb74e356aac1b7708e9c1 *R/FilterWrapper.R
 3ffcd656692b6ea93604d8cd5210eb53 *R/HoldoutInstance_make_fixed.R
 a4b1b35e76b494a6fb353d2f1c6d0d3d *R/HomogeneousEnsemble.R
-cac7479e46385a99ae5ba45da0999a47 *R/Impute.R
+dbf33eaa460977954b9dfc1e642a4046 *R/Impute.R
 e94fb7baaf400061e0f9061bcef814d5 *R/ImputeMethods.R
 9e99ae2193fc3476c7768baf3df678ca *R/ImputeWrapper.R
 82646d5c3d908a6db2164b2f4ec6dd8f *R/Learner.R
@@ -96,7 +96,6 @@ b7f8fef6249cb9276d2e7f6273933824 *R/RLearner_classif_cvglmnet.R
 ef49e78f8e2586574472994ad7009673 *R/RLearner_classif_dcSVM.R
 e97f4cc547638a1f77bae5f44eceb1f4 *R/RLearner_classif_earth.R
 a1f2fdb3d335e28717690129bc321072 *R/RLearner_classif_evtree.R
-ed653668c5197f0e7c03072892d63cca *R/RLearner_classif_extraTrees.R
 f675b56a893313cd2de83a12651a891d *R/RLearner_classif_fdausc.glm.R
 308d7054c7c3e9c0009776a8c7e739da *R/RLearner_classif_fdausc.kernel.R
 6003e17272be4cedb49edac5465ae253 *R/RLearner_classif_fdausc.knn.R
@@ -108,7 +107,6 @@ e3d074e7873a86e22648fcf967631665 *R/RLearner_classif_fgam.R
 a8c70f3aecbfaf612235624258e9cc37 *R/RLearner_classif_gaterSVM.R
 4151e0aea50e84374db8a8e7e65b1460 *R/RLearner_classif_gausspr.R
 673cb954dec3e575a8a9e73295e010b0 *R/RLearner_classif_gbm.R
-fb5fd2dde133da0846fb7721603dce68 *R/RLearner_classif_geoDA.R
 9d9e2750389e1905cc06e195e4afe726 *R/RLearner_classif_glmboost.R
 dc902b8e6e4c71da0bf89480e0d393d7 *R/RLearner_classif_glmnet.R
 c402c34b269ace7b3411cd459d0fff2e *R/RLearner_classif_h2odeeplearning.R
@@ -119,8 +117,7 @@ ce6a963b92a9bfafcfefa20bc193c9ed *R/RLearner_classif_h2ogbm.R
 e2e54a052c3ef3d467840ecccf27b38b *R/RLearner_classif_knn.R
 d0915444f7fe3153370000e37e503182 *R/RLearner_classif_ksvm.R
 2d51542d4ee45e483a83372a1c4c930f *R/RLearner_classif_lda.R
-b177a0be08a858f2198b7c8646c0b258 *R/RLearner_classif_linDA.R
-b69c9b2305444ae492cb158e6bc0bdd6 *R/RLearner_classif_logreg.R
+6e17d3f07b89552676579efaf0774727 *R/RLearner_classif_logreg.R
 59e759ff02dc08269088080012306788 *R/RLearner_classif_lssvm.R
 cee31150514cd4f76ea0f22b6e4de0a6 *R/RLearner_classif_lvq1.R
 62455d84033f1968f8ae450749740f02 *R/RLearner_classif_mda.R
@@ -130,23 +127,18 @@ cee31150514cd4f76ea0f22b6e4de0a6 *R/RLearner_classif_lvq1.R
 ee019a8ecfd01fa0df16a0c95efc8d00 *R/RLearner_classif_neuralnet.R
 18d60057f0cfab14eb35c9a845d97d7e *R/RLearner_classif_nnTrain.R
 ca554e313ca2118602490ec46ea2c655 *R/RLearner_classif_nnet.R
-1cab67bba89e8cc9d71fa10e2ac5dc8c *R/RLearner_classif_nodeHarvest.R
 fef1247fb7a08248a7fc279baa6f5510 *R/RLearner_classif_pamr.R
 586806f7cf467d9ae3ad2c66221f5014 *R/RLearner_classif_penalized.R
 2e0c479412902567bbf4863b4b53a604 *R/RLearner_classif_plr.R
 7b9aae59d7a47e17220fe26cd32b4e1c *R/RLearner_classif_plsdaCaret.R
 b0b53c7c51447af70aa89a1196647741 *R/RLearner_classif_probit.R
 9b2785ba4f6c45e06db6fb868b8bacae *R/RLearner_classif_qda.R
-551d279f1b7154f43ae5b16a374fc416 *R/RLearner_classif_quaDA.R
 c64a96ed22b61c0be8508a623bf01c24 *R/RLearner_classif_rFerns.R
 82702c0402ad59bb3ef52504b144f632 *R/RLearner_classif_randomForest.R
-c8ec7fe846bbd8b8d99707b20138af9e *R/RLearner_classif_randomForestSRC.R
 1b79050f4f80164509262c58e9c4969d *R/RLearner_classif_ranger.R
 09bf7c3f6924023439db30b681ca27a5 *R/RLearner_classif_rda.R
-9754991bd975f8252d54e0920d45a7d4 *R/RLearner_classif_rknn.R
 3f590385ee16a96e30ac2e65c9a88ec0 *R/RLearner_classif_rotationForest.R
 4b5684946f407fe7f4fbc9c4477a1663 *R/RLearner_classif_rpart.R
-1b95869b1e018fd225294990c6e421b3 *R/RLearner_classif_rrlda.R
 affec814a1cab661be0ea8269de3eb7a *R/RLearner_classif_saeDNN.R
 9d8355dae09d786c741d462aa3bdb84d *R/RLearner_classif_sda.R
 4fe2b92b991ecb00b64f9a3406f2b8c2 *R/RLearner_classif_sparseLDA.R
@@ -164,7 +156,6 @@ fd3933760de13429df23d04a4975b9ee *R/RLearner_cluster_dbscan.R
 56c81cccef7181d23beae97b5f4a80e3 *R/RLearner_cluster_kmeans.R
 dd7412a3990a50250d80565071253e23 *R/RLearner_multilabel_cforest.R
 e28b62ebd6a6721befdda1d2ee0550c8 *R/RLearner_multilabel_rFerns.R
-4fccbbe30d67fa291673c9fe553a5f16 *R/RLearner_multilabel_randomForestSRC.R
 859b0758309af5c27be444c9b154d0db *R/RLearner_regr_FDboost.R
 34d1e7a2e2f20e48f2bfa2472949dd2a *R/RLearner_regr_GPfit.R
 03addf671db1178a919adbf100a501af *R/RLearner_regr_IBk.R
@@ -188,7 +179,6 @@ b92a2f86cf3c0990c037d968fa8a8674 *R/RLearner_regr_cubist.R
 18521ff5aef218ad74de881db31c77ad *R/RLearner_regr_cvglmnet.R
 58eca45f9f35e936c248111d53163166 *R/RLearner_regr_earth.R
 f098bbeb70933c8fee8b3a86d870a0c8 *R/RLearner_regr_evtree.R
-c0b0f873c12a2ce4a1f564db4af6d0ae *R/RLearner_regr_extraTrees.R
 00f921d329548f38fce3290561a68896 *R/RLearner_regr_featureless.R
 8e326be02d07057833f4ddae3a036180 *R/RLearner_regr_fgam.R
 c1e7fd0b4bb70fe1ec0430da31ef4a8f *R/RLearner_regr_fnn.R
@@ -211,14 +201,11 @@ d135c63b28ec173d9b99176fad49b504 *R/RLearner_regr_laGP.R
 a6bf20d0a3fb143875209312729808c9 *R/RLearner_regr_mars.R
 a77006621c8557e0b45be24e5ffceec9 *R/RLearner_regr_mob.R
 b35ad756cacb7e7283fcae35f5931387 *R/RLearner_regr_nnet.R
-73bf97169593e6a071e45d96cf088aaf *R/RLearner_regr_nodeHarvest.R
 ded7f24e9eebb190a8130e83b603be98 *R/RLearner_regr_pcr.R
 120fba2cf19a7c7987ef4d3d337292a1 *R/RLearner_regr_penalized.R
 78a560d5eefa405f8d7dc48ef32ec722 *R/RLearner_regr_plsr.R
 7a027e0d264d1e015a50c3937b331c3b *R/RLearner_regr_randomForest.R
-fb27bbe57abc85f48f272f59491ef168 *R/RLearner_regr_randomForestSRC.R
 f1f176438283fd5c0db4750fa2309bd7 *R/RLearner_regr_ranger.R
-905baaa22cfec9bdff0517bbe896196a *R/RLearner_regr_rknn.R
 622213e9756be3639b03c0b2de4ed4b9 *R/RLearner_regr_rpart.R
 34d6085934c518b92b8bd994b0f0db8b *R/RLearner_regr_rsm.R
 2e1261880d81383f9793e9284486bf50 *R/RLearner_regr_rvm.R
@@ -231,7 +218,6 @@ f7c716c8d3b0cc5b2a75261c98c75414 *R/RLearner_regr_svm.R
 4b0fda4936ac404c198080c02c7fbc9c *R/RLearner_surv_gbm.R
 2def997ca3a6b225241cd7f3d4655289 *R/RLearner_surv_glmboost.R
 446b777435be3c6e7e477371e748bce8 *R/RLearner_surv_glmnet.R
-0da1f926d3d8287f7455a6dcdd543aff *R/RLearner_surv_randomForestSRC.R
 f9c817ec4a59c22384faf342b30ee10a *R/RLearner_surv_ranger.R
 86119a757559319ebbf4a4ead857d868 *R/RLearner_surv_rpart.R
 c4dd805a26bb39340f20642d8a06807a *R/RegrTask.R
@@ -268,7 +254,7 @@ bdfa5cbcbe13a241772d8a5d60165176 *R/TuneWrapper.R
 7718f21a22833fa288b5e968bcc16129 *R/UnsupervisedTask.R
 d33eeab53f509591dca3888f9b6efdf2 *R/WeightedClassesWrapper.R
 c8d68196b30cddd8eb495bd0f22a9f1c *R/WrappedModel.R
-f72a69a74d48ed029c9274d9265db3b3 *R/aggregations.R
+d2700680fd272e0109d47731fc9fa5c1 *R/aggregations.R
 83ae82bd04314636a526a3a07a673335 *R/analyzeFeatSelResult.R
 97e9b9b21896fc3191d07d55d3f7f1a2 *R/asROCRPrediction.R
 9fcdc2f980e1f05c6e1abae308526b36 *R/batchmark.R
@@ -287,12 +273,12 @@ aa87952d2e4b251f306d4413139e5258 *R/checkLearnerBeforeTrain.R
 a670cbafe1430cda99aaccbc70f46330 *R/checkTargetPreproc.R
 506e4dd3eee2cc42b91b0041fd2e471d *R/checkTask.R
 2042186bc6c55630b6e134b75bdd2747 *R/checkTaskSubset.R
-a9068bae1d83198d8527b064bec2a185 *R/checkTunerParset.R
+027386c2c44e220e692a5bc413ea3521 *R/checkTunerParset.R
 3168f197f519956889a165542ffff9cf *R/configureMlr.R
 df936901874dc30c5debba7cfe314c9c *R/convertBMRToRankMatrix.R
 711422e0aaeed119aba871ca9fa98475 *R/convertMLBenchObjToTask.R
 f92c214e6abb10f0de7790587a5a6a00 *R/convertX.R
-6b032c66178e7c87bbbb41bf7bbfa4b6 *R/createDummyFeatures.R
+e47b5d90bb8ba70b64579957847dd36d *R/createDummyFeatures.R
 df57a01019c96654e32926c757f9263c *R/createSpatialResamplingPlots.R
 f2061a32c47c2368dc74ba3eb4e0d354 *R/crossover.R
 e04c9e5e88774f523d42f26b69a78993 *R/datasets.R
@@ -300,39 +286,39 @@ e04c9e5e88774f523d42f26b69a78993 *R/datasets.R
 fbe531bd0aff07706e7361f9056f2591 *R/dropFeatures.R
 b85042d2a081ea2e73dc44e28cdd741f *R/estimateResidualVariance.R
 29e8997c9678073ca8f85155e2507bb2 *R/evalOptimizationState.R
-e0fddba6d11ae1d0c4c0bff0a132bc8e *R/extractFDAFeatures.R
+25fe5bb8f852e01ad3aa732f2b0efcc3 *R/extractFDAFeatures.R
 29a3ff261585038bf08786b907bce14c *R/extractFDAFeaturesMethods.R
 d3f3169e11ee8027cfd0b92a1022d87e *R/extractFDAFeaturesWrapper.R
-36392e4b2fdcd505a5ddb21e068b3544 *R/filterFeatures.R
+ad3f54b22d45bc9deeb60b88474be50c *R/filterFeatures.R
 8148badff8a734cb7a9829b9c638f0d6 *R/fixDataForLearner.R
 8791b15061670f3f4f43d656981cede6 *R/friedmanPostHocTestBMR.R
 e2282de2969a14cb317fb113d8df15a3 *R/friedmanTestBMR.R
 2f096a909bc269c426b3985cf1e5a611 *R/generateCalibration.R
 138ecd9f6c9e936d338d884d14a6c9bb *R/generateFeatureImportance.R
-03020dd5da700881a5ff0dd71c23a4ef *R/generateFilterValues.R
-962d8de38078a39bf135bee2c24cf502 *R/generateHyperParsEffect.R
-1cef237151d2e2eb606e95c3970c1e23 *R/generateLearningCurve.R
+3ddcc7de27143fe319a4f2cb1c4a9589 *R/generateFilterValues.R
+c7e930206dccf18941648bbb6ff8ab85 *R/generateHyperParsEffect.R
+0040edc6c9e0df5aa8f4a12bb420c0a0 *R/generateLearningCurve.R
 0a233a2190404c21ae0b96effb2d235f *R/generatePartialDependence.R
 c174662ab9b7f647effed1581eb116e4 *R/generateThreshVsPerf.R
 18fe3560923bf21a273ef29eb65126e3 *R/getCaretParamSet.R
 3e96e5959b9b7beaf2e0caa2934e3597 *R/getClassWeightParam.R
 ededd36c4e275c1b8ac491a38ccbdcef *R/getConfMatrix.R
 98a24dc29d21967287c5917c6161769b *R/getFeatSelResult.R
-d87c0e1f99cc7cf542d410eda5fba3de *R/getFeatureImportance.R
+2016ed1d67fdcc8067783249f22e05fb *R/getFeatureImportance.R
 c4efab565744c9c60a192a87c8f95d33 *R/getFunctionalFeatures.R
-6b30ef6edd8fdccac30ba8eac8607cf1 *R/getHyperPars.R
+55d9c58adc1fe350d725eddfe292207e *R/getHyperPars.R
 ce1bb355b5ac6eb07a24858822445eba *R/getMultilabelBinaryPerformances.R
 170d885f2d5aa53f959dbdad9dfa102c *R/getNestedTuneResults.R
 2ef432d38840e324370a59206ca3dc7f *R/getOOBPreds.R
 20e9382e1dd79688ce3c38079068ee70 *R/getParamSet.R
 daf1150393a6367cebb3e59fb47cadd4 *R/getResampleExtract.R
-6d731b2cf0401c2d37acc3241da03f8a *R/getResamplingIndices.R
+8fe880ebbc5a736b2b38822a456d0509 *R/getResamplingIndices.R
 40257cb32b3416c8d45a2052a2500b9d *R/getTaskConstructorForLearner.R
 6d7f90b797688d24ea847ec6a15054fe *R/getTuneResult.R
 53bc73ff041c7011c07ce2279f9e0993 *R/getTuneThresholdExtra.R
 97e86ef8f21ee5c5d01b37976a98edea *R/hasFunctionalFeatures.R
-de035c338a419d95a47a43862119ce51 *R/helpLearner.R
-354ad295d02f591abebbbe0f35f1b5b2 *R/helpers.R
+6f5b63c5aaade6660ee89fc5cfc17cac *R/helpLearner.R
+ec06675c612bdb988091c9c60da26b57 *R/helpers.R
 9ebe7925d08dc84f5f38123eb058d496 *R/helpers_FDGAMBoost.R
 2f9a8ac6c1d3227bd37aa5f04343bdb0 *R/helpers_fda.R
 8e4d3eafc8b87f1a1c50cb416a5a8b19 *R/joinClassLevels.R
@@ -344,7 +330,7 @@ eaf610548725a5cd56fa32903518c76b *R/logFunOpt.R
 f2f2ce42bd930ed8e2d979941a67af6d *R/makeFunctionalData.R
 729f70b0f5fe098a4740daac4a14eb41 *R/makeLearner.R
 2f3b27c17086fbcb2f9d315e4ac6d7d5 *R/makeLearners.R
-1a2f38f69a1adfd535c7fbfa5cc0db55 *R/measures.R
+7d6cb892e08a1fbc4e6f074932b379f0 *R/measures.R
 cf3fca57983e399d3d88fb509bf2fa01 *R/mergeBenchmarkResults.R
 86bf7b01804505098c6fa18b541ac2b8 *R/mergeSmallFactorLevels.R
 a2ef963d964dc4098b4ae241a527a67c *R/mutateBits.R
@@ -356,7 +342,7 @@ e63cbdd3fa0b234a335c19a551d9eb90 *R/plotBMRBoxplots.R
 586c959d1c2f2639cd2a6fc153bf28e8 *R/plotBMRRanksAsBarChart.R
 309b9c94696aeac0a2134de2c2c9da68 *R/plotBMRSummary.R
 dea656f877327a40813a26112cc103a3 *R/plotCritDifferences.R
-1c518d290e1c642f074a75d7cfe1d3d9 *R/plotLearnerPrediction.R
+2b3ec0c856cb88079319e96d2b7f25d8 *R/plotLearnerPrediction.R
 fec08c4a7a5a95bf31bf8250dddb06dd *R/plotResiduals.R
 a7e6ec17ea229558a9ad340f4203308c *R/plotTuneMultiCritResult.R
 3715a0e7314d1202adf6874212ebaf2f *R/predict.R
@@ -366,7 +352,7 @@ a7e6ec17ea229558a9ad340f4203308c *R/plotTuneMultiCritResult.R
 9fa81338a5f7534ca18ea80a8e130f38 *R/removeHyperPars.R
 58eaa92d44dd71891e9d7f4502f90d46 *R/resample.R
 0442ae12e422d36c3daa90fd65977186 *R/resample_convenience.R
-63d1a2cc8336679ece4c78cb2249d0cc *R/selectFeatures.R
+b770276bf0921d72ee1c446666f172ac *R/selectFeatures.R
 ae1b08a5373de5cffa6be58b763f49fc *R/selectFeaturesExhaustive.R
 1c358df521ed8ebba871879352b742d3 *R/selectFeaturesGA.R
 951599618fab9c2a40b47c22041b9e84 *R/selectFeaturesRandom.R
@@ -396,13 +382,13 @@ fa7be6c001e736944ba3cdea1139b283 *R/tuneParamsMultiCrit.R
 805a643f5661e60ac22d30df05365bba *R/tuneRandom.R
 5692f7f5d35ba8955f03b8e2b5c269de *R/tuneThreshold.R
 ef9867f58f1ebe93631eb89fa1de0d09 *R/tunerFitnFun.R
-307bc1d6dabd14b0ea2ea1ea65221eb6 *R/utils.R
+db76aa2e76643df7047e5becc63ed841 *R/utils.R
 67c258bea482b4a524ef63e179c8347e *R/utils_imbalancy.R
 12e616e229022ab720c03f10cc0716b4 *R/utils_opt.R
 0e0c409c0f7cee1a80872ca9de496b39 *R/utils_plot.R
-b09507259a072e74f3428cf517add003 *R/zzz.R
-fc8619689f937c59844db185ec21b0bb *build/partial.rdb
-c4c17b4d384c3c5cd93791562c49af2a *build/vignette.rds
+7ba6aab2fcf11ffae71692662f3958cb *R/zzz.R
+0c6ad5b3446721162c89589e8077ab1c *build/partial.rdb
+caa8f197148286a9c59008f3b3a3afc8 *build/vignette.rds
 5fc5b3ba3e9b5ba70f9d1832fe9088b5 *data/agri.task.rda
 64cb3bf54eac3e621229768ca39f82ec *data/bc.task.rda
 34c1a6f89abf1987e77d37f7d8c12c62 *data/bh.task.rda
@@ -422,9 +408,9 @@ c11a531f7d9b68f9e9943f1be0c587e7 *data/wpbc.task.rda
 33ad2526b4613c5dda33e84b1226fdfa *inst/CITATION
 25dee11eb35ce83098c33aa22ff8880a *inst/doc/mlr.R
 33f5ed127b7ebf00a9218901d1267498 *inst/doc/mlr.Rmd
-94c6487caf7f4eac614b9008cf79c5e4 *inst/doc/mlr.html
-574e1f5cad43ac14c6422874598449fa *inst/examples/MultilabelWrapper.R
-238661a46e46e7e55e05839cbf337a1a *inst/makeData.R
+908d15141ba47aeda4f171db54f746c4 *inst/doc/mlr.html
+41fbac8eec0f3968427ac79280b59f43 *inst/examples/MultilabelWrapper.R
+fd858e93fcd6d5d8867aa826d5b71e5b *inst/makeData.R
 16f082a4371ee537d6b933ab134416cc *man/Aggregation.Rd
 8183395866ea8eda40f1e3981ee19a2b *man/BenchmarkResult.Rd
 780f052b7121f0f25e3a0ff10ea5421a *man/ClassifTask.Rd
@@ -459,8 +445,8 @@ b006e516218f01ba9610b25b5e521218 *man/bc.task.Rd
 bfb01c3f79414934618490185e3e485c *man/benchmark.Rd
 bc1f0df5f4a29297ff09df39e4087eef *man/bh.task.Rd
 784c602d8de0a92f6c9160f81359b2fe *man/cache_helpers.Rd
-a50fbbe3797e91b20cf7febd4149139f *man/calculateConfusionMatrix.Rd
-49af7b960cff2369671a8c969d46ef61 *man/calculateROCMeasures.Rd
+69c83293ae49c47a8d6f0f73886e9655 *man/calculateConfusionMatrix.Rd
+e980741ae59d9e22a8fa54b2230993eb *man/calculateROCMeasures.Rd
 463db9668a46eb6b033749492dd136e0 *man/capLargeValues.Rd
 3530fdc87b7a97fc6ba207aba606b00c *man/changeData.Rd
 cd414c824bcc13ed3c28ef027d3a38cf *man/checkLearner.Rd
@@ -479,19 +465,19 @@ d54ea9e178d937052bb5dc31bf45ef88 *man/estimateResidualVariance.Rd
 8e2c59f09ddf32d436bbb1684ed26485 *man/extractFDABsignal.Rd
 73b3b26e31717673b72f09c491fcae9c *man/extractFDADTWKernel.Rd
 fc52e58baf3707de4e879b49f4ef29ce *man/extractFDAFPCA.Rd
-010f255b7f558ff0633734c281cb0fad *man/extractFDAFeatures.Rd
+ddf6cc7ddec0c451037a38378b894690 *man/extractFDAFeatures.Rd
 046a2013dfcb145a26bc605ef4fb82a1 *man/extractFDAFourier.Rd
 81d12f5c42de2a65c1a1fc277252f9e8 *man/extractFDAMultiResFeatures.Rd
 60d7fe96d6a262e2e8eca6773d288610 *man/extractFDATsfeatures.Rd
 f78ead5838d181cd7e7b755d6319653e *man/extractFDAWavelets.Rd
-9b3b06f5fd5167bd1a352a5307683e57 *man/filterFeatures.Rd
+6e1446a50148caa521fd35edc5a2bd71 *man/filterFeatures.Rd
 6a8b97d72505fd72dbe4ed884643ade0 *man/friedmanPostHocTestBMR.Rd
 f688476c28782def0e3e5f3e1f6801d3 *man/friedmanTestBMR.Rd
 aeeb2633adaa8a4ecdcec22edc68f58d *man/fuelsubset.task.Rd
 f86651b1ec51888d8177782b8ba88577 *man/generateCalibrationData.Rd
 7702a78dcb0d6307a574f62a28a8f3fb *man/generateCritDifferencesData.Rd
 adef38ed6bc621b150f0479ac2b205f4 *man/generateFeatureImportanceData.Rd
-4bcaa2a2b3f58a3b9db5285223f2606f *man/generateFilterValuesData.Rd
+cde1ca70995866f1e21e5e458d891890 *man/generateFilterValuesData.Rd
 73111cab0711e71ded9968a693939604 *man/generateHyperParsEffectData.Rd
 8e2f627a567012da502474d45a10900c *man/generateLearningCurveData.Rd
 9e1c54289be58b2c63f1c4ee8e89d46f *man/generatePartialDependenceData.Rd
@@ -518,8 +504,8 @@ ce6b08f144b99986573b355299cac33d *man/getClassWeightParam.Rd
 7e1b61e79210cf7170550158d2f682e0 *man/getFailureModelDump.Rd
 0bf778f8daab6556358be800c076565f *man/getFailureModelMsg.Rd
 66043fb7fe72f48037396da88a4a8b56 *man/getFeatSelResult.Rd
-dec922685957b1f5d4d11731848c9c2e *man/getFeatureImportance.Rd
-193f034bb6c49956510991cbe7ff5aaf *man/getFeatureImportanceLearner.Rd
+02ac6eab1f638c9a63a051d8ee4b314a *man/getFeatureImportance.Rd
+d09ef153857382b85976e3b23ab5e237 *man/getFeatureImportanceLearner.Rd
 cbf32d110fd0f65608b7019aec2f9bc7 *man/getFilteredFeatures.Rd
 fa9e36fbb9b19d36b61c866377423bcf *man/getFunctionalFeatures.Rd
 00044e0444cc60986fa24d52c95001d1 *man/getHomogeneousEnsembleModels.Rd
@@ -573,7 +559,7 @@ ceaf22c14bc593e1615e4a90b8c51113 *man/hasProperties.Rd
 74c5c44dce6fa3b7e673b332441b3193 *man/helpLearner.Rd
 3532465392ab1fd006718ccbbee96ee4 *man/helpLearnerParam.Rd
 30f01ac114526a79c0dc7b264dbb3ec5 *man/imputations.Rd
-bdc5fe38846b37ce31b348396f37e371 *man/impute.Rd
+e043c2a0639a23b319b587e7218c977f *man/impute.Rd
 144bb2fe4d269c0747bcabb215ee1a5e *man/iris.task.Rd
 21ebc17eed99dfecc487bed62f443a71 *man/isFailureModel.Rd
 df6f868480123f3646706542f04a98cd *man/joinClassLevels.Rd
@@ -596,7 +582,7 @@ a40d120a815ee68eb9c0222128e51428 *man/makeBaggingWrapper.Rd
 636b8adbfcae57f8242068deed1b9ca2 *man/makeCostMeasure.Rd
 c253cabea76ff101a5215cc10d53b05f *man/makeCostSensClassifWrapper.Rd
 afabd221b0fd6548cd1c200b5e33bffb *man/makeCostSensRegrWrapper.Rd
-e7a673d0638518c8d498173f21e9217d *man/makeCostSensWeightedPairsWrapper.Rd
+9dccf6e1b70ee7502866fff9d0189a58 *man/makeCostSensWeightedPairsWrapper.Rd
 8019970fbf40f88eb08a11ff5302aa66 *man/makeCustomResampledMeasure.Rd
 8791f8e8f5d95e05925a2062cad76072 *man/makeDownsampleWrapper.Rd
 4281eb2185a46004ed659b2cbad918cf *man/makeDummyFeaturesWrapper.Rd
@@ -605,7 +591,7 @@ ef808bd27a70a188331703c05b0a11ff *man/makeExtractFDAFeatMethod.Rd
 6dbc4bf80bf46f02cea2a560bdbba345 *man/makeFeatSelWrapper.Rd
 20cdfe7593a0624414401b2c0676c7d1 *man/makeFilter.Rd
 1481952a124472828a06d22ef639266c *man/makeFilterEnsemble.Rd
-835d5aa56c4301ab5a76cd82f87a2c0f *man/makeFilterWrapper.Rd
+771acf852b7960a6fd1b7e75d877c4fe *man/makeFilterWrapper.Rd
 a75c24ee15f5c5f9a19af18e0bc41ccf *man/makeFixedHoldoutInstance.Rd
 d1d24fe77b51cb2cea70e50a002ebf3e *man/makeFunctionalData.Rd
 5250145fbf0b56d6b0a336a5a7a965f2 *man/makeImputeMethod.Rd
@@ -616,11 +602,11 @@ fc5c7f585148442ee6bdf08ee7d6a7f2 *man/makeMeasure.Rd
 450301777fb0c723b218f3f37e023809 *man/makeModelMultiplexer.Rd
 ba277ee840b90b325e0b40412cec6285 *man/makeModelMultiplexerParamSet.Rd
 81e85e21d4d6bcf4afeaa0c97e427274 *man/makeMulticlassWrapper.Rd
-171c115ea74fa462a63872f760483170 *man/makeMultilabelBinaryRelevanceWrapper.Rd
-22e3523f758bfdb686c340a987242dca *man/makeMultilabelClassifierChainsWrapper.Rd
-73699a234d7db60a8c23d8346f21a58f *man/makeMultilabelDBRWrapper.Rd
-17e8539c13cb483ace2df70ab90c9a44 *man/makeMultilabelNestedStackingWrapper.Rd
-026aeb6aa9630013e7e4071449cf15ca *man/makeMultilabelStackingWrapper.Rd
+467dd03d99036df68e49c5e5f7a74943 *man/makeMultilabelBinaryRelevanceWrapper.Rd
+0a84a8df4bb05fb6419748d40d5dabbd *man/makeMultilabelClassifierChainsWrapper.Rd
+eb930931c9d355de9b540301d01e1c7c *man/makeMultilabelDBRWrapper.Rd
+1eaaa737a086a2adfb2b85477e5be1bc *man/makeMultilabelNestedStackingWrapper.Rd
+8776fa43a9c9d56df35c8253259aeee6 *man/makeMultilabelStackingWrapper.Rd
 4940d881c6c57313831a8f8eca793f6e *man/makeOverBaggingWrapper.Rd
 7a8477f4249542057eddba00f5a414b5 *man/makePreprocWrapper.Rd
 164ee1370676bc02d9ab44ae4e590f0d *man/makePreprocWrapperCaret.Rd
@@ -648,7 +634,7 @@ d6fe29ea5ebeddcf4f432fb242df2411 *man/makeWrappedModel.Rd
 f4f3a474bf5f769036f2098a04baf472 *man/measures.Rd
 d8761232d6f11908a976963a1e5a2735 *man/mergeBenchmarkResults.Rd
 d829f8e5552d2784b41d9c99b3ce4333 *man/mergeSmallFactorLevels.Rd
-dffbc894dcdb7d2830c205a7e06fe792 *man/mlr-package.Rd
+eb00c59ccb2ad028f11a4ea4810ca185 *man/mlr-package.Rd
 c5bcd7f89e214b8fc10eb13fad6af47c *man/mlrFamilies.Rd
 5c0685dfe41d9cfd6e0e10196a53378d *man/mtcars.task.Rd
 cd90fee27c64463dbda6311229facdd3 *man/normalizeFeatures.Rd
@@ -707,23 +693,32 @@ d9042afc59a98a840d99196e50112ec3 *man/wpbc.task.Rd
 2c4dff11f4ec8cacde5e106a6a82a75d *src/Makevars.win
 bacfab90ddd0a7a56151a6a6c1b1ebe9 *src/init.c
 3b08f66ef8f42901456a25c23f81c83f *src/macros.h
-68a14007c09719d8c204d1683b9a9949 *src/smote.c
+96e5b465254fdd57196c2c8377574ef9 *src/smote.c
 60e03b99c780b03278db222ead07e596 *tests/figs/deps.txt
 016df88f8fbea89d225acfde6ded1a1b *tests/figs/featsel/feat-type-cols.svg
 b72656ebe86979cd7f67e5981c70c2a5 *tests/figs/featsel/filter-argument.svg
 be1d2f1720af05b34718728cf704d662 *tests/figs/featsel/n-show-nfeat.svg
 88117accf2f91d0263ad51411de0eaf9 *tests/figs/featsel/n-show.svg
 9119516173d1d4c546f4d90a22b1f52b *tests/testthat.R
-6235970c9423a6c96f811559bf2c1d43 *tests/testthat/Rplots.pdf
+adbfbd9a772aeb0dc0c2ae3eab7c2bd4 *tests/testthat/Rplots.pdf
+68397e723866ccaf7c9815581d49bf48 *tests/testthat/_snaps/base_plotResiduals/plotresiduals-classif.svg
+fa4e64b888b6430e88344790621c497e *tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr-pretty.svg
+f9bd4edc6f622599a3529fa5a326b6ed *tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr.svg
+6ca03d6341f3f9820b1772633fb0c67d *tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist.svg
+473bef586d3d590d5781c48eecfd2633 *tests/testthat/_snaps/base_plotResiduals/plotresiduals-regr.svg
+fa4e64b888b6430e88344790621c497e *tests/testthat/_snaps/base_plotResiduals/plotresiduals-scatter-bmr.svg
+90530bd4b3174b417337956ffc3294a1 *tests/testthat/_snaps/featsel_plotFilterValues/feat-type-cols.svg
+6a4b6ce0a5dad7cb5a97181f270a5b8f *tests/testthat/_snaps/featsel_plotFilterValues/filter-argument.svg
+db276d1bcbdad685273f65218d480b68 *tests/testthat/_snaps/featsel_plotFilterValues/n-show-nfeat.svg
+4be3f3e8b99c530be73e961f66234f65 *tests/testthat/_snaps/featsel_plotFilterValues/n-show.svg
 b4f116e1ce1e149ef804418cd654fce5 *tests/testthat/helper_funs.R
 61c3f539199521429bbed7f5d91fdd78 *tests/testthat/helper_helpers.R
 167640eef352ac8c8e302f79c9f57901 *tests/testthat/helper_learners_all.R
-205bb9825dbba3546f820325bc100087 *tests/testthat/helper_lint.R
 5543427a71399d0f370b958457cdb957 *tests/testthat/helper_mock_learners.R
-a3970ff02e8a9bdcf72b577c5036e6d4 *tests/testthat/helper_objects.R
+27d533bc22fb01772dba7048a3e9aac4 *tests/testthat/helper_objects.R
 eda981b66fc45c876e96fb2ad00e8b7f *tests/testthat/helper_zzz.R
 03904e11c80dfac7c18aa5e162ba68ac *tests/testthat/test_base_BaggingWrapper.R
-26a04b130cb4c918c22c34b6fe112fc1 *tests/testthat/test_base_BaseEnsemble.R
+55e8826f7903af81997b8a6d8996cd3a *tests/testthat/test_base_BaseEnsemble.R
 bc9b96a4f5f54cd8cfe9b62936f10b99 *tests/testthat/test_base_BaseWrapper.R
 bb037eb9c3ba0ebc74081f4d139cbf64 *tests/testthat/test_base_ClassificationViaRegressionWrapper.R
 231dd50bd71084cd96b729850f95701d *tests/testthat/test_base_ConstantClassWrapper.R
@@ -734,7 +729,7 @@ bb037eb9c3ba0ebc74081f4d139cbf64 *tests/testthat/test_base_ClassificationViaRegr
 cdc9490c9410557cf2c1528bb522ede0 *tests/testthat/test_base_ModelMultiplexer.R
 bc0c3905362ac697036a9fec0b12690f *tests/testthat/test_base_MulticlassWrapper.R
 cedbddb21059add9411de3816c2234c6 *tests/testthat/test_base_NoFeaturesModel.R
-a933ec784e894e80183d2eaac118d049 *tests/testthat/test_base_PreprocWrapper.R
+79cf914be2c92c8c3229f6d058845378 *tests/testthat/test_base_PreprocWrapper.R
 1328388035c09b879d97ec156cb2cde6 *tests/testthat/test_base_PreprocWrapperCaret.R
 a2081a4f1f5b25c66a32c8407b4c7244 *tests/testthat/test_base_SupervisedTask.R
 d4168fffa29623e4bdfae2c377d78d41 *tests/testthat/test_base_TaskDesc.R
@@ -742,14 +737,14 @@ d4168fffa29623e4bdfae2c377d78d41 *tests/testthat/test_base_TaskDesc.R
 9620f00c5a88d2b0801476c39c3a00ab *tests/testthat/test_base_UnsupervisedTask.R
 aea83e85af08aadc5a2f897e95212cbd *tests/testthat/test_base_aggregations.R
 c94d068897272a66d9878bf54f12a515 *tests/testthat/test_base_batchmark.R
-a95d8a96a3c5867799928bcc419ae3d4 *tests/testthat/test_base_benchmark.R
+3ba8a9f8c9227117f7a223543bee974c *tests/testthat/test_base_benchmark.R
 4911ec69c88b31991328e2fd4052ab80 *tests/testthat/test_base_blocking.R
 74d3532eff79cd2981ea6d4688eb183f *tests/testthat/test_base_caching.R
 63846a664e290965eded7254a5d6a2fc *tests/testthat/test_base_calculateConfusionMatrix.R
 318ed039bd1e2e8ee9d5f3a7fc121f34 *tests/testthat/test_base_calculateROCMeasures.R
 5281f53539825a0681f6706a3419ddef *tests/testthat/test_base_capLargeValues.R
 ef30bf7da7dbf591a5063506698707ce *tests/testthat/test_base_chains.R
-16d2e892e1ab31362954a6a6007c7efa *tests/testthat/test_base_checkData.R
+2bc2e01235c98365a6f0808ab013d471 *tests/testthat/test_base_checkData.R
 ff099f75421fef27622d8f9b90aa5526 *tests/testthat/test_base_checkTaskLearner.R
 25d9272b96f9a75dbaf5ea8034855737 *tests/testthat/test_base_checkTaskSubset.R
 15ea748811e1e207bfc4eb875fde3ab5 *tests/testthat/test_base_clustering.R
@@ -761,32 +756,32 @@ ff099f75421fef27622d8f9b90aa5526 *tests/testthat/test_base_checkTaskLearner.R
 ff23f05bc4569bec97f87a101dd5a225 *tests/testthat/test_base_createDummyFeatures.R
 1c18c089e5a20560ede3a9549a6eaace *tests/testthat/test_base_createSpatialResamplingPlots.R
 1abc67ce4e8a61ce0351664764f1a3de *tests/testthat/test_base_debugdump.R
-a8f9c6ca39ba0ae1311d99dd074c079b *tests/testthat/test_base_downsample.R
+c1a624707074a4e43701c0fa12907689 *tests/testthat/test_base_downsample.R
 34d61f2b5e3482bb936914bdf383df2e *tests/testthat/test_base_dropFeatures.R
 057576824843a3fee532a6ddfab3ea40 *tests/testthat/test_base_estimateResidualVariance.R
 ed5ab67ea634b13d1c6539eb7b6a6634 *tests/testthat/test_base_fda.R
 eae4b06bde9e0af09ea5e217882c517e *tests/testthat/test_base_fda_extractFDAFeatures.R
-7f6705dfee323dea9e347d67a6d22882 *tests/testthat/test_base_fda_extractFDAFeaturesMethods.R
+3e91dce1c15fe69c04900234daba1fcb *tests/testthat/test_base_fda_extractFDAFeaturesMethods.R
 ca8cdad2e9d88ac3335123204a4b397d *tests/testthat/test_base_fda_extractFDAFeaturesWrapper.R
-36086a239ebe757c6fe8c7690dbc39b9 *tests/testthat/test_base_fixed_indices_cv.R
+85b009f22de3ba5218d000f37747eb3f *tests/testthat/test_base_fixed_indices_cv.R
 cb6e1a3c0978bf0c5eedb2cc80069e10 *tests/testthat/test_base_generateCalibration.R
 f0c24b9057741776dd784b902aa71384 *tests/testthat/test_base_generateFeatureImportanceData.R
-5c75250fdb278bf3592d7d4b911cb272 *tests/testthat/test_base_generateHyperParsEffect.R
+7a9d4a72c8abe87a82f03b1c3ab6cb43 *tests/testthat/test_base_generateHyperParsEffect.R
 e1509953c084f5b1edc1a19dde678baf *tests/testthat/test_base_generateLearningCurve.R
 c990ae00c492ee701c1bb9945352fb8b *tests/testthat/test_base_generatePartialDependence.R
-05a2d92c0b82580db1d9b25cf7390b3d *tests/testthat/test_base_generateThreshVsPerf.R
+aa6c8e155f160606f9c77cd22418ee1f *tests/testthat/test_base_generateThreshVsPerf.R
 6e63d845b1598ea4f8e729c6a6087093 *tests/testthat/test_base_getCaretParamSet.R
 6ddcde2cac31643938cfc2b009c6074d *tests/testthat/test_base_getFeatureImportance.R
 9cd2cc0e0bebbb07900266dcfb3daaf5 *tests/testthat/test_base_getHyperPars.R
 bb896ce8adf84a5da208092b4bd59782 *tests/testthat/test_base_getOOBPreds.R
 71c5e4236d39d8569f389ac15e615056 *tests/testthat/test_base_getParamSet.R
-05b5f0d9f7fb7cfb7cc910d12d92800a *tests/testthat/test_base_getTaskData.R
+09086025f16d9b5b39a580c7260bf530 *tests/testthat/test_base_getTaskData.R
 de5385c16b1b97c72cb5791cc537f7ca *tests/testthat/test_base_getTaskFormula.R
 780250403ecc9c8304734af2b895aecd *tests/testthat/test_base_helpLearner.R
 9be0f0a4ab6cd4a765e56d8c8465d261 *tests/testthat/test_base_helpers.R
 28d245c9481264d80c07994102328148 *tests/testthat/test_base_hyperpars.R
 87da73424f26d98b8259a5796b39cf0c *tests/testthat/test_base_imbal_overbagging.R
-0655470ba05ba4be2b127c8a15cd7f32 *tests/testthat/test_base_imbal_overundersample.R
+bcfe2fc9a53f48ba5d9381b145dac72a *tests/testthat/test_base_imbal_overundersample.R
 c2fc0f4a0318def4f363c0da8b8e4086 *tests/testthat/test_base_imbal_smote.R
 466d5054314520d54bd75354160189b2 *tests/testthat/test_base_imbal_weightedclasses.R
 82b455b8f4407f20c7f24f52ce99c3eb *tests/testthat/test_base_impute.R
@@ -795,26 +790,26 @@ c0d57eae3d4a59b4021587d19261c857 *tests/testthat/test_base_learnerArgsToControl.
 32c2e6f5f20271230309ad2ed33b8830 *tests/testthat/test_base_listLearners.R
 aa712c107e86e30bebc74f478aff0cc7 *tests/testthat/test_base_makeLearners.R
 acd62b6392f796117af115b1d26f1a8d *tests/testthat/test_base_makeTask.R
-1511c4d737c944394e8cb5dcbe3c031a *tests/testthat/test_base_measures.R
+d4131304eb159e3005aa2cb5dc133d00 *tests/testthat/test_base_measures.R
 4ccb6ad32c3d0770f7eb5f035faa3276 *tests/testthat/test_base_mergeBenchmarkResults.R
 447cd806ed28e95dfaaae0e25fa9cef1 *tests/testthat/test_base_mergeSmallFactorLevels.R
-944b61699653bf562b8f667fb1cb9e88 *tests/testthat/test_base_multilabel.R
+7d99a3f9d019fae2a7dd6c18aabbf2cc *tests/testthat/test_base_multilabel.R
 61d81300bff1d6d3bf001508cd95af3d *tests/testthat/test_base_multilabelWrapperIds.R
 33432392b10cd9110927a5997823bf33 *tests/testthat/test_base_normalizeFeatures.R
 52a83c91e4d8fcec94a97efbce3778dd *tests/testthat/test_base_orderBMRLevels.R
 f914aa6b8b78267dbdf09cfd28c2de96 *tests/testthat/test_base_orderedfactors.R
-f49509fe7a23f1fd6301cc2f0028893b *tests/testthat/test_base_performance.R
+3a3b0eb7d48a8b9152f5cdfef1babd00 *tests/testthat/test_base_performance.R
 78fbfd4b532cdeee8909a031219ca5f8 *tests/testthat/test_base_plotBMRBoxplots.R
 5400e9bfad5951da7ab5b2d78e32346f *tests/testthat/test_base_plotBMRRanksAsBarChart.R
 979fdfa6e972e2d8f3c8e4efd373ae38 *tests/testthat/test_base_plotBMRSummary.R
 36dad299f5ced953897f155b76b1d392 *tests/testthat/test_base_plotCritDifferences.R
 80c46221e85ac09a2d379032ef8878c0 *tests/testthat/test_base_plotLearnerPrediction.R
-0ba744231fa42a9c4f4cc412db34785a *tests/testthat/test_base_plotResiduals.R
+5afedc5fc8c3509ea98f2871951cfa26 *tests/testthat/test_base_plotResiduals.R
 8a4299783c600abb3dff81babaa324d7 *tests/testthat/test_base_predict.R
 f94c9dc947ab495fe4020b6499b9f891 *tests/testthat/test_base_prediction_operators.R
 c71f08edebd6f7e357b7e2520fd3ac8d *tests/testthat/test_base_relativeOverfitting.R
-f649aff738d8997ac45608213253177b *tests/testthat/test_base_removeConstantFeatures.R
-e16f9c86c7180b8f47236b3db9d88890 *tests/testthat/test_base_resample.R
+68aca96ca2cffed8a048b2634e237ca4 *tests/testthat/test_base_removeConstantFeatures.R
+3704d4baa2b45c46f276de97a895d5b9 *tests/testthat/test_base_resample.R
 07decd2dfb58c08058d6c1e3980931a5 *tests/testthat/test_base_resample_b632.R
 86193fc8838a48daa98fa81a88bd5537 *tests/testthat/test_base_resample_b632plus.R
 bc34666e3f2d6020ce08400737c1a8fd *tests/testthat/test_base_resample_bs.R
@@ -869,7 +864,6 @@ bd39b80e2a3bc1b3f091de6133cea4e5 *tests/testthat/test_classif_cvglmnet.R
 a34ef9378457573f649ca11cee592acf *tests/testthat/test_classif_dcSVM.R
 b0cd3a278d886b6a87a182a288321317 *tests/testthat/test_classif_earth.R
 e2d1ed29d2ee9e93c7005fb1f613f7f6 *tests/testthat/test_classif_evtree.R
-02579425c24c6b7a28807763d3a86267 *tests/testthat/test_classif_extraTrees.R
 ce9c6e80786d9bc7eca31350c32fd511 *tests/testthat/test_classif_fdausc.glm.R
 7e090a4e45f30375b10442ad6ab74421 *tests/testthat/test_classif_fdausc.kernel.R
 081052ccb3e491b408d1b50d7449240b *tests/testthat/test_classif_fdausc.knn.R
@@ -881,18 +875,16 @@ bd7c1390317f16534d5d98deb45be85c *tests/testthat/test_classif_featureless.R
 75dd19af75f6b0666aad02c080844beb *tests/testthat/test_classif_gaterSVM.R
 927daf6514fe91b2318fd9be5361f7be *tests/testthat/test_classif_gausspr.R
 ac42c51b484a109c4cb0a042c02a255e *tests/testthat/test_classif_gbm.R
-f7273918231847bd1e1b24b2db34f0e2 *tests/testthat/test_classif_geoDA.R
 7a89c9104db8d0150a3eaafb10d6e7b9 *tests/testthat/test_classif_glmboost.R
 efbeecaa8263a41b2503d194e632e4b3 *tests/testthat/test_classif_glmnet.R
 45c9b0393f3b704f77b91e1123f15264 *tests/testthat/test_classif_h2odeeplearning.R
 20c232687517dbce17dcf1e4f68dcbbf *tests/testthat/test_classif_h2ogbm.R
-bc218dee00edc1deb888cf8e52d83fd3 *tests/testthat/test_classif_h2oglm.R
+e1bfbf837c235098b23cfaf20684e9f8 *tests/testthat/test_classif_h2oglm.R
 7a96e14fbf95503516829f7909369563 *tests/testthat/test_classif_h2orandomForest.R
 720d46fa5c3c0cbcbfc66e9f3a2eb7eb *tests/testthat/test_classif_kknn.R
 2f13c3ee293eb4e78078a381dafedd3f *tests/testthat/test_classif_knn.R
-ed26734d62b410ba28b8d5920debcf1a *tests/testthat/test_classif_ksvm.R
+997fd9870a9f4d499f58cddc37a58ccb *tests/testthat/test_classif_ksvm.R
 1e822f5e8a15d7e15b56e16f6c736837 *tests/testthat/test_classif_lda.R
-2b5345f95b5ad305a55bafe68da3c32f *tests/testthat/test_classif_linDA.R
 7911f53dd4ab6ffb95786553246c898a *tests/testthat/test_classif_logreg.R
 7fb57583f8fda875d47fb4f9b0552e56 *tests/testthat/test_classif_lssvm.R
 25c4524179c1c989e1c02210615cbc96 *tests/testthat/test_classif_mda.R
@@ -902,23 +894,18 @@ f26e2a286f0569e23ef12015fb63419d *tests/testthat/test_classif_multinom.R
 204f3358197d9a8c7fefb49a127a0963 *tests/testthat/test_classif_neuralnet.R
 3d494612d87edec6123f43ab5fad884f *tests/testthat/test_classif_nnTrain.R
 292ebf44626baaf9e7c8d88995ef9343 *tests/testthat/test_classif_nnet.R
-e0e81eb71ac53889baa4be83e57aa7d8 *tests/testthat/test_classif_nodeHarvest.R
 4104e0810171194ef08c037f264b3bf8 *tests/testthat/test_classif_pamr.R
 fecdcc7bff8c44e7f3508c18ae53bc1d *tests/testthat/test_classif_penalized.R
 ebb85465ffc35ab7764fd559628ab619 *tests/testthat/test_classif_plr.R
 df87946ec9f8b6bc0e91829190b5d7b7 *tests/testthat/test_classif_plsdaCaret.R
 29a305b1f2daeeb24244015f53b368cd *tests/testthat/test_classif_probit.R
 b3e10001306c8d460639d968a2de5e60 *tests/testthat/test_classif_qda.R
-204bd32893ebf91d32bd253b7e48c1c6 *tests/testthat/test_classif_quaDA.R
 67fb54307224041781505aaa732280a8 *tests/testthat/test_classif_rFerns.R
 6fc403d6dc0835342bb1ed8173a68ba7 *tests/testthat/test_classif_randomForest.R
-4a999d4254629a37fdb8bfd940f7b719 *tests/testthat/test_classif_randomForestSRC.R
 dc5c6db8d61d3ca0ffbba62932d94028 *tests/testthat/test_classif_ranger.R
 bdc955bbe112d0744ee07ac48d13bf5c *tests/testthat/test_classif_rda.R
-40d322a82e1e5b2f9ca61c84f81f2d22 *tests/testthat/test_classif_rknn.R
 40f1c1b258c479470cb66dfcd81b7d21 *tests/testthat/test_classif_rotationForest.R
 aa6b371c5e84124b75ab9a595237ded7 *tests/testthat/test_classif_rpart.R
-3fab56574324220e0f61966b5ecaf5fc *tests/testthat/test_classif_rrlda.R
 4cd71acd10619c9a379c0075e949fec8 *tests/testthat/test_classif_saeDNN.R
 43934789c1cba8320ab1f08988501dd1 *tests/testthat/test_classif_sda.R
 e52aa1daaa68f0fd73a9ebfb07811a91 *tests/testthat/test_classif_sparseLDA.R
@@ -937,24 +924,23 @@ adb5c73ae336d9c6a4ba2113cbcd1496 *tests/testthat/test_cluster_dbscan.R
 806cadd3da7a0819505e52b1049c349f *tests/testthat/test_featsel_FeatSelWrapper.R
 2ace9608142350501d337226d8deaa47 *tests/testthat/test_featsel_FilterWrapper.R
 72a29ef88ffceb4c634a5ac9e060c1a0 *tests/testthat/test_featsel_analyzeFeatSelResult.R
-a3017a9b89e9cc1e16dbd0419eee61e1 *tests/testthat/test_featsel_filters.R
+890a13c4c71ccf17354d077aa4d18e6b *tests/testthat/test_featsel_filters.R
 98248691228daebc6cd1aab916ff5590 *tests/testthat/test_featsel_fselectorrcpp.R
-aad8bb9a68919baf47f2ddd1f6f18473 *tests/testthat/test_featsel_generateFilterValuesData.R
-4a4153f231869d13ddeedf66ac588745 *tests/testthat/test_featsel_plotFilterValues.R
+0225f8bfdb9fa11e92134e28794c6911 *tests/testthat/test_featsel_generateFilterValuesData.R
+b1f1b1cafd43559fbb29d49dc5025aba *tests/testthat/test_featsel_plotFilterValues.R
 23b10f607ebaf986647b3d4e7a91acd3 *tests/testthat/test_featsel_praznik.R
 c9ba3f7a83599e83d37f98926c630a7d *tests/testthat/test_featsel_rankSimpleFilters.R
 9c3d90b2413d7ddbb3ca00fe45552172 *tests/testthat/test_featsel_selectFeatures.R
 87f540a4da8bfdf33ecdcf90f5f0f8b9 *tests/testthat/test_featsel_selectFeaturesSequential.R
-d2d01b7b99d99a6450043b4f21ee9f04 *tests/testthat/test_learners_all_classif.R
+050f6ddf9bf65fedda29bb9a425c84a5 *tests/testthat/test_learners_all_classif.R
 1cf447d7d527136fc8d0f5ae1380e6dd *tests/testthat/test_learners_all_clusters.R
 ffb840e0327b263a19bc266417f4b21f *tests/testthat/test_learners_all_general.R
 7708cd762726fe811bbe36ed784b3dff *tests/testthat/test_learners_all_multilabel.R
-dcd6ebf5d7e356d91dfa3b7fd3e1ab44 *tests/testthat/test_learners_all_regr.R
-7f42377363b414e8a1de12adff12e158 *tests/testthat/test_learners_all_surv.R
-fbe9713080bba66b11249296361ece39 *tests/testthat/test_learners_classiflabelswitch.R
+9676f2c051d8a5e3858f615f69522482 *tests/testthat/test_learners_all_regr.R
+8496aa87ecc1fdceb25ec64c6aa7be9c *tests/testthat/test_learners_all_surv.R
+31b41f1a36d182c057ed87f51d8dd1d7 *tests/testthat/test_learners_classiflabelswitch.R
 40a98d246dd6337de89a995741678d0a *tests/testthat/test_lint.R
 07fb78e512348cf03af3a0d3dda232c2 *tests/testthat/test_multilabel_cforest.R
-61fbfce11f8d5d5ae8f932e16ea26bf9 *tests/testthat/test_multilabel_randomForestSRC.R
 d64594795f57ee4d76913aea8b80154c *tests/testthat/test_parallel_mpi.R
 8d7b59505f1e880082cf8902b49b69d6 *tests/testthat/test_regr_FDboost.R
 fd8e8be8ff28f5dcbfab578c58ef8c2a *tests/testthat/test_regr_GPfit.R
@@ -962,7 +948,7 @@ fd8e8be8ff28f5dcbfab578c58ef8c2a *tests/testthat/test_regr_GPfit.R
 2f28f5688d7d7ed866f3b47d8c27e386 *tests/testthat/test_regr_LiblineaRL2L1SVR.R
 f117fb80018279d25e32a9bec857033d *tests/testthat/test_regr_LiblineaRL2L2SVR.R
 1755d9e0fde7ef677fe9a3178dffe4f0 *tests/testthat/test_regr_RRF.R
-3532f1d65567ed1ee08c92eea1e17d34 *tests/testthat/test_regr_bartMachine.R
+7d16badfad9c4f886597507bee32ee47 *tests/testthat/test_regr_bartMachine.R
 cc488faff8daa88299683a4c1d19e7e1 *tests/testthat/test_regr_bcart.R
 a5dea3dcf860836a5a92df368b95c28c *tests/testthat/test_regr_bgp.R
 c7089ac594738d935773fa30e2307b89 *tests/testthat/test_regr_bgpllm.R
@@ -979,7 +965,6 @@ df5d3d61c210bc8a5e5752378c89554e *tests/testthat/test_regr_ctree.R
 fc6e04584b490f81aa273ae7aaa5df3e *tests/testthat/test_regr_cvglmnet.R
 1e922d6a7ac0f2d1c4f8a32b74958227 *tests/testthat/test_regr_earth.R
 88b011b5a1e87ab01c63ffab19cbf5e9 *tests/testthat/test_regr_evtree.R
-2d9ed335a1e6cc50bf7f42fe5ff39182 *tests/testthat/test_regr_extraTrees.R
 b68b69032e6d05b70593b9e0b38dde56 *tests/testthat/test_regr_featureless.R
 407a37b416606f75e6df279be8c55770 *tests/testthat/test_regr_fgam.R
 c02e62a68d3ccddbb199ad71134e2c0c *tests/testthat/test_regr_fnn.R
@@ -991,7 +976,7 @@ a22ffb11f7ab27ef19f8d71c498890ef *tests/testthat/test_regr_glm.R
 9ddcea185f33c16aa8545d0c917efe7b *tests/testthat/test_regr_glmboost.R
 57892689edae4277efcb8c4650eec9ee *tests/testthat/test_regr_glmnet.R
 69b98141a92acf33a91f96d513dca9ca *tests/testthat/test_regr_h2odeeplearning.R
-852f1bb0027ac95ecd113ad66cd20815 *tests/testthat/test_regr_h2ogbm.R
+6c765760014ffe76ae6b5f088c6bc828 *tests/testthat/test_regr_h2ogbm.R
 43eec694a8f603bb7809697944988c98 *tests/testthat/test_regr_h2oglm.R
 3e13620066964b41899c6c9d02e24496 *tests/testthat/test_regr_h2orandomForest.R
 06308d4c534ee7d2947b8fc66bd874cc *tests/testthat/test_regr_kknn.R
@@ -1001,13 +986,10 @@ d9595283a73e7e931f2603408375f71f *tests/testthat/test_regr_laGP.R
 6811928176d13c985d4b656ee47c79ce *tests/testthat/test_regr_lm.R
 c4bbdbc967a93132717b80a432562389 *tests/testthat/test_regr_mob.R
 55e364efd2e3a6bcfac2005dfbc94e94 *tests/testthat/test_regr_nnet.R
-42f96a1c1f00ba7a7adbabd5879a9ace *tests/testthat/test_regr_nodeHarvest.R
 35ea9e17e3d7cfbb3655267fc8dae601 *tests/testthat/test_regr_penalized.R
 f627b017fdf85deba085bf0b4d173ce5 *tests/testthat/test_regr_plsr.R
 a9ddf2420e634e3ad86715a4e66a5cbd *tests/testthat/test_regr_randomForest.R
-83f225e6a01baaf5a0086da1a8233ba8 *tests/testthat/test_regr_randomForestSRC.R
 78d49dba7c1ba7f6565de7ef27af1797 *tests/testthat/test_regr_ranger.R
-3a6e1bb5fd5c42205c5345704d5f50da *tests/testthat/test_regr_rknn.R
 b32eb712541d8b2328aa35905d26468d *tests/testthat/test_regr_rpart.R
 be380d24941113b521f795c1e4796f98 *tests/testthat/test_regr_rsm.R
 56e586c256179289a32e35a924084f7f *tests/testthat/test_regr_svm.R
@@ -1021,19 +1003,40 @@ f466d970353f4d6319270a8a34cea41b *tests/testthat/test_surv_gbm.R
 0222d44ab0dd51573181513acd77a389 *tests/testthat/test_surv_glmboost.R
 fc3ddab934a3a3a02e137b5d14742608 *tests/testthat/test_surv_glmnet.R
 f6926639d3b4680c5d0b6dbff8d4b781 *tests/testthat/test_surv_measures.R
-dc54f8ab2caa33f64f52322378eff0d5 *tests/testthat/test_surv_randomForestSRC.R
 84ea7b5789aacd3a0e15bae0e48fb230 *tests/testthat/test_surv_ranger.R
 b46bfe45d749da6460cd8cfd417881ca *tests/testthat/test_surv_rpart.R
-f68542fa5b9fb1a91f028800adfd1318 *tests/testthat/test_tuneParams.R
+fb3acbc9609451f140d8f9fe557df25b *tests/testthat/test_tuneParams.R
 b5018ae3673af1403dad9515c2ddf8f8 *tests/testthat/test_tune_ModelMultiplexer.R
-1ee91bd147c5b7ccf6c1cbee1521c2cd *tests/testthat/test_tune_getTuneResultOptPath.R
+71380cdea681a0fa165d205d7d6babe1 *tests/testthat/test_tune_getTuneResultOptPath.R
 2afb82c17bde18ae30e48d24e05ef9ff *tests/testthat/test_tune_tuneCMAES.R
 448d09dc7b48094f19e54ffb71e21b6a *tests/testthat/test_tune_tuneDesign.R
 7dcbed883c0eedd301bc6156650bc40e *tests/testthat/test_tune_tuneGenSA.R
 420f6bb572825302bae365e3a28bd1c1 *tests/testthat/test_tune_tuneGrid.R
 4f98d7bbc3d540a12df1db6972661d73 *tests/testthat/test_tune_tuneIrace.R
 ac7e0805f73128d93f2b750d92cd99e4 *tests/testthat/test_tune_tuneMBO.R
-4968ea8596d86a2cbbd8143a29cd2a2a *tests/testthat/test_tune_tuneParamsMultiCrit.R
+07a75e06ce0a924c005aa66b1ec3b0f4 *tests/testthat/test_tune_tuneParamsMultiCrit.R
 7ae504c205218fe50d5637034178564d *tests/testthat/test_tune_tuneRandom.R
 153008cb893be322f1c3196480ab360c *tests/testthat/test_tune_tuneThreshold.R
+dc1f3d5330c7530fa39eeb20f9b83265 *vignettes/img/benchmark_processing.png
+d102c6b88fce0d6fa14cebf36f15b273 *vignettes/img/learn_task.png
+e135efbdbb3cb3791ed873b26c3563b0 *vignettes/img/learner.png
+158c0bbf2b3bc51a92e6075557432010 *vignettes/img/mlrLogo.psd
+9f06f3a57c25728e7e8b58cb35540d1b *vignettes/img/mlrLogo_blue_141x64.png
+6404c8c8689cb24c5911563d0b5fbc1b *vignettes/img/mlrLogo_blue_566x256.png
+3875acd871a2e31ce070a2f79461ad2e *vignettes/img/mlrLogo_favicon.png
+a4a82128ffc9a8cebd67182ce33a8b57 *vignettes/img/mlrLogo_white_141x64.png
+59398b22f140d4e3c3814f8f22968504 *vignettes/img/mlrLogo_white_566x256.png
+03d0810f87f5c6924749261c945a7fa6 *vignettes/img/mlrLogo_white_88x40.png
+c271a7aa9ae4e594bb93f70c5c44ee94 *vignettes/img/mlr_logo-120x64.png
+47c869748fd7751806f53a44e1b0a102 *vignettes/img/nested_resampling.png
+d78da1a038bd52c09e1a1bd49ea4d37f *vignettes/img/resampling.png
+019fd691ee5fd8ae2fdd24cc16682de3 *vignettes/img/resampling_desc_and_instance.png
+3aa7d6bd1d06f4a40452a6247285c4f4 *vignettes/img/roc_example.png
+5ba76dc074825ec318d1b143b5f9cdc0 *vignettes/img/spatial_cross_validation.png
+00eedaf1692260f3b1a004591a98cda7 *vignettes/img/theoretic_threshold.png
+ad3129c4ffce199450c2aef1dcc5a53d *vignettes/img/theoretic_weight_positive.png
+3a00e54da6e7face1094de65ecdcd8d2 *vignettes/img/train-basic_processing.png
+f6c1800edb56c9479df80eab6ee98c57 *vignettes/img/tune-varsel_processing.png
+0ed71ecb4dbb6e6dae9a9acbefbec817 *vignettes/img/variabel_selection_scheme.png
+98e9c32b36c6c4753a06b51b891f7cbe *vignettes/img/weight_positive.png
 33f5ed127b7ebf00a9218901d1267498 *vignettes/mlr.Rmd
diff --git a/NAMESPACE b/NAMESPACE
index b169022..cc9f6fd 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -49,7 +49,6 @@ S3method(getFeatureImportanceLearner,classif.h2o.gbm)
 S3method(getFeatureImportanceLearner,classif.h2o.glm)
 S3method(getFeatureImportanceLearner,classif.h2o.randomForest)
 S3method(getFeatureImportanceLearner,classif.randomForest)
-S3method(getFeatureImportanceLearner,classif.randomForestSRC)
 S3method(getFeatureImportanceLearner,classif.ranger)
 S3method(getFeatureImportanceLearner,classif.rpart)
 S3method(getFeatureImportanceLearner,classif.xgboost)
@@ -62,7 +61,6 @@ S3method(getFeatureImportanceLearner,regr.rpart)
 S3method(getFeatureImportanceLearner,regr.xgboost)
 S3method(getFeatureImportanceLearner,surv.cforest)
 S3method(getFeatureImportanceLearner,surv.gbm)
-S3method(getFeatureImportanceLearner,surv.randomForestSRC)
 S3method(getFeatureImportanceLearner,surv.ranger)
 S3method(getFeatureImportanceLearner,surv.rpart)
 S3method(getFilteredFeatures,FilterModel)
@@ -94,12 +92,9 @@ S3method(getLearnerProperties,extractFDAFeatsWrapper)
 S3method(getOOBPredsLearner,BaseWrapper)
 S3method(getOOBPredsLearner,classif.rFerns)
 S3method(getOOBPredsLearner,classif.randomForest)
-S3method(getOOBPredsLearner,classif.randomForestSRC)
 S3method(getOOBPredsLearner,classif.ranger)
 S3method(getOOBPredsLearner,regr.randomForest)
-S3method(getOOBPredsLearner,regr.randomForestSRC)
 S3method(getOOBPredsLearner,regr.ranger)
-S3method(getOOBPredsLearner,surv.randomForestSRC)
 S3method(getParamSet,BaseWrapper)
 S3method(getParamSet,Learner)
 S3method(getParamSet,character)
@@ -176,7 +171,6 @@ S3method(makeRLearner,classif.dbnDNN)
 S3method(makeRLearner,classif.dcSVM)
 S3method(makeRLearner,classif.earth)
 S3method(makeRLearner,classif.evtree)
-S3method(makeRLearner,classif.extraTrees)
 S3method(makeRLearner,classif.fdausc.glm)
 S3method(makeRLearner,classif.fdausc.kernel)
 S3method(makeRLearner,classif.fdausc.knn)
@@ -188,7 +182,6 @@ S3method(makeRLearner,classif.gamboost)
 S3method(makeRLearner,classif.gaterSVM)
 S3method(makeRLearner,classif.gausspr)
 S3method(makeRLearner,classif.gbm)
-S3method(makeRLearner,classif.geoDA)
 S3method(makeRLearner,classif.glmboost)
 S3method(makeRLearner,classif.glmnet)
 S3method(makeRLearner,classif.h2o.deeplearning)
@@ -199,7 +192,6 @@ S3method(makeRLearner,classif.kknn)
 S3method(makeRLearner,classif.knn)
 S3method(makeRLearner,classif.ksvm)
 S3method(makeRLearner,classif.lda)
-S3method(makeRLearner,classif.linDA)
 S3method(makeRLearner,classif.logreg)
 S3method(makeRLearner,classif.lssvm)
 S3method(makeRLearner,classif.lvq1)
@@ -210,23 +202,18 @@ S3method(makeRLearner,classif.naiveBayes)
 S3method(makeRLearner,classif.neuralnet)
 S3method(makeRLearner,classif.nnTrain)
 S3method(makeRLearner,classif.nnet)
-S3method(makeRLearner,classif.nodeHarvest)
 S3method(makeRLearner,classif.pamr)
 S3method(makeRLearner,classif.penalized)
 S3method(makeRLearner,classif.plr)
 S3method(makeRLearner,classif.plsdaCaret)
 S3method(makeRLearner,classif.probit)
 S3method(makeRLearner,classif.qda)
-S3method(makeRLearner,classif.quaDA)
 S3method(makeRLearner,classif.rFerns)
 S3method(makeRLearner,classif.randomForest)
-S3method(makeRLearner,classif.randomForestSRC)
 S3method(makeRLearner,classif.ranger)
 S3method(makeRLearner,classif.rda)
-S3method(makeRLearner,classif.rknn)
 S3method(makeRLearner,classif.rotationForest)
 S3method(makeRLearner,classif.rpart)
-S3method(makeRLearner,classif.rrlda)
 S3method(makeRLearner,classif.saeDNN)
 S3method(makeRLearner,classif.sda)
 S3method(makeRLearner,classif.sparseLDA)
@@ -244,7 +231,6 @@ S3method(makeRLearner,cluster.kkmeans)
 S3method(makeRLearner,cluster.kmeans)
 S3method(makeRLearner,multilabel.cforest)
 S3method(makeRLearner,multilabel.rFerns)
-S3method(makeRLearner,multilabel.randomForestSRC)
 S3method(makeRLearner,regr.FDboost)
 S3method(makeRLearner,regr.GPfit)
 S3method(makeRLearner,regr.IBk)
@@ -268,7 +254,6 @@ S3method(makeRLearner,regr.cubist)
 S3method(makeRLearner,regr.cvglmnet)
 S3method(makeRLearner,regr.earth)
 S3method(makeRLearner,regr.evtree)
-S3method(makeRLearner,regr.extraTrees)
 S3method(makeRLearner,regr.featureless)
 S3method(makeRLearner,regr.fgam)
 S3method(makeRLearner,regr.fnn)
@@ -291,14 +276,11 @@ S3method(makeRLearner,regr.lm)
 S3method(makeRLearner,regr.mars)
 S3method(makeRLearner,regr.mob)
 S3method(makeRLearner,regr.nnet)
-S3method(makeRLearner,regr.nodeHarvest)
 S3method(makeRLearner,regr.pcr)
 S3method(makeRLearner,regr.penalized)
 S3method(makeRLearner,regr.plsr)
 S3method(makeRLearner,regr.randomForest)
-S3method(makeRLearner,regr.randomForestSRC)
 S3method(makeRLearner,regr.ranger)
-S3method(makeRLearner,regr.rknn)
 S3method(makeRLearner,regr.rpart)
 S3method(makeRLearner,regr.rsm)
 S3method(makeRLearner,regr.rvm)
@@ -311,7 +293,6 @@ S3method(makeRLearner,surv.gamboost)
 S3method(makeRLearner,surv.gbm)
 S3method(makeRLearner,surv.glmboost)
 S3method(makeRLearner,surv.glmnet)
-S3method(makeRLearner,surv.randomForestSRC)
 S3method(makeRLearner,surv.ranger)
 S3method(makeRLearner,surv.rpart)
 S3method(makeWrappedModel,BaseEnsemble)
@@ -371,7 +352,6 @@ S3method(predictLearner,classif.dbnDNN)
 S3method(predictLearner,classif.dcSVM)
 S3method(predictLearner,classif.earth)
 S3method(predictLearner,classif.evtree)
-S3method(predictLearner,classif.extraTrees)
 S3method(predictLearner,classif.fdausc.glm)
 S3method(predictLearner,classif.fdausc.kernel)
 S3method(predictLearner,classif.fdausc.knn)
@@ -383,7 +363,6 @@ S3method(predictLearner,classif.gamboost)
 S3method(predictLearner,classif.gaterSVM)
 S3method(predictLearner,classif.gausspr)
 S3method(predictLearner,classif.gbm)
-S3method(predictLearner,classif.geoDA)
 S3method(predictLearner,classif.glmboost)
 S3method(predictLearner,classif.glmnet)
 S3method(predictLearner,classif.h2o.deeplearning)
@@ -394,7 +373,6 @@ S3method(predictLearner,classif.kknn)
 S3method(predictLearner,classif.knn)
 S3method(predictLearner,classif.ksvm)
 S3method(predictLearner,classif.lda)
-S3method(predictLearner,classif.linDA)
 S3method(predictLearner,classif.logreg)
 S3method(predictLearner,classif.lssvm)
 S3method(predictLearner,classif.lvq1)
@@ -405,23 +383,18 @@ S3method(predictLearner,classif.naiveBayes)
 S3method(predictLearner,classif.neuralnet)
 S3method(predictLearner,classif.nnTrain)
 S3method(predictLearner,classif.nnet)
-S3method(predictLearner,classif.nodeHarvest)
 S3method(predictLearner,classif.pamr)
 S3method(predictLearner,classif.penalized)
 S3method(predictLearner,classif.plr)
 S3method(predictLearner,classif.plsdaCaret)
 S3method(predictLearner,classif.probit)
 S3method(predictLearner,classif.qda)
-S3method(predictLearner,classif.quaDA)
 S3method(predictLearner,classif.rFerns)
 S3method(predictLearner,classif.randomForest)
-S3method(predictLearner,classif.randomForestSRC)
 S3method(predictLearner,classif.ranger)
 S3method(predictLearner,classif.rda)
-S3method(predictLearner,classif.rknn)
 S3method(predictLearner,classif.rotationForest)
 S3method(predictLearner,classif.rpart)
-S3method(predictLearner,classif.rrlda)
 S3method(predictLearner,classif.saeDNN)
 S3method(predictLearner,classif.sda)
 S3method(predictLearner,classif.sparseLDA)
@@ -439,7 +412,6 @@ S3method(predictLearner,cluster.kkmeans)
 S3method(predictLearner,cluster.kmeans)
 S3method(predictLearner,multilabel.cforest)
 S3method(predictLearner,multilabel.rFerns)
-S3method(predictLearner,multilabel.randomForestSRC)
 S3method(predictLearner,regr.FDboost)
 S3method(predictLearner,regr.GPfit)
 S3method(predictLearner,regr.IBk)
@@ -463,7 +435,6 @@ S3method(predictLearner,regr.cubist)
 S3method(predictLearner,regr.cvglmnet)
 S3method(predictLearner,regr.earth)
 S3method(predictLearner,regr.evtree)
-S3method(predictLearner,regr.extraTrees)
 S3method(predictLearner,regr.featureless)
 S3method(predictLearner,regr.fgam)
 S3method(predictLearner,regr.fnn)
@@ -486,14 +457,11 @@ S3method(predictLearner,regr.lm)
 S3method(predictLearner,regr.mars)
 S3method(predictLearner,regr.mob)
 S3method(predictLearner,regr.nnet)
-S3method(predictLearner,regr.nodeHarvest)
 S3method(predictLearner,regr.pcr)
 S3method(predictLearner,regr.penalized)
 S3method(predictLearner,regr.plsr)
 S3method(predictLearner,regr.randomForest)
-S3method(predictLearner,regr.randomForestSRC)
 S3method(predictLearner,regr.ranger)
-S3method(predictLearner,regr.rknn)
 S3method(predictLearner,regr.rpart)
 S3method(predictLearner,regr.rsm)
 S3method(predictLearner,regr.rvm)
@@ -506,7 +474,6 @@ S3method(predictLearner,surv.gamboost)
 S3method(predictLearner,surv.gbm)
 S3method(predictLearner,surv.glmboost)
 S3method(predictLearner,surv.glmnet)
-S3method(predictLearner,surv.randomForestSRC)
 S3method(predictLearner,surv.ranger)
 S3method(predictLearner,surv.rpart)
 S3method(print,Aggregation)
@@ -631,7 +598,6 @@ S3method(trainLearner,classif.dbnDNN)
 S3method(trainLearner,classif.dcSVM)
 S3method(trainLearner,classif.earth)
 S3method(trainLearner,classif.evtree)
-S3method(trainLearner,classif.extraTrees)
 S3method(trainLearner,classif.fdausc.glm)
 S3method(trainLearner,classif.fdausc.kernel)
 S3method(trainLearner,classif.fdausc.knn)
@@ -643,7 +609,6 @@ S3method(trainLearner,classif.gamboost)
 S3method(trainLearner,classif.gaterSVM)
 S3method(trainLearner,classif.gausspr)
 S3method(trainLearner,classif.gbm)
-S3method(trainLearner,classif.geoDA)
 S3method(trainLearner,classif.glmboost)
 S3method(trainLearner,classif.glmnet)
 S3method(trainLearner,classif.h2o.deeplearning)
@@ -654,7 +619,6 @@ S3method(trainLearner,classif.kknn)
 S3method(trainLearner,classif.knn)
 S3method(trainLearner,classif.ksvm)
 S3method(trainLearner,classif.lda)
-S3method(trainLearner,classif.linDA)
 S3method(trainLearner,classif.logreg)
 S3method(trainLearner,classif.lssvm)
 S3method(trainLearner,classif.lvq1)
@@ -665,23 +629,18 @@ S3method(trainLearner,classif.naiveBayes)
 S3method(trainLearner,classif.neuralnet)
 S3method(trainLearner,classif.nnTrain)
 S3method(trainLearner,classif.nnet)
-S3method(trainLearner,classif.nodeHarvest)
 S3method(trainLearner,classif.pamr)
 S3method(trainLearner,classif.penalized)
 S3method(trainLearner,classif.plr)
 S3method(trainLearner,classif.plsdaCaret)
 S3method(trainLearner,classif.probit)
 S3method(trainLearner,classif.qda)
-S3method(trainLearner,classif.quaDA)
 S3method(trainLearner,classif.rFerns)
 S3method(trainLearner,classif.randomForest)
-S3method(trainLearner,classif.randomForestSRC)
 S3method(trainLearner,classif.ranger)
 S3method(trainLearner,classif.rda)
-S3method(trainLearner,classif.rknn)
 S3method(trainLearner,classif.rotationForest)
 S3method(trainLearner,classif.rpart)
-S3method(trainLearner,classif.rrlda)
 S3method(trainLearner,classif.saeDNN)
 S3method(trainLearner,classif.sda)
 S3method(trainLearner,classif.sparseLDA)
@@ -699,7 +658,6 @@ S3method(trainLearner,cluster.kkmeans)
 S3method(trainLearner,cluster.kmeans)
 S3method(trainLearner,multilabel.cforest)
 S3method(trainLearner,multilabel.rFerns)
-S3method(trainLearner,multilabel.randomForestSRC)
 S3method(trainLearner,regr.FDboost)
 S3method(trainLearner,regr.GPfit)
 S3method(trainLearner,regr.IBk)
@@ -723,7 +681,6 @@ S3method(trainLearner,regr.cubist)
 S3method(trainLearner,regr.cvglmnet)
 S3method(trainLearner,regr.earth)
 S3method(trainLearner,regr.evtree)
-S3method(trainLearner,regr.extraTrees)
 S3method(trainLearner,regr.featureless)
 S3method(trainLearner,regr.fgam)
 S3method(trainLearner,regr.fnn)
@@ -746,14 +703,11 @@ S3method(trainLearner,regr.lm)
 S3method(trainLearner,regr.mars)
 S3method(trainLearner,regr.mob)
 S3method(trainLearner,regr.nnet)
-S3method(trainLearner,regr.nodeHarvest)
 S3method(trainLearner,regr.pcr)
 S3method(trainLearner,regr.penalized)
 S3method(trainLearner,regr.plsr)
 S3method(trainLearner,regr.randomForest)
-S3method(trainLearner,regr.randomForestSRC)
 S3method(trainLearner,regr.ranger)
-S3method(trainLearner,regr.rknn)
 S3method(trainLearner,regr.rpart)
 S3method(trainLearner,regr.rsm)
 S3method(trainLearner,regr.rvm)
@@ -766,7 +720,6 @@ S3method(trainLearner,surv.gamboost)
 S3method(trainLearner,surv.gbm)
 S3method(trainLearner,surv.glmboost)
 S3method(trainLearner,surv.glmnet)
-S3method(trainLearner,surv.randomForestSRC)
 S3method(trainLearner,surv.ranger)
 S3method(trainLearner,surv.rpart)
 export(G1)
diff --git a/NEWS.md b/NEWS.md
index d92fda6..12c26a9 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,32 @@
+<!-- NEWS.md is maintained by https://cynkra.github.io/fledge, do not edit -->
+
+# mlr 2.19.1
+
+## Bug fixes
+
+- Adjust behavior of `"positive"` arg for `classif.logreg` (#2846)
+
+- Consistent naming for dummy feature encoding of variables with different levels count (#2847)
+
+- Remove {nodeHarvest} learners (#2841)
+
+- Remove {rknn} learner (#2842)
+
+- Remove all {DiscriMiner} learners (#2840)
+
+- Remove {extraTrees} learner (#2839)
+
+- Remove depcrecated {rrlda} learner
+
+- Resolve some {ggplot} deprecation warnings
+
+- Fixed `information.gain` filter calculation.
+  Before, `chi.squared` was calculated even though `information.gain` was requested due to a glitch in the filter naming (#2816, @jokokojote)
+
+- Make `helpLearnerParam()`'s HTML parsing more robust (#2843)
+
+- Add HTML5 support for help pages
+
 # mlr 2.19.0
 
 - Add filter `FSelectoRcpp::relief()`. This C++ based implementation of the RelieF filter algorithm is way faster than the Java based one from the {FSelector} package (#2804)
diff --git a/R/Aggregation.R b/R/Aggregation.R
old mode 100644
new mode 100755
diff --git a/R/BaggingWrapper.R b/R/BaggingWrapper.R
old mode 100644
new mode 100755
diff --git a/R/BaseEnsemble.R b/R/BaseEnsemble.R
old mode 100644
new mode 100755
diff --git a/R/BaseEnsemble_operators.R b/R/BaseEnsemble_operators.R
old mode 100644
new mode 100755
diff --git a/R/BaseWrapper.R b/R/BaseWrapper.R
old mode 100644
new mode 100755
index aa263b3..a3b8cac
--- a/R/BaseWrapper.R
+++ b/R/BaseWrapper.R
@@ -74,8 +74,7 @@ predictLearner.BaseWrapper = function(.learner, .model, .newdata, ...) {
   args = removeFromDots(names(.learner$par.vals), ...)
   do.call(predictLearner, c(
     list(.learner = .learner$next.learner, .model = .model$learner.model$next.model, .newdata = .newdata),
-    args)
-  )
+    args))
 }
 
 #' @export
diff --git a/R/BaseWrapper_operators.R b/R/BaseWrapper_operators.R
old mode 100644
new mode 100755
diff --git a/R/BenchmarkResultOrderLevels.R b/R/BenchmarkResultOrderLevels.R
old mode 100644
new mode 100755
diff --git a/R/BenchmarkResult_operators.R b/R/BenchmarkResult_operators.R
old mode 100644
new mode 100755
diff --git a/R/ChainModel.R b/R/ChainModel.R
old mode 100644
new mode 100755
diff --git a/R/ChainModel_operators.R b/R/ChainModel_operators.R
old mode 100644
new mode 100755
diff --git a/R/ClassifTask.R b/R/ClassifTask.R
index d3ec5b9..08ee287 100644
--- a/R/ClassifTask.R
+++ b/R/ClassifTask.R
@@ -57,7 +57,7 @@ makeClassifTaskDesc = function(id, data, target, weights, blocking, positive, co
   td$class.levels = levs
   td$positive = positive
   td$negative = NA_character_
-  td$class.distribution = table(data[target])
+  td$class.distribution = table(data[target], dnn = "")
   if (length(td$class.levels) == 1L) {
     td$negative = stri_paste("not_", positive)
   } else if (length(td$class.levels) == 2L) {
diff --git a/R/ClassificationViaRegressionWrapper.R b/R/ClassificationViaRegressionWrapper.R
old mode 100644
new mode 100755
diff --git a/R/ClusterTask.R b/R/ClusterTask.R
old mode 100644
new mode 100755
diff --git a/R/ConstantClassWrapper.R b/R/ConstantClassWrapper.R
old mode 100644
new mode 100755
diff --git a/R/CostSensClassifWrapper.R b/R/CostSensClassifWrapper.R
old mode 100644
new mode 100755
diff --git a/R/CostSensRegrWrapper.R b/R/CostSensRegrWrapper.R
old mode 100644
new mode 100755
diff --git a/R/CostSensTask.R b/R/CostSensTask.R
old mode 100644
new mode 100755
diff --git a/R/CostSensWeightedPairsWrapper.R b/R/CostSensWeightedPairsWrapper.R
old mode 100644
new mode 100755
index daa3221..2e5348d
--- a/R/CostSensWeightedPairsWrapper.R
+++ b/R/CostSensWeightedPairsWrapper.R
@@ -23,7 +23,7 @@
 #' One-versus-one Binary Classification.
 #' In: Proceedings of the Sixth Asian Conference on Machine Learning.
 #' JMLR Workshop and Conference Proceedings, vol 39, pp. 371-386. JMLR W&CP (2014).
-#' <https://www.jmlr.org/proceedings/papers/v39/lin14.pdf>
+#' <https://proceedings.mlr.press/v39/lin14.pdf>
 #' @family costsens
 #' @aliases CostSensWeightedPairsWrapper CostSensWeightedPairsModel
 makeCostSensWeightedPairsWrapper = function(learner) {
diff --git a/R/DownsampleWrapper.R b/R/DownsampleWrapper.R
old mode 100644
new mode 100755
diff --git a/R/DummyFeaturesWrapper.R b/R/DummyFeaturesWrapper.R
old mode 100644
new mode 100755
diff --git a/R/FailureModel.R b/R/FailureModel.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelControl.R b/R/FeatSelControl.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelControlExhaustive.R b/R/FeatSelControlExhaustive.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelControlGA.R b/R/FeatSelControlGA.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelControlRandom.R b/R/FeatSelControlRandom.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelControlSequential.R b/R/FeatSelControlSequential.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelResult.R b/R/FeatSelResult.R
old mode 100644
new mode 100755
diff --git a/R/FeatSelWrapper.R b/R/FeatSelWrapper.R
old mode 100644
new mode 100755
diff --git a/R/Filter.R b/R/Filter.R
index ca1e7b5..2848304 100644
--- a/R/Filter.R
+++ b/R/Filter.R
@@ -163,7 +163,8 @@ makeFilter(
     res = mRMRe::mRMR.classic(data = data, target_indices = target.ind, feature_count = nselect, ...)
     scores = as.numeric(mRMRe::scores(res)[[1L]])
     setNames(scores, res@feature_names[as.integer(mRMRe::solutions(res)[[1L]])])
-  })
+  }
+)
 
 # carscore ----------------
 
@@ -185,125 +186,8 @@ makeFilter(
     data = getTaskData(task, target.extra = TRUE)
     y = care::carscore(Xtrain = data$data, Ytrain = data$target, verbose = FALSE, ...)^2
     setNames(as.double(y), names(y))
-  })
-
-# randomForestSRC_importance ----------------
-
-#' Filter \dQuote{randomForestSRC_importance} computes the importance of random forests
-#' fitted in package \pkg{randomForestSRC}. The concrete method is selected via
-#' the `method` parameter. Possible values are `permute` (default), `random`,
-#' `anti`, `permute.ensemble`, `random.ensemble`, `anti.ensemble`.
-#' See the VIMP section in the docs for [randomForestSRC::rfsrc] for
-#' details.
-#'
-#' @rdname makeFilter
-#' @name makeFilter
-NULL
-
-# for some reason we cannot call 'randomForestSRC_importance' directly as we then face
-# nested recursion problems when using other methods than "md".
-
-rf.importance = makeFilter(
-  name = "randomForestSRC_importance",
-  desc = "Importance of random forests fitted in package 'randomForestSRC'. Importance is calculated using argument 'permute'.",
-  pkg = "randomForestSRC",
-  supported.tasks = c("classif", "regr", "surv"),
-  supported.features = c("numerics", "factors", "ordered"),
-  fun = function(task, nselect, method = "permute", ...) {
-    assertChoice(method, choices = c("permute", "random", "anti", "permute.ensemble", "random.ensemble", "anti.ensemble"))
-    im = randomForestSRC::rfsrc(getTaskFormula(task), data = getTaskData(task), proximity = FALSE,
-      forest = FALSE, importance = method, ...)$importance
-    if (inherits(task, "ClassifTask")) {
-      ns = rownames(im)
-      y = im[, "all"]
-    } else {
-      ns = names(im)
-      y = unname(im)
-    }
-    setNames(y, ns)
-  })
-.FilterRegister[["rf.importance"]] = rf.importance
-.FilterRegister[["rf.importance"]]$desc = "(DEPRECATED)"
-.FilterRegister[["rf.importance"]]$fun = function(...) {
-  .Deprecated(old = "Filter 'rf.importance'", new = "Filter 'randomForestSRC_importance' (package randomForestSRC)")
-  .FilterRegister[["randomForestSRC_importance"]]$fun(...)
-}
-
-randomForestSRC.rfsrc = makeFilter( # nolint
-  name = "randomForestSRC_importance",
-  desc = "Importance of random forests fitted in package 'randomForestSRC'. Importance is calculated using argument 'permute'.",
-  pkg = "randomForestSRC",
-  supported.tasks = c("classif", "regr", "surv"),
-  supported.features = c("numerics", "factors", "ordered"),
-  fun = function(task, nselect, method = "permute", ...) {
-    assertChoice(method, choices = c("permute", "random", "anti", "permute.ensemble", "random.ensemble", "anti.ensemble"))
-    im = randomForestSRC::rfsrc(getTaskFormula(task), data = getTaskData(task), proximity = FALSE,
-      forest = FALSE, importance = method, ...)$importance
-    if (inherits(task, "ClassifTask")) {
-      ns = rownames(im)
-      y = im[, "all"]
-    } else {
-      ns = names(im)
-      y = unname(im)
-    }
-    setNames(y, ns)
-  })
-.FilterRegister[["randomForestSRC.rfsrc"]] = randomForestSRC.rfsrc
-.FilterRegister[["randomForestSRC.rfsrc"]]$desc = "(DEPRECATED)"
-.FilterRegister[["randomForestSRC.rfsrc"]]$fun = function(...) {
-  .Deprecated(old = "Filter 'randomForestSRC.rfsrc'", new = "Filter 'randomForestSRC_importance' (package randomForestSRC)")
-  .FilterRegister[["randomForestSRC_importance"]]$fun(...)
-}
-
-# randomForestSRC_var.select ----------------
-
-#' Filter \dQuote{randomForestSRC_var.select} uses the minimal depth variable
-#' selection proposed by Ishwaran et al. (2010) (`method = "md"`) or a
-#' variable hunting approach (`method = "vh"` or `method = "vh.vimp"`).
-#' The minimal depth measure is the default.
-#'
-#' @rdname makeFilter
-#' @name makeFilter
-NULL
-
-rf.min.depth = makeFilter(
-  name = "randomForestSRC_var.select",
-  desc = "Minimal depth of / variable hunting via method var.select on random forests fitted in package 'randomForestSRC'.",
-  pkg = "randomForestSRC",
-  supported.tasks = c("classif", "regr", "surv"),
-  supported.features = c("numerics", "factors", "ordered"),
-  fun = function(task, nselect, method = "md", ...) {
-    # redirected to randomForestSRC.var.select()
-  })
-.FilterRegister[["rf.min.depth"]] = rf.min.depth
-.FilterRegister[["rf.min.depth"]]$desc = "(DEPRECATED)"
-.FilterRegister[["rf.min.depth"]]$fun = function(...) {
-  .Deprecated(old = "Filter 'rf.min.depth'", new = "Filter 'randomForestSRC_var.select'")
-  .FilterRegister[["randomForestSRC_var.select"]]$fun(...)
-}
-
-randomForestSRC.var.select = makeFilter( # nolint
-  name = "randomForestSRC_var.select",
-  desc = "Minimal depth of / variable hunting via method var.select on random forests fitted in package 'randomForestSRC'.",
-  pkg = "randomForestSRC",
-  supported.tasks = c("classif", "regr", "surv"),
-  supported.features = c("numerics", "factors", "ordered"),
-  fun = function(task, nselect, method = "md", conservative = "medium", ...) {
-    # method "vh.imp" is not supported as it does return values to rank features on
-    assert_choice(method, c("md", "vh"))
-    im = randomForestSRC::var.select(getTaskFormula(task), getTaskData(task),
-      method = method, verbose = FALSE,
-      ...)
-
-    im$varselect[setdiff(rownames(im$varselect), im$topvars), "depth"] = NA
-    setNames(im$varselect[, "depth"], rownames(im$varselect))
-  })
-.FilterRegister[["randomForestSRC.var.select"]] = randomForestSRC.var.select
-.FilterRegister[["randomForestSRC.var.select"]]$desc = "(DEPRECATED)"
-.FilterRegister[["randomForestSRC.var.select"]]$fun = function(...) {
-  .Deprecated(old = "Filter 'randomForestSRC.var.select'", new = "Filter 'randomForestSRC_var.select' (package randomForestSRC)")
-  .FilterRegister[["randomForestSRC_var.select"]]$fun(...)
-}
+  }
+)
 
 # party_cforest.importance ----------------
 
@@ -342,7 +226,8 @@ makeFilter(
       cforest.args))
     im = do.call(party::varimp, c(list(obj = fit), varimp.args))
     im
-  })
+  }
+)
 
 cforest.importance = makeFilter(
   name = "party_cforest.importance",
@@ -370,7 +255,8 @@ cforest.importance = makeFilter(
       cforest.args))
     im = do.call(party::varimp, c(list(obj = fit), varimp.args))
     im
-  })
+  }
+)
 
 .FilterRegister[["cforest.importance"]] = cforest.importance
 .FilterRegister[["cforest.importance"]]$desc = "(DEPRECATED)"
@@ -407,7 +293,8 @@ makeFilter(
       keep.forest = FALSE, importance = (type != 2L))
     im = randomForest::importance(rf, type = type, ...)
     setNames(im, rownames(im))
-  })
+  }
+)
 
 randomForest.importance = makeFilter( # nolint
   name = "randomForest_importance",
@@ -423,7 +310,8 @@ randomForest.importance = makeFilter( # nolint
       keep.forest = FALSE, importance = (type != 2L))
     im = randomForest::importance(rf, type = type, ...)
     setNames(im, rownames(im))
-  })
+  }
+)
 
 .FilterRegister[["randomForest.importance"]] = randomForest.importance
 .FilterRegister[["randomForest.importance"]]$desc = "(DEPRECATED)"
@@ -450,7 +338,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     data = getTaskData(task, target.extra = TRUE)
     abs(cor(as.matrix(data$data), data$target, use = "pairwise.complete.obs", method = "pearson")[, 1L])
-  })
+  }
+)
 
 # rank.correlation ----------------
 
@@ -470,7 +359,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     data = getTaskData(task, target.extra = TRUE)
     abs(cor(as.matrix(data$data), data$target, use = "pairwise.complete.obs", method = "spearman")[, 1L])
-  })
+  }
+)
 
 # FSelector_information.gain ----------------
 
@@ -488,7 +378,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::information.gain(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 information.gain = makeFilter(
   name = "FSelector_information.gain",
@@ -499,7 +390,8 @@ information.gain = makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::information.gain(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["information.gain"]] = information.gain
 .FilterRegister[["information.gain"]]$desc = "(DEPRECATED)"
@@ -525,7 +417,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::gain.ratio(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 gain.ratio = makeFilter(
   name = "FSelector_gain.ratio",
@@ -536,7 +429,8 @@ gain.ratio = makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::gain.ratio(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["gain.ratio"]] = gain.ratio
 .FilterRegister[["gain.ratio"]]$desc = "(DEPRECATED)"
@@ -561,7 +455,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::symmetrical.uncertainty(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 symmetrical.uncertainty = makeFilter(
   name = "FSelector_symmetrical.uncertainty",
@@ -572,7 +467,8 @@ symmetrical.uncertainty = makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::symmetrical.uncertainty(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["symmetrical.uncertainty"]] = symmetrical.uncertainty
 .FilterRegister[["symmetrical.uncertainty"]]$desc = "(DEPRECATED)"
@@ -603,10 +499,11 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::chi.squared(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 chi.squared = makeFilter(
-  name = "FSelector_gain.ratio",
+  name = "FSelector_chi.squared",
   desc = "Chi-squared statistic of independence between feature and target",
   pkg = "FSelector",
   supported.tasks = c("classif", "regr"),
@@ -614,7 +511,8 @@ chi.squared = makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::chi.squared(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["chi.squared"]] = chi.squared
 .FilterRegister[["chi.squared"]]$desc = "(DEPRECATED)"
@@ -652,7 +550,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::relief(getTaskFormula(task), data = getTaskData(task), ...)
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 relief = makeFilter(
   name = "FSelector_relief",
@@ -663,7 +562,8 @@ relief = makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::relief(getTaskFormula(task), data = getTaskData(task), ...)
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["relief"]] = relief
 .FilterRegister[["relief"]]$desc = "(DEPRECATED)"
@@ -693,7 +593,8 @@ makeFilter(
   fun = function(task, nselect, ...) {
     y = FSelector::oneR(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 oneR = makeFilter( # nolint
   name = "FSelector_oneR",
@@ -704,7 +605,8 @@ oneR = makeFilter( # nolint
   fun = function(task, nselect, ...) {
     y = FSelector::oneR(getTaskFormula(task), data = getTaskData(task))
     setNames(y[["attr_importance"]], getTaskFeatureNames(task))
-  })
+  }
+)
 
 .FilterRegister[["oneR"]] = oneR
 .FilterRegister[["oneR"]]$desc = "(DEPRECATED)"
@@ -768,7 +670,8 @@ univariate = makeFilter(
       res = -1.0 * res
     }
     setNames(res, fns)
-  })
+  }
+)
 .FilterRegister[["univariate"]] = univariate
 .FilterRegister[["univariate"]]$desc = "(DEPRECATED)"
 .FilterRegister[["univariate"]]$fun = function(...) {
@@ -799,7 +702,8 @@ makeFilter(
       aov.t = aov(f, data = data)
       summary(aov.t)[[1L]][1L, "F value"]
     })
-  })
+  }
+)
 
 # kruskal.test ----------------
 
@@ -827,7 +731,8 @@ makeFilter(
       t = kruskal.test(f, data = data)
       unname(t$statistic)
     })
-  })
+  }
+)
 
 # variance ----------------
 
@@ -850,7 +755,8 @@ makeFilter(
     sapply(getTaskFeatureNames(task), function(feat.name) {
       var(data[[feat.name]], na.rm = na.rm)
     })
-  })
+  }
+)
 
 # permutation.importance ----------------
 
@@ -882,7 +788,8 @@ makeFilter(
     imp = as.numeric(imp$res)
     names(imp) = getTaskFeatureNames(task)
     return(imp)
-  })
+  }
+)
 
 # auc ----------------
 
@@ -908,7 +815,8 @@ makeFilter(
       measureAUC(x, y, task$task.desc$negative, task$task.desc$positive)
     }, y = data$target)
     abs(0.5 - score)
-  })
+  }
+)
 
 #' Filters from the package \pkg{praznik} use the mutual information criteria in a greedy forward fashion:
 #' \dQuote{praznik_CMIM}, \dQuote{praznik_DISR}, \dQuote{praznik_JMIM}, \dQuote{praznik_JMI},
@@ -1071,7 +979,7 @@ makeFilter(
     res = setNames(res$importance, res$attributes)
     replace(res, is.nan(res), 0) # FIXME: this is a technical fix, need to report upstream
   }
-  )
+)
 
 # FSelectorRcpp_info.gain ----------------
 
@@ -1127,7 +1035,8 @@ makeFilter(
     lrn = makeLearner(lrn.type, importance = "permutation", ...)
     mod = train(lrn, task)
     ranger::importance(mod$learner.model)
-  })
+  }
+)
 
 ranger.permutation = makeFilter(
   name = "ranger_permutation",
@@ -1140,7 +1049,8 @@ ranger.permutation = makeFilter(
     lrn = makeLearner(lrn.type, importance = "permutation", ...)
     mod = train(lrn, task)
     ranger::importance(mod$learner.model)
-  })
+  }
+)
 
 .FilterRegister[["ranger.permutation"]] = ranger.permutation
 .FilterRegister[["ranger.permutation"]]$desc = "(DEPRECATED)"
@@ -1170,7 +1080,8 @@ makeFilter(
     lrn = makeLearner(lrn.type, importance = "impurity", ...)
     mod = train(lrn, task)
     ranger::importance(mod$learner.model)
-  })
+  }
+)
 
 ranger.impurity = makeFilter(
   name = "ranger_impurity",
@@ -1183,7 +1094,8 @@ ranger.impurity = makeFilter(
     lrn = makeLearner(lrn.type, importance = "impurity", ...)
     mod = train(lrn, task)
     ranger::importance(mod$learner.model)
-  })
+  }
+)
 
 
 .FilterRegister[["ranger.impurity"]] = ranger.impurity
diff --git a/R/FilterEnsemble.R b/R/FilterEnsemble.R
old mode 100644
new mode 100755
diff --git a/R/FilterWrapper.R b/R/FilterWrapper.R
index 3c5d9f8..57dcacf 100644
--- a/R/FilterWrapper.R
+++ b/R/FilterWrapper.R
@@ -7,7 +7,7 @@
 #' @template arg_learner
 #' @param fw.method (`character(1)`)\cr
 #'   Filter method. See [listFilterMethods].
-#'   Default is \dQuote{randomForestSRC_importance}.
+#'   Default is \dQuote{FSelectorRcpp_information.gain}.
 #' @param fw.base.methods (`character(1)`)\cr
 #'   Simple Filter methods for ensemble filters. See [listFilterMethods]. Can
 #'   only be used in combination with ensemble filters. See
@@ -104,14 +104,14 @@
 #' }
 #'
 #' lrn = makeLearner("classif.lda")
-#' lrn = makeFilterWrapper(lrn, fw.method = "randomForestSRC_importance",
+#' lrn = makeFilterWrapper(lrn, fw.method = "FSelectorRcpp_information.gain",
 #'   fw.fun = biggest_gap, fw.fun.args = list("diff" = 1))
 #' r = resample(lrn, task, outer, extract = function(model) {
 #'   getFilteredFeatures(model)
 #' })
 #' print(r$extract)
 #' }
-makeFilterWrapper = function(learner, fw.method = "randomForestSRC_importance",
+makeFilterWrapper = function(learner, fw.method = "FSelectorRcpp_information.gain",
   fw.base.methods = NULL, fw.perc = NULL, fw.abs = NULL, fw.threshold = NULL,
   fw.fun = NULL, fw.fun.args = NULL, fw.mandatory.feat = NULL, cache = FALSE, ...) {
 
@@ -171,7 +171,7 @@ makeFilterWrapper = function(learner, fw.method = "randomForestSRC_importance",
 
 #' @export
 trainLearner.FilterWrapper = function(.learner, .task, .subset = NULL,
-  .weights = NULL, fw.method = "randomForestSRC_importance",
+  .weights = NULL, fw.method = "FSelectorRcpp_information.gain",
   fw.base.methods = NULL, fw.perc = NULL, fw.abs = NULL, fw.threshold = NULL,
   fw.fun = NULL, fw.fun.args = NULL, fw.mandatory.feat = NULL, ...) {
   .task = subsetTask(.task, subset = .subset)
diff --git a/R/HoldoutInstance_make_fixed.R b/R/HoldoutInstance_make_fixed.R
old mode 100644
new mode 100755
diff --git a/R/HomogeneousEnsemble.R b/R/HomogeneousEnsemble.R
old mode 100644
new mode 100755
diff --git a/R/Impute.R b/R/Impute.R
old mode 100644
new mode 100755
index 850875b..647973b
--- a/R/Impute.R
+++ b/R/Impute.R
@@ -20,17 +20,14 @@
 #'
 #' @details
 #' The description object contains these slots
-#' \describe{
-#'   \item{target ([character])}{See argument.}
-#'   \item{features ([character])}{Feature names (column names of `data`).},
-#'   \item{classes ([character])}{Feature classes (storage type of `data`).}
-#'   \item{lvls (named [list])}{Mapping of column names of factor features to their levels,
-#'     including newly created ones during imputation.}
-#'   \item{impute (named [list])}{Mapping of column names to imputation functions.}
-#'   \item{dummies (named [list])}{Mapping of column names to imputation functions.}
-#'   \item{impute.new.levels (`logical(1)`)}{See argument.}
-#'   \item{recode.factor.levels (`logical(1)`)}{See argument.}
-#' }
+#'   - target ([character]): See argument
+#'   - features ([character]): Feature names (column names of `data`)
+#'   - classes ([character]): Feature classes (storage type of `data`)
+#'   - lvls (named [list]): Mapping of column names of factor features to their levels, including newly created ones during imputation
+#'   - impute (named [list]): Mapping of column names to imputation functions
+#'   - dummies (named [list]): Mapping of column names to imputation functions
+#'   - impute.new.levels (`logical(1)`): See argument
+#'   - recode.factor.levels (`logical(1)`): See argument
 #'
 #' @template arg_taskdf
 #' @param target ([character])\cr
@@ -69,8 +66,8 @@
 #'   feature factor in the training data after imputation?.
 #'   Default is `TRUE`.
 #' @return ([list])
-#'   \item{data ([data.frame])}{Imputed data.}
-#'   \item{desc (`ImputationDesc`)}{Description object.}
+#'   - data ([data.frame]): Imputed data.
+#'   - desc (`ImputationDesc`): Description object.
 #' @export
 #' @family impute
 #' @examples
diff --git a/R/ImputeMethods.R b/R/ImputeMethods.R
old mode 100644
new mode 100755
diff --git a/R/ImputeWrapper.R b/R/ImputeWrapper.R
old mode 100644
new mode 100755
diff --git a/R/Learner.R b/R/Learner.R
old mode 100644
new mode 100755
diff --git a/R/Learner_operators.R b/R/Learner_operators.R
old mode 100644
new mode 100755
diff --git a/R/Learner_properties.R b/R/Learner_properties.R
old mode 100644
new mode 100755
diff --git a/R/Measure.R b/R/Measure.R
old mode 100644
new mode 100755
diff --git a/R/Measure_colAUC.R b/R/Measure_colAUC.R
old mode 100644
new mode 100755
diff --git a/R/Measure_custom_resampled.R b/R/Measure_custom_resampled.R
old mode 100644
new mode 100755
diff --git a/R/Measure_make_cost.R b/R/Measure_make_cost.R
old mode 100644
new mode 100755
diff --git a/R/Measure_operators.R b/R/Measure_operators.R
old mode 100644
new mode 100755
diff --git a/R/Measure_properties.R b/R/Measure_properties.R
old mode 100644
new mode 100755
diff --git a/R/ModelMultiplexer.R b/R/ModelMultiplexer.R
old mode 100644
new mode 100755
diff --git a/R/ModelMultiplexerParamSet.R b/R/ModelMultiplexerParamSet.R
old mode 100644
new mode 100755
diff --git a/R/MulticlassWrapper.R b/R/MulticlassWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelBinaryRelevanceWrapper.R b/R/MultilabelBinaryRelevanceWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelClassifierChainsWrapper.R b/R/MultilabelClassifierChainsWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelDBRWrapper.R b/R/MultilabelDBRWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelNestedStackingWrapper.R b/R/MultilabelNestedStackingWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelStackingWrapper.R b/R/MultilabelStackingWrapper.R
old mode 100644
new mode 100755
diff --git a/R/MultilabelTask.R b/R/MultilabelTask.R
old mode 100644
new mode 100755
diff --git a/R/NoFeaturesModel.R b/R/NoFeaturesModel.R
old mode 100644
new mode 100755
diff --git a/R/OptControl.R b/R/OptControl.R
old mode 100644
new mode 100755
diff --git a/R/OptResult.R b/R/OptResult.R
old mode 100644
new mode 100755
diff --git a/R/OptWrapper.R b/R/OptWrapper.R
old mode 100644
new mode 100755
diff --git a/R/OverBaggingWrapper.R b/R/OverBaggingWrapper.R
old mode 100644
new mode 100755
diff --git a/R/OverUnderSampling.R b/R/OverUnderSampling.R
old mode 100644
new mode 100755
diff --git a/R/OverUndersampleWrapper.R b/R/OverUndersampleWrapper.R
old mode 100644
new mode 100755
diff --git a/R/Prediction.R b/R/Prediction.R
old mode 100644
new mode 100755
diff --git a/R/Prediction_operators.R b/R/Prediction_operators.R
old mode 100644
new mode 100755
diff --git a/R/PreprocWrapper.R b/R/PreprocWrapper.R
old mode 100644
new mode 100755
diff --git a/R/PreprocWrapperCaret.R b/R/PreprocWrapperCaret.R
old mode 100644
new mode 100755
diff --git a/R/RLearner.R b/R/RLearner.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_C50.R b/R/RLearner_classif_C50.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_IBk.R b/R/RLearner_classif_IBk.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_J48.R b/R/RLearner_classif_J48.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_JRip.R b/R/RLearner_classif_JRip.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRL1L2SVC.R b/R/RLearner_classif_LiblineaRL1L2SVC.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRL1LogReg.R b/R/RLearner_classif_LiblineaRL1LogReg.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRL2L1SVC.R b/R/RLearner_classif_LiblineaRL2L1SVC.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRL2LogReg.R b/R/RLearner_classif_LiblineaRL2LogReg.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRL2SVC.R b/R/RLearner_classif_LiblineaRL2SVC.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_LiblineaRMultiClassSVC.R b/R/RLearner_classif_LiblineaRMultiClassSVC.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_OneR.R b/R/RLearner_classif_OneR.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_PART.R b/R/RLearner_classif_PART.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_RRF.R b/R/RLearner_classif_RRF.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_ada.R b/R/RLearner_classif_ada.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_adaboostm1.R b/R/RLearner_classif_adaboostm1.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_bartMachine.R b/R/RLearner_classif_bartMachine.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_binomial.R b/R/RLearner_classif_binomial.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_boosting.R b/R/RLearner_classif_boosting.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_bst.R b/R/RLearner_classif_bst.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_cforest.R b/R/RLearner_classif_cforest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_clusterSVM.R b/R/RLearner_classif_clusterSVM.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_ctree.R b/R/RLearner_classif_ctree.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_cvglmnet.R b/R/RLearner_classif_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_dbnDNN.R b/R/RLearner_classif_dbnDNN.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_dcSVM.R b/R/RLearner_classif_dcSVM.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_earth.R b/R/RLearner_classif_earth.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_evtree.R b/R/RLearner_classif_evtree.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_extraTrees.R b/R/RLearner_classif_extraTrees.R
deleted file mode 100644
index 22fa64f..0000000
--- a/R/RLearner_classif_extraTrees.R
+++ /dev/null
@@ -1,41 +0,0 @@
-#' @export
-makeRLearner.classif.extraTrees = function() {
-  makeRLearnerClassif(
-    cl = "classif.extraTrees",
-    package = "extraTrees",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 500L, lower = 1L),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "nodesize", default = 1L),
-      makeIntegerLearnerParam(id = "numRandomCuts", default = 1L),
-      makeLogicalLearnerParam(id = "evenCuts", default = FALSE),
-      makeIntegerLearnerParam(id = "numThreads", default = 1L, lower = 1L),
-      makeIntegerVectorLearnerParam(id = "subsetSizes"),
-      makeUntypedLearnerParam(id = "subsetGroups"),
-      makeIntegerVectorLearnerParam(id = "tasks", lower = 1L),
-      makeNumericLearnerParam(id = "probOfTaskCuts", lower = 0, upper = 1),
-      makeIntegerLearnerParam(id = "numRandomTaskCuts", default = 1L, lower = 1L),
-      makeDiscreteLearnerParam(id = "na.action", default = "stop", values = c("stop", "zero", "fuse"))
-    ),
-    properties = c("numerics", "weights", "twoclass", "multiclass", "prob"),
-    name = "Extremely Randomized Trees",
-    short.name = "extraTrees",
-    callees = "extraTrees"
-  )
-}
-
-#' @export
-trainLearner.classif.extraTrees = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE)
-  args = c(list(x = as.matrix(d$data), y = d$target), list(...))
-  if (!is.null(.weights)) {
-    args$weights = .weights
-  }
-  do.call(extraTrees::extraTrees, args)
-}
-
-#' @export
-predictLearner.classif.extraTrees = function(.learner, .model, .newdata, ...) {
-  is.prob = .learner$predict.type == "prob"
-  predict(.model$learner.model, as.matrix(.newdata), probability = is.prob, ...)
-}
diff --git a/R/RLearner_classif_fdausc.glm.R b/R/RLearner_classif_fdausc.glm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_fdausc.kernel.R b/R/RLearner_classif_fdausc.kernel.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_fdausc.knn.R b/R/RLearner_classif_fdausc.knn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_fdausc.np.R b/R/RLearner_classif_fdausc.np.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_featureless.R b/R/RLearner_classif_featureless.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_fgam.R b/R/RLearner_classif_fgam.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_fnn.R b/R/RLearner_classif_fnn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_gamboost.R b/R/RLearner_classif_gamboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_gaterSVM.R b/R/RLearner_classif_gaterSVM.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_gausspr.R b/R/RLearner_classif_gausspr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_gbm.R b/R/RLearner_classif_gbm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_geoDA.R b/R/RLearner_classif_geoDA.R
deleted file mode 100644
index f505130..0000000
--- a/R/RLearner_classif_geoDA.R
+++ /dev/null
@@ -1,30 +0,0 @@
-#' @export
-makeRLearner.classif.geoDA = function() {
-  makeRLearnerClassif(
-    cl = "classif.geoDA",
-    package = "DiscriMiner",
-    par.set = makeParamSet(
-      makeDiscreteLearnerParam(id = "validation", values = list(crossval = "crossval", learntest = "learntest", NULL = NULL), default = NULL, tunable = FALSE)
-    ),
-    par.vals = list(validation = NULL),
-    # FIXME default of geoDa for validation is NULL, par.vals is redundant here.
-    properties = c("twoclass", "multiclass", "numerics"),
-    name = "Geometric Predictive Discriminant Analysis",
-    short.name = "geoda",
-    callees = c("geoDA", "classify")
-  )
-}
-
-#' @export
-trainLearner.classif.geoDA = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE, recode.target = "drop.levels")
-  DiscriMiner::geoDA(variables = d$data, group = d$target, ...)
-}
-
-#' @export
-predictLearner.classif.geoDA = function(.learner, .model, .newdata, ...) {
-  m = .model$learner.model
-  p = DiscriMiner::classify(m, newdata = .newdata)
-  # p$scores #we loose this information
-  p$pred_class
-}
diff --git a/R/RLearner_classif_glmboost.R b/R/RLearner_classif_glmboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_glmnet.R b/R/RLearner_classif_glmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_h2odeeplearning.R b/R/RLearner_classif_h2odeeplearning.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_h2ogbm.R b/R/RLearner_classif_h2ogbm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_h2oglm.R b/R/RLearner_classif_h2oglm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_h2orandomForest.R b/R/RLearner_classif_h2orandomForest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_kknn.R b/R/RLearner_classif_kknn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_knn.R b/R/RLearner_classif_knn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_ksvm.R b/R/RLearner_classif_ksvm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_lda.R b/R/RLearner_classif_lda.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_linDA.R b/R/RLearner_classif_linDA.R
deleted file mode 100644
index 5276cce..0000000
--- a/R/RLearner_classif_linDA.R
+++ /dev/null
@@ -1,30 +0,0 @@
-#' @export
-makeRLearner.classif.linDA = function() {
-  makeRLearnerClassif(
-    cl = "classif.linDA",
-    package = "DiscriMiner",
-    par.set = makeParamSet(
-      # makeNumericVectorLearnerParam(id = "prior", lower = 0, upper = 1, default = NULL),
-      makeDiscreteLearnerParam(id = "validation", values = list(crossval = "crossval", learntest = "learntest", NULL = NULL), default = NULL, tunable = FALSE)
-    ),
-    properties = c("twoclass", "multiclass", "numerics"),
-    name = "Linear Discriminant Analysis",
-    short.name = "linda",
-    note = "Set `validation = NULL` by default to disable internal test set validation.",
-    callees = c("linDA", "classify")
-  )
-}
-
-#' @export
-trainLearner.classif.linDA = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE, recode.target = "drop.levels")
-  DiscriMiner::linDA(variables = d$data, group = d$target, ...)
-}
-
-#' @export
-predictLearner.classif.linDA = function(.learner, .model, .newdata, ...) {
-  m = .model$learner.model
-  p = DiscriMiner::classify(m, newdata = .newdata)
-  # p$scores #we loose this information
-  p$pred_class
-}
diff --git a/R/RLearner_classif_logreg.R b/R/RLearner_classif_logreg.R
index e05a3ab..87b1c0a 100644
--- a/R/RLearner_classif_logreg.R
+++ b/R/RLearner_classif_logreg.R
@@ -20,6 +20,14 @@ makeRLearner.classif.logreg = function() {
 #' @export
 trainLearner.classif.logreg = function(.learner, .task, .subset, .weights = NULL, ...) {
   f = getTaskFormula(.task)
+
+  # logreg expects the first label to be the negative class, contrary
+  # to the mlr3 convention that the positive class comes first.
+  # see https://github.com/mlr-org/mlr/issues/2817
+  tn = getTaskTargetNames(.task)
+  data = getTaskData(.task, .subset)
+  data[[tn]] = swap_levels(data[[tn]])
+
   stats::glm(f, data = getTaskData(.task, .subset), family = "binomial", weights = .weights, ...)
 }
 
diff --git a/R/RLearner_classif_lssvm.R b/R/RLearner_classif_lssvm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_lvq1.R b/R/RLearner_classif_lvq1.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_mda.R b/R/RLearner_classif_mda.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_mlp.R b/R/RLearner_classif_mlp.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_multinom.R b/R/RLearner_classif_multinom.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_naiveBayes.R b/R/RLearner_classif_naiveBayes.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_neuralnet.R b/R/RLearner_classif_neuralnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_nnTrain.R b/R/RLearner_classif_nnTrain.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_nnet.R b/R/RLearner_classif_nnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_nodeHarvest.R b/R/RLearner_classif_nodeHarvest.R
deleted file mode 100644
index 42b522a..0000000
--- a/R/RLearner_classif_nodeHarvest.R
+++ /dev/null
@@ -1,40 +0,0 @@
-#' @export
-makeRLearner.classif.nodeHarvest = function() {
-  makeRLearnerClassif(
-    cl = "classif.nodeHarvest",
-    package = "nodeHarvest",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "nodesize", default = 10L, lower = 1L),
-      makeIntegerLearnerParam(id = "nodes", default = 1000L, lower = 1L),
-      makeIntegerLearnerParam(id = "maxinter", default = 2L, lower = 1L),
-      makeDiscreteLearnerParam(id = "mode", default = "mean", values = c("mean", "outbag")),
-      makeNumericLearnerParam(id = "lambda"),
-      makeUntypedLearnerParam(id = "addto", default = NULL),
-      makeLogicalLearnerParam(id = "onlyinter"),
-      makeLogicalLearnerParam(id = "silent", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "biascorr", default = FALSE)
-    ),
-    properties = c("numerics", "factors", "twoclass", "prob"),
-    name = "Node Harvest",
-    short.name = "nodeHarvest",
-    callees = "nodeHarvest"
-  )
-}
-
-#' @export
-trainLearner.classif.nodeHarvest = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE, recode.target = "01")
-  nodeHarvest::nodeHarvest(X = d$data, Y = d$target, ...)
-}
-
-#' @export
-predictLearner.classif.nodeHarvest = function(.learner, .model, .newdata, ...) {
-  levs = c(.model$task.desc$negative, .model$task.desc$positive)
-  p = predict(.model$learner.model, .newdata, ...)
-  if (.learner$predict.type == "prob") {
-    p = setColNames(cbind(1 - p, p), levs)
-  } else {
-    p = as.factor(ifelse(p > 0.5, levs[2L], levs[1L]))
-  }
-  return(p)
-}
diff --git a/R/RLearner_classif_pamr.R b/R/RLearner_classif_pamr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_penalized.R b/R/RLearner_classif_penalized.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_plr.R b/R/RLearner_classif_plr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_plsdaCaret.R b/R/RLearner_classif_plsdaCaret.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_probit.R b/R/RLearner_classif_probit.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_qda.R b/R/RLearner_classif_qda.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_quaDA.R b/R/RLearner_classif_quaDA.R
deleted file mode 100644
index 5c8db96..0000000
--- a/R/RLearner_classif_quaDA.R
+++ /dev/null
@@ -1,29 +0,0 @@
-#' @export
-makeRLearner.classif.quaDA = function() {
-  makeRLearnerClassif(
-    cl = "classif.quaDA",
-    package = "DiscriMiner",
-    par.set = makeParamSet(
-      # makeNumericVectorLearnerParam(id = "prior", lower = 0, upper = 1, default = NULL),
-      makeDiscreteLearnerParam(id = "validation", values = list(crossval = "crossval", learntest = "learntest", NULL = NULL), default = NULL, tunable = FALSE)
-    ),
-    properties = c("twoclass", "multiclass", "numerics"),
-    name = "Quadratic Discriminant Analysis",
-    short.name = "quada",
-    callees = c("quaDA", "classify")
-  )
-}
-
-#' @export
-trainLearner.classif.quaDA = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE, recode.target = "drop.levels")
-  DiscriMiner::quaDA(variables = d$data, group = d$target, ...)
-}
-
-#' @export
-predictLearner.classif.quaDA = function(.learner, .model, .newdata, ...) {
-  m = .model$learner.model
-  p = DiscriMiner::classify(m, newdata = .newdata)
-  # p$scores #we loose this information
-  p$pred_class
-}
diff --git a/R/RLearner_classif_rFerns.R b/R/RLearner_classif_rFerns.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_randomForest.R b/R/RLearner_classif_randomForest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_randomForestSRC.R b/R/RLearner_classif_randomForestSRC.R
deleted file mode 100644
index 98e6e4e..0000000
--- a/R/RLearner_classif_randomForestSRC.R
+++ /dev/null
@@ -1,82 +0,0 @@
-#' @export
-makeRLearner.classif.randomForestSRC = function() {
-  makeRLearnerClassif(
-    cl = "classif.randomForestSRC",
-    package = "randomForestSRC",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 1000L, lower = 1L),
-      makeDiscreteLearnerParam(id = "bootstrap", default = "by.root",
-        values = c("by.root", "by.node", "none")),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "nodesize", lower = 1L, default = 1L),
-      makeIntegerLearnerParam(id = "nodedepth", default = -1L),
-      makeDiscreteLearnerParam(id = "splitrule", default = "gini",
-        values = c("gini", "gini.unwt", "gini.hvwt", "random")),
-      makeIntegerLearnerParam(id = "nsplit", lower = 0L, default = 0L,
-        requires = quote(splitrule != "random")), # nsplit is ignored and internally set to 1L for splitrule = "random"
-      makeLogicalLearnerParam(id = "split.null", default = FALSE),
-      makeDiscreteLearnerParam(id = "importance", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, `TRUE` = TRUE, "none", "permute", "random", "anti",
-          "permute.ensemble", "random.ensemble", "anti.ensemble")),
-      makeDiscreteLearnerParam(id = "na.action", default = "na.impute",
-        values = c("na.omit", "na.impute"), when = "both"),
-      # FIXME the default in rfsrc() for na.action is na.omit
-      makeIntegerLearnerParam(id = "nimpute", default = 1L, lower = 1L),
-      makeDiscreteLearnerParam(id = "proximity", default = FALSE, tunable = FALSE,
-        values = list("inbag", "oob", "all", `TRUE` = TRUE, `FALSE` = FALSE)),
-      makeIntegerLearnerParam(id = "sampsize", lower = 1L,
-        requires = quote(bootstrap == "by.root")),
-      makeDiscreteLearnerParam(id = "samptype", default = "swr", values = c("swr", "swor"),
-        requires = quote(bootstrap == "by.root")),
-      makeNumericVectorLearnerParam(id = "xvar.wt", lower = 0),
-      makeLogicalLearnerParam(id = "forest", default = TRUE, tunable = FALSE),
-      makeDiscreteLearnerParam(id = "var.used", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeDiscreteLearnerParam(id = "split.depth", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeIntegerLearnerParam(id = "seed", lower = 0L, tunable = FALSE),
-      makeLogicalLearnerParam(id = "do.trace", default = FALSE, tunable = FALSE, when = "both"), # is currently ignored
-      makeLogicalLearnerParam(id = "membership", default = TRUE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "statistics", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "tree.err", default = FALSE, tunable = FALSE)
-    ),
-    par.vals = list(na.action = "na.impute"),
-    properties = c("missings", "numerics", "factors", "ordered", "prob", "twoclass", "multiclass", "weights", "oobpreds", "featimp"),
-    name = "Random Forest",
-    short.name = "rfsrc",
-    note = '`na.action` has been set to `"na.impute"` by default to allow missing data support.',
-    callees = "rfsrc"
-  )
-}
-
-#' @export
-trainLearner.classif.randomForestSRC = function(.learner, .task, .subset, .weights = NULL, ...) {
-  f = getTaskFormula(.task)
-  randomForestSRC::rfsrc(f, data = getTaskData(.task, .subset, recode.target = "drop.levels"), case.wt = .weights, ...)
-}
-
-#' @export
-predictLearner.classif.randomForestSRC = function(.learner, .model, .newdata, ...) {
-  p = predict(.model$learner.model, newdata = .newdata, membership = FALSE, ...)
-  if (.learner$predict.type == "prob") {
-    return(p$predicted)
-  } else {
-    return(p$class)
-  }
-}
-
-#' @export
-getOOBPredsLearner.classif.randomForestSRC = function(.learner, .model) {
-  preds = getLearnerModel(.model, more.unwrap = TRUE)$predicted.oob
-  if (.learner$predict.type == "response") {
-    factor(colnames(preds)[max.col(preds)], levels = colnames(preds))
-  } else {
-    preds
-  }
-}
-
-#' @export
-getFeatureImportanceLearner.classif.randomForestSRC = function(.learner, .model, ...) {
-  mod = getLearnerModel(.model, more.unwrap = TRUE)
-  randomForestSRC::vimp(mod, ...)$importance[, "all"]
-}
diff --git a/R/RLearner_classif_ranger.R b/R/RLearner_classif_ranger.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_rda.R b/R/RLearner_classif_rda.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_rknn.R b/R/RLearner_classif_rknn.R
deleted file mode 100644
index 80eeff1..0000000
--- a/R/RLearner_classif_rknn.R
+++ /dev/null
@@ -1,33 +0,0 @@
-#' @export
-makeRLearner.classif.rknn = function() {
-  makeRLearnerClassif(
-    cl = "classif.rknn",
-    package = "rknn",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "k", default = 1L, lower = 1L, upper = 98L),
-      makeIntegerLearnerParam(id = "r", default = 500L, lower = 1L),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "seed", lower = 1L),
-      makeUntypedLearnerParam(id = "cluster", default = NULL)
-    ),
-    # rknn can't handle unordered factors or return probs
-    properties = c("twoclass", "multiclass", "numerics", "ordered"),
-    name = "Random k-Nearest-Neighbors",
-    short.name = "rknn",
-    note = "k restricted to < 99 as the code allocates arrays of static size",
-    callees = "rknn"
-  )
-}
-
-#' @export
-trainLearner.classif.rknn = function(.learner, .task, .subset, .weights = NULL, ...) {
-  z = getTaskData(.task, .subset, target.extra = TRUE)
-  c(list(data = z$data, y = z$target), list(...))
-}
-
-#' @export
-predictLearner.classif.rknn = function(.learner, .model, .newdata, ...) {
-  args = .model$learner.model
-  args$newdata = .newdata
-  do.call(rknn::rknn, args)$pred
-}
diff --git a/R/RLearner_classif_rotationForest.R b/R/RLearner_classif_rotationForest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_rpart.R b/R/RLearner_classif_rpart.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_rrlda.R b/R/RLearner_classif_rrlda.R
deleted file mode 100644
index 99d3037..0000000
--- a/R/RLearner_classif_rrlda.R
+++ /dev/null
@@ -1,30 +0,0 @@
-#' @export
-makeRLearner.classif.rrlda = function() {
-  makeRLearnerClassif(
-    cl = "classif.rrlda",
-    package = "!rrlda",
-    par.set = makeParamSet(
-      makeNumericVectorLearnerParam(id = "prior", len = NA_integer_),
-      makeNumericLearnerParam(id = "lambda", default = 0.5, lower = 0),
-      makeNumericLearnerParam(id = "hp", default = 0.75, lower = 0),
-      makeIntegerLearnerParam(id = "nssamples", default = 30L, lower = 1L),
-      makeIntegerLearnerParam(id = "maxit", default = 50L, lower = 1L),
-      makeDiscreteLearnerParam(id = "penalty", default = "L2", values = c("L1", "L2"))
-    ),
-    properties = c("twoclass", "multiclass", "numerics"),
-    name = "Robust Regularized Linear Discriminant Analysis",
-    short.name = "rrlda",
-    callees = "rrlda"
-  )
-}
-
-#' @export
-trainLearner.classif.rrlda = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE, recode.target = "drop.levels")
-  rrlda::rrlda(x = d$data, grouping = d$target, ...)
-}
-
-#' @export
-predictLearner.classif.rrlda = function(.learner, .model, .newdata, ...) {
-  as.factor(predict(.model$learner.model, x = .newdata, ...)$class)
-}
diff --git a/R/RLearner_classif_saeDNN.R b/R/RLearner_classif_saeDNN.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_sda.R b/R/RLearner_classif_sda.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_sparseLDA.R b/R/RLearner_classif_sparseLDA.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_svm.R b/R/RLearner_classif_svm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_classif_xgboost.R b/R/RLearner_classif_xgboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_Cobweb.R b/R/RLearner_cluster_Cobweb.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_EM.R b/R/RLearner_cluster_EM.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_FarthestFirst.R b/R/RLearner_cluster_FarthestFirst.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_MiniBatchKmeans.R b/R/RLearner_cluster_MiniBatchKmeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_SimpleKMeans.R b/R/RLearner_cluster_SimpleKMeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_XMeans.R b/R/RLearner_cluster_XMeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_cmeans.R b/R/RLearner_cluster_cmeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_dbscan.R b/R/RLearner_cluster_dbscan.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_kkmeans.R b/R/RLearner_cluster_kkmeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_cluster_kmeans.R b/R/RLearner_cluster_kmeans.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_multilabel_cforest.R b/R/RLearner_multilabel_cforest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_multilabel_rFerns.R b/R/RLearner_multilabel_rFerns.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_multilabel_randomForestSRC.R b/R/RLearner_multilabel_randomForestSRC.R
deleted file mode 100644
index 7308781..0000000
--- a/R/RLearner_multilabel_randomForestSRC.R
+++ /dev/null
@@ -1,76 +0,0 @@
-#' @export
-makeRLearner.multilabel.randomForestSRC = function() {
-  makeRLearnerMultilabel(
-    cl = "multilabel.randomForestSRC",
-    package = "randomForestSRC",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 1000L, lower = 1L),
-      makeDiscreteLearnerParam(id = "bootstrap", default = "by.root",
-        values = c("by.root", "by.node", "none", "by.user")),
-      makeIntegerLearnerParam(id = "mtry", default = NULL, lower = 1L,
-        special.vals = list(NULL)),
-      makeIntegerLearnerParam(id = "nodesize", lower = 1L, default = NULL,
-        special.vals = list(NULL)),
-      makeIntegerLearnerParam(id = "nodedepth", default = NULL,
-        special.vals = list(NULL)),
-      makeDiscreteLearnerParam(id = "splitrule", default = NULL,
-        values = list("gini", "gini.unwt", "gini.hvwt", "random", NULL = NULL),
-        special.vals = list(NULL)),
-      makeIntegerLearnerParam(id = "nsplit", lower = 0L, default = 0L,
-        requires = quote(splitrule != "random")), # nsplit is ignored and internally set to 1L for splitrule = "random"
-      makeLogicalLearnerParam(id = "split.null", default = FALSE),
-      makeDiscreteLearnerParam(id = "importance", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, `TRUE` = TRUE, "none", "permute", "random", "anti",
-          "permute.ensemble", "random.ensemble", "anti.ensemble")),
-      makeDiscreteLearnerParam(id = "na.action", default = "na.impute",
-        values = c("na.omit", "na.impute"), when = "both"),
-      # FIXME the default in rfsrc() for na.action is na.omit
-      makeIntegerLearnerParam(id = "nimpute", default = 1L, lower = 1L),
-      makeDiscreteLearnerParam(id = "proximity", default = FALSE, tunable = FALSE,
-        values = list("inbag", "oob", "all", `TRUE` = TRUE, `FALSE` = FALSE)),
-      makeIntegerLearnerParam(id = "sampsize", lower = 1L, default = NULL,
-        requires = quote(bootstrap == "by.root"), special.vals = list(NULL)),
-      makeDiscreteLearnerParam(id = "samptype", default = "swr", values = c("swr", "swor"),
-        requires = quote(bootstrap == "by.root")),
-      makeUntypedLearnerParam(id = "samp", requires = quote(bootstrap == "by.user")),
-      makeNumericVectorLearnerParam(id = "xvar.wt", lower = 0, default = NULL,
-        special.vals = list(NULL)),
-      makeLogicalLearnerParam(id = "forest", default = TRUE, tunable = FALSE),
-      makeDiscreteLearnerParam(id = "var.used", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeDiscreteLearnerParam(id = "split.depth", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeIntegerLearnerParam(id = "seed", default = NULL, upper = 0L,
-        tunable = FALSE, special.vals = list(NULL)),
-      makeLogicalLearnerParam(id = "do.trace", default = FALSE, tunable = FALSE, when = "both"), # is currently ignored
-      makeLogicalLearnerParam(id = "membership", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "statistics", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "tree.err", default = FALSE, tunable = FALSE),
-      makeUntypedLearnerParam(id = "coerce.factor", default = NULL, special.vals = list(NULL))
-    ),
-    par.vals = list(na.action = "na.impute"),
-    properties = c("missings", "numerics", "factors", "prob", "weights"),
-    name = "Random Forest",
-    short.name = "rfsrc",
-    note = "`na.action` has been set to `na.impute` by default to allow missing data support.",
-    callees = "rfsrc"
-  )
-}
-
-#' @export
-trainLearner.multilabel.randomForestSRC = function(.learner, .task, .subset, .weights = NULL, ...) {
-  targets = getTaskTargetNames(.task)
-  f = as.formula(stri_paste("cbind(", stri_paste(targets, collapse = ",", sep = " "), ")  ~ .", sep = ""))
-  d = getTaskData(.task, .subset, recode.target = "multilabel.factor")
-  randomForestSRC::rfsrc(f, data = d, case.wt = .weights, ...)
-}
-
-#' @export
-predictLearner.multilabel.randomForestSRC = function(.learner, .model, .newdata, ...) {
-  p = predict(.model$learner.model, newdata = .newdata, importance = "none", ...)
-  if (.learner$predict.type == "prob") {
-    return(sapply(p$classOutput, function(x) x$predicted[, 1]))
-  } else {
-    return(sapply(p$classOutput, function(x) as.logical(x$class)))
-  }
-}
diff --git a/R/RLearner_regr_GPfit.R b/R/RLearner_regr_GPfit.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_IBk.R b/R/RLearner_regr_IBk.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_LiblineaRL2L1SVR.R b/R/RLearner_regr_LiblineaRL2L1SVR.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_LiblineaRL2L2SVR.R b/R/RLearner_regr_LiblineaRL2L2SVR.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_RRF.R b/R/RLearner_regr_RRF.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_bartMachine.R b/R/RLearner_regr_bartMachine.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_bcart.R b/R/RLearner_regr_bcart.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_bgp.R b/R/RLearner_regr_bgp.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_bgpllm.R b/R/RLearner_regr_bgpllm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_blm.R b/R/RLearner_regr_blm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_brnn.R b/R/RLearner_regr_brnn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_bst.R b/R/RLearner_regr_bst.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_btgp.R b/R/RLearner_regr_btgp.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_btgpllm.R b/R/RLearner_regr_btgpllm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_btlm.R b/R/RLearner_regr_btlm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_cforest.R b/R/RLearner_regr_cforest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_crs.R b/R/RLearner_regr_crs.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_ctree.R b/R/RLearner_regr_ctree.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_cubist.R b/R/RLearner_regr_cubist.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_cvglmnet.R b/R/RLearner_regr_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_earth.R b/R/RLearner_regr_earth.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_evtree.R b/R/RLearner_regr_evtree.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_extraTrees.R b/R/RLearner_regr_extraTrees.R
deleted file mode 100644
index 7686466..0000000
--- a/R/RLearner_regr_extraTrees.R
+++ /dev/null
@@ -1,41 +0,0 @@
-#' @export
-makeRLearner.regr.extraTrees = function() {
-  makeRLearnerRegr(
-    cl = "regr.extraTrees",
-    package = "extraTrees",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 500L, lower = 1L),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "nodesize", default = 5L),
-      makeIntegerLearnerParam(id = "numRandomCuts", default = 1L),
-      makeLogicalLearnerParam(id = "evenCuts", default = FALSE),
-      makeIntegerLearnerParam(id = "numThreads", default = 1L, lower = 1L),
-      makeIntegerVectorLearnerParam(id = "subsetSizes"),
-      makeUntypedLearnerParam(id = "subsetGroups"),
-      makeIntegerVectorLearnerParam(id = "tasks"),
-      makeNumericLearnerParam(id = "probOfTaskCuts", lower = 0, upper = 1),
-      makeIntegerLearnerParam(id = "numRandomTaskCuts", default = 1L, lower = 1L),
-      makeDiscreteLearnerParam(id = "na.action", default = "stop",
-        values = c("stop", "zero", "fuse"))
-    ),
-    properties = c("numerics", "weights"),
-    name = "Extremely Randomized Trees",
-    short.name = "extraTrees",
-    callees = "extraTrees"
-  )
-}
-
-#' @export
-trainLearner.regr.extraTrees = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE)
-  args = c(list(x = as.matrix(d$data), y = d$target), list(...))
-  if (!is.null(.weights)) {
-    args$weights = .weights
-  }
-  do.call(extraTrees::extraTrees, args)
-}
-
-#' @export
-predictLearner.regr.extraTrees = function(.learner, .model, .newdata, ...) {
-  predict(.model$learner.model, as.matrix(.newdata), ...)
-}
diff --git a/R/RLearner_regr_featureless.R b/R/RLearner_regr_featureless.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_fgam.R b/R/RLearner_regr_fgam.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_fnn.R b/R/RLearner_regr_fnn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_frbs.R b/R/RLearner_regr_frbs.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_gamboost.R b/R/RLearner_regr_gamboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_gausspr.R b/R/RLearner_regr_gausspr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_gbm.R b/R/RLearner_regr_gbm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_glm.R b/R/RLearner_regr_glm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_glmboost.R b/R/RLearner_regr_glmboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_glmnet.R b/R/RLearner_regr_glmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_h2odeeplearning.R b/R/RLearner_regr_h2odeeplearning.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_h2ogbm.R b/R/RLearner_regr_h2ogbm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_h2oglm.R b/R/RLearner_regr_h2oglm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_h2orandomForest.R b/R/RLearner_regr_h2orandomForest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_kknn.R b/R/RLearner_regr_kknn.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_km.R b/R/RLearner_regr_km.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_ksvm.R b/R/RLearner_regr_ksvm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_laGP.R b/R/RLearner_regr_laGP.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_lm.R b/R/RLearner_regr_lm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_mars.R b/R/RLearner_regr_mars.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_mob.R b/R/RLearner_regr_mob.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_nnet.R b/R/RLearner_regr_nnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_nodeHarvest.R b/R/RLearner_regr_nodeHarvest.R
deleted file mode 100644
index 1e09135..0000000
--- a/R/RLearner_regr_nodeHarvest.R
+++ /dev/null
@@ -1,33 +0,0 @@
-#' @export
-makeRLearner.regr.nodeHarvest = function() {
-  makeRLearnerRegr(
-    cl = "regr.nodeHarvest",
-    package = "nodeHarvest",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "nodesize", default = 10L, lower = 1L),
-      makeIntegerLearnerParam(id = "nodes", default = 1000L, lower = 1L),
-      makeIntegerLearnerParam(id = "maxinter", default = 2L, lower = 1L),
-      makeDiscreteLearnerParam(id = "mode", default = "mean", values = c("mean", "outbag")),
-      makeNumericLearnerParam(id = "lambda"),
-      makeUntypedLearnerParam(id = "addto", default = NULL),
-      makeLogicalLearnerParam(id = "onlyinter"),
-      makeLogicalLearnerParam(id = "silent", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "biascorr", default = FALSE)
-    ),
-    properties = c("numerics", "factors"),
-    name = "Node Harvest",
-    short.name = "nodeHarvest",
-    callees = "nodeHarvest"
-  )
-}
-
-#' @export
-trainLearner.regr.nodeHarvest = function(.learner, .task, .subset, .weights = NULL, ...) {
-  d = getTaskData(.task, .subset, target.extra = TRUE)
-  nodeHarvest::nodeHarvest(X = d$data, Y = d$target, ...)
-}
-
-#' @export
-predictLearner.regr.nodeHarvest = function(.learner, .model, .newdata, ...) {
-  predict(.model$learner.model, .newdata, ...)
-}
diff --git a/R/RLearner_regr_pcr.R b/R/RLearner_regr_pcr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_penalized.R b/R/RLearner_regr_penalized.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_plsr.R b/R/RLearner_regr_plsr.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_randomForest.R b/R/RLearner_regr_randomForest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_randomForestSRC.R b/R/RLearner_regr_randomForestSRC.R
deleted file mode 100644
index 4052845..0000000
--- a/R/RLearner_regr_randomForestSRC.R
+++ /dev/null
@@ -1,74 +0,0 @@
-#' @export
-makeRLearner.regr.randomForestSRC = function() {
-  makeRLearnerRegr(
-    cl = "regr.randomForestSRC",
-    package = "randomForestSRC",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 1000L, lower = 1L),
-      makeDiscreteLearnerParam(id = "bootstrap", default = "by.root",
-        values = c("by.root", "by.node", "none")),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "nodesize", lower = 1L, default = 5L),
-      makeIntegerLearnerParam(id = "nodedepth", default = -1L),
-      makeDiscreteLearnerParam(id = "splitrule", default = "mse",
-        values = c("mse", "mse.unwt", "mse.hvwt", "random")),
-      makeIntegerLearnerParam(id = "nsplit", lower = 0L, default = 0L,
-        requires = quote(splitrule != "random")), # nsplit is ignored and internally set to 1L for splitrule = "random"
-      makeLogicalLearnerParam(id = "split.null", default = FALSE),
-      makeDiscreteLearnerParam(id = "importance", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, `TRUE` = TRUE, "none", "permute", "random", "anti",
-          "permute.ensemble", "random.ensemble", "anti.ensemble")),
-      makeDiscreteLearnerParam(id = "na.action", default = "na.impute",
-        values = c("na.omit", "na.impute"), when = "both"),
-      # FIXME default in rfsrc() for na.action is na.omit
-      makeIntegerLearnerParam(id = "nimpute", default = 1L, lower = 1L),
-      makeDiscreteLearnerParam(id = "proximity", default = FALSE, tunable = FALSE,
-        values = list("inbag", "oob", "all", `TRUE` = TRUE, `FALSE` = FALSE)),
-      makeIntegerLearnerParam(id = "sampsize", lower = 1L,
-        requires = quote(bootstrap == "by.root")),
-      makeDiscreteLearnerParam(id = "samptype", default = "swr", values = c("swr", "swor"),
-        requires = quote(bootstrap == "by.root")),
-      makeNumericVectorLearnerParam(id = "xvar.wt", lower = 0),
-      makeLogicalLearnerParam(id = "forest", default = TRUE, tunable = FALSE),
-      makeDiscreteLearnerParam(id = "var.used", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeDiscreteLearnerParam(id = "split.depth", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeIntegerLearnerParam(id = "seed", upper = 0L, tunable = FALSE),
-      makeLogicalLearnerParam(id = "do.trace", default = FALSE, tunable = FALSE, when = "both"), # is currently ignored
-      makeLogicalLearnerParam(id = "membership", default = TRUE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "statistics", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "tree.err", default = FALSE, tunable = FALSE)
-    ),
-    par.vals = list(na.action = "na.impute"),
-    properties = c("missings", "numerics", "factors", "ordered", "weights", "oobpreds", "featimp"),
-    name = "Random Forest",
-    short.name = "rfsrc",
-    note = '`na.action` has been set to `"na.impute"` by default to allow missing data support.',
-    callees = "rfsrc"
-  )
-}
-
-#' @export
-trainLearner.regr.randomForestSRC = function(.learner, .task, .subset, .weights = NULL, ...) {
-  f = getTaskFormula(.task)
-  randomForestSRC::rfsrc(f, data = getTaskData(.task, .subset), case.wt = .weights, ...)
-}
-
-#' @export
-predictLearner.regr.randomForestSRC = function(.learner, .model, .newdata, ...) {
-  p = predict(.model$learner.model, newdata = .newdata, membership = FALSE, ...)
-  # versison 2.0 of randomForestSRC returns an array here :(
-  as.numeric(p$predicted)
-}
-
-#' @export
-getOOBPredsLearner.regr.randomForestSRC = function(.learner, .model) {
-  as.numeric(getLearnerModel(.model, more.unwrap = TRUE)$predicted.oob)
-}
-
-#' @rdname getFeatureImportanceLearner
-getFeatureImportanceLearner.regr.randomForestSRC = function(.learner, .model, ...) {
-  mod = getLearnerModel(.model, more.unwrap = TRUE)
-  randomForestSRC::vimp(mod)$importance
-}
diff --git a/R/RLearner_regr_ranger.R b/R/RLearner_regr_ranger.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_rknn.R b/R/RLearner_regr_rknn.R
deleted file mode 100644
index 4beb126..0000000
--- a/R/RLearner_regr_rknn.R
+++ /dev/null
@@ -1,33 +0,0 @@
-#' @export
-makeRLearner.regr.rknn = function() {
-  makeRLearnerRegr(
-    cl = "regr.rknn",
-    package = "rknn",
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "k", default = 1L, lower = 1L),
-      makeIntegerLearnerParam(id = "r", default = 500L, lower = 1L),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "seed", default = 2015L, lower = 1L),
-      makeUntypedLearnerParam(id = "cluster", default = NULL)
-    ),
-    # rknn can't handle factors or return probs
-    properties = c("numerics", "ordered"),
-    name = "Random k-Nearest-Neighbors",
-    short.name = "rknn",
-    note = "",
-    callees = "rknnReg"
-  )
-}
-
-#' @export
-trainLearner.regr.rknn = function(.learner, .task, .subset, .weights = NULL, ...) {
-  z = getTaskData(.task, .subset, target.extra = TRUE)
-  c(list(data = z$data, y = z$target), list(...))
-}
-
-#' @export
-predictLearner.regr.rknn = function(.learner, .model, .newdata, ...) {
-  args = .model$learner.model
-  args$newdata = .newdata
-  do.call(rknn::rknnReg, args)$pred
-}
diff --git a/R/RLearner_regr_rpart.R b/R/RLearner_regr_rpart.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_rsm.R b/R/RLearner_regr_rsm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_rvm.R b/R/RLearner_regr_rvm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_svm.R b/R/RLearner_regr_svm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_regr_xgboost.R b/R/RLearner_regr_xgboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_cforest.R b/R/RLearner_surv_cforest.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_coxph.R b/R/RLearner_surv_coxph.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_cvglmnet.R b/R/RLearner_surv_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_gamboost.R b/R/RLearner_surv_gamboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_gbm.R b/R/RLearner_surv_gbm.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_glmboost.R b/R/RLearner_surv_glmboost.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_glmnet.R b/R/RLearner_surv_glmnet.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_randomForestSRC.R b/R/RLearner_surv_randomForestSRC.R
deleted file mode 100644
index 0e6eb88..0000000
--- a/R/RLearner_surv_randomForestSRC.R
+++ /dev/null
@@ -1,72 +0,0 @@
-#' @export
-makeRLearner.surv.randomForestSRC = function() {
-  makeRLearnerSurv(
-    cl = "surv.randomForestSRC",
-    package = c("survival", "randomForestSRC"),
-    par.set = makeParamSet(
-      makeIntegerLearnerParam(id = "ntree", default = 1000L, lower = 1L),
-      makeDiscreteLearnerParam(id = "bootstrap", default = "by.root",
-        values = c("by.root", "by.node", "none")),
-      makeIntegerLearnerParam(id = "mtry", lower = 1L),
-      makeIntegerLearnerParam(id = "nodesize", lower = 1L, default = 3L),
-      makeIntegerLearnerParam(id = "nodedepth", default = -1L),
-      makeDiscreteLearnerParam(id = "splitrule", default = "logrank",
-        values = c("logrank", "logrankscore", "random")),
-      makeIntegerLearnerParam(id = "nsplit", lower = 0L, default = 0L,
-        requires = quote(splitrule != "random")), # nsplit is ignored and internally set to 1 for splitrule = "random"
-      makeLogicalLearnerParam(id = "split.null", default = FALSE),
-      makeDiscreteLearnerParam(id = "importance", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, `TRUE` = TRUE, "none", "permute", "random",
-          "anti", "permute.ensemble", "random.ensemble", "anti.ensemble")),
-      makeDiscreteLearnerParam(id = "na.action", default = "na.impute",
-        values = c("na.omit", "na.impute"), when = "both"),
-      # FIXME default for na.action in rfsrc() is na.omit
-      makeIntegerLearnerParam(id = "nimpute", default = 1L, lower = 1L),
-      makeUntypedLearnerParam(id = "ntime"), # can be a single integer with number of time points or a numeric vector of time values
-      makeDiscreteLearnerParam(id = "proximity", default = FALSE, tunable = FALSE,
-        values = list("inbag", "oob", "all", `TRUE` = TRUE, `FALSE` = FALSE)),
-      makeIntegerLearnerParam(id = "sampsize", lower = 1L,
-        requires = quote(bootstrap == "by.root")),
-      makeDiscreteLearnerParam(id = "samptype", default = "swr", values = c("swr", "swor"),
-        requires = quote(bootstrap == "by.root")),
-      makeNumericVectorLearnerParam(id = "xvar.wt", lower = 0),
-      makeLogicalLearnerParam(id = "forest", default = TRUE, tunable = FALSE),
-      makeDiscreteLearnerParam(id = "var.used", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeDiscreteLearnerParam(id = "split.depth", default = FALSE, tunable = FALSE,
-        values = list(`FALSE` = FALSE, "all.trees", "by.tree")),
-      makeIntegerLearnerParam(id = "seed", upper = 0L, tunable = FALSE),
-      makeLogicalLearnerParam(id = "do.trace", default = FALSE, tunable = FALSE, when = "both"), # is currently ignored
-      makeLogicalLearnerParam(id = "membership", default = TRUE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "statistics", default = FALSE, tunable = FALSE),
-      makeLogicalLearnerParam(id = "tree.err", default = FALSE, tunable = FALSE)
-    ),
-    par.vals = list(na.action = "na.impute"),
-    properties = c("missings", "numerics", "factors", "ordered", "weights", "oobpreds", "featimp"),
-    name = "Random Forest",
-    short.name = "rfsrc",
-    note = '`na.action` has been set to `"na.impute"` by default to allow missing data support.',
-    callees = "rfsrc"
-  )
-}
-
-#' @export
-trainLearner.surv.randomForestSRC = function(.learner, .task, .subset, .weights = NULL, ...) {
-  f = getTaskFormula(.task)
-  randomForestSRC::rfsrc(f, data = getTaskData(.task, subset = .subset), case.wt = .weights, ...)
-}
-
-#' @export
-predictLearner.surv.randomForestSRC = function(.learner, .model, .newdata, ...) {
-  predict(.model$learner.model, newdata = .newdata, membership = FALSE, ...)$predicted
-}
-
-#' @export
-getOOBPredsLearner.surv.randomForestSRC = function(.learner, .model) {
-  .model$learner.model$predicted.oob
-}
-
-#' @export
-getFeatureImportanceLearner.surv.randomForestSRC = function(.learner, .model, ...) {
-  getFeatureImportanceLearner.regr.randomForestSRC(.learner, .model, ...)
-}
diff --git a/R/RLearner_surv_ranger.R b/R/RLearner_surv_ranger.R
old mode 100644
new mode 100755
diff --git a/R/RLearner_surv_rpart.R b/R/RLearner_surv_rpart.R
old mode 100644
new mode 100755
diff --git a/R/RegrTask.R b/R/RegrTask.R
old mode 100644
new mode 100755
diff --git a/R/RemoveConstantFeaturesWrapper.R b/R/RemoveConstantFeaturesWrapper.R
old mode 100644
new mode 100755
diff --git a/R/ResampleDesc.R b/R/ResampleDesc.R
old mode 100644
new mode 100755
diff --git a/R/ResampleInstance.R b/R/ResampleInstance.R
old mode 100644
new mode 100755
diff --git a/R/ResampleInstances.R b/R/ResampleInstances.R
old mode 100644
new mode 100755
diff --git a/R/ResamplePrediction.R b/R/ResamplePrediction.R
old mode 100644
new mode 100755
diff --git a/R/ResampleResult.R b/R/ResampleResult.R
old mode 100644
new mode 100755
diff --git a/R/ResampleResult_operators.R b/R/ResampleResult_operators.R
old mode 100644
new mode 100755
diff --git a/R/SMOTEWrapper.R b/R/SMOTEWrapper.R
old mode 100644
new mode 100755
diff --git a/R/StackedLearner.R b/R/StackedLearner.R
old mode 100644
new mode 100755
diff --git a/R/SupervisedTask.R b/R/SupervisedTask.R
old mode 100644
new mode 100755
diff --git a/R/SurvTask.R b/R/SurvTask.R
old mode 100644
new mode 100755
diff --git a/R/Task.R b/R/Task.R
old mode 100644
new mode 100755
diff --git a/R/TaskDesc.R b/R/TaskDesc.R
old mode 100644
new mode 100755
diff --git a/R/Task_operators.R b/R/Task_operators.R
old mode 100644
new mode 100755
diff --git a/R/TuneControl.R b/R/TuneControl.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlCMAES.R b/R/TuneControlCMAES.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlDesign.R b/R/TuneControlDesign.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlGenSA.R b/R/TuneControlGenSA.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlGrid.R b/R/TuneControlGrid.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlIrace.R b/R/TuneControlIrace.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlMBO.R b/R/TuneControlMBO.R
old mode 100644
new mode 100755
diff --git a/R/TuneControlRandom.R b/R/TuneControlRandom.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritControl.R b/R/TuneMultiCritControl.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritControlGrid.R b/R/TuneMultiCritControlGrid.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritControlMBO.R b/R/TuneMultiCritControlMBO.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritControlNSGA2.R b/R/TuneMultiCritControlNSGA2.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritControlRandom.R b/R/TuneMultiCritControlRandom.R
old mode 100644
new mode 100755
diff --git a/R/TuneMultiCritResult.R b/R/TuneMultiCritResult.R
old mode 100644
new mode 100755
diff --git a/R/TuneResult.R b/R/TuneResult.R
old mode 100644
new mode 100755
diff --git a/R/TuneWrapper.R b/R/TuneWrapper.R
old mode 100644
new mode 100755
diff --git a/R/UnsupervisedTask.R b/R/UnsupervisedTask.R
old mode 100644
new mode 100755
diff --git a/R/WeightedClassesWrapper.R b/R/WeightedClassesWrapper.R
old mode 100644
new mode 100755
diff --git a/R/WrappedModel.R b/R/WrappedModel.R
old mode 100644
new mode 100755
diff --git a/R/aggregations.R b/R/aggregations.R
old mode 100644
new mode 100755
index 1992144..32d0a29
--- a/R/aggregations.R
+++ b/R/aggregations.R
@@ -216,7 +216,8 @@ b632 = makeAggregation(
   properties = c("req.train", "req.test"),
   fun = function(task, perf.test, perf.train, measure, group, pred) {
     mean(0.632 * perf.test + 0.368 * perf.train)
-  })
+  }
+)
 
 
 # FIXME: read this again properly and double check it
@@ -247,7 +248,8 @@ b632plus = makeAggregation(
       a[i] = (1 - w) * perf.train[i] + w * perf.test[i]
     }
     return(mean(a))
-  })
+  }
+)
 
 #' @export
 #' @usage NULL
@@ -259,7 +261,8 @@ testgroup.mean = makeAggregation(
   properties = "req.test",
   fun = function(task, perf.test, perf.train, measure, group, pred) {
     mean(vnapply(split(perf.test, group), mean))
-  })
+  }
+)
 
 #' @export
 #' @usage NULL
@@ -271,7 +274,8 @@ testgroup.sd = makeAggregation(
   properties = "req.test",
   fun = function(task, perf.test, perf.train, measure, group, pred) {
     sd(BBmisc::vnapply(split(perf.test, group), mean))
-  })
+  }
+)
 
 #' @export
 #' @usage NULL
@@ -297,4 +301,5 @@ test.join = makeAggregation(
       )
       performance(npred, measure)
     }))
-  })
+  }
+)
diff --git a/R/analyzeFeatSelResult.R b/R/analyzeFeatSelResult.R
old mode 100644
new mode 100755
diff --git a/R/asROCRPrediction.R b/R/asROCRPrediction.R
old mode 100644
new mode 100755
diff --git a/R/batchmark.R b/R/batchmark.R
old mode 100644
new mode 100755
diff --git a/R/benchmark.R b/R/benchmark.R
old mode 100644
new mode 100755
diff --git a/R/benchmark_helpers.R b/R/benchmark_helpers.R
old mode 100644
new mode 100755
diff --git a/R/cache_helpers.R b/R/cache_helpers.R
old mode 100644
new mode 100755
diff --git a/R/calculateConfusionMatrix.R b/R/calculateConfusionMatrix.R
old mode 100644
new mode 100755
diff --git a/R/calculateROCMeasures.R b/R/calculateROCMeasures.R
old mode 100644
new mode 100755
diff --git a/R/capLargeValues.R b/R/capLargeValues.R
old mode 100644
new mode 100755
diff --git a/R/checkAggrBeforeResample.R b/R/checkAggrBeforeResample.R
old mode 100644
new mode 100755
diff --git a/R/checkBMRMeasure.R b/R/checkBMRMeasure.R
old mode 100644
new mode 100755
diff --git a/R/checkLearner.R b/R/checkLearner.R
old mode 100644
new mode 100755
diff --git a/R/checkLearnerBeforeTrain.R b/R/checkLearnerBeforeTrain.R
old mode 100644
new mode 100755
diff --git a/R/checkMeasures.R b/R/checkMeasures.R
old mode 100644
new mode 100755
diff --git a/R/checkPrediction.R b/R/checkPrediction.R
old mode 100644
new mode 100755
diff --git a/R/checkTargetPreproc.R b/R/checkTargetPreproc.R
old mode 100644
new mode 100755
diff --git a/R/checkTask.R b/R/checkTask.R
old mode 100644
new mode 100755
diff --git a/R/checkTaskSubset.R b/R/checkTaskSubset.R
old mode 100644
new mode 100755
diff --git a/R/checkTunerParset.R b/R/checkTunerParset.R
old mode 100644
new mode 100755
index 9fe2485..4d0cd69
--- a/R/checkTunerParset.R
+++ b/R/checkTunerParset.R
@@ -66,5 +66,4 @@ checkTunerParset = function(learner, par.set, measures, control) {
     }
   }
 
-
 }
diff --git a/R/configureMlr.R b/R/configureMlr.R
old mode 100644
new mode 100755
diff --git a/R/convertBMRToRankMatrix.R b/R/convertBMRToRankMatrix.R
old mode 100644
new mode 100755
diff --git a/R/convertMLBenchObjToTask.R b/R/convertMLBenchObjToTask.R
old mode 100644
new mode 100755
diff --git a/R/convertX.R b/R/convertX.R
old mode 100644
new mode 100755
diff --git a/R/createDummyFeatures.R b/R/createDummyFeatures.R
index 8292a46..66f2477 100644
--- a/R/createDummyFeatures.R
+++ b/R/createDummyFeatures.R
@@ -49,10 +49,10 @@ createDummyFeatures.data.frame = function(obj, target = character(0L), method =
 
   dummies = as.data.frame(lapply(obj[work.cols], createDummyFeatures, method = method))
 
-  if (method == "reference" && length(work.cols) == length(dummies)) {
-    colnames(dummies) = Map(function(col, pre) {
+  if (method == "reference") {
+    colnames(dummies) = unlist(Map(function(col, pre) {
       stri_paste(pre, tail(levels(col), -1), sep = ".")
-    }, obj[work.cols], prefix)
+    }, obj[work.cols], prefix))
   }
 
   if (length(dummies) != 0) {
diff --git a/R/createSpatialResamplingPlots.R b/R/createSpatialResamplingPlots.R
old mode 100644
new mode 100755
diff --git a/R/crossover.R b/R/crossover.R
old mode 100644
new mode 100755
diff --git a/R/downsample.R b/R/downsample.R
old mode 100644
new mode 100755
diff --git a/R/dropFeatures.R b/R/dropFeatures.R
old mode 100644
new mode 100755
diff --git a/R/estimateResidualVariance.R b/R/estimateResidualVariance.R
old mode 100644
new mode 100755
diff --git a/R/evalOptimizationState.R b/R/evalOptimizationState.R
old mode 100644
new mode 100755
diff --git a/R/extractFDAFeatures.R b/R/extractFDAFeatures.R
old mode 100644
new mode 100755
index ce0e03d..5dc7898
--- a/R/extractFDAFeatures.R
+++ b/R/extractFDAFeatures.R
@@ -13,17 +13,17 @@
 #'
 #' @details
 #' The description object contains these slots:
-#'   * target [`character`]: See argument.
-#'   * coln [`character`]: Colum names of data.
-#'   * fd.cols [`character`]: Functional feature names.
-#'   * extractFDAFeat [`list`]: Contains `feature.methods` and relevant
+#'   * target (`character`): See argument.
+#'   * coln (`character`): Colum names of data.
+#'   * fd.cols (`character`): Functional feature names.
+#'   * extractFDAFeat (`list`): Contains `feature.methods` and relevant
 #'     parameters for reextraction.
 #'
 #' @param obj ([Task] | [data.frame])\cr
 #'   Task or data.frame to extract functional features from.
 #'   Must contain functional features as matrix columns.
 #' @param target (`character(1)`)\cr
-#'   Task target column. Only neccessary for data.frames
+#'   Task target column. Only necessary for data.frames
 #'   Default is `character(0)`.
 #' @param feat.methods (named [list])\cr
 #'   List of functional features along with the desired methods for each functional feature.
@@ -37,8 +37,8 @@
 #' @param ... (any)\cr
 #'   Further hyperparameters passed on to the `feat.methods` specified above.
 #' @return ([list])
-#'   \item{data|task ([data.frame] | [Task])}{Extracted features, same type as obj.}
-#'   \item{desc (`extracFDAFeatDesc`)}{Description object. See description for details.}
+#'   - data | task ([data.frame] | [Task]): Extracted features, same type as obj.
+#'   - desc (`extracFDAFeatDesc`): Description object. See description for details.
 #' @family fda
 #' @export
 #' @examples
diff --git a/R/extractFDAFeaturesWrapper.R b/R/extractFDAFeaturesWrapper.R
old mode 100644
new mode 100755
diff --git a/R/filterFeatures.R b/R/filterFeatures.R
index a100332..224ec00 100644
--- a/R/filterFeatures.R
+++ b/R/filterFeatures.R
@@ -7,7 +7,7 @@
 #' @template arg_task
 #' @param method (`character(1)`)\cr
 #'   See [listFilterMethods].
-#'   Default is \dQuote{randomForestSRC_importance}.
+#'   Default is \dQuote{FSelectorRcpp_information.gain}.
 #' @param fval ([FilterValues])\cr
 #'   Result of [generateFilterValuesData].
 #'   If you pass this, the filter values in the object are used for feature
@@ -69,7 +69,7 @@
 #'   base.methods = c("FSelectorRcpp_gain.ratio",
 #'     "FSelectorRcpp_information.gain"), abs = 2)
 #' @export
-filterFeatures = function(task, method = "randomForestSRC_importance",
+filterFeatures = function(task, method = "FSelectorRcpp_information.gain",
   fval = NULL, perc = NULL, abs = NULL, threshold = NULL, fun = NULL,
   fun.args = NULL, mandatory.feat = NULL, select.method = NULL,
   base.methods = NULL, cache = FALSE, ...) {
diff --git a/R/fixDataForLearner.R b/R/fixDataForLearner.R
old mode 100644
new mode 100755
diff --git a/R/friedmanPostHocTestBMR.R b/R/friedmanPostHocTestBMR.R
old mode 100644
new mode 100755
diff --git a/R/friedmanTestBMR.R b/R/friedmanTestBMR.R
old mode 100644
new mode 100755
diff --git a/R/generateCalibration.R b/R/generateCalibration.R
old mode 100644
new mode 100755
diff --git a/R/generateFeatureImportance.R b/R/generateFeatureImportance.R
old mode 100644
new mode 100755
diff --git a/R/generateFilterValues.R b/R/generateFilterValues.R
index 907e7d0..55cbba6 100644
--- a/R/generateFilterValues.R
+++ b/R/generateFilterValues.R
@@ -8,7 +8,7 @@
 #'   Filter method(s).
 #'   In case of ensemble filters the `list` notation needs to be used.
 #'   See the examples for more information.
-#'   Default is \dQuote{randomForestSRC_importance}.
+#'   Default is \dQuote{FSelectorRcpp_information.gain}.
 #' @param nselect (`integer(1)`)\cr
 #' Number of scores to request. Scores are getting calculated for all features
 #' per default.
@@ -52,14 +52,14 @@
 #'   method = list("E-mean", c("FSelectorRcpp_gain.ratio",
 #'     "FSelectorRcpp_information.gain")))
 #' @export
-generateFilterValuesData = function(task, method = "randomForestSRC_importance",
+generateFilterValuesData = function(task, method = "FSelectorRcpp_information.gain",
   nselect = getTaskNFeats(task), ..., more.args = list()) {
 
   # define for later checks
   ens.method = NULL
 
   # ensemble
-  if (class(method) == "list") {
+  if (inherits(method, "list")) {
     if (method[[1]] %in% ls(.FilterEnsembleRegister)) {
       ens.method = method[[1]]
       method = method[[2]]
diff --git a/R/generateHyperParsEffect.R b/R/generateHyperParsEffect.R
index c387722..71325e8 100644
--- a/R/generateHyperParsEffect.R
+++ b/R/generateHyperParsEffect.R
@@ -81,7 +81,7 @@ generateHyperParsEffectData = function(tune.result, include.diagnostics = FALSE,
     }
     for (hyp in 1:num.hypers) {
       if (!is.numeric(d[, hyp])) {
-        d[, hyp] = type.convert(as.character(d[, hyp]))
+        d[, hyp] = suppressWarnings(type.convert(as.character(d[, hyp])))
       }
     }
     # rename to be clear this denotes the nested cv
diff --git a/R/generateLearningCurve.R b/R/generateLearningCurve.R
old mode 100644
new mode 100755
index 4b4983b..84e7d7a
--- a/R/generateLearningCurve.R
+++ b/R/generateLearningCurve.R
@@ -72,7 +72,7 @@ generateLearningCurveData = function(learners, task, resampling = NULL,
 
   # get perc and learner col data
   perc = extractSubList(bench.res$learners, c("par.vals", "dw.perc")) # get downsample reate
-  learner = extractSubList(bench.res$learners, c("next.learner", "id")) #get ID of unwrapped learner
+  learner = extractSubList(bench.res$learners, c("next.learner", "id")) # get ID of unwrapped learner
   perfs = dropNamed(perfs, c("task.id", "learner.id"))
 
   # set short measures names and resort cols
diff --git a/R/generatePartialDependence.R b/R/generatePartialDependence.R
old mode 100644
new mode 100755
diff --git a/R/generateThreshVsPerf.R b/R/generateThreshVsPerf.R
old mode 100644
new mode 100755
diff --git a/R/getCaretParamSet.R b/R/getCaretParamSet.R
old mode 100644
new mode 100755
diff --git a/R/getClassWeightParam.R b/R/getClassWeightParam.R
old mode 100644
new mode 100755
diff --git a/R/getConfMatrix.R b/R/getConfMatrix.R
old mode 100644
new mode 100755
diff --git a/R/getFeatSelResult.R b/R/getFeatSelResult.R
old mode 100644
new mode 100755
diff --git a/R/getFeatureImportance.R b/R/getFeatureImportance.R
index 40890d6..60556e6 100644
--- a/R/getFeatureImportance.R
+++ b/R/getFeatureImportance.R
@@ -32,10 +32,6 @@
 #'    See [randomForest::importance()] for details.
 #' * RRF \cr
 #'    This is identical to randomForest.
-#' * randomForestSRC \cr
-#'    This method can calculate feature importance for various measures. By
-#'    default the Breiman-Cutler permutation method is used. See
-#'    [randomForestSRC::vimp()] for details.
 #' * ranger \cr
 #'    Supports both measures mentioned above for the randomForest
 #'    learner. Note, that you need to specifically set the learners parameter
diff --git a/R/getFunctionalFeatures.R b/R/getFunctionalFeatures.R
old mode 100644
new mode 100755
diff --git a/R/getHyperPars.R b/R/getHyperPars.R
old mode 100644
new mode 100755
index 5d67e0b..569db25
--- a/R/getHyperPars.R
+++ b/R/getHyperPars.R
@@ -43,6 +43,13 @@ getHyperParsString = function(learner, show.missing.values = TRUE) {
     learner$par.set$pars$fw.base.methods = NULL
     learner$par.set$pars$fw.method = NULL
     learner$par.vals$fw.method = NULL
+    learner$par.vals$fw.base.methods = NULL
+  }
+  if ("fw.base.methods" %in% names(learner$next.learner$par.set$pars)) {
+    learner$next.learner$par.set$pars$fw.base.methods = NULL
+    learner$next.learner$par.set$pars$fw.method = NULL
+    learner$next.learner$par.vals$fw.method = NULL
+    learner$next.learner$par.vals$fw.base.methods = NULL
   }
   hps = getHyperPars(learner)
   ns = names(hps)
diff --git a/R/getMultilabelBinaryPerformances.R b/R/getMultilabelBinaryPerformances.R
old mode 100644
new mode 100755
diff --git a/R/getNestedTuneResults.R b/R/getNestedTuneResults.R
old mode 100644
new mode 100755
diff --git a/R/getOOBPreds.R b/R/getOOBPreds.R
old mode 100644
new mode 100755
diff --git a/R/getParamSet.R b/R/getParamSet.R
old mode 100644
new mode 100755
diff --git a/R/getResampleExtract.R b/R/getResampleExtract.R
old mode 100644
new mode 100755
diff --git a/R/getResamplingIndices.R b/R/getResamplingIndices.R
old mode 100644
new mode 100755
index 704802d..006cba9
--- a/R/getResamplingIndices.R
+++ b/R/getResamplingIndices.R
@@ -54,8 +54,7 @@ getResamplingIndices = function(object, inner = FALSE) {
         simplify = FALSE)
       },
       simplify = FALSE)
-    }
-    )
+    })
 
     return(inner.inds.translated)
 
diff --git a/R/getTaskConstructorForLearner.R b/R/getTaskConstructorForLearner.R
old mode 100644
new mode 100755
diff --git a/R/getTuneResult.R b/R/getTuneResult.R
old mode 100644
new mode 100755
diff --git a/R/getTuneThresholdExtra.R b/R/getTuneThresholdExtra.R
old mode 100644
new mode 100755
diff --git a/R/hasFunctionalFeatures.R b/R/hasFunctionalFeatures.R
old mode 100644
new mode 100755
diff --git a/R/helpLearner.R b/R/helpLearner.R
index 8e4f019..8c73b0e 100644
--- a/R/helpLearner.R
+++ b/R/helpLearner.R
@@ -193,6 +193,11 @@ makeParamHelpList = function(funs, pkgs, par.set) {
     html = XML::htmlParse(html)
     # try to extract the 'R argblock' table
     tab = XML::getNodeSet(html, "//table[@summary='R argblock']")
+    if (!length(tab)) {
+      # R help html is not perfectly reliable in tagging the argblock table.
+      # In that case, use the first table under the '<h3>Arguments</h3>' heading.
+      tab = XML::getNodeSet(html, "//h3[text()='Arguments']/following-sibling::table")
+    }
     if (length(tab) < 1) {
       next
     }
diff --git a/R/helpers.R b/R/helpers.R
index 269963a..6659361 100644
--- a/R/helpers.R
+++ b/R/helpers.R
@@ -181,3 +181,8 @@ makeResamplingWindow = function(desc, size, task = NULL, coords, window.type) {
   desc$iters = length(test.inds)
   makeResampleInstanceInternal(desc, size, train.inds = train.inds, test.inds = test.inds)
 }
+
+# taken from mlr3learners
+swap_levels = function(x) {
+  factor(x, levels = rev(levels(x)))
+}
diff --git a/R/helpers_fda.R b/R/helpers_fda.R
old mode 100644
new mode 100755
diff --git a/R/joinClassLevels.R b/R/joinClassLevels.R
old mode 100644
new mode 100755
diff --git a/R/learnerArgsToControl.R b/R/learnerArgsToControl.R
old mode 100644
new mode 100755
diff --git a/R/learners.R b/R/learners.R
old mode 100644
new mode 100755
diff --git a/R/listLearners.R b/R/listLearners.R
old mode 100644
new mode 100755
diff --git a/R/listMeasures.R b/R/listMeasures.R
old mode 100644
new mode 100755
diff --git a/R/logFunOpt.R b/R/logFunOpt.R
old mode 100644
new mode 100755
diff --git a/R/makeFunctionalData.R b/R/makeFunctionalData.R
old mode 100644
new mode 100755
diff --git a/R/makeLearner.R b/R/makeLearner.R
old mode 100644
new mode 100755
diff --git a/R/makeLearners.R b/R/makeLearners.R
old mode 100644
new mode 100755
diff --git a/R/measures.R b/R/measures.R
old mode 100644
new mode 100755
index 0408e9a..2fca64f
--- a/R/measures.R
+++ b/R/measures.R
@@ -53,7 +53,8 @@ featperc = makeMeasure(
   note = "Useful for feature selection.",
   fun = function(task, model, pred, feats, extra.args) {
     length(model$features) / sum(pred$task.desc$n.feat)
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -65,7 +66,8 @@ timetrain = makeMeasure(
   name = "Time of fitting the model",
   fun = function(task, model, pred, feats, extra.args) {
     model$time
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -77,7 +79,8 @@ timepredict = makeMeasure(
   name = "Time of predicting test set",
   fun = function(task, model, pred, feats, extra.args) {
     pred$time
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -89,7 +92,8 @@ timeboth = makeMeasure(
   name = "timetrain + timepredict",
   fun = function(task, model, pred, feats, extra.args) {
     model$time + pred$time
-  })
+  }
+)
 
 ###############################################################################
 ### regression ###
@@ -106,7 +110,8 @@ sse = makeMeasure(
   note = "Defined as: sum((response - truth)^2)",
   fun = function(task, model, pred, feats, extra.args) {
     measureSSE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureSSE
 #' @rdname measures
@@ -125,7 +130,8 @@ mse = makeMeasure(
   note = "Defined as: mean((response - truth)^2)",
   fun = function(task, model, pred, feats, extra.args) {
     measureMSE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMSE
 #' @rdname measures
@@ -165,7 +171,8 @@ medse = makeMeasure(
   note = "Defined as: median((response - truth)^2).",
   fun = function(task, model, pred, feats, extra.args) {
     measureMEDSE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMEDSE
 #' @rdname measures
@@ -184,7 +191,8 @@ sae = makeMeasure(
   note = "Defined as: sum(abs(response - truth))",
   fun = function(task, model, pred, feats, extra.args) {
     measureSAE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureSAE
 #' @rdname measures
@@ -203,7 +211,8 @@ mae = makeMeasure(
   note = "Defined as: mean(abs(response - truth))",
   fun = function(task, model, pred, feats, extra.args) {
     measureMAE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMAE
 #' @rdname measures
@@ -222,7 +231,8 @@ medae = makeMeasure(
   note = "Defined as: median(abs(response - truth)).",
   fun = function(task, model, pred, feats, extra.args) {
     measureMEDAE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMEDAE
 #' @rdname measures
@@ -241,7 +251,8 @@ rsq = makeMeasure(
   note = "Also called R-squared, which is 1 - residual_sum_of_squares / total_sum_of_squares.",
   fun = function(task, model, pred, feats, extra.args) {
     measureRSQ(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureRSQ
 #' @rdname measures
@@ -266,7 +277,8 @@ expvar = makeMeasure(
   note = "Similar to measure rsq (R-squared). Defined as explained_sum_of_squares / total_sum_of_squares.",
   fun = function(task, model, pred, feats, extra.args) {
     measureEXPVAR(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureEXPVAR
 #' @rdname measures
@@ -291,7 +303,8 @@ rrse = makeMeasure(
   note = "Defined as sqrt (sum_of_squared_errors / total_sum_of_squares). Undefined for single instances and when every truth value is identical. In this case the output will be NA.",
   fun = function(task, model, pred, feats, extra.args) {
     measureRRSE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureRRSE
 #' @rdname measures
@@ -315,7 +328,8 @@ rae = makeMeasure(
   note = "Defined as sum_of_absolute_errors / mean_absolute_deviation. Undefined for single instances and when every truth value is identical. In this case the output will be NA.",
   fun = function(task, model, pred, feats, extra.args) {
     measureRAE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureRAE
 #' @rdname measures
@@ -339,7 +353,8 @@ mape = makeMeasure(
   note = "Defined as the abs(truth_i - response_i) / truth_i. Won't work if any truth value is equal to zero. In this case the output will be NA.",
   fun = function(task, model, pred, feats, extra.args) {
     measureMAPE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMAPE
 #' @rdname measures
@@ -364,7 +379,8 @@ msle = makeMeasure(
   to compute the measure.",
   fun = function(task, model, pred, feats, extra.args) {
     measureMSLE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMSLE
 #' @rdname measures
@@ -393,7 +409,8 @@ rmsle = makeMeasure(
   must be greater or equal '-1' to compute the measure.",
   fun = function(task, model, pred, feats, extra.args) {
     measureRMSLE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureRMSLE
 #' @rdname measures
@@ -413,7 +430,8 @@ kendalltau = makeMeasure(
   See Rosset et al.: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.1398&rep=rep1&type=pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureKendallTau(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureKendallTau
 #' @rdname measures
@@ -433,7 +451,8 @@ spearmanrho = makeMeasure(
   See Rosset et al.: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.1398&rep=rep1&type=pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureSpearmanRho(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureSpearmanRho
 #' @rdname measures
@@ -455,7 +474,8 @@ mmce = makeMeasure(
   note = "Defined as: mean(response != truth)",
   fun = function(task, model, pred, feats, extra.args) {
     measureMMCE(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureMMCE
 #' @rdname measures
@@ -474,7 +494,8 @@ acc = makeMeasure(
   note = "Defined as: mean(response == truth)",
   fun = function(task, model, pred, feats, extra.args) {
     measureACC(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureACC
 #' @rdname measures
@@ -493,7 +514,8 @@ ber = makeMeasure(
   note = "Mean of misclassification error rates on all individual classes.",
   fun = function(task, model, pred, feats, extra.args) {
     measureBER(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureBER
 #' @rdname measures
@@ -516,7 +538,8 @@ multiclass.aunu = makeMeasure(
   note = "Computes the AUC treating a c-dimensional classifier as c two-dimensional classifiers, where classes are assumed to have uniform distribution, in order to have a measure which is independent of class distribution change. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureAUNU(getPredictionProbabilities(pred, pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureAUNU
 #' @rdname measures
@@ -539,7 +562,8 @@ multiclass.aunp = makeMeasure(
   note = "Computes the AUC treating a c-dimensional classifier as c two-dimensional classifiers, taking into account the prior probability of each class. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureAUNP(getPredictionProbabilities(pred, pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureAUNP
 #' @rdname measures
@@ -562,7 +586,8 @@ multiclass.au1u = makeMeasure(
   note = "Computes AUC of c(c - 1) binary classifiers (all possible pairwise combinations) while considering uniform distribution of the classes. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureAU1U(getPredictionProbabilities(pred, pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureAU1U
 #' @rdname measures
@@ -583,7 +608,8 @@ multiclass.au1p = makeMeasure(
   note = "Computes AUC of c(c - 1) binary classifiers while considering the a priori distribution of the classes. See Ferri et al.: https://www.math.ucdavis.edu/~saito/data/roc/ferri-class-perf-metrics.pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureAU1P(getPredictionProbabilities(pred, pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureAU1P
 #' @rdname measures
@@ -606,7 +632,8 @@ multiclass.brier = makeMeasure(
   note = "Defined as: (1/n) sum_i sum_j (y_ij - p_ij)^2, where y_ij = 1 if observation i has class j (else 0), and p_ij is the predicted probability of observation i for class j. From http://docs.lib.noaa.gov/rescue/mwr/078/mwr-078-01-0001.pdf.",
   fun = function(task, model, pred, feats, extra.args) {
     measureMulticlassBrier(getPredictionProbabilities(pred, pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureMulticlassBrier
 #' @rdname measures
@@ -627,7 +654,8 @@ logloss = makeMeasure(
   note = "Defined as: -mean(log(p_i)), where p_i is the predicted probability of the true class of observation i. Inspired by https://www.kaggle.com/wiki/MultiClassLogLoss.",
   fun = function(task, model, pred, feats, extra.args) {
     measureLogloss(getPredictionProbabilities(pred, cl = pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureLogloss
 #' @rdname measures
@@ -653,7 +681,8 @@ ssr = makeMeasure(
   See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.",
   fun = function(task, model, pred, feats, extra.args) {
     measureSSR(getPredictionProbabilities(pred, cl = pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureSSR
 #' @rdname measures
@@ -676,7 +705,8 @@ qsr = makeMeasure(
   See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.",
   fun = function(task, model, pred, feats, extra.args) {
     measureQSR(getPredictionProbabilities(pred, cl = pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureQSR
 #' @rdname measures
@@ -700,7 +730,8 @@ lsr = makeMeasure(
   See: Bickel, J. E. (2007). Some comparisons among quadratic, spherical, and logarithmic scoring rules. Decision Analysis, 4(2), 49-65.",
   fun = function(task, model, pred, feats, extra.args) {
     measureLSR(getPredictionProbabilities(pred, cl = pred$task.desc$class.levels), pred$data$truth)
-  })
+  }
+)
 
 #' @export measureLSR
 #' @rdname measures
@@ -720,7 +751,8 @@ kappa = makeMeasure(
     agreement' and pe = 'expected agremeent frequency under independence",
   fun = function(task, model, pred, feats, extra.args) {
     measureKAPPA(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureKAPPA
 #' @rdname measures
@@ -755,7 +787,8 @@ wkappa = makeMeasure(
     the weight matrix measures seriousness of disagreement with the squared euclidean metric.",
   fun = function(task, model, pred, feats, extra.args) {
     measureWKAPPA(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureWKAPPA
 #' @rdname measures
@@ -796,7 +829,8 @@ auc = makeMeasure(
       return(NA_real_)
     }
     measureAUC(getPredictionProbabilities(pred), pred$data$truth, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureAUC
 #' @rdname measures
@@ -833,7 +867,8 @@ brier = makeMeasure(
   multiclass.brier is the sum over all one vs. all comparisons and for a binary classifcation 2 * brier.",
   fun = function(task, model, pred, feats, extra.args) {
     measureBrier(getPredictionProbabilities(pred), pred$data$truth, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureBrier
 #' @rdname measures
@@ -853,7 +888,8 @@ brier.scaled = makeMeasure(
   note = "Brier score scaled to [0,1], see http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3575184/.",
   fun = function(task, model, pred, feats, extra.args) {
     measureBrierScaled(getPredictionProbabilities(pred), pred$data$truth, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureBrierScaled
 #' @rdname measures
@@ -876,7 +912,8 @@ bac = makeMeasure(
   note = "For binary tasks, mean of true positive rate and true negative rate.",
   fun = function(task, model, pred, feats, extra.args) {
     measureBAC(pred$data$truth, pred$data$response)
-  })
+  }
+)
 
 #' @export measureBAC
 #' @rdname measures
@@ -895,7 +932,8 @@ tp = makeMeasure(
   note = "Sum of all correctly classified observations in the positive class.",
   fun = function(task, model, pred, feats, extra.args) {
     measureTP(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureTP
 #' @rdname measures
@@ -914,7 +952,8 @@ tn = makeMeasure(
   note = "Sum of correctly classified observations in the negative class. Also called correct rejections.",
   fun = function(task, model, pred, feats, extra.args) {
     measureTN(pred$data$truth, pred$data$response, pred$task.desc$negative)
-  })
+  }
+)
 
 #' @export measureTN
 #' @rdname measures
@@ -933,7 +972,8 @@ fp = makeMeasure(
   note = "Sum of misclassified observations in the positive class. Also called false alarms.",
   fun = function(task, model, pred, feats, extra.args) {
     measureFP(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureFP
 #' @rdname measures
@@ -952,7 +992,8 @@ fn = makeMeasure(
   note = "Sum of misclassified observations in the negative class. Also called misses.",
   fun = function(task, model, pred, feats, extra.args) {
     measureFN(pred$data$truth, pred$data$response, pred$task.desc$negative)
-  })
+  }
+)
 
 #' @export measureFN
 #' @rdname measures
@@ -971,7 +1012,8 @@ tpr = makeMeasure(
   note = "Percentage of correctly classified observations in the positive class. Also called hit rate or recall or sensitivity.",
   fun = function(task, model, pred, feats, extra.args) {
     measureTPR(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureTPR
 #' @rdname measures
@@ -990,7 +1032,8 @@ tnr = makeMeasure(
   note = "Percentage of correctly classified observations in the negative class. Also called specificity.",
   fun = function(task, model, pred, feats, extra.args) {
     measureTNR(pred$data$truth, pred$data$response, pred$task.desc$negative)
-  })
+  }
+)
 
 #' @export measureTNR
 #' @rdname measures
@@ -1009,7 +1052,8 @@ fpr = makeMeasure(
   note = "Percentage of misclassified observations in the positive class. Also called false alarm rate or fall-out.",
   fun = function(task, model, pred, feats, extra.args) {
     measureFPR(pred$data$truth, pred$data$response, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureFPR
 #' @rdname measures
@@ -1028,7 +1072,8 @@ fnr = makeMeasure(
   note = "Percentage of misclassified observations in the negative class.",
   fun = function(task, model, pred, feats, extra.args) {
     measureFNR(pred$data$truth, pred$data$response, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureFNR
 #' @rdname measures
@@ -1052,7 +1097,8 @@ ppv = makeMeasure(
       prob = NULL
     }
     measurePPV(pred$data$truth, pred$data$response, pred$task.desc$positive, prob)
-  })
+  }
+)
 
 #' @export measurePPV
 #' @rdname measures
@@ -1081,7 +1127,8 @@ npv = makeMeasure(
   note = "Defined as: tn / (tn + fn).",
   fun = function(task, model, pred, feats, extra.args) {
     measureNPV(pred$data$truth, pred$data$response, pred$task.desc$negative)
-  })
+  }
+)
 
 #' @export measureNPV
 #' @rdname measures
@@ -1100,7 +1147,8 @@ fdr = makeMeasure(
   note = "Defined as: fp / (tp + fp).",
   fun = function(task, model, pred, feats, extra.args) {
     measureFDR(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureFDR
 #' @rdname measures
@@ -1119,7 +1167,8 @@ mcc = makeMeasure(
   note = "Defined as (tp * tn - fp * fn) / sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)), denominator set to 1 if 0",
   fun = function(task, model, pred, feats, extra.args) {
     measureMCC(pred$data$truth, pred$data$response, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureMCC
 #' @rdname measures
@@ -1148,7 +1197,8 @@ f1 = makeMeasure(
   note = "Defined as: 2 * tp/ (sum(truth == positive) + sum(response == positive))",
   fun = function(task, model, pred, feats, extra.args) {
     measureF1(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureF1
 #' @rdname measures
@@ -1168,7 +1218,8 @@ gmean = makeMeasure(
   note = "Geometric mean of recall and specificity.",
   fun = function(task, model, pred, feats, extra.args) {
     measureGMEAN(pred$data$truth, pred$data$response, pred$task.desc$negative, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureGMEAN
 #' @rdname measures
@@ -1191,7 +1242,8 @@ gpr = makeMeasure(
   note = "Defined as: sqrt(ppv * tpr)",
   fun = function(task, model, pred, feats, extra.args) {
     measureGPR(pred$data$truth, pred$data$response, pred$task.desc$positive)
-  })
+  }
+)
 
 #' @export measureGPR
 #' @rdname measures
@@ -1216,7 +1268,8 @@ multilabel.hamloss = makeMeasure(
     measureMultilabelHamloss(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelHamloss
 #' @rdname measures
@@ -1238,7 +1291,8 @@ multilabel.subset01 = makeMeasure(
     measureMultilabelSubset01(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelSubset01
 #' @rdname measures
@@ -1261,7 +1315,8 @@ multilabel.f1 = makeMeasure(
     measureMultilabelF1(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelF1
 #' @rdname measures
@@ -1286,7 +1341,8 @@ multilabel.acc = makeMeasure(
     measureMultilabelACC(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelACC
 #' @rdname measures
@@ -1311,7 +1367,8 @@ multilabel.ppv = makeMeasure(
     measureMultilabelPPV(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelPPV
 #' @rdname measures
@@ -1336,7 +1393,8 @@ multilabel.tpr = makeMeasure(
     measureMultilabelTPR(
       getPredictionTruth.PredictionMultilabel(pred),
       getPredictionResponse.PredictionMultilabel(pred))
-  })
+  }
+)
 
 #' @export measureMultilabelTPR
 #' @rdname measures
@@ -1366,7 +1424,8 @@ cindex = makeMeasure(
     }
     s = getPredictionTruth(pred)
     Hmisc::rcorr.cens(-1 * y, s)[["C Index"]]
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -1470,7 +1529,8 @@ meancosts = makeMeasure(
       costs[id, cl]
     }, ids, classes, SIMPLIFY = TRUE, USE.NAMES = FALSE)
     mean(y)
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -1485,7 +1545,8 @@ mcp = makeMeasure(
     mc = meancosts$fun(task, NULL, pred, NULL, extra.args)
     oc = mean(apply(getTaskCosts(task), 1L, min))
     mc - oc
-  })
+  }
+)
 
 ###############################################################################
 ### clustering ###
@@ -1507,7 +1568,8 @@ db = makeMeasure(
     } else {
       NA
     }
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -1522,7 +1584,8 @@ G1 = makeMeasure(
     requirePackages("clusterSim", default.method = "load")
     r = as.integer(as.factor(pred$data$response))
     clusterSim::index.G1(feats, r)
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -1537,7 +1600,8 @@ G2 = makeMeasure(
     requirePackages("clusterSim", default.method = "load")
     r = as.integer(as.factor(pred$data$response))
     clusterSim::index.G2(clusterSim::dist.GDM(feats), r)
-  })
+  }
+)
 
 #' @export
 #' @format NULL
@@ -1552,4 +1616,5 @@ silhouette = makeMeasure(
     requirePackages("clusterSim", default.method = "load")
     r = as.integer(as.factor(pred$data$response))
     clusterSim::index.S(clusterSim::dist.GDM(feats), r)
-  })
+  }
+)
diff --git a/R/mergeBenchmarkResults.R b/R/mergeBenchmarkResults.R
old mode 100644
new mode 100755
diff --git a/R/mergeSmallFactorLevels.R b/R/mergeSmallFactorLevels.R
old mode 100644
new mode 100755
diff --git a/R/mutateBits.R b/R/mutateBits.R
old mode 100644
new mode 100755
diff --git a/R/normalizeFeatures.R b/R/normalizeFeatures.R
old mode 100644
new mode 100755
diff --git a/R/options.R b/R/options.R
old mode 100644
new mode 100755
diff --git a/R/parallelization.R b/R/parallelization.R
old mode 100644
new mode 100755
diff --git a/R/performance.R b/R/performance.R
old mode 100644
new mode 100755
diff --git a/R/plotBMRBoxplots.R b/R/plotBMRBoxplots.R
old mode 100644
new mode 100755
diff --git a/R/plotBMRRanksAsBarChart.R b/R/plotBMRRanksAsBarChart.R
old mode 100644
new mode 100755
diff --git a/R/plotBMRSummary.R b/R/plotBMRSummary.R
old mode 100644
new mode 100755
diff --git a/R/plotCritDifferences.R b/R/plotCritDifferences.R
old mode 100644
new mode 100755
diff --git a/R/plotLearnerPrediction.R b/R/plotLearnerPrediction.R
old mode 100644
new mode 100755
index 334b2bf..fedac11
--- a/R/plotLearnerPrediction.R
+++ b/R/plotLearnerPrediction.R
@@ -201,7 +201,7 @@ plotLearnerPrediction = function(learner, task, features = NULL, measures, cv =
       # print error points
       p = p + geom_point(data = subset(data, data$.err),
         mapping = aes_string(x = x1n, y = x2n, shape = target), size = err.size, show.legend = FALSE)
-      p = p + guides(alpha = FALSE)
+      p = p + guides(alpha = "none")
     }
   } else if (td$type == "cluster") {
     if (taskdim == 2L) {
@@ -235,7 +235,7 @@ plotLearnerPrediction = function(learner, task, features = NULL, measures, cv =
         size = pointsize, colour = "black", shape = 1)
       # plot point, with circle and interior color for y
       p = p + scale_colour_gradient2(low = bg.cols[1L], mid = bg.cols[2L], high = bg.cols[3L], space = "Lab")
-      p = p + guides(colour = FALSE)
+      p = p + guides(colour = "none")
     }
   }
 
diff --git a/R/plotResiduals.R b/R/plotResiduals.R
old mode 100644
new mode 100755
diff --git a/R/plotTuneMultiCritResult.R b/R/plotTuneMultiCritResult.R
old mode 100644
new mode 100755
diff --git a/R/predict.R b/R/predict.R
old mode 100644
new mode 100755
diff --git a/R/predictLearner.R b/R/predictLearner.R
old mode 100644
new mode 100755
diff --git a/R/relativeOverfitting.R b/R/relativeOverfitting.R
old mode 100644
new mode 100755
diff --git a/R/removeConstantFeatures.R b/R/removeConstantFeatures.R
old mode 100644
new mode 100755
diff --git a/R/removeHyperPars.R b/R/removeHyperPars.R
old mode 100644
new mode 100755
diff --git a/R/resample.R b/R/resample.R
old mode 100644
new mode 100755
diff --git a/R/resample_convenience.R b/R/resample_convenience.R
old mode 100644
new mode 100755
diff --git a/R/selectFeatures.R b/R/selectFeatures.R
index 1b1f6a4..37abe92 100644
--- a/R/selectFeatures.R
+++ b/R/selectFeatures.R
@@ -108,8 +108,8 @@ selectFeatures = function(learner, task, resampling, measures,
   or = sel.func(learner, task, resampling, measures, bit.names,
     bits.to.features2, control, opt.path, show.info)
   if (show.info) {
-    messagef("[FeatSel] Result: %s (%i bits)",
-      clipString(collapse(or$x.bit.names), 30L), length(or$x.bit.names), perfsToString(or$y))
+    suppressWarnings(messagef("[FeatSel] Result: %s (%i bits)",
+      clipString(collapse(or$x.bit.names), 30L), length(or$x.bit.names), perfsToString(or$y)))
   }
   return(or)
 }
diff --git a/R/selectFeaturesExhaustive.R b/R/selectFeaturesExhaustive.R
old mode 100644
new mode 100755
diff --git a/R/selectFeaturesGA.R b/R/selectFeaturesGA.R
old mode 100644
new mode 100755
diff --git a/R/selectFeaturesRandom.R b/R/selectFeaturesRandom.R
old mode 100644
new mode 100755
diff --git a/R/selectFeaturesSequential.R b/R/selectFeaturesSequential.R
old mode 100644
new mode 100755
diff --git a/R/setHyperPars.R b/R/setHyperPars.R
old mode 100644
new mode 100755
diff --git a/R/setId.R b/R/setId.R
old mode 100644
new mode 100755
diff --git a/R/setPredictThreshold.R b/R/setPredictThreshold.R
old mode 100644
new mode 100755
diff --git a/R/setPredictType.R b/R/setPredictType.R
old mode 100644
new mode 100755
diff --git a/R/setThreshold.R b/R/setThreshold.R
old mode 100644
new mode 100755
diff --git a/R/simplifyMeasureNames.R b/R/simplifyMeasureNames.R
old mode 100644
new mode 100755
diff --git a/R/smote.R b/R/smote.R
old mode 100644
new mode 100755
diff --git a/R/summarizeColumns.R b/R/summarizeColumns.R
old mode 100644
new mode 100755
diff --git a/R/summarizeLevels.R b/R/summarizeLevels.R
old mode 100644
new mode 100755
diff --git a/R/train.R b/R/train.R
old mode 100644
new mode 100755
diff --git a/R/trainLearner.R b/R/trainLearner.R
old mode 100644
new mode 100755
diff --git a/R/tuneCMAES.R b/R/tuneCMAES.R
old mode 100644
new mode 100755
diff --git a/R/tuneDesign.R b/R/tuneDesign.R
old mode 100644
new mode 100755
diff --git a/R/tuneGenSA.R b/R/tuneGenSA.R
old mode 100644
new mode 100755
diff --git a/R/tuneGrid.R b/R/tuneGrid.R
old mode 100644
new mode 100755
diff --git a/R/tuneIrace.R b/R/tuneIrace.R
old mode 100644
new mode 100755
diff --git a/R/tuneMBO.R b/R/tuneMBO.R
old mode 100644
new mode 100755
diff --git a/R/tuneMultiCritGrid.R b/R/tuneMultiCritGrid.R
old mode 100644
new mode 100755
diff --git a/R/tuneMultiCritNSGA2.R b/R/tuneMultiCritNSGA2.R
old mode 100644
new mode 100755
diff --git a/R/tuneMultiCritRandom.R b/R/tuneMultiCritRandom.R
old mode 100644
new mode 100755
diff --git a/R/tuneParams.R b/R/tuneParams.R
old mode 100644
new mode 100755
diff --git a/R/tuneParamsMultiCrit.R b/R/tuneParamsMultiCrit.R
old mode 100644
new mode 100755
diff --git a/R/tuneRandom.R b/R/tuneRandom.R
old mode 100644
new mode 100755
diff --git a/R/tuneThreshold.R b/R/tuneThreshold.R
old mode 100644
new mode 100755
diff --git a/R/tunerFitnFun.R b/R/tunerFitnFun.R
old mode 100644
new mode 100755
diff --git a/R/utils.R b/R/utils.R
old mode 100644
new mode 100755
index 64fb168..d68a6d1
--- a/R/utils.R
+++ b/R/utils.R
@@ -48,7 +48,8 @@ getPrediction = function(object, newdata, ...) {
       getPredictionResponse(pred)
     } else {
       getPredictionProbabilities(pred)
-    })
+    }
+  )
 
   if (object$learner$predict.type == "se") {
     cbind("preds" = point, "se" = getPredictionSE(pred))
diff --git a/R/utils_imbalancy.R b/R/utils_imbalancy.R
old mode 100644
new mode 100755
diff --git a/R/utils_opt.R b/R/utils_opt.R
old mode 100644
new mode 100755
diff --git a/R/utils_plot.R b/R/utils_plot.R
old mode 100644
new mode 100755
diff --git a/R/zzz.R b/R/zzz.R
old mode 100644
new mode 100755
index 8c351d4..ef26bc6
--- a/R/zzz.R
+++ b/R/zzz.R
@@ -25,7 +25,7 @@
       July 2019. Future development will only happen in 'mlr3'
       (<https://mlr3.mlr-org.com>). Due to the focus on 'mlr3' there might be uncaught
       bugs meanwhile in {mlr} - please consider switching."),
-      collapse = "\n"))
+    collapse = "\n"))
 }
 
 mlr = new.env(parent = emptyenv())
diff --git a/build/partial.rdb b/build/partial.rdb
index 296745f..8c171e4 100644
Binary files a/build/partial.rdb and b/build/partial.rdb differ
diff --git a/build/vignette.rds b/build/vignette.rds
index 046dd85..5b646cf 100644
Binary files a/build/vignette.rds and b/build/vignette.rds differ
diff --git a/data/agri.task.rda b/data/agri.task.rda
old mode 100644
new mode 100755
diff --git a/data/bc.task.rda b/data/bc.task.rda
old mode 100644
new mode 100755
diff --git a/data/bh.task.rda b/data/bh.task.rda
old mode 100644
new mode 100755
diff --git a/data/costiris.task.rda b/data/costiris.task.rda
old mode 100644
new mode 100755
diff --git a/data/fuelsubset.task.rda b/data/fuelsubset.task.rda
old mode 100644
new mode 100755
diff --git a/data/gunpoint.task.rda b/data/gunpoint.task.rda
old mode 100644
new mode 100755
diff --git a/data/iris.task.rda b/data/iris.task.rda
old mode 100644
new mode 100755
diff --git a/data/lung.task.rda b/data/lung.task.rda
old mode 100644
new mode 100755
diff --git a/data/mtcars.task.rda b/data/mtcars.task.rda
old mode 100644
new mode 100755
diff --git a/data/phoneme.task.rda b/data/phoneme.task.rda
old mode 100644
new mode 100755
diff --git a/data/pid.task.rda b/data/pid.task.rda
old mode 100644
new mode 100755
diff --git a/data/sonar.task.rda b/data/sonar.task.rda
old mode 100644
new mode 100755
diff --git a/data/spam.task.rda b/data/spam.task.rda
old mode 100644
new mode 100755
diff --git a/data/spatial.task.rda b/data/spatial.task.rda
old mode 100644
new mode 100755
diff --git a/data/wpbc.task.rda b/data/wpbc.task.rda
old mode 100644
new mode 100755
diff --git a/data/yeast.task.rda b/data/yeast.task.rda
old mode 100644
new mode 100755
diff --git a/debian/changelog b/debian/changelog
index 60b1508..9de2d00 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,13 @@
-r-cran-mlr (2.19.0+dfsg-2) UNRELEASED; urgency=medium
+r-cran-mlr (2.19.1+dfsg-1) UNRELEASED; urgency=medium
 
+  [ Andreas Tille ]
   * lintian-override
   * Disable reprotest
 
- -- Andreas Tille <tille@debian.org>  Mon, 06 Sep 2021 14:35:58 +0200
+  [ Debian Janitor ]
+  * New upstream release.
+
+ -- Andreas Tille <tille@debian.org>  Wed, 14 Dec 2022 17:38:02 -0000
 
 r-cran-mlr (2.19.0+dfsg-1) unstable; urgency=medium
 
diff --git a/inst/CITATION b/inst/CITATION
old mode 100644
new mode 100755
diff --git a/inst/doc/mlr.Rmd b/inst/doc/mlr.Rmd
old mode 100644
new mode 100755
diff --git a/inst/examples/MultilabelWrapper.R b/inst/examples/MultilabelWrapper.R
index a722065..4c378c5 100644
--- a/inst/examples/MultilabelWrapper.R
+++ b/inst/examples/MultilabelWrapper.R
@@ -12,4 +12,3 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
diff --git a/inst/makeData.R b/inst/makeData.R
index 15b401a..00e2798 100644
--- a/inst/makeData.R
+++ b/inst/makeData.R
@@ -3,7 +3,7 @@ library(BBmisc)
 library(devtools)
 
 
-DATASEED = 7761  # nolint
+DATASEED = 7761 # nolint
 COMPRESSION = "xz" # nolint
 
 # classification
@@ -22,7 +22,7 @@ use_data(sonar.task, overwrite = TRUE, compress = COMPRESSION)
 set.seed(DATASEED)
 data(BreastCancer, package = "mlbench")
 BreastCancer$Id = NULL
-BreastCancer = BreastCancer[complete.cases(BreastCancer), ]  # nolint
+BreastCancer = BreastCancer[complete.cases(BreastCancer), ] # nolint
 bc.task = makeClassifTask("BreastCancer-example", data = BreastCancer, target = "Class")
 use_data(bc.task, overwrite = TRUE, compress = COMPRESSION)
 
@@ -51,7 +51,7 @@ wpbc.task = makeSurvTask("wpbc-example", data = wpbc, target = c("time", "status
 use_data(wpbc.task, overwrite = TRUE, compress = COMPRESSION)
 
 set.seed(DATASEED)
-data(lung, package = "survival")
+data(cancer, package = "survival")
 lung$status = lung$status - 1
 lung = lung[complete.cases(lung), ]
 lung.task = makeSurvTask("lung-example", data = lung, target = c("time", "status"))
@@ -101,7 +101,7 @@ len1 = length(fuelSubset$uvvis.lambda)
 len2 = length(fuelSubset$nir.lambda)
 fdf = list(UVVIS = 1:len1, NIR = (len1 + 1):(len1 + len2))
 fs = data.frame("UVVIS" = fuelSubset$UVVIS, "NIR" = fuelSubset$NIR,
-  "heatan" = fuelSubset$heatan,  "h20" = fuelSubset$h2o)
+  "heatan" = fuelSubset$heatan, "h20" = fuelSubset$h2o)
 fs.fdf = makeFunctionalData(fs, fd.features = fdf)
 fuelsubset.task = makeRegrTask(data = fs.fdf, target = "heatan")
 use_data(fuelsubset.task, overwrite = TRUE, compress = COMPRESSION)
@@ -121,5 +121,5 @@ coords = ecuador[, c("x", "y")]
 ecuador$x = NULL
 ecuador$y = NULL
 spatial.task = makeClassifTask(target = "slides", data = ecuador, coordinates = coords,
-                               positive = "TRUE")
+  positive = "TRUE")
 use_data(spatial.task, overwrite = TRUE, compress = COMPRESSION)
diff --git a/man/Aggregation.Rd b/man/Aggregation.Rd
old mode 100644
new mode 100755
diff --git a/man/BenchmarkResult.Rd b/man/BenchmarkResult.Rd
old mode 100644
new mode 100755
diff --git a/man/ClassifTask.Rd b/man/ClassifTask.Rd
old mode 100644
new mode 100755
diff --git a/man/ClusterTask.Rd b/man/ClusterTask.Rd
old mode 100644
new mode 100755
diff --git a/man/ConfusionMatrix.Rd b/man/ConfusionMatrix.Rd
old mode 100644
new mode 100755
diff --git a/man/CostSensTask.Rd b/man/CostSensTask.Rd
old mode 100644
new mode 100755
diff --git a/man/FailureModel.Rd b/man/FailureModel.Rd
old mode 100644
new mode 100755
diff --git a/man/FeatSelControl.Rd b/man/FeatSelControl.Rd
old mode 100644
new mode 100755
diff --git a/man/FeatSelResult.Rd b/man/FeatSelResult.Rd
old mode 100644
new mode 100755
diff --git a/man/LearnerProperties.Rd b/man/LearnerProperties.Rd
old mode 100644
new mode 100755
diff --git a/man/MeasureProperties.Rd b/man/MeasureProperties.Rd
old mode 100644
new mode 100755
diff --git a/man/MultilabelTask.Rd b/man/MultilabelTask.Rd
old mode 100644
new mode 100755
diff --git a/man/Prediction.Rd b/man/Prediction.Rd
old mode 100644
new mode 100755
diff --git a/man/RLearner.Rd b/man/RLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/RegrTask.Rd b/man/RegrTask.Rd
old mode 100644
new mode 100755
diff --git a/man/ResamplePrediction.Rd b/man/ResamplePrediction.Rd
old mode 100644
new mode 100755
diff --git a/man/ResampleResult.Rd b/man/ResampleResult.Rd
old mode 100644
new mode 100755
diff --git a/man/SurvTask.Rd b/man/SurvTask.Rd
old mode 100644
new mode 100755
diff --git a/man/Task.Rd b/man/Task.Rd
old mode 100644
new mode 100755
diff --git a/man/TaskDesc.Rd b/man/TaskDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/TuneControl.Rd b/man/TuneControl.Rd
old mode 100644
new mode 100755
diff --git a/man/TuneMultiCritResult.Rd b/man/TuneMultiCritResult.Rd
old mode 100644
new mode 100755
diff --git a/man/TuneResult.Rd b/man/TuneResult.Rd
old mode 100644
new mode 100755
diff --git a/man/addRRMeasure.Rd b/man/addRRMeasure.Rd
old mode 100644
new mode 100755
diff --git a/man/aggregations.Rd b/man/aggregations.Rd
old mode 100644
new mode 100755
diff --git a/man/agri.task.Rd b/man/agri.task.Rd
old mode 100644
new mode 100755
diff --git a/man/analyzeFeatSelResult.Rd b/man/analyzeFeatSelResult.Rd
old mode 100644
new mode 100755
diff --git a/man/asROCRPrediction.Rd b/man/asROCRPrediction.Rd
old mode 100644
new mode 100755
diff --git a/man/bc.task.Rd b/man/bc.task.Rd
old mode 100644
new mode 100755
diff --git a/man/benchmark.Rd b/man/benchmark.Rd
old mode 100644
new mode 100755
diff --git a/man/bh.task.Rd b/man/bh.task.Rd
old mode 100644
new mode 100755
diff --git a/man/cache_helpers.Rd b/man/cache_helpers.Rd
old mode 100644
new mode 100755
diff --git a/man/calculateConfusionMatrix.Rd b/man/calculateConfusionMatrix.Rd
old mode 100644
new mode 100755
index 94374ef..06c55e3
--- a/man/calculateConfusionMatrix.Rd
+++ b/man/calculateConfusionMatrix.Rd
@@ -62,11 +62,11 @@ All predictions on all test sets are joined to a vector yhat, as are all labels
 joined to a vector y. Then yhat is simply tabulated vs. y, as if both were computed on
 a single test set. This probably mainly makes sense when cross-validation is used for resampling.
 }
-\section{Methods (by generic)}{
+\section{Functions}{
 \itemize{
-\item \code{print}: 
-}}
+\item \code{print(ConfusionMatrix)}: 
 
+}}
 \examples{
 # get confusion matrix after simple manual prediction
 allinds = 1:150
diff --git a/man/calculateROCMeasures.Rd b/man/calculateROCMeasures.Rd
old mode 100644
new mode 100755
index 27d5897..812ee5e
--- a/man/calculateROCMeasures.Rd
+++ b/man/calculateROCMeasures.Rd
@@ -53,11 +53,11 @@ For details on the used measures see \link{measures} and also
 The element for the false omission rate in the resulting object is not called \code{for} but
 \code{fomr} since \code{for} should never be used as a variable name in an object.
 }
-\section{Methods (by generic)}{
+\section{Functions}{
 \itemize{
-\item \code{print}: 
-}}
+\item \code{print(ROCMeasures)}: 
 
+}}
 \examples{
 lrn = makeLearner("classif.rpart", predict.type = "prob")
 fit = train(lrn, sonar.task)
diff --git a/man/capLargeValues.Rd b/man/capLargeValues.Rd
old mode 100644
new mode 100755
diff --git a/man/changeData.Rd b/man/changeData.Rd
old mode 100644
new mode 100755
diff --git a/man/checkLearner.Rd b/man/checkLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/checkPredictLearnerOutput.Rd b/man/checkPredictLearnerOutput.Rd
old mode 100644
new mode 100755
diff --git a/man/configureMlr.Rd b/man/configureMlr.Rd
old mode 100644
new mode 100755
diff --git a/man/convertBMRToRankMatrix.Rd b/man/convertBMRToRankMatrix.Rd
old mode 100644
new mode 100755
diff --git a/man/convertMLBenchObjToTask.Rd b/man/convertMLBenchObjToTask.Rd
old mode 100644
new mode 100755
diff --git a/man/costiris.task.Rd b/man/costiris.task.Rd
old mode 100644
new mode 100755
diff --git a/man/createDummyFeatures.Rd b/man/createDummyFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/createSpatialResamplingPlots.Rd b/man/createSpatialResamplingPlots.Rd
old mode 100644
new mode 100755
diff --git a/man/crossover.Rd b/man/crossover.Rd
old mode 100644
new mode 100755
diff --git a/man/downsample.Rd b/man/downsample.Rd
old mode 100644
new mode 100755
diff --git a/man/dropFeatures.Rd b/man/dropFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/estimateRelativeOverfitting.Rd b/man/estimateRelativeOverfitting.Rd
old mode 100644
new mode 100755
diff --git a/man/estimateResidualVariance.Rd b/man/estimateResidualVariance.Rd
old mode 100644
new mode 100755
diff --git a/man/extractFDAFeatures.Rd b/man/extractFDAFeatures.Rd
old mode 100644
new mode 100755
index b043bc4..bddf206
--- a/man/extractFDAFeatures.Rd
+++ b/man/extractFDAFeatures.Rd
@@ -12,7 +12,7 @@ Task or data.frame to extract functional features from.
 Must contain functional features as matrix columns.}
 
 \item{target}{(\code{character(1)})\cr
-Task target column. Only neccessary for data.frames
+Task target column. Only necessary for data.frames
 Default is \code{character(0)}.}
 
 \item{feat.methods}{(named \link{list})\cr
@@ -30,8 +30,10 @@ Further hyperparameters passed on to the \code{feat.methods} specified above.}
 }
 \value{
 (\link{list})
-\item{data|task (\link{data.frame} | \link{Task})}{Extracted features, same type as obj.}
-\item{desc (\code{extracFDAFeatDesc})}{Description object. See description for details.}
+\itemize{
+\item data | task (\link{data.frame} | \link{Task}): Extracted features, same type as obj.
+\item desc (\code{extracFDAFeatDesc}): Description object. See description for details.
+}
 }
 \description{
 Extract non-functional features from functional features using various methods.
@@ -47,10 +49,10 @@ re-extraction during the predict-phase is returned. This can be used with
 \details{
 The description object contains these slots:
 \itemize{
-\item target \code{\link{character}}: See argument.
-\item coln \code{\link{character}}: Colum names of data.
-\item fd.cols \code{\link{character}}: Functional feature names.
-\item extractFDAFeat \code{\link{list}}: Contains \code{feature.methods} and relevant
+\item target (\code{character}): See argument.
+\item coln (\code{character}): Colum names of data.
+\item fd.cols (\code{character}): Functional feature names.
+\item extractFDAFeat (\code{list}): Contains \code{feature.methods} and relevant
 parameters for reextraction.
 }
 }
diff --git a/man/filterFeatures.Rd b/man/filterFeatures.Rd
index 08d5bb0..ef9dac1 100644
--- a/man/filterFeatures.Rd
+++ b/man/filterFeatures.Rd
@@ -6,7 +6,7 @@
 \usage{
 filterFeatures(
   task,
-  method = "randomForestSRC_importance",
+  method = "FSelectorRcpp_information.gain",
   fval = NULL,
   perc = NULL,
   abs = NULL,
@@ -26,7 +26,7 @@ The task.}
 
 \item{method}{(\code{character(1)})\cr
 See \link{listFilterMethods}.
-Default is \dQuote{randomForestSRC_importance}.}
+Default is \dQuote{FSelectorRcpp_information.gain}.}
 
 \item{fval}{(\link{FilterValues})\cr
 Result of \link{generateFilterValuesData}.
diff --git a/man/friedmanPostHocTestBMR.Rd b/man/friedmanPostHocTestBMR.Rd
old mode 100644
new mode 100755
diff --git a/man/friedmanTestBMR.Rd b/man/friedmanTestBMR.Rd
old mode 100644
new mode 100755
diff --git a/man/generateCalibrationData.Rd b/man/generateCalibrationData.Rd
old mode 100644
new mode 100755
diff --git a/man/generateCritDifferencesData.Rd b/man/generateCritDifferencesData.Rd
old mode 100644
new mode 100755
diff --git a/man/generateFeatureImportanceData.Rd b/man/generateFeatureImportanceData.Rd
old mode 100644
new mode 100755
diff --git a/man/generateFilterValuesData.Rd b/man/generateFilterValuesData.Rd
index a1b8629..3385380 100644
--- a/man/generateFilterValuesData.Rd
+++ b/man/generateFilterValuesData.Rd
@@ -7,7 +7,7 @@
 \usage{
 generateFilterValuesData(
   task,
-  method = "randomForestSRC_importance",
+  method = "FSelectorRcpp_information.gain",
   nselect = getTaskNFeats(task),
   ...,
   more.args = list()
@@ -21,7 +21,7 @@ The task.}
 Filter method(s).
 In case of ensemble filters the \code{list} notation needs to be used.
 See the examples for more information.
-Default is \dQuote{randomForestSRC_importance}.}
+Default is \dQuote{FSelectorRcpp_information.gain}.}
 
 \item{nselect}{(\code{integer(1)})\cr
 Number of scores to request. Scores are getting calculated for all features
diff --git a/man/generateHyperParsEffectData.Rd b/man/generateHyperParsEffectData.Rd
old mode 100644
new mode 100755
diff --git a/man/generateLearningCurveData.Rd b/man/generateLearningCurveData.Rd
old mode 100644
new mode 100755
diff --git a/man/generatePartialDependenceData.Rd b/man/generatePartialDependenceData.Rd
old mode 100644
new mode 100755
diff --git a/man/generateThreshVsPerfData.Rd b/man/generateThreshVsPerfData.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRAggrPerformances.Rd b/man/getBMRAggrPerformances.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRFeatSelResults.Rd b/man/getBMRFeatSelResults.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRFilteredFeatures.Rd b/man/getBMRFilteredFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRLearnerIds.Rd b/man/getBMRLearnerIds.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRLearnerShortNames.Rd b/man/getBMRLearnerShortNames.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRLearners.Rd b/man/getBMRLearners.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRMeasureIds.Rd b/man/getBMRMeasureIds.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRMeasures.Rd b/man/getBMRMeasures.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRModels.Rd b/man/getBMRModels.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRPerformances.Rd b/man/getBMRPerformances.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRPredictions.Rd b/man/getBMRPredictions.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRTaskDescriptions.Rd b/man/getBMRTaskDescriptions.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRTaskDescs.Rd b/man/getBMRTaskDescs.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRTaskIds.Rd b/man/getBMRTaskIds.Rd
old mode 100644
new mode 100755
diff --git a/man/getBMRTuneResults.Rd b/man/getBMRTuneResults.Rd
old mode 100644
new mode 100755
diff --git a/man/getCaretParamSet.Rd b/man/getCaretParamSet.Rd
old mode 100644
new mode 100755
diff --git a/man/getClassWeightParam.Rd b/man/getClassWeightParam.Rd
old mode 100644
new mode 100755
diff --git a/man/getConfMatrix.Rd b/man/getConfMatrix.Rd
old mode 100644
new mode 100755
diff --git a/man/getDefaultMeasure.Rd b/man/getDefaultMeasure.Rd
old mode 100644
new mode 100755
diff --git a/man/getFailureModelDump.Rd b/man/getFailureModelDump.Rd
old mode 100644
new mode 100755
diff --git a/man/getFailureModelMsg.Rd b/man/getFailureModelMsg.Rd
old mode 100644
new mode 100755
diff --git a/man/getFeatSelResult.Rd b/man/getFeatSelResult.Rd
old mode 100644
new mode 100755
diff --git a/man/getFeatureImportance.Rd b/man/getFeatureImportance.Rd
index 0d6f632..47936b8 100644
--- a/man/getFeatureImportance.Rd
+++ b/man/getFeatureImportance.Rd
@@ -51,10 +51,6 @@ feature importance values.
 See \code{\link[randomForest:importance]{randomForest::importance()}} for details.
 \item RRF \cr
 This is identical to randomForest.
-\item randomForestSRC \cr
-This method can calculate feature importance for various measures. By
-default the Breiman-Cutler permutation method is used. See
-\code{\link[randomForestSRC:vimp.rfsrc]{randomForestSRC::vimp()}} for details.
 \item ranger \cr
 Supports both measures mentioned above for the randomForest
 learner. Note, that you need to specifically set the learners parameter
diff --git a/man/getFeatureImportanceLearner.Rd b/man/getFeatureImportanceLearner.Rd
index 7f5c23c..fdadf98 100644
--- a/man/getFeatureImportanceLearner.Rd
+++ b/man/getFeatureImportanceLearner.Rd
@@ -1,13 +1,9 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/RLearner_regr_randomForestSRC.R,
-%   R/getFeatureImportance.R
-\name{getFeatureImportanceLearner.regr.randomForestSRC}
-\alias{getFeatureImportanceLearner.regr.randomForestSRC}
+% Please edit documentation in R/getFeatureImportance.R
+\name{getFeatureImportanceLearner}
 \alias{getFeatureImportanceLearner}
 \title{Calculates feature importance values for a given learner.}
 \usage{
-\method{getFeatureImportanceLearner}{regr.randomForestSRC}(.learner, .model, ...)
-
 getFeatureImportanceLearner(.learner, .model, ...)
 }
 \arguments{
diff --git a/man/getFilteredFeatures.Rd b/man/getFilteredFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/getFunctionalFeatures.Rd b/man/getFunctionalFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/getHomogeneousEnsembleModels.Rd b/man/getHomogeneousEnsembleModels.Rd
old mode 100644
new mode 100755
diff --git a/man/getHyperPars.Rd b/man/getHyperPars.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerId.Rd b/man/getLearnerId.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerModel.Rd b/man/getLearnerModel.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerNote.Rd b/man/getLearnerNote.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerPackages.Rd b/man/getLearnerPackages.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerParVals.Rd b/man/getLearnerParVals.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerParamSet.Rd b/man/getLearnerParamSet.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerPredictType.Rd b/man/getLearnerPredictType.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerShortName.Rd b/man/getLearnerShortName.Rd
old mode 100644
new mode 100755
diff --git a/man/getLearnerType.Rd b/man/getLearnerType.Rd
old mode 100644
new mode 100755
diff --git a/man/getMlrOptions.Rd b/man/getMlrOptions.Rd
old mode 100644
new mode 100755
diff --git a/man/getMultilabelBinaryPerformances.Rd b/man/getMultilabelBinaryPerformances.Rd
old mode 100644
new mode 100755
diff --git a/man/getNestedTuneResultsOptPathDf.Rd b/man/getNestedTuneResultsOptPathDf.Rd
old mode 100644
new mode 100755
diff --git a/man/getNestedTuneResultsX.Rd b/man/getNestedTuneResultsX.Rd
old mode 100644
new mode 100755
diff --git a/man/getOOBPreds.Rd b/man/getOOBPreds.Rd
old mode 100644
new mode 100755
diff --git a/man/getOOBPredsLearner.Rd b/man/getOOBPredsLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/getParamSet.Rd b/man/getParamSet.Rd
old mode 100644
new mode 100755
diff --git a/man/getPredictionDump.Rd b/man/getPredictionDump.Rd
old mode 100644
new mode 100755
diff --git a/man/getPredictionProbabilities.Rd b/man/getPredictionProbabilities.Rd
old mode 100644
new mode 100755
diff --git a/man/getPredictionResponse.Rd b/man/getPredictionResponse.Rd
old mode 100644
new mode 100755
diff --git a/man/getPredictionTaskDesc.Rd b/man/getPredictionTaskDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/getProbabilities.Rd b/man/getProbabilities.Rd
old mode 100644
new mode 100755
diff --git a/man/getRRDump.Rd b/man/getRRDump.Rd
old mode 100644
new mode 100755
diff --git a/man/getRRPredictionList.Rd b/man/getRRPredictionList.Rd
old mode 100644
new mode 100755
diff --git a/man/getRRPredictions.Rd b/man/getRRPredictions.Rd
old mode 100644
new mode 100755
diff --git a/man/getRRTaskDesc.Rd b/man/getRRTaskDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/getRRTaskDescription.Rd b/man/getRRTaskDescription.Rd
old mode 100644
new mode 100755
diff --git a/man/getResamplingIndices.Rd b/man/getResamplingIndices.Rd
old mode 100644
new mode 100755
diff --git a/man/getStackedBaseLearnerPredictions.Rd b/man/getStackedBaseLearnerPredictions.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskClassLevels.Rd b/man/getTaskClassLevels.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskCosts.Rd b/man/getTaskCosts.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskData.Rd b/man/getTaskData.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskDesc.Rd b/man/getTaskDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskDescription.Rd b/man/getTaskDescription.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskFeatureNames.Rd b/man/getTaskFeatureNames.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskFormula.Rd b/man/getTaskFormula.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskId.Rd b/man/getTaskId.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskNFeats.Rd b/man/getTaskNFeats.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskSize.Rd b/man/getTaskSize.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskTargetNames.Rd b/man/getTaskTargetNames.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskTargets.Rd b/man/getTaskTargets.Rd
old mode 100644
new mode 100755
diff --git a/man/getTaskType.Rd b/man/getTaskType.Rd
old mode 100644
new mode 100755
diff --git a/man/getTuneResult.Rd b/man/getTuneResult.Rd
old mode 100644
new mode 100755
diff --git a/man/getTuneResultOptPath.Rd b/man/getTuneResultOptPath.Rd
old mode 100644
new mode 100755
diff --git a/man/gunpoint.task.Rd b/man/gunpoint.task.Rd
old mode 100644
new mode 100755
diff --git a/man/hasFunctionalFeatures.Rd b/man/hasFunctionalFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/hasProperties.Rd b/man/hasProperties.Rd
old mode 100644
new mode 100755
diff --git a/man/helpLearner.Rd b/man/helpLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/helpLearnerParam.Rd b/man/helpLearnerParam.Rd
old mode 100644
new mode 100755
diff --git a/man/imputations.Rd b/man/imputations.Rd
old mode 100644
new mode 100755
diff --git a/man/impute.Rd b/man/impute.Rd
old mode 100644
new mode 100755
index 5cf1488..e904f39
--- a/man/impute.Rd
+++ b/man/impute.Rd
@@ -67,8 +67,10 @@ Default is \code{TRUE}.}
 }
 \value{
 (\link{list})
-\item{data (\link{data.frame})}{Imputed data.}
-\item{desc (\code{ImputationDesc})}{Description object.}
+\itemize{
+\item data (\link{data.frame}): Imputed data.
+\item desc (\code{ImputationDesc}): Description object.
+}
 }
 \description{
 Allows imputation of missing feature values through various techniques.
@@ -90,16 +92,15 @@ under \link{imputations} or create one yourself using \link{makeImputeMethod}.
 }
 \details{
 The description object contains these slots
-\describe{
-\item{target (\link{character})}{See argument.}
-\item{features (\link{character})}{Feature names (column names of \code{data}).},
-\item{classes (\link{character})}{Feature classes (storage type of \code{data}).}
-\item{lvls (named \link{list})}{Mapping of column names of factor features to their levels,
-including newly created ones during imputation.}
-\item{impute (named \link{list})}{Mapping of column names to imputation functions.}
-\item{dummies (named \link{list})}{Mapping of column names to imputation functions.}
-\item{impute.new.levels (\code{logical(1)})}{See argument.}
-\item{recode.factor.levels (\code{logical(1)})}{See argument.}
+\itemize{
+\item target (\link{character}): See argument
+\item features (\link{character}): Feature names (column names of \code{data})
+\item classes (\link{character}): Feature classes (storage type of \code{data})
+\item lvls (named \link{list}): Mapping of column names of factor features to their levels, including newly created ones during imputation
+\item impute (named \link{list}): Mapping of column names to imputation functions
+\item dummies (named \link{list}): Mapping of column names to imputation functions
+\item impute.new.levels (\code{logical(1)}): See argument
+\item recode.factor.levels (\code{logical(1)}): See argument
 }
 }
 \examples{
diff --git a/man/iris.task.Rd b/man/iris.task.Rd
old mode 100644
new mode 100755
diff --git a/man/isFailureModel.Rd b/man/isFailureModel.Rd
old mode 100644
new mode 100755
diff --git a/man/joinClassLevels.Rd b/man/joinClassLevels.Rd
old mode 100644
new mode 100755
diff --git a/man/learnerArgsToControl.Rd b/man/learnerArgsToControl.Rd
old mode 100644
new mode 100755
diff --git a/man/learners.Rd b/man/learners.Rd
old mode 100644
new mode 100755
diff --git a/man/listFilterEnsembleMethods.Rd b/man/listFilterEnsembleMethods.Rd
old mode 100644
new mode 100755
diff --git a/man/listFilterMethods.Rd b/man/listFilterMethods.Rd
old mode 100644
new mode 100755
diff --git a/man/listLearnerProperties.Rd b/man/listLearnerProperties.Rd
old mode 100644
new mode 100755
diff --git a/man/listLearners.Rd b/man/listLearners.Rd
old mode 100644
new mode 100755
diff --git a/man/listMeasureProperties.Rd b/man/listMeasureProperties.Rd
old mode 100644
new mode 100755
diff --git a/man/listMeasures.Rd b/man/listMeasures.Rd
old mode 100644
new mode 100755
diff --git a/man/listTaskTypes.Rd b/man/listTaskTypes.Rd
old mode 100644
new mode 100755
diff --git a/man/lung.task.Rd b/man/lung.task.Rd
old mode 100644
new mode 100755
diff --git a/man/makeAggregation.Rd b/man/makeAggregation.Rd
old mode 100644
new mode 100755
diff --git a/man/makeBaggingWrapper.Rd b/man/makeBaggingWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeBaseWrapper.Rd b/man/makeBaseWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeChainModel.Rd b/man/makeChainModel.Rd
old mode 100644
new mode 100755
diff --git a/man/makeClassificationViaRegressionWrapper.Rd b/man/makeClassificationViaRegressionWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeConstantClassWrapper.Rd b/man/makeConstantClassWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeCostMeasure.Rd b/man/makeCostMeasure.Rd
old mode 100644
new mode 100755
diff --git a/man/makeCostSensClassifWrapper.Rd b/man/makeCostSensClassifWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeCostSensRegrWrapper.Rd b/man/makeCostSensRegrWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeCostSensWeightedPairsWrapper.Rd b/man/makeCostSensWeightedPairsWrapper.Rd
old mode 100644
new mode 100755
index a032f56..2abb0b7
--- a/man/makeCostSensWeightedPairsWrapper.Rd
+++ b/man/makeCostSensWeightedPairsWrapper.Rd
@@ -36,7 +36,7 @@ Reduction from Cost-sensitive Multiclass Classification to
 One-versus-one Binary Classification.
 In: Proceedings of the Sixth Asian Conference on Machine Learning.
 JMLR Workshop and Conference Proceedings, vol 39, pp. 371-386. JMLR W&CP (2014).
-\url{https://www.jmlr.org/proceedings/papers/v39/lin14.pdf}
+\url{https://proceedings.mlr.press/v39/lin14.pdf}
 }
 \seealso{
 Other costsens: 
diff --git a/man/makeCustomResampledMeasure.Rd b/man/makeCustomResampledMeasure.Rd
old mode 100644
new mode 100755
diff --git a/man/makeDownsampleWrapper.Rd b/man/makeDownsampleWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeDummyFeaturesWrapper.Rd b/man/makeDummyFeaturesWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeExtractFDAFeatMethod.Rd b/man/makeExtractFDAFeatMethod.Rd
old mode 100644
new mode 100755
diff --git a/man/makeExtractFDAFeatsWrapper.Rd b/man/makeExtractFDAFeatsWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeFeatSelWrapper.Rd b/man/makeFeatSelWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeFilter.Rd b/man/makeFilter.Rd
old mode 100644
new mode 100755
diff --git a/man/makeFilterEnsemble.Rd b/man/makeFilterEnsemble.Rd
old mode 100644
new mode 100755
diff --git a/man/makeFilterWrapper.Rd b/man/makeFilterWrapper.Rd
index 6e506d1..a7462cf 100644
--- a/man/makeFilterWrapper.Rd
+++ b/man/makeFilterWrapper.Rd
@@ -6,7 +6,7 @@
 \usage{
 makeFilterWrapper(
   learner,
-  fw.method = "randomForestSRC_importance",
+  fw.method = "FSelectorRcpp_information.gain",
   fw.base.methods = NULL,
   fw.perc = NULL,
   fw.abs = NULL,
@@ -25,7 +25,7 @@ If you pass a string the learner will be created via \link{makeLearner}.}
 
 \item{fw.method}{(\code{character(1)})\cr
 Filter method. See \link{listFilterMethods}.
-Default is \dQuote{randomForestSRC_importance}.}
+Default is \dQuote{FSelectorRcpp_information.gain}.}
 
 \item{fw.base.methods}{(\code{character(1)})\cr
 Simple Filter methods for ensemble filters. See \link{listFilterMethods}. Can
@@ -135,7 +135,7 @@ biggest_gap = function(values, diff) {
 }
 
 lrn = makeLearner("classif.lda")
-lrn = makeFilterWrapper(lrn, fw.method = "randomForestSRC_importance",
+lrn = makeFilterWrapper(lrn, fw.method = "FSelectorRcpp_information.gain",
   fw.fun = biggest_gap, fw.fun.args = list("diff" = 1))
 r = resample(lrn, task, outer, extract = function(model) {
   getFilteredFeatures(model)
diff --git a/man/makeFixedHoldoutInstance.Rd b/man/makeFixedHoldoutInstance.Rd
old mode 100644
new mode 100755
diff --git a/man/makeFunctionalData.Rd b/man/makeFunctionalData.Rd
old mode 100644
new mode 100755
diff --git a/man/makeImputeMethod.Rd b/man/makeImputeMethod.Rd
old mode 100644
new mode 100755
diff --git a/man/makeImputeWrapper.Rd b/man/makeImputeWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeLearner.Rd b/man/makeLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/makeLearners.Rd b/man/makeLearners.Rd
old mode 100644
new mode 100755
diff --git a/man/makeMeasure.Rd b/man/makeMeasure.Rd
old mode 100644
new mode 100755
diff --git a/man/makeModelMultiplexer.Rd b/man/makeModelMultiplexer.Rd
old mode 100644
new mode 100755
diff --git a/man/makeModelMultiplexerParamSet.Rd b/man/makeModelMultiplexerParamSet.Rd
old mode 100644
new mode 100755
diff --git a/man/makeMulticlassWrapper.Rd b/man/makeMulticlassWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeMultilabelBinaryRelevanceWrapper.Rd b/man/makeMultilabelBinaryRelevanceWrapper.Rd
index a810bc4..cf20532 100644
--- a/man/makeMultilabelBinaryRelevanceWrapper.Rd
+++ b/man/makeMultilabelBinaryRelevanceWrapper.Rd
@@ -44,7 +44,6 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
 }
 \references{
 Tsoumakas, G., & Katakis, I. (2006)
diff --git a/man/makeMultilabelClassifierChainsWrapper.Rd b/man/makeMultilabelClassifierChainsWrapper.Rd
index 07ea78e..967cad1 100644
--- a/man/makeMultilabelClassifierChainsWrapper.Rd
+++ b/man/makeMultilabelClassifierChainsWrapper.Rd
@@ -44,7 +44,6 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
 }
 \references{
 Montanes, E. et al. (2013)
diff --git a/man/makeMultilabelDBRWrapper.Rd b/man/makeMultilabelDBRWrapper.Rd
index f63ebde..39558f4 100644
--- a/man/makeMultilabelDBRWrapper.Rd
+++ b/man/makeMultilabelDBRWrapper.Rd
@@ -39,7 +39,6 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
 }
 \references{
 Montanes, E. et al. (2013)
diff --git a/man/makeMultilabelNestedStackingWrapper.Rd b/man/makeMultilabelNestedStackingWrapper.Rd
index c6ca8ea..f901330 100644
--- a/man/makeMultilabelNestedStackingWrapper.Rd
+++ b/man/makeMultilabelNestedStackingWrapper.Rd
@@ -48,7 +48,6 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
 }
 \references{
 Montanes, E. et al. (2013),
diff --git a/man/makeMultilabelStackingWrapper.Rd b/man/makeMultilabelStackingWrapper.Rd
index d0096b3..5339576 100644
--- a/man/makeMultilabelStackingWrapper.Rd
+++ b/man/makeMultilabelStackingWrapper.Rd
@@ -41,7 +41,6 @@ performance(pred, measure = list(multilabel.hamloss, multilabel.subset01, multil
 # the next call basically has the same structure for any multilabel meta wrapper
 getMultilabelBinaryPerformances(pred, measures = list(mmce, auc))
 # above works also with predictions from resample!
-
 }
 \references{
 Montanes, E. et al. (2013)
diff --git a/man/makeOverBaggingWrapper.Rd b/man/makeOverBaggingWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makePreprocWrapper.Rd b/man/makePreprocWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makePreprocWrapperCaret.Rd b/man/makePreprocWrapperCaret.Rd
old mode 100644
new mode 100755
diff --git a/man/makeRLearner.classif.fdausc.glm.Rd b/man/makeRLearner.classif.fdausc.glm.Rd
old mode 100644
new mode 100755
diff --git a/man/makeRLearner.classif.fdausc.kernel.Rd b/man/makeRLearner.classif.fdausc.kernel.Rd
old mode 100644
new mode 100755
diff --git a/man/makeRLearner.classif.fdausc.np.Rd b/man/makeRLearner.classif.fdausc.np.Rd
old mode 100644
new mode 100755
diff --git a/man/makeRemoveConstantFeaturesWrapper.Rd b/man/makeRemoveConstantFeaturesWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeResampleDesc.Rd b/man/makeResampleDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/makeResampleInstance.Rd b/man/makeResampleInstance.Rd
old mode 100644
new mode 100755
diff --git a/man/makeSMOTEWrapper.Rd b/man/makeSMOTEWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeStackedLearner.Rd b/man/makeStackedLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTaskDesc.Rd b/man/makeTaskDesc.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTaskDescInternal.Rd b/man/makeTaskDescInternal.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlCMAES.Rd b/man/makeTuneControlCMAES.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlDesign.Rd b/man/makeTuneControlDesign.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlGenSA.Rd b/man/makeTuneControlGenSA.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlGrid.Rd b/man/makeTuneControlGrid.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlIrace.Rd b/man/makeTuneControlIrace.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneControlRandom.Rd b/man/makeTuneControlRandom.Rd
old mode 100644
new mode 100755
diff --git a/man/makeTuneWrapper.Rd b/man/makeTuneWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeUndersampleWrapper.Rd b/man/makeUndersampleWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeWeightedClassesWrapper.Rd b/man/makeWeightedClassesWrapper.Rd
old mode 100644
new mode 100755
diff --git a/man/makeWrappedModel.Rd b/man/makeWrappedModel.Rd
old mode 100644
new mode 100755
diff --git a/man/measures.Rd b/man/measures.Rd
old mode 100644
new mode 100755
diff --git a/man/mergeBenchmarkResults.Rd b/man/mergeBenchmarkResults.Rd
old mode 100644
new mode 100755
diff --git a/man/mergeSmallFactorLevels.Rd b/man/mergeSmallFactorLevels.Rd
old mode 100644
new mode 100755
diff --git a/man/mlr-package.Rd b/man/mlr-package.Rd
index 3f94646..42e8d5c 100644
--- a/man/mlr-package.Rd
+++ b/man/mlr-package.Rd
@@ -6,19 +6,9 @@
 \alias{mlr-package}
 \title{mlr: Machine Learning in R}
 \description{
-\if{html}{\figure{logo.png}{options: align='right' alt='logo' width='120'}}
+\if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}}
 
-Interface to a large number of classification and
-    regression techniques, including machine-readable parameter
-    descriptions. There is also an experimental extension for survival
-    analysis, clustering and general, example-specific cost-sensitive
-    learning. Generic resampling, including cross-validation,
-    bootstrapping and subsampling.  Hyperparameter tuning with modern
-    optimization techniques, for single- and multi-objective problems.
-    Filter and wrapper methods for feature selection. Extension of basic
-    learners with additional operations common in machine learning, also
-    allowing for easy nested resampling.  Most operations can be
-    parallelized.
+Interface to a large number of classification and regression techniques, including machine-readable parameter descriptions. There is also an experimental extension for survival analysis, clustering and general, example-specific cost-sensitive learning. Generic resampling, including cross-validation, bootstrapping and subsampling. Hyperparameter tuning with modern optimization techniques, for single- and multi-objective problems. Filter and wrapper methods for feature selection. Extension of basic learners with additional operations common in machine learning, also allowing for easy nested resampling. Most operations can be parallelized.
 }
 \seealso{
 Useful links:
diff --git a/man/mlrFamilies.Rd b/man/mlrFamilies.Rd
old mode 100644
new mode 100755
diff --git a/man/mtcars.task.Rd b/man/mtcars.task.Rd
old mode 100644
new mode 100755
diff --git a/man/normalizeFeatures.Rd b/man/normalizeFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/oversample.Rd b/man/oversample.Rd
old mode 100644
new mode 100755
diff --git a/man/parallelization.Rd b/man/parallelization.Rd
old mode 100644
new mode 100755
diff --git a/man/performance.Rd b/man/performance.Rd
old mode 100644
new mode 100755
diff --git a/man/phoneme.task.Rd b/man/phoneme.task.Rd
old mode 100644
new mode 100755
diff --git a/man/pid.task.Rd b/man/pid.task.Rd
old mode 100644
new mode 100755
diff --git a/man/plotBMRBoxplots.Rd b/man/plotBMRBoxplots.Rd
old mode 100644
new mode 100755
diff --git a/man/plotBMRRanksAsBarChart.Rd b/man/plotBMRRanksAsBarChart.Rd
old mode 100644
new mode 100755
diff --git a/man/plotBMRSummary.Rd b/man/plotBMRSummary.Rd
old mode 100644
new mode 100755
diff --git a/man/plotCalibration.Rd b/man/plotCalibration.Rd
old mode 100644
new mode 100755
diff --git a/man/plotCritDifferences.Rd b/man/plotCritDifferences.Rd
old mode 100644
new mode 100755
diff --git a/man/plotFilterValues.Rd b/man/plotFilterValues.Rd
old mode 100644
new mode 100755
diff --git a/man/plotHyperParsEffect.Rd b/man/plotHyperParsEffect.Rd
old mode 100644
new mode 100755
diff --git a/man/plotLearnerPrediction.Rd b/man/plotLearnerPrediction.Rd
old mode 100644
new mode 100755
diff --git a/man/plotLearningCurve.Rd b/man/plotLearningCurve.Rd
old mode 100644
new mode 100755
diff --git a/man/plotPartialDependence.Rd b/man/plotPartialDependence.Rd
old mode 100644
new mode 100755
diff --git a/man/plotROCCurves.Rd b/man/plotROCCurves.Rd
old mode 100644
new mode 100755
diff --git a/man/plotResiduals.Rd b/man/plotResiduals.Rd
old mode 100644
new mode 100755
diff --git a/man/plotThreshVsPerf.Rd b/man/plotThreshVsPerf.Rd
old mode 100644
new mode 100755
diff --git a/man/plotTuneMultiCritResult.Rd b/man/plotTuneMultiCritResult.Rd
old mode 100644
new mode 100755
diff --git a/man/predict.WrappedModel.Rd b/man/predict.WrappedModel.Rd
old mode 100644
new mode 100755
diff --git a/man/predictLearner.Rd b/man/predictLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/reextractFDAFeatures.Rd b/man/reextractFDAFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/reimpute.Rd b/man/reimpute.Rd
old mode 100644
new mode 100755
diff --git a/man/removeConstantFeatures.Rd b/man/removeConstantFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/removeHyperPars.Rd b/man/removeHyperPars.Rd
old mode 100644
new mode 100755
diff --git a/man/resample.Rd b/man/resample.Rd
old mode 100644
new mode 100755
diff --git a/man/selectFeatures.Rd b/man/selectFeatures.Rd
old mode 100644
new mode 100755
diff --git a/man/setAggregation.Rd b/man/setAggregation.Rd
old mode 100644
new mode 100755
diff --git a/man/setHyperPars.Rd b/man/setHyperPars.Rd
old mode 100644
new mode 100755
diff --git a/man/setHyperPars2.Rd b/man/setHyperPars2.Rd
old mode 100644
new mode 100755
diff --git a/man/setId.Rd b/man/setId.Rd
old mode 100644
new mode 100755
diff --git a/man/setLearnerId.Rd b/man/setLearnerId.Rd
old mode 100644
new mode 100755
diff --git a/man/setMeasurePars.Rd b/man/setMeasurePars.Rd
old mode 100644
new mode 100755
diff --git a/man/setPredictThreshold.Rd b/man/setPredictThreshold.Rd
old mode 100644
new mode 100755
diff --git a/man/setPredictType.Rd b/man/setPredictType.Rd
old mode 100644
new mode 100755
diff --git a/man/setThreshold.Rd b/man/setThreshold.Rd
old mode 100644
new mode 100755
diff --git a/man/simplifyMeasureNames.Rd b/man/simplifyMeasureNames.Rd
old mode 100644
new mode 100755
diff --git a/man/smote.Rd b/man/smote.Rd
old mode 100644
new mode 100755
diff --git a/man/sonar.task.Rd b/man/sonar.task.Rd
old mode 100644
new mode 100755
diff --git a/man/spam.task.Rd b/man/spam.task.Rd
old mode 100644
new mode 100755
diff --git a/man/spatial.task.Rd b/man/spatial.task.Rd
old mode 100644
new mode 100755
diff --git a/man/subsetTask.Rd b/man/subsetTask.Rd
old mode 100644
new mode 100755
diff --git a/man/summarizeColumns.Rd b/man/summarizeColumns.Rd
old mode 100644
new mode 100755
diff --git a/man/summarizeLevels.Rd b/man/summarizeLevels.Rd
old mode 100644
new mode 100755
diff --git a/man/train.Rd b/man/train.Rd
old mode 100644
new mode 100755
diff --git a/man/trainLearner.Rd b/man/trainLearner.Rd
old mode 100644
new mode 100755
diff --git a/man/tuneParams.Rd b/man/tuneParams.Rd
old mode 100644
new mode 100755
diff --git a/man/tuneParamsMultiCrit.Rd b/man/tuneParamsMultiCrit.Rd
old mode 100644
new mode 100755
diff --git a/man/tuneThreshold.Rd b/man/tuneThreshold.Rd
old mode 100644
new mode 100755
diff --git a/man/wpbc.task.Rd b/man/wpbc.task.Rd
old mode 100644
new mode 100755
diff --git a/man/yeast.task.Rd b/man/yeast.task.Rd
old mode 100644
new mode 100755
diff --git a/src/Makevars.win b/src/Makevars.win
old mode 100644
new mode 100755
diff --git a/src/init.c b/src/init.c
old mode 100644
new mode 100755
diff --git a/src/macros.h b/src/macros.h
old mode 100644
new mode 100755
diff --git a/src/smote.c b/src/smote.c
index f6dd5c1..24850cb 100644
--- a/src/smote.c
+++ b/src/smote.c
@@ -38,5 +38,3 @@ SEXP c_smote(SEXP s_x, SEXP s_isnum, SEXP s_nn, SEXP s_res) {
   PutRNGstate();
   return s_res;
 }
-
-
diff --git a/tests/figs/deps.txt b/tests/figs/deps.txt
old mode 100644
new mode 100755
diff --git a/tests/figs/featsel/feat-type-cols.svg b/tests/figs/featsel/feat-type-cols.svg
old mode 100644
new mode 100755
diff --git a/tests/figs/featsel/filter-argument.svg b/tests/figs/featsel/filter-argument.svg
old mode 100644
new mode 100755
diff --git a/tests/figs/featsel/n-show-nfeat.svg b/tests/figs/featsel/n-show-nfeat.svg
old mode 100644
new mode 100755
diff --git a/tests/figs/featsel/n-show.svg b/tests/figs/featsel/n-show.svg
old mode 100644
new mode 100755
diff --git a/tests/testthat.R b/tests/testthat.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/Rplots.pdf b/tests/testthat/Rplots.pdf
old mode 100644
new mode 100755
index 8b5e766..cc33ac2
Binary files a/tests/testthat/Rplots.pdf and b/tests/testthat/Rplots.pdf differ
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-classif.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-classif.svg
new file mode 100644
index 0000000..3bcf895
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-classif.svg
@@ -0,0 +1,71 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpNjAuNjd8NjcxLjAxfDIyLjc4fDU0NS4xMQ=='>
+    <rect x='60.67' y='22.78' width='610.35' height='522.33' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNjAuNjd8NjcxLjAxfDIyLjc4fDU0NS4xMQ==)'>
+<rect x='60.67' y='22.78' width='610.35' height='522.33' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='175.11' cy='447.18' r='6.76' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='365.84' cy='283.95' r='6.70' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='365.84' cy='120.72' r='1.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='556.57' cy='283.95' r='2.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='556.57' cy='120.72' r='6.48' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='60.67' y='22.78' width='610.35' height='522.33' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='55.74' y='450.20' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='55.74' y='286.98' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='55.74' y='123.75' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='57.93,447.18 60.67,447.18 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='57.93,283.95 60.67,283.95 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='57.93,120.72 60.67,120.72 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='175.11,547.85 175.11,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='365.84,547.85 365.84,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='556.57,547.85 556.57,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='175.11' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='365.84' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='556.57' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<text x='365.84' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='22.01px' lengthAdjust='spacingAndGlyphs'>truth</text>
+<text transform='translate(13.05,283.95) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='45.26px' lengthAdjust='spacingAndGlyphs'>response</text>
+<rect x='681.97' y='233.08' width='32.55' height='101.73' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<text x='681.97' y='241.79' style='font-size: 11.00px; font-family: sans;' textLength='6.12px' lengthAdjust='spacingAndGlyphs'>n</text>
+<rect x='681.97' y='248.41' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='257.05' r='3.71' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='265.69' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='274.33' r='4.74' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='282.97' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='291.61' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='300.25' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='308.89' r='6.18' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='317.53' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='326.17' r='6.76' style='stroke-width: 0.71; fill: #000000;' />
+<text x='704.73' y='260.08' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='704.73' y='277.36' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='704.73' y='294.64' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='704.73' y='311.92' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='704.73' y='329.20' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>50</text>
+<text x='60.67' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='150.42px' lengthAdjust='spacingAndGlyphs'>True value vs. fitted value</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr-pretty.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr-pretty.svg
new file mode 100644
index 0000000..edb801d
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr-pretty.svg
@@ -0,0 +1,262 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.000000000000064' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDU2LjA4fDI3NC44MA=='>
+    <rect x='30.34' y='56.08' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDU2LjA4fDI3NC44MA==)'>
+<rect x='30.34' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='111.15' cy='215.15' r='6.76' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.15' cy='115.73' r='3.31' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='215.15' r='3.73' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='115.73' r='6.04' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='30.34' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDMyNi40MHw1NDUuMTE='>
+    <rect x='30.34' y='326.40' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDMyNi40MHw1NDUuMTE=)'>
+<rect x='30.34' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='111.15' cy='485.46' r='6.14' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.15' cy='386.05' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='485.46' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='386.05' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='30.34' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXw1Ni4wOHwyNzQuODA='>
+    <rect x='374.71' y='56.08' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXw1Ni4wOHwyNzQuODA=)'>
+<rect x='374.71' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='430.27' cy='233.79' r='5.07' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='165.44' r='5.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='97.09' r='2.36' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='97.09' r='4.69' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='374.71' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzMjYuNDB8NTQ1LjEx'>
+    <rect x='374.71' y='326.40' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzMjYuNDB8NTQ1LjEx)'>
+<rect x='374.71' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='430.27' cy='504.10' r='5.07' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='435.75' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='367.40' r='1.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='435.75' r='1.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='367.40' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='374.71' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA='>
+    <rect x='30.34' y='293.09' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMDkuNzU='>
+    <rect x='30.34' y='293.09' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMDkuNzU=)'>
+<rect x='30.34' y='293.09' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDMwOS43NXwzMjYuNDA='>
+    <rect x='30.34' y='309.75' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDMwOS43NXwzMjYuNDA=)'>
+<rect x='30.34' y='309.75' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw'>
+    <rect x='374.71' y='293.09' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzA5Ljc1'>
+    <rect x='374.71' y='293.09' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzA5Ljc1)'>
+<rect x='374.71' y='293.09' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzMDkuNzV8MzI2LjQw'>
+    <rect x='374.71' y='309.75' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzMDkuNzV8MzI2LjQw)'>
+<rect x='374.71' y='309.75' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4'>
+    <rect x='30.34' y='22.78' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDIyLjc4fDM5LjQz'>
+    <rect x='30.34' y='22.78' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDM5LjQz)'>
+<rect x='30.34' y='22.78' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDM5LjQzfDU2LjA4'>
+    <rect x='30.34' y='39.43' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDM5LjQzfDU2LjA4)'>
+<rect x='30.34' y='39.43' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA=='>
+    <rect x='374.71' y='22.78' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyMi43OHwzOS40Mw=='>
+    <rect x='374.71' y='22.78' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHwzOS40Mw==)'>
+<rect x='374.71' y='22.78' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzOS40M3w1Ni4wOA=='>
+    <rect x='374.71' y='39.43' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzOS40M3w1Ni4wOA==)'>
+<rect x='374.71' y='39.43' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<polyline points='111.15,547.85 111.15,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='245.83,547.85 245.83,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='111.15' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='245.83' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='430.27,547.85 430.27,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='522.86,547.85 522.86,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='615.46,547.85 615.46,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='430.27' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='522.86' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='615.46' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='111.15,277.54 111.15,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='245.83,277.54 245.83,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='111.15' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='245.83' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='430.27,277.54 430.27,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='522.86,277.54 522.86,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='615.46,277.54 615.46,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='430.27' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='522.86' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='615.46' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<text x='369.78' y='236.82' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='369.78' y='168.47' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='369.78' y='100.12' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='371.97,233.79 374.71,233.79 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,165.44 374.71,165.44 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,97.09 374.71,97.09 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='369.78' y='507.13' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='369.78' y='438.78' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='369.78' y='370.43' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='371.97,504.10 374.71,504.10 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,435.75 374.71,435.75 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,367.40 374.71,367.40 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='25.41' y='218.18' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='25.41' y='118.76' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='27.60,215.15 30.34,215.15 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='27.60,115.73 30.34,115.73 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='25.41' y='488.49' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='25.41' y='389.07' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='27.60,485.46 30.34,485.46 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='27.60,386.05 30.34,386.05 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='350.68' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='22.01px' lengthAdjust='spacingAndGlyphs'>truth</text>
+<text transform='translate(13.05,300.60) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='45.26px' lengthAdjust='spacingAndGlyphs'>response</text>
+<rect x='681.97' y='267.01' width='32.55' height='67.17' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<text x='681.97' y='275.72' style='font-size: 11.00px; font-family: sans;' textLength='6.12px' lengthAdjust='spacingAndGlyphs'>n</text>
+<rect x='681.97' y='282.34' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='290.98' r='4.25' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='299.62' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='308.26' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='316.90' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='325.54' r='6.50' style='stroke-width: 0.71; fill: #000000;' />
+<text x='704.73' y='294.01' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='704.73' y='311.29' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='704.73' y='328.57' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='30.34' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='150.42px' lengthAdjust='spacingAndGlyphs'>True value vs. fitted value</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr.svg
new file mode 100644
index 0000000..367f0a5
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr.svg
@@ -0,0 +1,275 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDU2LjA4fDI3NC44MA=='>
+    <rect x='32.79' y='56.08' width='330.76' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDU2LjA4fDI3NC44MA==)'>
+<rect x='32.79' y='56.08' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<rect x='47.83' y='247.72' width='93.32' height='17.14' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='151.52' y='66.03' width='93.32' height='198.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='255.20' y='240.86' width='93.32' height='24.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='32.79' y='56.08' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDMyNi40MHw1NDUuMTE='>
+    <rect x='32.79' y='326.40' width='330.76' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDMyNi40MHw1NDUuMTE=)'>
+<rect x='32.79' y='326.40' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<rect x='47.83' y='483.30' width='93.32' height='51.87' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='151.52' y='336.34' width='93.32' height='198.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='255.20' y='483.30' width='93.32' height='51.87' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='32.79' y='326.40' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41Mnw1Ni4wOHwyNzQuODA='>
+    <rect x='383.76' y='56.08' width='330.76' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41Mnw1Ni4wOHwyNzQuODA=)'>
+<rect x='383.76' y='56.08' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<rect x='398.79' y='256.57' width='142.43' height='8.28' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='557.05' y='66.03' width='142.43' height='198.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='383.76' y='56.08' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwzMjYuNDB8NTQ1LjEx'>
+    <rect x='383.76' y='326.40' width='330.76' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwzMjYuNDB8NTQ1LjEx)'>
+<rect x='383.76' y='326.40' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<rect x='398.79' y='531.03' width='93.32' height='4.14' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='502.48' y='336.34' width='93.32' height='198.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='606.17' y='531.03' width='93.32' height='4.14' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='383.76' y='326.40' width='330.76' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMjYuNDA='>
+    <rect x='32.79' y='293.09' width='330.76' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMDkuNzU='>
+    <rect x='32.79' y='293.09' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMDkuNzU=)'>
+<rect x='32.79' y='293.09' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='198.18' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDMwOS43NXwzMjYuNDA='>
+    <rect x='32.79' y='309.75' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDMwOS43NXwzMjYuNDA=)'>
+<rect x='32.79' y='309.75' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='198.18' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzI2LjQw'>
+    <rect x='383.76' y='293.09' width='330.76' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzA5Ljc1'>
+    <rect x='383.76' y='293.09' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzA5Ljc1)'>
+<rect x='383.76' y='293.09' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='549.14' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwzMDkuNzV8MzI2LjQw'>
+    <rect x='383.76' y='309.75' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwzMDkuNzV8MzI2LjQw)'>
+<rect x='383.76' y='309.75' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='549.14' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyOTMuMDl8MzI2LjQw)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDIyLjc4fDU2LjA4'>
+    <rect x='32.79' y='22.78' width='330.76' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDIyLjc4fDM5LjQz'>
+    <rect x='32.79' y='22.78' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDIyLjc4fDM5LjQz)'>
+<rect x='32.79' y='22.78' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='198.18' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8MzYzLjU2fDM5LjQzfDU2LjA4'>
+    <rect x='32.79' y='39.43' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDM5LjQzfDU2LjA4)'>
+<rect x='32.79' y='39.43' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='198.18' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzIuNzl8MzYzLjU2fDIyLjc4fDU2LjA4)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwyMi43OHw1Ni4wOA=='>
+    <rect x='383.76' y='22.78' width='330.76' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwyMi43OHwzOS40Mw=='>
+    <rect x='383.76' y='22.78' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyMi43OHwzOS40Mw==)'>
+<rect x='383.76' y='22.78' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='549.14' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzgzLjc2fDcxNC41MnwzOS40M3w1Ni4wOA=='>
+    <rect x='383.76' y='39.43' width='330.76' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwzOS40M3w1Ni4wOA==)'>
+<rect x='383.76' y='39.43' width='330.76' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='549.14' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzgzLjc2fDcxNC41MnwyMi43OHw1Ni4wOA==)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<polyline points='94.49,547.85 94.49,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='198.18,547.85 198.18,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='301.86,547.85 301.86,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='94.49' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.82px' lengthAdjust='spacingAndGlyphs'>-1</text>
+<text x='198.18' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='301.86' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>1</text>
+<polyline points='445.45,547.85 445.45,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='549.14,547.85 549.14,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='652.83,547.85 652.83,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='445.45' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.82px' lengthAdjust='spacingAndGlyphs'>-1</text>
+<text x='549.14' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='652.83' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>1</text>
+<polyline points='94.49,277.54 94.49,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='198.18,277.54 198.18,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='301.86,277.54 301.86,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='94.49' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.82px' lengthAdjust='spacingAndGlyphs'>-1</text>
+<text x='198.18' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='301.86' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>1</text>
+<polyline points='390.88,277.54 390.88,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='470.01,277.54 470.01,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='549.14,277.54 549.14,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='628.27,277.54 628.27,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='707.40,277.54 707.40,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='390.88' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='15.16px' lengthAdjust='spacingAndGlyphs'>-1.5</text>
+<text x='470.01' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='15.16px' lengthAdjust='spacingAndGlyphs'>-1.0</text>
+<text x='549.14' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='15.16px' lengthAdjust='spacingAndGlyphs'>-0.5</text>
+<text x='628.27' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.23px' lengthAdjust='spacingAndGlyphs'>0.0</text>
+<text x='707.40' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.23px' lengthAdjust='spacingAndGlyphs'>0.5</text>
+<text x='378.83' y='267.89' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='378.83' y='226.46' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='378.83' y='185.04' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='378.83' y='143.62' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='378.83' y='102.19' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='378.83' y='60.77' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>50</text>
+<polyline points='381.02,264.86 383.76,264.86 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,223.44 383.76,223.44 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,182.01 383.76,182.01 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,140.59 383.76,140.59 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,99.16 383.76,99.16 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,57.74 383.76,57.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='378.83' y='538.20' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='378.83' y='496.78' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='378.83' y='455.35' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='378.83' y='413.93' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='378.83' y='372.50' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='378.83' y='331.08' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>50</text>
+<polyline points='381.02,535.17 383.76,535.17 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,493.75 383.76,493.75 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,452.32 383.76,452.32 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,410.90 383.76,410.90 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,369.48 383.76,369.48 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='381.02,328.05 383.76,328.05 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='27.86' y='267.89' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='27.86' y='199.32' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='27.86' y='130.76' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='27.86' y='62.20' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>60</text>
+<polyline points='30.05,264.86 32.79,264.86 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,196.30 32.79,196.30 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,127.73 32.79,127.73 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,59.17 32.79,59.17 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='27.86' y='538.20' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='27.86' y='494.97' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='27.86' y='451.75' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='27.86' y='408.52' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='27.86' y='365.30' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<polyline points='30.05,535.17 32.79,535.17 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,491.95 32.79,491.95 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,448.72 32.79,448.72 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,405.50 32.79,405.50 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,362.27 32.79,362.27 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='373.66' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='44.03px' lengthAdjust='spacingAndGlyphs'>residuals</text>
+<text transform='translate(13.05,300.60) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='26.91px' lengthAdjust='spacingAndGlyphs'>count</text>
+<text x='32.79' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='131.34px' lengthAdjust='spacingAndGlyphs'>Histogram of residuals</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist.svg
new file mode 100644
index 0000000..13dd3c9
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist.svg
@@ -0,0 +1,85 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8NzE0LjUyfDIyLjc4fDU0NS4xMQ=='>
+    <rect x='32.79' y='22.78' width='681.73' height='522.33' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8NzE0LjUyfDIyLjc4fDU0NS4xMQ==)'>
+<rect x='32.79' y='22.78' width='681.73' height='522.33' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<rect x='63.78' y='509.35' width='20.66' height='12.02' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='84.44' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='105.10' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='125.76' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='146.41' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='167.07' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='187.73' y='515.36' width='20.66' height='6.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='208.39' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='229.05' y='515.36' width='20.66' height='6.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='249.71' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='270.37' y='479.30' width='20.66' height='42.07' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='291.02' y='503.34' width='20.66' height='18.03' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='311.68' y='479.30' width='20.66' height='42.07' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='332.34' y='413.18' width='20.66' height='108.19' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='353.00' y='280.94' width='20.66' height='240.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='373.66' y='166.74' width='20.66' height='354.63' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='394.32' y='70.57' width='20.66' height='450.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='414.97' y='64.56' width='20.66' height='456.81' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='435.63' y='46.53' width='20.66' height='474.84' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='456.29' y='118.65' width='20.66' height='402.72' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='476.95' y='377.11' width='20.66' height='144.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='497.61' y='365.09' width='20.66' height='156.28' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='518.27' y='479.30' width='20.66' height='42.07' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='538.92' y='485.31' width='20.66' height='36.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='559.58' y='515.36' width='20.66' height='6.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='580.24' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='600.90' y='497.33' width='20.66' height='24.04' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='621.56' y='521.37' width='20.66' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='642.22' y='509.35' width='20.66' height='12.02' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='662.87' y='515.36' width='20.66' height='6.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='32.79' y='22.78' width='681.73' height='522.33' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='27.86' y='524.40' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='27.86' y='404.18' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='27.86' y='283.97' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='27.86' y='163.76' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='27.86' y='43.54' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>80</text>
+<polyline points='30.05,521.37 32.79,521.37 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,401.16 32.79,401.16 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,280.94 32.79,280.94 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,160.73 32.79,160.73 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,40.52 32.79,40.52 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='121.64,547.85 121.64,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='273.47,547.85 273.47,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='425.30,547.85 425.30,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='577.13,547.85 577.13,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='121.64' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>-20</text>
+<text x='273.47' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>-10</text>
+<text x='425.30' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='577.13' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='373.66' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='44.03px' lengthAdjust='spacingAndGlyphs'>residuals</text>
+<text transform='translate(13.05,283.95) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='26.91px' lengthAdjust='spacingAndGlyphs'>count</text>
+<text x='32.79' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='131.34px' lengthAdjust='spacingAndGlyphs'>Histogram of residuals</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-regr.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-regr.svg
new file mode 100644
index 0000000..740c205
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-regr.svg
@@ -0,0 +1,1574 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMzIuNzl8NzE0LjUyfDIyLjc4fDU0NS4xMQ=='>
+    <rect x='32.79' y='22.78' width='681.73' height='522.33' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzIuNzl8NzE0LjUyfDIyLjc4fDU0NS4xMQ==)'>
+<rect x='32.79' y='22.78' width='681.73' height='522.33' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='325.45' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='292.40' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='472.82' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='454.91' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='493.48' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='390.18' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='310.30' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='368.15' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='222.16' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='255.22' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='201.50' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='255.22' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='275.87' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.58' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='268.99' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='235.93' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='273.12' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.58' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='182.22' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='264.86' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='204.26' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='194.62' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='209.77' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='186.35' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='223.54' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='198.75' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='248.33' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='284.14' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='169.83' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='194.62' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='176.71' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='175.34' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='180.85' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='255.22' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='270.37' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='284.14' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='335.09' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='419.11' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='475.57' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='361.26' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='343.36' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='335.09' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='286.89' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='260.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='270.37' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='223.54' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='193.24' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='266.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='277.25' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='317.19' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='255.22' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='482.46' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='335.09' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='430.12' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='315.81' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='264.86' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='252.46' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='215.28' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='300.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='449.40' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='318.57' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='234.56' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='282.76' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='328.21' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='308.93' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='317.19' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='326.83' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='289.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='270.37' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='281.38' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='286.89' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='274.50' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='380.54' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='324.08' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='336.47' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='310.30' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='324.08' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='361.26' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='304.80' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='300.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='319.95' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='390.18' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='306.17' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='310.30' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='386.05' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='289.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='527.91' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='598.14' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='452.16' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='373.66' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='359.88' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='251.08' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='260.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='271.74' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='263.48' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='263.48' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='275.87' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='267.61' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='308.93' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='253.84' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='252.46' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='249.71' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='246.95' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='286.89' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='259.35' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='275.87' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='260.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='274.50' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='277.25' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='233.18' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='253.84' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='289.65' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='211.14' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='218.03' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='242.82' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='191.86' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='259.35' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='264.86' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='311.68' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='248.33' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='209.77' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='244.20' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='234.56' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='230.43' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='178.09' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='240.07' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='187.73' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='193.24' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='179.47' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='209.77' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='157.43' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='184.98' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='209.77' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='195.99' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='240.07' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='207.01' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='291.02' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='264.86' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='205.64' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='229.05' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='209.77' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='175.34' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='563.71' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='329.59' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='315.81' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='366.77' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='307.55' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='322.70' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='322.70' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='302.04' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='234.56' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='257.97' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='319.95' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='306.17' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='399.82' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='314.44' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='333.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='406.71' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='507.25' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='543.06' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='493.48' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='516.89' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='442.52' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='358.51' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='402.58' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='435.63' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='405.33' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='475.57' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='504.49' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='414.97' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='496.23' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='423.24' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='395.69' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='453.54' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='412.22' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='471.44' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='475.57' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='448.03' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='326.83' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='577.49' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='662.87' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='306.17' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='330.96' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='304.80' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='330.96' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='270.37' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='260.72' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='303.42' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='381.92' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='321.32' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='315.81' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='390.18' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='291.02' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='311.68' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='362.64' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='373.66' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='409.46' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='611.92' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='512.76' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='430.12' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='638.08' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='428.75' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='329.59' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='431.50' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='569.22' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='660.12' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='394.32' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='325.45' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='340.60' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='428.75' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='321.32' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='315.81' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='271.74' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='300.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='321.32' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='237.31' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='249.71' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='329.59' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='277.25' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='332.34' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='355.75' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='330.96' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='336.47' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='402.58' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='584.37' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='296.53' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='282.76' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='600.90' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='490.72' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='409.46' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='460.42' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='588.50' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='667.01' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='421.86' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='497.61' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='308.93' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='417.73' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='594.01' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='280.01' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='285.51' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='341.98' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='330.96' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='479.70' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='441.14' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='435.63' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='452.16' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='450.78' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='395.69' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='478.33' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='620.18' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='482.46' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='628.44' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='438.39' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='271.74' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='314.44' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='302.04' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='336.47' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='387.43' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='508.63' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='379.17' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='324.08' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='388.81' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='368.15' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='274.50' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='304.80' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='394.32' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='336.47' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='358.51' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='450.78' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='492.10' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='386.05' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='454.91' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='383.30' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='308.93' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='274.50' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='216.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='299.29' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='292.40' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='322.70' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='218.03' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='240.07' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='267.61' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='284.14' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='322.70' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='275.87' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='249.71' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='333.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='311.68' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='300.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='260.72' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='306.17' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='267.61' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='230.43' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='262.10' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='300.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='280.01' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='285.51' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='263.48' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='249.71' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='256.59' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='252.46' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='445.27' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='222.16' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='324.08' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='424.61' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='235.93' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='231.80' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='332.34' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='361.26' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='310.30' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='326.83' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='251.08' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='409.46' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.58' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='240.07' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='293.78' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='307.55' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='306.17' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='268.99' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='281.38' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='226.29' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='296.53' cy='46.53' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='373.66' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='296.53' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='683.53' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='184.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='184.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='201.50' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='186.35' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='178.09' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='175.34' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='135.40' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='138.15' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='145.04' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='150.55' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='164.32' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='116.12' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='94.08' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='139.53' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='96.83' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='135.40' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='153.30' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='202.88' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='314.44' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='128.51' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='184.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='169.83' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='175.34' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='167.07' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='63.78' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='81.69' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='72.04' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='94.08' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='161.56' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='109.23' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='63.78' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='158.81' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='379.17' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='231.80' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='373.66' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='201.50' cy='147.07' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='231.80' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='241.44' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='219.41' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='91.33' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='94.08' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='98.21' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='138.15' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='116.12' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='110.61' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='224.92' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='190.49' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='281.38' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='179.47' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='156.06' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='109.23' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='135.40' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='145.04' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='146.41' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='125.76' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='194.62' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='189.11' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='216.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='191.86' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='156.06' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='179.47' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='127.13' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='114.74' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='110.61' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='171.20' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='139.53' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='230.43' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='248.33' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='207.01' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='143.66' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='157.43' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='200.13' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='168.45' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='189.11' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='173.96' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='179.47' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='204.26' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='216.65' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='240.07' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='200.13' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='189.11' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='169.83' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='180.85' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='200.13' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='270.37' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='220.78' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='238.69' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='263.48' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='273.12' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='289.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='268.99' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='256.59' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='257.97' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='257.97' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='271.74' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='268.99' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='264.86' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='314.44' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='405.33' cy='358.78' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='184.98' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='178.09' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='224.92' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='160.19' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='195.99' cy='515.75' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='289.65' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='311.68' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='321.32' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='339.23' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='295.16' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='286.89' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='257.97' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='204.26' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='91.33' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='106.48' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='182.22' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='271.74' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='295.16' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='332.34' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='313.06' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='266.23' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='246.95' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='286.89' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='235.93' cy='442.65' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='226.29' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='303.42' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='278.63' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='324.08' cy='207.45' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='297.91' cy='296.87' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='158.81' cy='378.63' r='1.95' style='stroke-width: 0.71; fill: #000000;' />
+<polyline points='63.78,521.37 71.63,519.84 79.47,518.03 87.32,515.95 95.16,513.59 103.01,510.95 110.85,508.05 118.70,504.86 126.54,501.40 134.39,497.67 142.23,493.66 150.08,489.38 157.92,484.83 165.77,480.00 173.61,474.90 181.46,469.51 189.30,463.56 197.15,457.11 204.99,450.33 212.84,443.42 220.68,436.57 228.53,429.94 236.37,423.26 244.22,416.54 252.06,409.91 259.91,403.54 267.75,397.49 275.60,391.60 283.44,385.82 291.29,380.17 299.13,374.65 306.97,369.13 314.82,363.56 322.66,358.20 330.51,352.86 338.35,347.22 346.20,341.22 354.04,335.07 361.89,328.76 369.73,322.29 377.58,315.65 385.42,308.82 393.27,301.81 401.11,294.59 408.96,287.16 416.80,279.51 424.65,271.64 432.49,263.52 440.34,255.16 448.18,246.54 456.03,237.87 463.87,229.36 471.72,221.01 479.56,212.81 487.41,204.78 495.25,196.91 503.10,189.19 510.94,181.64 518.79,174.25 526.63,167.02 534.48,159.96 542.32,153.06 550.17,146.33 558.01,139.76 565.86,133.36 573.70,127.13 581.55,121.07 589.39,115.18 597.24,109.45 605.08,103.90 612.93,98.52 620.77,93.31 628.62,88.28 636.46,83.42 644.31,78.73 652.15,74.22 660.00,69.89 667.84,65.73 675.69,61.76 683.53,57.96 ' style='stroke-width: 2.13; stroke: #3366FF; stroke-linecap: butt;' />
+<line x1='325.45' y1='545.11' x2='325.45' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='292.40' y1='545.11' x2='292.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='472.82' y1='545.11' x2='472.82' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='454.91' y1='545.11' x2='454.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='493.48' y1='545.11' x2='493.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='390.18' y1='545.11' x2='390.18' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='310.30' y1='545.11' x2='310.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='368.15' y1='545.11' x2='368.15' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='222.16' y1='545.11' x2='222.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='255.22' y1='545.11' x2='255.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='201.50' y1='545.11' x2='201.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='255.22' y1='545.11' x2='255.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='275.87' y1='545.11' x2='275.87' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='245.58' y1='545.11' x2='245.58' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='268.99' y1='545.11' x2='268.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='235.93' y1='545.11' x2='235.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='273.12' y1='545.11' x2='273.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='245.58' y1='545.11' x2='245.58' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='182.22' y1='545.11' x2='182.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='264.86' y1='545.11' x2='264.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='204.26' y1='545.11' x2='204.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='194.62' y1='545.11' x2='194.62' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='209.77' y1='545.11' x2='209.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='186.35' y1='545.11' x2='186.35' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='223.54' y1='545.11' x2='223.54' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='198.75' y1='545.11' x2='198.75' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='248.33' y1='545.11' x2='248.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='284.14' y1='545.11' x2='284.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='169.83' y1='545.11' x2='169.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='194.62' y1='545.11' x2='194.62' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='176.71' y1='545.11' x2='176.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='175.34' y1='545.11' x2='175.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='180.85' y1='545.11' x2='180.85' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='255.22' y1='545.11' x2='255.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='270.37' y1='545.11' x2='270.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='284.14' y1='545.11' x2='284.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='335.09' y1='545.11' x2='335.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='419.11' y1='545.11' x2='419.11' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='475.57' y1='545.11' x2='475.57' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='361.26' y1='545.11' x2='361.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='343.36' y1='545.11' x2='343.36' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='335.09' y1='545.11' x2='335.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='286.89' y1='545.11' x2='286.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='260.72' y1='545.11' x2='260.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='270.37' y1='545.11' x2='270.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='223.54' y1='545.11' x2='223.54' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='193.24' y1='545.11' x2='193.24' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='266.23' y1='545.11' x2='266.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='277.25' y1='545.11' x2='277.25' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='317.19' y1='545.11' x2='317.19' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='255.22' y1='545.11' x2='255.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='482.46' y1='545.11' x2='482.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='335.09' y1='545.11' x2='335.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='430.12' y1='545.11' x2='430.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='315.81' y1='545.11' x2='315.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='264.86' y1='545.11' x2='264.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='252.46' y1='545.11' x2='252.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='215.28' y1='545.11' x2='215.28' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='300.66' y1='545.11' x2='300.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='449.40' y1='545.11' x2='449.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='318.57' y1='545.11' x2='318.57' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='234.56' y1='545.11' x2='234.56' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='282.76' y1='545.11' x2='282.76' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='328.21' y1='545.11' x2='328.21' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='308.93' y1='545.11' x2='308.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='317.19' y1='545.11' x2='317.19' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='326.83' y1='545.11' x2='326.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='289.65' y1='545.11' x2='289.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='270.37' y1='545.11' x2='270.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='281.38' y1='545.11' x2='281.38' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='286.89' y1='545.11' x2='286.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='274.50' y1='545.11' x2='274.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='380.54' y1='545.11' x2='380.54' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='324.08' y1='545.11' x2='324.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='336.47' y1='545.11' x2='336.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='310.30' y1='545.11' x2='310.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='324.08' y1='545.11' x2='324.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='361.26' y1='545.11' x2='361.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='304.80' y1='545.11' x2='304.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='300.66' y1='545.11' x2='300.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='319.95' y1='545.11' x2='319.95' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='390.18' y1='545.11' x2='390.18' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='306.17' y1='545.11' x2='306.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='310.30' y1='545.11' x2='310.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='386.05' y1='545.11' x2='386.05' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='289.65' y1='545.11' x2='289.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='527.91' y1='545.11' x2='527.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='598.14' y1='545.11' x2='598.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='452.16' y1='545.11' x2='452.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='373.66' y1='545.11' x2='373.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='359.88' y1='545.11' x2='359.88' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='251.08' y1='545.11' x2='251.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='260.72' y1='545.11' x2='260.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='271.74' y1='545.11' x2='271.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='263.48' y1='545.11' x2='263.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='263.48' y1='545.11' x2='263.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='275.87' y1='545.11' x2='275.87' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='267.61' y1='545.11' x2='267.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='308.93' y1='545.11' x2='308.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='253.84' y1='545.11' x2='253.84' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='252.46' y1='545.11' x2='252.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='249.71' y1='545.11' x2='249.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='246.95' y1='545.11' x2='246.95' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='286.89' y1='545.11' x2='286.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='259.35' y1='545.11' x2='259.35' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='275.87' y1='545.11' x2='275.87' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='260.72' y1='545.11' x2='260.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='274.50' y1='545.11' x2='274.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='277.25' y1='545.11' x2='277.25' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='233.18' y1='545.11' x2='233.18' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='253.84' y1='545.11' x2='253.84' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='289.65' y1='545.11' x2='289.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='211.14' y1='545.11' x2='211.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='218.03' y1='545.11' x2='218.03' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='242.82' y1='545.11' x2='242.82' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='191.86' y1='545.11' x2='191.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='259.35' y1='545.11' x2='259.35' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='264.86' y1='545.11' x2='264.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='311.68' y1='545.11' x2='311.68' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='248.33' y1='545.11' x2='248.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='209.77' y1='545.11' x2='209.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='244.20' y1='545.11' x2='244.20' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='234.56' y1='545.11' x2='234.56' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='230.43' y1='545.11' x2='230.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='178.09' y1='545.11' x2='178.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='240.07' y1='545.11' x2='240.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='187.73' y1='545.11' x2='187.73' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='193.24' y1='545.11' x2='193.24' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='179.47' y1='545.11' x2='179.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='209.77' y1='545.11' x2='209.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='157.43' y1='545.11' x2='157.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='184.98' y1='545.11' x2='184.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='209.77' y1='545.11' x2='209.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='195.99' y1='545.11' x2='195.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='240.07' y1='545.11' x2='240.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='207.01' y1='545.11' x2='207.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='291.02' y1='545.11' x2='291.02' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='264.86' y1='545.11' x2='264.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='205.64' y1='545.11' x2='205.64' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='229.05' y1='545.11' x2='229.05' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='209.77' y1='545.11' x2='209.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='175.34' y1='545.11' x2='175.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='563.71' y1='545.11' x2='563.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='329.59' y1='545.11' x2='329.59' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='315.81' y1='545.11' x2='315.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='366.77' y1='545.11' x2='366.77' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='307.55' y1='545.11' x2='307.55' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='322.70' y1='545.11' x2='322.70' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='322.70' y1='545.11' x2='322.70' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='302.04' y1='545.11' x2='302.04' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='234.56' y1='545.11' x2='234.56' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='257.97' y1='545.11' x2='257.97' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='319.95' y1='545.11' x2='319.95' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='306.17' y1='545.11' x2='306.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='399.82' y1='545.11' x2='399.82' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='314.44' y1='545.11' x2='314.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='333.72' y1='545.11' x2='333.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='406.71' y1='545.11' x2='406.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='507.25' y1='545.11' x2='507.25' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='543.06' y1='545.11' x2='543.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='493.48' y1='545.11' x2='493.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='516.89' y1='545.11' x2='516.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='442.52' y1='545.11' x2='442.52' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='358.51' y1='545.11' x2='358.51' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='402.58' y1='545.11' x2='402.58' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='435.63' y1='545.11' x2='435.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='405.33' y1='545.11' x2='405.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='475.57' y1='545.11' x2='475.57' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='504.49' y1='545.11' x2='504.49' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='414.97' y1='545.11' x2='414.97' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='496.23' y1='545.11' x2='496.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='423.24' y1='545.11' x2='423.24' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='395.69' y1='545.11' x2='395.69' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='453.54' y1='545.11' x2='453.54' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='412.22' y1='545.11' x2='412.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='471.44' y1='545.11' x2='471.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='475.57' y1='545.11' x2='475.57' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='448.03' y1='545.11' x2='448.03' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='326.83' y1='545.11' x2='326.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='577.49' y1='545.11' x2='577.49' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='662.87' y1='545.11' x2='662.87' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='306.17' y1='545.11' x2='306.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='330.96' y1='545.11' x2='330.96' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='304.80' y1='545.11' x2='304.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='330.96' y1='545.11' x2='330.96' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='270.37' y1='545.11' x2='270.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='260.72' y1='545.11' x2='260.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='303.42' y1='545.11' x2='303.42' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='381.92' y1='545.11' x2='381.92' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='321.32' y1='545.11' x2='321.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='315.81' y1='545.11' x2='315.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='390.18' y1='545.11' x2='390.18' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='291.02' y1='545.11' x2='291.02' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='311.68' y1='545.11' x2='311.68' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='362.64' y1='545.11' x2='362.64' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='373.66' y1='545.11' x2='373.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='409.46' y1='545.11' x2='409.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='611.92' y1='545.11' x2='611.92' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='512.76' y1='545.11' x2='512.76' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='430.12' y1='545.11' x2='430.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='638.08' y1='545.11' x2='638.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='428.75' y1='545.11' x2='428.75' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='329.59' y1='545.11' x2='329.59' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='431.50' y1='545.11' x2='431.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='569.22' y1='545.11' x2='569.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='660.12' y1='545.11' x2='660.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='394.32' y1='545.11' x2='394.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='325.45' y1='545.11' x2='325.45' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='340.60' y1='545.11' x2='340.60' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='428.75' y1='545.11' x2='428.75' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='321.32' y1='545.11' x2='321.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='315.81' y1='545.11' x2='315.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='271.74' y1='545.11' x2='271.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='300.66' y1='545.11' x2='300.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='321.32' y1='545.11' x2='321.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='237.31' y1='545.11' x2='237.31' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='249.71' y1='545.11' x2='249.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='329.59' y1='545.11' x2='329.59' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='277.25' y1='545.11' x2='277.25' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='332.34' y1='545.11' x2='332.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='355.75' y1='545.11' x2='355.75' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='330.96' y1='545.11' x2='330.96' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='336.47' y1='545.11' x2='336.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='402.58' y1='545.11' x2='402.58' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='584.37' y1='545.11' x2='584.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='296.53' y1='545.11' x2='296.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='282.76' y1='545.11' x2='282.76' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='600.90' y1='545.11' x2='600.90' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='490.72' y1='545.11' x2='490.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='409.46' y1='545.11' x2='409.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='460.42' y1='545.11' x2='460.42' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='588.50' y1='545.11' x2='588.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='667.01' y1='545.11' x2='667.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='421.86' y1='545.11' x2='421.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='497.61' y1='545.11' x2='497.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='308.93' y1='545.11' x2='308.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='417.73' y1='545.11' x2='417.73' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='594.01' y1='545.11' x2='594.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='280.01' y1='545.11' x2='280.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='285.51' y1='545.11' x2='285.51' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='341.98' y1='545.11' x2='341.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='330.96' y1='545.11' x2='330.96' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='479.70' y1='545.11' x2='479.70' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='441.14' y1='545.11' x2='441.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='435.63' y1='545.11' x2='435.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='452.16' y1='545.11' x2='452.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='450.78' y1='545.11' x2='450.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='395.69' y1='545.11' x2='395.69' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='478.33' y1='545.11' x2='478.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='620.18' y1='545.11' x2='620.18' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='482.46' y1='545.11' x2='482.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='628.44' y1='545.11' x2='628.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='438.39' y1='545.11' x2='438.39' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='271.74' y1='545.11' x2='271.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='314.44' y1='545.11' x2='314.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='302.04' y1='545.11' x2='302.04' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='336.47' y1='545.11' x2='336.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='387.43' y1='545.11' x2='387.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='508.63' y1='545.11' x2='508.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='379.17' y1='545.11' x2='379.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='324.08' y1='545.11' x2='324.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='388.81' y1='545.11' x2='388.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='368.15' y1='545.11' x2='368.15' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='274.50' y1='545.11' x2='274.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='304.80' y1='545.11' x2='304.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='394.32' y1='545.11' x2='394.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='336.47' y1='545.11' x2='336.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='358.51' y1='545.11' x2='358.51' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='450.78' y1='545.11' x2='450.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='492.10' y1='545.11' x2='492.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='386.05' y1='545.11' x2='386.05' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='454.91' y1='545.11' x2='454.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='383.30' y1='545.11' x2='383.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='308.93' y1='545.11' x2='308.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='274.50' y1='545.11' x2='274.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='216.65' y1='545.11' x2='216.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='299.29' y1='545.11' x2='299.29' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='292.40' y1='545.11' x2='292.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='322.70' y1='545.11' x2='322.70' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='218.03' y1='545.11' x2='218.03' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='240.07' y1='545.11' x2='240.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='267.61' y1='545.11' x2='267.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='284.14' y1='545.11' x2='284.14' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='322.70' y1='545.11' x2='322.70' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='275.87' y1='545.11' x2='275.87' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='249.71' y1='545.11' x2='249.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='333.72' y1='545.11' x2='333.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='311.68' y1='545.11' x2='311.68' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='300.66' y1='545.11' x2='300.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='260.72' y1='545.11' x2='260.72' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='306.17' y1='545.11' x2='306.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='267.61' y1='545.11' x2='267.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='230.43' y1='545.11' x2='230.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='262.10' y1='545.11' x2='262.10' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='300.66' y1='545.11' x2='300.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='280.01' y1='545.11' x2='280.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='285.51' y1='545.11' x2='285.51' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='263.48' y1='545.11' x2='263.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='249.71' y1='545.11' x2='249.71' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='256.59' y1='545.11' x2='256.59' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='252.46' y1='545.11' x2='252.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='445.27' y1='545.11' x2='445.27' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='222.16' y1='545.11' x2='222.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='324.08' y1='545.11' x2='324.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='424.61' y1='545.11' x2='424.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='235.93' y1='545.11' x2='235.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='231.80' y1='545.11' x2='231.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='332.34' y1='545.11' x2='332.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='361.26' y1='545.11' x2='361.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='310.30' y1='545.11' x2='310.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='326.83' y1='545.11' x2='326.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='251.08' y1='545.11' x2='251.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='409.46' y1='545.11' x2='409.46' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='245.58' y1='545.11' x2='245.58' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='240.07' y1='545.11' x2='240.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='293.78' y1='545.11' x2='293.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='307.55' y1='545.11' x2='307.55' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='306.17' y1='545.11' x2='306.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='268.99' y1='545.11' x2='268.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='281.38' y1='545.11' x2='281.38' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='226.29' y1='545.11' x2='226.29' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='296.53' y1='545.11' x2='296.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='373.66' y1='545.11' x2='373.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='296.53' y1='545.11' x2='296.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='683.53' y1='545.11' x2='683.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='184.98' y1='545.11' x2='184.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='184.98' y1='545.11' x2='184.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='201.50' y1='545.11' x2='201.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='186.35' y1='545.11' x2='186.35' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='178.09' y1='545.11' x2='178.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='175.34' y1='545.11' x2='175.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='135.40' y1='545.11' x2='135.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='138.15' y1='545.11' x2='138.15' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='145.04' y1='545.11' x2='145.04' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='150.55' y1='545.11' x2='150.55' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='164.32' y1='545.11' x2='164.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='116.12' y1='545.11' x2='116.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='94.08' y1='545.11' x2='94.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='139.53' y1='545.11' x2='139.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='96.83' y1='545.11' x2='96.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='135.40' y1='545.11' x2='135.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='153.30' y1='545.11' x2='153.30' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='202.88' y1='545.11' x2='202.88' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='314.44' y1='545.11' x2='314.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='128.51' y1='545.11' x2='128.51' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='184.98' y1='545.11' x2='184.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='169.83' y1='545.11' x2='169.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='175.34' y1='545.11' x2='175.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='167.07' y1='545.11' x2='167.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='111.98' y1='545.11' x2='111.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='63.78' y1='545.11' x2='63.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='81.69' y1='545.11' x2='81.69' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='72.04' y1='545.11' x2='72.04' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='94.08' y1='545.11' x2='94.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='161.56' y1='545.11' x2='161.56' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='109.23' y1='545.11' x2='109.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='111.98' y1='545.11' x2='111.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='63.78' y1='545.11' x2='63.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='158.81' y1='545.11' x2='158.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='379.17' y1='545.11' x2='379.17' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='231.80' y1='545.11' x2='231.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='373.66' y1='545.11' x2='373.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='201.50' y1='545.11' x2='201.50' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='231.80' y1='545.11' x2='231.80' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='241.44' y1='545.11' x2='241.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='219.41' y1='545.11' x2='219.41' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='91.33' y1='545.11' x2='91.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='94.08' y1='545.11' x2='94.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='98.21' y1='545.11' x2='98.21' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='138.15' y1='545.11' x2='138.15' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='116.12' y1='545.11' x2='116.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='110.61' y1='545.11' x2='110.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='224.92' y1='545.11' x2='224.92' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='190.49' y1='545.11' x2='190.49' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='281.38' y1='545.11' x2='281.38' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='179.47' y1='545.11' x2='179.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='156.06' y1='545.11' x2='156.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='109.23' y1='545.11' x2='109.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='135.40' y1='545.11' x2='135.40' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='145.04' y1='545.11' x2='145.04' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='146.41' y1='545.11' x2='146.41' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='125.76' y1='545.11' x2='125.76' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='194.62' y1='545.11' x2='194.62' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='189.11' y1='545.11' x2='189.11' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='216.65' y1='545.11' x2='216.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='191.86' y1='545.11' x2='191.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='156.06' y1='545.11' x2='156.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='179.47' y1='545.11' x2='179.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='127.13' y1='545.11' x2='127.13' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='114.74' y1='545.11' x2='114.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='110.61' y1='545.11' x2='110.61' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='171.20' y1='545.11' x2='171.20' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='139.53' y1='545.11' x2='139.53' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='230.43' y1='545.11' x2='230.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='248.33' y1='545.11' x2='248.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='207.01' y1='545.11' x2='207.01' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='143.66' y1='545.11' x2='143.66' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='157.43' y1='545.11' x2='157.43' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='200.13' y1='545.11' x2='200.13' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='168.45' y1='545.11' x2='168.45' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='189.11' y1='545.11' x2='189.11' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='173.96' y1='545.11' x2='173.96' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='179.47' y1='545.11' x2='179.47' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='204.26' y1='545.11' x2='204.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='216.65' y1='545.11' x2='216.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='240.07' y1='545.11' x2='240.07' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='200.13' y1='545.11' x2='200.13' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='189.11' y1='545.11' x2='189.11' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='169.83' y1='545.11' x2='169.83' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='180.85' y1='545.11' x2='180.85' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='200.13' y1='545.11' x2='200.13' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='270.37' y1='545.11' x2='270.37' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='220.78' y1='545.11' x2='220.78' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='238.69' y1='545.11' x2='238.69' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='263.48' y1='545.11' x2='263.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='273.12' y1='545.11' x2='273.12' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='289.65' y1='545.11' x2='289.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='268.99' y1='545.11' x2='268.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='256.59' y1='545.11' x2='256.59' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='257.97' y1='545.11' x2='257.97' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='257.97' y1='545.11' x2='257.97' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='271.74' y1='545.11' x2='271.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='268.99' y1='545.11' x2='268.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='264.86' y1='545.11' x2='264.86' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='314.44' y1='545.11' x2='314.44' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='405.33' y1='545.11' x2='405.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='184.98' y1='545.11' x2='184.98' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='178.09' y1='545.11' x2='178.09' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='224.92' y1='545.11' x2='224.92' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='160.19' y1='545.11' x2='160.19' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='195.99' y1='545.11' x2='195.99' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='289.65' y1='545.11' x2='289.65' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='311.68' y1='545.11' x2='311.68' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='321.32' y1='545.11' x2='321.32' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='339.23' y1='545.11' x2='339.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='295.16' y1='545.11' x2='295.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='286.89' y1='545.11' x2='286.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='257.97' y1='545.11' x2='257.97' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='204.26' y1='545.11' x2='204.26' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='91.33' y1='545.11' x2='91.33' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='106.48' y1='545.11' x2='106.48' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='182.22' y1='545.11' x2='182.22' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='271.74' y1='545.11' x2='271.74' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='295.16' y1='545.11' x2='295.16' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='332.34' y1='545.11' x2='332.34' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='313.06' y1='545.11' x2='313.06' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='266.23' y1='545.11' x2='266.23' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='246.95' y1='545.11' x2='246.95' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='286.89' y1='545.11' x2='286.89' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='235.93' y1='545.11' x2='235.93' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='226.29' y1='545.11' x2='226.29' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='303.42' y1='545.11' x2='303.42' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='278.63' y1='545.11' x2='278.63' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='324.08' y1='545.11' x2='324.08' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='297.91' y1='545.11' x2='297.91' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='158.81' y1='545.11' x2='158.81' y2='529.44' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='46.53' x2='53.25' y2='46.53' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='147.07' x2='53.25' y2='147.07' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='358.78' x2='53.25' y2='358.78' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='515.75' x2='53.25' y2='515.75' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='442.65' x2='53.25' y2='442.65' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='207.45' x2='53.25' y2='207.45' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='296.87' x2='53.25' y2='296.87' style='stroke-width: 1.07; stroke: #FF0000;' />
+<line x1='32.79' y1='378.63' x2='53.25' y2='378.63' style='stroke-width: 1.07; stroke: #FF0000;' />
+<rect x='32.79' y='22.78' width='681.73' height='522.33' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='27.86' y='546.80' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='27.86' y='405.12' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='27.86' y='263.44' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='27.86' y='121.76' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<polyline points='30.05,543.78 32.79,543.78 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,402.10 32.79,402.10 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,260.42 32.79,260.42 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='30.05,118.74 32.79,118.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='132.64,547.85 132.64,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='270.37,547.85 270.37,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='408.09,547.85 408.09,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='545.81,547.85 545.81,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='683.53,547.85 683.53,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='132.64' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='270.37' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='408.09' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='545.81' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='683.53' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>50</text>
+<text x='373.66' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='22.01px' lengthAdjust='spacingAndGlyphs'>truth</text>
+<text transform='translate(13.05,283.95) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='45.26px' lengthAdjust='spacingAndGlyphs'>response</text>
+<text x='32.79' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='150.42px' lengthAdjust='spacingAndGlyphs'>True value vs. fitted value</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/base_plotResiduals/plotresiduals-scatter-bmr.svg b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-scatter-bmr.svg
new file mode 100644
index 0000000..edb801d
--- /dev/null
+++ b/tests/testthat/_snaps/base_plotResiduals/plotresiduals-scatter-bmr.svg
@@ -0,0 +1,262 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.000000000000064' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDU2LjA4fDI3NC44MA=='>
+    <rect x='30.34' y='56.08' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDU2LjA4fDI3NC44MA==)'>
+<rect x='30.34' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='111.15' cy='215.15' r='6.76' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.15' cy='115.73' r='3.31' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='215.15' r='3.73' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='115.73' r='6.04' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='30.34' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDMyNi40MHw1NDUuMTE='>
+    <rect x='30.34' y='326.40' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDMyNi40MHw1NDUuMTE=)'>
+<rect x='30.34' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='111.15' cy='485.46' r='6.14' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='111.15' cy='386.05' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='485.46' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='245.83' cy='386.05' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='30.34' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXw1Ni4wOHwyNzQuODA='>
+    <rect x='374.71' y='56.08' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXw1Ni4wOHwyNzQuODA=)'>
+<rect x='374.71' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='430.27' cy='233.79' r='5.07' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='165.44' r='5.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='97.09' r='2.36' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='97.09' r='4.69' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='374.71' y='56.08' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzMjYuNDB8NTQ1LjEx'>
+    <rect x='374.71' y='326.40' width='296.30' height='218.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzMjYuNDB8NTQ1LjEx)'>
+<rect x='374.71' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='430.27' cy='504.10' r='5.07' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='435.75' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='522.86' cy='367.40' r='1.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='435.75' r='1.42' style='stroke-width: 0.71; fill: #000000;' />
+<circle cx='615.46' cy='367.40' r='4.55' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='374.71' y='326.40' width='296.30' height='218.72' style='stroke-width: 1.07; stroke: #333333;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA='>
+    <rect x='30.34' y='293.09' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMDkuNzU='>
+    <rect x='30.34' y='293.09' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMDkuNzU=)'>
+<rect x='30.34' y='293.09' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDMwOS43NXwzMjYuNDA='>
+    <rect x='30.34' y='309.75' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDMwOS43NXwzMjYuNDA=)'>
+<rect x='30.34' y='309.75' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDI5My4wOXwzMjYuNDA=)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw'>
+    <rect x='374.71' y='293.09' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzA5Ljc1'>
+    <rect x='374.71' y='293.09' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzA5Ljc1)'>
+<rect x='374.71' y='293.09' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='304.45' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>classif.rpart</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzMDkuNzV8MzI2LjQw'>
+    <rect x='374.71' y='309.75' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzMDkuNzV8MzI2LjQw)'>
+<rect x='374.71' y='309.75' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='321.10' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyOTMuMDl8MzI2LjQw)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4'>
+    <rect x='30.34' y='22.78' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDIyLjc4fDM5LjQz'>
+    <rect x='30.34' y='22.78' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDM5LjQz)'>
+<rect x='30.34' y='22.78' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<defs>
+  <clipPath id='cpMzAuMzR8MzI2LjY0fDM5LjQzfDU2LjA4'>
+    <rect x='30.34' y='39.43' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDM5LjQzfDU2LjA4)'>
+<rect x='30.34' y='39.43' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='178.49' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='23.97px' lengthAdjust='spacingAndGlyphs'>binary</text>
+</g>
+<g clip-path='url(#cpMzAuMzR8MzI2LjY0fDIyLjc4fDU2LjA4)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA=='>
+    <rect x='374.71' y='22.78' width='296.30' height='33.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwyMi43OHwzOS40Mw=='>
+    <rect x='374.71' y='22.78' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHwzOS40Mw==)'>
+<rect x='374.71' y='22.78' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='34.14' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>classif.ksvm</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<defs>
+  <clipPath id='cpMzc0LjcxfDY3MS4wMXwzOS40M3w1Ni4wOA=='>
+    <rect x='374.71' y='39.43' width='296.30' height='16.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwzOS40M3w1Ni4wOA==)'>
+<rect x='374.71' y='39.43' width='296.30' height='16.65' style='stroke-width: 1.07; stroke: #333333; fill: #D9D9D9;' />
+<text x='522.86' y='50.79' text-anchor='middle' style='font-size: 8.80px; fill: #1A1A1A; font-family: sans;' textLength='38.64px' lengthAdjust='spacingAndGlyphs'>multiclass</text>
+</g>
+<g clip-path='url(#cpMzc0LjcxfDY3MS4wMXwyMi43OHw1Ni4wOA==)'>
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<polyline points='111.15,547.85 111.15,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='245.83,547.85 245.83,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='111.15' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='245.83' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='430.27,547.85 430.27,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='522.86,547.85 522.86,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='615.46,547.85 615.46,545.11 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='430.27' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='522.86' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='615.46' y='556.10' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='111.15,277.54 111.15,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='245.83,277.54 245.83,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='111.15' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='245.83' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='430.27,277.54 430.27,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='522.86,277.54 522.86,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='615.46,277.54 615.46,274.80 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='430.27' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='522.86' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='615.46' y='285.79' text-anchor='middle' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<text x='369.78' y='236.82' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='369.78' y='168.47' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='369.78' y='100.12' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='371.97,233.79 374.71,233.79 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,165.44 374.71,165.44 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,97.09 374.71,97.09 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='369.78' y='507.13' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='25.94px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='369.78' y='438.78' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='37.66px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='369.78' y='370.43' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='32.28px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<polyline points='371.97,504.10 374.71,504.10 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,435.75 374.71,435.75 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='371.97,367.40 374.71,367.40 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='25.41' y='218.18' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='25.41' y='118.76' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='27.60,215.15 30.34,215.15 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='27.60,115.73 30.34,115.73 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='25.41' y='488.49' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='7.33px' lengthAdjust='spacingAndGlyphs'>M</text>
+<text x='25.41' y='389.07' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='6.36px' lengthAdjust='spacingAndGlyphs'>R</text>
+<polyline points='27.60,485.46 30.34,485.46 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='27.60,386.05 30.34,386.05 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text x='350.68' y='568.24' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='22.01px' lengthAdjust='spacingAndGlyphs'>truth</text>
+<text transform='translate(13.05,300.60) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: sans;' textLength='45.26px' lengthAdjust='spacingAndGlyphs'>response</text>
+<rect x='681.97' y='267.01' width='32.55' height='67.17' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<text x='681.97' y='275.72' style='font-size: 11.00px; font-family: sans;' textLength='6.12px' lengthAdjust='spacingAndGlyphs'>n</text>
+<rect x='681.97' y='282.34' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='290.98' r='4.25' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='299.62' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='308.26' r='5.53' style='stroke-width: 0.71; fill: #000000;' />
+<rect x='681.97' y='316.90' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<circle cx='690.61' cy='325.54' r='6.50' style='stroke-width: 0.71; fill: #000000;' />
+<text x='704.73' y='294.01' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='704.73' y='311.29' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='704.73' y='328.57' style='font-size: 8.80px; font-family: sans;' textLength='9.79px' lengthAdjust='spacingAndGlyphs'>30</text>
+<text x='30.34' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='150.42px' lengthAdjust='spacingAndGlyphs'>True value vs. fitted value</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/featsel_plotFilterValues/feat-type-cols.svg b/tests/testthat/_snaps/featsel_plotFilterValues/feat-type-cols.svg
new file mode 100644
index 0000000..ae668c6
--- /dev/null
+++ b/tests/testthat/_snaps/featsel_plotFilterValues/feat-type-cols.svg
@@ -0,0 +1,113 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpNDAuMTN8NjM4LjU0fDIyLjc4fDUzMC4xMw=='>
+    <rect x='40.13' y='22.78' width='598.41' height='507.34' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNDAuMTN8NjM4LjU0fDIyLjc4fDUzMC4xMw==)'>
+<rect x='40.13' y='22.78' width='598.41' height='507.34' style='stroke-width: 1.07; stroke: none; fill: #EBEBEB;' />
+<polyline points='40.13,449.41 638.54,449.41 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,334.11 638.54,334.11 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,218.80 638.54,218.80 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,103.50 638.54,103.50 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,507.07 638.54,507.07 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,391.76 638.54,391.76 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,276.46 638.54,276.46 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,161.15 638.54,161.15 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,45.84 638.54,45.84 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='67.33,530.13 67.33,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='112.67,530.13 112.67,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='158.00,530.13 158.00,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='203.33,530.13 203.33,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='248.67,530.13 248.67,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='294.00,530.13 294.00,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='339.34,530.13 339.34,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='384.67,530.13 384.67,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='430.00,530.13 430.00,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='475.34,530.13 475.34,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='520.67,530.13 520.67,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='566.00,530.13 566.00,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='611.34,530.13 611.34,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<rect x='46.93' y='45.84' width='40.80' height='461.22' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='92.27' y='81.32' width='40.80' height='425.74' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='137.60' y='116.80' width='40.80' height='390.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='182.93' y='152.28' width='40.80' height='354.79' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='228.27' y='187.76' width='40.80' height='319.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='273.60' y='223.24' width='40.80' height='283.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='318.94' y='258.72' width='40.80' height='248.35' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='364.27' y='294.19' width='40.80' height='212.87' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='409.60' y='329.67' width='40.80' height='177.39' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='454.94' y='365.15' width='40.80' height='141.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='500.27' y='400.63' width='40.80' height='106.44' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='545.60' y='436.11' width='40.80' height='70.96' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<rect x='590.94' y='471.59' width='40.80' height='35.48' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #F8766D;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='35.20' y='510.09' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.00</text>
+<text x='35.20' y='394.79' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.25</text>
+<text x='35.20' y='279.48' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.50</text>
+<text x='35.20' y='164.18' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.75</text>
+<text x='35.20' y='48.87' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>1.00</text>
+<polyline points='37.39,507.07 40.13,507.07 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,391.76 40.13,391.76 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,276.46 40.13,276.46 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,161.15 40.13,161.15 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,45.84 40.13,45.84 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='67.33,532.87 67.33,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='112.67,532.87 112.67,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='158.00,532.87 158.00,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='203.33,532.87 203.33,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='248.67,532.87 248.67,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='294.00,532.87 294.00,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='339.34,532.87 339.34,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='384.67,532.87 384.67,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='430.00,532.87 430.00,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='475.34,532.87 475.34,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='520.67,532.87 520.67,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='566.00,532.87 566.00,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='611.34,532.87 611.34,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text transform='translate(71.62,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='16.14px' lengthAdjust='spacingAndGlyphs'>lstat</text>
+<text transform='translate(116.95,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='14.19px' lengthAdjust='spacingAndGlyphs'>nox</text>
+<text transform='translate(162.28,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='10.26px' lengthAdjust='spacingAndGlyphs'>rm</text>
+<text transform='translate(207.62,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='24.46px' lengthAdjust='spacingAndGlyphs'>ptratio</text>
+<text transform='translate(252.95,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='14.68px' lengthAdjust='spacingAndGlyphs'>age</text>
+<text transform='translate(298.28,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='11.25px' lengthAdjust='spacingAndGlyphs'>dis</text>
+<text transform='translate(343.62,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='11.74px' lengthAdjust='spacingAndGlyphs'>tax</text>
+<text transform='translate(388.95,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='21.04px' lengthAdjust='spacingAndGlyphs'>indus</text>
+<text transform='translate(434.29,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.30px' lengthAdjust='spacingAndGlyphs'>zn</text>
+<text transform='translate(479.62,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>rad</text>
+<text transform='translate(524.95,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>b</text>
+<text transform='translate(570.29,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='16.62px' lengthAdjust='spacingAndGlyphs'>crim</text>
+<text transform='translate(615.62,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='18.60px' lengthAdjust='spacingAndGlyphs'>chas</text>
+<rect x='649.50' y='246.03' width='65.02' height='60.85' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
+<text x='654.98' y='260.22' style='font-size: 11.00px; font-family: sans;' textLength='20.80px' lengthAdjust='spacingAndGlyphs'>type</text>
+<rect x='654.98' y='266.84' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #F2F2F2;' />
+<rect x='655.69' y='267.55' width='15.86' height='15.86' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #F8766D;' />
+<rect x='654.98' y='284.12' width='17.28' height='17.28' style='stroke-width: 1.07; stroke: none; fill: #F2F2F2;' />
+<rect x='655.69' y='284.83' width='15.86' height='15.86' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #00BFC4;' />
+<text x='677.74' y='278.51' style='font-size: 8.80px; font-family: sans;' textLength='22.01px' lengthAdjust='spacingAndGlyphs'>factor</text>
+<text x='677.74' y='295.79' style='font-size: 8.80px; font-family: sans;' textLength='31.31px' lengthAdjust='spacingAndGlyphs'>numeric</text>
+<text x='40.13' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='409.82px' lengthAdjust='spacingAndGlyphs'>BostonHousing-example (13 out of 13 features), filter = praznik_CMIM</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/featsel_plotFilterValues/filter-argument.svg b/tests/testthat/_snaps/featsel_plotFilterValues/filter-argument.svg
new file mode 100644
index 0000000..548bf2e
--- /dev/null
+++ b/tests/testthat/_snaps/featsel_plotFilterValues/filter-argument.svg
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMjcuOTB8NzE0LjUyfDIyLjc4fDUxMC43NA=='>
+    <rect x='27.90' y='22.78' width='686.62' height='487.96' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMjcuOTB8NzE0LjUyfDIyLjc4fDUxMC43NA==)'>
+<rect x='27.90' y='22.78' width='686.62' height='487.96' style='stroke-width: 1.07; stroke: none; fill: #EBEBEB;' />
+<polyline points='27.90,417.39 714.52,417.39 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,275.04 714.52,275.04 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,132.69 714.52,132.69 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,488.56 714.52,488.56 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,346.21 714.52,346.21 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,203.86 714.52,203.86 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,61.52 714.52,61.52 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='125.99,510.74 125.99,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='289.47,510.74 289.47,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='452.95,510.74 452.95,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='616.43,510.74 616.43,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<rect x='52.42' y='44.96' width='147.13' height='443.60' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='215.90' y='390.96' width='147.13' height='97.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='379.38' y='405.86' width='147.13' height='82.71' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='542.87' y='461.52' width='147.13' height='27.04' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='22.97' y='491.59' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='22.97' y='349.24' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>1</text>
+<text x='22.97' y='206.89' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>2</text>
+<text x='22.97' y='64.54' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>3</text>
+<polyline points='25.16,488.56 27.90,488.56 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,346.21 27.90,346.21 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,203.86 27.90,203.86 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,61.52 27.90,61.52 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='125.99,513.48 125.99,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='289.47,513.48 289.47,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='452.95,513.48 452.95,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='616.43,513.48 616.43,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text transform='translate(130.27,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='49.42px' lengthAdjust='spacingAndGlyphs'>Petal.Length</text>
+<text transform='translate(293.75,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='51.87px' lengthAdjust='spacingAndGlyphs'>Sepal.Length</text>
+<text transform='translate(457.23,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='45.00px' lengthAdjust='spacingAndGlyphs'>Petal.Width</text>
+<text transform='translate(620.71,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='47.45px' lengthAdjust='spacingAndGlyphs'>Sepal.Width</text>
+<text x='27.90' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='287.25px' lengthAdjust='spacingAndGlyphs'>iris-example (4 out of 4 features), filter = variance</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/featsel_plotFilterValues/n-show-nfeat.svg b/tests/testthat/_snaps/featsel_plotFilterValues/n-show-nfeat.svg
new file mode 100644
index 0000000..c37552d
--- /dev/null
+++ b/tests/testthat/_snaps/featsel_plotFilterValues/n-show-nfeat.svg
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpNDAuMTN8NzE0LjUyfDIyLjc4fDUzMC4xMw=='>
+    <rect x='40.13' y='22.78' width='674.39' height='507.34' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNDAuMTN8NzE0LjUyfDIyLjc4fDUzMC4xMw==)'>
+<rect x='40.13' y='22.78' width='674.39' height='507.34' style='stroke-width: 1.07; stroke: none; fill: #EBEBEB;' />
+<polyline points='40.13,449.41 714.52,449.41 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,334.11 714.52,334.11 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,218.80 714.52,218.80 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,103.50 714.52,103.50 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,507.07 714.52,507.07 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,391.76 714.52,391.76 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,276.46 714.52,276.46 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,161.15 714.52,161.15 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='40.13,45.84 714.52,45.84 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='70.79,530.13 70.79,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='121.88,530.13 121.88,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='172.97,530.13 172.97,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='224.06,530.13 224.06,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='275.15,530.13 275.15,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='326.24,530.13 326.24,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='377.33,530.13 377.33,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='428.42,530.13 428.42,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='479.51,530.13 479.51,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='530.60,530.13 530.60,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='581.69,530.13 581.69,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='632.78,530.13 632.78,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='683.87,530.13 683.87,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<rect x='47.80' y='45.84' width='45.98' height='461.22' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='98.89' y='81.32' width='45.98' height='425.74' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='149.98' y='116.80' width='45.98' height='390.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='201.07' y='152.28' width='45.98' height='354.79' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='252.16' y='187.76' width='45.98' height='319.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='303.25' y='223.24' width='45.98' height='283.83' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='354.34' y='258.72' width='45.98' height='248.35' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='405.43' y='294.19' width='45.98' height='212.87' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='456.52' y='329.67' width='45.98' height='177.39' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='507.61' y='365.15' width='45.98' height='141.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='558.70' y='400.63' width='45.98' height='106.44' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='609.79' y='436.11' width='45.98' height='70.96' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='660.88' y='471.59' width='45.98' height='35.48' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='35.20' y='510.09' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.00</text>
+<text x='35.20' y='394.79' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.25</text>
+<text x='35.20' y='279.48' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.50</text>
+<text x='35.20' y='164.18' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>0.75</text>
+<text x='35.20' y='48.87' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='17.13px' lengthAdjust='spacingAndGlyphs'>1.00</text>
+<polyline points='37.39,507.07 40.13,507.07 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,391.76 40.13,391.76 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,276.46 40.13,276.46 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,161.15 40.13,161.15 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='37.39,45.84 40.13,45.84 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='70.79,532.87 70.79,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='121.88,532.87 121.88,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='172.97,532.87 172.97,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='224.06,532.87 224.06,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='275.15,532.87 275.15,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='326.24,532.87 326.24,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='377.33,532.87 377.33,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='428.42,532.87 428.42,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='479.51,532.87 479.51,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='530.60,532.87 530.60,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='581.69,532.87 581.69,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='632.78,532.87 632.78,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='683.87,532.87 683.87,530.13 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text transform='translate(75.07,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='16.14px' lengthAdjust='spacingAndGlyphs'>lstat</text>
+<text transform='translate(126.16,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='14.19px' lengthAdjust='spacingAndGlyphs'>nox</text>
+<text transform='translate(177.25,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='10.26px' lengthAdjust='spacingAndGlyphs'>rm</text>
+<text transform='translate(228.34,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='24.46px' lengthAdjust='spacingAndGlyphs'>ptratio</text>
+<text transform='translate(279.43,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='14.68px' lengthAdjust='spacingAndGlyphs'>age</text>
+<text transform='translate(330.52,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='11.25px' lengthAdjust='spacingAndGlyphs'>dis</text>
+<text transform='translate(381.61,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='11.74px' lengthAdjust='spacingAndGlyphs'>tax</text>
+<text transform='translate(432.70,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='21.04px' lengthAdjust='spacingAndGlyphs'>indus</text>
+<text transform='translate(483.79,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='9.30px' lengthAdjust='spacingAndGlyphs'>zn</text>
+<text transform='translate(534.88,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>rad</text>
+<text transform='translate(585.97,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>b</text>
+<text transform='translate(637.06,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='16.62px' lengthAdjust='spacingAndGlyphs'>crim</text>
+<text transform='translate(688.15,539.34) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='18.60px' lengthAdjust='spacingAndGlyphs'>chas</text>
+<text x='40.13' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='409.82px' lengthAdjust='spacingAndGlyphs'>BostonHousing-example (13 out of 13 features), filter = praznik_CMIM</text>
+</g>
+</svg>
diff --git a/tests/testthat/_snaps/featsel_plotFilterValues/n-show.svg b/tests/testthat/_snaps/featsel_plotFilterValues/n-show.svg
new file mode 100644
index 0000000..fe9dde3
--- /dev/null
+++ b/tests/testthat/_snaps/featsel_plotFilterValues/n-show.svg
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' data-engine-version='2.0' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA='>
+    <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<rect x='0.00' y='0.00' width='720.00' height='576.00' style='stroke-width: 1.07; stroke: #FFFFFF; fill: #FFFFFF;' />
+</g>
+<defs>
+  <clipPath id='cpMjcuOTB8NzE0LjUyfDIyLjc4fDUxMC43NA=='>
+    <rect x='27.90' y='22.78' width='686.62' height='487.96' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMjcuOTB8NzE0LjUyfDIyLjc4fDUxMC43NA==)'>
+<rect x='27.90' y='22.78' width='686.62' height='487.96' style='stroke-width: 1.07; stroke: none; fill: #EBEBEB;' />
+<polyline points='27.90,417.39 714.52,417.39 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,275.04 714.52,275.04 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,132.69 714.52,132.69 ' style='stroke-width: 0.53; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,488.56 714.52,488.56 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,346.21 714.52,346.21 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,203.86 714.52,203.86 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='27.90,61.52 714.52,61.52 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='215.16,510.74 215.16,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<polyline points='527.26,510.74 527.26,22.78 ' style='stroke-width: 1.07; stroke: #FFFFFF; stroke-linecap: butt;' />
+<rect x='74.71' y='44.96' width='280.89' height='443.60' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+<rect x='386.81' y='390.96' width='280.89' height='97.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: square; stroke-linejoin: miter; fill: #595959;' />
+</g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8MC4wMHw1NzYuMDA=)'>
+<text x='22.97' y='491.59' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='22.97' y='349.24' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>1</text>
+<text x='22.97' y='206.89' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>2</text>
+<text x='22.97' y='64.54' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>3</text>
+<polyline points='25.16,488.56 27.90,488.56 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,346.21 27.90,346.21 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,203.86 27.90,203.86 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='25.16,61.52 27.90,61.52 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='215.16,513.48 215.16,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<polyline points='527.26,513.48 527.26,510.74 ' style='stroke-width: 1.07; stroke: #333333; stroke-linecap: butt;' />
+<text transform='translate(219.44,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='49.42px' lengthAdjust='spacingAndGlyphs'>Petal.Length</text>
+<text transform='translate(531.54,519.96) rotate(-45)' text-anchor='end' style='font-size: 8.80px; fill: #4D4D4D; font-family: sans;' textLength='51.87px' lengthAdjust='spacingAndGlyphs'>Sepal.Length</text>
+<text x='27.90' y='14.56' style='font-size: 13.20px; font-family: sans;' textLength='287.25px' lengthAdjust='spacingAndGlyphs'>iris-example (2 out of 4 features), filter = variance</text>
+</g>
+</svg>
diff --git a/tests/testthat/helper_funs.R b/tests/testthat/helper_funs.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/helper_learners_all.R b/tests/testthat/helper_learners_all.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/helper_lint.R b/tests/testthat/helper_lint.R
deleted file mode 100644
index 5aa5d48..0000000
--- a/tests/testthat/helper_lint.R
+++ /dev/null
@@ -1,292 +0,0 @@
-
-# check if lintr version is sufficient
-# if `error.if.not` is TRUE an error is thrown with a meaningful message.
-isLintrVersionOk = function(error.if.not = FALSE) {
-  lintr.ver = try(packageVersion("lintr"), silent = TRUE)
-  lintr.required = "1.0.0.9001"
-  if (inherits(lintr.ver, "try-error")) {
-    msg = "lintr is not installed."
-  } else {
-    if (package_version(lintr.ver) >= package_version(lintr.required)) {
-      return(TRUE)
-    }
-    msg = sprintf("lintr is version %s, but version %s is required.", lintr.ver, lintr.required)
-  }
-  if (error.if.not) {
-    stopf(paste("%s\nInstalling the github version of lintr will probably solve this issue. For that, please run",
-      "> devtools::install_github(\"jimhester/lintr\")", sep = "\n"), msg)
-  }
-  return(FALSE)
-}
-
-if (isLintrVersionOk() && require("lintr", quietly = TRUE) && requireNamespace("rex", quietly = TRUE)) {
-
-
-  # The following functions are adaptions of the corresponding functions in the `lintr` packages
-  # The lintr package, and the original versions of these functions, can be found at https://github.com/jimhester/lintr
-  # Copyright notice of original functions:
-  # Copyright (c) 2014-2016, James Hester
-  #
-  # Permission is hereby granted, free of charge, to any person obtaining
-  # a copy of this software and associated documentation files (the
-  # "Software"), to deal in the Software without restriction, including
-  # without limitation the rights to use, copy, modify, merge, publish,
-  # distribute, sublicense, and/or sell copies of the Software, and to
-  # permit persons to whom the Software is furnished to do so, subject to
-  # the following conditions:
-  #
-  # The above copyright notice and this permission notice shall be
-  # included in all copies or substantial portions of the Software.
-  #
-  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-  #
-  # End copyright notice.
-  # All modifications are licensed as the rest of mlr.
-
-  # linters that differ from the default linters
-  # this is necessary because mlr's style is weird.
-
-  # prohibit <-
-  left.assign.linter = function(source_file) {
-    lapply(lintr:::ids_with_token(source_file, "LEFT_ASSIGN"), function(id) {
-      parsed = lintr:::with_id(source_file, id)
-      if (parsed$text == ":=") {
-        return(NULL)
-      } # ':=' is also a LEFT_ASSIGN token for some reason
-      Lint(filename = source_file$filename, line_number = parsed$line1,
-        column_number = parsed$col1, type = "style", message = "Use =, not <-, for assignment.",
-        line = source_file$lines[as.character(parsed$line1)],
-        linter = "assignment_linter")
-    })
-  }
-
-  # prohibit ->
-  right.assign.linter = function(source_file) {
-    lapply(lintr:::ids_with_token(source_file, "RIGHT_ASSIGN"), function(id) {
-      parsed = lintr:::with_id(source_file, id)
-      Lint(filename = source_file$filename, line_number = parsed$line1,
-        column_number = parsed$col1, type = "style", message = "Use =, not ->, for assignment.",
-        line = source_file$lines[as.character(parsed$line1)],
-        linter = "assignment_linter")
-    })
-  }
-
-  `%!=%` = lintr:::`%!=%`
-  `%==%` = lintr:::`%==%`
-
-  spaces.left.parentheses.linter = function(source_file) {
-    lapply(lintr:::ids_with_token(source_file, "'('"), function(id) {
-      parsed = source_file$parsed_content[id, ]
-      terminal.tokens.before = source_file$parsed_content$token[source_file$parsed_content$line1 ==
-        parsed$line1 & source_file$parsed_content$col1 <
-        parsed$col1 & source_file$parsed_content$terminal]
-      last.type = tail(terminal.tokens.before, n = 1)
-      is.function = length(last.type) %!=% 0L && (last.type %in%
-        c("SYMBOL_FUNCTION_CALL", "FUNCTION", "'}'", "')'",
-          "']'"))
-      if (!is.function) {
-        line = source_file$lines[as.character(parsed$line1)]
-        before.operator = substr(line, parsed$col1 - 1L,
-          parsed$col1 - 1L)
-        non.space.before = re_matches(before.operator, rex(non_space))
-        not.exception = !(before.operator %in% c("!", ":",
-          "[", "("))
-        if (non.space.before && not.exception) {
-          Lint(filename = source_file$filename, line_number = parsed$line1,
-            column_number = parsed$col1, type = "style",
-            message = "Place a space before left parenthesis, except in a function call.",
-            line = line, linter = "spaces.left.parentheses.linter")
-        }
-      }
-    })
-  }
-
-  function.left.parentheses.linter = function(source_file) {
-    lapply(lintr:::ids_with_token(source_file, "'('"),
-      function(id) {
-
-        parsed = source_file$parsed_content[id, ]
-        ttb = which(source_file$parsed_content$line1 == parsed$line1 &
-          source_file$parsed_content$col1 < parsed$col1 &
-          source_file$parsed_content$terminal)
-        ttb = tail(ttb, n = 1)
-        last.type = source_file$parsed_content$token[ttb]
-
-        is.function = length(last.type) %!=% 0L &&
-          (last.type %in% c("SYMBOL_FUNCTION_CALL", "FUNCTION", "'}'", "')'", "']'"))
-        # check whether this is a lambda expression; we want to allow e.g. function(x) (x - 1)^2
-        if (is.function && last.type == "')'") {
-          # parenvec: 1 for every '(', -1 for every ')', 0 otherwise
-          parenvec = c(1, -1, 0)[match(source_file$parsed_content$token, c("'('", "')'"), 3)]
-          parenlevel = cumsum(parenvec)
-          parenlevelcut = parenlevel[seq_len(ttb - 1)]
-          opening.paren.pos = max(which(parenlevelcut == parenlevel[ttb])) + 1
-          opparsed = source_file$parsed_content[opening.paren.pos, ]
-
-          opttb = which(source_file$parsed_content$line1 == opparsed$line1 &
-            source_file$parsed_content$col1 < opparsed$col1 &
-            source_file$parsed_content$terminal)
-          opttb = tail(opttb, n = 1)
-          before.op.type = source_file$parsed_content$token[opttb]
-          if (length(before.op.type) %!=% 0L && before.op.type == "FUNCTION") {
-            is.function = FALSE
-          }
-        }
-        if (is.function) {
-
-          line = source_file$lines[as.character(parsed$line1)]
-
-          before.operator = substr(line, parsed$col1 - 1L, parsed$col1 - 1L)
-
-          space.before = re_matches(before.operator, rex(space))
-
-          if (space.before) {
-            Lint(
-              filename = source_file$filename,
-              line_number = parsed$line1,
-              column_number = parsed$col1,
-              type = "style",
-              message = "Remove spaces before the left parenthesis in a function call.",
-              line = line,
-              linter = "function_left_parentheses"
-            )
-          }
-        }
-
-      })
-  }
-
-  infix.spaces.linter = function(source_file) {
-    lapply(lintr:::ids_with_token(source_file, lintr:::infix_tokens, fun = `%in%`),
-      function(id) {
-        parsed = lintr:::with_id(source_file, id)
-        line = source_file$lines[as.character(parsed$line1)]
-        if (substr(line, parsed$col1, parsed$col2) == "^") {
-          return(NULL)
-        }
-        around.operator = substr(line, parsed$col1 - 1L,
-          parsed$col2 + 1L)
-        non.space.before = re_matches(around.operator, rex(start,
-          non_space))
-        newline.after = unname(nchar(line)) %==% parsed$col2
-        non.space.after = re_matches(around.operator, rex(non_space,
-          end))
-        if (non.space.before || (!newline.after && non.space.after)) {
-          is.infix = length(lintr:::siblings(source_file$parsed_content,
-            parsed$id, 1)) > 1L
-          start = end = parsed$col1
-          if (is.infix) {
-            if (non.space.before) {
-              start = parsed$col1 - 1L
-            }
-            if (non.space.after) {
-              end = parsed$col2 + 1L
-            }
-            Lint(filename = source_file$filename, line_number = parsed$line1,
-              column_number = parsed$col1, type = "style",
-              message = "Put spaces around all infix operators (except exponentiation).",
-              line = line, ranges = list(c(start, end)),
-              linter = "infix.spaces.linter")
-          }
-        }
-      })
-  }
-
-
-  loweralnum = rex::rex(one_of(lower, digit))
-  upperalnum = rex::rex(one_of(upper, digit))
-
-  style.regexes = list(
-    "UpperCamelCase" = rex::rex(start, upper, zero_or_more(alnum), end),
-    "lowerCamelCase" = rex::rex(start, lower, zero_or_more(alnum), end),
-    "snake_case" = rex::rex(start, one_or_more(loweralnum), zero_or_more("_", one_or_more(loweralnum)), end),
-    "dotted.case" = rex::rex(start, one_or_more(loweralnum), zero_or_more(dot, one_or_more(loweralnum)), end),
-    "alllowercase" = rex::rex(start, one_or_more(loweralnum), end),
-    "ALLUPPERCASE" = rex::rex(start, one_or_more(upperalnum), end),
-    "functionCamel.case" = rex::rex(start, lower, zero_or_more(alnum), zero_or_more(dot, one_or_more(alnum)), end)
-  )
-
-  # incorporate our own camelCase.withDots style.
-  matchesStyles = function(name, styles = names(style.regexes)) {
-    invalids = paste(styles[!styles %in% names(style.regexes)], collapse = ", ")
-    if (nzchar(invalids)) {
-      valids = paste(names(style.regexes), collapse = ", ")
-      stop(sprintf("Invalid style(s) requested: %s\nValid styles are: %s\n", invalids, valids))
-    }
-    name = re_substitutes(name, rex(start, one_or_more(dot)), "") # remove leading dots
-    vapply(
-      style.regexes[styles],
-      re_matches,
-      logical(1L),
-      data = name
-    )
-  }
-
-  object.naming.linter = lintr:::make_object_linter(function(source_file, token) {
-
-    sp = source_file$parsed_content
-    if (tail(c("", sp$token[sp$terminal & sp$id < token$id]), n = 1) == "'$'") {
-      # ignore list member names
-      return(NULL)
-    }
-    sp = head(sp[sp$terminal & sp$id > token$id, ], n = 2)
-    if (!sp$token[1] %in% c("LEFT_ASSIGN", "EQ_ASSIGN")) {
-      # ignore if not an assignment.
-      # we check for LEFT_ASSIGN and EQ_ASSIGN since here we are LEFT_ASSIGN tolerant
-      return(NULL)
-    }
-    if (sp$text[1] == ":=") {
-      return(NULL) # ':=' is parsed as LEFT_ASSIGN but does no actual assignment.
-    }
-    style = ifelse(sp$token[2] == "FUNCTION", "functionCamel.case", "dotted.case")
-    name = lintr:::unquote(token[["text"]])
-    if (nchar(name) <= 1) {
-      # allow single uppercase letter
-      return(NULL)
-    }
-    if (!matchesStyles(name, style)) {
-      lintr:::object_lint(source_file, token, sprintf("Variable or function name should be %s.",
-        style), "object_name_linter")
-    }
-  })
-
-
-  # note that this must be a *named* list (bug in lintr)
-  linters = list(
-    commas = lintr::commas_linter,
-    #  open.curly = open_curly_linter(),
-    #  closed.curly = closed_curly_linter(),
-    spaces.left.parentheses = spaces.left.parentheses.linter,
-    function.left.parentheses = function.left.parentheses.linter,
-    single.quotes = lintr::single_quotes_linter,
-    left.assign = left.assign.linter,
-    right.assign = right.assign.linter,
-    no.tab = lintr::no_tab_linter,
-    trailing.whitespace = lintr::trailing_whitespace_linter,
-    # todo.comment = lintr::todo_comment_linter(todo = "todo"), # is case-insensitive
-    spaces.inside = lintr::spaces_inside_linter,
-    infix.spaces = infix.spaces.linter,
-    object.naming = object.naming.linter)
-  if (exists("T_and_F_symbol_linter", where = "package:lintr")) {
-    linters$T.and.F.symbol = lintr::T_and_F_symbol_linter
-  }
-  if (exists("semicolon_terminator_linter", where = "package:lintr")) {
-    linters$semicolon.terminator = lintr::semicolon_terminator_linter
-  }
-  if (exists("seq_lintr", where = "package:lintr")) {
-    linters$seq = lintr::seq_lintr
-  }
-  if (exists("unneeded_concatenation_linter", where = "package:lintr")) {
-    linters$unneeded.concatenation = lintr::unneeded_concatenation_linter
-  }
-} else {
-  # everything that uses `linters` should check `isLintrVersionOk` first, so the
-  # following should never be used. Make sure that it is an error if it IS used.
-  linters = list(error = "lintr package could not be loaded")
-}
diff --git a/tests/testthat/helper_mock_learners.R b/tests/testthat/helper_mock_learners.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/helper_objects.R b/tests/testthat/helper_objects.R
index 91289c3..d18a608 100644
--- a/tests/testthat/helper_objects.R
+++ b/tests/testthat/helper_objects.R
@@ -214,8 +214,7 @@ test.confMatrix = function(p) {
 
 task.filters.rank = structure(list(type = "surv", weights = NULL,
   blocking = NULL, coordinates = NULL, task.desc = structure(list(
-    id = "VET", type = "surv", target = c("time", "status"
-    ), size = 137L, n.feat = c(numerics = 9L, factors = 0L,
+    id = "VET", type = "surv", target = c("time", "status"), size = 137L, n.feat = c(numerics = 9L, factors = 0L,
       ordered = 0L, functionals = 0L), has.missings = FALSE,
     has.weights = FALSE, has.blocking = FALSE, has.coordinates = FALSE), class = c("SurvTaskDesc",
     "SupervisedTaskDesc", "TaskDesc"))), class = c("SurvTask",
diff --git a/tests/testthat/helper_zzz.R b/tests/testthat/helper_zzz.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_BaggingWrapper.R b/tests/testthat/test_base_BaggingWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_BaseEnsemble.R b/tests/testthat/test_base_BaseEnsemble.R
index 65464aa..dc4f3d2 100644
--- a/tests/testthat/test_base_BaseEnsemble.R
+++ b/tests/testthat/test_base_BaseEnsemble.R
@@ -46,7 +46,7 @@ test_that("BaseEnsemble", {
     list(rpart.xval = 0L, rpart.minsplit = 2L,
       ksvm.filtered.oversampled.fit = FALSE,
       ksvm.filtered.oversampled.C = 2,
-      ksvm.filtered.oversampled.fw.method = "randomForestSRC_importance",
+      ksvm.filtered.oversampled.fw.method = "FSelectorRcpp_information.gain",
       ksvm.filtered.oversampled.fw.perc = 0.5,
       ksvm.filtered.oversampled.osw.rate = 1)))
 
diff --git a/tests/testthat/test_base_BaseWrapper.R b/tests/testthat/test_base_BaseWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_ClassificationViaRegressionWrapper.R b/tests/testthat/test_base_ClassificationViaRegressionWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_ConstantClassWrapper.R b/tests/testthat/test_base_ConstantClassWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_DummyFeaturesWrapper.R b/tests/testthat/test_base_DummyFeaturesWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_FailureModel.R b/tests/testthat/test_base_FailureModel.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_Learner.R b/tests/testthat/test_base_Learner.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_Learner_properties.R b/tests/testthat/test_base_Learner_properties.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_ModelMultiplexer.R b/tests/testthat/test_base_ModelMultiplexer.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_MulticlassWrapper.R b/tests/testthat/test_base_MulticlassWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_NoFeaturesModel.R b/tests/testthat/test_base_NoFeaturesModel.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_PreprocWrapper.R b/tests/testthat/test_base_PreprocWrapper.R
old mode 100644
new mode 100755
index 7ec3ece..4d243dc
--- a/tests/testthat/test_base_PreprocWrapper.R
+++ b/tests/testthat/test_base_PreprocWrapper.R
@@ -47,7 +47,8 @@ test_that("PreprocWrapper with glmnet (#958)", {
     },
     predict = function(data, target, args, control) {
       return(data)
-    })
+    }
+  )
   mod = train(lrn2, multiclass.task)
   pred = predict(mod, multiclass.task)
   expect_error(pred, NA)
diff --git a/tests/testthat/test_base_PreprocWrapperCaret.R b/tests/testthat/test_base_PreprocWrapperCaret.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_SupervisedTask.R b/tests/testthat/test_base_SupervisedTask.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_TaskDesc.R b/tests/testthat/test_base_TaskDesc.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_TuneWrapper.R b/tests/testthat/test_base_TuneWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_UnsupervisedTask.R b/tests/testthat/test_base_UnsupervisedTask.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_aggregations.R b/tests/testthat/test_base_aggregations.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_batchmark.R b/tests/testthat/test_base_batchmark.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_benchmark.R b/tests/testthat/test_base_benchmark.R
old mode 100644
new mode 100755
index 19e1eb4..24b492f
--- a/tests/testthat/test_base_benchmark.R
+++ b/tests/testthat/test_base_benchmark.R
@@ -321,8 +321,7 @@ test_that("benchmark works with ensemble filters", {
 
   expect_class(benchmark(
     learners = tune_wrapper_svm, task = tasks,
-    resampling = rin, measures = list(acc)), "BenchmarkResult"
-  )
+    resampling = rin, measures = list(acc)), "BenchmarkResult")
 })
 test_that("benchmark handles failure models correctly", {
 
@@ -379,10 +378,10 @@ test_that("benchmark handles failure models correctly", {
   # Tests
   # Expect benchmark failing
   suppressMessages(
-  expect_error(benchmark(
-    learners = stop.learner, tasks = task,
-    resamplings = outer,
-    keep.pred = FALSE, models = FALSE, show.info = TRUE))
+    expect_error(benchmark(
+      learners = stop.learner, tasks = task,
+      resamplings = outer,
+      keep.pred = FALSE, models = FALSE, show.info = TRUE))
   )
 
   # Expect benchmark warning
diff --git a/tests/testthat/test_base_blocking.R b/tests/testthat/test_base_blocking.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_caching.R b/tests/testthat/test_base_caching.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_calculateConfusionMatrix.R b/tests/testthat/test_base_calculateConfusionMatrix.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_calculateROCMeasures.R b/tests/testthat/test_base_calculateROCMeasures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_capLargeValues.R b/tests/testthat/test_base_capLargeValues.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_chains.R b/tests/testthat/test_base_chains.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_checkData.R b/tests/testthat/test_base_checkData.R
index 6a77e74..428aa99 100644
--- a/tests/testthat/test_base_checkData.R
+++ b/tests/testthat/test_base_checkData.R
@@ -1,4 +1,3 @@
-
 test_that("checkData", {
   expect_error(
     makeClassifTask(data = binaryclass.df, target = "foo"),
diff --git a/tests/testthat/test_base_checkTaskLearner.R b/tests/testthat/test_base_checkTaskLearner.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_checkTaskSubset.R b/tests/testthat/test_base_checkTaskSubset.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_clustering.R b/tests/testthat/test_base_clustering.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_configureMlr.R b/tests/testthat/test_base_configureMlr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_convertBMRToRankMatrix.R b/tests/testthat/test_base_convertBMRToRankMatrix.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_convertMLBenchObjToTask.R b/tests/testthat/test_base_convertMLBenchObjToTask.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_costs.R b/tests/testthat/test_base_costs.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_costsens.R b/tests/testthat/test_base_costsens.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_createDummyFeatures.R b/tests/testthat/test_base_createDummyFeatures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_createSpatialResamplingPlots.R b/tests/testthat/test_base_createSpatialResamplingPlots.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_debugdump.R b/tests/testthat/test_base_debugdump.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_downsample.R b/tests/testthat/test_base_downsample.R
old mode 100644
new mode 100755
index fe09c46..7020623
--- a/tests/testthat/test_base_downsample.R
+++ b/tests/testthat/test_base_downsample.R
@@ -11,8 +11,7 @@ test_that("downsample", {
         length(rin2$train.inds[[i]]),
         length(rin$train.inds[[i]]) / 2
       )
-    }
-    )
+    })
   }
 })
 
@@ -70,7 +69,8 @@ test_that("training performance works as expected (#1357)", {
     name = "Number",
     fun = function(task, model, pred, feats, extra.args) {
       length(pred$data$response)
-    })
+    }
+  )
 
   rdesc = makeResampleDesc("Holdout", predict = "both")
   lrn = makeDownsampleWrapper("classif.rpart", dw.perc = 0.1)
diff --git a/tests/testthat/test_base_dropFeatures.R b/tests/testthat/test_base_dropFeatures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_estimateResidualVariance.R b/tests/testthat/test_base_estimateResidualVariance.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_fda_extractFDAFeaturesMethods.R b/tests/testthat/test_base_fda_extractFDAFeaturesMethods.R
index 9a6ac3c..589298b 100644
--- a/tests/testthat/test_base_fda_extractFDAFeaturesMethods.R
+++ b/tests/testthat/test_base_fda_extractFDAFeaturesMethods.R
@@ -132,8 +132,7 @@ test_that("Fourier equal to expected", {
   data$fd = matrix(c(
     .6 * cos(2 * pi * t) + .3 * cos(4 * 2 * pi * t + pi / 4),
     .8 * cos(2 * pi * t) + .1 * cos(4 * 2 * pi * t + pi / 4)
-  ), nrow = 2, byrow = TRUE
-  )
+  ), nrow = 2, byrow = TRUE)
   data$a = NULL
 
   extr = extractFDAFourier()
diff --git a/tests/testthat/test_base_fixed_indices_cv.R b/tests/testthat/test_base_fixed_indices_cv.R
index eb3cb9d..f79e1df 100644
--- a/tests/testthat/test_base_fixed_indices_cv.R
+++ b/tests/testthat/test_base_fixed_indices_cv.R
@@ -57,8 +57,8 @@ test_that("fixed in nested resampling", {
   tune.wrapper = makeTuneWrapper(lrn, resampling = inner, par.set = ps,
     control = ctrl, show.info = FALSE, measures = getDefaultMeasure(ct))
   suppressWarnings({
-  p = resample(tune.wrapper, ct, outer, show.info = FALSE,
-    extract = getTuneResult)
+    p = resample(tune.wrapper, ct, outer, show.info = FALSE,
+      extract = getTuneResult)
   })
   expect_length(getResamplingIndices(p, inner = TRUE)[[1]][[1]], 6)
 })
diff --git a/tests/testthat/test_base_generateCalibration.R b/tests/testthat/test_base_generateCalibration.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_generateFeatureImportanceData.R b/tests/testthat/test_base_generateFeatureImportanceData.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_generateHyperParsEffect.R b/tests/testthat/test_base_generateHyperParsEffect.R
old mode 100644
new mode 100755
index df806b6..fb69157
--- a/tests/testthat/test_base_generateHyperParsEffect.R
+++ b/tests/testthat/test_base_generateHyperParsEffect.R
@@ -4,8 +4,7 @@ test_that("generate data", {
   # generate data with nested no trafo
   ps = makeParamSet(makeNumericParam("C",
     lower = -5, upper = 5,
-    trafo = function(x) 2^x)
-  )
+    trafo = function(x) 2^x))
   ctrl = makeTuneControlRandom(maxit = 5L)
   rdesc = makeResampleDesc("Holdout")
   lrn = makeTuneWrapper("classif.ksvm",
@@ -63,16 +62,14 @@ test_that("1 numeric hyperparam", {
   # test facet 1D with non-nested shouldn't produce
   expect_error(plotHyperParsEffect(new,
     x = "iteration", y = "acc.test.mean",
-    plot.type = "line", facet = "nested_cv_run")
-  )
+    plot.type = "line", facet = "nested_cv_run"))
 })
 
 test_that("1 discrete hyperparam", {
   # generate data
   ps = makeParamSet(makeDiscreteParam("kernel", values = c(
     "vanilladot",
-    "polydot", "rbfdot"), default = "rbfdot")
-  )
+    "polydot", "rbfdot"), default = "rbfdot"))
   ctrl = makeTuneControlGrid()
   rdesc = makeResampleDesc("Holdout")
   res = tuneParams("classif.ksvm",
diff --git a/tests/testthat/test_base_generateLearningCurve.R b/tests/testthat/test_base_generateLearningCurve.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_generatePartialDependence.R b/tests/testthat/test_base_generatePartialDependence.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_generateThreshVsPerf.R b/tests/testthat/test_base_generateThreshVsPerf.R
index 3ba5497..f233147 100644
--- a/tests/testthat/test_base_generateThreshVsPerf.R
+++ b/tests/testthat/test_base_generateThreshVsPerf.R
@@ -27,22 +27,22 @@ test_that("generateThreshVsPerfData", {
   suppressMessages(ggsave(path))
   doc = XML::xmlParse(path)
   expect_equal(length(XML::getNodeSet(doc, grey.rect.xpath, ns.svg)),
-               length(pvs$measures))
+    length(pvs$measures))
   expect_equal(length(XML::getNodeSet(doc, black.line.xpath, ns.svg)),
-               length(pvs$measures))
+    length(pvs$measures))
 
   pvs = generateThreshVsPerfData(r, list(tpr, fpr, acc), aggregate = FALSE)
   plotThreshVsPerf(pvs, measures = list(tpr, fpr, acc))
   suppressMessages(ggsave(path))
   doc = XML::xmlParse(path)
   expect_equal(length(XML::getNodeSet(doc, black.line.xpath, ns.svg)),
-              length(pvs$measures) * length(unique(pvs$data$iter)))
+    length(pvs$measures) * length(unique(pvs$data$iter)))
 
   plotROCCurves(pvs, list(fpr, tpr), diagonal = FALSE)
   suppressMessages(ggsave(path))
   doc = XML::xmlParse(path)
   expect_equal(length(XML::getNodeSet(doc, black.line.xpath, ns.svg)),
-              length(unique(pvs$data$iter)))
+    length(unique(pvs$data$iter)))
 
   pvs = generateThreshVsPerfData(r, list(tpr, fpr), aggregate = FALSE)
   plotROCCurves(pvs, list(fpr, tpr), diagonal = FALSE)
diff --git a/tests/testthat/test_base_getCaretParamSet.R b/tests/testthat/test_base_getCaretParamSet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_getFeatureImportance.R b/tests/testthat/test_base_getFeatureImportance.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_getHyperPars.R b/tests/testthat/test_base_getHyperPars.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_getOOBPreds.R b/tests/testthat/test_base_getOOBPreds.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_getParamSet.R b/tests/testthat/test_base_getParamSet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_getTaskData.R b/tests/testthat/test_base_getTaskData.R
old mode 100644
new mode 100755
index 3d0c3eb..1c30eea
--- a/tests/testthat/test_base_getTaskData.R
+++ b/tests/testthat/test_base_getTaskData.R
@@ -27,8 +27,7 @@ test_that("getTaskData", {
   expect_true(all(sapply(df[, multilabel.target], is.factor)))
   expect_true(all(df[multilabel.small.inds, multilabel.target] == data.frame(
     y1 = as.factor(c(TRUE, FALSE, TRUE, TRUE)),
-    y2 = as.factor(c(FALSE, TRUE, FALSE, FALSE)))
-  ))
+    y2 = as.factor(c(FALSE, TRUE, FALSE, FALSE)))))
   expect_equal(rownames(df[multilabel.small.inds, multilabel.target]), c("1", "52", "53", "123"))
 
   df = getTaskData(binaryclass.task, subset = 1:150, features = colnames(binaryclass.df)[1:2])
diff --git a/tests/testthat/test_base_getTaskFormula.R b/tests/testthat/test_base_getTaskFormula.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_helpers.R b/tests/testthat/test_base_helpers.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_hyperpars.R b/tests/testthat/test_base_hyperpars.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_imbal_overbagging.R b/tests/testthat/test_base_imbal_overbagging.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_imbal_overundersample.R b/tests/testthat/test_base_imbal_overundersample.R
old mode 100644
new mode 100755
index fe4905e..86933d0
--- a/tests/testthat/test_base_imbal_overundersample.R
+++ b/tests/testthat/test_base_imbal_overundersample.R
@@ -84,7 +84,8 @@ test_that("training performance works as expected (#1357)", {
     name = "Number",
     fun = function(task, model, pred, feats, extra.args) {
       length(pred$data$response)
-    })
+    }
+  )
 
   y = binaryclass.df[, binaryclass.target]
   z = getMinMaxClass(y)
diff --git a/tests/testthat/test_base_imbal_smote.R b/tests/testthat/test_base_imbal_smote.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_imbal_weightedclasses.R b/tests/testthat/test_base_imbal_weightedclasses.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_impute.R b/tests/testthat/test_base_impute.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_joinClassLevels.R b/tests/testthat/test_base_joinClassLevels.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_learnerArgsToControl.R b/tests/testthat/test_base_learnerArgsToControl.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_listLearners.R b/tests/testthat/test_base_listLearners.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_makeLearners.R b/tests/testthat/test_base_makeLearners.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_makeTask.R b/tests/testthat/test_base_makeTask.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_measures.R b/tests/testthat/test_base_measures.R
old mode 100644
new mode 100755
index c10a5cb..0499cb9
--- a/tests/testthat/test_base_measures.R
+++ b/tests/testthat/test_base_measures.R
@@ -12,7 +12,8 @@ test_that("measures", {
     fun = function(task, model, pred, feats, extra.args) {
       tt = pred
       1
-    })
+    }
+  )
   ms = list(mmce, acc, bac, tp, fp, tn, fn, tpr, fpr, tnr, fnr, ppv, npv, mcc, f1, mymeasure)
 
   lrn = makeLearner("classif.rpart")
@@ -873,7 +874,7 @@ test_that("check measure calculations", {
   dists = as.matrix(dist(data.cluster, method = "euclidian"))
   c2.dists = as.vector(dists[, 3L])
   c2.dists = c2.dists[c2.dists != 0L]
-  c1.dists = unique(as.vector(dists [-3L, -3L]))
+  c1.dists = unique(as.vector(dists[-3L, -3L]))
   c1.dists = c1.dists[c1.dists != 0L]
   con.pairs = vapply(
     c1.dists, function(x) x < c2.dists,
@@ -933,7 +934,8 @@ test_that("measure properties", {
     function(m) {
       res = hasMeasureProperties(m, m$properties)
       all(res) & length(res) > 0
-    })))
+    }
+  )))
   props = listMeasureProperties()
   # all props exist in mlr$measure.properties
   expect_true(all(vlapply(
@@ -941,7 +943,8 @@ test_that("measure properties", {
     function(m) {
       res = all(getMeasureProperties(m) %in% props)
       all(res) & length(res) > 0
-    })))
+    }
+  )))
 })
 
 test_that("measures ppv denominator 0", {
diff --git a/tests/testthat/test_base_mergeBenchmarkResults.R b/tests/testthat/test_base_mergeBenchmarkResults.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_mergeSmallFactorLevels.R b/tests/testthat/test_base_mergeSmallFactorLevels.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_multilabel.R b/tests/testthat/test_base_multilabel.R
index f313ce5..2572b93 100644
--- a/tests/testthat/test_base_multilabel.R
+++ b/tests/testthat/test_base_multilabel.R
@@ -152,7 +152,7 @@ testMultilabelWrapper = function(fun, ...) {
     args = list(...)
     if (!is.null(args$order)) {
       lrn2 = fun(lrn1, ...)
-      expect_error(train(lrn2, multilabel3t.task), "Must be equal to set")
+      expect_error(train(lrn2, multilabel3t.task), "Must be equal to set|Must be a set equal")
     }
   })
 }
diff --git a/tests/testthat/test_base_multilabelWrapperIds.R b/tests/testthat/test_base_multilabelWrapperIds.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_normalizeFeatures.R b/tests/testthat/test_base_normalizeFeatures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_orderBMRLevels.R b/tests/testthat/test_base_orderBMRLevels.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_orderedfactors.R b/tests/testthat/test_base_orderedfactors.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_performance.R b/tests/testthat/test_base_performance.R
old mode 100644
new mode 100755
index 7c46182..5003135
--- a/tests/testthat/test_base_performance.R
+++ b/tests/testthat/test_base_performance.R
@@ -28,7 +28,8 @@ test_that("performance", {
       e2 = mean(t2 != pred$data$response)
       expect_equal(e1, e2)
       0
-    })
+    }
+  )
   r = resample(lrn, task = binaryclass.task, resampling = res,
     measures = mymeasure)
   expect_true(r$aggr >= 0)
@@ -49,7 +50,8 @@ test_that("performance", {
     properties = c("classif", "predtype.response"),
     fun = function(task, group, pred, feats, extra.args) {
       mean(pred$data$truth != pred$data$response)
-    })
+    }
+  )
   rdesc = makeResampleDesc("Holdout")
   r = resample(lrn, binaryclass.task, rdesc, measures = list(mmce, mymeasure))
   expect_equal(as.numeric(r$aggr["mmce.test.mean"]), as.numeric(r$aggr["mym.train.mean"]))
@@ -74,10 +76,10 @@ test_that("performance is NA if 'on.measure.not.applicable' is not 'stop'", {
       expect_warning(expect_equal(unname(performance(pred, auc)), NA_real_))
       # does this also work with benchmark?
       suppressWarnings(
-      expect_warning({
-        b = benchmark(lrn, binaryclass.task, measures = list(acc, auc),
-          resamplings = cv5)
-      })
+        expect_warning({
+          b = benchmark(lrn, binaryclass.task, measures = list(acc, auc),
+            resamplings = cv5)
+        })
       )
       expect_true(any(is.na(as.data.frame(b)$auc)))
       expect_false(any(is.na(as.data.frame(b)$acc)))
diff --git a/tests/testthat/test_base_plotBMRBoxplots.R b/tests/testthat/test_base_plotBMRBoxplots.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_plotBMRRanksAsBarChart.R b/tests/testthat/test_base_plotBMRRanksAsBarChart.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_plotBMRSummary.R b/tests/testthat/test_base_plotBMRSummary.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_plotCritDifferences.R b/tests/testthat/test_base_plotCritDifferences.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_plotLearnerPrediction.R b/tests/testthat/test_base_plotLearnerPrediction.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_plotResiduals.R b/tests/testthat/test_base_plotResiduals.R
index 996579f..3782b56 100644
--- a/tests/testthat/test_base_plotResiduals.R
+++ b/tests/testthat/test_base_plotResiduals.R
@@ -1,70 +1,42 @@
-
 test_that("plotResiduals with prediction object", {
+
+  set.seed(getOption("mlr.debug.seed"))
+
   learner = makeLearner("regr.rpart")
   mod = train(learner, regr.task)
   preds = predict(mod, regr.task)
-  suppressMessages(plotResiduals(preds))
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  # points
-  expect_equal(length(XML::getNodeSet(doc, black.circle.xpath, ns.svg)), getTaskSize(regr.task))
-  # loess
-  expect_equal(length(XML::getNodeSet(doc, mediumblue.line.xpath, ns.svg)), 1L)
-  # rug
-  expect_equal(length(XML::getNodeSet(doc, red.rug.line.xpath, ns.svg)), getTaskSize(regr.task) * 2L)
+  plot = plotResiduals(preds)
+  vdiffr::expect_doppelganger("plotResiduals - regr", plot)
 
   # histogram
-  plotResiduals(preds, type = "hist")
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  expect_equal(length(XML::getNodeSet(doc, black.bar.xpath, ns.svg)), 30L)
-  # task.type == "classif"
+  p_hist = plotResiduals(preds, type = "hist")
+  vdiffr::expect_doppelganger("plotResiduals - hist", p_hist)
+
+  # classif
   learner = makeLearner("classif.rpart")
   mod = train(learner, multiclass.task)
   preds = predict(mod, multiclass.task)
-  plotResiduals(preds)
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  num.points = sum(calculateConfusionMatrix(preds)$result[1:3, 1:3] != 0)
-  expect_true(length(XML::getNodeSet(doc, black.circle.xpath, ns.svg)) > num.points)
+  p_hist = plotResiduals(preds)
+  vdiffr::expect_doppelganger("plotResiduals - classif", p_hist)
+
 })
 
 test_that("plotResiduals with BenchmarkResult", {
   lrns = list(makeLearner("classif.ksvm"), makeLearner("classif.rpart"))
   tasks = list(multiclass.task, binaryclass.task)
   bmr = benchmark(lrns, tasks, hout, measures = getDefaultMeasure(multiclass.task))
-  plotResiduals(bmr, type = "scatterplot")
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  grid.size = length(getBMRTaskIds(bmr)) * length(getBMRLearnerIds(bmr))
-  # facets
-  expect_equal(length(XML::getNodeSet(doc, grey.rect.xpath, ns.svg)), grid.size)
-  # histogram
-  plotResiduals(bmr, type = "hist")
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  # barplot now. We can't test for exact number of bars anymore
-  expect_true(length(XML::getNodeSet(doc, black.bar.xpath, ns.svg)) > 0L)
 
-  # check pretty names
-  testDocForStrings(doc, getBMRLearnerShortNames(bmr), grid.size = 2L)
+  # scatterplot
+  p_scatter = plotResiduals(bmr, type = "scatterplot")
+  vdiffr::expect_doppelganger("plotResiduals - scatter - bmr", p_scatter)
+
+  # histogram - bmr
+  plotResiduals(bmr, type = "hist")
+  p_hist_bmr = plotResiduals(bmr, type = "hist")
+  vdiffr::expect_doppelganger("plotResiduals - hist - bmr", p_hist_bmr)
 
-  plotResiduals(bmr, pretty.names = FALSE)
-  dir = tempdir()
-  path = file.path(dir, "test.svg")
-  suppressMessages(ggsave(path))
-  doc = XML::xmlParse(path)
-  testDocForStrings(doc, getBMRLearnerShortNames(bmr), grid.size = 2L)
+  p_hist_bmr_pretty = plotResiduals(bmr, pretty.names = FALSE)
+  vdiffr::expect_doppelganger("plotResiduals - hist - bmr - pretty", p_hist_bmr_pretty)
 
   # check error when learner short names are not unique
   lrns = list(
diff --git a/tests/testthat/test_base_predict.R b/tests/testthat/test_base_predict.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_prediction_operators.R b/tests/testthat/test_base_prediction_operators.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_relativeOverfitting.R b/tests/testthat/test_base_relativeOverfitting.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_removeConstantFeatures.R b/tests/testthat/test_base_removeConstantFeatures.R
index 67fe732..52ef041 100644
--- a/tests/testthat/test_base_removeConstantFeatures.R
+++ b/tests/testthat/test_base_removeConstantFeatures.R
@@ -25,7 +25,7 @@ test_that("removeConstantFeatures", {
   res = getTaskData(removeConstantFeatures(task, na.ignore = TRUE))
   expect_equal(colnames(res), c("a", "b", "c", "d", "target", "safe"))
 
-  res = getTaskData(removeConstantFeatures(task, tol = 0, na.ignore = TRUE))
+  res = getTaskData(removeConstantFeatures(task, wrap.tol = 0, na.ignore = TRUE))
   expect_true(setequal(colnames(res), c("a", "b", "c", "d", "target", "safe", "n")))
 
   res = getTaskData(removeConstantFeatures(task, na.ignore = FALSE))
diff --git a/tests/testthat/test_base_resample.R b/tests/testthat/test_base_resample.R
index f0bbf76..7e8bd96 100644
--- a/tests/testthat/test_base_resample.R
+++ b/tests/testthat/test_base_resample.R
@@ -206,9 +206,8 @@ test_that("resample drops unseen factors in predict data set", {
   expect_warning(resample(lrn, task, resinst), "produced NAs because of new factor levels")
 
   # do it manually
-  train_task = makeClassifTask("unseen.factors", data[1:4,], "trg", fixup = "quiet") # quiet becasue
+  train_task = makeClassifTask("unseen.factors", data[1:4, ], "trg", fixup = "quiet") # quiet becasue
   # we get dropped factors warning (which we want here)
   model = train(lrn, train_task)
-  expect_warning(predict(model, newdata = data[5:6,]), "produced NAs because of new factor levels")
+  expect_warning(predict(model, newdata = data[5:6, ]), "produced NAs because of new factor levels")
 })
-
diff --git a/tests/testthat/test_base_resample_b632.R b/tests/testthat/test_base_resample_b632.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_b632plus.R b/tests/testthat/test_base_resample_b632plus.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_bs.R b/tests/testthat/test_base_resample_bs.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_convenience.R b/tests/testthat/test_base_resample_convenience.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_cv.R b/tests/testthat/test_base_resample_cv.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_fixedwindowcv.R b/tests/testthat/test_base_resample_fixedwindowcv.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_getResamplingIndices.R b/tests/testthat/test_base_resample_getResamplingIndices.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_growingwindowcv.R b/tests/testthat/test_base_resample_growingwindowcv.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_holdout.R b/tests/testthat/test_base_resample_holdout.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_loo.R b/tests/testthat/test_base_resample_loo.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_makeResampleDesc.R b/tests/testthat/test_base_resample_makeResampleDesc.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_operators.R b/tests/testthat/test_base_resample_operators.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_repcv.R b/tests/testthat/test_base_resample_repcv.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_stratify.R b/tests/testthat/test_base_resample_stratify.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_subsample.R b/tests/testthat/test_base_resample_subsample.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_resample_weights.R b/tests/testthat/test_base_resample_weights.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_selectFeatures.R b/tests/testthat/test_base_selectFeatures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_setPredictType.R b/tests/testthat/test_base_setPredictType.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_simplifyMeasureNames.R b/tests/testthat/test_base_simplifyMeasureNames.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_spcv.R b/tests/testthat/test_base_spcv.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_summarizeColumns.R b/tests/testthat/test_base_summarizeColumns.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_summarizeLevels.R b/tests/testthat/test_base_summarizeLevels.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_train.R b/tests/testthat/test_base_train.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_tuneThreshold.R b/tests/testthat/test_base_tuneThreshold.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_tuning.R b/tests/testthat/test_base_tuning.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_base_weights.R b/tests/testthat/test_base_weights.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_C50.R b/tests/testthat/test_classif_C50.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_IBk.R b/tests/testthat/test_classif_IBk.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_J48.R b/tests/testthat/test_classif_J48.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_JRip.R b/tests/testthat/test_classif_JRip.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LibLineaRMultiClassSVC.R b/tests/testthat/test_classif_LibLineaRMultiClassSVC.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LiblineaRL1L2SVC.R b/tests/testthat/test_classif_LiblineaRL1L2SVC.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LiblineaRL1LogReg.R b/tests/testthat/test_classif_LiblineaRL1LogReg.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LiblineaRL2L1SVC.R b/tests/testthat/test_classif_LiblineaRL2L1SVC.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LiblineaRL2LogReg.R b/tests/testthat/test_classif_LiblineaRL2LogReg.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_LiblineaRL2SVC.R b/tests/testthat/test_classif_LiblineaRL2SVC.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_OneR.R b/tests/testthat/test_classif_OneR.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_PART.R b/tests/testthat/test_classif_PART.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_RRF.R b/tests/testthat/test_classif_RRF.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_ada.R b/tests/testthat/test_classif_ada.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_adaboostm1.R b/tests/testthat/test_classif_adaboostm1.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_binomial.R b/tests/testthat/test_classif_binomial.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_boost.R b/tests/testthat/test_classif_boost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_bst.R b/tests/testthat/test_classif_bst.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_cforest.R b/tests/testthat/test_classif_cforest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_clusterSVM.R b/tests/testthat/test_classif_clusterSVM.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_ctree.R b/tests/testthat/test_classif_ctree.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_cvglmnet.R b/tests/testthat/test_classif_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_dbnDNN.R b/tests/testthat/test_classif_dbnDNN.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_dcSVM.R b/tests/testthat/test_classif_dcSVM.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_earth.R b/tests/testthat/test_classif_earth.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_evtree.R b/tests/testthat/test_classif_evtree.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_extraTrees.R b/tests/testthat/test_classif_extraTrees.R
deleted file mode 100644
index d752b69..0000000
--- a/tests/testthat/test_classif_extraTrees.R
+++ /dev/null
@@ -1,34 +0,0 @@
-
-test_that("classif_extraTrees", {
-  requirePackagesOrSkip("extraTrees", default.method = "load")
-
-  parset.list = list(
-    list(),
-    list(ntree = 100L),
-    list(ntree = 250L, mtry = 4L),
-    list(ntree = 250L, nodesize = 2L, numRandomCuts = 2L)
-  )
-
-  old.predicts.list = list()
-  old.probs.list = list()
-
-  x.vars = setdiff(names(binaryclass.df), binaryclass.target)
-  x.test = as.matrix(binaryclass.df[binaryclass.test.inds, x.vars])
-  x.train = as.matrix(binaryclass.df[binaryclass.train.inds, x.vars])
-  y = binaryclass.df[binaryclass.train.inds, binaryclass.target]
-
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(x = x.train, y = y))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(extraTrees::extraTrees, parset)
-    old.predicts.list[[i]] = predict(m, x.test)
-    old.probs.list[[i]] = predict(m, x.test, probability = TRUE)[, 1L]
-  }
-
-  testSimpleParsets("classif.extraTrees", binaryclass.df, binaryclass.target,
-    binaryclass.train.inds, old.predicts.list, parset.list)
-  testProbParsets("classif.extraTrees", binaryclass.df, binaryclass.target,
-    binaryclass.train.inds, old.probs.list, parset.list)
-})
diff --git a/tests/testthat/test_classif_fdausc.glm.R b/tests/testthat/test_classif_fdausc.glm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_fdausc.kernel.R b/tests/testthat/test_classif_fdausc.kernel.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_fdausc.knn.R b/tests/testthat/test_classif_fdausc.knn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_fdausc.np.R b/tests/testthat/test_classif_fdausc.np.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_featureless.R b/tests/testthat/test_classif_featureless.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_fgam.R b/tests/testthat/test_classif_fgam.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_fnn.R b/tests/testthat/test_classif_fnn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_gamboost.R b/tests/testthat/test_classif_gamboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_gaterSVM.R b/tests/testthat/test_classif_gaterSVM.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_gausspr.R b/tests/testthat/test_classif_gausspr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_gbm.R b/tests/testthat/test_classif_gbm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_geoDA.R b/tests/testthat/test_classif_geoDA.R
deleted file mode 100644
index 1e43591..0000000
--- a/tests/testthat/test_classif_geoDA.R
+++ /dev/null
@@ -1,21 +0,0 @@
-
-test_that("classif_geoDA", {
-  suppressMessages(requirePackagesOrSkip("DiscriMiner", default.method = "load"))
-
-  m = DiscriMiner::geoDA(multiclass.train[, -multiclass.class.col],
-    group = multiclass.train[, multiclass.class.col])
-  p = DiscriMiner::classify(m, newdata = multiclass.test[, -multiclass.class.col])
-  testSimple("classif.geoDA", multiclass.df, multiclass.target, multiclass.train.inds, p$pred_class)
-
-  tt = function(formula, data, subset, ...) {
-    j = which(colnames(data) == as.character(formula)[2])
-    m = DiscriMiner::geoDA(variables = data[subset, -j], group = data[subset, j])
-    list(model = m, target = j)
-  }
-
-  tp = function(model, newdata) {
-    DiscriMiner::classify(model$model, newdata = newdata[, -model$target])$pred_class
-  }
-
-  testCV("classif.geoDA", multiclass.df, multiclass.target, tune.train = tt, tune.predict = tp)
-})
diff --git a/tests/testthat/test_classif_glmboost.R b/tests/testthat/test_classif_glmboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_glmnet.R b/tests/testthat/test_classif_glmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_h2odeeplearning.R b/tests/testthat/test_classif_h2odeeplearning.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_h2ogbm.R b/tests/testthat/test_classif_h2ogbm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_h2oglm.R b/tests/testthat/test_classif_h2oglm.R
index aebc7de..962865e 100644
--- a/tests/testthat/test_classif_h2oglm.R
+++ b/tests/testthat/test_classif_h2oglm.R
@@ -55,5 +55,5 @@ test_that("feature importances are returned", {
   names(feat.imp) = names(feat.imp.h2o)
   feat.imp = feat.imp[order(feat.imp$relative_importance, decreasing = TRUE), ]
 
-  expect_equal(feat.imp, feat.imp.h2o, ignore_attr = "row.names")
+  expect_equal(feat.imp, feat.imp.h2o, ignore_attr = c("row.names", "class"))
 })
diff --git a/tests/testthat/test_classif_h2orandomForest.R b/tests/testthat/test_classif_h2orandomForest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_kknn.R b/tests/testthat/test_classif_kknn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_knn.R b/tests/testthat/test_classif_knn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_ksvm.R b/tests/testthat/test_classif_ksvm.R
index 901ba7e..699c898 100644
--- a/tests/testthat/test_classif_ksvm.R
+++ b/tests/testthat/test_classif_ksvm.R
@@ -51,12 +51,12 @@ test_that("classif_ksvm", {
 test_that("classif_ksvm produces error for new factor levels on predict", {
   # https://github.com/mlr-org/mlr/issues/2771
   train_data = data.frame(
-    A = sample(c("A","B"), 10, TRUE),
+    A = sample(c("A", "B"), 10, TRUE),
     B = factor(sample(c("A", "B"), 10, replace = T))
   )
   test_data = data.frame(
-    A = sample(c("A","B"), 10, TRUE),
-    B = factor(sample(c("A", "B","C"), 10, replace = T))
+    A = sample(c("A", "B"), 10, TRUE),
+    B = factor(sample(c("A", "B", "C"), 10, replace = T))
   )
   lrn = makeLearner("classif.ksvm", fix.factors.prediction = TRUE)
   train_task = makeClassifTask(data = train_data, target = "A")
diff --git a/tests/testthat/test_classif_lda.R b/tests/testthat/test_classif_lda.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_linDA.R b/tests/testthat/test_classif_linDA.R
deleted file mode 100644
index a64dec8..0000000
--- a/tests/testthat/test_classif_linDA.R
+++ /dev/null
@@ -1,20 +0,0 @@
-
-test_that("classif_linDA", {
-  requirePackagesOrSkip("DiscriMiner", default.method = "load")
-
-  m = DiscriMiner::linDA(multiclass.train[, -multiclass.class.col], group = multiclass.train[, multiclass.class.col])
-  p = DiscriMiner::classify(m, newdata = multiclass.test[, -multiclass.class.col])
-  testSimple("classif.linDA", multiclass.df, multiclass.target, multiclass.train.inds, p$pred_class)
-
-  tt = function(formula, data, subset, ...) {
-    j = which(colnames(data) == as.character(formula)[2])
-    m = DiscriMiner::linDA(variables = data[subset, -j], group = data[subset, j])
-    list(model = m, target = j)
-  }
-
-  tp = function(model, newdata) {
-    DiscriMiner::classify(model$model, newdata = newdata[, -model$target])$pred_class
-  }
-
-  testCV("classif.linDA", multiclass.df, multiclass.target, tune.train = tt, tune.predict = tp)
-})
diff --git a/tests/testthat/test_classif_logreg.R b/tests/testthat/test_classif_logreg.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_lssvm.R b/tests/testthat/test_classif_lssvm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_mda.R b/tests/testthat/test_classif_mda.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_mlp.R b/tests/testthat/test_classif_mlp.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_multinom.R b/tests/testthat/test_classif_multinom.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_naiveBayes.R b/tests/testthat/test_classif_naiveBayes.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_neuralnet.R b/tests/testthat/test_classif_neuralnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_nnTrain.R b/tests/testthat/test_classif_nnTrain.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_nnet.R b/tests/testthat/test_classif_nnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_nodeHarvest.R b/tests/testthat/test_classif_nodeHarvest.R
deleted file mode 100644
index a6bb97d..0000000
--- a/tests/testthat/test_classif_nodeHarvest.R
+++ /dev/null
@@ -1,32 +0,0 @@
-
-test_that("classif_nodeHarvest", {
-  requirePackagesOrSkip("nodeHarvest", default.method = "load")
-
-  parset.list = list(
-    list(nodes = 2L),
-    list(nodes = 2L, maxinter = 1L),
-    list(nodes = 2L, mode = "outbag")
-  )
-
-  old.predicts.list = list()
-  old.probs.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    Y = ifelse(binaryclass.df[binaryclass.train.inds,
-      binaryclass.class.col] == binaryclass.class.levs[1], 1, 0)
-    parset = c(parset, list(X = binaryclass.df[binaryclass.train.inds,
-      -binaryclass.class.col], Y = Y, silent = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(nodeHarvest::nodeHarvest, parset)
-    p = predict(m, binaryclass.df[-binaryclass.train.inds, ])
-    old.predicts.list[[i]] = ifelse(p > 0.5, binaryclass.class.levs[1],
-      binaryclass.class.levs[2])
-    old.probs.list[[i]] = p
-  }
-
-  testSimpleParsets("classif.nodeHarvest", binaryclass.df, binaryclass.target,
-    binaryclass.train.inds, old.predicts.list, parset.list)
-  testProbParsets("classif.nodeHarvest", binaryclass.df, binaryclass.target,
-    binaryclass.train.inds, old.probs.list, parset.list)
-})
diff --git a/tests/testthat/test_classif_pamr.R b/tests/testthat/test_classif_pamr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_penalized.R b/tests/testthat/test_classif_penalized.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_plr.R b/tests/testthat/test_classif_plr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_plsdaCaret.R b/tests/testthat/test_classif_plsdaCaret.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_probit.R b/tests/testthat/test_classif_probit.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_qda.R b/tests/testthat/test_classif_qda.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_quaDA.R b/tests/testthat/test_classif_quaDA.R
deleted file mode 100644
index 1d9190f..0000000
--- a/tests/testthat/test_classif_quaDA.R
+++ /dev/null
@@ -1,24 +0,0 @@
-
-test_that("classif_quaDA", {
-  requirePackagesOrSkip("DiscriMiner", default.method = "load")
-
-  m = DiscriMiner::quaDA(multiclass.train[, -multiclass.class.col],
-    group = multiclass.train[, multiclass.class.col])
-  p = DiscriMiner::classify(m, newdata = multiclass.test[, -multiclass.class.col])
-  testSimple("classif.quaDA", multiclass.df, multiclass.target,
-    multiclass.train.inds, p$pred_class)
-
-  tt = function(formula, data, subset, ...) {
-    j = which(colnames(data) == as.character(formula)[2])
-    m = DiscriMiner::quaDA(variables = data[subset, -j], group = data[subset, j])
-    list(model = m, target = j)
-  }
-
-  tp = function(model, newdata) {
-    DiscriMiner::classify(model$model,
-      newdata = newdata[, -model$target])$pred_class
-  }
-
-  testCV("classif.quaDA", multiclass.df, multiclass.target, tune.train = tt,
-    tune.predict = tp)
-})
diff --git a/tests/testthat/test_classif_rFerns.R b/tests/testthat/test_classif_rFerns.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_randomForest.R b/tests/testthat/test_classif_randomForest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_randomForestSRC.R b/tests/testthat/test_classif_randomForestSRC.R
deleted file mode 100644
index 75937e5..0000000
--- a/tests/testthat/test_classif_randomForestSRC.R
+++ /dev/null
@@ -1,31 +0,0 @@
-
-test_that("classif_randomForestSRC", {
-  skip_on_os("mac")
-  requirePackagesOrSkip("randomForestSRC", default.method = "load")
-
-  parset.list = list(
-    list(ntree = 200),
-    list(ntree = 350, mtry = 5L),
-    list(ntree = 250, nodesize = 2, na.action = "na.impute",
-      importance = "permute", proximity = FALSE)
-  )
-  old.predicts.list = list()
-  old.probs.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(data = binaryclass.train,
-      formula = binaryclass.formula, forest = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(randomForestSRC::rfsrc, parset)
-    p = predict(m, newdata = binaryclass.test, membership = FALSE,
-      na.action = "na.impute")
-    old.predicts.list[[i]] = p$class
-    old.probs.list[[i]] = p$predicted[, 1]
-  }
-
-  testSimpleParsets("classif.randomForestSRC", binaryclass.df,
-    binaryclass.target, binaryclass.train.inds, old.predicts.list, parset.list)
-  testProbParsets("classif.randomForestSRC", binaryclass.df,
-    binaryclass.target, binaryclass.train.inds, old.probs.list, parset.list)
-})
diff --git a/tests/testthat/test_classif_ranger.R b/tests/testthat/test_classif_ranger.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_rda.R b/tests/testthat/test_classif_rda.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_rknn.R b/tests/testthat/test_classif_rknn.R
deleted file mode 100644
index 9cc7ff8..0000000
--- a/tests/testthat/test_classif_rknn.R
+++ /dev/null
@@ -1,52 +0,0 @@
-
-test_that("classif_rknn", {
-  requirePackagesOrSkip("rknn", default.method = "load")
-
-  k = c(2L, 4L)
-  r = c(100L, 100L)
-  mtry = c(2L, 3L)
-  parset.grid = expand.grid(k = k, r = r, mtry = mtry)
-  parset.list = apply(parset.grid, MARGIN = 1L, as.list)
-  # rknn needs integer seed for reproducibility
-  parset.list = lapply(parset.list, function(x) c(x, seed = 2015L))
-  parset.list = c(parset.list, list(list(seed = 2015L)))
-
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    train = multiclass.train
-    target = train[, multiclass.target]
-    train[, multiclass.target] = NULL
-    test = multiclass.test
-    test[, multiclass.target] = NULL
-    pars = list(data = train, y = target, newdata = test)
-    pars = c(pars, parset)
-    p = do.call(rknn::rknn, pars)$pred
-    old.predicts.list[[i]] = p
-  }
-
-  testSimpleParsets("classif.rknn", multiclass.df, multiclass.target,
-    multiclass.train.inds,
-    old.predicts.list, parset.list)
-
-  tt = function(formula, data, k = 1L, r = 500L, mtry = 2L, seed = 2015L,
-    cluster = NULL) {
-    return(list(formula = formula, data = data, k = k, r = r, mtry = mtry,
-      seed = seed, cluster = cluster))
-  }
-
-  tp = function(model, newdata) {
-    target = as.character(model$formula)[2L]
-    train = model$data
-    y = train[, target]
-    train[, target] = NULL
-    newdata[, target] = NULL
-    rknn::rknn(data = train, y = y, newdata = newdata, k = model$k, r = model$r,
-      mtry = model$mtry, seed = model$seed, cluster = model$cluster)$pred
-  }
-
-  testCVParsets(t.name = "classif.rknn", df = multiclass.df,
-    target = multiclass.target, tune.train = tt, tune.predict = tp,
-    parset.list = parset.list)
-})
diff --git a/tests/testthat/test_classif_rotationForest.R b/tests/testthat/test_classif_rotationForest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_rpart.R b/tests/testthat/test_classif_rpart.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_rrlda.R b/tests/testthat/test_classif_rrlda.R
deleted file mode 100644
index 8d7dde0..0000000
--- a/tests/testthat/test_classif_rrlda.R
+++ /dev/null
@@ -1,11 +0,0 @@
-
-test_that("classif_rrlda", {
-  suppressMessages(requirePackagesOrSkip("!rrlda", default.method = "load"))
-
-  m = rrlda::rrlda(x = multiclass.train[, -multiclass.class.col],
-    grouping = multiclass.train[, multiclass.target])
-  p = predict(m, x = multiclass.test[, -multiclass.class.col])$class
-
-  testSimple("classif.rrlda", multiclass.df, multiclass.target,
-    multiclass.train.inds, p)
-})
diff --git a/tests/testthat/test_classif_saeDNN.R b/tests/testthat/test_classif_saeDNN.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_sda.R b/tests/testthat/test_classif_sda.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_sparseLDA.R b/tests/testthat/test_classif_sparseLDA.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_svm.R b/tests/testthat/test_classif_svm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_classif_xgboost.R b/tests/testthat/test_classif_xgboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_Cobweb.R b/tests/testthat/test_cluster_Cobweb.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_EM.R b/tests/testthat/test_cluster_EM.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_FarthestFirst.R b/tests/testthat/test_cluster_FarthestFirst.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_MiniBatchKmeans.R b/tests/testthat/test_cluster_MiniBatchKmeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_SimpleKMeans.R b/tests/testthat/test_cluster_SimpleKMeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_XMeans.R b/tests/testthat/test_cluster_XMeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_cmeans.R b/tests/testthat/test_cluster_cmeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_dbscan.R b/tests/testthat/test_cluster_dbscan.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_kkmeans.R b/tests/testthat/test_cluster_kkmeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_cluster_kmeans.R b/tests/testthat/test_cluster_kmeans.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_FeatSelWrapper.R b/tests/testthat/test_featsel_FeatSelWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_FilterWrapper.R b/tests/testthat/test_featsel_FilterWrapper.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_analyzeFeatSelResult.R b/tests/testthat/test_featsel_analyzeFeatSelResult.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_filters.R b/tests/testthat/test_featsel_filters.R
index ac0f568..3387478 100644
--- a/tests/testthat/test_featsel_filters.R
+++ b/tests/testthat/test_featsel_filters.R
@@ -13,7 +13,7 @@ test_that("filterFeatures 1", {
   filter.list.classif = as.character(filter.list$id)[filter.list$task.classif]
   filter.list.classif = setdiff(filter.list.classif, c(
     "univariate.model.score", "permutation.importance", "auc",
-    "univariate", "randomForest_importance", "randomForestSRC_var.select"))
+    "univariate"))
   for (filter in filter.list.classif) {
     filterFeatures(task = multiclass.task, method = filter, perc = 0.5)
   }
@@ -66,22 +66,6 @@ test_that("filterFeatures: auc", {
   expect_equal(fv$data$value, c(0.25, 0.25, 0.5, 0.5, 0.125))
 })
 
-test_that("randomForestSRC_var.select filter handles user choices correctly", {
-  expect_silent(
-    suppressWarnings(generateFilterValuesData(task = multiclass.task,
-      method = "randomForestSRC_var.select",
-      more.args = list("randomForestSRC_var.select" = c(method = "vh",
-        conservative = "high", fast = TRUE))))
-  )
-
-  # method = "vh.imp" is not supported
-  expect_error(
-    suppressWarnings(generateFilterValuesData(task = multiclass.task,
-      method = "randomForestSRC_var.select",
-      more.args = list("randomForestSRC_var.select" = c(method = "vh.imp"))))
-  )
-})
-
 test_that("Custom threshold function for filtering works correctly", {
   biggest_gap = function(values, diff) {
     gap_size = 0
@@ -106,15 +90,6 @@ test_that("Custom threshold function for filtering works correctly", {
   expect_equal(feats, "Petal.Length")
 })
 
-test_that("randomForestSRC_var.select minimal depth filter returns NA for features below the threshold", {
-  dat = generateFilterValuesData(task = multiclass.task,
-    method = "randomForestSRC_var.select",
-    nselect = 5,
-    more.args = list(method = "md", nrep = 5))
-  expect_equal(all(is.na(dat$data$value[dat$data$name %in% c("Sepal.Length", "Sepal.Width")])), TRUE)
-  expect_equal(all(is.na(dat$data$value[dat$data$name %in% c("Petal.Length", "Petal.Width")])), FALSE)
-})
-
 test_that("ensemble filters subset the task correctly", {
 
   # expectation for all filters was checked manually just right after the
diff --git a/tests/testthat/test_featsel_fselectorrcpp.R b/tests/testthat/test_featsel_fselectorrcpp.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_generateFilterValuesData.R b/tests/testthat/test_featsel_generateFilterValuesData.R
index f144586..5363dd3 100644
--- a/tests/testthat/test_featsel_generateFilterValuesData.R
+++ b/tests/testthat/test_featsel_generateFilterValuesData.R
@@ -40,9 +40,8 @@ test_that("filterFeatures", {
   expect_equal(ns, feat.imp.old$data$name)
 
   f = filterFeatures(binaryclass.task, method = "variance", abs = 5L)
-  expect_true(setequal(getTaskFeatureNames(f), head(sortByCol(feat.imp.old$data,
-    "value",
-    asc = FALSE), 5L)$name))
+  expect_true(setequal(getTaskFeatureNames(f),
+    head(setorder(feat.imp.old$dat, -value), 5L)$name))
 
   # now check that we get the same result by operating on
   # generateFilterValuesData
@@ -63,7 +62,7 @@ test_that("filterFeatures", {
   f = filterFeatures(binaryclass.task, method = "variance", abs = 5L)
   expect_true(setequal(
     getTaskFeatureNames(f),
-    head(sortByCol(feat.imp.new$data, "value", asc = FALSE), 5L)$name))
+    head(setorder(feat.imp.old$dat, -value), 5L)$name))
 
   # now check that we get the same result by operating on generateFilterValuesData
   feat.imp.new = generateFilterValuesData(binaryclass.task, method = "variance")
@@ -73,8 +72,7 @@ test_that("filterFeatures", {
   expect_equal(f, ff)
 
   f1 = filterFeatures(binaryclass.task,
-    abs = 1L, mandatory.feat = "V1",
-    ntree = 1L)
+    abs = 1L, mandatory.feat = "V1")
   f2 = subsetTask(binaryclass.task, features = "V1")
   f1$env = NULL
   f2$env = NULL
@@ -172,7 +170,8 @@ test_that("filter values are named and ordered correctly", {
       names(d) = ns
       d = c(d[-1], d[1])
       d
-    })
+    }
+  )
   fv = generateFilterValuesData(regr.task, method = "mock.filter")
   expect_equal(fv$data$name, ns)
   expect_equal(fv$data$value, seq_along(ns))
diff --git a/tests/testthat/test_featsel_plotFilterValues.R b/tests/testthat/test_featsel_plotFilterValues.R
index e66c8ad..c48ff6f 100644
--- a/tests/testthat/test_featsel_plotFilterValues.R
+++ b/tests/testthat/test_featsel_plotFilterValues.R
@@ -1,6 +1,5 @@
-
-cat("plotFilterValues")
 test_that("n.show arg has an effect in plotFilterValues()", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(iris.task, method = "variance")
   fv_plot = plotFilterValues(fv, n.show = 2)
 
@@ -8,6 +7,7 @@ test_that("n.show arg has an effect in plotFilterValues()", {
 })
 
 test_that("feat.type.cols arg has an effect in plotFilterValues()", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(bh.task, method = "praznik_CMIM")
   fv_plot1 = plotFilterValues(fv, feat.type.cols = TRUE)
 
@@ -15,6 +15,7 @@ test_that("feat.type.cols arg has an effect in plotFilterValues()", {
 })
 
 test_that("plotFilterValues shows the correct count when n.show > nfeat", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(bh.task, method = "praznik_CMIM")
   fv_plot2 = plotFilterValues(fv, n.show = 25)
 
@@ -22,16 +23,19 @@ test_that("plotFilterValues shows the correct count when n.show > nfeat", {
 })
 
 test_that("plotFilterValues errors if arg 'filter' is not avail", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(bh.task, method = "praznik_CMIM")
   expect_error(plotFilterValues(fv, filter = "foo"))
 })
 
 test_that("plotFilterValues errors if arg 'filter' is not avail", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(iris.task, method = c("variance", "praznik_CMIM"))
   expect_error(plotFilterValues(fv))
 })
 
 test_that("plotFilterValues arg 'filter' works", {
+  set.seed(getOption("mlr.debug.seed"))
   fv = generateFilterValuesData(iris.task, method = c("variance", "praznik_CMIM"))
   fv_plot3 = plotFilterValues(fv, filter = "variance")
 
diff --git a/tests/testthat/test_featsel_praznik.R b/tests/testthat/test_featsel_praznik.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_rankSimpleFilters.R b/tests/testthat/test_featsel_rankSimpleFilters.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_selectFeatures.R b/tests/testthat/test_featsel_selectFeatures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_featsel_selectFeaturesSequential.R b/tests/testthat/test_featsel_selectFeaturesSequential.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_learners_all_classif.R b/tests/testthat/test_learners_all_classif.R
index ca8e637..1c46b66 100644
--- a/tests/testthat/test_learners_all_classif.R
+++ b/tests/testthat/test_learners_all_classif.R
@@ -12,7 +12,6 @@ test_that("learners work: classif", {
     classif.earth = list(degree = 3L, nprune = 2L),
     classif.gbm = list(bag.fraction = 1, n.minobsinnode = 1),
     classif.lssvm = list(kernel = "rbfdot", reduced = FALSE),
-    classif.nodeHarvest = list(nodes = 100L, nodesize = 5L),
     classif.xyf = list(ydim = 2L),
     classif.h2o.deeplearning = list(hidden = 2L),
     classif.FDboost = list(mstop = 2L)
@@ -92,16 +91,13 @@ test_that("learners work: classif", {
     y = as.factor(rep(c("a", "b"), each = 5))), target = "y")
   lrns = listLearnersCustom(min.task, create = TRUE)
   # FIXME: classif.boosting: Remove if bug is removed in adabag!
-  # FIXME: classif.quaDA: Remove if bug is removed in DiscriMiner::quaDA!
-  # FIXME: classif.rknn: Remove if bug is removed in rknn::rknn!
   # classif.cvglmnet does not claim to work for 1d problems
-  # classif.dbnDNN, classif.evtree, classif.geoDA, classif.linDA, classif.lqa
+  # classif.dbnDNN, classif.evtree, classif.lqa
   # (not im mlr anymore),
   # classif.lvq1, classif.mda (maybe only subset error),
   # classif.pamr (maybe only subset error),
   # classif.plsdaCaret (error maybe fixable in caret),
   # classif.rotationForest (gives some error, no one would use it for 1d anyway),
-  # classif.rrlda error eccours in the learner.
   # classif.cforest: fraction of 0.000000 is too small (only travis?)
   not.working = c(
     "classif.boosting",
@@ -109,17 +105,13 @@ test_that("learners work: classif", {
     "classif.cvglmnet",
     "classif.dbnDNN",
     "classif.evtree",
-    "classif.geoDA",
     "classif.glmnet",
-    "classif.linDA",
     "classif.lvq1",
     "classif.mda",
     "classif.pamr",
     "classif.plsdaCaret",
-    "classif.quaDA",
-    "classif.rotationForest",
-    "classif.rrlda",
-    "classif.rknn")
+    "classif.rotationForest"
+  )
   lrns_sub = lrns[extractSubList(lrns, "id", simplify = TRUE) %nin% not.working]
   foo = suppressWarnings(lapply(lrns_sub, testBasicLearnerProperties,
     task = min.task,
diff --git a/tests/testthat/test_learners_all_clusters.R b/tests/testthat/test_learners_all_clusters.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_learners_all_general.R b/tests/testthat/test_learners_all_general.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_learners_all_multilabel.R b/tests/testthat/test_learners_all_multilabel.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_learners_all_regr.R b/tests/testthat/test_learners_all_regr.R
index 4f889dc..7ca44c9 100644
--- a/tests/testthat/test_learners_all_regr.R
+++ b/tests/testthat/test_learners_all_regr.R
@@ -6,7 +6,7 @@ test_that("learners work: regr ", {
 
   # because of missing rJava for bartMachine
   skip_on_os("windows")
-  #suppressPackageStartupMessages(requirePackagesOrSkip("crs", default.method = "load"))
+  # suppressPackageStartupMessages(requirePackagesOrSkip("crs", default.method = "load"))
 
   # settings to make learners faster and deal with small data size
   hyperpars = list(
@@ -16,7 +16,6 @@ test_that("learners work: regr ", {
       # see above
       replace_missing_data_with_x_j_bar = TRUE,
       num_iterations_after_burn_in = 10L),
-    regr.nodeHarvest = list(nodes = 100L, nodesize = 5L),
     regr.h2o.deeplearning = list(hidden = 2L),
     regr.ranger = list(keep.inbag = TRUE)
   )
@@ -73,7 +72,6 @@ test_that("learners work: regr ", {
   lrns = suppressMessages(listLearnersCustom(min.task, create = TRUE))
   # regr.gbm: Meaningfull error about too small dataset
   # regr.cforest: Error in model@fit(data, ...) : fraction of 0.000000 is too small
-  # regr.nodeHarvest: Error in ZRULES[[1]] : subscript out of bounds
   # others: see learners_all_classif and random errors
   not.working = c(
     "regr.cforest",
@@ -83,7 +81,6 @@ test_that("learners work: regr ", {
     "regr.gbm",
     "regr.glmnet",
     "regr.laGP",
-    "regr.nodeHarvest",
     "regr.slim")
   lrns = lrns[extractSubList(lrns, "id", simplify = TRUE) %nin% not.working]
   foo = suppressWarnings(lapply(lrns, testBasicLearnerProperties, task = min.task,
diff --git a/tests/testthat/test_learners_all_surv.R b/tests/testthat/test_learners_all_surv.R
index a1bd475..aad8597 100644
--- a/tests/testthat/test_learners_all_surv.R
+++ b/tests/testthat/test_learners_all_surv.R
@@ -31,10 +31,10 @@ test_that("learners work: surv ", {
   lrns = listLearnersCustom("surv", properties = "weights", create = TRUE)
   suppressWarnings(
     lapply(lrns, testThatLearnerRespectsWeights, hyperpars = hyperpars,
-    task = surv.task, train.inds = surv.train.inds,
-    test.inds = surv.test.inds,
-    weights = rep(c(1L, 5L), length.out = length(surv.train.inds)),
-    pred.type = "response", get.pred.fun = getPredictionResponse)
+      task = surv.task, train.inds = surv.train.inds,
+      test.inds = surv.test.inds,
+      weights = rep(c(1L, 5L), length.out = length(surv.train.inds)),
+      pred.type = "response", get.pred.fun = getPredictionResponse)
   )
 
   # survival with missings
diff --git a/tests/testthat/test_learners_classiflabelswitch.R b/tests/testthat/test_learners_classiflabelswitch.R
index 6ce8642..5d70f3d 100644
--- a/tests/testthat/test_learners_classiflabelswitch.R
+++ b/tests/testthat/test_learners_classiflabelswitch.R
@@ -40,7 +40,6 @@ hpars = list(
   classif.LiblineaRLogReg = list(type = 7),
   classif.LiblineaRBinary = list(type = 1),
   classif.LiblineaRMultiClass = list(type = 1),
-  classif.nodeHarvest = list(nodes = 100L, maxinter = 1L),
   classif.FDboost = list(mstop = 10L)
 )
 
@@ -50,6 +49,11 @@ test_that("no labels are switched", {
   # because of missing rJava for bartMachine
   skip_on_os("windows")
 
+  # spurious non-deterministic changes
+  skip_on_os("linux")
+
+  set.seed(getOption("mlr.debug.seed"))
+
   configureMlr(on.learner.error = "warn", show.learner.output = FALSE)
 
 
@@ -76,7 +80,7 @@ test_that("no labels are switched", {
       tmp = holdout(lrn, task, split = 0.5, stratify = TRUE)
       # print(as.data.frame(getRRPredictions(tmp)))
       err = tmp$aggr[[1L]]
-      expect_true(!is.na(err) & err <= 1 / 3,
+      expect_true(!is.na(err) & err <= 0.4,
         info = paste(getTaskDesc(task)$id, id, err, sep = ", "))
       err
     })
diff --git a/tests/testthat/test_lint.R b/tests/testthat/test_lint.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_multilabel_cforest.R b/tests/testthat/test_multilabel_cforest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_multilabel_randomForestSRC.R b/tests/testthat/test_multilabel_randomForestSRC.R
deleted file mode 100644
index 87e5b62..0000000
--- a/tests/testthat/test_multilabel_randomForestSRC.R
+++ /dev/null
@@ -1,39 +0,0 @@
-
-test_that("multilabel_randomForestSRC", {
-  skip_on_os("mac")
-  requirePackagesOrSkip("randomForestSRC", default.method = "load")
-
-  parset.list = list(
-    list(),
-    list(ntree = 100),
-    list(ntree = 250, mtry = 3),
-    list(ntree = 250, nodesize = 2, na.action = "na.impute",
-      importance = "permute", proximity = FALSE)
-  )
-  old.predicts.list = list()
-  old.probs.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    for (j in multilabel.target) {
-      multilabel.train[j] = factor(multilabel.train[[j]],
-        levels = c("TRUE", "FALSE"))
-      multilabel.test[j] = factor(multilabel.test[[j]],
-        levels = c("TRUE", "FALSE"))
-    }
-    parset = c(parset, list(data = multilabel.train,
-      formula = multilabel.formula.cbind, forest = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(randomForestSRC::rfsrc, parset)
-    p = predict(m, newdata = multilabel.test, membership = FALSE,
-      na.action = "na.impute")
-    old.predicts.list[[i]] = as.data.frame(lapply(p$classOutput,
-      function(x) as.logical(x$class)))
-    old.probs.list[[i]] = as.data.frame(lapply(p$classOutput,
-      function(x) x$predicted[, 1]))
-  }
-  testSimpleParsets("multilabel.randomForestSRC", multilabel.df,
-    multilabel.target, multilabel.train.inds, old.predicts.list, parset.list)
-  testProbParsets("multilabel.randomForestSRC", multilabel.df,
-    multilabel.target, multilabel.train.inds, old.probs.list, parset.list)
-})
diff --git a/tests/testthat/test_parallel_mpi.R b/tests/testthat/test_parallel_mpi.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_GPfit.R b/tests/testthat/test_regr_GPfit.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_IBk.R b/tests/testthat/test_regr_IBk.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_LiblineaRL2L1SVR.R b/tests/testthat/test_regr_LiblineaRL2L1SVR.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_LiblineaRL2L2SVR.R b/tests/testthat/test_regr_LiblineaRL2L2SVR.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_RRF.R b/tests/testthat/test_regr_RRF.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_bartMachine.R b/tests/testthat/test_regr_bartMachine.R
index 25acf78..cb0e073 100644
--- a/tests/testthat/test_regr_bartMachine.R
+++ b/tests/testthat/test_regr_bartMachine.R
@@ -6,11 +6,11 @@ test_that("regr_bartMachine", {
     list(num_burn_in = 10L, num_iterations_after_burn_in = 10L,
       run_in_sample = FALSE,
       seed = getOption("mlr.debug.seed")
-      ),
+    ),
     list(num_burn_in = 10L, num_iterations_after_burn_in = 10L, alpha = 0.8,
       num_trees = 25L, run_in_sample = FALSE,
       seed = getOption("mlr.debug.seed")
-      )
+    )
   )
 
   old.predicts.list = list()
diff --git a/tests/testthat/test_regr_bcart.R b/tests/testthat/test_regr_bcart.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_bgp.R b/tests/testthat/test_regr_bgp.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_bgpllm.R b/tests/testthat/test_regr_bgpllm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_blm.R b/tests/testthat/test_regr_blm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_brnn.R b/tests/testthat/test_regr_brnn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_bst.R b/tests/testthat/test_regr_bst.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_btgp.R b/tests/testthat/test_regr_btgp.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_btgpllm.R b/tests/testthat/test_regr_btgpllm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_btlm.R b/tests/testthat/test_regr_btlm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_cforest.R b/tests/testthat/test_regr_cforest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_crs.R b/tests/testthat/test_regr_crs.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_ctree.R b/tests/testthat/test_regr_ctree.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_cubist.R b/tests/testthat/test_regr_cubist.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_cvglmnet.R b/tests/testthat/test_regr_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_earth.R b/tests/testthat/test_regr_earth.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_evtree.R b/tests/testthat/test_regr_evtree.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_extraTrees.R b/tests/testthat/test_regr_extraTrees.R
deleted file mode 100644
index 40e7eaf..0000000
--- a/tests/testthat/test_regr_extraTrees.R
+++ /dev/null
@@ -1,29 +0,0 @@
-
-test_that("regr_extraTrees", {
-  requirePackagesOrSkip("extraTrees", default.method = "load")
-
-  parset.list = list(
-    list(),
-    list(ntree = 100L),
-    list(ntree = 250L, mtry = 4L),
-    list(ntree = 250L, nodesize = 2L, numRandomCuts = 2L)
-  )
-
-  x.vars = setdiff(names(regr.num.df), regr.num.target)
-  x.test = as.matrix(regr.num.test[, x.vars])
-  x.train = as.matrix(regr.num.train[, x.vars])
-  y = regr.num.train[, regr.num.target]
-
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(x = x.train, y = y))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(extraTrees::extraTrees, parset)
-    old.predicts.list[[i]] = predict(m, x.test)
-  }
-
-  testSimpleParsets("regr.extraTrees", regr.num.df, regr.num.target,
-    regr.num.train.inds, old.predicts.list, parset.list)
-})
diff --git a/tests/testthat/test_regr_featureless.R b/tests/testthat/test_regr_featureless.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_fgam.R b/tests/testthat/test_regr_fgam.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_fnn.R b/tests/testthat/test_regr_fnn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_frbs.R b/tests/testthat/test_regr_frbs.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_gamboost.R b/tests/testthat/test_regr_gamboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_gausspr.R b/tests/testthat/test_regr_gausspr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_gbm.R b/tests/testthat/test_regr_gbm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_glm.R b/tests/testthat/test_regr_glm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_glmboost.R b/tests/testthat/test_regr_glmboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_glmnet.R b/tests/testthat/test_regr_glmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_h2odeeplearning.R b/tests/testthat/test_regr_h2odeeplearning.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_h2ogbm.R b/tests/testthat/test_regr_h2ogbm.R
index 091db71..76c6d9b 100644
--- a/tests/testthat/test_regr_h2ogbm.R
+++ b/tests/testthat/test_regr_h2ogbm.R
@@ -27,7 +27,7 @@ test_that("regr_h2ogbm", {
     list(ntrees = 5L, histogram_type = "Random", seed = getOption("mlr.debug.seed")),
     list(ntrees = 5L, score_each_iteration = TRUE),
     list(ntrees = 5L, score_tree_interval = 2),
-    list(ntrees = 5L, stopping_rounds = 3, stopping_metric = "MAE"),
+    list(ntrees = 5L, stopping_rounds = 3, stopping_metric = "MAE", score_each_iteration = TRUE),
     list(ntrees = 5L, distribution = "quantile", quantile_alpha = 0.6),
     list(ntrees = 5L, distribution = "tweedie", tweedie_power = 1.1),
     list(ntrees = 5L, distribution = "huber", huber_alpha = 0.8),
diff --git a/tests/testthat/test_regr_h2oglm.R b/tests/testthat/test_regr_h2oglm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_h2orandomForest.R b/tests/testthat/test_regr_h2orandomForest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_kknn.R b/tests/testthat/test_regr_kknn.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_km.R b/tests/testthat/test_regr_km.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_ksvm.R b/tests/testthat/test_regr_ksvm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_laGP.R b/tests/testthat/test_regr_laGP.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_lm.R b/tests/testthat/test_regr_lm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_mob.R b/tests/testthat/test_regr_mob.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_nnet.R b/tests/testthat/test_regr_nnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_nodeHarvest.R b/tests/testthat/test_regr_nodeHarvest.R
deleted file mode 100644
index 1576faf..0000000
--- a/tests/testthat/test_regr_nodeHarvest.R
+++ /dev/null
@@ -1,24 +0,0 @@
-
-test_that("regr_nodeHarvest", {
-  requirePackagesOrSkip("nodeHarvest", default.method = "load")
-
-  parset.list = list(
-    list(nodes = 10L),
-    list(nodes = 10L, maxinter = 1L),
-    list(nodes = 10L, mode = "outbag")
-  )
-
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(X = regr.df[regr.train.inds, -regr.class.col],
-      Y = regr.df[regr.train.inds, regr.class.col], silent = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(nodeHarvest::nodeHarvest, parset)
-    old.predicts.list[[i]] = predict(m, regr.df[-regr.train.inds, ])
-  }
-
-  testSimpleParsets("regr.nodeHarvest", regr.df, regr.target, regr.train.inds,
-    old.predicts.list, parset.list)
-})
diff --git a/tests/testthat/test_regr_penalized.R b/tests/testthat/test_regr_penalized.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_plsr.R b/tests/testthat/test_regr_plsr.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_randomForest.R b/tests/testthat/test_regr_randomForest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_randomForestSRC.R b/tests/testthat/test_regr_randomForestSRC.R
deleted file mode 100644
index 3595718..0000000
--- a/tests/testthat/test_regr_randomForestSRC.R
+++ /dev/null
@@ -1,27 +0,0 @@
-
-test_that("regr_randomForestSRC", {
-  requirePackagesOrSkip("randomForestSRC", default.method = "load")
-
-  parset.list = list(
-    list(ntree = 10),
-    list(ntree = 10, mtry = 5L),
-    list(ntree = 10, nodesize = 2, na.action = "na.impute",
-      importance = "permute", proximity = FALSE)
-  )
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(data = regr.train, formula = regr.formula,
-      forest = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    m = do.call(randomForestSRC::rfsrc, parset)
-    # versison 2.0 of randomForestSRC returns an array here :(
-    p = as.numeric(predict(m, newdata = regr.test, membership = FALSE,
-      na.action = "na.impute")$predicted)
-    old.predicts.list[[i]] = p
-  }
-
-  testSimpleParsets("regr.randomForestSRC", regr.df, regr.target,
-    regr.train.inds, old.predicts.list, parset.list)
-})
diff --git a/tests/testthat/test_regr_ranger.R b/tests/testthat/test_regr_ranger.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_rknn.R b/tests/testthat/test_regr_rknn.R
deleted file mode 100644
index 6d54e81..0000000
--- a/tests/testthat/test_regr_rknn.R
+++ /dev/null
@@ -1,53 +0,0 @@
-
-test_that("regr_rknn", {
-  requirePackagesOrSkip("rknn", default.method = "load")
-
-  k = c(2L, 4L)
-  r = c(10L, 10L)
-  mtry = c(2L, 3L)
-  parset.grid = expand.grid(k = k, r = r, mtry = mtry)
-  parset.list = apply(parset.grid, MARGIN = 1L, as.list)
-  # rknn needs integer seed for reproducibility
-  parset.list = lapply(parset.list, function(x) c(x, seed = 2015L))
-  # to test empty paramset
-  parset.list = c(parset.list, list(list(seed = 2015L)))
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    train = regr.num.train
-    target = train[, regr.num.target]
-    train[, regr.num.target] = NULL
-    test = regr.num.test
-    test[, regr.num.target] = NULL
-    pars = list(data = train, y = target, newdata = test)
-    pars = c(pars, parset)
-    p = do.call(rknn::rknnReg, pars)$pred
-    old.predicts.list[[i]] = p
-  }
-
-  testSimpleParsets("regr.rknn", regr.num.df, regr.num.target,
-    regr.num.train.inds, old.predicts.list, parset.list)
-
-  parset.list[[9]] = NULL
-
-  tt = function(formula, data, k = 1L, r = 10L, mtry = 2L, seed = 2015L,
-    cluster = NULL) {
-    return(list(formula = formula, data = data, k = k, r = r, mtry = mtry,
-      seed = seed, cluster = cluster))
-  }
-
-  tp = function(model, newdata) {
-    target = as.character(model$formula)[2L]
-    train = model$data
-    y = train[, target]
-    train[, target] = NULL
-    newdata[, target] = NULL
-    rknn::rknnReg(data = train, y = y, newdata = newdata, k = model$k,
-      r = model$r,
-      mtry = model$mtry, seed = model$seed, cluster = model$cluster)$pred
-  }
-  testCVParsets(t.name = "regr.rknn", df = regr.num.df,
-    target = regr.num.target, tune.train = tt, tune.predict = tp,
-    parset.list = parset.list)
-})
diff --git a/tests/testthat/test_regr_rpart.R b/tests/testthat/test_regr_rpart.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_rsm.R b/tests/testthat/test_regr_rsm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_svm.R b/tests/testthat/test_regr_svm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_regr_xgboost.R b/tests/testthat/test_regr_xgboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_stack.R b/tests/testthat/test_stack.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_cforest.R b/tests/testthat/test_surv_cforest.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_coxph.R b/tests/testthat/test_surv_coxph.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_cvglmnet.R b/tests/testthat/test_surv_cvglmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_gamboost.R b/tests/testthat/test_surv_gamboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_gbm.R b/tests/testthat/test_surv_gbm.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_glmboost.R b/tests/testthat/test_surv_glmboost.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_glmnet.R b/tests/testthat/test_surv_glmnet.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_measures.R b/tests/testthat/test_surv_measures.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_randomForestSRC.R b/tests/testthat/test_surv_randomForestSRC.R
deleted file mode 100644
index 9825666..0000000
--- a/tests/testthat/test_surv_randomForestSRC.R
+++ /dev/null
@@ -1,30 +0,0 @@
-
-test_that("surv_randomForestSRC", {
-  requirePackagesOrSkip(c("survival", "randomForestSRC"),
-    default.method = "load")
-
-  parset.list = list(
-    list(),
-    list(ntree = 10L),
-    list(ntree = 10L, mtry = 5L),
-    list(ntree = 10L, nodesize = 2L, na.action = "na.impute",
-      splitrule = "logrank", importance = "permute", proximity = FALSE)
-  )
-  old.predicts.list = list()
-
-  for (i in seq_along(parset.list)) {
-    parset = parset.list[[i]]
-    parset = c(parset, list(data = surv.train, formula = surv.formula,
-      forest = TRUE))
-    set.seed(getOption("mlr.debug.seed"))
-    # There are some crazy checks in RFSRC, we have to overwrite the formula here
-    parset$formula = Surv(time, status) ~ .
-    m = do.call(randomForestSRC::rfsrc, parset)
-    p = predict(m, newdata = surv.test, membership = FALSE,
-      na.action = "na.impute")$predicted
-    old.predicts.list[[i]] = drop(p)
-  }
-
-  testSimpleParsets("surv.randomForestSRC", surv.df, surv.target,
-    surv.train.inds, old.predicts.list, parset.list)
-})
diff --git a/tests/testthat/test_surv_ranger.R b/tests/testthat/test_surv_ranger.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_surv_rpart.R b/tests/testthat/test_surv_rpart.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tuneParams.R b/tests/testthat/test_tuneParams.R
old mode 100644
new mode 100755
index 3b33080..d2c393b
--- a/tests/testthat/test_tuneParams.R
+++ b/tests/testthat/test_tuneParams.R
@@ -16,7 +16,7 @@ test_that("names for minimize are set correctly", {
 test_that("tuneParams with resample.fun", {
   cl =
 
-  lrn = makeLearner("classif.rpart")
+    lrn = makeLearner("classif.rpart")
   rdesc = makeResampleDesc("Holdout")
   ps = makeParamSet(
     makeNumericParam("cp", lower = 0.001, upper = 1),
@@ -66,7 +66,7 @@ test_that("tuneParams with resample.fun", {
 
 test_that("tuneParams output works as documented", {
   cl =
-  lrn = makeLearner("classif.ksvm")
+    lrn = makeLearner("classif.ksvm")
   rdesc = makeResampleDesc("Holdout")
   ps = makeParamSet(
     makeNumericParam("C", lower = 0.001, upper = 1)
@@ -101,7 +101,7 @@ test_that("tuneParams output works as documented", {
 test_that("tuneParams output works as documented", {
   cl =
 
-  lrn = makeLearner("classif.ksvm")
+    lrn = makeLearner("classif.ksvm")
   rdesc = makeResampleDesc("Holdout")
   ps = makeParamSet(
     makeNumericParam("C", lower = 0.001, upper = 1)
@@ -137,10 +137,10 @@ test_that("tuning with a fixed ensemble methods and varying base methods works",
 
   cl =
 
-  # TODO: make it possible to choose arbitrary number of base.methods -> cannot
-  # tune an argument of a param. We need to make makeDiscreteVectorParam more
-  # flexible to allow more than one ensemble.method
-  lrn = makeFilterWrapper(learner = "classif.ksvm", fw.method = "E-min")
+    # TODO: make it possible to choose arbitrary number of base.methods -> cannot
+    # tune an argument of a param. We need to make makeDiscreteVectorParam more
+    # flexible to allow more than one ensemble.method
+    lrn = makeFilterWrapper(learner = "classif.ksvm", fw.method = "E-min")
 
   filter.list = listFilterMethods(desc = FALSE, tasks = TRUE, features = FALSE)
   filter.list.classif = as.character(filter.list$id)[filter.list$task.classif]
@@ -170,10 +170,10 @@ test_that("tuning with a fixed ensemble methods and varying base methods works",
 
   cl =
 
-  # TODO: choose arbitrary number of base.methods -> cannot tune an argument of
-  # a param. We need to make makeDiscreteVectorParam more flexible. allow more
-  # than one ensemble.method
-  lrn = makeFilterWrapper(learner = "classif.ksvm", fw.method = "E-min")
+    # TODO: choose arbitrary number of base.methods -> cannot tune an argument of
+    # a param. We need to make makeDiscreteVectorParam more flexible. allow more
+    # than one ensemble.method
+    lrn = makeFilterWrapper(learner = "classif.ksvm", fw.method = "E-min")
 
   filter.list = listFilterMethods(desc = FALSE, tasks = TRUE, features = FALSE)
   filter.list.classif = as.character(filter.list$id)[filter.list$task.classif]
@@ -226,6 +226,5 @@ test_that("passing more than one fw.method raises an error", {
   expect_error(makeFilterWrapper(
     learner = "classif.ksvm",
     fw.method = c("E-min", "E-max"),
-    fw.base.methods = c("gain.ratio", "information.gain"))
-  )
+    fw.base.methods = c("gain.ratio", "information.gain")))
 })
diff --git a/tests/testthat/test_tune_ModelMultiplexer.R b/tests/testthat/test_tune_ModelMultiplexer.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_getTuneResultOptPath.R b/tests/testthat/test_tune_getTuneResultOptPath.R
old mode 100644
new mode 100755
index a113450..4240eea
--- a/tests/testthat/test_tune_getTuneResultOptPath.R
+++ b/tests/testthat/test_tune_getTuneResultOptPath.R
@@ -3,8 +3,7 @@ test_that("getTuneResultOptPath", {
   ctrl = makeTuneControlRandom(maxit = 3L)
   rdesc = makeResampleDesc("CV", iters = 3L)
   ps = makeParamSet(
-    makeDiscreteParam("C", values = seq(1:10)
-  ))
+    makeDiscreteParam("C", values = seq(1:10)))
   rdesc = makeResampleDesc("CV", iters = 3L)
   res = tuneParams("classif.ksvm", task = iris.task, resampling = rdesc,
     par.set = ps, control = ctrl)
diff --git a/tests/testthat/test_tune_tuneCMAES.R b/tests/testthat/test_tune_tuneCMAES.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneDesign.R b/tests/testthat/test_tune_tuneDesign.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneGenSA.R b/tests/testthat/test_tune_tuneGenSA.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneGrid.R b/tests/testthat/test_tune_tuneGrid.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneIrace.R b/tests/testthat/test_tune_tuneIrace.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneMBO.R b/tests/testthat/test_tune_tuneMBO.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneParamsMultiCrit.R b/tests/testthat/test_tune_tuneParamsMultiCrit.R
index 601505b..f6d9503 100644
--- a/tests/testthat/test_tune_tuneParamsMultiCrit.R
+++ b/tests/testthat/test_tune_tuneParamsMultiCrit.R
@@ -46,8 +46,7 @@ test_that("tuneParamsMultiCrit", {
   # suppressed warnings: "generateDesign could only produce 50 points instead of
   # 1000!"
   res = suppressWarnings(tuneParamsMultiCrit(lrn, binaryclass.task, rdesc, par.set = ps,
-    measures = list(tpr, fpr), control = ctrl)
-  )
+    measures = list(tpr, fpr), control = ctrl))
   mycheck(res, 4L * length(ps$pars) + 1L)
 
   # MBO with mbo.control
diff --git a/tests/testthat/test_tune_tuneRandom.R b/tests/testthat/test_tune_tuneRandom.R
old mode 100644
new mode 100755
diff --git a/tests/testthat/test_tune_tuneThreshold.R b/tests/testthat/test_tune_tuneThreshold.R
old mode 100644
new mode 100755
diff --git a/vignettes/img/benchmark_processing.png b/vignettes/img/benchmark_processing.png
new file mode 100644
index 0000000..c6e37c5
Binary files /dev/null and b/vignettes/img/benchmark_processing.png differ
diff --git a/vignettes/img/learn_task.png b/vignettes/img/learn_task.png
new file mode 100644
index 0000000..f1e92f1
Binary files /dev/null and b/vignettes/img/learn_task.png differ
diff --git a/vignettes/img/learner.png b/vignettes/img/learner.png
new file mode 100644
index 0000000..f795b0e
Binary files /dev/null and b/vignettes/img/learner.png differ
diff --git a/vignettes/img/mlrLogo.psd b/vignettes/img/mlrLogo.psd
new file mode 100644
index 0000000..37248ab
Binary files /dev/null and b/vignettes/img/mlrLogo.psd differ
diff --git a/vignettes/img/mlrLogo_blue_141x64.png b/vignettes/img/mlrLogo_blue_141x64.png
new file mode 100644
index 0000000..35ff30a
Binary files /dev/null and b/vignettes/img/mlrLogo_blue_141x64.png differ
diff --git a/vignettes/img/mlrLogo_blue_566x256.png b/vignettes/img/mlrLogo_blue_566x256.png
new file mode 100644
index 0000000..c09ebca
Binary files /dev/null and b/vignettes/img/mlrLogo_blue_566x256.png differ
diff --git a/vignettes/img/mlrLogo_favicon.png b/vignettes/img/mlrLogo_favicon.png
new file mode 100644
index 0000000..74a3096
Binary files /dev/null and b/vignettes/img/mlrLogo_favicon.png differ
diff --git a/vignettes/img/mlrLogo_white_141x64.png b/vignettes/img/mlrLogo_white_141x64.png
new file mode 100644
index 0000000..13d1e28
Binary files /dev/null and b/vignettes/img/mlrLogo_white_141x64.png differ
diff --git a/vignettes/img/mlrLogo_white_566x256.png b/vignettes/img/mlrLogo_white_566x256.png
new file mode 100644
index 0000000..d73913b
Binary files /dev/null and b/vignettes/img/mlrLogo_white_566x256.png differ
diff --git a/vignettes/img/mlrLogo_white_88x40.png b/vignettes/img/mlrLogo_white_88x40.png
new file mode 100644
index 0000000..30b065d
Binary files /dev/null and b/vignettes/img/mlrLogo_white_88x40.png differ
diff --git a/vignettes/img/mlr_logo-120x64.png b/vignettes/img/mlr_logo-120x64.png
new file mode 100644
index 0000000..70740b5
Binary files /dev/null and b/vignettes/img/mlr_logo-120x64.png differ
diff --git a/vignettes/img/nested_resampling.png b/vignettes/img/nested_resampling.png
new file mode 100644
index 0000000..0a33396
Binary files /dev/null and b/vignettes/img/nested_resampling.png differ
diff --git a/vignettes/img/resampling.png b/vignettes/img/resampling.png
new file mode 100644
index 0000000..232ee73
Binary files /dev/null and b/vignettes/img/resampling.png differ
diff --git a/vignettes/img/resampling_desc_and_instance.png b/vignettes/img/resampling_desc_and_instance.png
new file mode 100644
index 0000000..af0c8e5
Binary files /dev/null and b/vignettes/img/resampling_desc_and_instance.png differ
diff --git a/vignettes/img/roc_example.png b/vignettes/img/roc_example.png
new file mode 100644
index 0000000..8baebf8
Binary files /dev/null and b/vignettes/img/roc_example.png differ
diff --git a/vignettes/img/spatial_cross_validation.png b/vignettes/img/spatial_cross_validation.png
new file mode 100644
index 0000000..3c5e7bb
Binary files /dev/null and b/vignettes/img/spatial_cross_validation.png differ
diff --git a/vignettes/img/theoretic_threshold.png b/vignettes/img/theoretic_threshold.png
new file mode 100644
index 0000000..d091a80
Binary files /dev/null and b/vignettes/img/theoretic_threshold.png differ
diff --git a/vignettes/img/theoretic_weight_positive.png b/vignettes/img/theoretic_weight_positive.png
new file mode 100644
index 0000000..a08b201
Binary files /dev/null and b/vignettes/img/theoretic_weight_positive.png differ
diff --git a/vignettes/img/train-basic_processing.png b/vignettes/img/train-basic_processing.png
new file mode 100644
index 0000000..a534986
Binary files /dev/null and b/vignettes/img/train-basic_processing.png differ
diff --git a/vignettes/img/tune-varsel_processing.png b/vignettes/img/tune-varsel_processing.png
new file mode 100644
index 0000000..0c6962e
Binary files /dev/null and b/vignettes/img/tune-varsel_processing.png differ
diff --git a/vignettes/img/variabel_selection_scheme.png b/vignettes/img/variabel_selection_scheme.png
new file mode 100644
index 0000000..f925503
Binary files /dev/null and b/vignettes/img/variabel_selection_scheme.png differ
diff --git a/vignettes/img/weight_positive.png b/vignettes/img/weight_positive.png
new file mode 100644
index 0000000..7c8f45c
Binary files /dev/null and b/vignettes/img/weight_positive.png differ
diff --git a/vignettes/mlr.Rmd b/vignettes/mlr.Rmd
old mode 100644
new mode 100755

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/28/b1970dc05066eba4036416cbf5a64932b6f248.debug
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-classif.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr-pretty.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist-bmr.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-hist.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-regr.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/base_plotResiduals/plotresiduals-scatter-bmr.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/featsel_plotFilterValues/feat-type-cols.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/featsel_plotFilterValues/filter-argument.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/featsel_plotFilterValues/n-show-nfeat.svg
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/_snaps/featsel_plotFilterValues/n-show.svg
-rwxr-xr-x  root/root   /usr/lib/R/site-library/mlr/CITATION
-rwxr-xr-x  root/root   /usr/lib/R/site-library/mlr/doc/mlr.Rmd

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/R/site-library/mlr/CITATION
-rw-r--r--  root/root   /usr/lib/R/site-library/mlr/doc/mlr.Rmd
-rw-r--r--  root/root   /usr/lib/debug/.build-id/e0/d7423bc264d18bde7963da6260f288052dae41.debug
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/helper_lint.R.gz
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_extraTrees.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_geoDA.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_linDA.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_nodeHarvest.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_quaDA.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_randomForestSRC.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_rknn.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_classif_rrlda.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_multilabel_randomForestSRC.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_regr_extraTrees.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_regr_nodeHarvest.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_regr_randomForestSRC.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_regr_rknn.R
-rw-r--r--  root/root   /usr/share/doc/r-cran-mlr/tests/testthat/test_surv_randomForestSRC.R

Control files of package r-cran-mlr: lines which differ (wdiff format)

  • Suggests: r-cran-batchtools, r-cran-bit64, r-cran-caret (>= 6.0-57), r-cran-class, r-cran-clue, r-cran-cluster, r-cran-cowplot, r-cran-discriminer, r-cran-e1071, r-cran-earth, r-cran-emoa, r-cran-fnn, r-cran-forecast (>= 8.3), r-cran-fpc, r-cran-gbm, r-cran-ggpubr, r-cran-glmnet, r-cran-hmisc, r-cran-irace (>= 2.0), r-cran-kernlab, r-cran-knitr, r-cran-lintr (>= 1.0.0.9001), r-cran-mass, r-cran-mda, r-cran-memoise, r-cran-modeltools, r-cran-nnet, r-cran-numderiv, r-cran-pander, r-cran-party, r-cran-pec, r-cran-pls, r-cran-randomforest, r-cran-ranger (>= 0.8.0), r-cran-rappdirs, r-cran-rex, r-cran-rgenoud, r-cran-rmarkdown, r-cran-rmpi, r-cran-rocr, r-cran-rpart, r-cran-sf, r-cran-snow, r-cran-svglite, r-cran-tgp, r-cran-th.data, r-cran-tidyr, r-cran-vdiffr

Control files of package r-cran-mlr-dbgsym: lines which differ (wdiff format)

  • Build-Ids: e0d7423bc264d18bde7963da6260f288052dae41 28b1970dc05066eba4036416cbf5a64932b6f248

More details

Full run details