From 976d20d80f354cb25b49c586231b5ab6a3073ba8 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Tue, 3 Dec 2024 15:32:19 +0000 Subject: [PATCH] Publish version 2.0.0a6 --- doc-sources/changelog.rst | 7 ++ .../conceptual-overview.ipynb | 2 +- doc-sources/get-started.rst | 8 +-- doc-sources/get-started/get-started.ipynb | 8 +-- doc-sources/user-guide.rst | 2 +- .../alglib-learning/alglib-learning.ipynb | 2 +- .../gpu-learning/gpu-learning.ipynb | 2 +- .../sat-learning/sat-learning.ipynb | 4 +- .../synthetic-data/synthetic-data.ipynb | 8 +-- docs/.buildinfo | 2 +- docs/.doctrees/changelog.doctree | Bin 89333 -> 90702 bytes docs/.doctrees/contributor-guide.doctree | Bin 94484 -> 93366 bytes docs/.doctrees/environment.pickle | Bin 486849 -> 476738 bytes docs/.doctrees/get-started.doctree | Bin 45293 -> 45293 bytes docs/.doctrees/reference.doctree | Bin 873354 -> 851063 bytes docs/.doctrees/reference/lincs.doctree | Bin 629433 -> 612857 bytes docs/.doctrees/user-guide.doctree | Bin 110761 -> 110761 bytes docs/README.html | 4 +- docs/_sources/changelog.rst.txt | 7 ++ docs/_sources/get-started.rst.txt | 8 +-- docs/_sources/reference/lincs.rst.txt | 24 ------- docs/_sources/user-guide.rst.txt | 2 +- docs/_static/documentation_options.js | 2 +- docs/changelog.html | 13 +++- docs/conceptual-overview.html | 4 +- docs/contributor-guide.html | 10 +-- docs/genindex.html | 34 +-------- docs/get-started.html | 12 ++-- docs/get-started.ipynb | 8 +-- docs/index.html | 4 +- docs/objects.inv | Bin 3861 -> 3787 bytes docs/py-modindex.html | 4 +- docs/python-api.html | 4 +- docs/reference.html | 65 +----------------- docs/reference/lincs.html | 40 +---------- docs/roadmap.html | 4 +- docs/search.html | 4 +- docs/searchindex.js | 2 +- docs/single-peaked.html | 4 +- docs/user-guide.html | 6 +- .../all-options-of-problem-generation.ipynb | 20 +++--- .../enumerated-criteria.ipynb | 8 +-- ...ail-generating-balanced-alternatives.ipynb | 2 +- .../integer-criteria/integer-criteria.ipynb | 8 +-- .../learning-failure-exception.ipynb | 2 +- .../python-module-is-executable.ipynb | 12 ++-- .../read-from-stdin/read-from-stdin.ipynb | 2 +- .../real-criteria/real-criteria.ipynb | 8 +-- .../single-peaked-criteria.ipynb | 8 +-- integration-tests/verbose/verbose.ipynb | 6 +- lincs/__init__.py | 2 +- 51 files changed, 128 insertions(+), 260 deletions(-) diff --git a/doc-sources/changelog.rst b/doc-sources/changelog.rst index cdffeebd..662fd1f6 100644 --- a/doc-sources/changelog.rst +++ b/doc-sources/changelog.rst @@ -4,6 +4,13 @@ Changelog ========= +Version 2.0.0a6 (2024-12-03) +============================ + +- Remove everything related to our in-house Simplex +- Upgrade to OR-Tools 9.11 on Windows +- Upgrade to CUDA 12.4 + Version 2.0.0a5 (2024-11-08) ============================ diff --git a/doc-sources/conceptual-overview/conceptual-overview.ipynb b/doc-sources/conceptual-overview/conceptual-overview.ipynb index f394b575..1ab8ee9a 100644 --- a/doc-sources/conceptual-overview/conceptual-overview.ipynb +++ b/doc-sources/conceptual-overview/conceptual-overview.ipynb @@ -21,7 +21,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs classify problem.yml model.yml alternatives.csv\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs classify problem.yml model.yml alternatives.csv\n", "name,Math,Physics,Literature,History,category\n", "A,1,1,1,1,\"Full scholarship\"\n", "B,1,1,1,0,\"Full scholarship\"\n", diff --git a/doc-sources/get-started.rst b/doc-sources/get-started.rst index 90e902a2..3b117e16 100644 --- a/doc-sources/get-started.rst +++ b/doc-sources/get-started.rst @@ -73,7 +73,7 @@ The generated ``problem.yml`` should look like: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 40 + # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 40 kind: classification-problem format_version: 1 criteria: @@ -144,7 +144,7 @@ It should look like: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort + # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort kind: ncs-classification-model format_version: 1 accepted_values: @@ -217,7 +217,7 @@ It should start with something like this, and contain 1000 alternatives: .. code:: text - # Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0 + # Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0 name,"Criterion 1","Criterion 2","Criterion 3","Criterion 4",category "Alternative 1",0.37454012,0.796543002,0.95071429,0.183434784,"Best category" "Alternative 2",0.731993914,0.779690981,0.598658502,0.596850157,"Intermediate category 1" @@ -253,7 +253,7 @@ so it is numerically different: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 + # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 kind: ncs-classification-model format_version: 1 accepted_values: diff --git a/doc-sources/get-started/get-started.ipynb b/doc-sources/get-started/get-started.ipynb index 8199d71c..2ebf0edd 100644 --- a/doc-sources/get-started/get-started.ipynb +++ b/doc-sources/get-started/get-started.ipynb @@ -48,7 +48,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 40\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 40\n", "kind: classification-problem\n", "format_version: 1\n", "criteria:\n", @@ -126,7 +126,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", @@ -211,7 +211,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0\n", "name,\"Criterion 1\",\"Criterion 2\",\"Criterion 3\",\"Criterion 4\",category\n", "\"Alternative 1\",0.37454012,0.796543002,0.95071429,0.183434784,\"Best category\"\n", "\"Alternative 2\",0.731993914,0.779690981,0.598658502,0.596850157,\"Intermediate category 1\"\n", @@ -260,7 +260,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", diff --git a/doc-sources/user-guide.rst b/doc-sources/user-guide.rst index 34ae64c0..6d1ef61b 100644 --- a/doc-sources/user-guide.rst +++ b/doc-sources/user-guide.rst @@ -512,7 +512,7 @@ They produce a different kind of model, with the sufficient coalitions specified .. code:: yaml - # Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions + # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions kind: ncs-classification-model format_version: 1 accepted_values: diff --git a/doc-sources/user-guide/alglib-learning/alglib-learning.ipynb b/doc-sources/user-guide/alglib-learning/alglib-learning.ipynb index e6b3f5cd..d9166bec 100644 --- a/doc-sources/user-guide/alglib-learning/alglib-learning.ipynb +++ b/doc-sources/user-guide/alglib-learning/alglib-learning.ipynb @@ -27,7 +27,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver alglib --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver alglib --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", diff --git a/doc-sources/user-guide/gpu-learning/gpu-learning.ipynb b/doc-sources/user-guide/gpu-learning/gpu-learning.ipynb index d4dd759f..b48db892 100644 --- a/doc-sources/user-guide/gpu-learning/gpu-learning.ipynb +++ b/doc-sources/user-guide/gpu-learning/gpu-learning.ipynb @@ -27,7 +27,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor gpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor gpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", diff --git a/doc-sources/user-guide/sat-learning/sat-learning.ipynb b/doc-sources/user-guide/sat-learning/sat-learning.ipynb index 40c82c7a..182531b2 100644 --- a/doc-sources/user-guide/sat-learning/sat-learning.ipynb +++ b/doc-sources/user-guide/sat-learning/sat-learning.ipynb @@ -22,7 +22,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", @@ -58,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy max-sat-by-separation --ucncs.max-sat-by-separation.solver eval-max-sat --ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads 0 --ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize 60 --ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time 2\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy max-sat-by-separation --ucncs.max-sat-by-separation.solver eval-max-sat --ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads 0 --ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize 60 --ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time 2\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", diff --git a/doc-sources/user-guide/synthetic-data/synthetic-data.ipynb b/doc-sources/user-guide/synthetic-data/synthetic-data.ipynb index 1e176169..b0c7a5ec 100644 --- a/doc-sources/user-guide/synthetic-data/synthetic-data.ipynb +++ b/doc-sources/user-guide/synthetic-data/synthetic-data.ipynb @@ -14,7 +14,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 57\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 57\n", "kind: classification-problem\n", "format_version: 1\n", "criteria:\n", @@ -63,7 +63,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 58 --model-type mrsort\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 58 --model-type mrsort\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", @@ -101,7 +101,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 59 --misclassified-count 0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 59 --misclassified-count 0\n", "name,\"Criterion 1\",\"Criterion 2\",\"Criterion 3\",\"Criterion 4\",category\n", "\"Alternative 1\",0.924035132,0.804616809,0.157870576,0.637420833,\"Best category\"\n", "\"Alternative 2\",0.866915047,0.979161799,0.0841569453,0.397855282,\"Best category\"\n", @@ -224,7 +224,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 60 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", + "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 60 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n", "kind: ncs-classification-model\n", "format_version: 1\n", "accepted_values:\n", diff --git a/docs/.buildinfo b/docs/.buildinfo index c6bd2fee..92e44814 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 88504dbe04610ddd1d4ea68501c7ffca +config: f17313be3d1f486c3bc586b70b9187cb tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/changelog.doctree b/docs/.doctrees/changelog.doctree index 043cad95376eb258f4fa3dc2ebbbe0a054d44b25..c5af5b8305457e5d5163f18c09f700a00a887b4f 100644 GIT binary patch delta 15086 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 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index b3d70eb0412362ab4ea5bbf544d01eb8f1836ddc..e2258fc450046e1355feb695b209049ce79fc397 100644 GIT binary patch literal 476738 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≠smR@FE2wRm6y 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 aGyX}BKhwReQa=O4h6c;y+L`K1<^O+0SeF6- literal 486849 zcmdpf37jNFmHyn*b6-98RYMQVMb(@z!_C~lFvB+dHuU77Xb z#rM8=@5PJA$eYIAKVrnl5#)c3nbmS8TRf34i^sB+Qn6qbYlDsH+v?eTdZ+8F`vzCt zJb1(4%EoA;Tprxln3yi5Y8BH=XDfq^nQM=y*TNUowF&F%>R@ABwUVM&r&(9y)l$8Z zGRdV>so0n8A8bsq8n^!*x1C*ZTANThW>zZMH2ms@!N%CCS*z35%@Z}VSk0D-)xoPl zsX2BhPSg_p*;=OFTQ>ShOOx4!WGbIc9UW{eWq(3*wMw=(kv3~aHeXGEnr5n&J!V2z zT#^b#Et4}&3^r!DzU;3U<;=0{b%Tu=?Av&*3TmV>X2BS2OezdiYss=vshX8RvoXG0 zDdj*ksGiRjQ=rgwqC8Q&6iR} zer-P6yS6+4$`&^!wyaHOtF?I9NF61XSj(_l>nO6;#?kplB2}#dWXqU@WW8!8>&0v9 zMn2n@HPgx3K-o+djRHV&dt<6uuJU6dFx*cd~! zrgtvMEY0jDcaDcaK*&Cr*+qYvIVID>WQ?tq(#C-OePaUsGucwMDwEk&7NKiHUaeWg^Y-H^E6zIMa)FcxpH z1jqVK;M9p)(#Ypa$CG{a>#iF})+$D^3XG(q^<-nbbr0!cW0C7(67cA+m|)aY-l$dq zyOT_vi3Li=B={B>NZDfAJYluhMU3DIl&f1%1$uNsxUN9((h5tDz0+a1 z3ZrS%>eV)slhbCOQP00VGvL?q#J4%j0q$A=SQeYX?iDWOhexU9?_WhKjrdduNH!4LiilfYoYQ0>hv~jLnZ8bIrAf$AGAyz1q zioh_FumY}Ag(m_rl4d!ZFZJ7|psg!Avgj+G`bG%+eg?woqgvDUN^uMxG=e36lugt)+;dfnS`!lwpNC)H86OR z-Za(vJDKe-mcTV#&3@bM{Td9}597nSIF30y+nTd1{|7z~{*_FdWrz@aM$+~&XJ$6D zh8Gu%6WIb>2fh~#GG3Apz2HA)u^;ZY)SE`aV-m#lniVqM?KWo6@6BrgYTM6RznEnI z0^Ey@;KW+KngsWj?HjPannb=z0S7C!s@>Q`2nWzgKakG;YEl)DuU%UQ@;dgI>H02d zSblxq0Sy}?!PulnIG)BeiR4%lc1eReC;qFf?_)5-?uh0MClde$Pt%+7l}H#Ha(;5)6s zFq#Qvu#vAJ;j~7(b88hMHuUFKcl+R1lHdzS)@hl&oAwjN68k=RJeww?Z3O!j>kaj; zFy@JO&KAiivyfw#NfN~3-R-O=)2U2Ihf|d-b)OEZ?247y)@zV3+IY{Pzd2sXlH`O$ z6$s-KA*0M*2Wha8XANdnWma3>mu5|rbaukWF3faYa50a0Qg)3pud$Hkx-lyyje+N^ zlW0LRfI%k9N-IH&TCyhnE0(2tV$KBGFnH?{_ywxUWcp2?aV!g9SYKu~WH!>PnN689 z*gw`}PG|Q|qxXYPt{C3_&Ss(^_ej>uX~?J{X4AxqHp7z3D)6%xvVBN2m^Ahy2;YEq zsc7UuB%y?Tc@~w)q6M*RmduB4cPmmhAvFa6k2>FX)8Fv#leA-vQJ?v+)h0`Q-CUs> zS{Rq}*_uV7ldK_jfn=RYmg(3Uu$Cw%*#)A9eQ^#|gMV+QSdB4>8YELpH0vKx1x84* zY8sVPhGeHMg~;%;e`}eHDMT9cU0~v1!Pr*V;TYV&qOkQ# z#t<@8NET?DhIPJFua)a0x3W{eu{8Cwy2pk9BomM#L6QUczGEe3cotYmM6?pn#;8Qh z`mu#B#e^qF76evL*+u{8V$IsUOhNF6(Y=c%1(sD{`UUi){)fbB$7rmpB=nHP!ZySr z3LTld(5VZJ?!}Uw&E>{HX@FUbHB7@c#I3-W7PBCap;KlykQ(P? zYPE9p?6qrC>0%;RO`G}bu}Y$7*47rwg|*hb7j9f@R?mQ$;fZ*mkdLQ`Zg8^&8qG3b z67G(5luT3YrYyHfLiDJsR>Cyrs#Sv~Q{VY9%tawE570P1>Z(_ho36HRas&Y(`XDi} z3}XLw1LTfD-*5DPZ%=(Jb^r^nBJp~<{XLmu(TS#YVX}RpPD0^HcK1yCO94jT& z>^QLV;KB0;SQyY$iv^VvkH(r^D}GO071fWgvF z0#~D}oQCWez9Hm7>OO{%**bnJ75*Q#yCg}qG-BflBDmrv(Mf?)| zeh&NI6;hl8hF+h+uG8X#H6J5mp{uu4ItpL1np3`1sg#aGeTB)KWc`NLdvb3jQtP zt{g8_j*{8Ip0UD@jA9CM8xkC-xOu!K>k0>?G3uISHpgRO_mP5RB3dQa*B05h9vK5TY3sZB5!eDGHm2oq#GZ6iI3| zXEr`9mCUA-P%4Ikd7VtPfhF|bnWP>JSwYaX>8T`3sE?WhFiO(YzK!va*Fr&obcp_| z)CanQo65r%Bx>eKM3_L5m~4^cag8og=YaYH%)6&pC1_F@tU&2*axGJV;hdzEOK@vc zrKKq#rbOvtZmL{nDX~}>qJn178v?uCO)iCYd>OearNeY`CnR9?e&|E#D9keL!NV_5 zmXTE!``XH!am-+IKe<-sL&-B+b`^4Zp&$>%*lGqulCEafTI5)6)!n6(KgGJ)%BzTz zfQcMTG|UQ2c}S_=nFY^=@dvKJ%$FgZDW&nZdq7iygC^KkXYKE!vmcI%>oS zl1y~-%W3l%sdCYx{aCXYhhgvBHjm$CHD?!C8Y9>9+otl{*fh}*;A-b+FDXf4CmbB zLaqu~3mb5m1I~4qj;zoR1s~_)G~R+W5ueDS!bM;*4%k9|8<{td${_d!QuqN^!L8(i z-?@!dOt0p$=5SfG-!NOEOI3|&bTO$nTU?vT)@#{3|A`AKM=tx#4CgoY1^%lTZwQ!5 zR&9t|f;BHfQt&%KQU{0Wz$(U4UZ*3)Yx*T6=nN9iytg#EC{_^0Eay+>c=VotX)eDA zzw%FYr(Fw)6&WPFd27~eU7%}Uv@~xQI;;ycA%j%92=#_z_FU6_O_)2)AhQdas*yp;v%e86R&7VnPcB)EmAVd|#q;%pU$ zEVm^~#XLzD>BTAZVt-%3^X(k^EtJgdVQa1T-(?{>i(a?Kb#(v=jC5s(ikwR?f)Qyo zr0NWNyUB(0IvIxiS`soUAV9Bu&vbeZxa=e=U=yRSB+IikvISu*t!=}3SIJG3L(r}_PFsZi&H)c(1 zY^~WvGSwkN$c`v>)tP~6U#;dL`ylI(c2Q?4?J~{V3y`{!i5z1&{oYP=Sz&<|IBovU zrZ>>YlY~lT5`q;Zi-UXqnf-nyyJUiL9VasNAgloWOI*lPys>aCc;r}-b z-s(|+*b5eltaW8-JzD_=TAG%s=wuP*{kkz5*3?*cCw{5}j+5oF7kN^T~MG zglQ+-GXdsB#eS2l(c1d~8WSA3uwMscq+o3m>PK<1sB|oA9v{5B-kZ6EjNs{3Kdo_@ zNDb~8-I(Y9lC}W*jR<;k{TH*=Vg_8ZHw-z_V0+Y_35{;wPiUe;WLZucHcF8d<7$Fu z^h6DNr;&Y?P-1Y;sK#ucIEM4!o-soEWUmAKz^_)dmL^}1V{!)foLz5pTbVKO695=n zu^2qrnCbZ*O5L#54BIv=m0;X9x&Rlln8ZBdR1%oTB+*)3Z;XP(y)nfqMgukAPMGMC z;R@wYl2E|pl)@zT)!S?<+pdy5X4erHB!UV9RzB-Yj*upX@GWe&h@H?kz2wAaMz zjV=-aNh(1?S8n9!5hLyxKkKI#p3!^SxZG&^*L%lorGJg5f8GCEcI{7)E!;8w)^}e( zuZ^YGUYN}8{4>4w>y7NMarD}k|C;?Zf&TUDhuB{u=wB~=iv2Z){`K-x+o;S@^soK@ zw3GhTMgN+-W*_;h-hfRrq@oKUlI(A3OoF;?9^j>6qcO=!d!XQ38@vz5NUG$(M!0b_ z8L#&ZzG3hH^p^CGc&9}!_p%m{C+R=g>jw-Xyd-sR+xx5~i=%n^{oOf&2>Ja)=DFx5 zqPugX_vBk^x=cJBTXnW}zR@qv+L&C&qz`@D8B(`xIZNuc^>WhAS}!GSgVTkD+^4(x zn8=m~ioJtPaM*0Mb$5>Ngy6QpaouZ=WvgU&-*t3VBo5hp1$;HFeKR}6*C*C96mdUd z(BGXSWF$?-1ERrN>$|vl!XSmGxZCoCjpT>35(!Haw!Jek02}ifvmEEZ0+_YCj0%Xm zZ=4N3hd#kzE_lA58Sv%ZFjlRdWa+`&W>6q^HvES%nT*@J1}#E6ytE_g-8nK^;W`M&y^p?oZ>b?kj$Y-2o2IU(B_U$4^M!>!nZ=wYEWC4Jxo~3;xvw8&dcm zq?`wQBy)p$V|>kk@+#S-X=z;VrKHK-3N10+b0^`SnO(U%-~-hCEBI(k+HKZicK*eb z%-stYa&LqGfP%UE;8RDj+~1I9xK6~tO?0x!?N;Z55vfCn)lP2aOM1G3zOgfbN-gaL8Q) zzkrBxgnjg~k2L$}qaSsD93T-m6j#>vgah`rbWh{QKwt!ssot2FFToyXvLTTt1T;{y zKuRJa%};V97||3ZN5TNjQgX!O(nKXkoE*(Ta>TjNG$cocGR;JCWCYP(ziP7Gj`9~7>g$L)?psR_MLf|`vHX1N$8yC=^2OYfQ5W3NYQavK%P9 zux)LSpBS{<8}eJL2`3E>yN!}3C8GLxMuKpsUmUC<0Dv&&+et1QHteG7q?Cp8kyT9N|rVG;*bCAzG{B;7?N z*1t=6bFUkrM@^Q6ekJ^_&-Cz zbJBb1k>JArhpHl;fFCjze2F<9zhCN%Q> zuoJ$PDR_rP*Vw2mw!yKO5ht3(L9;m5EDoA6Te>t8Og9$P(;PaZR7Lnr$5Vjj9^7)J zoPP&5n>4YcIKDM99H;eI%Nud4Spmy8>tlJpst7*%?`7s_b$&H@ z7d#zAf;B9BdL!}^kwHGChpfPnI7}NA0ROluTHFDAL{)?zaD@Q52HIvZmJJ~V5nPLk zYDc&h%o%EF(eg-d6>++Dunf^#$oX&RbG4Vvdb{i=eZ7-j*r81eIjfu2aYl{9CYDyt z#9Pi~A!Xi|%hCVRLOs#YuGWl?!L}7xZT7@Y)&&gafphJES>9~$S2U}RQvl*tgw%QHf*qKM{3!iTGpAV02C z^!I!+Ese@hUGA&M@eZwKLv5a1)CYucFQ3`;t50h`3x) z1bH~nu3R!@4pK>>V+)_%SrnLjknA{v;teSWc&Km}vBzgK|oTKJ*p+=)82 zb6@bxO%KM%E?T3QCJxt((TZpvIk3f@pRz7QL7Y`Rbfp+-On{r^^W6%?xk8rf!Gx zOdRPaR7Loa#<0+e6an=i79;Soa$KGDsy%v+{*bNvga!YVxd$L0gDn_rZ;UrRbe3nF z)v`~p*!%?hc#?g5hJAdFemMI?oE@&?VW%!V@agKom9Sh#le}AD;Vy8uE4ko_?&J&i zj$HaT-`WK`t@pu0b}*=&Z3Xlz*ZK*$BVczf`P$h5O#X1~&b<{5benALYa){@vQK4Y zu4_Du#fjuUlgWRklK)I6|Cvet(@p*}hx}(A{Kq86bDglyW`R9120Qiy0O-$`V6T2- zTqc`_t%9&5G{tJk`r;%!KS)m}g3XkBApWssJ@(*1Vh`t zKK>0=5l7*NYyh65B0@Q@YADT>#}9#4(F_ZXl}B#6e^kYtd#!&^72!7>&jzJKQb1Cl^?#@;LK<%6U=_CV*aasuMl&RXRvtOp zW1(G@#LE??Mo|%=nO3OtQ^zo5<#A<%7>X;89K%!fF+62x3|m>AWTAejmB))B!!c~- zkz=`2AIoj3BKYXPfSIG!`BnJJ z!L?Yb+7Ye=bB0=4v^>%ex$^if$~^T-^!w=VdBIgWO&V%Zf+%IzqXQQknbsJXgI6tt z5=CR^#YR4E-mc0OK5iaS6~P(HxPrmKsu6I;vO^=Asq&C>)mG42Q%+&4Z^wC zf*cR5jc&4TAe>%f4dt8Rb~cFaqLA?1P8Q_c?T(0sq6pEAo}`jm?nW0}T%^y_z%wr7 z6onXBLbNuAdScm!q4^fjJ-`?Xd$L9P1dXLa+_hEI4sF~f|D*`0%O>wv74Z-7L&l7V zj4{tL20iE^)D+*2%oOu&Q?QdZhBU-CR8i!E<7=uSA~(dG!*tIQdC<(-c|%V~_Kb-C zjm!*ld)U?=@>rRBh!BpY8!=uJ>MOch=fK!<$C&1M`^s$$FSeC zgzjbb@!#y@f7r(#=|^yu=RLJg>M82OK3+6$x><^MfWaGvZ0l3JIXgu0fjYp2sVp)o-=^Q)yWjc`}`0& zfR%ph-U0Yiv|%jQ>m2&Rb~i5e?{4I&1bHng-Ql=*@kr){h}!Na5n4CwX4q^n;?^8X z^nu@{t!w$fZ>frS0Dj0Yc$$g`b$+d8%8W_G(+Nx&yO*3%>E(&_otq`|=&uzZ`w!Az z@`PFLCGs!wl-b_TTPz?dMZqJv8E4-K7wg0d*BG^A`~P% zc};jmaf7OHIX|vb6(Ma9chsbl7*B!B?SVfV8R(~xGUtK?KK2G! z`%AZBU!cElQD~htnuS)P6yI_K2~r(i@a=AuX^n{vvYvINSZlO_i!)5f(b+^Fflxo8 zS}Q=ohw_h9MfeGYfyU}c720O-Gl!xef@={`>|M6K4sZM_5Km8*18C|T^PH>hp~;HL zQ58>4=}Fm|P*+1WiF-8>2(ld1ao4A1^CMRYWtpl7Y11f2;T|icAAkc^W2NK8SRP*P zTqIAM!|Sb}2-8pAZQvfnmqccr<#qy1bcus5aa$L7^MRv_V4vNp;PL^ygNkTREcVw_ z=I*bUP*NbT)-ltUTHqgqH$-^O+6}$SZJGkwG!~da6Q++@UOk6~SJr9IgEIzs*KJ#q zmtzPv?nf(OiQqO)tBT-b(4Zn(SXvPR_{_beY*O83!T_XPfQN!TJP5kMO@X(7inzk_ z5ENKAhDDYK(9p?JU{()x!PQ>UVafpLuweZ`bo+w!?@<*Iq4ie^=I^?!7v>_cG0tmr z{3<$qe$n%o^cp(-Lm zLNM5;Uj|81B@FxDQ|vM6sx0<1dP=0>A%TBU6*Uh0Z&XG2fyeOA@&`OwW)WXO1lNKk z%L*d67HnxvK?K)=t#vAh;99UXZ3Piri_2)y4#P^9MPSZIUyBj8!WbHGm6P6(S8VK@ z;tif%u&MxOy-#Exli9~q_A#A)1dc8D(ITGZ^zgl?+n{Cl9HV*53_o(xiT^l!=EyIg z65Er~($m`)xwh~p)){BSR&H3gVN-nl`uMsnt2{G^{?@>pI|On(_%;^0_w>g>i8$B6 zPAe{lUonW%6e3PqS>H> z*c^>O@=I7{qh%GMgJ_l86(Mz5%ZbW2`Q#|H~tt`XK5sPLz#%Kx;qMYG1 z%43lkWtn%V#4SxM(-2KW)4W#|S3Y1KRTUv^8s(s{z_tx}q2D@dpsWKVeD3S3k=bOv zW0Uo9aGT5)R0Gi#UseT@+u~oSh&G0ZIs4(2#M$bQJEwjZ8Ms-2pw zORR_N#N%Qgj12y1PC5daI%Fgw=xxA669+ zIq35(rdMM?b>envCHAk49@76XGW-|Vq_2X*Sx>x9t;GJdQRM&kRB_~{__nHu$W1ZV zWs0+GOPrP1;4#FgX;D=T=D7`VmTiZ#;u}OW{8<%4ZifF=6%n}^rf}cCC9&B9{;83H zKh*{waNiQ&EJA(?G_6vwbmhNGRYgP&xtsZ05@#?Uv?Xz-2mFg71K-2^E%7s$2ig)p zQ#8X)RSY@vx2cL~vl*;VuqCm{V}_&cGJ_Qew!}AyX2_^w$jxA?iiq3{E(f&PcRJ6V zk%8}aK%4pbJbWhjMpe8x_PRKVU&hP}%1=FL-fPk zax=KHm`%QrdL%ONz041AHdm|S#UZ~^RYc^FyP3Z+v57H%qi+uT`pCfdFn?ow6J!3y zpxNwAsu*%J+@LBVax=J?zcJx0qrEFK@ZHSc7!N3&y97qOjSgCA@@3# z6K#S#AXl%e;>97asETMOV1 zg+O8lU_ZOZAdUM@sj-(MxgF+!2JRHNxdxUgxgBPyikJyMWNe7Y0Q2l;^n{8wUI&E)ni)i35UuF$07>8llYS>H7^JaH^g+VDGz8^__h3w~+xp zqo?dN9A^y+$p4KhY@D}$&0q_A&bFn=$t{p>HpUc;T4wORLH8N53(h8Ao_*x-HL2KD zHSUFW{P)sT>MjLb1+OTt?22Yo(D@lgGN|3a8K*0$5V0E*3wL5T!M$DMvn9Lv1_%FIGQjLtG$FC$G-LGI)0X#u8pDIedyM> zE4KGQ{2;_-PqR#MJ|Arkku24h_gFOdGCpp^kHY^8aJ&T3MeuIFp&)Bb9e$-MVkZ2M zrL2tq7+5Tq67XOTbGCR{Ij&BVFsC|&3Ct$8qlqZXh%r6cv{S+4dDw-}pynjyJXH~X zh!w1KCbZ2+!?HmI5nPLirb=_Sdk&h78L3pgVx$H`y)etT2Iw(Hcp!rK)+WNF%J4&sv;r>eat>c zEj>_wBr>SS_7q8D0>B?qMTZ0YkE$a404w+>?&4TgQ$YmR;){xfy&Ta3%GV>>TfUxn z7!G2K?XG9j-Xm;(>myNu6{y#-j}7c&6Z<%meguZe#>6_vkM~pgo&sxlvHArc6`D6~ zB`2Y01U=87#m@&7CfL>i$KAV16`23gDiQHYsR7Opda-TWSTxg)#bAJZJJ?3sK=m7*QM5v#R!{6-u0o$RBgvME_F^#H$ z?^~|R5iyyHP^eug*qogvFzcC{{@Qv&%riGVL|@71JyBpQsN|lnwGP~=aKb2kH4S|s zrc(^$fS#`p=sBu@s;2K<+bdake{$BFNEnfUI0263wHmY{9LMh(ef(anC_-HEc_p(% zSXEFJ?}^*VG03Hg{~+WyM27gJ9(d!G-K2o|>l6WVIf2)zintMe$XpQvo2LZL2dx#2 z0;bAr2;pVrxH?;Ck3uU~%Fb&BI4^o8Z?Nn75HuT&>zd3?#tm~^|EOv~9tr+|L3Sr( zDXs!tW|wu|a7(Mfw0JgcYl^%u8jd?VX5{O>;`-B(AvwJV=AE?NxYe#Or2btW&3{uB z!8!b|%pk4yU$YO^```r$R_L@YnBe!S_;EtN zs4Bv50tHX>D74KSBO6un_T=DoX{UtMUNBu!>S@8H^5Af0qEN{ zJly|bWbn`O!q1u(*#A9MRuvIB_;cOhyWfE79sr}}M3r#O^H{*$zF>wwt76E_ z@V}}e{AN&y(T_UmHw!HaBDfY&h56}x=PG*#nr9%ckBkO0Tsv0DYw+N`%!2(B(7I;U zy@rZtV^E*BwHP~|DdpjXTe&3Jv-Oyf%^SVI zdwVB(Y-P3H8(-zZ#BGKLA~VA&J%+7|>s@`Iic1q=C=9AX%dK+{6`|m2ltEu|g_-To z)T*bG9JVi;H{oBsFzC~^aWVh}&AksS@$yEB|I>z)rU^rF^&t|GGY!UsV;soywP)L0av>Cmk{?g=|rLkn9hUK|UEa zit;uEFY&S}R@_Uxq$(nExMxBo)^aGM2wSb0Wlt`+cy3fvf+>y%p^XZ#FMyUc^T4^P zB8Gtd{*fa_jv)WborHZr&Ki}fm$9}aP(L1MfD0ot0Ns*68-^eWW*01Qo+^Bt_-Ct% z7{UUr0e(6Ve;Wy#fvBecY2tVWsGuKC*$uA4n3L>}`k3|z; zx({wW6z_#cs?uREw!Ako-bA=Il9)-sPxr=a@M`pKEd+hhrxuOd_o5G`v;0_O} zqRS1mUsZ(PKnhs`Pc&H2QxL(mXp(5CM#rgFWQ^J~H$7O5kq3k>@WjM7L`I0oJ;$Nh zcs1^RDvA5q*Qpwf+x@kwBK(Le7>(PVJ-(tKf@|@d;xjclq6IvaG^V{zCC%7gD%L95 z-a4GN5@Qb!xqZwheU#eDowfb)^^NiUawg%wbzk(d^V?a}T(k0j*Yd33`g}w|ovTdc`qd4$K ze`Jx(J?)72wxS5}NsDh#Nue9zRNdvg9p*7JUn-N`iLtZ^=L)6GB5Yjt?$#PT-c-;P&{VqCIl|>zK5OA(WT9X1Fbp8c6w$ z9y%>D6U_9OfVC`O-=mLxjEZQZTUn4;Td5a;R1U-Aw0DVW#^YjkMF#Eso1W-IEh*tyh8j(a%PP{v_w^<3V`$se;A5Ns58hzQ=jG`e4Bj zra;~Yq)$eMV7CiF*sX50El~GXeJEeADuPq@CT5K=>Z(S_34Pg0wFayIUeNzOGSFvx zLAM(hQ2#qs$T)%Dr79wF)Vs(;N&x-eA_LvSbf;|r^M6$ZjAQ=)R7FIN`Pggg+0;=_ zXnZj;z~TJ8dT%~k%|I}WvxWtw7L~u}=WWlP=cGiw;#Z0k-O>32Us#f>8-2`;P{q%2hW5~`#x_i=g+hobo zYFpss8c;xU60%ZNgf#rhY1&kKFId{FX8XMdT)!eR=%+bb!K`Kl)c2`E#y!CvDk60H z5jwM0#xiV+?zNHO7_>!~PoInW7#yhHN~yl!@EQz$vms8G*ZZ>f`=KRT11{+|Eqb>g;&I z!P4pQM8H4{j;M#l=zOeZ!l}vdgl*MZdjDW#W|`kpEx{uJ198v*R-^N9=BuTFXo?T0 z;>g{|W2z$jrcemKJc6@&GU z+^c|q?_|(IGa;LxDuR!uaa2TT5}}$8FW;Uim8xcJ|3EDR;SQFdwy#-34{#eO)#1SO zj8W|O)+IJXW|W?u6jdf(rpl0g2q}7U8c`)~sUnzXttz&h{->*oh}=924jng*qp%Ah zW}e7a=}sW)F&yuKuZJTu%EF!+Q33WI#BCMq4VMFA{5znEBsa!osv;sc#>}nhG;HN5 zn#b+^u3jUYh|CCZ%1Sy7`>vqrA;7PzBFDk6sEUvVUpe5;=jcP_4qi_}((`gDTlAg? z`_{;eu)t*mM}s)iK=4X$Rt1vV;(jWkjX`P#E{WtBNw`{Eh3r>&7mm<$+h7z zR#=OMcc0~tnHA51)xpU4F_+~RB+q8e!)sM&^8yw2tJ;x|+`XzI{64&hu05KUgr+M7E;&AvAHYY zZ|m?_cJgFf{thQu{&H|i1g(aS#4?4yrO1b%(mM;g>QaV z^=P)7tip;h0i;+j^g=ke-IDyIBl&Y^$rd3dzy^g{5>8?-3^E-*O(nIm%r~^T$7hUc zvcFvSnEHP}3HKVfEWdMfKvPry7a9>+Q%|)_Z7VLA`SvG3d+ z@IsEuVM`yB+kwJ6Pmoiy;U6A*uUxEc?^8j9J3DPo8CiQTvFshz5yAea;8l^d|5CK% zj@#dPv+^!DUkdiR1QXz}J^>D(v5_UfQi}lgNqa(11O{A&*F};6m!c(O8K6=h9ooe& zI9$whyF@J$QR#9Hia#N_H?Hk6Yc;%ucuL0x{3; z-i237(%x@JOBROxBZ?w|HhD7oVdg)AI!*FS1uqmjv-}D49A2pFb5f0YM~<+Z-Fuk8 z5#L*ayMu1>WG~NC`TQxm=BbB;M)35LsB2F@$CHQk>%Ir2Sbs3+%R0GO57~}DJM2GV z!O}zUaX(U|RgO4}%d3EmUI zW;5}+NcyR1RB~usYUw^6-+1;}vfJrDIBc@8CB&g^`bNC~52R!qT4}|hFrzx15~I+$ zc%>w*dlp)<;P%g?BHEXqOyx9yrDg9%q7vw$S!Kwh5s`Jp%bO8^c1IZ6S-e7$#_vN* z#u~r%?tB)vK9nHp=AnVImjZvSPk{%~xX4mqRWl0kJ_$T{6J9Gx9^6MI4+j@NFTlD9 zI0Py0$t60e%1oj-||ER6S$Q4#HP_6vguLFRq^zBSbU z0L3&t|8LRo$PWAU@|>{yCeY#qympebcpfdee$l(6QY_n8AHjwwe@@nOpT)@Om^TvMgB9 z%stsX5-4yJUMEQk+<=zcaSFJ60RU!)c=wTP|D?}?_oH!g!kdqk|e@= z(2_e>DH;EL#OF8oNJ3*SdWBg=)jghz1oOQ6Gd@R~`|;hSj5SUR-6nz5MkVZXC+ zj2$Q8-%v3nrk%!41QF4su^XGQBB*x)H^$@jljO!2DtS0mI93j6@kF+mf((J2|L&Q? zY}PmaCOo*36_4{3jPLHKz=QR8RV8_lKuZ>U#2PB1eHD-B!K*4sm{+4EcbqV5hW0STx8%)a86Lnj(;g>t5A;=&Gk2ollI6@+6({5E zt3aDK;& zkgmqIex~Ir!5o0~M7qxEJ!oh7GVSoU3`9gT!D?E9adk@I;}X1Dl6+i9B@c&r)l%-0 zI26v78sC1^efp-}gU3{II@NS89ne2<%g{x5{UmL^6D?WrLEET^_RXPO%Y`oR;6=7c zx{Be+g0BbNG_&9nXoO?~Rnz6d!0rhSp^jHjk{lJZC9@QtuJJAS5LJp^U z0y+K`ub?D3{st|%*tW&RZ{x#N^MC6F?7i7c>GH|iAafb(ZGO0rzpg5Zj`ivmgh7q6rwN&XuxdH9mV zRpxZB39i*A$>|^>n#l>0B(5$BBw2-5Qj#R6p(S^mB(9R2%O%4w^VT)pJh@7rC$B;S zCF@L@mgI)&r9hR-@p?*9lP;>i?J{vxT z#zvM6O}Dyu`z7$<6L`%e`S4LHc{r5aT*Bh{7=x51yArJDx!VGw`Dvic<~Fazs>K_o(|0c5z%D2n{f=`Jrtb7EWD1A6q$~e zJd7#gl&RcF?k;_bY)6A68#S;Lae63FbtQ?DLrd;Baa@yVZ}{<+tK5uvM4vGap@EWROw&p9P`wnW@)o?F zl2myBEqPc|#Z|O&Q{_wgRQVzrsOYHT>ZL%Hr|^18Qsr}K$sMPPYgeu?-omSMf6!;k z%V?}*+0t}ZZj+7*gn0?Csw824hn5^d7=`K@FVL}BxPpkz73f^&D`Z(wCa6ZYak=&s zY#oS*W(wByd<9>}1X{-Ns!7svHCnPj%eI&47Vx}!r}O-LK&9@8J}0h5!z1gu)-}tb zg{}##xDv0NBrC3y$oSc*CVOgP}xb^GkUEATM#{H#=_myIo>r?R{+9a}G(|)~z|Lh>UBLeUC<5iL5 z-CinrI3(Y*Y&$whs4sWAN#CS5;Bk~pwZjeqvP|mqNz9S1!|Nnz+v8}-f={VY5uu~G za|5YsEf0v=A7b5Rh{ z!EiEuf2Gu$hj&A{S22F3&%K|ZEh5Xk#lhUO`ym9AAK^8TWZn0v>{H`yS zOg~NAnM?r@(PXNp4QWuPOJXRQh*wF{vg6T`1%EPzifCUbnQl`cRe^WCRkDU>M4t!R zXhxH>(U{1N=q3bkIwTD3&3Kh039tz*x#I*_U=zSDIiy%L&YIpG*ExME^rO*{r9w#M zeu%CKq)6kHlO%PEtcy%OA|8cbBj+=g#J?bwxc-g+>!R;6A+`HA2 z4*X8v{=Y`UB5VJUmtq9m{e720{}3J?*^#3bYeJ-+S;99)i9NRorgsN~@=;hgUU!I`A_;>;m^^S%O)reqB> z+!ltQsM+!a>pq##|Ip2uqV&UdJ>Vx^!e~!G%~V$I9-YlcDDpFJc?ILk__)e zOYS%s{QiMHZ6Ut4>AU)T_!b%*Sw6`52UpJoN<59%O_CD-j+WeUN-Prn1K*S2@e*At zwWG#Z5D`t5xIxxSxH=~gV-#LJNn-pta$>Z8kHah7HQoSK$?u zwE5*|$wE*#NJX@79`E7p?fD#<5s+WlGJ!T zT5pnUOh=-`~oexe45b36@cAab>9wJYEFV4L1QKBD?*Nt7@97wjtXw$A-t-Rgn0{EatL7*CNq3K z#GIFch|bN2{M8(?#FKQ{&`s9w>67)_XgkT0Rj!)j@18)>Z{QV_r0Cbsk_C!3nI*M8 z>xucsx^-quNa8bLwYD=G2O^?Li9=2UZQ4PBA*1msN-|^wl{_4BpEb>32}^%A>Qi7H z9$(4yC*;Hc>As2?P#mwTBo|hrB@5nS1r^c045&G2LgLC1P*gJsx*83aY+MO>Q)yGu zxcVx%kSp=pO48;EwB!)lC?qjF4`Pl?K}6^Bpk+RT+Q&}0%;-*q9@MAoo6x3`rEJKV zwat4d5cNL1j*>*Z8!cHNYTL7+9v^}`o#Q1!5~45Yv*fdAoMc%Na@>+k9|fK~iPut+ zC!eH}heJ-3kU%CZE&8oK5njMUESVOC99oR&u9z7;k5^Zc5znC|3!dXyDx!UvkrZ`8 zBF*A8+R4!Z5E0F!YKPS3sUSb;-Z3J$leu_>CCSr`mK;JJh2)0kN6e`yi0E8?wA|+o z_-?qcYSHET#65_%mTd4lTZ*{BofPQ0AFrk)UH76T3v_LJmgHYrC+jApZX_!zGj71EC&`TKsN~_07p?Gl1`i}*3DNuXP5&M|wvq`^$eH|7{S-5y zcjNVxM$?u?A_ezW2Xbl->8cOnGGnG6X zGM?2>5<#);U|F8RWa{L<5iVpf`OJSc#3PNi1y_@tC~?J8#qIH z0Myh>eFo8B$+`^Ga;oDJhsu8L!RsnXnLE*vLnxz=y726WxiAG0oy&gwJ3t6eA;Kkt z`T7-ozJ3X9DOtYC?En!wD8#rg;#HKS=~HOQ0!>*Cq`)ywQ+7^?f(TC2wx6rreX!ow zmrZ5OVr_fL$Y*QWQqlXo*@U>ZFC7OWqDjtI2d7_wof7ys8n2clA4gEh!yxCnfAolv zBgp?6OM@_R(h%PPHXHSAz77wrWX2UTAse!PVwx4l>nCaa)o96rGg?7Kgr-@o->^78 z5Ix}m^dq2`W?pqQ8Xeg<6>?5Rc+Uifa3x+hNlskB40`975hGUJJb1(4%G}A(BSvI) z;3Q0xA<*%R3$w@$cCNfJrpc|3tmS_%ioNa zEO>((sfhMbBsf$MXOO6rNJ}3_yAr*NqRhnmK;J4 zg|w4ruFO3th~SxPlaSSNKNcLZgvZiByvz-Tb$7LTMIx$G}9W4-*WX&@LO~78cNcm8!frx^jI9|_5nUIs9mB@j@@X0 zWW5Gv{^RscpvDfoev;JKik6I}M(gK4ivqcEMLG(fV{2-$oyWak8CT#Hvv zk{LxRc^H&M8Y_l^B&;g(Hht4SjK@}TE)=r)Myj7;b>yvhJtaBtX0&9%JKRr2v~NC? z7!pM5JuRhTV4Cq|&{cDK^eG#z!j1tE(d5OL_-1!bpyx=udXn_~lRiD0%$ZuB`78(=?FWQ9&nA6d ztj7Z{8T>-tpEN|*1Xd*Q%1N?f4V63`vYu1J0SU`_uF*I9tMSN6nmy!EJc(Y48P6;6 zT1wjgFj}$@v<^@a?aO#h8v??5xoXw|=FD#d9W^tZ+tEnLW;!9;jU~G&IEy#n6_q5* z>(G)z$fA&*@C=8!ECmsr%W#6@m{{8RoIXuIjkb|2O)+sSWU1l_ymFG%{5V>&Kuwn2 zDDa9?lWna~5W%V0_Dwcp_mzKMJptBnAH5Dhepf3;EQNO*a%obZ}}pX}?+ND^&_cF=cw5n%%0; z!SnIk**vOm*bE*@NyCObj}z1_ams1p z)snPuFIut?Vv8D!5+0>pnN(&7hO!ob!G(GO{^F$ZKTXRB&}m81DDt6_X^x zU1-T2C&Mf^YGhBJ|AoSz*Jr|K(6GodA>{2_L46Wv@F~1jk~H`PT5`u};PDAS1M8Vv zPuzb|p9#M~BO}WM37_EVmOzGI;T4l4!!OX1J5GlAzVX8k-ShBa=?3i>u?R#&GZzVY z03y6+0ww0-b(5sT9JFLCC0f6kXSy3Xa-f`t3YY3r;bJr>vaaE@rc;6h?U2BLU3irw z8L*v79uD(@g?_t+O%9Ifo4AU{Q*v@3G1`fVoxX`PgfdA^l{_5skR|Rs#6rRe*ZwnP^bNfZ52<7-67nFyP~8)= zkvLvGNsF&WOBP1{3M!&~*@$O4YEwf@NREJ7nhD9(XmDg>fJB1o?U~>NuEgsmNr@}a zl0zt=kWlcPgt;OG5uM9PJP|1y5Ro3#r{tT^#*w9@L`1UtB#`kwyjGHAyc;c9AY5{8k0vn#hD<;W?Pg2RlAwOB>4&WS&uoUID`sRKC zkE&#f5^@GelOBp$%JX;)CGGwkTC(5;o~0t%m!&KUflo|S7H`r{R2G1UXyz#r>8p$V ztaE}xn2T3Wk{I1+$sxp0NHln^!rYRAh|c9Io)~31uSxX8sLS<@n{Sv%B<(*g#uFmWUxc z%-nqu*mn}IjU@YSrILq3hBU{8Kv-JzQGLUH7!RdnS`@OwET~&zF7!`$wInV4ezau4 zzr2r%XkRWg-Hln%D0oNr&p;c^Ld{Rmn8=RqkYc^iAz_IB2(OYP0ltrx+;IZTa^qF5 zl=`xHF9&9wq0NEmAR?L^IHWQX)F*)kQ}9|z(qJN5a>r?~zztc-fcI3CDg&^$EN!0f zB%T-Qv*A26I96}0(%#kObED2E%(ZS?%vde(p=WPe{ z*?0_X7Fjl)61xLjK|9rc?X&=F3DVcwUJW3tdFEIgq z2(OoIJ@N#Ur6CF;q!ZAVzhz=(zgaXZFeggF{J1x7 z7JQqWQu<6hg0_vUI|`|i_`4)#DOclFk|g4lXvqQ*n-suXPJy`&UWH1vRH-Ekx>1${N@&kqmd>^^zpRZD`3IC&P+uMxH!spLWOe-ONY8n-h1QNSS5w z3Pn%huUD2f=yPxMKaxw*ISZI_o5|-kV&DS!fP_j@hOOquF141XdX1n1{7*w?ln}<{JK7q zzlye-ERzvIGrYG#(EKu9Ur7f43za-ST< z&AH@9(4fh>l%0AE3Y|rM2(Pguf&LLKIfOt8(ToQ~=HL`W46A_X%XESQ;!FDM{T%DY5}^=pKs%+KJa#l0e(gl0yij5Y2c% zWDZV2L?X)n8 zq$*iB3LtC1EAQ$>uV45s=%^XRzJ*3g)-Qy-{aLb`f}406uc#zh{v9p3<78PGiXwZG zG;3A^=+bqzHeJSoh-lL0^Ko9qdSsS&R3OYKysDCf`SbrF!t{buNgEZ8qx)4iXXq1V z1KtXfVF*bWp`!v}*5Xx_B+Th($sPAFtHV5udkOEF9oW67_X-!RsIPrx#Lt>73Ni}(jIv1LtXgvrnoreQ{NKk zfIbP1;Q^MMnupA@i5vy(XKko~<((>aIE>Ph|n5+4UK2^Si$6V6Y9Bds`oc@d6=Zkp#B{}mHTC(7MK1W5g zk6c@o$VCtE2wIi+BdD+GiT;2FQPvY((L#E85D?tb%lJM>QtTzP)<^?aCHX%@2Y=v{&G}AxX4-XvrNX+BPMk(XhctW_mr^E&4RO8I7VW&0g6; znt34*NOmK>6Otsm9xb`!Bs*7$WXD<2$+I-~0eyNshQ?2pUI$u8FT3*svEGYUUy@jl zq9u2nSZX<0zI2?N;z-_d5U@t`1AU5p7mcJW#afw@i7*Ic`xd?&`$! zDeLO4j*@j%v7WX8-xEo?twl@jINj8WwMHscuNW!VxampSOnsX5q9K%}+2Iz_%+-Iv znF9%2+^B0@Ewt) z+ex(Kj?-2vK9Xdq>|_No^8G>2;x1(9eU#rHyzXdgyP4k4Pt&KtgY zhb^Egh~S%d+P)NjVROFQTX`-nW@}j^pS_OOjStqyD-QYxJmLGl^r`-Pv?*n&ez_{u zn*boh?-%i1kmUJqsN~SCKkZvYyZb=esK3cNiNav`E;Et5h{4dLqp4WUtSX(16gSR~thVr7X1_U*?6uc5` z1X(Ytykljk-U}}DFkXL2h997khk*;-uSJ+diLuB`TIGMA^L&FohhB%bf#j|yh9Hg1b#d?f-Lb(@DPyuo833Bu_sCCZA6Lf|_pg<7gv9 z?ly<&z2G)Kg4bV?;UA)s|1#X>5RfIZj70V_i$CZ5xju(}inl@3ZW9BD=r*6hcSw>{ zKSWCw+~)UGMR2#tsQs7aHrbi1Lp^hopikbA)0l!L>dP+B_LWOOL^N}&i&W=ULYD;x zxe%|kB$ww=$-}@wp4~jJ^y8H1B~NMjGRQsp6uAhGwxlcE*D8vzu8U4@Cth_)qHIG; z7M$J%sv@}4V|4w?a(ZVpXZ9hpQpgs=3zWA2a+*2f&1mptbHt$z*dNl>2lZNTeK+Fu zmSptxRPr!zeG-p$1VEL5t<_LVBIKiaI-D@7lv&Ii3UUCudZ^kiL*@+=~_>msGL;8mBT z)EQ{WA(T>xd^~tEH>e;&ddEY{pDkb0Jaz`3xqe)q$u+dmWSJatAd_@oMe1IQ*Hx0b zMYLprx@?<_0`E9=*(oXtA~DEyEjXrK(%n_6z(0G9-fTWwtz}d2 zKIm-0$nSvHhF4&fnN5ZFmyVm2{bpr5JBztg^kjwa*C+P-&?c27_BFwAzhyuOIpcfq zU6JJdyQ$>ikTV`^6@1Q_6TYbb9eqlD6K@B}nR9=%lyWc;ed^coeUjwXSJ9FMpZaAg zBGj9;JP=>gG7@H+ZY3MPRXYnE10tfC+EgOuV*orNHAmvRCrQmewThYwv6_c_=6n@I zbTHg6uy%@>*0vY=lIpGb{(QFA6TmOjXZLw{^GkZ$b;0Z&qH97(J{zx`BsVux$-^Ne zpBfH`6Ht6XHm7g)emt_0W)C^^Q=*rmZ%X5}l(fHrmMnzLYp96!h0XX75SE7C6ZinA zs#%K}L<1(9=x@dP35gAV_u#daB+i{^$sxp1h)6uBG54h)qJu$gUJ!qG=SyWzNc)OD zRlkHbkt|gc@>HcA69U>7@v2Gk@+m60bph@Ekt0TqApg61F!ylS@sEeXF8mc79NFjz zGk92B`vder(@njM2Us$$g&Yvvw2xv`dkL?jBnf_pmMl1@UsDn7i)w2^0W1w2(^hQL zCd+aV5zWjlq$(@jSCKT!@VZKpW(ity2x%0;5szrhe<_IQU_@IHWY3F>7nSN&^C0Xu z&YLGLD{e2>Jpt~BK5wr^TTC{@zBlny79t6r zO+w^u&|5P^?m(j_>svHJWKh>dN^QlfE=j5L(ULy+U{Qi1Wys^oe`}+Gesu4yk|0_f!az*Wq=QWbSb)c{qg0P15*; z1JzivK2Pt{E)9 zj>b>c$Aml>px$|rR$s*{FG;H}qa}yXN+H(qaLHVsf{5WCE+HTClwGIq(5CVf5E0E3 zLMvR7o(kb|B3@TX=8mV5|AN9L$&8b5pnA5JO!_v`oUKoa&3K^O5iZ@G7TK{0ue2mP z)}tj0el0;o47+ei5N#4J`$2QfaG6Hq*OqV@)OnFs23~ndT3v&d96~FFSjWR9bA1XT zIv6hJAAmQh+6QjJQ$f`ln_JdQPk4MppSlmBZ6r(GwZYqN!h0r!!?)mdlVs)tRPt~L zhs#6p2n&B-)HnK5cwi;N-xj3Nolc5=>2r7`C9VHyv}D0AJwZjZFWfB)r%BLZKre%O znlbGqG)S_J;S4NCXb(k#{0^_7Btd?SmK;J5g{Z>=7jseyB03nj=Gn)Um|Mx=1sB8r z>FGY+*M_XysZGx~h=^ud7qVS6v|~cpT8&ptl9wx}(6u7WkYs7ERIkBGUw_4{dL!AB`h@)?+G4VV z4cYV}+fN~|eGIRuBx@h1l7~ZJ+aQTfSe$!apAgUCVU~<@A)8*XT^9Y>vv`#ynek(^ zWWk^PfQo2e*xM+JXDuWO&fTRQ1-n5+H0kl~;Mp6x&mxIt;B}TH(NwhL5E3awG#(V0 zlT#4U!Js(XYuAHjs#HvSL*RaWw(dpSM>YhmkzuRdDkL8)k4<_g669@o4J8TkFj{g5K@_444^+%KDTwG`pz_rkESEmi)a^(5RQ*2MT(VR> z8{x|QofN{@ckpUT^7Wfk@^A=aYXe8I4;shm`-+njcWZmC@gO3agnPR>6`cNxK5PtL zUrA1kL`xQY*q<1!?i({=#HyPIZx~#eJ2`s9h|I3s9q<9qd_EXqPXaADggy%Ki-$nw*c3!`Fa*xxEVj0bq`a^DE$b7t zfVPe-QCBr1D({mJ;Bt7aB-z+cB@c%HwypagjDD|A;n?EGbWGLQ1eWLujE8M|db=jz~d72SZW!_PkN8 zX8W=!x;62DS*_=5o_+Oq>$CE&(B_e4aGfuxa#oQb>- z=$Pq$>wWBEZEh|G5z(a5Av-Pt`z7W}3-EeLQgSX@vOviuFOX_E8K$RA@>-}~Gg&C5 z&Ae|ywO5}7m!L6`^-#-$lN4`)DQk1h`J00LRg& z$Pyr=XyWgZNP!w&B}ocgiIhfhSdhNa;cQ5JsZ+vuY-m)cWMygaO z8>w2dY*dW?ic!uCGKs&U5<@W!f6cWrsFQbP^JWa*CtNUU-fh9%mw1!Z=DiEVH8&FE zcmQoo>FI+;<94GKsYb(n422o+FL!R+yk$$oL`TF_DnbEBg&dHQbNZo-8MDHCjC9Xa zr`QDQxF@5{dnAkHjGkJ?j9U%IX~P1Z>-F(WD2ixIAg@U!uRt$Y6ko$E)55Jm6#tn7 z|9#sJ#%QK3THuwDSzs2mKrvN~)22gga99z*9Ov`_RS~a%AF`1Z5%{wS`0n|xi2wDG z;XjAs?`}QB1SeGS<0h!9itw9&XAjL?ffY0+_15!wvz8v&RCaDQ~d;m&l+T$7TU`n$M&3KkFm+`Js^uPj^(Kv|XLER*vF^b>OcjSpPCI zESE4W<5n$A&_ZD6&-F3>sj3L>Bc5Sq3gfY=F}m!Mq6ht{d!kB}rg_mH5Gg$g+SW`w zyHrI;!>#N#y6oDG2k-Tf zOxO|`6DClt!HC4p< z(E17$F`S0he@2F=wI?U;ASyY${zD(;->Qn>!|MfA5qx+tW4B;?Axe_R!(q-wlkUeCjB$tCqW6^Ml!1( z+{T|oLm_M9sVv<~*oq7G{TRM!N&7yImfUgs&fQ_ujLTtfc$z-Ny7NTJEZ1OEd&cw& z`u2Vv4UMe5t?dknu#O1!e-5vTr2U^oOYXS+=fP{iD#dKEf0vQX*DGc)0T%4j9`JKP z1TOcHCBRZ^z=!rkU_dus7fA-pKug9lKp~OyXKKDszTj{%OLjpYfQ@pc!nSO!x|^+7 zmMR`Euv?!5JJ9gRlEA9=B!=jVK!dG#Z6s-MK9!8m(iQ5{Lx=BE!|{M5C}rgH!h2D# z)i-ky4{YGm?Bb?<`_ux7Zi&;cqj?VUkO7KXj4DuU0%8S60f8$pXE>7|1637tj0 z8#-L=_4}sAJZl!2@b0MbPb#}vBJaJ)hp9Q`MHDP;&O#A(5>G!lOOp6BJ zM&l%FG&?Kt8Z5zkBG~L3cwHpj)7Ml@+46YQ?estFfUj|vX{VZ_K}0mE=1MEo3^S_J zDRD%Oz$+zb-9MsvBe?xPFoLvjlhDv<$y81Q`gG$P2Fdx%topN2p8)IdSWD&~AqNup zx+4tjI9?%1niP_mOY~W=8x4xAd$P9W`|4@D5RtHZBv4=nUMEQkY(-1%I0an3006T? zygQ{muFrxR8W&j>H1!3pP6 z9ne2<%g|)Jev&qyfR-%ypm9`0`{q!t|mWYGvkLJp^U0y+Bd3QCeAg_hiLa;yprD`lrv zn@k55Yai6-$(zt%$@1iaX4$UGi3Ijkpv--ET_q`VH(GMXDRW97W#|%FV5#m4`ds-e z8YNk-Y(a3v+eLvSPvVu7B*`byl7}xzTxCx8n&5xvljOH(lp-RDtBV3jUcf6UNs{N$ zk~>ZkS4qz0l3|#6>zZz!#13j_uZuxMG&7r~CApz`DNtnrUQbD?%tcEMp^8F@gjZSE z+*(0|bd{y$Pw33%p|1i(7M4JJt1Pe5C+Ov9^T;}~kQavr_evn-LA+j)gxrsoED*BE zuD8|~++15-E@u0+18Q!!>a*eXXl!KJ&~&Sdw_gGuZo+FO$%h-LuAZtm?BP@%AMp+JfuyL@gO3aBo|8&r-uSX#^807 zq{v9LZL%HYw&tXQsvcX$-|l|uA-HjD);D9uF`ZRqBZ6R5jHa%a#*D-;Xzr(90Ny}fOB@47{dzo$l z&#QMj&(8-`>XskYo^ve&5z)-K)-}tbg{}##Sb|qhk`)W729w8Bk(ho0ir@Q8o6{C36x3Thi zP*k&ccLEKUY~*OV@1;p!Mbgyqx=NC!f|lHI(zv!t2|$)AX|rOcgOZI$^(pgCG+5D5 z#@ACJ&ipN2S4qnJ4O(&tWfU@6o)oiary!zpNwMpUDbq=Tf~fjqeX9NdZ6sN$Ha%lX z?3+N&@8Y$SBI*K{ z4zzPYL^SER{ZU3)F4qM14u(SXPXm!6QBmTi988(~-< z#p@$!`V3lfi0Kt#0S_n4xhRO}U^p4Szf$`D-MtB%T*p-}Jl^fdtGurn@AA@Zt=2Ai zW;BvU(n!jTWINuPp6)v{J?iNm_abSWIEe#E?4-#?2M8qWOCS&+5Weuj3tvJYdmxZN zAP|Uo;e}^DLm(`9;U(`>)xEc>Zk@Wf&b{3;lh41OXEfdS{?GQWQ>W_It(vNO^IC86 z%h|d2i{yy7a_>f*dx0GW>wb=|i6iTNnj^1-&SbT3eVBJ6eaRQH2lVrFH#+tucf!>_m8&>=DNUMpm!m$cJAcBU|{8VxTC;nqusc0%94*nimh1*om-S8Cg&8Vs=Kp zKn{#65iKY6M9eWb_;tEMjvV|NM_vgd&ueujgrl`chjY!tna3Yj0z`j`PRom37R$`O zXEj|j$2ea?MmBQIg&bn(#-UL{h_wO6VF#n2R>tYgVX|{v+xvZZ@fjh6VwutOchhxq zq{I#~^0HIns)*xYr9FEcSgS}H+4)c>d&ZRy_d4+*Fv}oAm9Cg087gGtWhX;4Kk(Ns z%=4RmGCLpMMRtxWAKdbTVwpjSchYrpq{I)Ck(ZqkH<6(0#AmXz;*(_mxUyos zYnD)qGl=nrboCsG@%vf5SH;PW|P5#f2C{X z$b*08$SYy&a1-K*d~3GhHD~M9vOa5l>&r9Oi-Q2sp8Jtj%0id8QCD?Qquq_ zUM*eNZ)fMjZ<77v$_MA-RWZ&W#;?=Wb0o&El98947}rNqygwW?yRW~?&Wpb#yT_Fm zmSyB|wi&eeYr1xhwD?OhGL;s+AJaq&8@9>eF}&!#^pVVk%|!swpQ6{Tu!&e_aN{L( z{T#V*9!FjY!aDI^l6^T-TnnQ;(QCi}{@7qRRm5l8d&s<_R*gg)k`wGjcp6l2;0d z0*`R2`D5>{V&tRmj z`P`Pm)_~<}J?X>&ap*+QEXMU1S2L?TN8v3zyV&5?ix`%fuhR7;`9vs3mFa;RLpI?Lv@$rc(! zeTc53BTY>Tv=k-cge*@gC{>g*V2(E&v4|G zP!r`HJYy@1ek(f>euM5}$Fj(>dojgavod-gU0p{;yqAn@WRCZ6h^4EHoTy{zX}$`& zW}G4V3fW_>Ib@I1;wdaosw+l}bn<1o!j9zm5*gV-o)pE6tdB%eO98Qb_0esSbRbv5 z*=CEbdn_|?uLg+zRQ21Oh>II((De$snvQh6jErp1b;+xw=%aP^+=R^=nU7HSWoO79 zvV&Yxo7!1(9WQekVK4O6UY# zPe%^Sl97$<;BknhtAy@|bt1k{@FzgWj1|z2lRf2{CfpyXhB+`V%`_6mkJ1%&B+EO< z$QH7sC|hLZBhpq1h~=w%qANf6BP1C@byn!lvorMzz?G zv-9MxlQb3kl%#-=G+puywy&6MPfu4$ z6|dGBsTZr2R;6Ck-#7bgc5Z%(93EG0-i?=Es8I$VKTcQ6k&hqa$Sa}ddMW0Lu=dD#5twCr3cF=S9=M6FnF%1j=gt}!nB6<~M)>u3ckU-_UmUZ2 z@q=(<2k$CaGRQaT^$0;;0m@|@VVx$s$h9i4Ov=~^BJ4Bh(WYzYNRI{?*+P#L)ut?1 zMS4mBAq&=oF01Dx#d|E{ZS>#DPS4*Uhsc$llpYIzC;feN-5iPeUNW*l%%!FTp10ry zWUOQRYIb6Lh3q0%Vo>syVxN(>zD(E9kseJZZC1p~9{MS|Zym=%mNhp{cAB#z1-hP&9C(b3Y-ER*bBLuI59MQ>=%3S4 zuc2ke+dY*!zw~GEjZUue@lD<&l znqubi=SqO+PoaEIOoPrxtuh+;YPw#IRJeqUyzErCUQnSKu9hs6@a2-D*$FXBc8_a@ zx9o2mXPZHb-E{37X|aQhyzI2NP`C~`Z@7`22X(SPTzN1Uml*KVhO2aC9K&8ABd?UO zBWDf&WcIMXi|mh{gdIO=_?>iR9K-&@WaMQJ`(>iF+s+yOO!nA+lI#@M*xwn~>1a7#&UYBN(IF%qq#pwSIm(NlVs#&C&T5c z*VvlA=sCjAWoN?c$!>9Fg5}UH%qD{d-%r=dkp{0JBQHA*w44Am@L#pn`u*R|&V=72 zd&ZRs4mm+F%OJzA(-m_h!>^K&mz@mPM%s_uYft0D-(}~+-;$l<$_L8}5O&K9O8hll zH%ChRB^jAYiQX^fxm5KW+ec2L!lk9m<-$b((Vro~9f?DNJU7T-z)R>VIWpipj=U1a z1=mO8Y8xDE%O2v*bbmTNiE?P|EX1L0<_KXUT{p*AuOlNHtv$~nmT82*9mnfwt;x@T zP8mlCWwK{nv%f<%pqOPe{32a3M>0G?Mz)Y4#axn{juPo71%#ZATIxZo*8eo3{m)Nj zC*!-xk#QxXL;u4KGHCc?bd?-w_#)yOyK>N!UI zMKZF{@?YQ(OIM9(!_j~mWXsQv;3m3mj+D5bjBKGqih@Gc zBq9~1fLOkoMC*|%NRRY*c1k`%4o(kyq`)SFj1SSZawOw1GO|I&C9h1h$y0fvidLMw zF*_CBKz5BQ6&!|3idhC5et@o+BO9LK$Sa{fxmoSNr88_L%5P;4_ixa>>R6&!_5ew+ z(5zD4N7v9X?(Zcd8(H8z9AfFJlp8GWGYgfkf@T?KPQF6+k83J$C|?!!3*(H0@MXGs zj>Py98QDUN6orPYRYY1!0kM3wiq=PY;pvE4A9bCVnV44tM1Lx1hdxR%%b?^Hbj2Jg zc^Mhmproi+Qt(MqQmiye0U;^5N6Arf&5)KAW~wa) z`^M?oII`~mM_vgP(p8EFY-Q2Y*#r9&-Ib1Ik!6J$W|mnCouaGd7~vKf*~l+Xa)_m? zg)UWnRx8fyt^1cjn~e3(FOq%Y+PW>1^@c%46aP87N{$5hX)^M%6X0^yUki=;bfv0u z;Lo#j;0t88xN^WUSC83b(BSiQtsH6aIWqFH)8IPQWu+n3y!rHR3cUmhv&z{bl z5zYXJ{uG{;H|JwaGf43ra_C$an17p$Y#~L8%25`dq6kR=v5dv%g-QVR_icA(XXCcM zvGEpsF_UJD!N1LPbsUq@MvlA^%FnA+7uf30ne3r0(|ze!e_CFpM(r{S&>~$g#~43B zMmBQHqa0%C3eamcrxoQeQ*Y^AP%C34`Zlt2T&obvBSX7oMzeo2T{lNcyorpw?37ST z(q%8928@XcFg~8Ddh?M*PIt~^?wf7{ zi2jU;EVCq0lgujRX1Yp_M7)WNY!ESF0=(xGxH|OLe4|-!vT0JSk+TjA49va#Eco#Xx~7hFIZZ}hcDl&ip^k1Mx#NA=>G58&Yh3A( zlsiBWNTw+J7;oShF}B74V`4|zOY*i17i z@kP37j+FQlGBTACy?54nD@%(ivx9A0xZYwMRPG3pV+7 zn`C-9U2jJ+JxE5jkSWE4iky=Xi7y3&^PJ2Qb()jjLJ=lvVC)swY5r(-CclFmH&-ST zI!(K^MyL69y1tGKehWulv7M&XM`7O)Npl~~PLAKBJG=LtX0qXCp8H+8;*Ko&9Wt_! z=YE?*EOV!6_bT3L{u3yjvD5rVvg=$^4WZLawA&=pKhX7dB-7uMku79O(c{TZQzX6= z5X;zU-l-OX*f4XvQmaJAm}@GTIea@n^k}(w+N657U%;Dvm%`T(E8>VaK$jaRuc_nms zw^+Pk>);yM174@Q)v<%SpA_)WL^B^%=_)!#zCuPe^3gPhSh^1F4jV;EjS6f9P$|NZ zckP;<7k(0S%s8xj7ui#;dBJk}v!j_tns_H&QAe`;Fd2E-$+E`kMe!zS#cLvT`Al}Y ze3I-dSGw$?WflLGS!t+2m_MYe>PVR1CnK+1!c0L@DHj{kkLpo3-^xyye<%B@PlPcH zH3;*sbX6S*^Uq}DWhcztwhW`Lp+s`b9Vaq(Nw)$-e+E_$&~gl7szI7Ty0VU>xsi;# z?4-HfMjE!FvI?*Bc*PT5SzAy!nVm03$&PYOG23Z;(XBM7GEUdiktzqs$SapBeBV63 zdeL7=eoc0&JWX~~pQxf+X;9@Ux}J_yIYmZZcB~#5M zva?+2vYVD!OiK;Q{32afN6P#h8F|?$bE}Oq>_w27+Pqh5>16rK>}2_KvYTAVvXw>_ z)kcFRU!ZI0NR!W#ku5YyF@Y=RfW@3&3W#N#1HPHh`;PM$U56JR@+vd4t>#g&HCS`F z;YCWO%d447>`MWnKPC2NoU6$e8ce;2uA?JUU&4`B!o2XkiGB&EPa}^&cV;KSHoAiy zXNWE1EO%qgx#G=qWgXeDk&JBQt#us2I#=BL#rPYOT{+HPm~ReyF!JITN0P`KsGM=? zc!uma*ADMM$|RCUj5hL0nXa}YlZt`{Z$5iq;I3!7Pj}bMJqIsm&+eUjBm8LI-}4;X3bLv$M)DfU4!^0HHGZz_tx96-4~U+}kBsWy9#b#j&U1J;CZT?Yq(tU>PQCHHHdzjbk?l8#rNxDIf<)H-|3b(((PZ#$jeT*bhEa_QmNf2mS6>^Ret$kq40vX6M-? z*_W>Ate2IW;RrLE9i`3I8u9<1pZt5sT+Vzu%VpEsUtv9k_l z7PapCce7LdcgUf1rTT+ush;2fqyPSGx(SXv|4oi;T?4dqPg5VvN}D`vAtl(v&&yyF zEX_#X{QK-=`a60g9G~FN^@mKDTg*iIw{)`{3HH}yWFwLOWm*WCNCnNmw-V{j){bkRz!cAR`-Tb7xuznKlKr|9_V@!}4n$p2VE= z*lQ4I@%dWtV8$g`uO!UhCTyVo zHE>(TT=_iN^RBsaf7-E?VX~1R|Awx#BbWb*Bd>r2xh=V_jQS}*#a`EnRFIb}WTwc4 z0MVaO$l+d5M3`J!Z9$`iALxJ2HAVM_vJ`&*2>p#8r7%3e8F5MKWL`J6Y;oz2L5l+3!7M zkGp2S)UV%$rWz^l=jqBia`$IAvNh!`;Y*Va3#J1H<%`ph>I&go50P~D#q8|(6S~74 z)7{au1)t4$Gt>PMU3o{ge1?o{WV%msh^2eL=P-&0Jv-%1*Bh`t+H18NwFs%sd@^&& z`7YUet|=$=C;~U#q||@WRd=M+x5&sAN~P%eWalZ;U=!Y^Ra}LQ?mS53_Jub8_!D(AXa? z!SRAA-M#e&{Bx=}RjF2*tx5?FhOW#Pt9#)5@CH0(7DM5q^;2HssMi<~n=;pHT2^IN2-rg_}=Adi|fsPN^TK$HB3boary6 zLZ6s9^+)M8IdbbAWMm_!zMVr@vsuqO;wO4W!b;*&vQL9;83(?fAbZ#~#WniON5nlQ zHUEHao+C9sN=CL&Geuu5yL*v*Q$Q?ZcYmF~Qq1$0z3|hjhpIEx%9PfDpWVpJ?lS;)etJIu8g9HQn4hXsGf>DoFHXM&7uAx?@O zNp@-?eWid{#!l@TjKBM;^#!d<>t?6w+sGkurE1=ts@yQ6Lwhq_HAh~)i6gIs4((Q3 zoNe9NhqH(LLv+77ju|Z*1Si^Pc4i->>*yH!50H_Kob-MUv2>l;Jyr+SoB3=%U1djRjFOR!d^XG>maY@r=1QS@e4qFV&^u$Fc$(}z*FMqm zs6DOeCZ*bR)g39-AR}8Sm7;%>U8G2PDIivQ7r8IeMgCTH8vh14Vy-mK&_yykjV|(i zbWI&u`(BRxJ<~;kcf$T6GSB&y?1cC--Oc^)B2|-3W_*dRvLiFTNJcjD*`IKT71l*E ze>@?VO98QrUF2P3;)T>; zJ&Ra-*|< zY#n7SJ1I`k9qrgrT3+g;8*S#bS-R4W?C{9QMqZoZ5KGrp?r`^LCH`Ib9|z4djwgSV z>_68WV|gDSz40ck-a%L1kydXfBU@;dqOX(PrAU1#AXa{N3H6XR?fQl6RQ^0UX0BAu z)Lk-5jqdVubX^^p`)Q8+J=9&Y%D4dgs8?ErLS$U|o$RFeHr>%n(Os%Wo9y^cy3&s9 z_%|}Lk=Oo(L#(*&l6f?tyS%5Jxw~8g5d9fjX6i06<4s!KPFLQMR=1FmEwoC}*U9cu zq`njo%h+9BI{_!D2K#Kn%RtSR7+bbHt$QqIr*4rPBiHWnKKvn+-7=#)e1fi_LAM-La0{-xgxfLnF<+^ekOT$LPO~jBMnk*K&xZ>+Wv0(*)ZC z=tH1h#v$Mb$xd=j44bGN;TD<%`2bx*M}oYcjBFuDie5){Tp~%OfLO+k>zZJf5^sp@ zSuh6w^G$v9(?Y(Pou1zyhsc$lmQ|uw!;Eh0MY?K^ynKNpuY_*vR+~G*gdQ2R-E=Z@ zM!Fs#`cq|FR*5FsXy&AA=sG&a{z@{kk&{+)h^6baZnHYDW!bsuAZVDe-`Y?1lWStI z)HcaRnlu@uE9pp+VKTCXCMo(I*>#CTl>%ZJyRJKJfn<;N>g^Uh>6>YIO}!`kf$W5R zh8!_h!de!+xY}uSY_Fng>d4wxaO9QHv8{LXj;)`2Uv@&gm+ofA(V1mkDAi;$pS_2! zvLiEoo{Vhdv!CG*OV{mfaP?=)(hGhW6wcTSeu?Zh*QBx!AH9)nHc9kFy3URy`V%s; zg+wWOG}$SNB$onW89T)*^|(%YrFyNbcY#-&%FNcw0HQyY{XH&h4XiRcyo>32IWlq; zM_vgX-XI!bTlcmrd$70Do$A=VZ6pLcG|?5HAh4Sq_G8@l~m zcB=j~Ib5z(-9|`dQ6r6R>?i1II`Z|$Ir2*A#_mH~al|!Y(vM6|el9x|K27(rW3M)n zo(iG8W)AxVU0+8|`~ex+$YCGl5KGs|t#u-gt5Xq&Om`%kjZTocKj4D1OFHtF+k zbcG%1^Dks%3w=`bU$P4ni7f@hGIoKNOBVafMN0Z9zZ*|yCh9tX=+8*)t|X#Ln~V-F zPuI$kjrVZmmC(W6ghV&Y?~(rOiR^)XlRGajTzjhx?%W9NGs*Efx_*x2cr6*(LXH$Yi|m|4Qc3}_ zjGfb^Ax9sY^=d;ky=VGZc2a(X92!?r-jP7cz#yYr`Y>H3M;?BNBd>&R>H26~!=xR_ zJ1=Gr@e6c+I`&DHwW?Oz%$)Oex^9lK{u&wC$T`n*h^6b0ZZI6zvdkA=znHli z$3Dq2PKq_oi1%r_dXDjKlaY=5)8G(G*Dc+I`mSBWsPSIVE#olhJ!B8LrU1)>&II!e za{N49K}T}@3>n!%jubtM?3_eON&(^AIraQ-jjKzdZ(1xAt57qsV}MS2(ZlZlM|N(0 zl^h^fZdz7cpmv${(pTtuIa2b=WMqSq3Fk)joD7$iJ$4$@lvkLqm%VCaKy}$unKRVI z0MVb)`8K>r(G4=gzlyGqWBAV}BQJaSSBKtOfRnv**rZzgEqC=S=u@*4#PluXE?V%l^7-?p*fQ;M@i5*F|#!;;*yW zuj}T{WWWA>?tJ()e$g52&c#er(<_0rDX+mKiI1i$Gs;Jo!d0z?=fNH}I$f!H%|fdVXAMuaE7dZ$ zj)A-dz?fZc79D|7v$GnyJ>OKqqcxv-_5A z=Q3fwSJpm#Nx42>tklZIR*|XQIitjXt!mWktwM8geyU#W&aDC)I_FM`zkaBD*E8J0 zx5KB0I~O)9Q`JgsW@xH@((B5QR%u~@T|M_z$gp!4 zgVl4-!@qPt%>6xlba?K6vY(v`xXnizM;5@)i(4LSyI*X1N5S~{CVX;X@X1hP2L7J= z2Y&1S;y<}B=3an*KR5S}@Dozbi~JWDdk*tgXzFY+u;9FCtAd+YtAbyQeejF5D)_}( z75rkY3VyLx1;1FUf?upv!7tXT9`CMM(>Z&gSZQ=S+w=D|+O=HSI|=bzm`(Q423f?HoL3EqlPQEl>7GLD@IUA00!|dL}EpYUe zuK>R7qf2fA5362oVG&+wtL08Y^9Pl>oo!B9;5Vxp4be5yRRND|bkZeyo2tcbx)yEN zZ6#NN_Sq=Tc-_u=Cmr;gR1J2}HE5owEaXIT?A+%hUb#b+oq~@XiCN>yM|p!P`GJ&H zSL?NzoDjdk-Ew)CszZv{b7M{|O!+Ff#a_Qj)nHFbFE9zMrfMhD5{QW8PqJc=nM*PQZ*P! z>81JN>0Aidx!>I}+Ks9vX?+3p0NoeiO{xaNDShGh4k!kyWCi0rFOS-r|NtJAQxPz%Gwl> z)c`{l8eXEXHCACh0xE4CMcSd!2S*QeJ9j5aDmG?v;$qdZ`zW%GPK{3;Z z9<7>p+RcHsXaxWc{(G`rDV<1+)NL03@w-teIn8r1Qv3+r5i21Q9gol8s6)<+;CWEH z>TPG^N;ZhRQ2d<}e+pN3&K1M8Zs*2A!5`=q3WIAZwLx*UxcM%a_Taa{y1nqKAX*JJ z%Di^A*epPz#BRMv-0EMU-FEdJm@s(|+96Dwz!-D%bjjo6U(iR~Wc%J{3YUEi?0wm& z!I*V#u~Ka}JO$+@fnvQtg}LW=tpXWregekg_4(mStGUmsv7O24jlnhi$>boog#&^= z#6R-(do(*Y778Wk;Mp$4gKLCN_B#jXJs5bGLC9T6mqI)QZXm73f^mZu`Mm#B)nCcf z?Od-CA^NTAk-J736?nc3fr&aGau=xTds>&34*>%Gc)-@nJ(~k>*zS|QxKsGTc44@p zRFjlvQ$2|?;K|v7*Jv$*8TjLf&4k~tuRv%GBhDY9%XEHRY+bgw}H{(GgNQeL`c&+PAd0&hsdzS~Zt*i}t z<#ggVIE$B(Gz~VMWKk`&cv$1XRDb&|*BW4ns!3Z{X~KkQa*$O~cf@Oz_aQYo8{tF8 zu&Sbxtdgjjw9W9jbZ=51Re|>=+a`fEnLA~>JPK3L9!!3hygii$%yK*Bv-Js*5l~J3 ze&}=|lB|18GB}T5sZQ8QR|OhVAYIoA9ta|&d@|AyOd0!X(GjGnn3<4XxS~L zGD-PMI+GO~nnX>XO%2Eqg1(R>;(e|1@+6oSl0xVRC{P}n#>0X zIZ8v3X=+n~x!P@brWy*49dgLs@}V%AipP(vS?QkGC3DOA&Ee>AJ4S1GBUHe6)SW?L#Er=&<|Nh5L{ zS@Xp#~{Ub<{eukBvQ6-U)nO_Jtu3~){Mnh}`7nW;Ax zlg9=A#BVf+{{0&2x@0y6V#6s_%WR2%9nQ2|+$>@sL78m31?P7lgD=-p=UMMODwggi zJLd)z*}q-$&DuoY1VTgC+#UyxduDA(%n%nX**K7~AZJ+Pr384IE!zTC!@IbQMX>VK zT^^qAe8uu6vL^Z7a(jNknppztLJ!^?>p_O4p>L?xi{(UgSQ^l(lw|gd7s4PlAsYiz z4@@38T$mi$KRP~SJf(?D48ue?UYa9Vny@^aKn726ys~R=gwMC@D4K-LiM-ZtmVU$Q zdHrgfVs<%xAKB8Zo1zt z)X7qbugTp3pUWPEZ0|Zpd!-0X`Uc&o{6SdAot%sD7J@)&vUas*;e3eMdbMoJVF-d6 zTYUZqxhXFtX&UTgm1P4cmr?dE>4v`XN{Y~= zZ}-{m?rha!yyA-ZS(Tv4-Wj=&&CeWDsK@K8m?xA@QPx2<`Fn|Znorg$3Wj|uK2IHM z9iGMa%P2V!A*#`WtYPpGWV}vNy5^@{d_GKm>7<%U6Q_I-5u$1EKt%5`F{D*uk@z?p zpRG#5)wCF+^2Jm$qzpc4N>T@B%|T*lg1I!seF|~#XH$uqNgXtw4Y33ZPv*0vIDCdL zqLC>_(_`csC(d17JA157X0XVLUi)p4pe z3^7{FHcqyuVQaSvyoWhbFIM3Y^?D74LrM7rU$cN=Y0{F{EMO3l7I-Vc?!mdR6}{AL zl#7q*t$>={L#MpT%xudx&a{H4!N%(o>#ccTq^8Gi_7-*~E$}R1*MbYwbl4g*>cwzW z9}r?-jDUB;2$3EJRXV|TDND0`Cwxu~fvN$4|A8b;{tnE+`G*2>CbfFJiipG1q$gJq zaZoY~;8jH2y?8b_?9Z{+Ybl5kdQGV&@ESB$F+&B-V>_}DmJly2TWmu$pAab|i7WWi z20Nl=ck+{mrzHHM5KEJ=spvn4iGR{7#3;eSS6K-`5lBtm z_GVa56-r7$Wp{|0-|?AFAr%GIWZxb8j82#sdh(@qjq=9xxplG6=LB-}>0F!u+uoL3+;Y5=*lxYgD zr4=DKv+tMB$}BS|3WQ2B{F#_?vF$0`23AwppTa2!syO_4g>o_aUIu&O=Z{=^ZJk8c zqQ{>2$$1!>P`oaU*eJm@xog$S*t|(HEiEetB(wR1hbCn!g`50#Nzi2LnA&kHP4=b` zsU+ZJmU5xI5ongKrBgK7pA1uzvO$g7m>9_?2QIlS_)wax9i-R=%7mF7uL2SM@d%1% z{tgig1S>&IW{!W8NI9C-8!CZU(Vj}tpO|d~tS0Mz1x=YGP7Y`?OGm>;0Gh@F@4Hg76%tTnw+Ta9GWM z+x!)6i_q(rz0)+2_?Si&siSL>?^UjInEAvPov9ca`liHouHGt%fsa4bYjI|5ElQ5t zCi+wqHF9{iRiyNaP(?4xBN-{!^EVZiyX|s33#Uk%@y` zV}P<@Mr?uL6@a~BcWH;UgLtEhLTQfN5`H`1Xx1C8U^8%6&1p=X@JO%8|H${1T$4U&CKodm8L%)i=G$YAQgX0!3L=b z9_PDm952Ds&vM5X#8}5VZIn{s13ggKS55OU%7964!QZ{Mj|{L1(ez8l04sJH23Wy*$N;Mh zsjxc(tYCSJ0sB-&VhLazrjDFiKc0gf;kBqACAIrFrNgo2Xkr73fx#nvgwoby&}EGG zWKz;Cx)FBtI=VP~*68A>(s7Q_#bJ6CT^wC1=@?xc25q~Wk2XB0`bu82>6LjygARMr zbLgq@H!Uo1TJ)0NoVK7yN8qbNEVtp&*&Dot1kWrSApc3hnqDL9 zB+!`}+qFM~M)-4in?{OAO_w2_iO2aMd3e!Z!*WziEj5SXC=Q1=m+&=JiNKm32i&Tt zSVhD732$YI3gOxNSn_@RVQF*NgAR>f?BcXBG!vwerTOvk?0(E6=7g@D=$YEMw~O;^ zZA5(jPvaytzdYDG8&qwzI84JH05ep>)%;zd8l``XzFT~JQlyYEvpSL>zxhQ>bPk*j)+YLvnM36 zeRNhkde}}3m9==(W?_-CW>TM7R_a}Ztg34k&KQ^VE4e+^N7I^`O$Atv)@~GG34gzA zIo3N{q^_C`(`*-+DcIvaFlI4+W;d>wiY)?q*p>{HHH%8&*F69A$()CK7a3h&&6e*= z&R{{^JqGLFD)1V~Q@p#KY_ScCXB_srIiAvxc)6MtEw(m~>&Bnq@iX=^ge6|GoQ0|M z#WHxO$S_8;_VMJH`9r27u+RKFIbdn4=@_A!{xx>k1*qi(OY<{?Dn_P^Q`){L20S0N zL9@^yLLtZI7aDNb8XI=IH>tD{iV>>mUxRa{m{vi-0LQLdCUTOg7$Y-#gkr$+Q5!T1 zCz2KC^9*b@*g4bfOPLR%k~B>po?`PI83GVRmtG(5k-mAZqNernWd9!X8nBlpu``Kz zh8J5nAi^|#3owl2+ISf}jR=v>PFraqp!rZ)&4vTXK0h+mgcn!YF$YQS_@te!3M6Qn zJyM(ol?&m}H-nD@eCgODDOnsKdH`9A!nX$JZ#leskH3v% z1=QpY2Y$2;J*+sgRp6%%S#QK+w>y4j&Wa}0z~A$<-iXYzZ3(7_ydgHlG6w(i88vub zm{d;THLnd%i$QYDYlD%t<2A4CK0E@$U~a;!oefYbf^)%kpJncCpY3|q9oE||=pAQZ zOKgX*;8m_8ycVV8s>cyk`U@D3~U1S7M$+F=VXpJ(JO!@W||L5hD}$B#Z-|-*6Q|VVW2Apch92pBMyu zr&bqiO`Gv_F^Q@h`Uij8&qXafVuwQ~T02Jo3A0l5W_#m*L?^+;cY+`#t(#Keb!H0#%fmp(M>)rM*gZoWM}ZTdKx zl;pi<3^hUv@hUKSJ?`CYq0z}q59|*G&hN`_B7=YUeCw(uG4`uAsfQ)AX*vs9Ed_`g4Um`G}~;|7R8*~&_obH5@Ni$ z^UoR>c)Yu2P3P=|Vx`gTh?@sX^?BHdt<1Js@dnupQoXi)Fqeae&rSGew{vxAzAQc# z1Cj6>e=C8>R}Bnw#7j3hKWKiF%lRt}7jYR!Cyops8XfO;Hbf;@U~za*)w{m+gV4EE$&ezi^&k0vlF%ge z3++};eIu>gx!0n=B6_(hRqO$jATWjp<|;H zhlh@hJvchq?c5bBLc3P=l93j@2ArjRY#eoKnA2KSRs0iz|wLh)Q;@@=ytY6Rf@$7yd-W`87-z1(rF}KVahdO9bdO&@H$>0 z^PAGddw$&{w?8-Tq1I@t>L*33ESC0i*0fkZh zCEgZGt0kFbUNCj!I1lxkLm&z4|$EXV1 zu~dD!%+;8d-%vDXhJ+j>>emdsuhM%A(xT#!3XDypXB z0*0mPn~+Bna)RKSzqhKQtaBa>vVsLj)l}^Nm6o;skinPN?d+oRGy-kMC`QrPi=Ue9f{c_f|^rrSG5w) zKg=u_xgXamEEwtf*lNZhOCE93#~;upkBA~@mND(&EV`)k8bRvVM-Cfv6N02hP|Wp1 z1v*{N%@&)v8CZ*CnVNjEUGZAojxpz>-kTE_sS?DdWVxzWY}7IgRE>ECJ7AEE%u%X8 zinrftvt1e2bv8xgV28^o_o+VdN6YpbZF;oXPOAB)|H>UQTDC*xBKNBLJR-Pizd2qX zmRw;2$K2E+4B~^GJ@d_a6=t)$opFM{gpRRzs@|=B=3}qfY^{$VNVU|TOQ-jJ^I|?#cE(2KXvfS&Z&o$((q=v%G?*lYQ8(Y}BgYrw=37t> zdhi_5fBB%>d6*YN&%fMFcInkeJ z0V>QHh%8u~4-48SdS(%QfNkqN;bA9T~;8 zU$4VR`qlk1-BknCH#7b5O<1%@8b8uAvrTZ-qSWJ=_;wi-T)ElcbZv}cwDkgE258q4|5cVWqXv0Q8wdpVYiLaWw@ zb0f&H2%q%aPw=(v8BfYN{6nKd6Nkg~zs8g6n4vmTM7vw{i2pP_T>DLW!l6AaHJ_%( zgKAHAgEj4ZRk;7;DgJibjJ~QJ?oa4kG@ zEU;&e(X$WX){Dfg{uSD7SMPzO_aLn9gX9O@)9C4v=daVgQQTzv-ZzxXzUB~nBnfNS z_7*GEcEeLpZW1Wg3sjhUj@K%%&}x2ypB*qLbCH;gL7xnG8+p_V`205vA4RKE#_M zE`ohAn(SS2Az?bZHzcqobXHzU(lpq3l0~(^7Lg}upqlNsTq|28swQn+r3qVbCI?v+ zbw`4UKBOjRBYfx>R#jAzRT5Q`wi!N`?xna9KYUJ7P6O6t?vxk7sZ7&e!-I3E_EZ{P ziFGu|Efjw(ITlotzhABePck@0tsX4w*0qugzL!HQDP7a*peRBL zVp(@q#Y6>0bC;%orrT(xS#Q}l0 zjl)bInNpTeA1PGRXMZ%Sq*p1ao;F;h)OJWUm9t#9w!$@0ZOZ@9_rsZnIdFuc$kf03MZ^3)bKn6q8?6~u&*c&N%R^kQ}*}q-G zT$|{dKxpV1d|NdCGTbw3OX8%Gq9q##G8W_vYrK>IPqSrPz-riv%$upRBkJAd;rTAG z%0$*A-&=0aFIY26U|s0Jo8!WhXIL8ghHAZNKk+I+Z?@psNJ(bTcp(f@6S6Td^}ytj z!-dI_{iEYU##5R|83PmHcxjGcX~ObDCH4fzy*I+=+jSI8!sbL?>o-fk;q|hbz&uu}7%W9#J>!6zay~I4t zCuZK3|e>Rn2iq5BUIUtO86|FgHkw~4$DZou?f{qA(Ys- zBT~Lcs&Hk7LB_*Y9qf@cQWjd_8_`GnhKkanxg&B1>u^{D^Lx~!PRyzQ)-W~cqf{KMesa zjCp|R#riCoeky64strSo7PF0$?P=KAz5=gmjns=(INqsVgW*t8KEc;4U|5>8WHHtYU@=n#Xoz zBP=0aShm=PYCa)SNKy}hKW(rhYIY|-U9|&Ap5Wss`<*yT_O=(A@O+ipZ1ciT3On#x zGe#Xnu;!g@R9(~*LWm0&qe;Gfob7LroG7kC=QR1v8eZse>ysrRFsuvlrzHHM5KEJ= zspvn4iGR{7#3;eSS6K-`5lBtm_GVa573B6kmVV!miqCWksVJ}}`|j9hbV69@$(Pzg zWImr;7yEopAV;6h#R)K;&8-(U(w@xWPp}On%}4hf^&0HmrXnnYPv$W?C!ALxG;Dac ziEWmlzT2eFCaZVKG=(Ypg5?qtJR=tePnxEMY45F?KqYudy{KSV<{KP8-Zr&S~^9O{mC#jDH~LGjfs(ba^RBNf)Az1N|q~PlXbs>rc4qi z2Q)d`jE0W@G>N+@eTAx07*>2ViW`DQb_Z`f4w02MsIE@tmAns$@BK0#Caa*zP4>A& z)_i`?P!*i^C_%s@L|3ogVZp zDDV^NU2j)6QjlgA6`r!uKPSlVGNbrDiOj-Qp1RJC#c${yx zah&aMKfE|zJUv-#4KK=vEXUc)6r<1u!&^bHFMD#WA+`yMKH(+_(e!&TF*T8}WxGCz z7HlLiJh>fT5JMd6Y!OL@RQNy-6!ulqJd846GCWV9j|{L1(ez8l04uh1s5=9!U_E4j zRfbg9odH&`JjQ^1DkHH3Fb*?DPOTr$!H)1+)Q^(deVo$aSY$M@0mZ=Jkv>9c>oMpu z#^TtPxcnId;~3otJ9-^m96oDwaa8Fz$LQiPy^1c5E|qkQE)Ii6ck|JP2UQ>2s@5y> zh6Ww>r0396<1biP;I!x^zc6hWBh=c zkpHA$O|Ow+vssy`vHiR=XoNqGw`rt^)N~o*nRuL^R5HBiFI_q6p9?bFfD^ZqM^gAw zszhK-j{|O1RIH+5{e-u&M1}C|eJuGt{*1Ia4BI5n@QYoXHimWrX=G`Bd_21!^N2a2 zYbSc9Hty{r%vyNW`23&7Nosz1uy;17+G=r_7CX2X{CT5#!`9NX8uMuHj4@Q!EGk!E zwx92&8at<))gE!0ceIC0gPM;htXVU~BPT4ezV)3(s!B9*_Ipok(bUx}c`SZWTUHxh z);oS-i{hr?w0Jfd%${Jx_R(4G=wUlCRMz5Ao2|^uY9{rWWu@Ll$f~+#;f!%vzmnTy zeKf79*;Ig4XmI2dtlaOHEysFii_}%KVVZ3oGvzf~fia8mGrMucRBRE@!?t9otXWhF zzvlU`Pv$(_yU6JJYPNh|as~_P?lD;QR)M!ip5oo@q<@%iav^>^r6KWhH7i=-`Bh$! zc0X7F)3d_*}-^M|KAc#{AIfnKZKsP$Cu zw5>1HTT@NbI+$Zludj43KF6F)HS9_GY*<5jLFV3DZ@@pNic?TbHDTvBSVL2pFIM+d zn((A3$PY*Br@Y2duQ4L_-*Y+9;Bk}{y^^na`^m)F&0dL>QJL z{A7PkMvT*x+o)ceZ=K@3ufOpIcul9?#G5G{dN6&w0cI)Ut!bM+-b~xrc#n;V zfqhWWJydDU4vA^&#r?t2(T*(~&pXZnw3tsM=4EGG8FhSw?+k>;{gI06Y>TrXsWCn} zat4Z@MRANhqhexq&k}nO(3jY2Z756ZSt|-U+=Wuh|IHX38sg< zAvVP_2LJOJHF#c_R8HYFuMJO&L2}J&gORr5HLvYHJOaaDZo;gc4NxkAbHR3>W$taC z?RwT7!rA1|JI=sP*bZUAt6WETElSB%k0Yw|6<+l?!r(D{Su1r6qrMG`v%Tn4fvcLK zLYg->>9+?!5B|2Fi&}WZ4u?*(c8)IKl0zd74atvs#7Ik? z+#u!q^+L(vlpOrs1O!TpR`Qk_2!ga7-}(T#1&_tf7NPY>UxeJiw*kb&hk`Wg*M^rq zH0#xdY7TC`JwDn#jwU5}%NawB&_cWlj9!m>cUx$5GSdV5L&5lLtRXlQp;^3fq{^19 z!+xr~(3M;x8}E2gJWb@fvd5l1O?iaZ^KV6?qXTI|HiX|TWZrWi3Z)5Jf3nhS zvsGIZb8bV;i699vUc22nbFSHay1QoXpPw2Sc)Hs;50=HXs~-Do_Q1h`_S_$=W}k=O zUo=~UUAUfXi-8Ki^Nh0w2A-Qci~l^2|NPFG?2~ig-_Oo{m;d`*{_hL;&jJ4PZ20-y z+?o96`Rr$#%bR_-6t<>wnXsi$fXCiV*z%xI=ytAbF3eVHr}O3de6dn%<`)*BNUwD} ztBy>~!I9~swN_)X`$M4d83zUi<~F{1V4!n$x!5XppKEoW>2@v>kj#u3n0c5ReC@!1 zf9>YzwKs}u_rTo`LKpx=+jc>{cN@F+0`D|CQwlEfh210o_ybp1jk32`skR&5Xn2*1 zuoFe_H(NMftFTS+CWQ4g3QySXmK}wv#UWD*ys?H_h&^&tj3W%=d}yffOuMz{ z+hR$`!4v8{M7!-BTU_uot0oMq@L{;rCdA3}{mE3lj$?Y^+e>12!6sQM+({K_eyjHj;IHg>3+#Cbd8aDoxY%C%yP7RL$R~;~qX`BXMIS^OH zU%>G3$H(#d>o1C`BAS>8{H@P;5tU}WRj=u+J&A$iZ%)U97i+DGfxd{LCsCPgt;my0 zQ=`c%8J0$qB;rXRJO#g+A?h7LQbtiAVSZ0+>#J$`TFhb!YItb2N`cp5sQ7~k86`#6 zg|G=0%4i#W788I^K%xS8`av7uo3bNYn%EDa9>$9dA@hBxRJ}GLd{4r(;-kJh!0?x=i zZ#2X|#Sm|f^NrX>Q}yqknYP6v@SQPLgugHm@L_LYm9n?LX3k$RAax1_AA`dR0_8ky z4dHJXg2r0BKi47fpg(V#h0jGtz(?9`E{i z#@7H}zyR@yVN*SsiZsj@F-)8q5lnUtmj?9>2BifSFXIs$^;Acdw%^3G!$&a~D(g1+ zxr3UX|AB!znaoeAQuX`a7?f*70ZtooOSZ)$p; z#Xz-i5JSaB7ZI)f;?d&fOAI&T zMN<+e?&;O0r}4R%M0kr^uEgAek76Psf|}O?d<_PS7pf6pSyWnFe!byxe01c1i+lYh z)9d*2c^3&5|J;oE2VXrAks^BvEDK7JEc9=`WfHN9Catd)Y1t)T#P8I0pi}i zn<4Aj#5q%ix+=$lsvSTM^Mq4o<++4$+;qiS3>0616Y&O9S3O5oi`oXm!%j&xiitb< ze$&a6JeB0uOCrJqd*%q z6vPv;6)ilaRBZzLF&E-&wF8U8>r~i-7%ahhqgFeN0TT3t>gtp@dQ*$~%P?3%;MvH5 zozbX)9>YNK1dICAf3s1;e28H>B-l7WoTiU3WIe&+-B~QOKOUFIdurN0p3x&%=)Mob z#0UGR<`YKTN`{Z|io_0wdwAOPFy4j50ITOystv7@(F-Pfs~F;S=#_ABk@-zk+cl;tdt3^Y2g=t^h{l;X_ ztIYfHi9=zMZ7S#)2BS^|`O8xxQ zpf@tC=nN1(H=v@iBp#jq`9TaSSuuYQ4<(D{t+!%mcy}04OqTN+;16MdmKjqSL2*=} znm&G*;b>t@)`}JFcr4$^(Dbe(*<~D#2UN50UFj?|0{N2|PBJI_x>-}{XAEcIow^!A z9|!l>&zt^Ac7K3qy6ipaO!aGQ&D8f|P|2~BgL4h-eTL)k%1w2ggu;FI8>a7)qoIJB z?)$BDHd|Wg|AV37Id(`M&!oBSzZq`BbF6Yd?yLW9`U=k#DiS;PPE+Uq#Vo>Gl8Uq7 zpFpRko!`fx@Y+pObxsG{V7 zuGk-8#^Ig5258hCe`4z80ArLOUo>HGK7|LP0SSx;hhO4WO~Zn7WtlDR@epU8??o?G zglpvdG6sgf!{>UIno6&)FnD84aDuYdczzXA7GFhRJ^f78?tfr-_)ATE{j%#hX_|-s zCljKzj)Ul+fFuELKL3k}(wonL9>`h{m5^rD|7VJFcU$qznh})=BDx?=Flh2W#2MfHkug!7;M~G|7BX>c(76AV8LH}W?_6oq zU+pUq4_${zz#lQ$B-j`A-IyJmk0ye{jWjY2V&M406`SUMgHa9)Qk{P*CIFwfvfHCdM|_5Q`VTh|A^BX+38+0k4 zdK?qm!^nrHU-ne?T;C@r)}Xe63xvLRjUiVvpNjAd9H#M z@u{9!9V5})Do(Z9Gp)uq(@QS9qDK#Crp_9sj;ADdRE)p#nrhSu)2Ns!kJwu8n7>mD zy!4MY+L~ck+N_L7%EMYRc$Ex>ahflmG|fv}DhC_ZYxph0rXwk16~G(&_^Z)6Wtx+g z8=*XX|9w^3Q>HY0hjUp24| z;?PBG4;e3Z^r=FBRf-TioeAafInlv1h9?B zHMF-IZonr3Y+$$(-eKy9w@@o=tP6hBgvV!JF?eL>Zp|YQreRagf9rP2X1$e@A zl@jZ(pEjkX_ZMtktNH8adgw2##DHl^Y8b>8S%^VqK%9>eQ3 zXLQ_WziwKA7Xj{aj4g}R4E>v?yewXe^6a;J>NP9Ve#f*Ti`ST(Sg-xADGy&$VBNP^ zd#Fv`1%Z8jK6KF z=9a%S+=9Pgh$7)m_-j);yj|d!xXFKOg5vLpp`dZZ_&dV`_^JpOVB8^pZ|aV}cHkre z_s>6=GVt|kQbxD~tVW1`G~9u&HAHZ5>;K8r41encL&S~!7ZdXK_+}PtB&(*{e={t_ zJDE@~9|Sk^KTVzRv6ume+xTr04_^{Ff@}_}Mf5v{op?kspm2{?)p2LQ=99()GCXad zm~!7$74>Wk6;Esa!hL;*R?X(~I9O!C9sYhsxRf1!r1_f-V2M2*YvP@l^HD zr5MZ=81Xe<>}Buip9|K(4ypc5lIQT7w5!&_Rde5X9c*dJHXLowT?xYYrl#=G+)YgK zs&Nhx*{YPG&+eVw%Ws?eCcFAu@WbDnl%a;-ioH@hXEmBFW%E|PfokWhW~8o=&u^J*Lc3jQ*d$NWXU#DDrSuS#w#Jo|t?2=rr4F_iDN^pvD zqd4P*ScA$%7lPmum4)0?yHYKOSKO*x0lM=m7*=?}9m)ll`WIB|wHYokyy`CHD$s_* zoLZRDFS=K`=nCbc8E~V1<$cPPS1DH(`B{Vdwd<8@2bF6pwH%x}(e%LG^9xn)w0_qn z<*q>CX0fGTv_-k-avyrWcsgfXxLvt0Kr1aojM}AKwAx4WIiPubNV)D}|2o*Aw*}kF zhW_58ToXj4R&RMz_4*0Pk$uWl*ZD|cuFIL%A5g9by1>gvQQ_N?X?e|7PPDTS>p^~1=gRzj3+*X59Ca4jSZ*3- z>e*(_-OdHMT)DBBgVq?{@p5s;RgpWOh36I;_$`kKRSvP%dCsBH2S*QuXa(h~vyM)T zhF?r!iq*W+b}62?W3{H(lkH0B1Zu~uko*Xu)Cqy)r%dJqC57hr!(Q#%Kzwcpw-<-#Vjvv`0Ji)(uRQYPvvC+w6V~6(@CP$Bj z_dX$HUaZMngng!SIXL@eq20=<%gn;tiUPOJL>l^(l`qfH^_fw=x^U>wvC)acL&wG* z9Gwi2=Y&F{kA-Y4HZ+fVL-es7NJqYw;zF_ebl{hHA?%f?k_*b05ha^K1<^rURR}uh z1SL)iIj={RSQL_cV}m987Goi)_{IwB12bPKB>W(g0F7HL3(7S;k9QZG2Cr5wfegX# z&++|<1CZA$S3u4YFAe0UE2q73&R_JBYqsaZFuhK>-XOrU{L7B-K$}^i1EH%Zdo|eL zo9Bme4xZ`dAYX^F-Xvtbn;CdRn408vzPVtXXn4n)l{>D_0fk`=4af+#A2n}yn{vZV z!3{x&?-fsg7Yrd?&zS6OI`i5eQLYUYlCMFTH~g4#!!?0I{%dFE)$dlWhUD$j zByeyLpH7N>aEnK>p9q$pZD9H^Kv=pWIUiDxH1RQ^)?Y9W;yK{s$`!z(cBxis=9?`zmd%@444wQb<*M6)tAg@s zY7r98LQ$OLmT%Up(8q;$epb12SNxqGtPbWuZo*3fwJDYo;7IkSyd2y7r%36J9+ zE0_-uFk6**51L7C8czQU(L+uDR6*TIKrPk1=@2c)WQ34^ra)qDE7c+U@zF}uZGWNM ziMdU=)7fo*rC?%ivth=&?QaxR%xyN*7`HvIK*F%f@0ScxeoeXTzVNc3C>=PEFeY2sND3`lab!BNS1tn|Dzg zB!SzMD-Ct;RKAQYJ)xLM_S=4hjSnw_U~*E8L@E8(1`&UvDet#&)-jB%JZ zbf@0X?VJxoDgg@Y!? z46%C$BliOOg&{iBq&}GbS?8w1btsAJ^9x=LipF|laS$?Oi)p{+@W|v{Ovg(?6p`9| zAmigse%;_>EtnQ+PQN1e^x*L)O6s40HdxG`$QSd2;}f|_5W=vp4zZhywbrcHs+4lP zT?)&sUw1B^46YyK*8|pNF#p+r3A3ulIv24Ez;`bP{~=#=E`RSj z$P95ZTaX80E&z#7hIkDjpv^vDl$|>%K3EJtcuIWmbojxm#0SrWAG}t4@H+MZAAi1H zeDGZO!5hT~KNx=SX7Rz>!VlgqK6pp?!4LBf_*1RUIqWGe>#E>z!gDM0kn5Z9bjt6d z+N}z7JeTf;#K5+ifn)8S+*2vFME|sAZZ~vLZ-Jx#*kOck?Oedgm|v*PuyMpL?Ym1= zf(4iC^)F#(7QVG}xnxaY-KN6Y;Hv%BtJZIjSB+Y)+Okz%waSJG4|sx;Ky61I_H(E zBI(clCVbGjXixoAjqN|fXwnS0G3Kizg1c_*x~=OsuPd(IP+q&KxM}OwsnYb+{pI_& zl(z8yi}%Us=PL_~wJFA-<30vEu=1^)4O_N&rHyOXZY;0eIQ#9pP}T%Vd_)Ad{<^Q%zVRr8C@7BhLeG6N+E{|jd0pa;*35A*EQ&~E4A z@$ymr@rbyT7r5-H`6aBQuh-^_jS~gv0pP^Q&iOOb^TEF_1HV8=SpbJZmBk;ezXj0B zu$Kq>m{mS7Z$I}tkU=`DnZZzHo`4fm;qnFq3(&68KPl9_Q-xM>3cgv@Zd40A%-qa1 za~}be!*d_yKYyS9{22S$7IF0tKHEX*as1m$y`OW404t_7G+o~<{U-GfkU1)nvm?U@2w0|LS> zm~G8h3vAHUo%n-gLVOZ4np{B z=Mw*)1zwCpNap^T=@l>lnsn*JRQ)u3@!afNABT3rUKFmv|BQdq&1H>4w; diff --git a/docs/.doctrees/get-started.doctree b/docs/.doctrees/get-started.doctree index 58e0d198abcd502c24129da376ec1cc86d80ba13..15ea86771827a5b3adb986ea53f7aa30b3165f11 100644 GIT binary patch delta 104 zcmaF+km>D1rVVkXjAoN3_$zL1Fg?fwXSOnJeqps-gwbsC1phpsFpx50n!LV)bF)>* l3Td!1sm=XG)=ZNvifrIqEgqoCU3C(yVCoLb=Jg$R8UR|HCz=2N delta 104 zcmaF+km>D1rVVkXjHZ((_$zL1Fg?fwXSOnJeqps-gwb^K1phpsFpx50n!LV)bF)>* l3Td!1sm=XG)=ZNvifrIqEgqoCU3C(yVCoLb=Jg$R8UR@aCz1dF diff --git a/docs/.doctrees/reference.doctree b/docs/.doctrees/reference.doctree index b590ced366a843f5d5f2ff60d18a03b640f718a0..1866217ce965926f5fff342dd8d651611fa071d7 100644 GIT binary patch literal 851063 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�Wu6XJ0#am9F@3 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

Changelog¶

+
+

Version 2.0.0a6 (2024-12-03)¶

+
    +
  • Remove everything related to our in-house Simplex

  • +
  • Upgrade to OR-Tools 9.11 on Windows

  • +
  • Upgrade to CUDA 12.4

  • +
+

Version 2.0.0a5 (2024-11-08)¶

  • OptimizeWeightsUsingGlop (class in lincs.classification), [1] -
  • -
  • OptimizeWeightsUsingInHouseSimplexOnCpu (class in lincs.classification), [1] -
  • -
  • OptimizeWeightsUsingInHouseSimplexOnGpu (class in lincs.classification), [1]
  • ordered_categories (lincs.classification.Problem property), [1]
  • diff --git a/docs/get-started.html b/docs/get-started.html index 0581395e..a4cf5642 100644 --- a/docs/get-started.html +++ b/docs/get-started.html @@ -5,11 +5,11 @@ - Get started — lincs 2.0.0a5 documentation + Get started — lincs 2.0.0a6 documentation - + @@ -80,7 +80,7 @@

    Get lincsproblem.yml should look like:

    -
    # Reproduction command (with lincs version 2.0.0a5): lincs generate classification-problem 4 3 --random-seed 40
    +
    # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 40
     kind: classification-problem
     format_version: 1
     criteria:
    @@ -139,7 +139,7 @@ 

    Get lincs
    # Reproduction command (with lincs version 2.0.0a5): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort
    +
    # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort
     kind: ncs-classification-model
     format_version: 1
     accepted_values:
    @@ -188,7 +188,7 @@ 

    Get lincsreference documentation.

    It should start with something like this, and contain 1000 alternatives:

    -
    # Reproduction command (with lincs version 2.0.0a5): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0
    +
    # Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0
     name,"Criterion 1","Criterion 2","Criterion 3","Criterion 4",category
     "Alternative 1",0.37454012,0.796543002,0.95071429,0.183434784,"Best category"
     "Alternative 2",0.731993914,0.779690981,0.598658502,0.596850157,"Intermediate category 1"
    @@ -211,7 +211,7 @@ 

    Get lincs
    # Reproduction command (with lincs version 2.0.0a5): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0
    +
    # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0
     kind: ncs-classification-model
     format_version: 1
     accepted_values:
    diff --git a/docs/get-started.ipynb b/docs/get-started.ipynb
    index aa57888f..2ebf0edd 100644
    --- a/docs/get-started.ipynb
    +++ b/docs/get-started.ipynb
    @@ -48,7 +48,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a5): lincs generate classification-problem 4 3 --random-seed 40\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 40\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -126,7 +126,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a5): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -211,7 +211,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a5): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0\n",
           "name,\"Criterion 1\",\"Criterion 2\",\"Criterion 3\",\"Criterion 4\",category\n",
           "\"Alternative 1\",0.37454012,0.796543002,0.95071429,0.183434784,\"Best category\"\n",
           "\"Alternative 2\",0.731993914,0.779690981,0.598658502,0.596850157,\"Intermediate category 1\"\n",
    @@ -260,7 +260,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a5): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/docs/index.html b/docs/index.html
    index 9ebdac70..501d0582 100644
    --- a/docs/index.html
    +++ b/docs/index.html
    @@ -5,11 +5,11 @@
         
         
     
    -    README — lincs 2.0.0a5 documentation
    +    README — lincs 2.0.0a6 documentation
         
         
         
    -    
    +    
         
         
         
    diff --git a/docs/objects.inv b/docs/objects.inv
    index 8cd8178efeacf8beb57e409b528c78c714653c00..5a2c12b19fcbd34c2e96c4f6c01238dbcebcc473 100644
    GIT binary patch
    delta 3682
    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
    Ab^rhX
    
    delta 3781
    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
         
         
    -    Python Module Index — lincs 2.0.0a5 documentation
    +    Python Module Index — lincs 2.0.0a6 documentation
         
         
         
    -    
    +    
         
         
         
    diff --git a/docs/python-api.html b/docs/python-api.html
    index 70b8a9b2..ff04aea5 100644
    --- a/docs/python-api.html
    +++ b/docs/python-api.html
    @@ -5,11 +5,11 @@
         
         
     
    -    The Python API — lincs 2.0.0a5 documentation
    +    The Python API — lincs 2.0.0a6 documentation
         
         
         
    -    
    +    
         
         
         
    diff --git a/docs/reference.html b/docs/reference.html
    index b886c216..a8795b04 100644
    --- a/docs/reference.html
    +++ b/docs/reference.html
    @@ -5,11 +5,11 @@
         
         
     
    -    Reference — lincs 2.0.0a5 documentation
    +    Reference — lincs 2.0.0a6 documentation
         
         
         
    -    
    +    
         
         
         
    @@ -1165,30 +1165,7 @@ 
    classification-model

    'glop'

    Options:
    -

    glop | alglib | experimental-in-house-simplex

    -
    - - - -
    -
    ---mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex.processor <mrsort__weights_profiles_breed__linear_program__experimental_in_house_simplex__processor>¶
    -

    The processor to use to solve the linear program using our EXPERIMENTAL in-house Simplex (that you should probably not use).

    -
    -
    Only valid if:
    -
    -
      -
    • --model-type is mrsort

    • -
    • --mrsort.strategy is weights-profiles-breed

    • -
    • --mrsort.weights-profiles-breed.weights-strategy is linear-program

    • -
    • --mrsort.weights-profiles-breed.linear-program.solver is experimental-in-house-simplex

    • -
    -
    -
    Default:
    -

    'cpu'

    -
    -
    Options:
    -

    cpu | gpu

    +

    glop | alglib

    @@ -2669,42 +2646,6 @@

    The lincs.class -
    -
    -class lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu¶
    -

    The weights optimization strategy described in Olivier Sobrie’s PhD thesis. The linear program is solved using our in-house Simplex, on the CPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it.

    -
    -
    -__init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned)¶
    -

    Constructor. Keeps a reference to the learning data.

    -
    - -
    -
    -optimize_weights(model_indexes_begin: int, model_indexes_end: int)¶
    -

    Overrides the base method.

    -
    - -
    - -
    -
    -class lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu¶
    -

    The weights optimization strategy described in Olivier Sobrie’s PhD thesis. The linear program is solved using our in-house Simplex, on the GPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it.

    -
    -
    -__init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned)¶
    -

    Constructor. Keeps a reference to the learning data.

    -
    - -
    -
    -optimize_weights(model_indexes_begin: int, model_indexes_end: int)¶
    -

    Overrides the base method.

    -
    - -
    -
    class lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu¶
    diff --git a/docs/reference/lincs.html b/docs/reference/lincs.html index 694e2d64..4b9a3372 100644 --- a/docs/reference/lincs.html +++ b/docs/reference/lincs.html @@ -5,11 +5,11 @@ - The lincs package — lincs 2.0.0a5 documentation + The lincs package — lincs 2.0.0a6 documentation - + @@ -1315,42 +1315,6 @@

    The lincs.class

    -
    -
    -class lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu¶
    -

    The weights optimization strategy described in Olivier Sobrie’s PhD thesis. The linear program is solved using our in-house Simplex, on the CPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it.

    -
    -
    -__init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned)¶
    -

    Constructor. Keeps a reference to the learning data.

    -
    - -
    -
    -optimize_weights(model_indexes_begin: int, model_indexes_end: int)¶
    -

    Overrides the base method.

    -
    - -
    - -
    -
    -class lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu¶
    -

    The weights optimization strategy described in Olivier Sobrie’s PhD thesis. The linear program is solved using our in-house Simplex, on the GPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it.

    -
    -
    -__init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned)¶
    -

    Constructor. Keeps a reference to the learning data.

    -
    - -
    -
    -optimize_weights(model_indexes_begin: int, model_indexes_end: int)¶
    -

    Overrides the base method.

    -
    - -
    -
    class lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu¶
    diff --git a/docs/roadmap.html b/docs/roadmap.html index 89491306..e9e050db 100644 --- a/docs/roadmap.html +++ b/docs/roadmap.html @@ -5,11 +5,11 @@ - Roadmap — lincs 2.0.0a5 documentation + Roadmap — lincs 2.0.0a6 documentation - + diff --git a/docs/search.html b/docs/search.html index 0461222f..4d2d4bac 100644 --- a/docs/search.html +++ b/docs/search.html @@ -4,12 +4,12 @@ - Search — lincs 2.0.0a5 documentation + Search — lincs 2.0.0a6 documentation - + diff --git a/docs/searchindex.js b/docs/searchindex.js index 539c9cdf..d26a2c69 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["README", "changelog", "conceptual-overview", "contributor-guide", "get-started", "index", "python-api", "reference", "reference/lincs", "roadmap", "single-peaked", "user-guide"], "filenames": ["README.rst", "changelog.rst", "conceptual-overview.rst", "contributor-guide.rst", "get-started.rst", "index.rst", "python-api.md", "reference.rst", "reference/lincs.rst", "roadmap.rst", "single-peaked.rst", "user-guide.rst"], "titles": ["Contributors", "Changelog", "Conceptual overview", "Contributor guide", "Get started", "README", "The Python API", "Reference", "The lincs package", "Roadmap", "Single-peaked criteria", "User Guide"], "terms": {"learn": [0, 1, 3, 4, 5, 8, 9, 10], "infer": [0, 4, 5, 7], "non": [0, 4, 5, 7], "compensatori": [0, 4, 5, 7], "sort": [0, 1, 4, 5, 6, 7, 8, 9, 11], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "collect": [0, 5], "command": [0, 1, 3, 5, 11], "line": [0, 1, 3, 5, 11], "util": [0, 5], "through": [0, 3, 4, 5, 6], "python": [0, 2, 4, 5, 9, 11], "3": [0, 2, 4, 5, 6, 9, 11], "8": [0, 2, 5, 6], "api": [0, 3, 4, 5, 9, 11], "support": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11], "linux": [0, 1, 4, 5, 9, 11], "maco": [0, 1, 4, 5, 9, 11], "window": [0, 1, 4, 5, 9, 11], "gpu": [0, 1, 3, 5, 8, 9, 11], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "avail": [0, 5, 7, 8], "becaus": [0, 2, 3, 4, 5, 6, 11], "cuda": [0, 1, 2, 3, 5, 7, 8, 11], "On": [0, 1, 3, 5], "os": [0, 5], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11], "x86_64": [0, 4, 5], "cpu": [0, 1, 3, 4, 5, 7, 8, 11], "licens": [0, 1, 5], "under": [0, 3, 5], "gnu": [0, 5], "lesser": [0, 5], "gener": [0, 1, 2, 4, 5, 6, 8, 10], "public": [0, 1, 5], "v3": [0, 5], "0": [0, 2, 4, 5, 6, 7, 8, 10, 11], "indic": [0, 5, 11], "two": [0, 2, 5, 6, 10, 11], "copi": [0, 1, 5, 6], "we": [0, 2, 3, 4, 5, 6, 9, 10, 11], "kindli": [0, 4, 5], "ask": [0, 4, 5], "scientif": [0, 2, 5], "us": [0, 1, 2, 3, 5, 7, 8, 9], "cite": [0, 5], "here": [0, 2, 3, 5, 6, 9, 11], "instal": [0, 1, 3, 4, 5], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "packag": [0, 1, 3, 4, 5], "index": [0, 2, 3, 5, 6, 7, 8, 10], "Its": [0, 2, 5, 6, 7, 11], "document": [0, 1, 2, 4, 5, 6, 10, 11], "its": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "sourc": [0, 3, 4, 5, 6, 7], "code": [0, 1, 3, 5, 6, 7, 11], "github": [0, 1, 3, 4, 5, 7], "question": [0, 2, 5, 11], "remark": [0, 5, 11], "bug": [0, 1, 3, 5], "want": [0, 2, 3, 4, 5, 6, 10, 11], "contribut": [0, 4, 5, 9], "open": [0, 3, 5, 6], "an": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "issu": [0, 5], "discuss": [0, 1, 3, 5, 10], "you": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "should": [0, 2, 3, 4, 5, 6, 7, 8, 11], "probabl": [0, 4, 5, 7, 8], "take": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "look": [0, 2, 3, 4, 5, 10], "our": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "roadmap": [0, 1, 5], "first": [0, 1, 2, 4, 5, 6, 7, 10, 11], "mic": [0, 3, 5, 7], "research": [0, 5], "team": [0, 5], "centralesup\u00e9lec": [0, 5], "main": [0, 2, 3, 5, 7, 8], "author": [0, 5], "alphabet": [0, 5], "order": [0, 2, 4, 5, 6, 7, 8, 10, 11], "khale": [0, 2, 5], "belahc\u00e8n": [0, 2, 5], "domain": [0, 1, 5], "expertis": [0, 5], "laurent": [0, 5], "cabaret": [0, 5], "perform": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11], "optim": [0, 1, 3, 5, 6, 7, 8, 9, 11], "vincent": [0, 5], "jacqu": [0, 5], "engin": [0, 5], "mousseau": [0, 5], "wassila": [0, 5], "ouerdan": [0, 5], "abl": [0, 5], "without": [0, 1, 2, 3, 5, 7, 8, 11], "being": [0, 2, 4, 5, 7, 8], "specialist": [0, 5], "nc": [0, 1, 4, 5, 6, 8, 10, 11], "model": [0, 1, 2, 4, 5, 8, 9], "just": [0, 2, 3, 5, 6, 7, 8, 11], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11], "section": [0, 3, 4, 5, 6, 10, 11], "below": [0, 1, 4, 5, 6, 10], "design": [0, 4, 5, 10], "easi": [0, 3, 5, 6, 11], "extend": [0, 2, 5, 11], "even": [0, 3, 4, 5, 6, 11], "replac": [0, 1, 5], "part": [0, 1, 3, 5, 6, 11], "exist": [0, 2, 5, 11], "see": [0, 1, 3, 4, 5, 6, 7], "guid": [0, 1, 2, 4, 5, 6, 7, 10], "more": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11], "detail": [0, 1, 3, 4, 5, 6, 11], "depend": [0, 1, 4, 5, 10, 11], "your": [0, 2, 4, 5, 10, 11], "favorit": [0, 5], "approach": [0, 1, 2, 4, 5, 6, 7, 8, 11], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "either": [0, 5, 7, 11], "hand": [0, 5, 10, 11], "conceptu": [0, 4, 5, 11], "overview": [0, 4, 5, 11], "The": [0, 2, 3, 4, 5, 10, 11], "former": [0, 5], "show": [0, 4, 5, 7], "how": [0, 2, 4, 5, 6, 10, 11], "latter": [0, 5], "explain": [0, 3, 4, 5, 11], "concept": [0, 2, 4, 5, 11], "behind": [0, 5], "them": [0, 1, 2, 3, 4, 5, 6, 10, 11], "what": [0, 3, 5, 6, 7, 8], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "etc": [0, 3, 4, 5, 6, 7, 8, 9, 11], "If": [0, 2, 3, 4, 5, 6, 7, 10, 11], "doubt": [0, 5], "highli": [0, 5], "recommend": [0, 2, 3, 4, 5, 6, 11], "read": [0, 2, 3, 4, 5, 7, 8, 10, 11], "other": [0, 2, 3, 4, 5, 7, 8, 9, 11], "one": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "after": [0, 1, 3, 5, 6, 7, 8, 11], "onc": [0, 3, 4, 5], "ve": [0, 4, 5, 6, 10, 11], "bit": [0, 5, 6, 11], "up": [0, 2, 3, 4, 5, 6, 7, 10, 11], "user": [0, 1, 3, 4, 5, 6, 7, 10], "refer": [0, 1, 4, 5, 8, 10, 11], "semant": [0, 5], "must": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "declar": [0, 5], "accord": [0, 2, 5, 7, 8, 11], "semver": [0, 5], "constitut": [0, 2, 5], "exclus": [0, 5], "level": [0, 2, 3, 5, 7, 11], "consid": [0, 2, 3, 4, 5, 9], "chang": [0, 4, 5, 6, 7, 8, 9, 11], "backward": [0, 5, 11], "compat": [0, 5, 11], "client": [0, 5], "doesn": [0, 2, 4, 5], "t": [0, 2, 3, 4, 5, 6, 7, 8, 10], "need": [0, 3, 4, 5, 6, 10, 11], "modifi": [0, 3, 4, 5, 6, 11], "keep": [0, 1, 3, 4, 5, 6, 7, 8, 11], "work": [0, 1, 3, 4, 5, 9], "requir": [0, 1, 3, 4, 5, 7, 11], "recompil": [0, 5], "some": [0, 1, 2, 3, 5, 6, 11], "case": [0, 3, 5, 6, 10, 11], "futur": [0, 4, 5], "might": [0, 2, 3, 5, 6], "behavior": [0, 1, 5, 6, 11], "especi": [0, 5, 6], "regard": [0, 5], "pseudo": [0, 1, 2, 4, 5, 6, 7, 8, 11], "random": [0, 1, 2, 4, 5, 6, 7, 8, 10], "note": [0, 1, 2, 3, 4, 5, 6, 10, 11], "plan": [0, 4, 5, 9], "make": [0, 1, 3, 4, 5, 6, 7, 11], "c": [0, 1, 5, 6, 9, 10, 11], "librari": [0, 3, 5, 6, 7, 8], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "do": [0, 2, 4, 5, 11], "ll": [0, 2, 3, 4, 5, 6, 10, 11], "add": [0, 1, 4, 5, 6, 7, 10, 11], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "interfac": [0, 1, 3, 5, 6, 9], "In": [0, 1, 2, 5, 11], "mean": [0, 5, 6, 10, 11], "time": [0, 1, 2, 3, 5, 6, 7, 9, 11], "chose": [0, 5], "wai": [0, 2, 3, 4, 5, 6, 7, 10, 11], "expect": [0, 2, 3, 5, 6, 11], "unanticip": [0, 5], "option": [0, 1, 3, 4, 5, 6, 7, 10], "argument": [0, 3, 5, 6, 7], "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "releas": [0, 1, 5], "find": [0, 2, 3, 5, 7, 8, 11], "better": [0, 2, 4, 5, 6, 7, 8], "most": [0, 2, 3, 4, 5, 6, 7, 11], "advic": [0, 5], "write": [0, 3, 5, 6, 7, 8], "explicit": [0, 1, 3, 5, 6, 11], "where": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "matter": [0, 5, 6], "reli": [0, 3, 5, 11], "implicit": [0, 5], "potenti": [0, 5], "improv": [0, 5, 6, 7, 8, 11], "same": [0, 2, 3, 4, 5, 6, 7, 8, 11], "specif": [0, 3, 5, 11], "appli": [0, 2, 3, 5, 11], "produc": [0, 1, 2, 5, 6, 11], "lead": [0, 5, 11], "allow": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11], "flexibl": [0, 1, 5, 6], "input": [0, 1, 5, 11], "both": [0, 3, 4, 5, 6, 10], "old": [0, 3, 5], "But": [0, 2, 5, 11], "script": [0, 3, 5], "incompat": [0, 5], "To": [0, 2, 3, 4, 5, 6, 10, 11], "solv": [0, 1, 5, 7, 8, 11], "impos": [0, 5], "addit": [0, 2, 5, 10, 11], "constraint": [0, 2, 5, 10], "featur": [0, 1, 3, 5, 7, 8, 9, 11], "motiv": [0, 3, 5], "That": [0, 3, 4, 5, 6, 11], "know": [0, 3, 5, 6, 11], "alreadi": [0, 2, 5, 11], "so": [0, 1, 2, 4, 5, 6, 7, 8, 11], "adapt": [0, 1, 5], "slightli": [1, 2, 6], "wpb": [1, 2, 3, 6, 7, 8, 9], "weight": [1, 2, 3, 4, 6, 7, 8, 9], "befor": [1, 2, 3, 6, 7, 8, 10, 11], "evalu": [1, 2], "return": [1, 6, 7, 8], "break": 1, "paramet": [1, 2, 3, 7, 8, 10], "weights_optimization_strategi": [1, 6, 7, 8], "reinitializeleastaccur": [1, 6, 7, 8], "breed": [1, 3, 4, 6, 7, 8], "strategi": [1, 4, 7, 8, 10], "fix": [1, 3, 7, 11], "previou": [1, 2, 3, 10, 11], "point": [1, 6], "alwai": [1, 2, 11], "best": [1, 2, 3, 4, 6, 7, 8, 10, 11], "dure": [1, 6], "universal2": 1, "wheel": [1, 3, 4, 11], "actual": [1, 2, 3, 6, 7, 8, 10, 11], "run": [1, 4, 6, 7, 8], "m1": [1, 9], "mac": 1, "upgrad": 1, "OR": [1, 11], "tool": [1, 3, 4, 7, 11], "still": [1, 2, 3, 6], "13": [1, 6, 9], "hous": [1, 3, 7, 8], "implement": [1, 2, 3, 6, 9, 11], "simplex": [1, 3, 7, 8], "algorithm": [1, 2, 3, 6, 7, 8], "lp": [1, 3], "method": [1, 2, 6, 7, 8, 11], "expos": [1, 3], "classif": [1, 3, 4, 10], "optimizeweightsusinginhousesimplexoncpu": [1, 7, 8], "ongpu": 1, "mrsort": [1, 3, 4, 7, 11], "profil": [1, 2, 3, 4, 6, 7, 8, 10], "linear": [1, 3, 4, 7, 8, 11], "program": [1, 2, 3, 4, 7, 8, 11], "solver": [1, 4, 7, 11], "experiment": [1, 7, 8], "processor": [1, 4, 7, 9, 11], "veri": [1, 3, 11], "unsatisfactori": 1, "result": [1, 2, 3, 4, 6, 7, 11], "now": [1, 2, 3, 6, 11], "drop": 1, "action": [1, 4, 10], "anymor": 1, "major": [1, 3], "singl": [1, 2, 3, 6, 7, 8, 9, 11], "peak": [1, 2, 7, 8, 9, 11], "criteria": [1, 2, 4, 6, 7, 8, 9], "problem": [1, 2, 4, 8], "ha": [1, 2, 3, 4, 6, 8, 10, 11], "new": [1, 2, 4, 6, 11], "file": [1, 2, 3, 4, 6, 8], "format": [1, 2, 4, 6, 8], "valu": [1, 2, 3, 4, 6, 7, 8, 9, 10], "preference_direct": [1, 4, 6, 7, 8, 10, 11], "possibl": [1, 2, 3, 6, 9, 10], "accepted_valu": [1, 4, 6, 7, 8, 10, 11], "kind": [1, 3, 4, 6, 7, 8, 10, 11], "interv": [1, 2, 6, 7, 8, 10, 11], "20": [1, 6, 10, 11], "80": [1, 6, 10], "40": [1, 4, 6, 10], "60": [1, 4, 6, 7, 8, 10], "criterion": [1, 2, 4, 6, 7, 8, 10, 11], "preferencedirect": [1, 6, 7, 8, 10], "single_peak": [1, 7, 8, 10], "typic": [1, 2], "lc": [1, 6, 10], "generate_problem": [1, 6, 7, 8, 10], "allowed_preference_direct": [1, 7, 8, 10], "acceptedvalu": [1, 6, 7, 8, 10], "learnmrsortbyweightsprofilesbre": [1, 3, 6, 7, 8], "explicitli": [1, 3, 11], "opt": 1, "call": [1, 2, 6, 7, 8, 10, 11], "base": [1, 2, 3, 4, 6, 7, 8, 9, 10], "class": [1, 3, 6, 7, 8, 10], "constructor": [1, 7, 8, 10], "supports_single_peaked_criteria": [1, 10], "true": [1, 6, 7, 8, 10], "all": [1, 2, 4, 6, 7, 8, 11], "human": [1, 4, 7, 8], "readabl": [1, 4, 7, 8], "output": [1, 4, 7, 11], "describ": [1, 2, 3, 4, 6, 8, 10, 11], "accommod": 1, "fail": [1, 2, 6, 7, 8, 10], "let": [1, 2, 6, 11], "threshold": [1, 2, 4, 6, 7, 8, 10, 11], "unreach": 1, "found": [1, 3, 7, 11], "real": [1, 2, 4, 6, 7, 8, 10, 11], "life": [1, 2], "asa": 1, "data": [1, 3, 4, 6, 7, 8, 10], "last": [1, 2, 3, 7, 11], "item": [1, 7, 8, 9, 11], "list": [1, 3, 6, 7, 8, 9, 10, 11], "null": [1, 3, 7], "none": [1, 2, 6, 7, 8], "runtim": [1, 3], "check": [1, 2, 3, 7, 11], "split": 1, "learningdata": 1, "preprocessedlearningset": [1, 7, 8, 10], "modelsbeinglearn": [1, 7, 8, 10], "renam": [1, 11], "urbg": 1, "random_gener": [1, 6, 7, 8], "establish": [1, 11], "second": [1, 7, 11], "tier": 1, "stabl": 1, "introduct": 1, "download": [1, 4, 6], "jupyt": [1, 4, 6], "notebook": [1, 3, 4, 6], "complet": 1, "legend": 1, "color": 1, "text": [1, 7], "annot": 1, "graduat": 1, "vertic": [1, 6], "axi": 1, "per": [1, 3, 4, 7, 11], "imag": [1, 3, 4, 7], "discret": 1, "enumer": [1, 2, 6, 7, 8, 10, 11], "integ": [1, 2, 6, 7, 8, 10, 11], "homogen": 1, "post": 1, "process": [1, 7, 8, 11], "numer": [1, 2, 4, 6, 7, 8, 11], "sat": [1, 2, 3, 7, 8], "achiev": 1, "accuraci": [1, 4, 6, 8], "valid": [1, 7, 11], "e": [1, 2, 3, 6, 7, 8, 10, 11], "g": [1, 2, 3, 6, 7, 8, 10, 11], "consist": [1, 2, 3, 11], "between": [1, 2, 3, 4, 6, 7, 11], "altern": [1, 2, 4, 8, 10], "build": [1, 3, 4, 6, 10], "docker": [1, 3, 4], "sinc": [1, 3], "get": [1, 2, 3, 6, 7, 8, 10], "start": [1, 2, 3, 6, 7, 10, 11], "deepcopi": [1, 6], "o": 1, "object": [1, 7, 8], "pickl": 1, "terminateafteriter": [1, 6, 7, 8], "terminateafteriterationswithoutprogress": [1, 7, 8], "were": [1, 2, 7, 8, 11], "too": [1, 2, 3, 11], "mani": [1, 2, 4, 7, 11], "iter": [1, 3, 4, 6, 7, 8, 11], "evalmaxsat": [1, 7], "help": [1, 2, 3, 4, 11], "ucnc": [1, 7, 11], "max": [1, 2, 3, 6, 7, 8, 10, 11], "separ": [1, 2, 3, 7, 8, 11], "eval": [1, 7], "nb": [1, 7], "minim": [1, 4, 7], "thread": [1, 3, 7], "timeout": [1, 7], "fast": [1, 7], "coef": [1, 7], "coalit": [1, 2, 4, 6, 7, 8, 10], "It": [1, 2, 3, 4, 6, 7, 8, 10, 11], "third": [1, 6, 11], "candid": 1, "technic": [1, 11], "refactor": [1, 3], "category_correl": 1, "grow": 1, "prefer": [1, 2, 4, 6, 7, 8, 9, 10, 11], "direct": [1, 2, 4, 6, 7, 8, 10, 11], "increas": [1, 4, 6, 7, 8, 11], "categori": [1, 2, 4, 6, 7, 8, 10], "attribut": [1, 2, 6, 7, 8, 10, 11], "ordered_categori": [1, 4, 6, 7, 8, 11], "name": [1, 4, 6, 7, 8, 9, 10, 11], "worst": [1, 2, 4, 6, 7, 8, 10, 11], "intermedi": [1, 2, 4, 6, 7, 8, 9, 10, 11], "n": [1, 2, 6, 10], "isoton": [1, 7, 8], "resp": [1, 11], "antiton": [1, 7, 8], "synonym": [1, 7, 8], "decreas": [1, 2, 6, 7, 8, 11], "descript": [1, 2, 4, 6, 7, 8, 10, 11], "remov": 1, "comment": [1, 7], "about": [1, 3, 4, 6, 7, 8], "termin": [1, 3, 6, 7, 8], "condit": [1, 11], "metadata": [1, 7, 11], "yaml": [1, 2, 4, 7, 8, 11], "previous": [1, 3], "those": [1, 2, 3, 4, 7, 11], "provid": [1, 2, 3, 4, 6, 7, 8], "integr": [1, 3, 9], "test": [1, 3, 4, 6], "extern": [1, 4, 9], "manag": [1, 4], "error": [1, 7, 8], "ubuntu": [1, 4], "23": 1, "term": 1, "correl": 1, "wa": [1, 2, 3, 4, 6, 7, 8, 11], "instead": [1, 2, 3, 6, 7, 11], "accept": [1, 4, 6, 7, 8, 10], "json": [1, 7, 8, 11], "schema": [1, 7, 8, 11], "classifi": [1, 4, 8], "end": [1, 4, 6], "min": [1, 2, 6, 7, 8, 11], "load": [1, 6, 7, 8], "reproduct": [1, 4, 11], "pre": [1, 2, 7, 8], "set": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11], "each": [1, 2, 3, 4, 6, 7, 8, 10, 11], "have": [1, 2, 3, 4, 6, 7, 10, 11], "rang": [1, 2, 6, 7, 8, 11], "simplif": [1, 2], "sufficientcoalit": [1, 6, 7, 8], "upset_root": [1, 7, 8, 11], "imbal": [1, 7, 11], "cleaner": 1, "tight": 1, "print": [1, 6, 7, 11], "number": [1, 2, 3, 4, 6, 7, 8, 11], "displai": [1, 11], "variou": 1, "compil": [1, 3, 7], "openmp": [1, 2], "distribut": 1, "binari": [1, 3, 4, 11], "durat": [1, 2, 7, 8, 11], "chrone": [1, 3], "verbos": [1, 6, 7, 11], "mode": 1, "pernici": 1, "memori": [1, 2, 6], "bugfix": 1, "sure": [1, 7, 11], "built": [1, 3, 7, 8, 11], "nvcc": [1, 3], "info": [1, 4, 11], "hopefulli": [1, 6], "correct": [1, 3, 11], "anchor": [1, 11], "alias": 1, "limit": [1, 11], "repetit": [1, 11], "u": [1, 3, 11], "textsf": [1, 11], "specifi": [1, 2, 3, 4, 6, 7, 8, 10, 11], "minimum": [1, 2, 7, 8], "maximum": [1, 2, 7, 8], "synthet": [1, 3, 4, 6, 7], "denorm": [1, 7, 11], "state": [1, 6], "re": [1, 2, 3, 4, 6, 7, 8, 11], "enough": [1, 2, 3, 4], "decim": 1, "store": [1, 2, 6], "float": [1, 6, 7, 8], "avoid": [1, 3, 10, 11], "ani": [1, 3, 4, 6, 10, 11], "loss": 1, "precis": 1, "log": [1, 6], "final": [1, 2, 4, 6, 11], "buggi": 1, "misclassify_altern": [1, 7, 8], "synthes": 1, "nois": [1, 11], "expend": 1, "suffici": [1, 2, 4, 6, 7, 8, 10], "root": [1, 3, 7, 8, 11], "manylinux_2_31": 1, "flow": 1, "arrai": [1, 7], "scalar": 1, "yet": [1, 2, 4, 11], "though": [1, 11], "control": [1, 6, 11], "over": [1, 6], "expans": 1, "except": [1, 7, 8, 10], "develop": [1, 2], "machin": [1, 3, 11], "never": 1, "properli": 1, "heurist": [1, 2, 4, 6, 7, 11], "introduc": [1, 2, 3, 6, 11], "alglib": [1, 3, 7, 8, 11], "everywher": [1, 3], "lgplv3": 1, "miss": [1, 4], "header": [1, 7, 11], "mr": [1, 4, 6, 7, 8, 9, 11], "sobri": [1, 2, 7, 8], "sum": [1, 2, 7, 11], "pypi": [1, 3, 4], "websit": 1, "kick": 1, "off": 1, "effort": [1, 11], "quit": [1, 2, 3, 4, 6, 11], "nice": [1, 10], "readm": [1, 3, 11], "initi": [1, 4, 6, 7, 8, 11], "littl": 1, "function": [1, 2, 6, 10], "denot": 2, "b": [2, 6, 10, 11], "includ": [2, 4, 6, 11], "often": [2, 3, 4, 11], "zero": [2, 6, 11], "choic": [2, 3], "match": 2, "convent": 2, "languag": [2, 3, 6], "close": [2, 4, 10], "For": [2, 3, 4, 6, 7, 8, 10, 11], "4": [2, 4, 6, 11], "2": [2, 4, 6, 7, 8, 11], "contain": [2, 3, 4, 6, 7, 8, 10, 11], "element": [2, 11], "given": [2, 6, 7, 8, 11], "subset": [2, 10, 11], "power": [2, 6], "mathcal": [2, 10], "p": [2, 10], "linc": [2, 3, 6, 10], "focus": [2, 10], "task": [2, 3], "possibli": 2, "assign": [2, 6, 7, 8, 10], "itself": [2, 4, 6, 7], "vocabulari": 2, "voluntarili": 2, "abstract": [2, 3, 6, 7, 8], "wide": 2, "applic": 2, "concret": [2, 3], "sai": 2, "scholarship": 2, "student": 2, "academ": 2, "fund": 2, "polici": 2, "grade": [2, 6], "And": [2, 3, 4, 6, 11], "favor": [2, 11], "younger": 2, "come": [2, 6, 11], "modest": 2, "background": 2, "differ": [2, 3, 4, 6, 7, 8, 10, 11], "topic": 2, "ag": 2, "famili": 2, "incom": 2, "could": [2, 3, 11], "triag": 2, "patient": [2, 10], "hospit": 2, "vital": 2, "sign": 2, "A": [2, 3, 6, 7, 8, 10, 11], "defin": [2, 3, 6, 7, 8, 10, 11], "mathbb": 2, "geq": 2, "x_i": [2, 10], "_": 2, "total": [2, 11], "preccurlyeq_i": [2, 10], "h": [2, 10], "prec": 2, "confus": 2, "expon": 2, "cartesian": [2, 3], "product": [2, 3], "x": [2, 10], "prod_": 2, "x_0": [2, 10], "x_": [2, 10], "assumpt": 2, "happen": [2, 3, 9], "natur": [2, 3], "well": [2, 3, 6, 10], "inform": [2, 4, 7, 8, 10], "csv": [2, 4, 7, 8, 11], "autom": 2, "train": [2, 4, 6, 7], "ground": 2, "truth": [2, 7, 11], "phase": [2, 7], "f": [2, 6, 10, 11], "rightarrow": 2, "parametr": [2, 10], "form": [2, 3, 6, 7, 8, 11], "fit": [2, 3, 10], "higher": [2, 4, 6, 7, 8, 10, 11], "sometim": 2, "import": [2, 3, 6, 11], "compens": 2, "captur": [2, 11], "idea": [2, 3], "There": [2, 4, 6], "share": [2, 6, 7, 8], "vari": 2, "deni": 2, "bouyssou": 2, "thierri": 2, "marchant": 2, "articl": 2, "axiomat": 2, "noncompensatori": 2, "mcdm": 2, "ii": 2, "than": [2, 3, 6, 9, 11], "lower": [2, 7, 8, 10, 11], "good": [2, 3, 6, 10, 11], "abov": [2, 3, 6, 11], "sever": [2, 3, 6, 10, 11], "reach": [2, 7, 8, 11], "addition": 2, "h_0": 2, "h_": 2, "subseteq": [2, 10], "With": [2, 6, 10, 11], "h_i": [2, 10], "_i": [2, 10], "inclus": [2, 10], "imbric": [2, 10], "supseteq": [2, 10], "which": [2, 3, 4, 6, 10, 11], "default": [2, 4, 7, 10, 11], "mapsto": [2, 10], "cup": [2, 10], "succcurlyeq_i": 2, "simplifi": [2, 6], "mai": [2, 3, 4, 10, 11], "equival": [2, 10], "somewhat": [2, 3, 11], "simpl": [2, 4, 6, 11], "ensur": [2, 4, 7, 11], "behav": [2, 4], "intuit": 2, "ness": 2, "few": [2, 3, 4, 6, 11], "upper": [2, 4, 6, 11], "select": [2, 3, 9, 11], "ones": [2, 11], "doe": [2, 3, 10, 11], "handl": [2, 4], "like": [2, 3, 4, 7, 8, 9, 10, 11], "blood": [2, 10], "pressur": [2, 10], "extrem": [2, 9, 10], "These": [2, 11], "continu": 2, "three": [2, 11], "partial": [2, 4], "full": [2, 3, 6], "further": [2, 6], "thing": [2, 3, 6], "sacrif": 2, "interest": [2, 6], "four": 2, "math": [2, 6], "m": [2, 4], "physic": [2, 6, 11], "literatur": [2, 6], "l": 2, "histori": 2, "normal": [2, 4, 7, 8], "forget": 2, "clariti": 2, "x_m": 2, "x_p": 2, "x_l": 2, "x_h": 2, "1_m": 2, "1_p": 2, "1_l": 2, "1_h": 2, "6": [2, 6, 10, 11], "55": 2, "7": [2, 6, 11], "5": [2, 4, 6, 7, 10, 11], "2_m": 2, "2_p": 2, "2_l": 2, "2_h": 2, "75": 2, "9": [2, 4, 6, 7, 11], "65": 2, "satisfi": [2, 7], "1_i": 2, "2_i": 2, "repres": [2, 7], "lattic": 2, "arrow": 2, "materi": 2, "relationship": 2, "black": 2, "grei": 2, "els": [2, 3], "ye": 2, "unus": [2, 10], "85": 2, "No": [2, 6], "d": [2, 3, 6, 11], "prose": 2, "formul": 2, "who": 2, "excel": 2, "least": [2, 3, 4, 6, 7, 11], "subject": 2, "literari": 2, "back": [2, 4], "common": 2, "less": [2, 3, 6, 10], "computation": [2, 3], "simpler": [2, 7, 8], "ne": 2, "agn\u00e8": 2, "leroi": 2, "et": 2, "al": 2, "multipl": [2, 3, 11], "w_i": 2, "sum_": 2, "again": [2, 10], "answer": 2, "try": [2, 3, 4, 6, 7, 11], "w_m": 2, "w_p": 2, "w_l": 2, "w_h": 2, "give": [2, 3, 6, 7, 8, 11], "16": [2, 4, 6], "equat": 2, "among": [2, 11], "lt": 2, "notin": 2, "ge": 2, "solut": 2, "By": [2, 3, 7, 11], "contrast": 2, "express": 2, "greater": [2, 11], "fewer": 2, "success": [2, 11], "measur": [2, 3, 4], "metric": 2, "quicker": 2, "portion": [2, 4, 7, 11], "world": [2, 4, 7], "noisi": 2, "inconsist": 2, "prevent": 2, "imposs": 2, "100": [2, 4, 6, 10, 11], "summari": 2, "failur": [2, 3], "quickest": 2, "noth": [2, 3], "goal": [2, 6], "far": [2, 6, 7, 8, 11], "longest": 2, "simpli": [2, 6, 10, 11], "anyth": [2, 3, 6, 7, 8], "configur": [2, 3], "long": [2, 3, 4], "comput": [2, 4, 7], "resourc": 2, "longer": [2, 3], "practic": 2, "ali": 2, "tlili": 2, "effici": 2, "maxsat": [2, 7], "conveni": 2, "gather": 2, "place": [2, 3], "olivi": [2, 7, 8], "hi": 2, "ph": 2, "thesi": [2, 7, 8], "originali": 2, "emma": 2, "dixneuf": 2, "thibault": 2, "monsel": 2, "thoma": 2, "vindard": 2, "sequenti": 2, "parallel": [2, 6, 11], "known": [2, 4, 6, 7, 8], "origin": [2, 4, 11], "compar": [2, 3, 6], "qualiti": 2, "clean": 2, "haven": [2, 4], "done": [2, 3, 4, 6], "strongli": [3, 11], "familiar": [3, 4, 6], "rest": 3, "project": [3, 4, 9], "also": [3, 4, 6, 10, 11], "exampl": [3, 6, 11], "much": [3, 11], "talk": 3, "pleas": [3, 11], "awar": [3, 6], "progress": [3, 6, 7, 8, 11], "exercis": 3, "clairvoy": 3, "predict": 3, "got": 3, "wrong": 3, "hesit": 3, "contact": 3, "begin": [3, 10, 11], "scale": [3, 6, 11], "minor": 3, "typo": [3, 6], "web": [3, 9], "spare": 3, "clone": 3, "repositori": 3, "think": 3, "entir": [3, 11], "architectur": 3, "deserv": 3, "rewrit": 3, "http": [3, 7], "com": 3, "lab": [3, 7], "don": [3, 4, 6, 7, 10], "spend": [3, 9], "someth": [3, 4, 6], "reject": 3, "reason": [3, 6, 11], "appar": 3, "moment": 3, "yourself": [3, 6], "tell": [3, 4, 6, 11], "report": 3, "everyth": [3, 7, 8, 11], "recogn": 3, "intimid": 3, "everyon": 3, "experi": [3, 6, 11], "fluenci": 3, "willing": 3, "feedback": [3, 11], "assur": 3, "construct": 3, "manner": [3, 11], "similar": [3, 11], "inspir": [3, 6], "git": 3, "grep": 3, "theoldth": 3, "thenewth": 3, "blame": 3, "identifi": [3, 6, 11], "commit": 3, "recent": [3, 4], "version": [3, 4, 7, 8, 11], "bash": 3, "nvidia": 3, "loop": [3, 11], "repeat": [3, 11], "cach": 3, "subsequ": 3, "faster": 3, "unit": 3, "speed": 3, "eventu": 3, "maintain": 3, "pull": 3, "request": 3, "doc": 3, "io": [3, 6, 7], "page": 3, "push": 3, "impact": [3, 11], "save": 3, "submit": 3, "python_vers": 3, "space": 3, "coverag": 3, "stop": [3, 7, 8, 11], "right": 3, "impli": [3, 11], "skip": [3, 11], "glop": [3, 4, 7, 8, 11], "cpp": 3, "unchang": [3, 6, 7, 8], "diff": [3, 4], "forbid": [3, 7, 11], "automat": 3, "warn": 3, "doctest": 3, "doctest_opt": 3, "pass": [3, 6, 7, 11], "verbatim": 3, "arg": [3, 4, 7, 8], "dry": 3, "patch": 3, "alpha": 3, "beta": 3, "rc": 3, "thin": 3, "wrapper": 3, "basic": [3, 4, 11], "rst": 3, "setup": 3, "py": 3, "manifest": 3, "licenc": 3, "local": 3, "render": 3, "current": [3, 6, 7, 8, 10, 11], "dev": 3, "accompani": 3, "pattern": [3, 11], "inject": 3, "easili": 3, "switch": 3, "particularli": 3, "variant": 3, "benchmark": 3, "perspect": 3, "distinct": [3, 6], "recurs": 3, "piec": 3, "weightsoptimizationstrategi": [3, 6, 7, 8], "profilesimprovementstrategi": [3, 6, 7, 8], "improveprofileswithaccuracyheuristiconcpu": [3, 6, 7, 8], "improveprofileswithaccuracyheuristicongpu": [3, 7, 8], "costli": 3, "cost": 3, "although": 3, "care": [3, 6], "thousand": 3, "ok": 3, "polymorph": 3, "frequent": 3, "liblinc": [3, 6], "hpp": 3, "linearprogram": 3, "One": 3, "would": [3, 6, 11], "neg": 3, "consequ": 3, "instanti": 3, "explod": 3, "combinatori": 3, "whole": [3, 6, 10], "great": 3, "mainten": 3, "instanci": 3, "modul": 3, "access": [3, 6, 7, 8, 10], "custom": 3, "side": [3, 6], "restructuredtext": 3, "sphinx": 3, "extent": 3, "click": 3, "edit": [3, 4], "html": [3, 7], "browser": 3, "anticip": [3, 11], "2024": [3, 9], "famou": 3, "word": 3, "mind": [3, 4], "written": [3, 6, 7, 11], "partli": 3, "usabl": 3, "arguabl": [3, 6, 11], "easier": [3, 4], "core": [3, 11], "intens": 3, "interpret": 3, "multi": 3, "suggest": 3, "someon": 3, "becom": 3, "counter": 3, "visual": [3, 4, 8, 10], "breedingstrategi": [3, 6, 7, 8], "reduc": [3, 11], "high": [3, 7, 8, 10, 11], "optimizeweightsusingglop": [3, 6, 7, 8], "spent": [3, 7], "locat": 3, "rare": [3, 6], "signific": [3, 9], "advertis": 3, "boil": 3, "down": [3, 6], "effect": [3, 4, 6, 11], "unless": 3, "clear": 3, "bilion": 3, "todo": 3, "later": [3, 10], "step": [3, 6, 7, 8], "mimic": 3, "As": [3, 6, 11], "via": 3, "duck": 3, "type": [3, 4, 6, 7, 8, 11], "dockerfil": 3, "foobar": 3, "typedef": 3, "liblincs_modul": 3, "__init__": [3, 6, 7, 8], "command_line_interfac": 3, "txt": 3, "accordingli": 3, "procedur": 3, "0a790ef": 3, "modif": 3, "had": 3, "been": [3, 6], "restructur": 3, "besid": 3, "pip": 4, "system": 4, "virtual": 4, "environ": 4, "venv": 4, "directli": [4, 7, 10], "pipx": 4, "enforc": 4, "refus": 4, "rm": 4, "jacquev6": 4, "latest": 4, "platform": 4, "cover": [4, 6], "lot": 4, "realli": 4, "go": [4, 6], "rout": 4, "workflow": 4, "mainli": 4, "easiest": 4, "usag": [4, 7, 8], "mcda": [4, 7], "exit": [4, 7], "messag": [4, 10], "graph": [4, 7, 11], "organ": [4, 10], "sub": 4, "yml": [4, 6, 11], "0a5": [4, 11], "seed": [4, 6, 7, 11], "format_vers": [4, 6, 7, 11], "1": [4, 6, 7, 8, 10, 11], "value_typ": [4, 6, 7, 8, 10, 11], "min_valu": [4, 6, 7, 8, 10, 11], "max_valu": [4, 6, 7, 8, 10, 11], "maxim": [4, 7], "explan": 4, "particular": [4, 6], "Then": [4, 6, 11], "41": [4, 6], "255905151": [4, 6], "676961303": [4, 6], "0551739037": [4, 6], "324553937": [4, 6], "162252158": [4, 6], "673279881": [4, 6], "0526000932": [4, 6], "598555863": [4, 6], "sufficient_coalit": [4, 6, 7, 8, 11], "criterion_weight": [4, 6, 7, 8, 11], "147771254": [4, 6], "618687689": [4, 6], "406786472": [4, 6], "0960085914": [4, 6], "png": [4, 7, 11], "evolv": [4, 11], "wether": [4, 11], "uc": [4, 6, 7, 8, 11], "k": [4, 6, 9], "boundari": [4, 6, 7, 8, 11], "associ": [4, 6, 7, 8, 11], "15": [4, 6, 11], "62": [4, 6], "10": [4, 6, 11], "whose": [4, 6], "26": [4, 6], "06": [4, 6], "05": [4, 6], "68": [4, 6], "32": [4, 6], "67": [4, 6], "1000": [4, 6], "42": [4, 6], "misclassifi": [4, 7, 8, 11], "count": [4, 6, 7, 8, 11], "37454012": [4, 6], "796543002": [4, 6], "95071429": [4, 6], "183434784": [4, 6], "731993914": [4, 6], "779690981": [4, 6], "598658502": [4, 6], "596850157": [4, 6], "156018645": [4, 6], "445832759": [4, 6], "15599452": [4, 6], "0999749228": [4, 6], "0580836125": [4, 6], "4592489": [4, 6], "866176128": [4, 6], "333708614": [4, 6], "601114988": [4, 6], "14286682": [4, 6], "708072603": [4, 6], "650888503": [4, 6], "five": 4, "structur": [4, 7, 11], "reconstitut": 4, "43": [4, 6], "discrimin": [4, 7], "reiniti": [4, 7, 11], "accur": [4, 7, 11], "target": [4, 7, 11], "339874953": [4, 6], "421424538": [4, 6], "0556534864": [4, 6, 11], "326433569": [4, 6, 11], "162616938": [4, 6, 11], "67343241": [4, 6, 11], "0878681168": [4, 6], "252649099": [4, 6], "01327896e": [4, 6], "999998987": [4, 6], "howev": [4, 6, 10], "reclassifi": 4, "3000": [4, 6], "522c522": 4, "520": 4, "617141366": 4, "326259822": 4, "901315808": 4, "460642993": 4, "615c615": 4, "613": 4, "547554553": 4, "0552174859": 4, "690436542": 4, "511019647": 4, "2596c2596": 4, "2594": 4, "234433308": 4, "780464768": 4, "162389532": 4, "622178912": 4, "2610c2610": 4, "2608": 4, "881479025": 4, "055544015": 4, "82936728": 4, "853676081": 4, "2996": [4, 6], "demonstr": 4, "comfort": 4, "albeit": 6, "complex": 6, "exactli": [6, 7, 8, 11], "criteria_count": [6, 7, 8], "categories_count": [6, 7, 8], "random_se": [6, 7, 8], "mandatori": 6, "reproduc": [6, 11], "randrang": 6, "30": 6, "sy": 6, "dump": [6, 7, 8], "stdout": 6, "string": [6, 7, 8, 11], "join": [6, 11], "describe_problem": [6, 7, 8], "generate_mrsort_model": [6, 7, 8], "matplotlib": [6, 7, 8], "pyplot": 6, "plt": 6, "ax": [6, 7, 8], "subplot": 6, "figsiz": 6, "layout": 6, "constrain": 6, "visualize_model": [6, 7, 8], "describe_model": [6, 7, 8], "learning_set": [6, 7, 8], "generate_altern": [6, 7, 8], "alternatives_count": [6, 7, 8], "stringio": 6, "getvalu": 6, "splitlin": 6, "preprocessed_learning_set": [6, 7, 8, 10], "models_being_learn": [6, 7, 8, 10], "models_count": [6, 7, 8], "profiles_initialization_strategi": [6, 7, 8], "initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion": [6, 7, 8], "profiles_improvement_strategi": [6, 7, 8], "breeding_strategi": [6, 7, 8], "termination_strategi": [6, 7, 8], "terminateataccuraci": [6, 7, 8], "target_accuraci": [6, 7, 8], "len": 6, "learned_model": 6, "testing_set": [6, 7], "44": 6, "classification_result": 6, "classify_altern": [6, 7, 8], "next": [6, 7, 8], "instanc": 6, "integervalu": [6, 7, 8, 10], "enumeratedvalu": [6, 7, 8], "congratul": 6, "ordered_valu": [6, 7, 8, 11], "is_real": [6, 7, 8], "is_integ": [6, 7, 8], "is_enumer": [6, 7, 8], "valuetyp": [6, 7, 8], "fals": [6, 7, 8], "integer_valu": [6, 7, 8], "is_increas": [6, 7, 8], "is_decreas": [6, 7, 8], "enumerated_valu": [6, 7, 8], "get_value_rank": [6, 7, 8], "integerthreshold": [6, 7, 8], "50": 6, "enumeratedthreshold": [6, 7, 8], "is_threshold": [6, 7, 8], "integer_threshold": [6, 7, 8], "enumerated_threshold": [6, 7, 8], "is_weight": [6, 7, 8], "is_root": [6, 7, 8], "unclassifi": [6, 7], "90": 6, "category_index": [6, 7, 8], "copied_problem": 6, "copied_model": 6, "copied_altern": 6, "mutat": 6, "zip": 6, "upcom": [6, 9], "static": [6, 7, 8], "w": 6, "unpickl": 6, "whenev": 6, "ti": 6, "picklabl": 6, "decid": [6, 7, 8], "thu": 6, "robust": [6, 11], "beyond": 6, "scope": 6, "past": 6, "Be": 6, "edg": 6, "sensibl": 6, "realvalu": [6, 7, 8], "bad": [6, 10], "align": 6, "horizont": 6, "top": [6, 7, 11], "bottom": 6, "label": 6, "12": [6, 9], "nof": 6, "200": [6, 11], "odd": 6, "1201": 6, "seen": [6, 11], "medium": [6, 11], "briefli": 6, "purpos": 6, "obscur": 6, "unifi": 6, "view": 6, "parform": 6, "rank": [6, 7, 8], "consecut": [6, 11], "gap": 6, "boundaries_count": [6, 7, 8], "values_count": [6, 7, 8], "criterion_index": [6, 7, 8, 10], "1002": 6, "101": 6, "usual": 6, "equal": [6, 11], "similarli": [6, 11], "v": 6, "performance_rank": [6, 7, 8], "alternative_index": [6, 7, 8], "883": 6, "900": 6, "753": 6, "216": 6, "365": 6, "410": 6, "302": 6, "852": 6, "738": 6, "45": 6, "17": 6, "86": 6, "25": 6, "81": 6, "47": 6, "87": 6, "splice": 6, "commun": 6, "oper": 6, "Their": [6, 7], "constant": 6, "uniform": 6, "str": [6, 7, 8], "model_index": [6, 7, 8, 10], "uniformrandombitsgener": [6, 7, 8], "determinist": 6, "callabl": 6, "r": 6, "494155588": 6, "870190228": 6, "2450414687": 6, "641676058": 6, "661088198": 6, "363471047": 6, "1448606581": 6, "1348129397": 6, "2542538607": 6, "iteration_index": [6, 7, 8], "remain": 6, "uniniti": 6, "present": 6, "sens": [6, 11], "max_iterations_count": [6, 7, 8], "assert": [6, 10], "hold": 6, "correctli": [6, 11], "764": 6, "595": 6, "725": 6, "666": 6, "637": 6, "609": 6, "676": 6, "830": 6, "640": 6, "low_profile_rank": [6, 7, 8], "vv": 6, "boundary_index": [6, 7, 8, 10], "124": 6, "633": 6, "492": 6, "965": 6, "268": 6, "506": 6, "54": 6, "230": 6, "272": 6, "201": 6, "64": 6, "99": 6, "223": 6, "310": 6, "235": 6, "261": 6, "52": 6, "262": 6, "9999989867210388": 6, "0132789611816406e": 6, "get_best_model": [6, 7, 8], "get_best_accuraci": [6, 7, 8], "respect": [6, 11], "7909708": 6, "06594753": 6, "understand": 6, "simplest": 6, "kei": [6, 11], "flag": 6, "after_iter": [6, 7, 8], "before_return": [6, 7, 8], "verboseobserv": 6, "def": 6, "self": 6, "super": 6, "938": 6, "992": 6, "997": 6, "999": 6, "complic": 6, "intermediatesobserv": 6, "track": [6, 11], "intermediate_model": 6, "log2": 6, "append": 6, "reus": [6, 11], "final_model": 6, "95116329": 6, "89878368": 6, "21": 6, "96338844": 6, "82566905": 6, "73": 6, "84": 6, "93314505": 6, "74707603": 6, "intellig": 6, "inherit": 6, "overrid": [6, 7, 8], "initialize_profil": [6, 7, 8], "model_indexes_begin": [6, 7, 8], "model_indexes_end": [6, 7, 8], "high_profile_rank": [6, 7, 8, 10], "sillyprofilesinitializationstrategi": 6, "profilesinitializationstrategi": [6, 7, 8], "stderr": [6, 7], "model_index_index": 6, "optimize_weight": [6, 7, 8], "sillyweightsoptimizationstrategi": 6, "improve_profil": [6, 7, 8], "sillyprofilesimprovementstrategi": 6, "sillybreedingstrategi": 6, "sillyterminationstrategi": 6, "terminationstrategi": [6, 7, 8], "silli": 6, "94936371": 6, "24692106": 6, "33": 6, "66": 6, "366666675": 6, "standard": [7, 11], "properti": [7, 8], "const": 7, "oneof": 7, "enum": 7, "additionalproperti": 7, "taken": 7, "minitem": 7, "determin": [7, 11], "lowest": 7, "maxitem": 7, "comma": 7, "ignor": [7, 11], "quot": 7, "whitespac": 7, "column": [7, 11], "empti": [7, 11], "output_altern": 7, "output_descript": 7, "output_model": 7, "model_typ": 7, "mrsort__fixed_weights_sum": 7, "anoth": [7, 11], "output_problem": 7, "max_imbal": [7, 8], "balanc": [7, 8, 11], "forc": 7, "size": [7, 11], "perfectli": [7, 11], "fraction": [7, 11], "misclassified_count": 7, "whether": [7, 8], "otherwis": [7, 8], "quiet": 7, "ucncs__strategi": 7, "transform": 7, "ucncs__max_sat_by_separation__solv": 7, "ucncs__max_sat_by_separation__eval_max_sat__nb_minimize_thread": 7, "ucncs__max_sat_by_separation__eval_max_sat__timeout_fast_minim": 7, "ucncs__max_sat_by_separation__eval_max_sat__coef_minimize_tim": 7, "ucncs__max_sat_by_coalitions__solv": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__nb_minimize_thread": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__timeout_fast_minim": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__coef_minimize_tim": 7, "coeffici": 7, "multipli": 7, "mrsort__strategi": 7, "mrsort__weights_profiles_breed__target_accuraci": 7, "mrsort__weights_profiles_breed__max_iter": 7, "mrsort__weights_profiles_breed__max_iterations_without_progress": 7, "mrsort__weights_profiles_breed__max_dur": 7, "mrsort__weights_profiles_breed__max_duration_without_progress": 7, "mrsort__weights_profiles_breed__models_count": 7, "temporari": 7, "mrsort__weights_profiles_breed__initialization_strategi": 7, "mrsort__weights_profiles_breed__weights_strategi": 7, "mrsort__weights_profiles_breed__linear_program__solv": 7, "mrsort__weights_profiles_breed__linear_program__experimental_in_house_simplex__processor": 7, "mrsort__weights_profiles_breed__profiles_strategi": 7, "mrsort__weights_profiles_breed__accuracy_heuristic__random_se": 7, "mrsort__weights_profiles_breed__accuracy_heuristic__processor": 7, "mrsort__weights_profiles_breed__breed_strategi": 7, "mrsort__weights_profiles_breed__reinitialize_least_accurate__port": 7, "while": 7, "mrsort__weights_profiles_breed__output_metadata": 7, "invalid": [7, 8], "__version__": [7, 8], "has_gpu": [7, 8], "bool": [7, 8], "datavalidationexcept": [7, 8], "rais": [7, 8], "ex": [7, 8], "learningfailureexcept": [7, 8], "__call__": [7, 8], "int": [7, 8], "relat": [7, 8, 11], "descriptor": [7, 8], "map": [7, 8], "ident": [7, 8, 11], "is_single_peak": [7, 8], "real_valu": [7, 8], "out": [7, 8, 10, 11], "json_schema": [7, 8], "realthreshold": [7, 8], "realinterv": [7, 8], "integerinterv": [7, 8, 10], "correspond": [7, 8, 10, 11], "is_interv": [7, 8], "real_threshold": [7, 8], "tupl": [7, 8], "real_interv": [7, 8], "integer_interv": [7, 8], "upset": [7, 8, 11], "mayb": [7, 8, 11], "normalized_min_max": [7, 8], "allowed_value_typ": [7, 8], "fixed_weights_sum": [7, 8], "balancedalternativesgenerationexcept": [7, 8], "learnucncsbymaxsatbycoalitionsusingevalmaxsat": [7, 8], "nb_minimize_thread": [7, 8], "timeout_fast_minim": [7, 8], "coef_minimize_tim": [7, 8], "learnucncsbymaxsatbyseparationusingevalmaxsat": [7, 8], "learnucncsbysatbycoalitionsusingminisat": [7, 8], "learnucncsbysatbyseparationusingminisat": [7, 8], "represent": [7, 8, 11], "unsign": [7, 8], "phd": [7, 8], "observ": [7, 8], "alloc": [7, 8, 10], "low": [7, 8, 10, 11], "high_profile_rank_index": [7, 8, 10], "optimizeweightsusingalglib": [7, 8], "optimizeweightsusinginhousesimplexongpu": [7, 8], "capabl": [7, 8, 11], "terminateaftersecond": [7, 8], "max_second": [7, 8], "terminateaftersecondswithoutprogress": [7, 8], "terminatewhenani": [7, 8], "classificationresult": [7, 8], "_ax": [7, 8], "creat": [7, 8, 10, 11], "stone": 9, "late": 9, "explor": 9, "xmcda": 9, "publish": 9, "decis": 9, "deck": 9, "servic": 9, "appl": 9, "silicon": 9, "arm": 9, "neural": 9, "network": 9, "parsimoni": 9, "discard": 9, "corel": 10, "global": 10, "health": 10, "statu": 10, "assum": 10, "monoton": 10, "cleanli": 10, "put": 10, "style": 10, "jump": 10, "context": 10, "involv": 10, "understood": 10, "land": 10, "b_i": 10, "special": 10, "bound": 10, "09463787": [10, 11], "19": [10, 11], "7704506": [10, 11], "suppli": 10, "link": 10, "encourag": 10, "due": 10, "manual": 10, "own": [10, 11], "throw": 10, "indirect": 10, "manipul": 11, "conform": 11, "expert": 11, "knowledg": 11, "absolut": 11, "fourth": 11, "rel": 11, "fact": 11, "embed": 11, "unwant": 11, "referenc": 11, "content": 11, "hash": 11, "respons": 11, "along": 11, "173891723": 11, "97980487": 11, "0961765796": 11, "lack": 11, "transpos": 11, "focuss": 11, "enter": 11, "minu": 11, "matrix": 11, "made": 11, "49331188": 11, "9249287": 11, "8156891": 11, "25551182": 11, "18": 11, "4786396": 11, "0154629": 11, "30789757": 11, "39045048": 11, "45864725": 11, "31117153": 11, "33949804": 11, "66963387": 11, "parent": 11, "left": 11, "saw": 11, "tweak": 11, "chosen": 11, "randomli": 11, "hard": 11, "600": 11, "160": 11, "240": 11, "significantli": 11, "popul": 11, "lenient": 11, "goe": 11, "branch": 11, "realiti": 11, "dot": 11, "scheme": 11, "abil": 11, "collis": 11, "smaller": 11, "softwar": 11, "choos": 11, "directori": 11, "small": 11, "difficult": 11, "Or": 11, "took": 11, "met": 11, "exceed": 11, "googl": 11, "slight": 11, "exact": 11, "pick": 11, "Not": 11, "said": 11, "tradeoff": 11, "offer": 11, "highlight": 11, "996253729": 11, "997255564": 11, "craft": 11, "serv": 11, "graphic": 11, "pretti": 11, "feel": 11, "free": 11}, "objects": {"": [[7, 0, 0, "-", "lincs"]], "lincs": [[7, 1, 1, "", "DataValidationException"], [7, 1, 1, "", "LearningFailureException"], [7, 2, 1, "", "UniformRandomBitsGenerator"], [7, 4, 1, "", "__version__"], [7, 0, 0, "-", "classification"], [7, 4, 1, "", "has_gpu"], [7, 7, 1, "cmdoption-lincs-version", "--version"]], "lincs.UniformRandomBitsGenerator": [[7, 3, 1, "", "__call__"]], "lincs.classification": [[7, 2, 1, "", "AcceptedValues"], [7, 2, 1, "", "Alternative"], [7, 2, 1, "", "Alternatives"], [7, 1, 1, "", "BalancedAlternativesGenerationException"], [7, 2, 1, "", "Category"], [7, 2, 1, "", "ClassificationResult"], [7, 2, 1, "", "Criterion"], [7, 2, 1, "", "ImproveProfilesWithAccuracyHeuristicOnCpu"], [7, 2, 1, "", "ImproveProfilesWithAccuracyHeuristicOnGpu"], [7, 2, 1, "", "InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"], [7, 2, 1, "", "LearnMrsortByWeightsProfilesBreed"], [7, 2, 1, "", "LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"], [7, 2, 1, "", "LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"], [7, 2, 1, "", "LearnUcncsBySatByCoalitionsUsingMinisat"], [7, 2, 1, "", "LearnUcncsBySatBySeparationUsingMinisat"], [7, 2, 1, "", "Model"], [7, 2, 1, "", "OptimizeWeightsUsingAlglib"], [7, 2, 1, "", "OptimizeWeightsUsingGlop"], [7, 2, 1, "", "OptimizeWeightsUsingInHouseSimplexOnCpu"], [7, 2, 1, "", "OptimizeWeightsUsingInHouseSimplexOnGpu"], [7, 2, 1, "", "Performance"], [7, 2, 1, "", "PreprocessedLearningSet"], [7, 2, 1, "", "Problem"], [7, 2, 1, "", "ReinitializeLeastAccurate"], [7, 2, 1, "", "SufficientCoalitions"], [7, 2, 1, "", "TerminateAfterIterations"], [7, 2, 1, "", "TerminateAfterIterationsWithoutProgress"], [7, 2, 1, "", "TerminateAfterSeconds"], [7, 2, 1, "", "TerminateAfterSecondsWithoutProgress"], [7, 2, 1, "", "TerminateAtAccuracy"], [7, 2, 1, "", "TerminateWhenAny"], [7, 6, 1, "", "classify_alternatives"], [7, 6, 1, "", "describe_model"], [7, 6, 1, "", "describe_problem"], [7, 6, 1, "", "generate_alternatives"], [7, 6, 1, "", "generate_mrsort_model"], [7, 6, 1, "", "generate_problem"], [7, 6, 1, "", "misclassify_alternatives"], [7, 6, 1, "", "visualize_model"]], "lincs.classification.AcceptedValues": [[7, 2, 1, "", "EnumeratedThresholds"], [7, 2, 1, "", "IntegerIntervals"], [7, 2, 1, "", "IntegerThresholds"], [7, 2, 1, "", "Kind"], [7, 2, 1, "", "RealIntervals"], [7, 2, 1, "", "RealThresholds"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated_thresholds"], [7, 5, 1, "", "integer_intervals"], [7, 5, 1, "", "integer_thresholds"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_intervals"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "is_thresholds"], [7, 5, 1, "", "kind"], [7, 5, 1, "", "real_intervals"], [7, 5, 1, "", "real_thresholds"], [7, 5, 1, "", "value_type"]], "lincs.classification.AcceptedValues.EnumeratedThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.IntegerIntervals": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "intervals"]], "lincs.classification.AcceptedValues.IntegerThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.Kind": [[7, 5, 1, "", "intervals"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.RealIntervals": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "intervals"]], "lincs.classification.AcceptedValues.RealThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.Alternative": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "category_index"], [7, 5, 1, "", "name"], [7, 5, 1, "", "profile"]], "lincs.classification.Alternatives": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "alternatives"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"]], "lincs.classification.Category": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "name"]], "lincs.classification.ClassificationResult": [[7, 5, 1, "", "changed"], [7, 5, 1, "", "unchanged"]], "lincs.classification.Criterion": [[7, 2, 1, "", "EnumeratedValues"], [7, 2, 1, "", "IntegerValues"], [7, 2, 1, "", "PreferenceDirection"], [7, 2, 1, "", "RealValues"], [7, 2, 1, "", "ValueType"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated_values"], [7, 5, 1, "", "integer_values"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "name"], [7, 5, 1, "", "real_values"], [7, 5, 1, "", "value_type"]], "lincs.classification.Criterion.EnumeratedValues": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "get_value_rank"], [7, 5, 1, "", "ordered_values"]], "lincs.classification.Criterion.IntegerValues": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_decreasing"], [7, 5, 1, "", "is_increasing"], [7, 5, 1, "", "is_single_peaked"], [7, 5, 1, "", "max_value"], [7, 5, 1, "", "min_value"], [7, 5, 1, "", "preference_direction"]], "lincs.classification.Criterion.PreferenceDirection": [[7, 5, 1, "", "antitone"], [7, 5, 1, "", "decreasing"], [7, 5, 1, "", "increasing"], [7, 5, 1, "", "isotone"], [7, 5, 1, "", "single_peaked"]], "lincs.classification.Criterion.RealValues": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_decreasing"], [7, 5, 1, "", "is_increasing"], [7, 5, 1, "", "is_single_peaked"], [7, 5, 1, "", "max_value"], [7, 5, 1, "", "min_value"], [7, 5, 1, "", "preference_direction"]], "lincs.classification.Criterion.ValueType": [[7, 5, 1, "", "enumerated"], [7, 5, 1, "", "integer"], [7, 5, 1, "", "real"]], "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "improve_profiles"]], "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "improve_profiles"]], "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "initialize_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed": [[7, 2, 1, "", "BreedingStrategy"], [7, 2, 1, "", "ModelsBeingLearned"], [7, 2, 1, "", "Observer"], [7, 2, 1, "", "ProfilesImprovementStrategy"], [7, 2, 1, "", "ProfilesInitializationStrategy"], [7, 2, 1, "", "TerminationStrategy"], [7, 2, 1, "", "WeightsOptimizationStrategy"], [7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy": [[7, 3, 1, "", "breed"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "accuracies"], [7, 3, 1, "", "get_best_accuracy"], [7, 3, 1, "", "get_best_model"], [7, 5, 1, "", "high_profile_rank_indexes"], [7, 5, 1, "", "high_profile_ranks"], [7, 5, 1, "", "iteration_index"], [7, 5, 1, "", "low_profile_ranks"], [7, 5, 1, "", "model_indexes"], [7, 5, 1, "", "models_count"], [7, 5, 1, "", "random_generators"], [7, 5, 1, "", "weights"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer": [[7, 3, 1, "", "after_iteration"], [7, 3, 1, "", "before_return"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy": [[7, 3, 1, "", "improve_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy": [[7, 3, 1, "", "initialize_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy": [[7, 3, 1, "", "terminate"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy": [[7, 3, 1, "", "optimize_weights"]], "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.Model": [[7, 4, 1, "", "JSON_SCHEMA"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "accepted_values"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"], [7, 5, 1, "", "sufficient_coalitions"]], "lincs.classification.OptimizeWeightsUsingAlglib": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.OptimizeWeightsUsingGlop": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.Performance": [[7, 2, 1, "", "Enumerated"], [7, 2, 1, "", "Integer"], [7, 2, 1, "", "Real"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated"], [7, 5, 1, "", "integer"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "real"], [7, 5, 1, "", "value_type"]], "lincs.classification.Performance.Enumerated": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.Performance.Integer": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.Performance.Real": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.PreprocessedLearningSet": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "alternatives_count"], [7, 5, 1, "", "assignments"], [7, 5, 1, "", "boundaries_count"], [7, 5, 1, "", "categories_count"], [7, 5, 1, "", "criteria_count"], [7, 5, 1, "", "performance_ranks"], [7, 5, 1, "", "single_peaked"], [7, 5, 1, "", "values_counts"]], "lincs.classification.Problem": [[7, 4, 1, "", "JSON_SCHEMA"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "criteria"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"], [7, 5, 1, "", "ordered_categories"]], "lincs.classification.ReinitializeLeastAccurate": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "breed"]], "lincs.classification.SufficientCoalitions": [[7, 2, 1, "", "Kind"], [7, 2, 1, "", "Roots"], [7, 2, 1, "", "Weights"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_roots"], [7, 5, 1, "", "is_weights"], [7, 5, 1, "", "kind"], [7, 5, 1, "", "roots"], [7, 5, 1, "", "weights"]], "lincs.classification.SufficientCoalitions.Kind": [[7, 5, 1, "", "roots"], [7, 5, 1, "", "weights"]], "lincs.classification.SufficientCoalitions.Roots": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "upset_roots"]], "lincs.classification.SufficientCoalitions.Weights": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "criterion_weights"]], "lincs.classification.TerminateAfterIterations": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterIterationsWithoutProgress": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterSeconds": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterSecondsWithoutProgress": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAtAccuracy": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateWhenAny": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "./publish.sh-finalize": [[3, 7, 1, "cmdoption-.-publish.sh-finalize-dry-run", "--dry-run"]], "./publish.sh-first-pre": [[3, 7, 1, "cmdoption-.-publish.sh-first-pre-dry-run", "--dry-run"], [3, 7, 1, "cmdoption-.-publish.sh-first-pre-arg-LEVEL", "LEVEL"], [3, 7, 1, "cmdoption-.-publish.sh-first-pre-arg-PRE", "PRE"]], "./publish.sh-next-pre": [[3, 7, 1, "cmdoption-.-publish.sh-next-pre-dry-run", "--dry-run"]], "./publish.sh-quick": [[3, 7, 1, "cmdoption-.-publish.sh-quick-dry-run", "--dry-run"], [3, 7, 1, "cmdoption-.-publish.sh-quick-arg-LEVEL", "LEVEL"]], "./run-development-cycle.sh": [[3, 7, 1, "cmdoption-.-run-development-cycle.sh-doctest-option", "--doctest-option"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-chrones", "--forbid-chrones"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-gpu", "--forbid-gpu"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-nvcc", "--forbid-nvcc"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-python-versions", "--python-versions"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-single-python-version", "--single-python-version"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-build", "--skip-build"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit", "--skip-cpp-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-install", "--skip-install"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-long-unit", "--skip-long-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit", "--skip-max-sat-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-notebooks", "--skip-notebooks"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-python-unit", "--skip-python-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-sat-unit", "--skip-sat-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks", "--skip-unchanged-notebooks"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-unit", "--skip-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit", "--skip-wpb-alglib-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit", "--skip-wpb-glop-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-in-house-simplex-unit", "--skip-wpb-in-house-simplex-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit", "--skip-wpb-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-unit-coverage", "--unit-coverage"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-with-docs", "--with-docs"]], "lincs-classification-accuracy": [[7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-PROBLEM", "PROBLEM"], [7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET", "TESTING_SET"]], "lincs-classify": [[7, 7, 1, "cmdoption-lincs-classify-output-alternatives", "--output-alternatives"], [7, 7, 1, "cmdoption-lincs-classify-arg-ALTERNATIVES", "ALTERNATIVES"], [7, 7, 1, "cmdoption-lincs-classify-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-classify-arg-PROBLEM", "PROBLEM"]], "lincs-describe-classification-model": [[7, 7, 1, "cmdoption-lincs-describe-classification-model-output-description", "--output-description"], [7, 7, 1, "cmdoption-lincs-describe-classification-model-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-describe-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-describe-classification-problem": [[7, 7, 1, "cmdoption-lincs-describe-classification-problem-output-description", "--output-description"], [7, 7, 1, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM", "PROBLEM"]], "lincs-generate-classification-model": [[7, 7, 1, "cmdoption-lincs-generate-classification-model-model-type", "--model-type"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-output-model", "--output-model"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-generate-classification-model.--mrsort": [[7, 7, 1, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum", "fixed-weights-sum"]], "lincs-generate-classification-problem": [[7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria", "--allow-decreasing-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria", "--allow-enumerated-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria", "--allow-integer-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria", "--allow-single-peaked-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-denormalized-min-max", "--denormalized-min-max"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria", "--forbid-increasing-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria", "--forbid-real-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-output-problem", "--output-problem"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT", "CATEGORIES_COUNT"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT", "CRITERIA_COUNT"]], "lincs-generate-classified-alternatives": [[7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-max-imbalance", "--max-imbalance"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-misclassified-count", "--misclassified-count"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-output-alternatives", "--output-alternatives"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT", "ALTERNATIVES_COUNT"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM", "PROBLEM"]], "lincs-info-has-gpu": [[7, 7, 1, "cmdoption-lincs-info-has-gpu-quiet", "--quiet"]], "lincs-learn-classification-model": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-model-type", "--model-type"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-output-model", "--output-model"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET", "LEARNING_SET"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-learn-classification-model.--mrsort": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.strategy", "strategy"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.accuracy-heuristic": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor", "processor"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed", "random-seed"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy", "breed-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy", "initialization-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration", "max-duration"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress", "max-duration-without-progress"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations", "max-iterations"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress", "max-iterations-without-progress"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count", "models-count"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata", "output-metadata"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy", "profiles-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy", "target-accuracy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose", "verbose"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy", "weights-strategy"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex.processor", "processor"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.linear-program": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver", "solver"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.reinitialize-least-accurate": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion", "portion"]], "lincs-learn-classification-model.--ucncs.max-sat-by-coalitions.eval-max-sat": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time", "coef-minimize-time"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads", "nb-minimize-threads"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize", "timeout-fast-minimize"]], "lincs-learn-classification-model.--ucncs.max-sat-by-coalitions": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver", "solver"]], "lincs-learn-classification-model.--ucncs.max-sat-by-separation.eval-max-sat": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time", "coef-minimize-time"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads", "nb-minimize-threads"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize", "timeout-fast-minimize"]], "lincs-learn-classification-model.--ucncs.max-sat-by-separation": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver", "solver"]], "lincs-learn-classification-model.--ucncs": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.strategy", "strategy"]], "lincs-visualize-classification-model": [[7, 7, 1, "cmdoption-lincs-visualize-classification-model-alternatives", "--alternatives"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-alternatives-count", "--alternatives-count"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT", "OUTPUT"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM", "PROBLEM"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:method", "4": "py:data", "5": "py:property", "6": "py:function", "7": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "data", "Python data"], "5": ["py", "property", "Python property"], "6": ["py", "function", "Python function"], "7": ["std", "cmdoption", "program option"]}, "titleterms": {"contributor": [0, 3, 5], "project": [0, 5], "goal": [0, 5], "provid": [0, 5], "mcda": [0, 5], "tool": [0, 5], "usabl": [0, 5], "out": [0, 5], "box": [0, 5], "base": [0, 5, 11], "develop": [0, 3, 5], "new": [0, 3, 5], "algorithm": [0, 5], "get": [0, 4, 5, 11], "start": [0, 4, 5], "version": [0, 1, 5, 9], "except": [0, 5], "default": [0, 3, 5], "valu": [0, 5, 11], "file": [0, 5, 7, 10, 11], "format": [0, 5, 7, 10, 11], "linc": [0, 1, 4, 5, 7, 8, 11], "itself": [0, 5], "changelog": 1, "2": [1, 9], "0": [1, 9], "0a5": 1, "2024": 1, "11": 1, "08": 1, "0a3": 1, "10": 1, "plan": 1, "12": 1, "05": 1, "1": [1, 2], "02": 1, "publish": [1, 3], "python": [1, 3, 6, 7, 10], "api": [1, 6, 7, 10], "improv": 1, "visual": [1, 6, 7, 11], "smaller": 1, "chang": [1, 3], "2023": 1, "22": 1, "3": 1, "9": 1, "8": 1, "7": 1, "5": 1, "6": 1, "4": 1, "conceptu": [2, 10], "overview": [2, 10], "notat": 2, "about": [2, 11], "classif": [2, 6, 7, 8, 11], "formal": [2, 10], "definit": [2, 3, 10], "learn": [2, 6, 7, 11], "classifi": [2, 6, 7, 11], "non": 2, "compensatori": 2, "sort": 2, "nc": [2, 7], "exampl": 2, "particular": 2, "case": 2, "u": 2, "c": [2, 3], "textsf": 2, "k": 2, "mr": 2, "accuraci": [2, 7, 11], "synthet": [2, 11], "data": [2, 11], "next": [2, 3, 11], "guid": [3, 11], "do": [3, 6], "contribut": 3, "depend": 3, "cycl": 3, "run": 3, "sh": 3, "final": 3, "first": 3, "pre": 3, "quick": 3, "directori": 3, "structur": 3, "gener": [3, 7, 11], "design": 3, "strategi": [3, 6, 11], "But": 3, "bewar": 3, "virtual": 3, "function": 3, "call": 3, "so": 3, "why": 3, "all": 3, "templat": 3, "how": 3, "tos": 3, "updat": 3, "document": 3, "choos": 3, "your": [3, 6], "tweak": 3, "an": [3, 11], "exist": 3, "add": 3, "extens": 3, "point": 3, "dynam": 3, "static": 3, "behavior": 3, "backward": 3, "compat": 3, "extern": 3, "solver": 3, "us": [4, 6, 10, 11], "command": [4, 6, 7, 10], "line": [4, 6, 7, 10], "interfac": [4, 7], "what": [4, 11], "now": 4, "readm": 5, "The": [6, 7, 8], "again": 6, "more": 6, "creat": 6, "object": 6, "problem": [6, 7, 10, 11], "model": [6, 7, 10, 11], "altern": [6, 7, 11], "clone": 6, "serial": 6, "In": [6, 10], "yaml": 6, "csv": 6, "like": 6, "specif": 6, "pickl": 6, "modul": [6, 7, 8], "custom": 6, "own": 6, "preprocessedlearningset": 6, "modelsbeinglearn": 6, "observ": 6, "other": 6, "refer": 7, "describ": 7, "info": 7, "ha": 7, "gpu": 7, "packag": [7, 8], "roadmap": 9, "later": 9, "singl": 10, "peak": 10, "criteria": [10, 11], "user": 11, "categori": 11, "accept": 11, "suffici": 11, "coalit": 11, "comment": 11, "random": 11, "whole": 11, "tree": 11, "option": 11, "avail": 11, "sub": 11, "weight": 11, "profil": 11, "breed": 11, "wpb": 11, "termin": 11, "step": 11, "sat": 11, "comput": 11, "human": 11, "readabl": 11, "inform": 11, "": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Contributors": [[0, "contributors"], [5, "contributors"]], "Project goals": [[0, "project-goals"], [5, "project-goals"]], "Provide MCDA tools usable out of the box": [[0, "provide-mcda-tools-usable-out-of-the-box"], [5, "provide-mcda-tools-usable-out-of-the-box"]], "Provide a base for developing new MCDA algorithms": [[0, "provide-a-base-for-developing-new-mcda-algorithms"], [5, "provide-a-base-for-developing-new-mcda-algorithms"]], "Get started": [[0, "get-started"], [4, "get-started"], [5, "get-started"]], "Versioning": [[0, "versioning"], [5, "versioning"]], "Exceptions": [[0, "exceptions"], [5, "exceptions"]], "Default values": [[0, "default-values"], [5, "default-values"]], "File formats": [[0, "file-formats"], [5, "file-formats"], [7, "file-formats"]], "Develop lincs itself": [[0, "develop-lincs-itself"], [5, "develop-lincs-itself"]], "Get lincs": [[4, "get-lincs"]], "Start using lincs\u2019 command-line interface": [[4, "start-using-lincs-command-line-interface"]], "What now?": [[4, "what-now"]], "README": [[5, "readme"]], "Roadmap": [[9, "roadmap"]], "Version 2.0": [[9, "version-2-0"]], "Later versions": [[9, "later-versions"]], "Single-peaked criteria": [[10, "single-peaked-criteria"]], "Conceptual overview": [[10, "conceptual-overview"], [2, "conceptual-overview"]], "Formal definition": [[10, null], [2, null], [2, null], [2, null], [2, null], [2, null]], "In the problem file format": [[10, "in-the-problem-file-format"]], "In the model file format": [[10, "in-the-model-file-format"]], "Using the command line": [[10, "using-the-command-line"]], "Using the Python API": [[10, "using-the-python-api"]], "The Python API": [[6, "the-python-api"]], "Do it again, in Python": [[6, "do-it-again-in-python"]], "Do more, with the Python API": [[6, "do-more-with-the-python-api"]], "Create classification objects": [[6, "create-classification-objects"]], "Create a Problem": [[6, "create-a-problem"]], "Create a Model": [[6, "create-a-model"]], "Create (classified) Alternatives": [[6, "create-classified-alternatives"]], "Clone classification objects": [[6, "clone-classification-objects"]], "Serialize classification objects": [[6, "serialize-classification-objects"]], "In YAML and CSV like the command-line": [[6, "in-yaml-and-csv-like-the-command-line"]], "Using the Python-specific pickle module": [[6, "using-the-python-specific-pickle-module"]], "Customize the model visualization": [[6, "customize-the-model-visualization"]], "Create your own learning strategies": [[6, "create-your-own-learning-strategies"]], "PreprocessedLearningSet": [[6, "preprocessedlearningset"]], "ModelsBeingLearned": [[6, "modelsbeinglearned"]], "Observer strategies": [[6, "observer-strategies"]], "Other strategies": [[6, "other-strategies"]], "Changelog": [[1, "changelog"]], "Version 2.0.0a5 (2024-11-08)": [[1, "version-2-0-0a5-2024-11-08"]], "Version 2.0.0a3 (2024-10-10)": [[1, "version-2-0-0a3-2024-10-10"]], "Version 2.0.0 (planned 2024-12-05)": [[1, "version-2-0-0-planned-2024-12-05"]], "Version 1.1.0 (2024-02-08)": [[1, "version-1-1-0-2024-02-08"]], "Publish the Python API": [[1, "publish-the-python-api"]], "Improve lincs visualize": [[1, "improve-lincs-visualize"]], "Smaller changes": [[1, "smaller-changes"]], "Version 1.0.0 (2023-11-22)": [[1, "version-1-0-0-2023-11-22"]], "Version 0.11.1": [[1, "version-0-11-1"]], "Version 0.11.0": [[1, "version-0-11-0"]], "Versions 0.10.0 to 0.10.3": [[1, "versions-0-10-0-to-0-10-3"]], "Versions 0.9.0 to 0.9.2": [[1, "versions-0-9-0-to-0-9-2"]], "Version 0.8.7": [[1, "version-0-8-7"]], "Versions 0.8.5 to 0.8.6": [[1, "versions-0-8-5-to-0-8-6"]], "Versions 0.8.0 to 0.8.4": [[1, "versions-0-8-0-to-0-8-4"]], "Version 0.7.0": [[1, "version-0-7-0"]], "Version 0.6.0": [[1, "version-0-6-0"]], "Version 0.5.1": [[1, "version-0-5-1"]], "Version 0.5.0": [[1, "version-0-5-0"]], "Version 0.4.5": [[1, "version-0-4-5"]], "Versions 0.4.1 to 0.4.4": [[1, "versions-0-4-1-to-0-4-4"]], "Version 0.4.0": [[1, "version-0-4-0"]], "Versions 0.3.4 to 0.3.7": [[1, "versions-0-3-4-to-0-3-7"]], "Version 0.3.3": [[1, "version-0-3-3"]], "Version 0.3.2": [[1, "version-0-3-2"]], "Version 0.3.1": [[1, "version-0-3-1"]], "Version 0.3.0": [[1, "version-0-3-0"]], "Version 0.2.2": [[1, "version-0-2-2"]], "Version 0.2.1": [[1, "version-0-2-1"]], "Version 0.2.0": [[1, "version-0-2-0"]], "Version 0.1.3": [[1, "version-0-1-3"]], "Notation": [[2, "notation"]], "About classification": [[2, "about-classification"]], "Learning and classifying": [[2, "learning-and-classifying"]], "Non-compensatory sorting (NCS)": [[2, "non-compensatory-sorting-ncs"]], "Example": [[2, "example"], [2, "id1"]], "Particular cases": [[2, "particular-cases"]], "U^c \\textsf{-} NCS": [[2, "u-c-textsf-ncs"]], "1 \\textsf{-} U^c \\textsf{-} NCS a.k.a. MR-Sort": [[2, "textsf-u-c-textsf-ncs-a-k-a-mr-sort"]], "Classification accuracy": [[2, "classification-accuracy"]], "Synthetic data": [[2, "synthetic-data"]], "Next": [[2, "next"]], "User Guide": [[11, "user-guide"]], "Formatting data for lincs": [[11, "formatting-data-for-lincs"]], "\u201cProblem\u201d files": [[11, "problem-files"]], "Criteria": [[11, "criteria"]], "Categories": [[11, "categories"]], "\u201cModel\u201d files": [[11, "model-files"]], "Accepted values": [[11, "accepted-values"]], "Sufficient coalitions": [[11, "sufficient-coalitions"]], "\u201cAlternatives\u201d files": [[11, "alternatives-files"]], "Comments in generated files": [[11, "comments-in-generated-files"]], "Generating synthetic data": [[11, "generating-synthetic-data"]], "About randomness": [[11, "about-randomness"]], "Generating a problem": [[11, "generating-a-problem"]], "Generating a model": [[11, "generating-a-model"]], "Generating alternatives": [[11, "generating-alternatives"]], "Learning a model": [[11, "learning-a-model"]], "An whole tree of options": [[11, "an-whole-tree-of-options"]], "Strategies": [[11, "strategies"], [3, "strategies"]], "Available learning (sub-)strategies": [[11, "available-learning-sub-strategies"]], "Weights, profiles, breed (WPB)": [[11, "weights-profiles-breed-wpb"]], "General options": [[11, "general-options"]], "Termination": [[11, "termination"]], "\u201cWeights\u201d step": [[11, "weights-step"]], "\u201cProfiles\u201d step": [[11, "profiles-step"]], "\u201cBreed\u201d step": [[11, "breed-step"]], "SAT-based strategies": [[11, "sat-based-strategies"]], "Using a model": [[11, "using-a-model"]], "Classifying alternatives": [[11, "classifying-alternatives"]], "Computing a classification accuracy": [[11, "computing-a-classification-accuracy"]], "Getting human-readable information about a problem or model": [[11, "getting-human-readable-information-about-a-problem-or-model"]], "Visualizing a model and alternatives": [[11, "visualizing-a-model-and-alternatives"]], "What\u2019s next?": [[11, "what-s-next"]], "Contributor guide": [[3, "contributor-guide"]], "Do contribute!": [[3, "do-contribute"]], "Development dependencies": [[3, "development-dependencies"]], "Development cycle": [[3, "development-cycle"]], "./run-development-cycle.sh": [[3, "run-development-cycle-sh"]], "./publish.sh": [[3, "publish-sh"]], "finalize": [[3, "publish-sh-finalize"]], "first-pre": [[3, "publish-sh-first-pre"]], "next-pre": [[3, "publish-sh-next-pre"]], "quick": [[3, "publish-sh-quick"]], "Directory structure": [[3, "directory-structure"]], "General design": [[3, "general-design"]], "But beware of virtual function calls": [[3, "but-beware-of-virtual-function-calls"]], "So, why not all templates?": [[3, "so-why-not-all-templates"]], "How-tos": [[3, "how-tos"]], "Update the documentation": [[3, "update-the-documentation"]], "Choose Python or C++ for your change": [[3, "choose-python-or-c-for-your-change"]], "Tweak an existing strategy": [[3, "tweak-an-existing-strategy"]], "Add a new strategy": [[3, "add-a-new-strategy"]], "Add a new extension point": [[3, "add-a-new-extension-point"]], "Dynamic or static?": [[3, "dynamic-or-static"]], "Definition of an dynamic extension point": [[3, "definition-of-an-dynamic-extension-point"]], "Definition of an static extension point": [[3, "definition-of-an-static-extension-point"]], "Default behavior for backward compatibility": [[3, "default-behavior-for-backward-compatibility"]], "Add an external solver": [[3, "add-an-external-solver"]], "The lincs package": [[8, "the-lincs-package"], [7, "the-lincs-package"]], "The lincs.classification module": [[8, "the-lincs-classification-module"], [7, "the-lincs-classification-module"]], "Reference": [[7, "reference"]], "The problem file": [[7, "the-problem-file"]], "The NCS model file": [[7, "the-ncs-model-file"]], "The alternatives file": [[7, "the-alternatives-file"]], "Command-line interface": [[7, "command-line-interface"]], "lincs": [[7, "lincs"]], "classification-accuracy": [[7, "lincs-classification-accuracy"]], "classify": [[7, "lincs-classify"]], "describe": [[7, "lincs-describe"]], "classification-model": [[7, "lincs-describe-classification-model"], [7, "lincs-generate-classification-model"], [7, "lincs-learn-classification-model"], [7, "lincs-visualize-classification-model"]], "classification-problem": [[7, "lincs-describe-classification-problem"], [7, "lincs-generate-classification-problem"]], "generate": [[7, "lincs-generate"]], "classified-alternatives": [[7, "lincs-generate-classified-alternatives"]], "info": [[7, "lincs-info"]], "has-gpu": [[7, "lincs-info-has-gpu"]], "learn": [[7, "lincs-learn"]], "visualize": [[7, "lincs-visualize"]], "Python API": [[7, "python-api"]]}, "indexentries": {"--doctest-option": [[3, "cmdoption-.-run-development-cycle.sh-doctest-option"]], "--dry-run": [[3, "cmdoption-.-publish.sh-finalize-dry-run"], [3, "cmdoption-.-publish.sh-first-pre-dry-run"], [3, "cmdoption-.-publish.sh-next-pre-dry-run"], [3, "cmdoption-.-publish.sh-quick-dry-run"]], "--forbid-chrones": [[3, "cmdoption-.-run-development-cycle.sh-forbid-chrones"]], "--forbid-gpu": [[3, "cmdoption-.-run-development-cycle.sh-forbid-gpu"]], "--forbid-nvcc": [[3, "cmdoption-.-run-development-cycle.sh-forbid-nvcc"]], "--python-versions": [[3, "cmdoption-.-run-development-cycle.sh-python-versions"]], "--single-python-version": [[3, "cmdoption-.-run-development-cycle.sh-single-python-version"]], "--skip-build": [[3, "cmdoption-.-run-development-cycle.sh-skip-build"]], "--skip-cpp-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit"]], "--skip-install": [[3, "cmdoption-.-run-development-cycle.sh-skip-install"]], "--skip-long-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-long-unit"]], "--skip-max-sat-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit"]], "--skip-notebooks": [[3, "cmdoption-.-run-development-cycle.sh-skip-notebooks"]], "--skip-python-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-python-unit"]], "--skip-sat-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-sat-unit"]], "--skip-unchanged-notebooks": [[3, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks"]], "--skip-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-unit"]], "--skip-wpb-alglib-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit"]], "--skip-wpb-glop-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit"]], "--skip-wpb-in-house-simplex-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-in-house-simplex-unit"]], "--skip-wpb-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit"]], "--unit-coverage": [[3, "cmdoption-.-run-development-cycle.sh-unit-coverage"]], "--with-docs": [[3, "cmdoption-.-run-development-cycle.sh-with-docs"]], "./publish.sh-finalize command line option": [[3, "cmdoption-.-publish.sh-finalize-dry-run"]], "./publish.sh-first-pre command line option": [[3, "cmdoption-.-publish.sh-first-pre-arg-LEVEL"], [3, "cmdoption-.-publish.sh-first-pre-arg-PRE"], [3, "cmdoption-.-publish.sh-first-pre-dry-run"]], "./publish.sh-next-pre command line option": [[3, "cmdoption-.-publish.sh-next-pre-dry-run"]], "./publish.sh-quick command line option": [[3, "cmdoption-.-publish.sh-quick-arg-LEVEL"], [3, "cmdoption-.-publish.sh-quick-dry-run"]], "./run-development-cycle.sh command line option": [[3, "cmdoption-.-run-development-cycle.sh-doctest-option"], [3, "cmdoption-.-run-development-cycle.sh-forbid-chrones"], [3, "cmdoption-.-run-development-cycle.sh-forbid-gpu"], [3, "cmdoption-.-run-development-cycle.sh-forbid-nvcc"], [3, "cmdoption-.-run-development-cycle.sh-python-versions"], [3, "cmdoption-.-run-development-cycle.sh-single-python-version"], [3, "cmdoption-.-run-development-cycle.sh-skip-build"], [3, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-install"], [3, "cmdoption-.-run-development-cycle.sh-skip-long-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-notebooks"], [3, "cmdoption-.-run-development-cycle.sh-skip-python-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-sat-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks"], [3, "cmdoption-.-run-development-cycle.sh-skip-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-in-house-simplex-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit"], [3, "cmdoption-.-run-development-cycle.sh-unit-coverage"], [3, "cmdoption-.-run-development-cycle.sh-with-docs"]], "level": [[3, "cmdoption-.-publish.sh-first-pre-arg-LEVEL"], [3, "cmdoption-.-publish.sh-quick-arg-LEVEL"]], "pre": [[3, "cmdoption-.-publish.sh-first-pre-arg-PRE"]], "--allow-decreasing-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria"]], "--allow-enumerated-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria"]], "--allow-integer-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria"]], "--allow-single-peaked-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria"]], "--alternatives": [[7, "cmdoption-lincs-visualize-classification-model-alternatives"]], "--alternatives-count": [[7, "cmdoption-lincs-visualize-classification-model-alternatives-count"]], "--denormalized-min-max": [[7, "cmdoption-lincs-generate-classification-problem-denormalized-min-max"]], "--forbid-increasing-criteria": [[7, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria"]], "--forbid-real-criteria": [[7, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria"]], "--max-imbalance": [[7, "cmdoption-lincs-generate-classified-alternatives-max-imbalance"]], "--misclassified-count": [[7, "cmdoption-lincs-generate-classified-alternatives-misclassified-count"]], "--model-type": [[7, "cmdoption-lincs-generate-classification-model-model-type"], [7, "cmdoption-lincs-learn-classification-model-model-type"]], "--mrsort.fixed-weights-sum": [[7, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum"]], "--mrsort.strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.strategy"]], "--mrsort.weights-profiles-breed.accuracy-heuristic.processor": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor"]], "--mrsort.weights-profiles-breed.accuracy-heuristic.random-seed": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed"]], "--mrsort.weights-profiles-breed.breed-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy"]], "--mrsort.weights-profiles-breed.initialization-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy"]], "--mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex.processor": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex.processor"]], "--mrsort.weights-profiles-breed.linear-program.solver": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver"]], "--mrsort.weights-profiles-breed.max-duration": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration"]], "--mrsort.weights-profiles-breed.max-duration-without-progress": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress"]], "--mrsort.weights-profiles-breed.max-iterations": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations"]], "--mrsort.weights-profiles-breed.max-iterations-without-progress": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress"]], "--mrsort.weights-profiles-breed.models-count": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count"]], "--mrsort.weights-profiles-breed.output-metadata": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata"]], "--mrsort.weights-profiles-breed.profiles-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy"]], "--mrsort.weights-profiles-breed.reinitialize-least-accurate.portion": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion"]], "--mrsort.weights-profiles-breed.target-accuracy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy"]], "--mrsort.weights-profiles-breed.verbose": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose"]], "--mrsort.weights-profiles-breed.weights-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy"]], "--output-alternatives": [[7, "cmdoption-lincs-classify-output-alternatives"], [7, "cmdoption-lincs-generate-classified-alternatives-output-alternatives"]], "--output-description": [[7, "cmdoption-lincs-describe-classification-model-output-description"], [7, "cmdoption-lincs-describe-classification-problem-output-description"]], "--output-model": [[7, "cmdoption-lincs-generate-classification-model-output-model"], [7, "cmdoption-lincs-learn-classification-model-output-model"]], "--output-problem": [[7, "cmdoption-lincs-generate-classification-problem-output-problem"]], "--quiet": [[7, "cmdoption-lincs-info-has-gpu-quiet"]], "--random-seed": [[7, "cmdoption-lincs-generate-classification-model-random-seed"], [7, "cmdoption-lincs-generate-classification-problem-random-seed"], [7, "cmdoption-lincs-generate-classified-alternatives-random-seed"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize"]], "--ucncs.max-sat-by-coalitions.solver": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver"]], "--ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time"]], "--ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads"]], "--ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize"]], "--ucncs.max-sat-by-separation.solver": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver"]], "--ucncs.strategy": [[7, "cmdoption-lincs-learn-classification-model-ucncs.strategy"]], "--version": [[7, "cmdoption-lincs-version"]], "alternatives": [[7, "cmdoption-lincs-classify-arg-ALTERNATIVES"]], "alternatives_count": [[7, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT"]], "acceptedvalues (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues"], [8, "lincs.classification.AcceptedValues"]], "acceptedvalues.enumeratedthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds"]], "acceptedvalues.integerintervals (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals"], [8, "lincs.classification.AcceptedValues.IntegerIntervals"]], "acceptedvalues.integerthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds"], [8, "lincs.classification.AcceptedValues.IntegerThresholds"]], "acceptedvalues.kind (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.Kind"], [8, "lincs.classification.AcceptedValues.Kind"]], "acceptedvalues.realintervals (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.RealIntervals"], [8, "lincs.classification.AcceptedValues.RealIntervals"]], "acceptedvalues.realthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.RealThresholds"], [8, "lincs.classification.AcceptedValues.RealThresholds"]], "alternative (class in lincs.classification)": [[7, "lincs.classification.Alternative"], [8, "lincs.classification.Alternative"]], "alternatives (class in lincs.classification)": [[7, "lincs.classification.Alternatives"], [8, "lincs.classification.Alternatives"]], "balancedalternativesgenerationexception": [[7, "lincs.classification.BalancedAlternativesGenerationException"], [8, "lincs.classification.BalancedAlternativesGenerationException"]], "categories_count": [[7, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT"]], "criteria_count": [[7, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT"]], "category (class in lincs.classification)": [[7, "lincs.classification.Category"], [8, "lincs.classification.Category"]], "classificationresult (class in lincs.classification)": [[7, "lincs.classification.ClassificationResult"], [8, "lincs.classification.ClassificationResult"]], "criterion (class in lincs.classification)": [[7, "lincs.classification.Criterion"], [8, "lincs.classification.Criterion"]], "criterion.enumeratedvalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.EnumeratedValues"], [8, "lincs.classification.Criterion.EnumeratedValues"]], "criterion.integervalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.IntegerValues"], [8, "lincs.classification.Criterion.IntegerValues"]], "criterion.preferencedirection (class in lincs.classification)": [[7, "lincs.classification.Criterion.PreferenceDirection"], [8, "lincs.classification.Criterion.PreferenceDirection"]], "criterion.realvalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.RealValues"], [8, "lincs.classification.Criterion.RealValues"]], "criterion.valuetype (class in lincs.classification)": [[7, "lincs.classification.Criterion.ValueType"], [8, "lincs.classification.Criterion.ValueType"]], "datavalidationexception": [[7, "lincs.DataValidationException"], [8, "lincs.DataValidationException"]], "improveprofileswithaccuracyheuristiconcpu (class in lincs.classification)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu"]], "improveprofileswithaccuracyheuristicongpu (class in lincs.classification)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu"]], "initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion (class in lincs.classification)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"]], "learning_set": [[7, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET"]], "learnmrsortbyweightsprofilesbreed (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed"]], "learnmrsortbyweightsprofilesbreed.breedingstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy"]], "learnmrsortbyweightsprofilesbreed.modelsbeinglearned (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned"]], "learnmrsortbyweightsprofilesbreed.observer (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer"]], "learnmrsortbyweightsprofilesbreed.profilesimprovementstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy"]], "learnmrsortbyweightsprofilesbreed.profilesinitializationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy"]], "learnmrsortbyweightsprofilesbreed.terminationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy"]], "learnmrsortbyweightsprofilesbreed.weightsoptimizationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy"]], "learnucncsbymaxsatbycoalitionsusingevalmaxsat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"]], "learnucncsbymaxsatbyseparationusingevalmaxsat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"]], "learnucncsbysatbycoalitionsusingminisat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat"]], "learnucncsbysatbyseparationusingminisat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat"]], "learningfailureexception": [[7, "lincs.LearningFailureException"], [8, "lincs.LearningFailureException"]], "model": [[7, "cmdoption-lincs-classification-accuracy-arg-MODEL"], [7, "cmdoption-lincs-classify-arg-MODEL"], [7, "cmdoption-lincs-describe-classification-model-arg-MODEL"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL"], [7, "cmdoption-lincs-visualize-classification-model-arg-MODEL"]], "model (class in lincs.classification)": [[7, "lincs.classification.Model"], [8, "lincs.classification.Model"]], "model.json_schema (in module lincs.classification)": [[7, "lincs.classification.Model.JSON_SCHEMA"], [8, "lincs.classification.Model.JSON_SCHEMA"]], "output": [[7, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT"]], "optimizeweightsusingalglib (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib"], [8, "lincs.classification.OptimizeWeightsUsingAlglib"]], "optimizeweightsusingglop (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingGlop"], [8, "lincs.classification.OptimizeWeightsUsingGlop"]], "optimizeweightsusinginhousesimplexoncpu (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu"]], "optimizeweightsusinginhousesimplexongpu (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu"]], "problem": [[7, "cmdoption-lincs-classification-accuracy-arg-PROBLEM"], [7, "cmdoption-lincs-classify-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM"], [7, "cmdoption-lincs-learn-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM"]], "performance (class in lincs.classification)": [[7, "lincs.classification.Performance"], [8, "lincs.classification.Performance"]], "performance.enumerated (class in lincs.classification)": [[7, "lincs.classification.Performance.Enumerated"], [8, "lincs.classification.Performance.Enumerated"]], "performance.integer (class in lincs.classification)": [[7, "lincs.classification.Performance.Integer"], [8, "lincs.classification.Performance.Integer"]], "performance.real (class in lincs.classification)": [[7, "lincs.classification.Performance.Real"], [8, "lincs.classification.Performance.Real"]], "preprocessedlearningset (class in lincs.classification)": [[7, "lincs.classification.PreprocessedLearningSet"], [8, "lincs.classification.PreprocessedLearningSet"]], "problem (class in lincs.classification)": [[7, "lincs.classification.Problem"], [8, "lincs.classification.Problem"]], "problem.json_schema (in module lincs.classification)": [[7, "lincs.classification.Problem.JSON_SCHEMA"], [8, "lincs.classification.Problem.JSON_SCHEMA"]], "reinitializeleastaccurate (class in lincs.classification)": [[7, "lincs.classification.ReinitializeLeastAccurate"], [8, "lincs.classification.ReinitializeLeastAccurate"]], "sufficientcoalitions (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions"], [8, "lincs.classification.SufficientCoalitions"]], "sufficientcoalitions.kind (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Kind"], [8, "lincs.classification.SufficientCoalitions.Kind"]], "sufficientcoalitions.roots (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Roots"], [8, "lincs.classification.SufficientCoalitions.Roots"]], "sufficientcoalitions.weights (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Weights"], [8, "lincs.classification.SufficientCoalitions.Weights"]], "testing_set": [[7, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET"]], "terminateafteriterations (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterIterations"], [8, "lincs.classification.TerminateAfterIterations"]], "terminateafteriterationswithoutprogress (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress"]], "terminateafterseconds (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterSeconds"], [8, "lincs.classification.TerminateAfterSeconds"]], "terminateaftersecondswithoutprogress (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress"]], "terminateataccuracy (class in lincs.classification)": [[7, "lincs.classification.TerminateAtAccuracy"], [8, "lincs.classification.TerminateAtAccuracy"]], "terminatewhenany (class in lincs.classification)": [[7, "lincs.classification.TerminateWhenAny"], [8, "lincs.classification.TerminateWhenAny"]], "uniformrandombitsgenerator (class in lincs)": [[7, "lincs.UniformRandomBitsGenerator"], [8, "lincs.UniformRandomBitsGenerator"]], "__call__() (lincs.uniformrandombitsgenerator method)": [[7, "lincs.UniformRandomBitsGenerator.__call__"], [8, "lincs.UniformRandomBitsGenerator.__call__"]], "__init__() (lincs.classification.acceptedvalues method)": [[7, "lincs.classification.AcceptedValues.__init__"], [8, "lincs.classification.AcceptedValues.__init__"]], "__init__() (lincs.classification.acceptedvalues.enumeratedthresholds method)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds.__init__"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds.__init__"]], "__init__() (lincs.classification.acceptedvalues.integerintervals method)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals.__init__"], [8, "lincs.classification.AcceptedValues.IntegerIntervals.__init__"]], "__init__() (lincs.classification.acceptedvalues.integerthresholds method)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds.__init__"], [8, "lincs.classification.AcceptedValues.IntegerThresholds.__init__"]], "__init__() (lincs.classification.acceptedvalues.realintervals method)": [[7, "lincs.classification.AcceptedValues.RealIntervals.__init__"], [8, "lincs.classification.AcceptedValues.RealIntervals.__init__"]], "__init__() (lincs.classification.acceptedvalues.realthresholds method)": [[7, "lincs.classification.AcceptedValues.RealThresholds.__init__"], [8, "lincs.classification.AcceptedValues.RealThresholds.__init__"]], "__init__() (lincs.classification.alternative method)": [[7, "lincs.classification.Alternative.__init__"], [8, "lincs.classification.Alternative.__init__"]], "__init__() (lincs.classification.alternatives method)": [[7, "lincs.classification.Alternatives.__init__"], [8, "lincs.classification.Alternatives.__init__"]], "__init__() (lincs.classification.category method)": [[7, "lincs.classification.Category.__init__"], [8, "lincs.classification.Category.__init__"]], "__init__() (lincs.classification.criterion method)": [[7, "lincs.classification.Criterion.__init__"], [8, "lincs.classification.Criterion.__init__"]], "__init__() (lincs.classification.criterion.enumeratedvalues method)": [[7, "lincs.classification.Criterion.EnumeratedValues.__init__"], [8, "lincs.classification.Criterion.EnumeratedValues.__init__"]], "__init__() (lincs.classification.criterion.integervalues method)": [[7, "lincs.classification.Criterion.IntegerValues.__init__"], [8, "lincs.classification.Criterion.IntegerValues.__init__"]], "__init__() (lincs.classification.criterion.realvalues method)": [[7, "lincs.classification.Criterion.RealValues.__init__"], [8, "lincs.classification.Criterion.RealValues.__init__"]], "__init__() (lincs.classification.improveprofileswithaccuracyheuristiconcpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.__init__"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.__init__"]], "__init__() (lincs.classification.improveprofileswithaccuracyheuristicongpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.__init__"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.__init__"]], "__init__() (lincs.classification.initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion method)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.__init__"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.__init__"]], "__init__() (lincs.classification.learnmrsortbyweightsprofilesbreed method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.__init__"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.__init__"]], "__init__() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.__init__"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.__init__"]], "__init__() (lincs.classification.learnucncsbymaxsatbycoalitionsusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.__init__"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.__init__"]], "__init__() (lincs.classification.learnucncsbymaxsatbyseparationusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.__init__"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.__init__"]], "__init__() (lincs.classification.learnucncsbysatbycoalitionsusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.__init__"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.__init__"]], "__init__() (lincs.classification.learnucncsbysatbyseparationusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.__init__"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.__init__"]], "__init__() (lincs.classification.model method)": [[7, "lincs.classification.Model.__init__"], [8, "lincs.classification.Model.__init__"]], "__init__() (lincs.classification.optimizeweightsusingalglib method)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib.__init__"], [8, "lincs.classification.OptimizeWeightsUsingAlglib.__init__"]], "__init__() (lincs.classification.optimizeweightsusingglop method)": [[7, "lincs.classification.OptimizeWeightsUsingGlop.__init__"], [8, "lincs.classification.OptimizeWeightsUsingGlop.__init__"]], "__init__() (lincs.classification.optimizeweightsusinginhousesimplexoncpu method)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu.__init__"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu.__init__"]], "__init__() (lincs.classification.optimizeweightsusinginhousesimplexongpu method)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu.__init__"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu.__init__"]], "__init__() (lincs.classification.performance method)": [[7, "lincs.classification.Performance.__init__"], [8, "lincs.classification.Performance.__init__"]], "__init__() (lincs.classification.performance.enumerated method)": [[7, "lincs.classification.Performance.Enumerated.__init__"], [8, "lincs.classification.Performance.Enumerated.__init__"]], "__init__() (lincs.classification.performance.integer method)": [[7, "lincs.classification.Performance.Integer.__init__"], [8, "lincs.classification.Performance.Integer.__init__"]], "__init__() (lincs.classification.performance.real method)": [[7, "lincs.classification.Performance.Real.__init__"], [8, "lincs.classification.Performance.Real.__init__"]], "__init__() (lincs.classification.preprocessedlearningset method)": [[7, "lincs.classification.PreprocessedLearningSet.__init__"], [8, "lincs.classification.PreprocessedLearningSet.__init__"]], "__init__() (lincs.classification.problem method)": [[7, "lincs.classification.Problem.__init__"], [8, "lincs.classification.Problem.__init__"]], "__init__() (lincs.classification.reinitializeleastaccurate method)": [[7, "lincs.classification.ReinitializeLeastAccurate.__init__"], [8, "lincs.classification.ReinitializeLeastAccurate.__init__"]], "__init__() (lincs.classification.sufficientcoalitions method)": [[7, "lincs.classification.SufficientCoalitions.__init__"], [8, "lincs.classification.SufficientCoalitions.__init__"]], "__init__() (lincs.classification.sufficientcoalitions.roots method)": [[7, "lincs.classification.SufficientCoalitions.Roots.__init__"], [8, "lincs.classification.SufficientCoalitions.Roots.__init__"]], "__init__() (lincs.classification.sufficientcoalitions.weights method)": [[7, "lincs.classification.SufficientCoalitions.Weights.__init__"], [8, "lincs.classification.SufficientCoalitions.Weights.__init__"]], "__init__() (lincs.classification.terminateafteriterations method)": [[7, "lincs.classification.TerminateAfterIterations.__init__"], [8, "lincs.classification.TerminateAfterIterations.__init__"]], "__init__() (lincs.classification.terminateafteriterationswithoutprogress method)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress.__init__"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress.__init__"]], "__init__() (lincs.classification.terminateafterseconds method)": [[7, "lincs.classification.TerminateAfterSeconds.__init__"], [8, "lincs.classification.TerminateAfterSeconds.__init__"]], "__init__() (lincs.classification.terminateaftersecondswithoutprogress method)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress.__init__"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress.__init__"]], "__init__() (lincs.classification.terminateataccuracy method)": [[7, "lincs.classification.TerminateAtAccuracy.__init__"], [8, "lincs.classification.TerminateAtAccuracy.__init__"]], "__init__() (lincs.classification.terminatewhenany method)": [[7, "lincs.classification.TerminateWhenAny.__init__"], [8, "lincs.classification.TerminateWhenAny.__init__"]], "__version__ (in module lincs)": [[7, "lincs.__version__"], [8, "lincs.__version__"]], "accepted_values (lincs.classification.model property)": [[7, "lincs.classification.Model.accepted_values"], [8, "lincs.classification.Model.accepted_values"]], "accuracies (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.accuracies"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.accuracies"]], "after_iteration() (lincs.classification.learnmrsortbyweightsprofilesbreed.observer method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.after_iteration"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.after_iteration"]], "alternatives (lincs.classification.alternatives property)": [[7, "lincs.classification.Alternatives.alternatives"], [8, "lincs.classification.Alternatives.alternatives"]], "alternatives_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.alternatives_count"], [8, "lincs.classification.PreprocessedLearningSet.alternatives_count"]], "antitone (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.antitone"], [8, "lincs.classification.Criterion.PreferenceDirection.antitone"]], "assignments (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.assignments"], [8, "lincs.classification.PreprocessedLearningSet.assignments"]], "before_return() (lincs.classification.learnmrsortbyweightsprofilesbreed.observer method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.before_return"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.before_return"]], "boundaries_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.boundaries_count"], [8, "lincs.classification.PreprocessedLearningSet.boundaries_count"]], "breed() (lincs.classification.learnmrsortbyweightsprofilesbreed.breedingstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy.breed"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy.breed"]], "breed() (lincs.classification.reinitializeleastaccurate method)": [[7, "lincs.classification.ReinitializeLeastAccurate.breed"], [8, "lincs.classification.ReinitializeLeastAccurate.breed"]], "categories_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.categories_count"], [8, "lincs.classification.PreprocessedLearningSet.categories_count"]], "category_index (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.category_index"], [8, "lincs.classification.Alternative.category_index"]], "changed (lincs.classification.classificationresult property)": [[7, "lincs.classification.ClassificationResult.changed"], [8, "lincs.classification.ClassificationResult.changed"]], "classify_alternatives() (in module lincs.classification)": [[7, "lincs.classification.classify_alternatives"], [8, "lincs.classification.classify_alternatives"]], "criteria (lincs.classification.problem property)": [[7, "lincs.classification.Problem.criteria"], [8, "lincs.classification.Problem.criteria"]], "criteria_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.criteria_count"], [8, "lincs.classification.PreprocessedLearningSet.criteria_count"]], "criterion_weights (lincs.classification.sufficientcoalitions.weights property)": [[7, "lincs.classification.SufficientCoalitions.Weights.criterion_weights"], [8, "lincs.classification.SufficientCoalitions.Weights.criterion_weights"]], "decreasing (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.decreasing"], [8, "lincs.classification.Criterion.PreferenceDirection.decreasing"]], "describe_model() (in module lincs.classification)": [[7, "lincs.classification.describe_model"], [8, "lincs.classification.describe_model"]], "describe_problem() (in module lincs.classification)": [[7, "lincs.classification.describe_problem"], [8, "lincs.classification.describe_problem"]], "dump() (lincs.classification.alternatives method)": [[7, "lincs.classification.Alternatives.dump"], [8, "lincs.classification.Alternatives.dump"]], "dump() (lincs.classification.model method)": [[7, "lincs.classification.Model.dump"], [8, "lincs.classification.Model.dump"]], "dump() (lincs.classification.problem method)": [[7, "lincs.classification.Problem.dump"], [8, "lincs.classification.Problem.dump"]], "enumerated (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.enumerated"], [8, "lincs.classification.Criterion.ValueType.enumerated"]], "enumerated (lincs.classification.performance property)": [[7, "lincs.classification.Performance.enumerated"], [8, "lincs.classification.Performance.enumerated"]], "enumerated_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.enumerated_thresholds"], [8, "lincs.classification.AcceptedValues.enumerated_thresholds"]], "enumerated_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.enumerated_values"], [8, "lincs.classification.Criterion.enumerated_values"]], "generate_alternatives() (in module lincs.classification)": [[7, "lincs.classification.generate_alternatives"], [8, "lincs.classification.generate_alternatives"]], "generate_mrsort_model() (in module lincs.classification)": [[7, "lincs.classification.generate_mrsort_model"], [8, "lincs.classification.generate_mrsort_model"]], "generate_problem() (in module lincs.classification)": [[7, "lincs.classification.generate_problem"], [8, "lincs.classification.generate_problem"]], "get_best_accuracy() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_accuracy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_accuracy"]], "get_best_model() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_model"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_model"]], "get_value_rank() (lincs.classification.criterion.enumeratedvalues method)": [[7, "lincs.classification.Criterion.EnumeratedValues.get_value_rank"], [8, "lincs.classification.Criterion.EnumeratedValues.get_value_rank"]], "has_gpu (in module lincs)": [[7, "lincs.has_gpu"], [8, "lincs.has_gpu"]], "high_profile_rank_indexes (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_rank_indexes"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_rank_indexes"]], "high_profile_ranks (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_ranks"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_ranks"]], "improve_profiles() (lincs.classification.improveprofileswithaccuracyheuristiconcpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.improve_profiles"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.improve_profiles"]], "improve_profiles() (lincs.classification.improveprofileswithaccuracyheuristicongpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.improve_profiles"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.improve_profiles"]], "improve_profiles() (lincs.classification.learnmrsortbyweightsprofilesbreed.profilesimprovementstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy.improve_profiles"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy.improve_profiles"]], "increasing (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.increasing"], [8, "lincs.classification.Criterion.PreferenceDirection.increasing"]], "initialize_profiles() (lincs.classification.initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion method)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.initialize_profiles"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.initialize_profiles"]], "initialize_profiles() (lincs.classification.learnmrsortbyweightsprofilesbreed.profilesinitializationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy.initialize_profiles"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy.initialize_profiles"]], "integer (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.integer"], [8, "lincs.classification.Criterion.ValueType.integer"]], "integer (lincs.classification.performance property)": [[7, "lincs.classification.Performance.integer"], [8, "lincs.classification.Performance.integer"]], "integer_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.integer_intervals"], [8, "lincs.classification.AcceptedValues.integer_intervals"]], "integer_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.integer_thresholds"], [8, "lincs.classification.AcceptedValues.integer_thresholds"]], "integer_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.integer_values"], [8, "lincs.classification.Criterion.integer_values"]], "intervals (lincs.classification.acceptedvalues.integerintervals property)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals.intervals"], [8, "lincs.classification.AcceptedValues.IntegerIntervals.intervals"]], "intervals (lincs.classification.acceptedvalues.kind property)": [[7, "lincs.classification.AcceptedValues.Kind.intervals"], [8, "lincs.classification.AcceptedValues.Kind.intervals"]], "intervals (lincs.classification.acceptedvalues.realintervals property)": [[7, "lincs.classification.AcceptedValues.RealIntervals.intervals"], [8, "lincs.classification.AcceptedValues.RealIntervals.intervals"]], "is_decreasing (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_decreasing"], [8, "lincs.classification.Criterion.IntegerValues.is_decreasing"]], "is_decreasing (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_decreasing"], [8, "lincs.classification.Criterion.RealValues.is_decreasing"]], "is_enumerated (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_enumerated"], [8, "lincs.classification.AcceptedValues.is_enumerated"]], "is_enumerated (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_enumerated"], [8, "lincs.classification.Criterion.is_enumerated"]], "is_enumerated (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_enumerated"], [8, "lincs.classification.Performance.is_enumerated"]], "is_increasing (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_increasing"], [8, "lincs.classification.Criterion.IntegerValues.is_increasing"]], "is_increasing (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_increasing"], [8, "lincs.classification.Criterion.RealValues.is_increasing"]], "is_integer (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_integer"], [8, "lincs.classification.AcceptedValues.is_integer"]], "is_integer (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_integer"], [8, "lincs.classification.Criterion.is_integer"]], "is_integer (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_integer"], [8, "lincs.classification.Performance.is_integer"]], "is_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_intervals"], [8, "lincs.classification.AcceptedValues.is_intervals"]], "is_real (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_real"], [8, "lincs.classification.AcceptedValues.is_real"]], "is_real (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_real"], [8, "lincs.classification.Criterion.is_real"]], "is_real (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_real"], [8, "lincs.classification.Performance.is_real"]], "is_roots (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.is_roots"], [8, "lincs.classification.SufficientCoalitions.is_roots"]], "is_single_peaked (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_single_peaked"], [8, "lincs.classification.Criterion.IntegerValues.is_single_peaked"]], "is_single_peaked (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_single_peaked"], [8, "lincs.classification.Criterion.RealValues.is_single_peaked"]], "is_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_thresholds"], [8, "lincs.classification.AcceptedValues.is_thresholds"]], "is_weights (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.is_weights"], [8, "lincs.classification.SufficientCoalitions.is_weights"]], "isotone (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.isotone"], [8, "lincs.classification.Criterion.PreferenceDirection.isotone"]], "iteration_index (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.iteration_index"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.iteration_index"]], "kind (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.kind"], [8, "lincs.classification.AcceptedValues.kind"]], "kind (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.kind"], [8, "lincs.classification.SufficientCoalitions.kind"]], "lincs": [[7, "module-lincs"], [8, "module-lincs"]], "lincs command line option": [[7, "cmdoption-lincs-version"]], "lincs-classification-accuracy command line option": [[7, "cmdoption-lincs-classification-accuracy-arg-MODEL"], [7, "cmdoption-lincs-classification-accuracy-arg-PROBLEM"], [7, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET"]], "lincs-classify command line option": [[7, "cmdoption-lincs-classify-arg-ALTERNATIVES"], [7, "cmdoption-lincs-classify-arg-MODEL"], [7, "cmdoption-lincs-classify-arg-PROBLEM"], [7, "cmdoption-lincs-classify-output-alternatives"]], "lincs-describe-classification-model command line option": [[7, "cmdoption-lincs-describe-classification-model-arg-MODEL"], [7, "cmdoption-lincs-describe-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-model-output-description"]], "lincs-describe-classification-problem command line option": [[7, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-problem-output-description"]], "lincs-generate-classification-model command line option": [[7, "cmdoption-lincs-generate-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classification-model-model-type"], [7, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum"], [7, "cmdoption-lincs-generate-classification-model-output-model"], [7, "cmdoption-lincs-generate-classification-model-random-seed"]], "lincs-generate-classification-problem command line option": [[7, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria"], [7, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT"], [7, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT"], [7, "cmdoption-lincs-generate-classification-problem-denormalized-min-max"], [7, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria"], [7, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria"], [7, "cmdoption-lincs-generate-classification-problem-output-problem"], [7, "cmdoption-lincs-generate-classification-problem-random-seed"]], "lincs-generate-classified-alternatives command line option": [[7, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classified-alternatives-max-imbalance"], [7, "cmdoption-lincs-generate-classified-alternatives-misclassified-count"], [7, "cmdoption-lincs-generate-classified-alternatives-output-alternatives"], [7, "cmdoption-lincs-generate-classified-alternatives-random-seed"]], "lincs-info-has-gpu command line option": [[7, "cmdoption-lincs-info-has-gpu-quiet"]], "lincs-learn-classification-model command line option": [[7, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET"], [7, "cmdoption-lincs-learn-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-learn-classification-model-model-type"], [7, "cmdoption-lincs-learn-classification-model-mrsort.strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.experimental-in-house-simplex.processor"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy"], [7, "cmdoption-lincs-learn-classification-model-output-model"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver"], [7, "cmdoption-lincs-learn-classification-model-ucncs.strategy"]], "lincs-visualize-classification-model command line option": [[7, "cmdoption-lincs-visualize-classification-model-alternatives"], [7, "cmdoption-lincs-visualize-classification-model-alternatives-count"], [7, "cmdoption-lincs-visualize-classification-model-arg-MODEL"], [7, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT"], [7, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM"]], "lincs.classification": [[7, "module-lincs.classification"], [8, "module-lincs.classification"]], "load() (lincs.classification.alternatives static method)": [[7, "lincs.classification.Alternatives.load"], [8, "lincs.classification.Alternatives.load"]], "load() (lincs.classification.model static method)": [[7, "lincs.classification.Model.load"], [8, "lincs.classification.Model.load"]], "load() (lincs.classification.problem static method)": [[7, "lincs.classification.Problem.load"], [8, "lincs.classification.Problem.load"]], "low_profile_ranks (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.low_profile_ranks"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.low_profile_ranks"]], "max_value (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.max_value"], [8, "lincs.classification.Criterion.IntegerValues.max_value"]], "max_value (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.max_value"], [8, "lincs.classification.Criterion.RealValues.max_value"]], "min_value (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.min_value"], [8, "lincs.classification.Criterion.IntegerValues.min_value"]], "min_value (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.min_value"], [8, "lincs.classification.Criterion.RealValues.min_value"]], "misclassify_alternatives() (in module lincs.classification)": [[7, "lincs.classification.misclassify_alternatives"], [8, "lincs.classification.misclassify_alternatives"]], "model_indexes (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.model_indexes"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.model_indexes"]], "models_count (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.models_count"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.models_count"]], "module": [[7, "module-lincs"], [7, "module-lincs.classification"], [8, "module-lincs"], [8, "module-lincs.classification"]], "name (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.name"], [8, "lincs.classification.Alternative.name"]], "name (lincs.classification.category property)": [[7, "lincs.classification.Category.name"], [8, "lincs.classification.Category.name"]], "name (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.name"], [8, "lincs.classification.Criterion.name"]], "optimize_weights() (lincs.classification.learnmrsortbyweightsprofilesbreed.weightsoptimizationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy.optimize_weights"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusingalglib method)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingAlglib.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusingglop method)": [[7, "lincs.classification.OptimizeWeightsUsingGlop.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingGlop.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusinginhousesimplexoncpu method)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnCpu.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusinginhousesimplexongpu method)": [[7, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingInHouseSimplexOnGpu.optimize_weights"]], "ordered_categories (lincs.classification.problem property)": [[7, "lincs.classification.Problem.ordered_categories"], [8, "lincs.classification.Problem.ordered_categories"]], "ordered_values (lincs.classification.criterion.enumeratedvalues property)": [[7, "lincs.classification.Criterion.EnumeratedValues.ordered_values"], [8, "lincs.classification.Criterion.EnumeratedValues.ordered_values"]], "perform() (lincs.classification.learnmrsortbyweightsprofilesbreed method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.perform"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.perform"]], "perform() (lincs.classification.learnucncsbymaxsatbycoalitionsusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.perform"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.perform"]], "perform() (lincs.classification.learnucncsbymaxsatbyseparationusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.perform"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.perform"]], "perform() (lincs.classification.learnucncsbysatbycoalitionsusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.perform"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.perform"]], "perform() (lincs.classification.learnucncsbysatbyseparationusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.perform"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.perform"]], "performance_ranks (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.performance_ranks"], [8, "lincs.classification.PreprocessedLearningSet.performance_ranks"]], "preference_direction (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.preference_direction"], [8, "lincs.classification.Criterion.IntegerValues.preference_direction"]], "preference_direction (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.preference_direction"], [8, "lincs.classification.Criterion.RealValues.preference_direction"]], "profile (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.profile"], [8, "lincs.classification.Alternative.profile"]], "random_generators (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.random_generators"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.random_generators"]], "real (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.real"], [8, "lincs.classification.Criterion.ValueType.real"]], "real (lincs.classification.performance property)": [[7, "lincs.classification.Performance.real"], [8, "lincs.classification.Performance.real"]], "real_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.real_intervals"], [8, "lincs.classification.AcceptedValues.real_intervals"]], "real_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.real_thresholds"], [8, "lincs.classification.AcceptedValues.real_thresholds"]], "real_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.real_values"], [8, "lincs.classification.Criterion.real_values"]], "roots (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.roots"], [8, "lincs.classification.SufficientCoalitions.roots"]], "roots (lincs.classification.sufficientcoalitions.kind property)": [[7, "lincs.classification.SufficientCoalitions.Kind.roots"], [8, "lincs.classification.SufficientCoalitions.Kind.roots"]], "single_peaked (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.single_peaked"], [8, "lincs.classification.Criterion.PreferenceDirection.single_peaked"]], "single_peaked (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.single_peaked"], [8, "lincs.classification.PreprocessedLearningSet.single_peaked"]], "sufficient_coalitions (lincs.classification.model property)": [[7, "lincs.classification.Model.sufficient_coalitions"], [8, "lincs.classification.Model.sufficient_coalitions"]], "terminate() (lincs.classification.learnmrsortbyweightsprofilesbreed.terminationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy.terminate"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy.terminate"]], "terminate() (lincs.classification.terminateafteriterations method)": [[7, "lincs.classification.TerminateAfterIterations.terminate"], [8, "lincs.classification.TerminateAfterIterations.terminate"]], "terminate() (lincs.classification.terminateafteriterationswithoutprogress method)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress.terminate"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress.terminate"]], "terminate() (lincs.classification.terminateafterseconds method)": [[7, "lincs.classification.TerminateAfterSeconds.terminate"], [8, "lincs.classification.TerminateAfterSeconds.terminate"]], "terminate() (lincs.classification.terminateaftersecondswithoutprogress method)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress.terminate"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress.terminate"]], "terminate() (lincs.classification.terminateataccuracy method)": [[7, "lincs.classification.TerminateAtAccuracy.terminate"], [8, "lincs.classification.TerminateAtAccuracy.terminate"]], "terminate() (lincs.classification.terminatewhenany method)": [[7, "lincs.classification.TerminateWhenAny.terminate"], [8, "lincs.classification.TerminateWhenAny.terminate"]], "thresholds (lincs.classification.acceptedvalues.enumeratedthresholds property)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds.thresholds"]], "thresholds (lincs.classification.acceptedvalues.integerthresholds property)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.IntegerThresholds.thresholds"]], "thresholds (lincs.classification.acceptedvalues.kind property)": [[7, "lincs.classification.AcceptedValues.Kind.thresholds"], [8, "lincs.classification.AcceptedValues.Kind.thresholds"]], "thresholds (lincs.classification.acceptedvalues.realthresholds property)": [[7, "lincs.classification.AcceptedValues.RealThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.RealThresholds.thresholds"]], "unchanged (lincs.classification.classificationresult property)": [[7, "lincs.classification.ClassificationResult.unchanged"], [8, "lincs.classification.ClassificationResult.unchanged"]], "upset_roots (lincs.classification.sufficientcoalitions.roots property)": [[7, "lincs.classification.SufficientCoalitions.Roots.upset_roots"], [8, "lincs.classification.SufficientCoalitions.Roots.upset_roots"]], "value (lincs.classification.performance.enumerated property)": [[7, "lincs.classification.Performance.Enumerated.value"], [8, "lincs.classification.Performance.Enumerated.value"]], "value (lincs.classification.performance.integer property)": [[7, "lincs.classification.Performance.Integer.value"], [8, "lincs.classification.Performance.Integer.value"]], "value (lincs.classification.performance.real property)": [[7, "lincs.classification.Performance.Real.value"], [8, "lincs.classification.Performance.Real.value"]], "value_type (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.value_type"], [8, "lincs.classification.AcceptedValues.value_type"]], "value_type (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.value_type"], [8, "lincs.classification.Criterion.value_type"]], "value_type (lincs.classification.performance property)": [[7, "lincs.classification.Performance.value_type"], [8, "lincs.classification.Performance.value_type"]], "values_counts (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.values_counts"], [8, "lincs.classification.PreprocessedLearningSet.values_counts"]], "visualize_model() (in module lincs.classification)": [[7, "lincs.classification.visualize_model"], [8, "lincs.classification.visualize_model"]], "weights (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.weights"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.weights"]], "weights (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.weights"], [8, "lincs.classification.SufficientCoalitions.weights"]], "weights (lincs.classification.sufficientcoalitions.kind property)": [[7, "lincs.classification.SufficientCoalitions.Kind.weights"], [8, "lincs.classification.SufficientCoalitions.Kind.weights"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["README", "changelog", "conceptual-overview", "contributor-guide", "get-started", "index", "python-api", "reference", "reference/lincs", "roadmap", "single-peaked", "user-guide"], "filenames": ["README.rst", "changelog.rst", "conceptual-overview.rst", "contributor-guide.rst", "get-started.rst", "index.rst", "python-api.md", "reference.rst", "reference/lincs.rst", "roadmap.rst", "single-peaked.rst", "user-guide.rst"], "titles": ["Contributors", "Changelog", "Conceptual overview", "Contributor guide", "Get started", "README", "The Python API", "Reference", "The lincs package", "Roadmap", "Single-peaked criteria", "User Guide"], "terms": {"learn": [0, 1, 3, 4, 5, 8, 9, 10], "infer": [0, 4, 5, 7], "non": [0, 4, 5, 7], "compensatori": [0, 4, 5, 7], "sort": [0, 1, 4, 5, 6, 7, 8, 9, 11], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "collect": [0, 5], "command": [0, 1, 3, 5, 11], "line": [0, 1, 3, 5, 11], "util": [0, 5], "through": [0, 3, 4, 5, 6], "python": [0, 2, 4, 5, 9, 11], "3": [0, 2, 4, 5, 6, 9, 11], "8": [0, 2, 5, 6], "api": [0, 3, 4, 5, 9, 11], "support": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11], "linux": [0, 1, 4, 5, 9, 11], "maco": [0, 1, 4, 5, 9, 11], "window": [0, 1, 4, 5, 9, 11], "gpu": [0, 1, 3, 5, 8, 9, 11], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "avail": [0, 5, 7, 8], "becaus": [0, 2, 3, 4, 5, 6, 11], "cuda": [0, 1, 2, 3, 5, 7, 8, 11], "On": [0, 1, 3, 5], "os": [0, 5], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11], "x86_64": [0, 4, 5], "cpu": [0, 1, 3, 4, 5, 7, 8, 11], "licens": [0, 1, 5], "under": [0, 3, 5], "gnu": [0, 5], "lesser": [0, 5], "gener": [0, 1, 2, 4, 5, 6, 8, 10], "public": [0, 1, 5], "v3": [0, 5], "0": [0, 2, 4, 5, 6, 7, 8, 10, 11], "indic": [0, 5, 11], "two": [0, 2, 5, 6, 10, 11], "copi": [0, 1, 5, 6], "we": [0, 2, 3, 4, 5, 6, 9, 10, 11], "kindli": [0, 4, 5], "ask": [0, 4, 5], "scientif": [0, 2, 5], "us": [0, 1, 2, 3, 5, 7, 8, 9], "cite": [0, 5], "here": [0, 2, 3, 5, 6, 9, 11], "instal": [0, 1, 3, 4, 5], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "packag": [0, 1, 3, 4, 5], "index": [0, 2, 3, 5, 6, 7, 8, 10], "Its": [0, 2, 5, 6, 7, 11], "document": [0, 1, 2, 4, 5, 6, 10, 11], "its": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "sourc": [0, 3, 4, 5, 6, 7], "code": [0, 1, 3, 5, 6, 7, 11], "github": [0, 1, 3, 4, 5, 7], "question": [0, 2, 5, 11], "remark": [0, 5, 11], "bug": [0, 1, 3, 5], "want": [0, 2, 3, 4, 5, 6, 10, 11], "contribut": [0, 4, 5, 9], "open": [0, 3, 5, 6], "an": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "issu": [0, 5], "discuss": [0, 1, 3, 5, 10], "you": [0, 2, 3, 4, 5, 6, 7, 10, 11], "should": [0, 2, 3, 4, 5, 6, 7, 8, 11], "probabl": [0, 4, 5], "take": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "look": [0, 2, 3, 4, 5, 10], "our": [0, 1, 2, 3, 4, 5, 6, 10, 11], "roadmap": [0, 1, 5], "first": [0, 1, 2, 4, 5, 6, 7, 10, 11], "mic": [0, 3, 5, 7], "research": [0, 5], "team": [0, 5], "centralesup\u00e9lec": [0, 5], "main": [0, 2, 3, 5, 7, 8], "author": [0, 5], "alphabet": [0, 5], "order": [0, 2, 4, 5, 6, 7, 8, 10, 11], "khale": [0, 2, 5], "belahc\u00e8n": [0, 2, 5], "domain": [0, 1, 5], "expertis": [0, 5], "laurent": [0, 5], "cabaret": [0, 5], "perform": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11], "optim": [0, 1, 3, 5, 6, 7, 8, 9, 11], "vincent": [0, 5], "jacqu": [0, 5], "engin": [0, 5], "mousseau": [0, 5], "wassila": [0, 5], "ouerdan": [0, 5], "abl": [0, 5], "without": [0, 1, 2, 3, 5, 7, 8, 11], "being": [0, 2, 4, 5, 7, 8], "specialist": [0, 5], "nc": [0, 1, 4, 5, 6, 8, 10, 11], "model": [0, 1, 2, 4, 5, 8, 9], "just": [0, 2, 3, 5, 6, 7, 8, 11], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11], "section": [0, 3, 4, 5, 6, 10, 11], "below": [0, 1, 4, 5, 6, 10], "design": [0, 4, 5, 10], "easi": [0, 3, 5, 6, 11], "extend": [0, 2, 5, 11], "even": [0, 3, 4, 5, 6, 11], "replac": [0, 1, 5], "part": [0, 1, 3, 5, 6, 11], "exist": [0, 2, 5, 11], "see": [0, 1, 3, 4, 5, 6, 7], "guid": [0, 1, 2, 4, 5, 6, 7, 10], "more": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11], "detail": [0, 1, 3, 4, 5, 6, 11], "depend": [0, 1, 4, 5, 10, 11], "your": [0, 2, 4, 5, 10, 11], "favorit": [0, 5], "approach": [0, 1, 2, 4, 5, 6, 7, 8, 11], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "either": [0, 5, 7, 11], "hand": [0, 5, 10, 11], "conceptu": [0, 4, 5, 11], "overview": [0, 4, 5, 11], "The": [0, 2, 3, 4, 5, 10, 11], "former": [0, 5], "show": [0, 4, 5, 7], "how": [0, 2, 4, 5, 6, 10, 11], "latter": [0, 5], "explain": [0, 3, 4, 5, 11], "concept": [0, 2, 4, 5, 11], "behind": [0, 5], "them": [0, 1, 2, 3, 4, 5, 6, 10, 11], "what": [0, 3, 5, 6, 7, 8], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "etc": [0, 3, 4, 5, 6, 7, 8, 9, 11], "If": [0, 2, 3, 4, 5, 6, 7, 10, 11], "doubt": [0, 5], "highli": [0, 5], "recommend": [0, 2, 3, 4, 5, 6, 11], "read": [0, 2, 3, 4, 5, 7, 8, 10, 11], "other": [0, 2, 3, 4, 5, 7, 8, 9, 11], "one": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "after": [0, 1, 3, 5, 6, 7, 8, 11], "onc": [0, 3, 4, 5], "ve": [0, 4, 5, 6, 10, 11], "bit": [0, 5, 6, 11], "up": [0, 2, 3, 4, 5, 6, 7, 10, 11], "user": [0, 1, 3, 4, 5, 6, 7, 10], "refer": [0, 1, 4, 5, 8, 10, 11], "semant": [0, 5], "must": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "declar": [0, 5], "accord": [0, 2, 5, 7, 8, 11], "semver": [0, 5], "constitut": [0, 2, 5], "exclus": [0, 5], "level": [0, 2, 3, 5, 7, 11], "consid": [0, 2, 3, 4, 5, 9], "chang": [0, 4, 5, 6, 7, 8, 9, 11], "backward": [0, 5, 11], "compat": [0, 5, 11], "client": [0, 5], "doesn": [0, 2, 4, 5], "t": [0, 2, 3, 4, 5, 6, 7, 8, 10], "need": [0, 3, 4, 5, 6, 10, 11], "modifi": [0, 3, 4, 5, 6, 11], "keep": [0, 1, 3, 4, 5, 6, 7, 8, 11], "work": [0, 1, 3, 4, 5, 9], "requir": [0, 1, 3, 4, 5, 7, 11], "recompil": [0, 5], "some": [0, 1, 2, 3, 5, 6, 11], "case": [0, 3, 5, 6, 10, 11], "futur": [0, 4, 5], "might": [0, 2, 3, 5, 6], "behavior": [0, 1, 5, 6, 11], "especi": [0, 5, 6], "regard": [0, 5], "pseudo": [0, 1, 2, 4, 5, 6, 7, 8, 11], "random": [0, 1, 2, 4, 5, 6, 7, 8, 10], "note": [0, 1, 2, 3, 4, 5, 6, 10, 11], "plan": [0, 4, 5, 9], "make": [0, 1, 3, 4, 5, 6, 7, 11], "c": [0, 1, 5, 6, 9, 10, 11], "librari": [0, 3, 5, 6, 7, 8], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "do": [0, 2, 4, 5, 11], "ll": [0, 2, 3, 4, 5, 6, 10, 11], "add": [0, 1, 4, 5, 6, 7, 10, 11], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "interfac": [0, 1, 3, 5, 6, 9], "In": [0, 1, 2, 5, 11], "mean": [0, 5, 6, 10, 11], "time": [0, 1, 2, 3, 5, 6, 7, 9, 11], "chose": [0, 5], "wai": [0, 2, 3, 4, 5, 6, 7, 10, 11], "expect": [0, 2, 3, 5, 6, 11], "unanticip": [0, 5], "option": [0, 1, 3, 4, 5, 6, 7, 10], "argument": [0, 3, 5, 6, 7], "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "releas": [0, 1, 5], "find": [0, 2, 3, 5, 7, 8, 11], "better": [0, 2, 4, 5, 6, 7, 8], "most": [0, 2, 3, 4, 5, 6, 7, 11], "advic": [0, 5], "write": [0, 3, 5, 6, 7, 8], "explicit": [0, 1, 3, 5, 6, 11], "where": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "matter": [0, 5, 6], "reli": [0, 3, 5, 11], "implicit": [0, 5], "potenti": [0, 5], "improv": [0, 5, 6, 7, 8, 11], "same": [0, 2, 3, 4, 5, 6, 7, 8, 11], "specif": [0, 3, 5, 11], "appli": [0, 2, 3, 5, 11], "produc": [0, 1, 2, 5, 6, 11], "lead": [0, 5, 11], "allow": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11], "flexibl": [0, 1, 5, 6], "input": [0, 1, 5, 11], "both": [0, 3, 4, 5, 6, 10], "old": [0, 3, 5], "But": [0, 2, 5, 11], "script": [0, 3, 5], "incompat": [0, 5], "To": [0, 2, 3, 4, 5, 6, 10, 11], "solv": [0, 1, 5, 7, 8, 11], "impos": [0, 5], "addit": [0, 2, 5, 10, 11], "constraint": [0, 2, 5, 10], "featur": [0, 1, 3, 5, 9, 11], "motiv": [0, 3, 5], "That": [0, 3, 4, 5, 6, 11], "know": [0, 3, 5, 6, 11], "alreadi": [0, 2, 5, 11], "so": [0, 1, 2, 4, 5, 6, 7, 8, 11], "adapt": [0, 1, 5], "remov": 1, "everyth": [1, 3, 7, 8, 11], "relat": [1, 7, 8, 11], "hous": 1, "simplex": 1, "upgrad": 1, "OR": [1, 11], "tool": [1, 3, 4, 7, 11], "slightli": [1, 2, 6], "wpb": [1, 2, 3, 6, 7, 8, 9], "weight": [1, 2, 3, 4, 6, 7, 8, 9], "befor": [1, 2, 3, 6, 7, 8, 10, 11], "evalu": [1, 2], "return": [1, 6, 7, 8], "break": 1, "paramet": [1, 2, 3, 7, 8, 10], "weights_optimization_strategi": [1, 6, 7, 8], "reinitializeleastaccur": [1, 6, 7, 8], "breed": [1, 3, 4, 6, 7, 8], "strategi": [1, 4, 7, 8, 10], "fix": [1, 3, 7, 11], "previou": [1, 2, 3, 10, 11], "point": [1, 6], "alwai": [1, 2, 11], "best": [1, 2, 3, 4, 6, 7, 8, 10, 11], "dure": [1, 6], "universal2": 1, "wheel": [1, 3, 4, 11], "actual": [1, 2, 3, 6, 7, 8, 10, 11], "run": [1, 4, 6, 7, 8], "m1": [1, 9], "mac": 1, "still": [1, 2, 3, 6], "13": [1, 6, 9], "implement": [1, 2, 3, 6, 9, 11], "algorithm": [1, 2, 3, 6, 7, 8], "lp": [1, 3], "method": [1, 2, 6, 7, 8, 11], "expos": [1, 3], "classif": [1, 3, 4, 10], "optimizeweightsusinginhousesimplexoncpu": 1, "ongpu": 1, "mrsort": [1, 3, 4, 7, 11], "profil": [1, 2, 3, 4, 6, 7, 8, 10], "linear": [1, 3, 4, 7, 8, 11], "program": [1, 2, 3, 4, 7, 8, 11], "solver": [1, 4, 7, 11], "experiment": 1, "processor": [1, 4, 7, 9, 11], "veri": [1, 3, 11], "unsatisfactori": 1, "result": [1, 2, 3, 4, 6, 7, 11], "now": [1, 2, 3, 6, 11], "drop": 1, "action": [1, 4, 10], "anymor": 1, "major": [1, 3], "singl": [1, 2, 3, 6, 7, 8, 9, 11], "peak": [1, 2, 7, 8, 9, 11], "criteria": [1, 2, 4, 6, 7, 8, 9], "problem": [1, 2, 4, 8], "ha": [1, 2, 3, 4, 6, 8, 10, 11], "new": [1, 2, 4, 6, 11], "file": [1, 2, 3, 4, 6, 8], "format": [1, 2, 4, 6, 8], "valu": [1, 2, 3, 4, 6, 7, 8, 9, 10], "preference_direct": [1, 4, 6, 7, 8, 10, 11], "possibl": [1, 2, 3, 6, 9, 10], "accepted_valu": [1, 4, 6, 7, 8, 10, 11], "kind": [1, 3, 4, 6, 7, 8, 10, 11], "interv": [1, 2, 6, 7, 8, 10, 11], "20": [1, 6, 10, 11], "80": [1, 6, 10], "40": [1, 4, 6, 10], "60": [1, 4, 6, 7, 8, 10], "criterion": [1, 2, 4, 6, 7, 8, 10, 11], "preferencedirect": [1, 6, 7, 8, 10], "single_peak": [1, 7, 8, 10], "typic": [1, 2], "lc": [1, 6, 10], "generate_problem": [1, 6, 7, 8, 10], "allowed_preference_direct": [1, 7, 8, 10], "acceptedvalu": [1, 6, 7, 8, 10], "learnmrsortbyweightsprofilesbre": [1, 3, 6, 7, 8], "explicitli": [1, 3, 11], "opt": 1, "call": [1, 2, 6, 7, 8, 10, 11], "base": [1, 2, 3, 4, 6, 7, 8, 9, 10], "class": [1, 3, 6, 7, 8, 10], "constructor": [1, 7, 8, 10], "supports_single_peaked_criteria": [1, 10], "true": [1, 6, 7, 8, 10], "all": [1, 2, 4, 6, 7, 8, 11], "human": [1, 4, 7, 8], "readabl": [1, 4, 7, 8], "output": [1, 4, 7, 11], "describ": [1, 2, 3, 4, 6, 8, 10, 11], "accommod": 1, "fail": [1, 2, 6, 7, 8, 10], "let": [1, 2, 6, 11], "threshold": [1, 2, 4, 6, 7, 8, 10, 11], "unreach": 1, "found": [1, 3, 7, 11], "real": [1, 2, 4, 6, 7, 8, 10, 11], "life": [1, 2], "asa": 1, "data": [1, 3, 4, 6, 7, 8, 10], "last": [1, 2, 3, 7, 11], "item": [1, 7, 8, 9, 11], "list": [1, 3, 6, 7, 8, 9, 10, 11], "null": [1, 3, 7], "none": [1, 2, 6, 7, 8], "runtim": [1, 3], "check": [1, 2, 3, 7, 11], "split": 1, "learningdata": 1, "preprocessedlearningset": [1, 7, 8, 10], "modelsbeinglearn": [1, 7, 8, 10], "renam": [1, 11], "urbg": 1, "random_gener": [1, 6, 7, 8], "establish": [1, 11], "second": [1, 7, 11], "tier": 1, "stabl": 1, "introduct": 1, "download": [1, 4, 6], "jupyt": [1, 4, 6], "notebook": [1, 3, 4, 6], "complet": 1, "legend": 1, "color": 1, "text": [1, 7], "annot": 1, "graduat": 1, "vertic": [1, 6], "axi": 1, "per": [1, 3, 4, 7, 11], "imag": [1, 3, 4, 7], "discret": 1, "enumer": [1, 2, 6, 7, 8, 10, 11], "integ": [1, 2, 6, 7, 8, 10, 11], "homogen": 1, "post": 1, "process": [1, 7, 8, 11], "numer": [1, 2, 4, 6, 7, 8, 11], "sat": [1, 2, 3, 7, 8], "achiev": 1, "accuraci": [1, 4, 6, 8], "valid": [1, 7, 11], "e": [1, 2, 3, 6, 7, 8, 10, 11], "g": [1, 2, 3, 6, 7, 8, 10, 11], "consist": [1, 2, 3, 11], "between": [1, 2, 3, 4, 6, 7, 11], "altern": [1, 2, 4, 8, 10], "build": [1, 3, 4, 6, 10], "docker": [1, 3, 4], "sinc": [1, 3], "get": [1, 2, 3, 6, 7, 8, 10], "start": [1, 2, 3, 6, 7, 10, 11], "deepcopi": [1, 6], "o": 1, "object": [1, 7, 8], "pickl": 1, "terminateafteriter": [1, 6, 7, 8], "terminateafteriterationswithoutprogress": [1, 7, 8], "were": [1, 2, 7, 8, 11], "too": [1, 2, 3, 11], "mani": [1, 2, 4, 7, 11], "iter": [1, 3, 4, 6, 7, 8, 11], "evalmaxsat": [1, 7], "help": [1, 2, 3, 4, 11], "ucnc": [1, 7, 11], "max": [1, 2, 3, 6, 7, 8, 10, 11], "separ": [1, 2, 3, 7, 8, 11], "eval": [1, 7], "nb": [1, 7], "minim": [1, 4, 7], "thread": [1, 3, 7], "timeout": [1, 7], "fast": [1, 7], "coef": [1, 7], "coalit": [1, 2, 4, 6, 7, 8, 10], "It": [1, 2, 3, 4, 6, 7, 8, 10, 11], "third": [1, 6, 11], "candid": 1, "technic": [1, 11], "refactor": [1, 3], "category_correl": 1, "grow": 1, "prefer": [1, 2, 4, 6, 7, 8, 9, 10, 11], "direct": [1, 2, 4, 6, 7, 8, 10, 11], "increas": [1, 4, 6, 7, 8, 11], "categori": [1, 2, 4, 6, 7, 8, 10], "attribut": [1, 2, 6, 7, 8, 10, 11], "ordered_categori": [1, 4, 6, 7, 8, 11], "name": [1, 4, 6, 7, 8, 9, 10, 11], "worst": [1, 2, 4, 6, 7, 8, 10, 11], "intermedi": [1, 2, 4, 6, 7, 8, 9, 10, 11], "n": [1, 2, 6, 10], "isoton": [1, 7, 8], "resp": [1, 11], "antiton": [1, 7, 8], "synonym": [1, 7, 8], "decreas": [1, 2, 6, 7, 8, 11], "descript": [1, 2, 4, 6, 7, 8, 10, 11], "comment": [1, 7], "about": [1, 3, 4, 6, 7, 8], "termin": [1, 3, 6, 7, 8], "condit": [1, 11], "metadata": [1, 7, 11], "yaml": [1, 2, 4, 7, 8, 11], "previous": [1, 3], "those": [1, 2, 3, 4, 7, 11], "provid": [1, 2, 3, 4, 6, 7, 8], "integr": [1, 3, 9], "test": [1, 3, 4, 6], "extern": [1, 4, 9], "manag": [1, 4], "error": [1, 7, 8], "ubuntu": [1, 4], "23": 1, "term": 1, "correl": 1, "wa": [1, 2, 3, 4, 6, 7, 8, 11], "instead": [1, 2, 3, 6, 7, 11], "accept": [1, 4, 6, 7, 8, 10], "json": [1, 7, 8, 11], "schema": [1, 7, 8, 11], "classifi": [1, 4, 8], "end": [1, 4, 6], "min": [1, 2, 6, 7, 8, 11], "load": [1, 6, 7, 8], "reproduct": [1, 4, 11], "pre": [1, 2, 7, 8], "set": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11], "each": [1, 2, 3, 4, 6, 7, 8, 10, 11], "have": [1, 2, 3, 4, 6, 7, 10, 11], "rang": [1, 2, 6, 7, 8, 11], "simplif": [1, 2], "sufficientcoalit": [1, 6, 7, 8], "upset_root": [1, 7, 8, 11], "imbal": [1, 7, 11], "cleaner": 1, "tight": 1, "print": [1, 6, 7, 11], "number": [1, 2, 3, 4, 6, 7, 8, 11], "displai": [1, 11], "variou": 1, "compil": [1, 3, 7], "openmp": [1, 2], "distribut": 1, "binari": [1, 3, 4, 11], "durat": [1, 2, 7, 8, 11], "chrone": [1, 3], "verbos": [1, 6, 7, 11], "mode": 1, "pernici": 1, "memori": [1, 2, 6], "bugfix": 1, "sure": [1, 7, 11], "built": [1, 3, 7, 8, 11], "nvcc": [1, 3], "info": [1, 4, 11], "hopefulli": [1, 6], "correct": [1, 3, 11], "anchor": [1, 11], "alias": 1, "limit": [1, 11], "repetit": [1, 11], "u": [1, 3, 11], "textsf": [1, 11], "specifi": [1, 2, 3, 4, 6, 7, 8, 10, 11], "minimum": [1, 2, 7, 8], "maximum": [1, 2, 7, 8], "synthet": [1, 3, 4, 6, 7], "denorm": [1, 7, 11], "state": [1, 6], "re": [1, 2, 3, 4, 6, 7, 8, 11], "enough": [1, 2, 3, 4], "decim": 1, "store": [1, 2, 6], "float": [1, 6, 7, 8], "avoid": [1, 3, 10, 11], "ani": [1, 3, 4, 6, 10, 11], "loss": 1, "precis": 1, "log": [1, 6], "final": [1, 2, 4, 6, 11], "buggi": 1, "misclassify_altern": [1, 7, 8], "synthes": 1, "nois": [1, 11], "expend": 1, "suffici": [1, 2, 4, 6, 7, 8, 10], "root": [1, 3, 7, 8, 11], "manylinux_2_31": 1, "flow": 1, "arrai": [1, 7], "scalar": 1, "yet": [1, 2, 4, 11], "though": [1, 11], "control": [1, 6, 11], "over": [1, 6], "expans": 1, "except": [1, 7, 8, 10], "develop": [1, 2], "machin": [1, 3, 11], "never": 1, "properli": 1, "heurist": [1, 2, 4, 6, 7, 11], "introduc": [1, 2, 3, 6, 11], "alglib": [1, 3, 7, 8, 11], "everywher": [1, 3], "lgplv3": 1, "miss": [1, 4], "header": [1, 7, 11], "mr": [1, 4, 6, 7, 8, 9, 11], "sobri": [1, 2, 7, 8], "sum": [1, 2, 7, 11], "pypi": [1, 3, 4], "websit": 1, "kick": 1, "off": 1, "effort": [1, 11], "quit": [1, 2, 3, 4, 6, 11], "nice": [1, 10], "readm": [1, 3, 11], "initi": [1, 4, 6, 7, 8, 11], "littl": 1, "function": [1, 2, 6, 10], "denot": 2, "b": [2, 6, 10, 11], "includ": [2, 4, 6, 11], "often": [2, 3, 4, 11], "zero": [2, 6, 11], "choic": [2, 3], "match": 2, "convent": 2, "languag": [2, 3, 6], "close": [2, 4, 10], "For": [2, 3, 4, 6, 7, 8, 10, 11], "4": [2, 4, 6, 11], "2": [2, 4, 6, 7, 8, 11], "contain": [2, 3, 4, 6, 7, 8, 10, 11], "element": [2, 11], "given": [2, 6, 7, 8, 11], "subset": [2, 10, 11], "power": [2, 6], "mathcal": [2, 10], "p": [2, 10], "linc": [2, 3, 6, 10], "focus": [2, 10], "task": [2, 3], "possibli": 2, "assign": [2, 6, 7, 8, 10], "itself": [2, 4, 6, 7], "vocabulari": 2, "voluntarili": 2, "abstract": [2, 3, 6, 7, 8], "wide": 2, "applic": 2, "concret": [2, 3], "sai": 2, "scholarship": 2, "student": 2, "academ": 2, "fund": 2, "polici": 2, "grade": [2, 6], "And": [2, 3, 4, 6, 11], "favor": [2, 11], "younger": 2, "come": [2, 6, 11], "modest": 2, "background": 2, "differ": [2, 3, 4, 6, 7, 8, 10, 11], "topic": 2, "ag": 2, "famili": 2, "incom": 2, "could": [2, 3, 11], "triag": 2, "patient": [2, 10], "hospit": 2, "vital": 2, "sign": 2, "A": [2, 3, 6, 7, 8, 10, 11], "defin": [2, 3, 6, 7, 8, 10, 11], "mathbb": 2, "geq": 2, "x_i": [2, 10], "_": 2, "total": [2, 11], "preccurlyeq_i": [2, 10], "h": [2, 10], "prec": 2, "confus": 2, "expon": 2, "cartesian": [2, 3], "product": [2, 3], "x": [2, 10], "prod_": 2, "x_0": [2, 10], "x_": [2, 10], "assumpt": 2, "happen": [2, 3, 9], "natur": [2, 3], "well": [2, 3, 6, 10], "inform": [2, 4, 7, 8, 10], "csv": [2, 4, 7, 8, 11], "autom": 2, "train": [2, 4, 6, 7], "ground": 2, "truth": [2, 7, 11], "phase": [2, 7], "f": [2, 6, 10, 11], "rightarrow": 2, "parametr": [2, 10], "form": [2, 3, 6, 7, 8, 11], "fit": [2, 3, 10], "higher": [2, 4, 6, 7, 8, 10, 11], "sometim": 2, "import": [2, 3, 6, 11], "compens": 2, "captur": [2, 11], "idea": [2, 3], "There": [2, 4, 6], "share": [2, 6, 7, 8], "vari": 2, "deni": 2, "bouyssou": 2, "thierri": 2, "marchant": 2, "articl": 2, "axiomat": 2, "noncompensatori": 2, "mcdm": 2, "ii": 2, "than": [2, 3, 6, 9, 11], "lower": [2, 7, 8, 10, 11], "good": [2, 3, 6, 10, 11], "abov": [2, 3, 6, 11], "sever": [2, 3, 6, 10, 11], "reach": [2, 7, 8, 11], "addition": 2, "h_0": 2, "h_": 2, "subseteq": [2, 10], "With": [2, 6, 10, 11], "h_i": [2, 10], "_i": [2, 10], "inclus": [2, 10], "imbric": [2, 10], "supseteq": [2, 10], "which": [2, 3, 4, 6, 10, 11], "default": [2, 4, 7, 10, 11], "mapsto": [2, 10], "cup": [2, 10], "succcurlyeq_i": 2, "simplifi": [2, 6], "mai": [2, 3, 4, 10, 11], "equival": [2, 10], "somewhat": [2, 3, 11], "simpl": [2, 4, 6, 11], "ensur": [2, 4, 7, 11], "behav": [2, 4], "intuit": 2, "ness": 2, "few": [2, 3, 4, 6, 11], "upper": [2, 4, 6, 11], "select": [2, 3, 9, 11], "ones": [2, 11], "doe": [2, 3, 10, 11], "handl": [2, 4], "like": [2, 3, 4, 7, 8, 9, 10, 11], "blood": [2, 10], "pressur": [2, 10], "extrem": [2, 9, 10], "These": [2, 11], "continu": 2, "three": [2, 11], "partial": [2, 4], "full": [2, 3, 6], "further": [2, 6], "thing": [2, 3, 6], "sacrif": 2, "interest": [2, 6], "four": 2, "math": [2, 6], "m": [2, 4], "physic": [2, 6, 11], "literatur": [2, 6], "l": 2, "histori": 2, "normal": [2, 4, 7, 8], "forget": 2, "clariti": 2, "x_m": 2, "x_p": 2, "x_l": 2, "x_h": 2, "1_m": 2, "1_p": 2, "1_l": 2, "1_h": 2, "6": [2, 6, 10, 11], "55": 2, "7": [2, 6, 11], "5": [2, 4, 6, 7, 10, 11], "2_m": 2, "2_p": 2, "2_l": 2, "2_h": 2, "75": 2, "9": [2, 4, 6, 7, 11], "65": 2, "satisfi": [2, 7], "1_i": 2, "2_i": 2, "repres": [2, 7], "lattic": 2, "arrow": 2, "materi": 2, "relationship": 2, "black": 2, "grei": 2, "els": [2, 3], "ye": 2, "unus": [2, 10], "85": 2, "No": [2, 6], "d": [2, 3, 6, 11], "prose": 2, "formul": 2, "who": 2, "excel": 2, "least": [2, 3, 4, 6, 7, 11], "subject": 2, "literari": 2, "back": [2, 4], "common": 2, "less": [2, 3, 6, 10], "computation": [2, 3], "simpler": [2, 7, 8], "ne": 2, "agn\u00e8": 2, "leroi": 2, "et": 2, "al": 2, "multipl": [2, 3, 11], "w_i": 2, "sum_": 2, "again": [2, 10], "answer": 2, "try": [2, 3, 4, 6, 7, 11], "w_m": 2, "w_p": 2, "w_l": 2, "w_h": 2, "give": [2, 3, 6, 7, 8, 11], "16": [2, 4, 6], "equat": 2, "among": [2, 11], "lt": 2, "notin": 2, "ge": 2, "solut": 2, "By": [2, 3, 7, 11], "contrast": 2, "express": 2, "greater": [2, 11], "fewer": 2, "success": [2, 11], "measur": [2, 3, 4], "metric": 2, "quicker": 2, "portion": [2, 4, 7, 11], "world": [2, 4, 7], "noisi": 2, "inconsist": 2, "prevent": 2, "imposs": 2, "100": [2, 4, 6, 10, 11], "summari": 2, "failur": [2, 3], "quickest": 2, "noth": [2, 3], "goal": [2, 6], "far": [2, 6, 7, 8, 11], "longest": 2, "simpli": [2, 6, 10, 11], "anyth": [2, 3, 6, 7, 8], "configur": [2, 3], "long": [2, 3, 4], "comput": [2, 4, 7], "resourc": 2, "longer": [2, 3], "practic": 2, "ali": 2, "tlili": 2, "effici": 2, "maxsat": [2, 7], "conveni": 2, "gather": 2, "place": [2, 3], "olivi": [2, 7, 8], "hi": 2, "ph": 2, "thesi": [2, 7, 8], "originali": 2, "emma": 2, "dixneuf": 2, "thibault": 2, "monsel": 2, "thoma": 2, "vindard": 2, "sequenti": 2, "parallel": [2, 6, 11], "known": [2, 4, 6, 7, 8], "origin": [2, 4, 11], "compar": [2, 3, 6], "qualiti": 2, "clean": 2, "haven": [2, 4], "done": [2, 3, 4, 6], "strongli": [3, 11], "familiar": [3, 4, 6], "rest": 3, "project": [3, 4, 9], "also": [3, 4, 6, 10, 11], "exampl": [3, 6, 11], "much": [3, 11], "talk": 3, "pleas": [3, 11], "awar": [3, 6], "progress": [3, 6, 7, 8, 11], "exercis": 3, "clairvoy": 3, "predict": 3, "got": 3, "wrong": 3, "hesit": 3, "contact": 3, "begin": [3, 10, 11], "scale": [3, 6, 11], "minor": 3, "typo": [3, 6], "web": [3, 9], "spare": 3, "clone": 3, "repositori": 3, "think": 3, "entir": [3, 11], "architectur": 3, "deserv": 3, "rewrit": 3, "http": [3, 7], "com": 3, "lab": [3, 7], "don": [3, 4, 6, 7, 10], "spend": [3, 9], "someth": [3, 4, 6], "reject": 3, "reason": [3, 6, 11], "appar": 3, "moment": 3, "yourself": [3, 6], "tell": [3, 4, 6, 11], "report": 3, "recogn": 3, "intimid": 3, "everyon": 3, "experi": [3, 6, 11], "fluenci": 3, "willing": 3, "feedback": [3, 11], "assur": 3, "construct": 3, "manner": [3, 11], "similar": [3, 11], "inspir": [3, 6], "git": 3, "grep": 3, "theoldth": 3, "thenewth": 3, "blame": 3, "identifi": [3, 6, 11], "commit": 3, "recent": [3, 4], "version": [3, 4, 7, 8, 11], "bash": 3, "nvidia": 3, "loop": [3, 11], "repeat": [3, 11], "cach": 3, "subsequ": 3, "faster": 3, "unit": 3, "speed": 3, "eventu": 3, "maintain": 3, "pull": 3, "request": 3, "doc": 3, "io": [3, 6, 7], "page": 3, "push": 3, "impact": [3, 11], "save": 3, "submit": 3, "python_vers": 3, "space": 3, "coverag": 3, "stop": [3, 7, 8, 11], "right": 3, "impli": [3, 11], "skip": [3, 11], "glop": [3, 4, 7, 8, 11], "cpp": 3, "unchang": [3, 6, 7, 8], "diff": [3, 4], "forbid": [3, 7, 11], "automat": 3, "warn": 3, "doctest": 3, "doctest_opt": 3, "pass": [3, 6, 7, 11], "verbatim": 3, "arg": [3, 4, 7, 8], "dry": 3, "patch": 3, "alpha": 3, "beta": 3, "rc": 3, "thin": 3, "wrapper": 3, "basic": [3, 4, 11], "rst": 3, "setup": 3, "py": 3, "manifest": 3, "licenc": 3, "local": 3, "render": 3, "current": [3, 6, 7, 8, 10, 11], "dev": 3, "accompani": 3, "pattern": [3, 11], "inject": 3, "easili": 3, "switch": 3, "particularli": 3, "variant": 3, "benchmark": 3, "perspect": 3, "distinct": [3, 6], "recurs": 3, "piec": 3, "weightsoptimizationstrategi": [3, 6, 7, 8], "profilesimprovementstrategi": [3, 6, 7, 8], "improveprofileswithaccuracyheuristiconcpu": [3, 6, 7, 8], "improveprofileswithaccuracyheuristicongpu": [3, 7, 8], "costli": 3, "cost": 3, "although": 3, "care": [3, 6], "thousand": 3, "ok": 3, "polymorph": 3, "frequent": 3, "liblinc": [3, 6], "hpp": 3, "linearprogram": 3, "One": 3, "would": [3, 6, 11], "neg": 3, "consequ": 3, "instanti": 3, "explod": 3, "combinatori": 3, "whole": [3, 6, 10], "great": 3, "mainten": 3, "instanci": 3, "modul": 3, "access": [3, 6, 7, 8, 10], "custom": 3, "side": [3, 6], "restructuredtext": 3, "sphinx": 3, "extent": 3, "click": 3, "edit": [3, 4], "html": [3, 7], "browser": 3, "anticip": [3, 11], "2024": [3, 9], "famou": 3, "word": 3, "mind": [3, 4], "written": [3, 6, 7, 11], "partli": 3, "usabl": 3, "arguabl": [3, 6, 11], "easier": [3, 4], "core": [3, 11], "intens": 3, "interpret": 3, "multi": 3, "suggest": 3, "someon": 3, "becom": 3, "counter": 3, "visual": [3, 4, 8, 10], "breedingstrategi": [3, 6, 7, 8], "reduc": [3, 11], "high": [3, 7, 8, 10, 11], "optimizeweightsusingglop": [3, 6, 7, 8], "spent": [3, 7], "locat": 3, "rare": [3, 6], "signific": [3, 9], "advertis": 3, "boil": 3, "down": [3, 6], "effect": [3, 4, 6, 11], "unless": 3, "clear": 3, "bilion": 3, "todo": 3, "later": [3, 10], "step": [3, 6, 7, 8], "mimic": 3, "As": [3, 6, 11], "via": 3, "duck": 3, "type": [3, 4, 6, 7, 8, 11], "dockerfil": 3, "foobar": 3, "typedef": 3, "liblincs_modul": 3, "__init__": [3, 6, 7, 8], "command_line_interfac": 3, "txt": 3, "accordingli": 3, "procedur": 3, "0a790ef": 3, "modif": 3, "had": 3, "been": [3, 6], "restructur": 3, "besid": 3, "pip": 4, "system": 4, "virtual": 4, "environ": 4, "venv": 4, "directli": [4, 7, 10], "pipx": 4, "enforc": 4, "refus": 4, "rm": 4, "jacquev6": 4, "latest": 4, "platform": 4, "cover": [4, 6], "lot": 4, "realli": 4, "go": [4, 6], "rout": 4, "workflow": 4, "mainli": 4, "easiest": 4, "usag": [4, 7, 8], "mcda": [4, 7], "exit": [4, 7], "messag": [4, 10], "graph": [4, 7, 11], "organ": [4, 10], "sub": 4, "yml": [4, 6, 11], "0a6": [4, 11], "seed": [4, 6, 7, 11], "format_vers": [4, 6, 7, 11], "1": [4, 6, 7, 8, 10, 11], "value_typ": [4, 6, 7, 8, 10, 11], "min_valu": [4, 6, 7, 8, 10, 11], "max_valu": [4, 6, 7, 8, 10, 11], "maxim": [4, 7], "explan": 4, "particular": [4, 6], "Then": [4, 6, 11], "41": [4, 6], "255905151": [4, 6], "676961303": [4, 6], "0551739037": [4, 6], "324553937": [4, 6], "162252158": [4, 6], "673279881": [4, 6], "0526000932": [4, 6], "598555863": [4, 6], "sufficient_coalit": [4, 6, 7, 8, 11], "criterion_weight": [4, 6, 7, 8, 11], "147771254": [4, 6], "618687689": [4, 6], "406786472": [4, 6], "0960085914": [4, 6], "png": [4, 7, 11], "evolv": [4, 11], "wether": [4, 11], "uc": [4, 6, 7, 8, 11], "k": [4, 6, 9], "boundari": [4, 6, 7, 8, 11], "associ": [4, 6, 7, 8, 11], "15": [4, 6, 11], "62": [4, 6], "10": [4, 6, 11], "whose": [4, 6], "26": [4, 6], "06": [4, 6], "05": [4, 6], "68": [4, 6], "32": [4, 6], "67": [4, 6], "1000": [4, 6], "42": [4, 6], "misclassifi": [4, 7, 8, 11], "count": [4, 6, 7, 8, 11], "37454012": [4, 6], "796543002": [4, 6], "95071429": [4, 6], "183434784": [4, 6], "731993914": [4, 6], "779690981": [4, 6], "598658502": [4, 6], "596850157": [4, 6], "156018645": [4, 6], "445832759": [4, 6], "15599452": [4, 6], "0999749228": [4, 6], "0580836125": [4, 6], "4592489": [4, 6], "866176128": [4, 6], "333708614": [4, 6], "601114988": [4, 6], "14286682": [4, 6], "708072603": [4, 6], "650888503": [4, 6], "five": 4, "structur": [4, 7, 11], "reconstitut": 4, "43": [4, 6], "discrimin": [4, 7], "reiniti": [4, 7, 11], "accur": [4, 7, 11], "target": [4, 7, 11], "339874953": [4, 6], "421424538": [4, 6], "0556534864": [4, 6, 11], "326433569": [4, 6, 11], "162616938": [4, 6, 11], "67343241": [4, 6, 11], "0878681168": [4, 6], "252649099": [4, 6], "01327896e": [4, 6], "999998987": [4, 6], "howev": [4, 6, 10], "reclassifi": 4, "3000": [4, 6], "522c522": 4, "520": 4, "617141366": 4, "326259822": 4, "901315808": 4, "460642993": 4, "615c615": 4, "613": 4, "547554553": 4, "0552174859": 4, "690436542": 4, "511019647": 4, "2596c2596": 4, "2594": 4, "234433308": 4, "780464768": 4, "162389532": 4, "622178912": 4, "2610c2610": 4, "2608": 4, "881479025": 4, "055544015": 4, "82936728": 4, "853676081": 4, "2996": [4, 6], "demonstr": 4, "comfort": 4, "albeit": 6, "complex": 6, "exactli": [6, 7, 8, 11], "criteria_count": [6, 7, 8], "categories_count": [6, 7, 8], "random_se": [6, 7, 8], "mandatori": 6, "reproduc": [6, 11], "randrang": 6, "30": 6, "sy": 6, "dump": [6, 7, 8], "stdout": 6, "string": [6, 7, 8, 11], "join": [6, 11], "describe_problem": [6, 7, 8], "generate_mrsort_model": [6, 7, 8], "matplotlib": [6, 7, 8], "pyplot": 6, "plt": 6, "ax": [6, 7, 8], "subplot": 6, "figsiz": 6, "layout": 6, "constrain": 6, "visualize_model": [6, 7, 8], "describe_model": [6, 7, 8], "learning_set": [6, 7, 8], "generate_altern": [6, 7, 8], "alternatives_count": [6, 7, 8], "stringio": 6, "getvalu": 6, "splitlin": 6, "preprocessed_learning_set": [6, 7, 8, 10], "models_being_learn": [6, 7, 8, 10], "models_count": [6, 7, 8], "profiles_initialization_strategi": [6, 7, 8], "initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion": [6, 7, 8], "profiles_improvement_strategi": [6, 7, 8], "breeding_strategi": [6, 7, 8], "termination_strategi": [6, 7, 8], "terminateataccuraci": [6, 7, 8], "target_accuraci": [6, 7, 8], "len": 6, "learned_model": 6, "testing_set": [6, 7], "44": 6, "classification_result": 6, "classify_altern": [6, 7, 8], "next": [6, 7, 8], "instanc": 6, "integervalu": [6, 7, 8, 10], "enumeratedvalu": [6, 7, 8], "congratul": 6, "ordered_valu": [6, 7, 8, 11], "is_real": [6, 7, 8], "is_integ": [6, 7, 8], "is_enumer": [6, 7, 8], "valuetyp": [6, 7, 8], "fals": [6, 7, 8], "integer_valu": [6, 7, 8], "is_increas": [6, 7, 8], "is_decreas": [6, 7, 8], "enumerated_valu": [6, 7, 8], "get_value_rank": [6, 7, 8], "integerthreshold": [6, 7, 8], "50": 6, "enumeratedthreshold": [6, 7, 8], "is_threshold": [6, 7, 8], "integer_threshold": [6, 7, 8], "enumerated_threshold": [6, 7, 8], "is_weight": [6, 7, 8], "is_root": [6, 7, 8], "unclassifi": [6, 7], "90": 6, "category_index": [6, 7, 8], "copied_problem": 6, "copied_model": 6, "copied_altern": 6, "mutat": 6, "zip": 6, "upcom": [6, 9], "static": [6, 7, 8], "w": 6, "unpickl": 6, "whenev": 6, "ti": 6, "picklabl": 6, "decid": [6, 7, 8], "thu": 6, "robust": [6, 11], "beyond": 6, "scope": 6, "past": 6, "Be": 6, "edg": 6, "sensibl": 6, "realvalu": [6, 7, 8], "bad": [6, 10], "align": 6, "horizont": 6, "top": [6, 7, 11], "bottom": 6, "label": 6, "12": [6, 9], "nof": 6, "200": [6, 11], "odd": 6, "1201": 6, "seen": [6, 11], "medium": [6, 11], "briefli": 6, "purpos": 6, "obscur": 6, "unifi": 6, "view": 6, "parform": 6, "rank": [6, 7, 8], "consecut": [6, 11], "gap": 6, "boundaries_count": [6, 7, 8], "values_count": [6, 7, 8], "criterion_index": [6, 7, 8, 10], "1002": 6, "101": 6, "usual": 6, "equal": [6, 11], "similarli": [6, 11], "v": 6, "performance_rank": [6, 7, 8], "alternative_index": [6, 7, 8], "883": 6, "900": 6, "753": 6, "216": 6, "365": 6, "410": 6, "302": 6, "852": 6, "738": 6, "45": 6, "17": 6, "86": 6, "25": 6, "81": 6, "47": 6, "87": 6, "splice": 6, "commun": 6, "oper": 6, "Their": [6, 7], "constant": 6, "uniform": 6, "str": [6, 7, 8], "model_index": [6, 7, 8, 10], "uniformrandombitsgener": [6, 7, 8], "determinist": 6, "callabl": 6, "r": 6, "494155588": 6, "870190228": 6, "2450414687": 6, "641676058": 6, "661088198": 6, "363471047": 6, "1448606581": 6, "1348129397": 6, "2542538607": 6, "iteration_index": [6, 7, 8], "remain": 6, "uniniti": 6, "present": 6, "sens": [6, 11], "max_iterations_count": [6, 7, 8], "assert": [6, 10], "hold": 6, "correctli": [6, 11], "764": 6, "595": 6, "725": 6, "666": 6, "637": 6, "609": 6, "676": 6, "830": 6, "640": 6, "low_profile_rank": [6, 7, 8], "vv": 6, "boundary_index": [6, 7, 8, 10], "124": 6, "633": 6, "492": 6, "965": 6, "268": 6, "506": 6, "54": 6, "230": 6, "272": 6, "201": 6, "64": 6, "99": 6, "223": 6, "310": 6, "235": 6, "261": 6, "52": 6, "262": 6, "9999989867210388": 6, "0132789611816406e": 6, "get_best_model": [6, 7, 8], "get_best_accuraci": [6, 7, 8], "respect": [6, 11], "7909708": 6, "06594753": 6, "understand": 6, "simplest": 6, "kei": [6, 11], "flag": 6, "after_iter": [6, 7, 8], "before_return": [6, 7, 8], "verboseobserv": 6, "def": 6, "self": 6, "super": 6, "938": 6, "992": 6, "997": 6, "999": 6, "complic": 6, "intermediatesobserv": 6, "track": [6, 11], "intermediate_model": 6, "log2": 6, "append": 6, "reus": [6, 11], "final_model": 6, "95116329": 6, "89878368": 6, "21": 6, "96338844": 6, "82566905": 6, "73": 6, "84": 6, "93314505": 6, "74707603": 6, "intellig": 6, "inherit": 6, "overrid": [6, 7, 8], "initialize_profil": [6, 7, 8], "model_indexes_begin": [6, 7, 8], "model_indexes_end": [6, 7, 8], "high_profile_rank": [6, 7, 8, 10], "sillyprofilesinitializationstrategi": 6, "profilesinitializationstrategi": [6, 7, 8], "stderr": [6, 7], "model_index_index": 6, "optimize_weight": [6, 7, 8], "sillyweightsoptimizationstrategi": 6, "improve_profil": [6, 7, 8], "sillyprofilesimprovementstrategi": 6, "sillybreedingstrategi": 6, "sillyterminationstrategi": 6, "terminationstrategi": [6, 7, 8], "silli": 6, "94936371": 6, "24692106": 6, "33": 6, "66": 6, "366666675": 6, "standard": [7, 11], "properti": [7, 8], "const": 7, "oneof": 7, "enum": 7, "additionalproperti": 7, "taken": 7, "minitem": 7, "determin": [7, 11], "lowest": 7, "maxitem": 7, "comma": 7, "ignor": [7, 11], "quot": 7, "whitespac": 7, "column": [7, 11], "empti": [7, 11], "output_altern": 7, "output_descript": 7, "output_model": 7, "model_typ": 7, "mrsort__fixed_weights_sum": 7, "anoth": [7, 11], "output_problem": 7, "max_imbal": [7, 8], "balanc": [7, 8, 11], "forc": 7, "size": [7, 11], "perfectli": [7, 11], "fraction": [7, 11], "misclassified_count": 7, "whether": [7, 8], "otherwis": [7, 8], "quiet": 7, "ucncs__strategi": 7, "transform": 7, "ucncs__max_sat_by_separation__solv": 7, "ucncs__max_sat_by_separation__eval_max_sat__nb_minimize_thread": 7, "ucncs__max_sat_by_separation__eval_max_sat__timeout_fast_minim": 7, "ucncs__max_sat_by_separation__eval_max_sat__coef_minimize_tim": 7, "ucncs__max_sat_by_coalitions__solv": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__nb_minimize_thread": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__timeout_fast_minim": 7, "ucncs__max_sat_by_coalitions__eval_max_sat__coef_minimize_tim": 7, "coeffici": 7, "multipli": 7, "mrsort__strategi": 7, "mrsort__weights_profiles_breed__target_accuraci": 7, "mrsort__weights_profiles_breed__max_iter": 7, "mrsort__weights_profiles_breed__max_iterations_without_progress": 7, "mrsort__weights_profiles_breed__max_dur": 7, "mrsort__weights_profiles_breed__max_duration_without_progress": 7, "mrsort__weights_profiles_breed__models_count": 7, "temporari": 7, "mrsort__weights_profiles_breed__initialization_strategi": 7, "mrsort__weights_profiles_breed__weights_strategi": 7, "mrsort__weights_profiles_breed__linear_program__solv": 7, "mrsort__weights_profiles_breed__profiles_strategi": 7, "mrsort__weights_profiles_breed__accuracy_heuristic__random_se": 7, "mrsort__weights_profiles_breed__accuracy_heuristic__processor": 7, "mrsort__weights_profiles_breed__breed_strategi": 7, "mrsort__weights_profiles_breed__reinitialize_least_accurate__port": 7, "while": 7, "mrsort__weights_profiles_breed__output_metadata": 7, "invalid": [7, 8], "__version__": [7, 8], "has_gpu": [7, 8], "bool": [7, 8], "datavalidationexcept": [7, 8], "rais": [7, 8], "ex": [7, 8], "learningfailureexcept": [7, 8], "__call__": [7, 8], "int": [7, 8], "descriptor": [7, 8], "map": [7, 8], "ident": [7, 8, 11], "is_single_peak": [7, 8], "real_valu": [7, 8], "out": [7, 8, 10, 11], "json_schema": [7, 8], "realthreshold": [7, 8], "realinterv": [7, 8], "integerinterv": [7, 8, 10], "correspond": [7, 8, 10, 11], "is_interv": [7, 8], "real_threshold": [7, 8], "tupl": [7, 8], "real_interv": [7, 8], "integer_interv": [7, 8], "upset": [7, 8, 11], "mayb": [7, 8, 11], "normalized_min_max": [7, 8], "allowed_value_typ": [7, 8], "fixed_weights_sum": [7, 8], "balancedalternativesgenerationexcept": [7, 8], "learnucncsbymaxsatbycoalitionsusingevalmaxsat": [7, 8], "nb_minimize_thread": [7, 8], "timeout_fast_minim": [7, 8], "coef_minimize_tim": [7, 8], "learnucncsbymaxsatbyseparationusingevalmaxsat": [7, 8], "learnucncsbysatbycoalitionsusingminisat": [7, 8], "learnucncsbysatbyseparationusingminisat": [7, 8], "represent": [7, 8, 11], "unsign": [7, 8], "phd": [7, 8], "observ": [7, 8], "alloc": [7, 8, 10], "low": [7, 8, 10, 11], "high_profile_rank_index": [7, 8, 10], "optimizeweightsusingalglib": [7, 8], "capabl": [7, 8, 11], "terminateaftersecond": [7, 8], "max_second": [7, 8], "terminateaftersecondswithoutprogress": [7, 8], "terminatewhenani": [7, 8], "classificationresult": [7, 8], "_ax": [7, 8], "creat": [7, 8, 10, 11], "stone": 9, "late": 9, "explor": 9, "xmcda": 9, "publish": 9, "decis": 9, "deck": 9, "servic": 9, "appl": 9, "silicon": 9, "arm": 9, "neural": 9, "network": 9, "parsimoni": 9, "discard": 9, "corel": 10, "global": 10, "health": 10, "statu": 10, "assum": 10, "monoton": 10, "cleanli": 10, "put": 10, "style": 10, "jump": 10, "context": 10, "involv": 10, "understood": 10, "land": 10, "b_i": 10, "special": 10, "bound": 10, "09463787": [10, 11], "19": [10, 11], "7704506": [10, 11], "suppli": 10, "link": 10, "encourag": 10, "due": 10, "manual": 10, "own": [10, 11], "throw": 10, "indirect": 10, "manipul": 11, "conform": 11, "expert": 11, "knowledg": 11, "absolut": 11, "fourth": 11, "rel": 11, "fact": 11, "embed": 11, "unwant": 11, "referenc": 11, "content": 11, "hash": 11, "respons": 11, "along": 11, "173891723": 11, "97980487": 11, "0961765796": 11, "lack": 11, "transpos": 11, "focuss": 11, "enter": 11, "minu": 11, "matrix": 11, "made": 11, "49331188": 11, "9249287": 11, "8156891": 11, "25551182": 11, "18": 11, "4786396": 11, "0154629": 11, "30789757": 11, "39045048": 11, "45864725": 11, "31117153": 11, "33949804": 11, "66963387": 11, "parent": 11, "left": 11, "saw": 11, "tweak": 11, "chosen": 11, "randomli": 11, "hard": 11, "600": 11, "160": 11, "240": 11, "significantli": 11, "popul": 11, "lenient": 11, "goe": 11, "branch": 11, "realiti": 11, "dot": 11, "scheme": 11, "abil": 11, "collis": 11, "smaller": 11, "softwar": 11, "choos": 11, "directori": 11, "small": 11, "difficult": 11, "Or": 11, "took": 11, "met": 11, "exceed": 11, "googl": 11, "slight": 11, "exact": 11, "pick": 11, "Not": 11, "said": 11, "tradeoff": 11, "offer": 11, "highlight": 11, "996253729": 11, "997255564": 11, "craft": 11, "serv": 11, "graphic": 11, "pretti": 11, "feel": 11, "free": 11}, "objects": {"": [[7, 0, 0, "-", "lincs"]], "lincs": [[7, 1, 1, "", "DataValidationException"], [7, 1, 1, "", "LearningFailureException"], [7, 2, 1, "", "UniformRandomBitsGenerator"], [7, 4, 1, "", "__version__"], [7, 0, 0, "-", "classification"], [7, 4, 1, "", "has_gpu"], [7, 7, 1, "cmdoption-lincs-version", "--version"]], "lincs.UniformRandomBitsGenerator": [[7, 3, 1, "", "__call__"]], "lincs.classification": [[7, 2, 1, "", "AcceptedValues"], [7, 2, 1, "", "Alternative"], [7, 2, 1, "", "Alternatives"], [7, 1, 1, "", "BalancedAlternativesGenerationException"], [7, 2, 1, "", "Category"], [7, 2, 1, "", "ClassificationResult"], [7, 2, 1, "", "Criterion"], [7, 2, 1, "", "ImproveProfilesWithAccuracyHeuristicOnCpu"], [7, 2, 1, "", "ImproveProfilesWithAccuracyHeuristicOnGpu"], [7, 2, 1, "", "InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"], [7, 2, 1, "", "LearnMrsortByWeightsProfilesBreed"], [7, 2, 1, "", "LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"], [7, 2, 1, "", "LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"], [7, 2, 1, "", "LearnUcncsBySatByCoalitionsUsingMinisat"], [7, 2, 1, "", "LearnUcncsBySatBySeparationUsingMinisat"], [7, 2, 1, "", "Model"], [7, 2, 1, "", "OptimizeWeightsUsingAlglib"], [7, 2, 1, "", "OptimizeWeightsUsingGlop"], [7, 2, 1, "", "Performance"], [7, 2, 1, "", "PreprocessedLearningSet"], [7, 2, 1, "", "Problem"], [7, 2, 1, "", "ReinitializeLeastAccurate"], [7, 2, 1, "", "SufficientCoalitions"], [7, 2, 1, "", "TerminateAfterIterations"], [7, 2, 1, "", "TerminateAfterIterationsWithoutProgress"], [7, 2, 1, "", "TerminateAfterSeconds"], [7, 2, 1, "", "TerminateAfterSecondsWithoutProgress"], [7, 2, 1, "", "TerminateAtAccuracy"], [7, 2, 1, "", "TerminateWhenAny"], [7, 6, 1, "", "classify_alternatives"], [7, 6, 1, "", "describe_model"], [7, 6, 1, "", "describe_problem"], [7, 6, 1, "", "generate_alternatives"], [7, 6, 1, "", "generate_mrsort_model"], [7, 6, 1, "", "generate_problem"], [7, 6, 1, "", "misclassify_alternatives"], [7, 6, 1, "", "visualize_model"]], "lincs.classification.AcceptedValues": [[7, 2, 1, "", "EnumeratedThresholds"], [7, 2, 1, "", "IntegerIntervals"], [7, 2, 1, "", "IntegerThresholds"], [7, 2, 1, "", "Kind"], [7, 2, 1, "", "RealIntervals"], [7, 2, 1, "", "RealThresholds"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated_thresholds"], [7, 5, 1, "", "integer_intervals"], [7, 5, 1, "", "integer_thresholds"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_intervals"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "is_thresholds"], [7, 5, 1, "", "kind"], [7, 5, 1, "", "real_intervals"], [7, 5, 1, "", "real_thresholds"], [7, 5, 1, "", "value_type"]], "lincs.classification.AcceptedValues.EnumeratedThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.IntegerIntervals": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "intervals"]], "lincs.classification.AcceptedValues.IntegerThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.Kind": [[7, 5, 1, "", "intervals"], [7, 5, 1, "", "thresholds"]], "lincs.classification.AcceptedValues.RealIntervals": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "intervals"]], "lincs.classification.AcceptedValues.RealThresholds": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "thresholds"]], "lincs.classification.Alternative": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "category_index"], [7, 5, 1, "", "name"], [7, 5, 1, "", "profile"]], "lincs.classification.Alternatives": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "alternatives"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"]], "lincs.classification.Category": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "name"]], "lincs.classification.ClassificationResult": [[7, 5, 1, "", "changed"], [7, 5, 1, "", "unchanged"]], "lincs.classification.Criterion": [[7, 2, 1, "", "EnumeratedValues"], [7, 2, 1, "", "IntegerValues"], [7, 2, 1, "", "PreferenceDirection"], [7, 2, 1, "", "RealValues"], [7, 2, 1, "", "ValueType"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated_values"], [7, 5, 1, "", "integer_values"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "name"], [7, 5, 1, "", "real_values"], [7, 5, 1, "", "value_type"]], "lincs.classification.Criterion.EnumeratedValues": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "get_value_rank"], [7, 5, 1, "", "ordered_values"]], "lincs.classification.Criterion.IntegerValues": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_decreasing"], [7, 5, 1, "", "is_increasing"], [7, 5, 1, "", "is_single_peaked"], [7, 5, 1, "", "max_value"], [7, 5, 1, "", "min_value"], [7, 5, 1, "", "preference_direction"]], "lincs.classification.Criterion.PreferenceDirection": [[7, 5, 1, "", "antitone"], [7, 5, 1, "", "decreasing"], [7, 5, 1, "", "increasing"], [7, 5, 1, "", "isotone"], [7, 5, 1, "", "single_peaked"]], "lincs.classification.Criterion.RealValues": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_decreasing"], [7, 5, 1, "", "is_increasing"], [7, 5, 1, "", "is_single_peaked"], [7, 5, 1, "", "max_value"], [7, 5, 1, "", "min_value"], [7, 5, 1, "", "preference_direction"]], "lincs.classification.Criterion.ValueType": [[7, 5, 1, "", "enumerated"], [7, 5, 1, "", "integer"], [7, 5, 1, "", "real"]], "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "improve_profiles"]], "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "improve_profiles"]], "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "initialize_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed": [[7, 2, 1, "", "BreedingStrategy"], [7, 2, 1, "", "ModelsBeingLearned"], [7, 2, 1, "", "Observer"], [7, 2, 1, "", "ProfilesImprovementStrategy"], [7, 2, 1, "", "ProfilesInitializationStrategy"], [7, 2, 1, "", "TerminationStrategy"], [7, 2, 1, "", "WeightsOptimizationStrategy"], [7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy": [[7, 3, 1, "", "breed"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "accuracies"], [7, 3, 1, "", "get_best_accuracy"], [7, 3, 1, "", "get_best_model"], [7, 5, 1, "", "high_profile_rank_indexes"], [7, 5, 1, "", "high_profile_ranks"], [7, 5, 1, "", "iteration_index"], [7, 5, 1, "", "low_profile_ranks"], [7, 5, 1, "", "model_indexes"], [7, 5, 1, "", "models_count"], [7, 5, 1, "", "random_generators"], [7, 5, 1, "", "weights"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer": [[7, 3, 1, "", "after_iteration"], [7, 3, 1, "", "before_return"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy": [[7, 3, 1, "", "improve_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy": [[7, 3, 1, "", "initialize_profiles"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy": [[7, 3, 1, "", "terminate"]], "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy": [[7, 3, 1, "", "optimize_weights"]], "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "perform"]], "lincs.classification.Model": [[7, 4, 1, "", "JSON_SCHEMA"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "accepted_values"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"], [7, 5, 1, "", "sufficient_coalitions"]], "lincs.classification.OptimizeWeightsUsingAlglib": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.OptimizeWeightsUsingGlop": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "optimize_weights"]], "lincs.classification.Performance": [[7, 2, 1, "", "Enumerated"], [7, 2, 1, "", "Integer"], [7, 2, 1, "", "Real"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "enumerated"], [7, 5, 1, "", "integer"], [7, 5, 1, "", "is_enumerated"], [7, 5, 1, "", "is_integer"], [7, 5, 1, "", "is_real"], [7, 5, 1, "", "real"], [7, 5, 1, "", "value_type"]], "lincs.classification.Performance.Enumerated": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.Performance.Integer": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.Performance.Real": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "value"]], "lincs.classification.PreprocessedLearningSet": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "alternatives_count"], [7, 5, 1, "", "assignments"], [7, 5, 1, "", "boundaries_count"], [7, 5, 1, "", "categories_count"], [7, 5, 1, "", "criteria_count"], [7, 5, 1, "", "performance_ranks"], [7, 5, 1, "", "single_peaked"], [7, 5, 1, "", "values_counts"]], "lincs.classification.Problem": [[7, 4, 1, "", "JSON_SCHEMA"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "criteria"], [7, 3, 1, "", "dump"], [7, 3, 1, "", "load"], [7, 5, 1, "", "ordered_categories"]], "lincs.classification.ReinitializeLeastAccurate": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "breed"]], "lincs.classification.SufficientCoalitions": [[7, 2, 1, "", "Kind"], [7, 2, 1, "", "Roots"], [7, 2, 1, "", "Weights"], [7, 3, 1, "", "__init__"], [7, 5, 1, "", "is_roots"], [7, 5, 1, "", "is_weights"], [7, 5, 1, "", "kind"], [7, 5, 1, "", "roots"], [7, 5, 1, "", "weights"]], "lincs.classification.SufficientCoalitions.Kind": [[7, 5, 1, "", "roots"], [7, 5, 1, "", "weights"]], "lincs.classification.SufficientCoalitions.Roots": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "upset_roots"]], "lincs.classification.SufficientCoalitions.Weights": [[7, 3, 1, "", "__init__"], [7, 5, 1, "", "criterion_weights"]], "lincs.classification.TerminateAfterIterations": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterIterationsWithoutProgress": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterSeconds": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAfterSecondsWithoutProgress": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateAtAccuracy": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "lincs.classification.TerminateWhenAny": [[7, 3, 1, "", "__init__"], [7, 3, 1, "", "terminate"]], "./publish.sh-finalize": [[3, 7, 1, "cmdoption-.-publish.sh-finalize-dry-run", "--dry-run"]], "./publish.sh-first-pre": [[3, 7, 1, "cmdoption-.-publish.sh-first-pre-dry-run", "--dry-run"], [3, 7, 1, "cmdoption-.-publish.sh-first-pre-arg-LEVEL", "LEVEL"], [3, 7, 1, "cmdoption-.-publish.sh-first-pre-arg-PRE", "PRE"]], "./publish.sh-next-pre": [[3, 7, 1, "cmdoption-.-publish.sh-next-pre-dry-run", "--dry-run"]], "./publish.sh-quick": [[3, 7, 1, "cmdoption-.-publish.sh-quick-dry-run", "--dry-run"], [3, 7, 1, "cmdoption-.-publish.sh-quick-arg-LEVEL", "LEVEL"]], "./run-development-cycle.sh": [[3, 7, 1, "cmdoption-.-run-development-cycle.sh-doctest-option", "--doctest-option"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-chrones", "--forbid-chrones"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-gpu", "--forbid-gpu"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-forbid-nvcc", "--forbid-nvcc"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-python-versions", "--python-versions"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-single-python-version", "--single-python-version"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-build", "--skip-build"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit", "--skip-cpp-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-install", "--skip-install"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-long-unit", "--skip-long-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit", "--skip-max-sat-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-notebooks", "--skip-notebooks"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-python-unit", "--skip-python-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-sat-unit", "--skip-sat-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks", "--skip-unchanged-notebooks"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-unit", "--skip-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit", "--skip-wpb-alglib-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit", "--skip-wpb-glop-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit", "--skip-wpb-unit"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-unit-coverage", "--unit-coverage"], [3, 7, 1, "cmdoption-.-run-development-cycle.sh-with-docs", "--with-docs"]], "lincs-classification-accuracy": [[7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-PROBLEM", "PROBLEM"], [7, 7, 1, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET", "TESTING_SET"]], "lincs-classify": [[7, 7, 1, "cmdoption-lincs-classify-output-alternatives", "--output-alternatives"], [7, 7, 1, "cmdoption-lincs-classify-arg-ALTERNATIVES", "ALTERNATIVES"], [7, 7, 1, "cmdoption-lincs-classify-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-classify-arg-PROBLEM", "PROBLEM"]], "lincs-describe-classification-model": [[7, 7, 1, "cmdoption-lincs-describe-classification-model-output-description", "--output-description"], [7, 7, 1, "cmdoption-lincs-describe-classification-model-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-describe-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-describe-classification-problem": [[7, 7, 1, "cmdoption-lincs-describe-classification-problem-output-description", "--output-description"], [7, 7, 1, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM", "PROBLEM"]], "lincs-generate-classification-model": [[7, 7, 1, "cmdoption-lincs-generate-classification-model-model-type", "--model-type"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-output-model", "--output-model"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-generate-classification-model.--mrsort": [[7, 7, 1, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum", "fixed-weights-sum"]], "lincs-generate-classification-problem": [[7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria", "--allow-decreasing-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria", "--allow-enumerated-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria", "--allow-integer-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria", "--allow-single-peaked-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-denormalized-min-max", "--denormalized-min-max"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria", "--forbid-increasing-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria", "--forbid-real-criteria"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-output-problem", "--output-problem"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT", "CATEGORIES_COUNT"], [7, 7, 1, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT", "CRITERIA_COUNT"]], "lincs-generate-classified-alternatives": [[7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-max-imbalance", "--max-imbalance"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-misclassified-count", "--misclassified-count"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-output-alternatives", "--output-alternatives"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-random-seed", "--random-seed"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT", "ALTERNATIVES_COUNT"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM", "PROBLEM"]], "lincs-info-has-gpu": [[7, 7, 1, "cmdoption-lincs-info-has-gpu-quiet", "--quiet"]], "lincs-learn-classification-model": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-model-type", "--model-type"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-output-model", "--output-model"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET", "LEARNING_SET"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-arg-PROBLEM", "PROBLEM"]], "lincs-learn-classification-model.--mrsort": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.strategy", "strategy"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.accuracy-heuristic": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor", "processor"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed", "random-seed"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy", "breed-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy", "initialization-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration", "max-duration"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress", "max-duration-without-progress"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations", "max-iterations"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress", "max-iterations-without-progress"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count", "models-count"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata", "output-metadata"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy", "profiles-strategy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy", "target-accuracy"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose", "verbose"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy", "weights-strategy"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.linear-program": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver", "solver"]], "lincs-learn-classification-model.--mrsort.weights-profiles-breed.reinitialize-least-accurate": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion", "portion"]], "lincs-learn-classification-model.--ucncs.max-sat-by-coalitions.eval-max-sat": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time", "coef-minimize-time"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads", "nb-minimize-threads"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize", "timeout-fast-minimize"]], "lincs-learn-classification-model.--ucncs.max-sat-by-coalitions": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver", "solver"]], "lincs-learn-classification-model.--ucncs.max-sat-by-separation.eval-max-sat": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time", "coef-minimize-time"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads", "nb-minimize-threads"], [7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize", "timeout-fast-minimize"]], "lincs-learn-classification-model.--ucncs.max-sat-by-separation": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver", "solver"]], "lincs-learn-classification-model.--ucncs": [[7, 7, 1, "cmdoption-lincs-learn-classification-model-ucncs.strategy", "strategy"]], "lincs-visualize-classification-model": [[7, 7, 1, "cmdoption-lincs-visualize-classification-model-alternatives", "--alternatives"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-alternatives-count", "--alternatives-count"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-MODEL", "MODEL"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT", "OUTPUT"], [7, 7, 1, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM", "PROBLEM"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:method", "4": "py:data", "5": "py:property", "6": "py:function", "7": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "data", "Python data"], "5": ["py", "property", "Python property"], "6": ["py", "function", "Python function"], "7": ["std", "cmdoption", "program option"]}, "titleterms": {"contributor": [0, 3, 5], "project": [0, 5], "goal": [0, 5], "provid": [0, 5], "mcda": [0, 5], "tool": [0, 5], "usabl": [0, 5], "out": [0, 5], "box": [0, 5], "base": [0, 5, 11], "develop": [0, 3, 5], "new": [0, 3, 5], "algorithm": [0, 5], "get": [0, 4, 5, 11], "start": [0, 4, 5], "version": [0, 1, 5, 9], "except": [0, 5], "default": [0, 3, 5], "valu": [0, 5, 11], "file": [0, 5, 7, 10, 11], "format": [0, 5, 7, 10, 11], "linc": [0, 1, 4, 5, 7, 8, 11], "itself": [0, 5], "changelog": 1, "2": [1, 9], "0": [1, 9], "0a6": 1, "2024": 1, "12": 1, "03": 1, "0a5": 1, "11": 1, "08": 1, "0a3": 1, "10": 1, "plan": 1, "05": 1, "1": [1, 2], "02": 1, "publish": [1, 3], "python": [1, 3, 6, 7, 10], "api": [1, 6, 7, 10], "improv": 1, "visual": [1, 6, 7, 11], "smaller": 1, "chang": [1, 3], "2023": 1, "22": 1, "3": 1, "9": 1, "8": 1, "7": 1, "5": 1, "6": 1, "4": 1, "conceptu": [2, 10], "overview": [2, 10], "notat": 2, "about": [2, 11], "classif": [2, 6, 7, 8, 11], "formal": [2, 10], "definit": [2, 3, 10], "learn": [2, 6, 7, 11], "classifi": [2, 6, 7, 11], "non": 2, "compensatori": 2, "sort": 2, "nc": [2, 7], "exampl": 2, "particular": 2, "case": 2, "u": 2, "c": [2, 3], "textsf": 2, "k": 2, "mr": 2, "accuraci": [2, 7, 11], "synthet": [2, 11], "data": [2, 11], "next": [2, 3, 11], "guid": [3, 11], "do": [3, 6], "contribut": 3, "depend": 3, "cycl": 3, "run": 3, "sh": 3, "final": 3, "first": 3, "pre": 3, "quick": 3, "directori": 3, "structur": 3, "gener": [3, 7, 11], "design": 3, "strategi": [3, 6, 11], "But": 3, "bewar": 3, "virtual": 3, "function": 3, "call": 3, "so": 3, "why": 3, "all": 3, "templat": 3, "how": 3, "tos": 3, "updat": 3, "document": 3, "choos": 3, "your": [3, 6], "tweak": 3, "an": [3, 11], "exist": 3, "add": 3, "extens": 3, "point": 3, "dynam": 3, "static": 3, "behavior": 3, "backward": 3, "compat": 3, "extern": 3, "solver": 3, "us": [4, 6, 10, 11], "command": [4, 6, 7, 10], "line": [4, 6, 7, 10], "interfac": [4, 7], "what": [4, 11], "now": 4, "readm": 5, "The": [6, 7, 8], "again": 6, "more": 6, "creat": 6, "object": 6, "problem": [6, 7, 10, 11], "model": [6, 7, 10, 11], "altern": [6, 7, 11], "clone": 6, "serial": 6, "In": [6, 10], "yaml": 6, "csv": 6, "like": 6, "specif": 6, "pickl": 6, "modul": [6, 7, 8], "custom": 6, "own": 6, "preprocessedlearningset": 6, "modelsbeinglearn": 6, "observ": 6, "other": 6, "refer": 7, "describ": 7, "info": 7, "ha": 7, "gpu": 7, "packag": [7, 8], "roadmap": 9, "later": 9, "singl": 10, "peak": 10, "criteria": [10, 11], "user": 11, "categori": 11, "accept": 11, "suffici": 11, "coalit": 11, "comment": 11, "random": 11, "whole": 11, "tree": 11, "option": 11, "avail": 11, "sub": 11, "weight": 11, "profil": 11, "breed": 11, "wpb": 11, "termin": 11, "step": 11, "sat": 11, "comput": 11, "human": 11, "readabl": 11, "inform": 11, "": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Contributors": [[0, "contributors"], [5, "contributors"]], "Project goals": [[0, "project-goals"], [5, "project-goals"]], "Provide MCDA tools usable out of the box": [[0, "provide-mcda-tools-usable-out-of-the-box"], [5, "provide-mcda-tools-usable-out-of-the-box"]], "Provide a base for developing new MCDA algorithms": [[0, "provide-a-base-for-developing-new-mcda-algorithms"], [5, "provide-a-base-for-developing-new-mcda-algorithms"]], "Get started": [[0, "get-started"], [5, "get-started"], [4, "get-started"]], "Versioning": [[0, "versioning"], [5, "versioning"]], "Exceptions": [[0, "exceptions"], [5, "exceptions"]], "Default values": [[0, "default-values"], [5, "default-values"]], "File formats": [[0, "file-formats"], [5, "file-formats"], [7, "file-formats"]], "Develop lincs itself": [[0, "develop-lincs-itself"], [5, "develop-lincs-itself"]], "README": [[5, "readme"]], "Roadmap": [[9, "roadmap"]], "Version 2.0": [[9, "version-2-0"]], "Later versions": [[9, "later-versions"]], "Get lincs": [[4, "get-lincs"]], "Start using lincs\u2019 command-line interface": [[4, "start-using-lincs-command-line-interface"]], "What now?": [[4, "what-now"]], "The Python API": [[6, "the-python-api"]], "Do it again, in Python": [[6, "do-it-again-in-python"]], "Do more, with the Python API": [[6, "do-more-with-the-python-api"]], "Create classification objects": [[6, "create-classification-objects"]], "Create a Problem": [[6, "create-a-problem"]], "Create a Model": [[6, "create-a-model"]], "Create (classified) Alternatives": [[6, "create-classified-alternatives"]], "Clone classification objects": [[6, "clone-classification-objects"]], "Serialize classification objects": [[6, "serialize-classification-objects"]], "In YAML and CSV like the command-line": [[6, "in-yaml-and-csv-like-the-command-line"]], "Using the Python-specific pickle module": [[6, "using-the-python-specific-pickle-module"]], "Customize the model visualization": [[6, "customize-the-model-visualization"]], "Create your own learning strategies": [[6, "create-your-own-learning-strategies"]], "PreprocessedLearningSet": [[6, "preprocessedlearningset"]], "ModelsBeingLearned": [[6, "modelsbeinglearned"]], "Observer strategies": [[6, "observer-strategies"]], "Other strategies": [[6, "other-strategies"]], "Single-peaked criteria": [[10, "single-peaked-criteria"]], "Conceptual overview": [[10, "conceptual-overview"], [2, "conceptual-overview"]], "Formal definition": [[10, null], [2, null], [2, null], [2, null], [2, null], [2, null]], "In the problem file format": [[10, "in-the-problem-file-format"]], "In the model file format": [[10, "in-the-model-file-format"]], "Using the command line": [[10, "using-the-command-line"]], "Using the Python API": [[10, "using-the-python-api"]], "Changelog": [[1, "changelog"]], "Version 2.0.0a6 (2024-12-03)": [[1, "version-2-0-0a6-2024-12-03"]], "Version 2.0.0a5 (2024-11-08)": [[1, "version-2-0-0a5-2024-11-08"]], "Version 2.0.0a3 (2024-10-10)": [[1, "version-2-0-0a3-2024-10-10"]], "Version 2.0.0 (planned 2024-12-05)": [[1, "version-2-0-0-planned-2024-12-05"]], "Version 1.1.0 (2024-02-08)": [[1, "version-1-1-0-2024-02-08"]], "Publish the Python API": [[1, "publish-the-python-api"]], "Improve lincs visualize": [[1, "improve-lincs-visualize"]], "Smaller changes": [[1, "smaller-changes"]], "Version 1.0.0 (2023-11-22)": [[1, "version-1-0-0-2023-11-22"]], "Version 0.11.1": [[1, "version-0-11-1"]], "Version 0.11.0": [[1, "version-0-11-0"]], "Versions 0.10.0 to 0.10.3": [[1, "versions-0-10-0-to-0-10-3"]], "Versions 0.9.0 to 0.9.2": [[1, "versions-0-9-0-to-0-9-2"]], "Version 0.8.7": [[1, "version-0-8-7"]], "Versions 0.8.5 to 0.8.6": [[1, "versions-0-8-5-to-0-8-6"]], "Versions 0.8.0 to 0.8.4": [[1, "versions-0-8-0-to-0-8-4"]], "Version 0.7.0": [[1, "version-0-7-0"]], "Version 0.6.0": [[1, "version-0-6-0"]], "Version 0.5.1": [[1, "version-0-5-1"]], "Version 0.5.0": [[1, "version-0-5-0"]], "Version 0.4.5": [[1, "version-0-4-5"]], "Versions 0.4.1 to 0.4.4": [[1, "versions-0-4-1-to-0-4-4"]], "Version 0.4.0": [[1, "version-0-4-0"]], "Versions 0.3.4 to 0.3.7": [[1, "versions-0-3-4-to-0-3-7"]], "Version 0.3.3": [[1, "version-0-3-3"]], "Version 0.3.2": [[1, "version-0-3-2"]], "Version 0.3.1": [[1, "version-0-3-1"]], "Version 0.3.0": [[1, "version-0-3-0"]], "Version 0.2.2": [[1, "version-0-2-2"]], "Version 0.2.1": [[1, "version-0-2-1"]], "Version 0.2.0": [[1, "version-0-2-0"]], "Version 0.1.3": [[1, "version-0-1-3"]], "Notation": [[2, "notation"]], "About classification": [[2, "about-classification"]], "Learning and classifying": [[2, "learning-and-classifying"]], "Non-compensatory sorting (NCS)": [[2, "non-compensatory-sorting-ncs"]], "Example": [[2, "example"], [2, "id1"]], "Particular cases": [[2, "particular-cases"]], "U^c \\textsf{-} NCS": [[2, "u-c-textsf-ncs"]], "1 \\textsf{-} U^c \\textsf{-} NCS a.k.a. MR-Sort": [[2, "textsf-u-c-textsf-ncs-a-k-a-mr-sort"]], "Classification accuracy": [[2, "classification-accuracy"]], "Synthetic data": [[2, "synthetic-data"]], "Next": [[2, "next"]], "User Guide": [[11, "user-guide"]], "Formatting data for lincs": [[11, "formatting-data-for-lincs"]], "\u201cProblem\u201d files": [[11, "problem-files"]], "Criteria": [[11, "criteria"]], "Categories": [[11, "categories"]], "\u201cModel\u201d files": [[11, "model-files"]], "Accepted values": [[11, "accepted-values"]], "Sufficient coalitions": [[11, "sufficient-coalitions"]], "\u201cAlternatives\u201d files": [[11, "alternatives-files"]], "Comments in generated files": [[11, "comments-in-generated-files"]], "Generating synthetic data": [[11, "generating-synthetic-data"]], "About randomness": [[11, "about-randomness"]], "Generating a problem": [[11, "generating-a-problem"]], "Generating a model": [[11, "generating-a-model"]], "Generating alternatives": [[11, "generating-alternatives"]], "Learning a model": [[11, "learning-a-model"]], "An whole tree of options": [[11, "an-whole-tree-of-options"]], "Strategies": [[11, "strategies"], [3, "strategies"]], "Available learning (sub-)strategies": [[11, "available-learning-sub-strategies"]], "Weights, profiles, breed (WPB)": [[11, "weights-profiles-breed-wpb"]], "General options": [[11, "general-options"]], "Termination": [[11, "termination"]], "\u201cWeights\u201d step": [[11, "weights-step"]], "\u201cProfiles\u201d step": [[11, "profiles-step"]], "\u201cBreed\u201d step": [[11, "breed-step"]], "SAT-based strategies": [[11, "sat-based-strategies"]], "Using a model": [[11, "using-a-model"]], "Classifying alternatives": [[11, "classifying-alternatives"]], "Computing a classification accuracy": [[11, "computing-a-classification-accuracy"]], "Getting human-readable information about a problem or model": [[11, "getting-human-readable-information-about-a-problem-or-model"]], "Visualizing a model and alternatives": [[11, "visualizing-a-model-and-alternatives"]], "What\u2019s next?": [[11, "what-s-next"]], "Contributor guide": [[3, "contributor-guide"]], "Do contribute!": [[3, "do-contribute"]], "Development dependencies": [[3, "development-dependencies"]], "Development cycle": [[3, "development-cycle"]], "./run-development-cycle.sh": [[3, "run-development-cycle-sh"]], "./publish.sh": [[3, "publish-sh"]], "finalize": [[3, "publish-sh-finalize"]], "first-pre": [[3, "publish-sh-first-pre"]], "next-pre": [[3, "publish-sh-next-pre"]], "quick": [[3, "publish-sh-quick"]], "Directory structure": [[3, "directory-structure"]], "General design": [[3, "general-design"]], "But beware of virtual function calls": [[3, "but-beware-of-virtual-function-calls"]], "So, why not all templates?": [[3, "so-why-not-all-templates"]], "How-tos": [[3, "how-tos"]], "Update the documentation": [[3, "update-the-documentation"]], "Choose Python or C++ for your change": [[3, "choose-python-or-c-for-your-change"]], "Tweak an existing strategy": [[3, "tweak-an-existing-strategy"]], "Add a new strategy": [[3, "add-a-new-strategy"]], "Add a new extension point": [[3, "add-a-new-extension-point"]], "Dynamic or static?": [[3, "dynamic-or-static"]], "Definition of an dynamic extension point": [[3, "definition-of-an-dynamic-extension-point"]], "Definition of an static extension point": [[3, "definition-of-an-static-extension-point"]], "Default behavior for backward compatibility": [[3, "default-behavior-for-backward-compatibility"]], "Add an external solver": [[3, "add-an-external-solver"]], "The lincs package": [[8, "the-lincs-package"], [7, "the-lincs-package"]], "The lincs.classification module": [[8, "the-lincs-classification-module"], [7, "the-lincs-classification-module"]], "Reference": [[7, "reference"]], "The problem file": [[7, "the-problem-file"]], "The NCS model file": [[7, "the-ncs-model-file"]], "The alternatives file": [[7, "the-alternatives-file"]], "Command-line interface": [[7, "command-line-interface"]], "lincs": [[7, "lincs"]], "classification-accuracy": [[7, "lincs-classification-accuracy"]], "classify": [[7, "lincs-classify"]], "describe": [[7, "lincs-describe"]], "classification-model": [[7, "lincs-describe-classification-model"], [7, "lincs-generate-classification-model"], [7, "lincs-learn-classification-model"], [7, "lincs-visualize-classification-model"]], "classification-problem": [[7, "lincs-describe-classification-problem"], [7, "lincs-generate-classification-problem"]], "generate": [[7, "lincs-generate"]], "classified-alternatives": [[7, "lincs-generate-classified-alternatives"]], "info": [[7, "lincs-info"]], "has-gpu": [[7, "lincs-info-has-gpu"]], "learn": [[7, "lincs-learn"]], "visualize": [[7, "lincs-visualize"]], "Python API": [[7, "python-api"]]}, "indexentries": {"--doctest-option": [[3, "cmdoption-.-run-development-cycle.sh-doctest-option"]], "--dry-run": [[3, "cmdoption-.-publish.sh-finalize-dry-run"], [3, "cmdoption-.-publish.sh-first-pre-dry-run"], [3, "cmdoption-.-publish.sh-next-pre-dry-run"], [3, "cmdoption-.-publish.sh-quick-dry-run"]], "--forbid-chrones": [[3, "cmdoption-.-run-development-cycle.sh-forbid-chrones"]], "--forbid-gpu": [[3, "cmdoption-.-run-development-cycle.sh-forbid-gpu"]], "--forbid-nvcc": [[3, "cmdoption-.-run-development-cycle.sh-forbid-nvcc"]], "--python-versions": [[3, "cmdoption-.-run-development-cycle.sh-python-versions"]], "--single-python-version": [[3, "cmdoption-.-run-development-cycle.sh-single-python-version"]], "--skip-build": [[3, "cmdoption-.-run-development-cycle.sh-skip-build"]], "--skip-cpp-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit"]], "--skip-install": [[3, "cmdoption-.-run-development-cycle.sh-skip-install"]], "--skip-long-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-long-unit"]], "--skip-max-sat-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit"]], "--skip-notebooks": [[3, "cmdoption-.-run-development-cycle.sh-skip-notebooks"]], "--skip-python-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-python-unit"]], "--skip-sat-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-sat-unit"]], "--skip-unchanged-notebooks": [[3, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks"]], "--skip-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-unit"]], "--skip-wpb-alglib-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit"]], "--skip-wpb-glop-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit"]], "--skip-wpb-unit": [[3, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit"]], "--unit-coverage": [[3, "cmdoption-.-run-development-cycle.sh-unit-coverage"]], "--with-docs": [[3, "cmdoption-.-run-development-cycle.sh-with-docs"]], "./publish.sh-finalize command line option": [[3, "cmdoption-.-publish.sh-finalize-dry-run"]], "./publish.sh-first-pre command line option": [[3, "cmdoption-.-publish.sh-first-pre-arg-LEVEL"], [3, "cmdoption-.-publish.sh-first-pre-arg-PRE"], [3, "cmdoption-.-publish.sh-first-pre-dry-run"]], "./publish.sh-next-pre command line option": [[3, "cmdoption-.-publish.sh-next-pre-dry-run"]], "./publish.sh-quick command line option": [[3, "cmdoption-.-publish.sh-quick-arg-LEVEL"], [3, "cmdoption-.-publish.sh-quick-dry-run"]], "./run-development-cycle.sh command line option": [[3, "cmdoption-.-run-development-cycle.sh-doctest-option"], [3, "cmdoption-.-run-development-cycle.sh-forbid-chrones"], [3, "cmdoption-.-run-development-cycle.sh-forbid-gpu"], [3, "cmdoption-.-run-development-cycle.sh-forbid-nvcc"], [3, "cmdoption-.-run-development-cycle.sh-python-versions"], [3, "cmdoption-.-run-development-cycle.sh-single-python-version"], [3, "cmdoption-.-run-development-cycle.sh-skip-build"], [3, "cmdoption-.-run-development-cycle.sh-skip-cpp-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-install"], [3, "cmdoption-.-run-development-cycle.sh-skip-long-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-max-sat-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-notebooks"], [3, "cmdoption-.-run-development-cycle.sh-skip-python-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-sat-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-unchanged-notebooks"], [3, "cmdoption-.-run-development-cycle.sh-skip-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-alglib-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-glop-unit"], [3, "cmdoption-.-run-development-cycle.sh-skip-wpb-unit"], [3, "cmdoption-.-run-development-cycle.sh-unit-coverage"], [3, "cmdoption-.-run-development-cycle.sh-with-docs"]], "level": [[3, "cmdoption-.-publish.sh-first-pre-arg-LEVEL"], [3, "cmdoption-.-publish.sh-quick-arg-LEVEL"]], "pre": [[3, "cmdoption-.-publish.sh-first-pre-arg-PRE"]], "--allow-decreasing-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria"]], "--allow-enumerated-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria"]], "--allow-integer-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria"]], "--allow-single-peaked-criteria": [[7, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria"]], "--alternatives": [[7, "cmdoption-lincs-visualize-classification-model-alternatives"]], "--alternatives-count": [[7, "cmdoption-lincs-visualize-classification-model-alternatives-count"]], "--denormalized-min-max": [[7, "cmdoption-lincs-generate-classification-problem-denormalized-min-max"]], "--forbid-increasing-criteria": [[7, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria"]], "--forbid-real-criteria": [[7, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria"]], "--max-imbalance": [[7, "cmdoption-lincs-generate-classified-alternatives-max-imbalance"]], "--misclassified-count": [[7, "cmdoption-lincs-generate-classified-alternatives-misclassified-count"]], "--model-type": [[7, "cmdoption-lincs-generate-classification-model-model-type"], [7, "cmdoption-lincs-learn-classification-model-model-type"]], "--mrsort.fixed-weights-sum": [[7, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum"]], "--mrsort.strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.strategy"]], "--mrsort.weights-profiles-breed.accuracy-heuristic.processor": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor"]], "--mrsort.weights-profiles-breed.accuracy-heuristic.random-seed": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed"]], "--mrsort.weights-profiles-breed.breed-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy"]], "--mrsort.weights-profiles-breed.initialization-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy"]], "--mrsort.weights-profiles-breed.linear-program.solver": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver"]], "--mrsort.weights-profiles-breed.max-duration": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration"]], "--mrsort.weights-profiles-breed.max-duration-without-progress": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress"]], "--mrsort.weights-profiles-breed.max-iterations": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations"]], "--mrsort.weights-profiles-breed.max-iterations-without-progress": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress"]], "--mrsort.weights-profiles-breed.models-count": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count"]], "--mrsort.weights-profiles-breed.output-metadata": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata"]], "--mrsort.weights-profiles-breed.profiles-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy"]], "--mrsort.weights-profiles-breed.reinitialize-least-accurate.portion": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion"]], "--mrsort.weights-profiles-breed.target-accuracy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy"]], "--mrsort.weights-profiles-breed.verbose": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose"]], "--mrsort.weights-profiles-breed.weights-strategy": [[7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy"]], "--output-alternatives": [[7, "cmdoption-lincs-classify-output-alternatives"], [7, "cmdoption-lincs-generate-classified-alternatives-output-alternatives"]], "--output-description": [[7, "cmdoption-lincs-describe-classification-model-output-description"], [7, "cmdoption-lincs-describe-classification-problem-output-description"]], "--output-model": [[7, "cmdoption-lincs-generate-classification-model-output-model"], [7, "cmdoption-lincs-learn-classification-model-output-model"]], "--output-problem": [[7, "cmdoption-lincs-generate-classification-problem-output-problem"]], "--quiet": [[7, "cmdoption-lincs-info-has-gpu-quiet"]], "--random-seed": [[7, "cmdoption-lincs-generate-classification-model-random-seed"], [7, "cmdoption-lincs-generate-classification-problem-random-seed"], [7, "cmdoption-lincs-generate-classified-alternatives-random-seed"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads"]], "--ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize"]], "--ucncs.max-sat-by-coalitions.solver": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver"]], "--ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time"]], "--ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads"]], "--ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize"]], "--ucncs.max-sat-by-separation.solver": [[7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver"]], "--ucncs.strategy": [[7, "cmdoption-lincs-learn-classification-model-ucncs.strategy"]], "--version": [[7, "cmdoption-lincs-version"]], "alternatives": [[7, "cmdoption-lincs-classify-arg-ALTERNATIVES"]], "alternatives_count": [[7, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT"]], "acceptedvalues (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues"], [8, "lincs.classification.AcceptedValues"]], "acceptedvalues.enumeratedthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds"]], "acceptedvalues.integerintervals (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals"], [8, "lincs.classification.AcceptedValues.IntegerIntervals"]], "acceptedvalues.integerthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds"], [8, "lincs.classification.AcceptedValues.IntegerThresholds"]], "acceptedvalues.kind (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.Kind"], [8, "lincs.classification.AcceptedValues.Kind"]], "acceptedvalues.realintervals (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.RealIntervals"], [8, "lincs.classification.AcceptedValues.RealIntervals"]], "acceptedvalues.realthresholds (class in lincs.classification)": [[7, "lincs.classification.AcceptedValues.RealThresholds"], [8, "lincs.classification.AcceptedValues.RealThresholds"]], "alternative (class in lincs.classification)": [[7, "lincs.classification.Alternative"], [8, "lincs.classification.Alternative"]], "alternatives (class in lincs.classification)": [[7, "lincs.classification.Alternatives"], [8, "lincs.classification.Alternatives"]], "balancedalternativesgenerationexception": [[7, "lincs.classification.BalancedAlternativesGenerationException"], [8, "lincs.classification.BalancedAlternativesGenerationException"]], "categories_count": [[7, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT"]], "criteria_count": [[7, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT"]], "category (class in lincs.classification)": [[7, "lincs.classification.Category"], [8, "lincs.classification.Category"]], "classificationresult (class in lincs.classification)": [[7, "lincs.classification.ClassificationResult"], [8, "lincs.classification.ClassificationResult"]], "criterion (class in lincs.classification)": [[7, "lincs.classification.Criterion"], [8, "lincs.classification.Criterion"]], "criterion.enumeratedvalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.EnumeratedValues"], [8, "lincs.classification.Criterion.EnumeratedValues"]], "criterion.integervalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.IntegerValues"], [8, "lincs.classification.Criterion.IntegerValues"]], "criterion.preferencedirection (class in lincs.classification)": [[7, "lincs.classification.Criterion.PreferenceDirection"], [8, "lincs.classification.Criterion.PreferenceDirection"]], "criterion.realvalues (class in lincs.classification)": [[7, "lincs.classification.Criterion.RealValues"], [8, "lincs.classification.Criterion.RealValues"]], "criterion.valuetype (class in lincs.classification)": [[7, "lincs.classification.Criterion.ValueType"], [8, "lincs.classification.Criterion.ValueType"]], "datavalidationexception": [[7, "lincs.DataValidationException"], [8, "lincs.DataValidationException"]], "improveprofileswithaccuracyheuristiconcpu (class in lincs.classification)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu"]], "improveprofileswithaccuracyheuristicongpu (class in lincs.classification)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu"]], "initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion (class in lincs.classification)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion"]], "learning_set": [[7, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET"]], "learnmrsortbyweightsprofilesbreed (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed"]], "learnmrsortbyweightsprofilesbreed.breedingstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy"]], "learnmrsortbyweightsprofilesbreed.modelsbeinglearned (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned"]], "learnmrsortbyweightsprofilesbreed.observer (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer"]], "learnmrsortbyweightsprofilesbreed.profilesimprovementstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy"]], "learnmrsortbyweightsprofilesbreed.profilesinitializationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy"]], "learnmrsortbyweightsprofilesbreed.terminationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy"]], "learnmrsortbyweightsprofilesbreed.weightsoptimizationstrategy (class in lincs.classification)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy"]], "learnucncsbymaxsatbycoalitionsusingevalmaxsat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat"]], "learnucncsbymaxsatbyseparationusingevalmaxsat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat"]], "learnucncsbysatbycoalitionsusingminisat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat"]], "learnucncsbysatbyseparationusingminisat (class in lincs.classification)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat"]], "learningfailureexception": [[7, "lincs.LearningFailureException"], [8, "lincs.LearningFailureException"]], "model": [[7, "cmdoption-lincs-classification-accuracy-arg-MODEL"], [7, "cmdoption-lincs-classify-arg-MODEL"], [7, "cmdoption-lincs-describe-classification-model-arg-MODEL"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL"], [7, "cmdoption-lincs-visualize-classification-model-arg-MODEL"]], "model (class in lincs.classification)": [[7, "lincs.classification.Model"], [8, "lincs.classification.Model"]], "model.json_schema (in module lincs.classification)": [[7, "lincs.classification.Model.JSON_SCHEMA"], [8, "lincs.classification.Model.JSON_SCHEMA"]], "output": [[7, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT"]], "optimizeweightsusingalglib (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib"], [8, "lincs.classification.OptimizeWeightsUsingAlglib"]], "optimizeweightsusingglop (class in lincs.classification)": [[7, "lincs.classification.OptimizeWeightsUsingGlop"], [8, "lincs.classification.OptimizeWeightsUsingGlop"]], "problem": [[7, "cmdoption-lincs-classification-accuracy-arg-PROBLEM"], [7, "cmdoption-lincs-classify-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM"], [7, "cmdoption-lincs-learn-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM"]], "performance (class in lincs.classification)": [[7, "lincs.classification.Performance"], [8, "lincs.classification.Performance"]], "performance.enumerated (class in lincs.classification)": [[7, "lincs.classification.Performance.Enumerated"], [8, "lincs.classification.Performance.Enumerated"]], "performance.integer (class in lincs.classification)": [[7, "lincs.classification.Performance.Integer"], [8, "lincs.classification.Performance.Integer"]], "performance.real (class in lincs.classification)": [[7, "lincs.classification.Performance.Real"], [8, "lincs.classification.Performance.Real"]], "preprocessedlearningset (class in lincs.classification)": [[7, "lincs.classification.PreprocessedLearningSet"], [8, "lincs.classification.PreprocessedLearningSet"]], "problem (class in lincs.classification)": [[7, "lincs.classification.Problem"], [8, "lincs.classification.Problem"]], "problem.json_schema (in module lincs.classification)": [[7, "lincs.classification.Problem.JSON_SCHEMA"], [8, "lincs.classification.Problem.JSON_SCHEMA"]], "reinitializeleastaccurate (class in lincs.classification)": [[7, "lincs.classification.ReinitializeLeastAccurate"], [8, "lincs.classification.ReinitializeLeastAccurate"]], "sufficientcoalitions (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions"], [8, "lincs.classification.SufficientCoalitions"]], "sufficientcoalitions.kind (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Kind"], [8, "lincs.classification.SufficientCoalitions.Kind"]], "sufficientcoalitions.roots (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Roots"], [8, "lincs.classification.SufficientCoalitions.Roots"]], "sufficientcoalitions.weights (class in lincs.classification)": [[7, "lincs.classification.SufficientCoalitions.Weights"], [8, "lincs.classification.SufficientCoalitions.Weights"]], "testing_set": [[7, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET"]], "terminateafteriterations (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterIterations"], [8, "lincs.classification.TerminateAfterIterations"]], "terminateafteriterationswithoutprogress (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress"]], "terminateafterseconds (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterSeconds"], [8, "lincs.classification.TerminateAfterSeconds"]], "terminateaftersecondswithoutprogress (class in lincs.classification)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress"]], "terminateataccuracy (class in lincs.classification)": [[7, "lincs.classification.TerminateAtAccuracy"], [8, "lincs.classification.TerminateAtAccuracy"]], "terminatewhenany (class in lincs.classification)": [[7, "lincs.classification.TerminateWhenAny"], [8, "lincs.classification.TerminateWhenAny"]], "uniformrandombitsgenerator (class in lincs)": [[7, "lincs.UniformRandomBitsGenerator"], [8, "lincs.UniformRandomBitsGenerator"]], "__call__() (lincs.uniformrandombitsgenerator method)": [[7, "lincs.UniformRandomBitsGenerator.__call__"], [8, "lincs.UniformRandomBitsGenerator.__call__"]], "__init__() (lincs.classification.acceptedvalues method)": [[7, "lincs.classification.AcceptedValues.__init__"], [8, "lincs.classification.AcceptedValues.__init__"]], "__init__() (lincs.classification.acceptedvalues.enumeratedthresholds method)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds.__init__"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds.__init__"]], "__init__() (lincs.classification.acceptedvalues.integerintervals method)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals.__init__"], [8, "lincs.classification.AcceptedValues.IntegerIntervals.__init__"]], "__init__() (lincs.classification.acceptedvalues.integerthresholds method)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds.__init__"], [8, "lincs.classification.AcceptedValues.IntegerThresholds.__init__"]], "__init__() (lincs.classification.acceptedvalues.realintervals method)": [[7, "lincs.classification.AcceptedValues.RealIntervals.__init__"], [8, "lincs.classification.AcceptedValues.RealIntervals.__init__"]], "__init__() (lincs.classification.acceptedvalues.realthresholds method)": [[7, "lincs.classification.AcceptedValues.RealThresholds.__init__"], [8, "lincs.classification.AcceptedValues.RealThresholds.__init__"]], "__init__() (lincs.classification.alternative method)": [[7, "lincs.classification.Alternative.__init__"], [8, "lincs.classification.Alternative.__init__"]], "__init__() (lincs.classification.alternatives method)": [[7, "lincs.classification.Alternatives.__init__"], [8, "lincs.classification.Alternatives.__init__"]], "__init__() (lincs.classification.category method)": [[7, "lincs.classification.Category.__init__"], [8, "lincs.classification.Category.__init__"]], "__init__() (lincs.classification.criterion method)": [[7, "lincs.classification.Criterion.__init__"], [8, "lincs.classification.Criterion.__init__"]], "__init__() (lincs.classification.criterion.enumeratedvalues method)": [[7, "lincs.classification.Criterion.EnumeratedValues.__init__"], [8, "lincs.classification.Criterion.EnumeratedValues.__init__"]], "__init__() (lincs.classification.criterion.integervalues method)": [[7, "lincs.classification.Criterion.IntegerValues.__init__"], [8, "lincs.classification.Criterion.IntegerValues.__init__"]], "__init__() (lincs.classification.criterion.realvalues method)": [[7, "lincs.classification.Criterion.RealValues.__init__"], [8, "lincs.classification.Criterion.RealValues.__init__"]], "__init__() (lincs.classification.improveprofileswithaccuracyheuristiconcpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.__init__"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.__init__"]], "__init__() (lincs.classification.improveprofileswithaccuracyheuristicongpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.__init__"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.__init__"]], "__init__() (lincs.classification.initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion method)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.__init__"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.__init__"]], "__init__() (lincs.classification.learnmrsortbyweightsprofilesbreed method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.__init__"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.__init__"]], "__init__() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.__init__"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.__init__"]], "__init__() (lincs.classification.learnucncsbymaxsatbycoalitionsusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.__init__"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.__init__"]], "__init__() (lincs.classification.learnucncsbymaxsatbyseparationusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.__init__"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.__init__"]], "__init__() (lincs.classification.learnucncsbysatbycoalitionsusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.__init__"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.__init__"]], "__init__() (lincs.classification.learnucncsbysatbyseparationusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.__init__"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.__init__"]], "__init__() (lincs.classification.model method)": [[7, "lincs.classification.Model.__init__"], [8, "lincs.classification.Model.__init__"]], "__init__() (lincs.classification.optimizeweightsusingalglib method)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib.__init__"], [8, "lincs.classification.OptimizeWeightsUsingAlglib.__init__"]], "__init__() (lincs.classification.optimizeweightsusingglop method)": [[7, "lincs.classification.OptimizeWeightsUsingGlop.__init__"], [8, "lincs.classification.OptimizeWeightsUsingGlop.__init__"]], "__init__() (lincs.classification.performance method)": [[7, "lincs.classification.Performance.__init__"], [8, "lincs.classification.Performance.__init__"]], "__init__() (lincs.classification.performance.enumerated method)": [[7, "lincs.classification.Performance.Enumerated.__init__"], [8, "lincs.classification.Performance.Enumerated.__init__"]], "__init__() (lincs.classification.performance.integer method)": [[7, "lincs.classification.Performance.Integer.__init__"], [8, "lincs.classification.Performance.Integer.__init__"]], "__init__() (lincs.classification.performance.real method)": [[7, "lincs.classification.Performance.Real.__init__"], [8, "lincs.classification.Performance.Real.__init__"]], "__init__() (lincs.classification.preprocessedlearningset method)": [[7, "lincs.classification.PreprocessedLearningSet.__init__"], [8, "lincs.classification.PreprocessedLearningSet.__init__"]], "__init__() (lincs.classification.problem method)": [[7, "lincs.classification.Problem.__init__"], [8, "lincs.classification.Problem.__init__"]], "__init__() (lincs.classification.reinitializeleastaccurate method)": [[7, "lincs.classification.ReinitializeLeastAccurate.__init__"], [8, "lincs.classification.ReinitializeLeastAccurate.__init__"]], "__init__() (lincs.classification.sufficientcoalitions method)": [[7, "lincs.classification.SufficientCoalitions.__init__"], [8, "lincs.classification.SufficientCoalitions.__init__"]], "__init__() (lincs.classification.sufficientcoalitions.roots method)": [[7, "lincs.classification.SufficientCoalitions.Roots.__init__"], [8, "lincs.classification.SufficientCoalitions.Roots.__init__"]], "__init__() (lincs.classification.sufficientcoalitions.weights method)": [[7, "lincs.classification.SufficientCoalitions.Weights.__init__"], [8, "lincs.classification.SufficientCoalitions.Weights.__init__"]], "__init__() (lincs.classification.terminateafteriterations method)": [[7, "lincs.classification.TerminateAfterIterations.__init__"], [8, "lincs.classification.TerminateAfterIterations.__init__"]], "__init__() (lincs.classification.terminateafteriterationswithoutprogress method)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress.__init__"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress.__init__"]], "__init__() (lincs.classification.terminateafterseconds method)": [[7, "lincs.classification.TerminateAfterSeconds.__init__"], [8, "lincs.classification.TerminateAfterSeconds.__init__"]], "__init__() (lincs.classification.terminateaftersecondswithoutprogress method)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress.__init__"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress.__init__"]], "__init__() (lincs.classification.terminateataccuracy method)": [[7, "lincs.classification.TerminateAtAccuracy.__init__"], [8, "lincs.classification.TerminateAtAccuracy.__init__"]], "__init__() (lincs.classification.terminatewhenany method)": [[7, "lincs.classification.TerminateWhenAny.__init__"], [8, "lincs.classification.TerminateWhenAny.__init__"]], "__version__ (in module lincs)": [[7, "lincs.__version__"], [8, "lincs.__version__"]], "accepted_values (lincs.classification.model property)": [[7, "lincs.classification.Model.accepted_values"], [8, "lincs.classification.Model.accepted_values"]], "accuracies (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.accuracies"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.accuracies"]], "after_iteration() (lincs.classification.learnmrsortbyweightsprofilesbreed.observer method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.after_iteration"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.after_iteration"]], "alternatives (lincs.classification.alternatives property)": [[7, "lincs.classification.Alternatives.alternatives"], [8, "lincs.classification.Alternatives.alternatives"]], "alternatives_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.alternatives_count"], [8, "lincs.classification.PreprocessedLearningSet.alternatives_count"]], "antitone (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.antitone"], [8, "lincs.classification.Criterion.PreferenceDirection.antitone"]], "assignments (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.assignments"], [8, "lincs.classification.PreprocessedLearningSet.assignments"]], "before_return() (lincs.classification.learnmrsortbyweightsprofilesbreed.observer method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.before_return"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.Observer.before_return"]], "boundaries_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.boundaries_count"], [8, "lincs.classification.PreprocessedLearningSet.boundaries_count"]], "breed() (lincs.classification.learnmrsortbyweightsprofilesbreed.breedingstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy.breed"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.BreedingStrategy.breed"]], "breed() (lincs.classification.reinitializeleastaccurate method)": [[7, "lincs.classification.ReinitializeLeastAccurate.breed"], [8, "lincs.classification.ReinitializeLeastAccurate.breed"]], "categories_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.categories_count"], [8, "lincs.classification.PreprocessedLearningSet.categories_count"]], "category_index (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.category_index"], [8, "lincs.classification.Alternative.category_index"]], "changed (lincs.classification.classificationresult property)": [[7, "lincs.classification.ClassificationResult.changed"], [8, "lincs.classification.ClassificationResult.changed"]], "classify_alternatives() (in module lincs.classification)": [[7, "lincs.classification.classify_alternatives"], [8, "lincs.classification.classify_alternatives"]], "criteria (lincs.classification.problem property)": [[7, "lincs.classification.Problem.criteria"], [8, "lincs.classification.Problem.criteria"]], "criteria_count (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.criteria_count"], [8, "lincs.classification.PreprocessedLearningSet.criteria_count"]], "criterion_weights (lincs.classification.sufficientcoalitions.weights property)": [[7, "lincs.classification.SufficientCoalitions.Weights.criterion_weights"], [8, "lincs.classification.SufficientCoalitions.Weights.criterion_weights"]], "decreasing (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.decreasing"], [8, "lincs.classification.Criterion.PreferenceDirection.decreasing"]], "describe_model() (in module lincs.classification)": [[7, "lincs.classification.describe_model"], [8, "lincs.classification.describe_model"]], "describe_problem() (in module lincs.classification)": [[7, "lincs.classification.describe_problem"], [8, "lincs.classification.describe_problem"]], "dump() (lincs.classification.alternatives method)": [[7, "lincs.classification.Alternatives.dump"], [8, "lincs.classification.Alternatives.dump"]], "dump() (lincs.classification.model method)": [[7, "lincs.classification.Model.dump"], [8, "lincs.classification.Model.dump"]], "dump() (lincs.classification.problem method)": [[7, "lincs.classification.Problem.dump"], [8, "lincs.classification.Problem.dump"]], "enumerated (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.enumerated"], [8, "lincs.classification.Criterion.ValueType.enumerated"]], "enumerated (lincs.classification.performance property)": [[7, "lincs.classification.Performance.enumerated"], [8, "lincs.classification.Performance.enumerated"]], "enumerated_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.enumerated_thresholds"], [8, "lincs.classification.AcceptedValues.enumerated_thresholds"]], "enumerated_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.enumerated_values"], [8, "lincs.classification.Criterion.enumerated_values"]], "generate_alternatives() (in module lincs.classification)": [[7, "lincs.classification.generate_alternatives"], [8, "lincs.classification.generate_alternatives"]], "generate_mrsort_model() (in module lincs.classification)": [[7, "lincs.classification.generate_mrsort_model"], [8, "lincs.classification.generate_mrsort_model"]], "generate_problem() (in module lincs.classification)": [[7, "lincs.classification.generate_problem"], [8, "lincs.classification.generate_problem"]], "get_best_accuracy() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_accuracy"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_accuracy"]], "get_best_model() (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_model"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.get_best_model"]], "get_value_rank() (lincs.classification.criterion.enumeratedvalues method)": [[7, "lincs.classification.Criterion.EnumeratedValues.get_value_rank"], [8, "lincs.classification.Criterion.EnumeratedValues.get_value_rank"]], "has_gpu (in module lincs)": [[7, "lincs.has_gpu"], [8, "lincs.has_gpu"]], "high_profile_rank_indexes (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_rank_indexes"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_rank_indexes"]], "high_profile_ranks (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_ranks"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.high_profile_ranks"]], "improve_profiles() (lincs.classification.improveprofileswithaccuracyheuristiconcpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.improve_profiles"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnCpu.improve_profiles"]], "improve_profiles() (lincs.classification.improveprofileswithaccuracyheuristicongpu method)": [[7, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.improve_profiles"], [8, "lincs.classification.ImproveProfilesWithAccuracyHeuristicOnGpu.improve_profiles"]], "improve_profiles() (lincs.classification.learnmrsortbyweightsprofilesbreed.profilesimprovementstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy.improve_profiles"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesImprovementStrategy.improve_profiles"]], "increasing (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.increasing"], [8, "lincs.classification.Criterion.PreferenceDirection.increasing"]], "initialize_profiles() (lincs.classification.initializeprofilesforprobabilisticmaximaldiscriminationpowerpercriterion method)": [[7, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.initialize_profiles"], [8, "lincs.classification.InitializeProfilesForProbabilisticMaximalDiscriminationPowerPerCriterion.initialize_profiles"]], "initialize_profiles() (lincs.classification.learnmrsortbyweightsprofilesbreed.profilesinitializationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy.initialize_profiles"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ProfilesInitializationStrategy.initialize_profiles"]], "integer (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.integer"], [8, "lincs.classification.Criterion.ValueType.integer"]], "integer (lincs.classification.performance property)": [[7, "lincs.classification.Performance.integer"], [8, "lincs.classification.Performance.integer"]], "integer_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.integer_intervals"], [8, "lincs.classification.AcceptedValues.integer_intervals"]], "integer_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.integer_thresholds"], [8, "lincs.classification.AcceptedValues.integer_thresholds"]], "integer_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.integer_values"], [8, "lincs.classification.Criterion.integer_values"]], "intervals (lincs.classification.acceptedvalues.integerintervals property)": [[7, "lincs.classification.AcceptedValues.IntegerIntervals.intervals"], [8, "lincs.classification.AcceptedValues.IntegerIntervals.intervals"]], "intervals (lincs.classification.acceptedvalues.kind property)": [[7, "lincs.classification.AcceptedValues.Kind.intervals"], [8, "lincs.classification.AcceptedValues.Kind.intervals"]], "intervals (lincs.classification.acceptedvalues.realintervals property)": [[7, "lincs.classification.AcceptedValues.RealIntervals.intervals"], [8, "lincs.classification.AcceptedValues.RealIntervals.intervals"]], "is_decreasing (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_decreasing"], [8, "lincs.classification.Criterion.IntegerValues.is_decreasing"]], "is_decreasing (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_decreasing"], [8, "lincs.classification.Criterion.RealValues.is_decreasing"]], "is_enumerated (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_enumerated"], [8, "lincs.classification.AcceptedValues.is_enumerated"]], "is_enumerated (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_enumerated"], [8, "lincs.classification.Criterion.is_enumerated"]], "is_enumerated (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_enumerated"], [8, "lincs.classification.Performance.is_enumerated"]], "is_increasing (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_increasing"], [8, "lincs.classification.Criterion.IntegerValues.is_increasing"]], "is_increasing (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_increasing"], [8, "lincs.classification.Criterion.RealValues.is_increasing"]], "is_integer (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_integer"], [8, "lincs.classification.AcceptedValues.is_integer"]], "is_integer (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_integer"], [8, "lincs.classification.Criterion.is_integer"]], "is_integer (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_integer"], [8, "lincs.classification.Performance.is_integer"]], "is_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_intervals"], [8, "lincs.classification.AcceptedValues.is_intervals"]], "is_real (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_real"], [8, "lincs.classification.AcceptedValues.is_real"]], "is_real (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.is_real"], [8, "lincs.classification.Criterion.is_real"]], "is_real (lincs.classification.performance property)": [[7, "lincs.classification.Performance.is_real"], [8, "lincs.classification.Performance.is_real"]], "is_roots (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.is_roots"], [8, "lincs.classification.SufficientCoalitions.is_roots"]], "is_single_peaked (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.is_single_peaked"], [8, "lincs.classification.Criterion.IntegerValues.is_single_peaked"]], "is_single_peaked (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.is_single_peaked"], [8, "lincs.classification.Criterion.RealValues.is_single_peaked"]], "is_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.is_thresholds"], [8, "lincs.classification.AcceptedValues.is_thresholds"]], "is_weights (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.is_weights"], [8, "lincs.classification.SufficientCoalitions.is_weights"]], "isotone (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.isotone"], [8, "lincs.classification.Criterion.PreferenceDirection.isotone"]], "iteration_index (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.iteration_index"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.iteration_index"]], "kind (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.kind"], [8, "lincs.classification.AcceptedValues.kind"]], "kind (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.kind"], [8, "lincs.classification.SufficientCoalitions.kind"]], "lincs": [[7, "module-lincs"], [8, "module-lincs"]], "lincs command line option": [[7, "cmdoption-lincs-version"]], "lincs-classification-accuracy command line option": [[7, "cmdoption-lincs-classification-accuracy-arg-MODEL"], [7, "cmdoption-lincs-classification-accuracy-arg-PROBLEM"], [7, "cmdoption-lincs-classification-accuracy-arg-TESTING_SET"]], "lincs-classify command line option": [[7, "cmdoption-lincs-classify-arg-ALTERNATIVES"], [7, "cmdoption-lincs-classify-arg-MODEL"], [7, "cmdoption-lincs-classify-arg-PROBLEM"], [7, "cmdoption-lincs-classify-output-alternatives"]], "lincs-describe-classification-model command line option": [[7, "cmdoption-lincs-describe-classification-model-arg-MODEL"], [7, "cmdoption-lincs-describe-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-model-output-description"]], "lincs-describe-classification-problem command line option": [[7, "cmdoption-lincs-describe-classification-problem-arg-PROBLEM"], [7, "cmdoption-lincs-describe-classification-problem-output-description"]], "lincs-generate-classification-model command line option": [[7, "cmdoption-lincs-generate-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classification-model-model-type"], [7, "cmdoption-lincs-generate-classification-model-mrsort.fixed-weights-sum"], [7, "cmdoption-lincs-generate-classification-model-output-model"], [7, "cmdoption-lincs-generate-classification-model-random-seed"]], "lincs-generate-classification-problem command line option": [[7, "cmdoption-lincs-generate-classification-problem-allow-decreasing-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-enumerated-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-integer-criteria"], [7, "cmdoption-lincs-generate-classification-problem-allow-single-peaked-criteria"], [7, "cmdoption-lincs-generate-classification-problem-arg-CATEGORIES_COUNT"], [7, "cmdoption-lincs-generate-classification-problem-arg-CRITERIA_COUNT"], [7, "cmdoption-lincs-generate-classification-problem-denormalized-min-max"], [7, "cmdoption-lincs-generate-classification-problem-forbid-increasing-criteria"], [7, "cmdoption-lincs-generate-classification-problem-forbid-real-criteria"], [7, "cmdoption-lincs-generate-classification-problem-output-problem"], [7, "cmdoption-lincs-generate-classification-problem-random-seed"]], "lincs-generate-classified-alternatives command line option": [[7, "cmdoption-lincs-generate-classified-alternatives-arg-ALTERNATIVES_COUNT"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-MODEL"], [7, "cmdoption-lincs-generate-classified-alternatives-arg-PROBLEM"], [7, "cmdoption-lincs-generate-classified-alternatives-max-imbalance"], [7, "cmdoption-lincs-generate-classified-alternatives-misclassified-count"], [7, "cmdoption-lincs-generate-classified-alternatives-output-alternatives"], [7, "cmdoption-lincs-generate-classified-alternatives-random-seed"]], "lincs-info-has-gpu command line option": [[7, "cmdoption-lincs-info-has-gpu-quiet"]], "lincs-learn-classification-model command line option": [[7, "cmdoption-lincs-learn-classification-model-arg-LEARNING_SET"], [7, "cmdoption-lincs-learn-classification-model-arg-PROBLEM"], [7, "cmdoption-lincs-learn-classification-model-model-type"], [7, "cmdoption-lincs-learn-classification-model-mrsort.strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.processor"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.accuracy-heuristic.random-seed"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.breed-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.initialization-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.linear-program.solver"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-duration-without-progress"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.max-iterations-without-progress"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.models-count"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.output-metadata"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.profiles-strategy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.reinitialize-least-accurate.portion"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.target-accuracy"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.verbose"], [7, "cmdoption-lincs-learn-classification-model-mrsort.weights-profiles-breed.weights-strategy"], [7, "cmdoption-lincs-learn-classification-model-output-model"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.coef-minimize-time"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.nb-minimize-threads"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.eval-max-sat.timeout-fast-minimize"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-coalitions.solver"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.coef-minimize-time"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.nb-minimize-threads"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.eval-max-sat.timeout-fast-minimize"], [7, "cmdoption-lincs-learn-classification-model-ucncs.max-sat-by-separation.solver"], [7, "cmdoption-lincs-learn-classification-model-ucncs.strategy"]], "lincs-visualize-classification-model command line option": [[7, "cmdoption-lincs-visualize-classification-model-alternatives"], [7, "cmdoption-lincs-visualize-classification-model-alternatives-count"], [7, "cmdoption-lincs-visualize-classification-model-arg-MODEL"], [7, "cmdoption-lincs-visualize-classification-model-arg-OUTPUT"], [7, "cmdoption-lincs-visualize-classification-model-arg-PROBLEM"]], "lincs.classification": [[7, "module-lincs.classification"], [8, "module-lincs.classification"]], "load() (lincs.classification.alternatives static method)": [[7, "lincs.classification.Alternatives.load"], [8, "lincs.classification.Alternatives.load"]], "load() (lincs.classification.model static method)": [[7, "lincs.classification.Model.load"], [8, "lincs.classification.Model.load"]], "load() (lincs.classification.problem static method)": [[7, "lincs.classification.Problem.load"], [8, "lincs.classification.Problem.load"]], "low_profile_ranks (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.low_profile_ranks"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.low_profile_ranks"]], "max_value (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.max_value"], [8, "lincs.classification.Criterion.IntegerValues.max_value"]], "max_value (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.max_value"], [8, "lincs.classification.Criterion.RealValues.max_value"]], "min_value (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.min_value"], [8, "lincs.classification.Criterion.IntegerValues.min_value"]], "min_value (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.min_value"], [8, "lincs.classification.Criterion.RealValues.min_value"]], "misclassify_alternatives() (in module lincs.classification)": [[7, "lincs.classification.misclassify_alternatives"], [8, "lincs.classification.misclassify_alternatives"]], "model_indexes (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.model_indexes"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.model_indexes"]], "models_count (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.models_count"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.models_count"]], "module": [[7, "module-lincs"], [7, "module-lincs.classification"], [8, "module-lincs"], [8, "module-lincs.classification"]], "name (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.name"], [8, "lincs.classification.Alternative.name"]], "name (lincs.classification.category property)": [[7, "lincs.classification.Category.name"], [8, "lincs.classification.Category.name"]], "name (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.name"], [8, "lincs.classification.Criterion.name"]], "optimize_weights() (lincs.classification.learnmrsortbyweightsprofilesbreed.weightsoptimizationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy.optimize_weights"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.WeightsOptimizationStrategy.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusingalglib method)": [[7, "lincs.classification.OptimizeWeightsUsingAlglib.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingAlglib.optimize_weights"]], "optimize_weights() (lincs.classification.optimizeweightsusingglop method)": [[7, "lincs.classification.OptimizeWeightsUsingGlop.optimize_weights"], [8, "lincs.classification.OptimizeWeightsUsingGlop.optimize_weights"]], "ordered_categories (lincs.classification.problem property)": [[7, "lincs.classification.Problem.ordered_categories"], [8, "lincs.classification.Problem.ordered_categories"]], "ordered_values (lincs.classification.criterion.enumeratedvalues property)": [[7, "lincs.classification.Criterion.EnumeratedValues.ordered_values"], [8, "lincs.classification.Criterion.EnumeratedValues.ordered_values"]], "perform() (lincs.classification.learnmrsortbyweightsprofilesbreed method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.perform"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.perform"]], "perform() (lincs.classification.learnucncsbymaxsatbycoalitionsusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.perform"], [8, "lincs.classification.LearnUcncsByMaxSatByCoalitionsUsingEvalmaxsat.perform"]], "perform() (lincs.classification.learnucncsbymaxsatbyseparationusingevalmaxsat method)": [[7, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.perform"], [8, "lincs.classification.LearnUcncsByMaxSatBySeparationUsingEvalmaxsat.perform"]], "perform() (lincs.classification.learnucncsbysatbycoalitionsusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.perform"], [8, "lincs.classification.LearnUcncsBySatByCoalitionsUsingMinisat.perform"]], "perform() (lincs.classification.learnucncsbysatbyseparationusingminisat method)": [[7, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.perform"], [8, "lincs.classification.LearnUcncsBySatBySeparationUsingMinisat.perform"]], "performance_ranks (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.performance_ranks"], [8, "lincs.classification.PreprocessedLearningSet.performance_ranks"]], "preference_direction (lincs.classification.criterion.integervalues property)": [[7, "lincs.classification.Criterion.IntegerValues.preference_direction"], [8, "lincs.classification.Criterion.IntegerValues.preference_direction"]], "preference_direction (lincs.classification.criterion.realvalues property)": [[7, "lincs.classification.Criterion.RealValues.preference_direction"], [8, "lincs.classification.Criterion.RealValues.preference_direction"]], "profile (lincs.classification.alternative property)": [[7, "lincs.classification.Alternative.profile"], [8, "lincs.classification.Alternative.profile"]], "random_generators (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.random_generators"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.random_generators"]], "real (lincs.classification.criterion.valuetype property)": [[7, "lincs.classification.Criterion.ValueType.real"], [8, "lincs.classification.Criterion.ValueType.real"]], "real (lincs.classification.performance property)": [[7, "lincs.classification.Performance.real"], [8, "lincs.classification.Performance.real"]], "real_intervals (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.real_intervals"], [8, "lincs.classification.AcceptedValues.real_intervals"]], "real_thresholds (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.real_thresholds"], [8, "lincs.classification.AcceptedValues.real_thresholds"]], "real_values (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.real_values"], [8, "lincs.classification.Criterion.real_values"]], "roots (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.roots"], [8, "lincs.classification.SufficientCoalitions.roots"]], "roots (lincs.classification.sufficientcoalitions.kind property)": [[7, "lincs.classification.SufficientCoalitions.Kind.roots"], [8, "lincs.classification.SufficientCoalitions.Kind.roots"]], "single_peaked (lincs.classification.criterion.preferencedirection property)": [[7, "lincs.classification.Criterion.PreferenceDirection.single_peaked"], [8, "lincs.classification.Criterion.PreferenceDirection.single_peaked"]], "single_peaked (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.single_peaked"], [8, "lincs.classification.PreprocessedLearningSet.single_peaked"]], "sufficient_coalitions (lincs.classification.model property)": [[7, "lincs.classification.Model.sufficient_coalitions"], [8, "lincs.classification.Model.sufficient_coalitions"]], "terminate() (lincs.classification.learnmrsortbyweightsprofilesbreed.terminationstrategy method)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy.terminate"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.TerminationStrategy.terminate"]], "terminate() (lincs.classification.terminateafteriterations method)": [[7, "lincs.classification.TerminateAfterIterations.terminate"], [8, "lincs.classification.TerminateAfterIterations.terminate"]], "terminate() (lincs.classification.terminateafteriterationswithoutprogress method)": [[7, "lincs.classification.TerminateAfterIterationsWithoutProgress.terminate"], [8, "lincs.classification.TerminateAfterIterationsWithoutProgress.terminate"]], "terminate() (lincs.classification.terminateafterseconds method)": [[7, "lincs.classification.TerminateAfterSeconds.terminate"], [8, "lincs.classification.TerminateAfterSeconds.terminate"]], "terminate() (lincs.classification.terminateaftersecondswithoutprogress method)": [[7, "lincs.classification.TerminateAfterSecondsWithoutProgress.terminate"], [8, "lincs.classification.TerminateAfterSecondsWithoutProgress.terminate"]], "terminate() (lincs.classification.terminateataccuracy method)": [[7, "lincs.classification.TerminateAtAccuracy.terminate"], [8, "lincs.classification.TerminateAtAccuracy.terminate"]], "terminate() (lincs.classification.terminatewhenany method)": [[7, "lincs.classification.TerminateWhenAny.terminate"], [8, "lincs.classification.TerminateWhenAny.terminate"]], "thresholds (lincs.classification.acceptedvalues.enumeratedthresholds property)": [[7, "lincs.classification.AcceptedValues.EnumeratedThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.EnumeratedThresholds.thresholds"]], "thresholds (lincs.classification.acceptedvalues.integerthresholds property)": [[7, "lincs.classification.AcceptedValues.IntegerThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.IntegerThresholds.thresholds"]], "thresholds (lincs.classification.acceptedvalues.kind property)": [[7, "lincs.classification.AcceptedValues.Kind.thresholds"], [8, "lincs.classification.AcceptedValues.Kind.thresholds"]], "thresholds (lincs.classification.acceptedvalues.realthresholds property)": [[7, "lincs.classification.AcceptedValues.RealThresholds.thresholds"], [8, "lincs.classification.AcceptedValues.RealThresholds.thresholds"]], "unchanged (lincs.classification.classificationresult property)": [[7, "lincs.classification.ClassificationResult.unchanged"], [8, "lincs.classification.ClassificationResult.unchanged"]], "upset_roots (lincs.classification.sufficientcoalitions.roots property)": [[7, "lincs.classification.SufficientCoalitions.Roots.upset_roots"], [8, "lincs.classification.SufficientCoalitions.Roots.upset_roots"]], "value (lincs.classification.performance.enumerated property)": [[7, "lincs.classification.Performance.Enumerated.value"], [8, "lincs.classification.Performance.Enumerated.value"]], "value (lincs.classification.performance.integer property)": [[7, "lincs.classification.Performance.Integer.value"], [8, "lincs.classification.Performance.Integer.value"]], "value (lincs.classification.performance.real property)": [[7, "lincs.classification.Performance.Real.value"], [8, "lincs.classification.Performance.Real.value"]], "value_type (lincs.classification.acceptedvalues property)": [[7, "lincs.classification.AcceptedValues.value_type"], [8, "lincs.classification.AcceptedValues.value_type"]], "value_type (lincs.classification.criterion property)": [[7, "lincs.classification.Criterion.value_type"], [8, "lincs.classification.Criterion.value_type"]], "value_type (lincs.classification.performance property)": [[7, "lincs.classification.Performance.value_type"], [8, "lincs.classification.Performance.value_type"]], "values_counts (lincs.classification.preprocessedlearningset property)": [[7, "lincs.classification.PreprocessedLearningSet.values_counts"], [8, "lincs.classification.PreprocessedLearningSet.values_counts"]], "visualize_model() (in module lincs.classification)": [[7, "lincs.classification.visualize_model"], [8, "lincs.classification.visualize_model"]], "weights (lincs.classification.learnmrsortbyweightsprofilesbreed.modelsbeinglearned property)": [[7, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.weights"], [8, "lincs.classification.LearnMrsortByWeightsProfilesBreed.ModelsBeingLearned.weights"]], "weights (lincs.classification.sufficientcoalitions property)": [[7, "lincs.classification.SufficientCoalitions.weights"], [8, "lincs.classification.SufficientCoalitions.weights"]], "weights (lincs.classification.sufficientcoalitions.kind property)": [[7, "lincs.classification.SufficientCoalitions.Kind.weights"], [8, "lincs.classification.SufficientCoalitions.Kind.weights"]]}}) \ No newline at end of file diff --git a/docs/single-peaked.html b/docs/single-peaked.html index 2d357382..73cd582f 100644 --- a/docs/single-peaked.html +++ b/docs/single-peaked.html @@ -5,11 +5,11 @@ - Single-peaked criteria — lincs 2.0.0a5 documentation + Single-peaked criteria — lincs 2.0.0a6 documentation - + diff --git a/docs/user-guide.html b/docs/user-guide.html index c419fd64..e3284d57 100644 --- a/docs/user-guide.html +++ b/docs/user-guide.html @@ -5,11 +5,11 @@ - User Guide — lincs 2.0.0a5 documentation + User Guide — lincs 2.0.0a6 documentation - + @@ -444,7 +444,7 @@

    SAT-based strategies

    They produce a different kind of model, with the sufficient coalitions specified explicitly by their roots:

    -
    # Reproduction command (with lincs version 2.0.0a5): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions
    +
    # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions
     kind: ncs-classification-model
     format_version: 1
     accepted_values:
    diff --git a/integration-tests/all-options-of-problem-generation/all-options-of-problem-generation.ipynb b/integration-tests/all-options-of-problem-generation/all-options-of-problem-generation.ipynb
    index 9f236395..566dfcda 100644
    --- a/integration-tests/all-options-of-problem-generation/all-options-of-problem-generation.ipynb
    +++ b/integration-tests/all-options-of-problem-generation/all-options-of-problem-generation.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 524098961\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 524098961\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -54,7 +54,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 707823420 --denormalized-min-max\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 707823420 --denormalized-min-max\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -98,7 +98,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 927184643 --allow-decreasing-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 927184643 --allow-decreasing-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -142,7 +142,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 42 --denormalized-min-max --allow-decreasing-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 42 --denormalized-min-max --allow-decreasing-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -186,7 +186,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 995908924 --forbid-increasing-criteria --allow-decreasing-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 995908924 --forbid-increasing-criteria --allow-decreasing-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -230,7 +230,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 21600946 --forbid-real-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 21600946 --forbid-real-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -274,7 +274,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 630859863 --denormalized-min-max --forbid-real-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 630859863 --denormalized-min-max --forbid-real-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -318,7 +318,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 958501765 --forbid-real-criteria --allow-enumerated-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 958501765 --forbid-real-criteria --allow-enumerated-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -354,7 +354,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 765795324 --allow-enumerated-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 765795324 --allow-enumerated-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -394,7 +394,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 2 --random-seed 608871414 --denormalized-min-max --allow-enumerated-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 2 --random-seed 608871414 --denormalized-min-max --allow-enumerated-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    diff --git a/integration-tests/enumerated-criteria/enumerated-criteria.ipynb b/integration-tests/enumerated-criteria/enumerated-criteria.ipynb
    index 2dd68abe..e7267e8d 100644
    --- a/integration-tests/enumerated-criteria/enumerated-criteria.ipynb
    +++ b/integration-tests/enumerated-criteria/enumerated-criteria.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 2 2 --random-seed 520326314 --denormalized-min-max --forbid-real-criteria --allow-enumerated-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 2 2 --random-seed 520326314 --denormalized-min-max --forbid-real-criteria --allow-enumerated-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -68,7 +68,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 564532967 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 564532967 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -138,7 +138,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 992594045 --max-imbalance 0.1 --misclassified-count 0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 992594045 --max-imbalance 0.1 --misclassified-count 0\n",
           "name,\"Criterion 1\",\"Criterion 2\",category\n",
           "\"Alternative 1\",tuz,piz,\"Best category\"\n",
           "\"Alternative 2\",got,piz,\"Worst category\"\n",
    @@ -202,7 +202,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 1022618183 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 1022618183 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/integration-tests/fail-generating-balanced-alternatives/fail-generating-balanced-alternatives.ipynb b/integration-tests/fail-generating-balanced-alternatives/fail-generating-balanced-alternatives.ipynb
    index 7df9d5c0..539b4cd6 100644
    --- a/integration-tests/fail-generating-balanced-alternatives/fail-generating-balanced-alternatives.ipynb
    +++ b/integration-tests/fail-generating-balanced-alternatives/fail-generating-balanced-alternatives.ipynb
    @@ -22,7 +22,7 @@
          "output_type": "stream",
          "text": [
           "ERROR: lincs is unable to generate a balanced set of classified alternatives. Try to increase the allowed imbalance, or use a more lenient model?\n",
    -      "Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 42 --max-imbalance 0.0 --misclassified-count 0\n"
    +      "Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 42 --max-imbalance 0.0 --misclassified-count 0\n"
          ]
         }
        ],
    diff --git a/integration-tests/integer-criteria/integer-criteria.ipynb b/integration-tests/integer-criteria/integer-criteria.ipynb
    index 16503af0..1d111768 100644
    --- a/integration-tests/integer-criteria/integer-criteria.ipynb
    +++ b/integration-tests/integer-criteria/integer-criteria.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 2 2 --random-seed 535747649 --denormalized-min-max --allow-decreasing-criteria --forbid-real-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 2 2 --random-seed 535747649 --denormalized-min-max --allow-decreasing-criteria --forbid-real-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -73,7 +73,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 86476259 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 86476259 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -143,7 +143,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 148697048 --max-imbalance 0.1 --misclassified-count 0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 148697048 --max-imbalance 0.1 --misclassified-count 0\n",
           "name,\"Criterion 1\",\"Criterion 2\",category\n",
           "\"Alternative 1\",9487,4222,\"Worst category\"\n",
           "\"Alternative 2\",4230,-4300,\"Worst category\"\n",
    @@ -207,7 +207,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 37425142 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 37425142 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/integration-tests/learning-failure-exception/learning-failure-exception.ipynb b/integration-tests/learning-failure-exception/learning-failure-exception.ipynb
    index eb0662c6..245ff270 100644
    --- a/integration-tests/learning-failure-exception/learning-failure-exception.ipynb
    +++ b/integration-tests/learning-failure-exception/learning-failure-exception.ipynb
    @@ -23,7 +23,7 @@
          "output_type": "stream",
          "text": [
           "ERROR: lincs is unable to learn from this learning set using this algorithm and these parameters.\n",
    -      "Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions\n"
    +      "Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions\n"
          ]
         }
        ],
    diff --git a/integration-tests/python-module-is-executable/python-module-is-executable.ipynb b/integration-tests/python-module-is-executable/python-module-is-executable.ipynb
    index bf539fbe..7f4c4ec0 100644
    --- a/integration-tests/python-module-is-executable/python-module-is-executable.ipynb
    +++ b/integration-tests/python-module-is-executable/python-module-is-executable.ipynb
    @@ -11,7 +11,7 @@
          "output_type": "stream",
          "text": [
           "Python 3.8\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -40,7 +40,7 @@
           "  - name: Intermediate category 1\n",
           "  - name: Best category\n",
           "Python 3.9\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -69,7 +69,7 @@
           "  - name: Intermediate category 1\n",
           "  - name: Best category\n",
           "Python 3.10\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -98,7 +98,7 @@
           "  - name: Intermediate category 1\n",
           "  - name: Best category\n",
           "Python 3.11\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -127,7 +127,7 @@
           "  - name: Intermediate category 1\n",
           "  - name: Best category\n",
           "Python 3.12\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -156,7 +156,7 @@
           "  - name: Intermediate category 1\n",
           "  - name: Best category\n",
           "Python 3.13\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 4 3 --random-seed 208978669\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 208978669\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    diff --git a/integration-tests/read-from-stdin/read-from-stdin.ipynb b/integration-tests/read-from-stdin/read-from-stdin.ipynb
    index 279789b9..d3b75bc5 100644
    --- a/integration-tests/read-from-stdin/read-from-stdin.ipynb
    +++ b/integration-tests/read-from-stdin/read-from-stdin.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model - --random-seed 45 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model - --random-seed 45 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/integration-tests/real-criteria/real-criteria.ipynb b/integration-tests/real-criteria/real-criteria.ipynb
    index 49aae02b..4935b03b 100644
    --- a/integration-tests/real-criteria/real-criteria.ipynb
    +++ b/integration-tests/real-criteria/real-criteria.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 2 2 --random-seed 215214479 --denormalized-min-max --allow-decreasing-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 2 2 --random-seed 215214479 --denormalized-min-max --allow-decreasing-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -72,7 +72,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 327117407 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 327117407 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -142,7 +142,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 802416786 --max-imbalance 0.1 --misclassified-count 0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 802416786 --max-imbalance 0.1 --misclassified-count 0\n",
           "name,\"Criterion 1\",\"Criterion 2\",category\n",
           "\"Alternative 1\",-9.46884727,49.2470016,\"Best category\"\n",
           "\"Alternative 2\",-12.0502529,-8.51298046,\"Worst category\"\n",
    @@ -206,7 +206,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 80847949 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 80847949 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/integration-tests/single-peaked-criteria/single-peaked-criteria.ipynb b/integration-tests/single-peaked-criteria/single-peaked-criteria.ipynb
    index 3eeca701..7c87b967 100644
    --- a/integration-tests/single-peaked-criteria/single-peaked-criteria.ipynb
    +++ b/integration-tests/single-peaked-criteria/single-peaked-criteria.ipynb
    @@ -10,7 +10,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-problem 2 2 --random-seed 134400191 --forbid-increasing-criteria --allow-single-peaked-criteria --allow-integer-criteria\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 2 2 --random-seed 134400191 --forbid-increasing-criteria --allow-single-peaked-criteria --allow-integer-criteria\n",
           "kind: classification-problem\n",
           "format_version: 1\n",
           "criteria:\n",
    @@ -72,7 +72,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classification-model problem.yml --random-seed 86476259 --model-type mrsort\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 86476259 --model-type mrsort\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -142,7 +142,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 148697048 --max-imbalance 0.1 --misclassified-count 0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 100 --random-seed 148697048 --max-imbalance 0.1 --misclassified-count 0\n",
           "name,\"Criterion 1\",\"Criterion 2\",category\n",
           "\"Alternative 1\",97,0.728948653,\"Best category\"\n",
           "\"Alternative 2\",62,0.268311262,\"Best category\"\n",
    @@ -206,7 +206,7 @@
          "name": "stdout",
          "output_type": "stream",
          "text": [
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 37425142 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml alternatives.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 37425142 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/integration-tests/verbose/verbose.ipynb b/integration-tests/verbose/verbose.ipynb
    index 93693f4b..4c712ac4 100644
    --- a/integration-tests/verbose/verbose.ipynb
    +++ b/integration-tests/verbose/verbose.ipynb
    @@ -30,7 +30,7 @@
           "Best accuracy (after 6 iterations): 192\n",
           "Best accuracy (after 7 iterations): 198\n",
           "Final accuracy (after 8 iterations): 200\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 42 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 42 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -73,7 +73,7 @@
           "Best accuracy (after 1 iterations): 183\n",
           "Best accuracy (after 2 iterations): 184\n",
           "Final accuracy (after 3 iterations): 186\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 42 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 --mrsort.weights-profiles-breed.max-iterations 3\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 42 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 --mrsort.weights-profiles-breed.max-iterations 3\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    @@ -122,7 +122,7 @@
           "Best accuracy (after 6 iterations): 190\n",
           "Best accuracy (after 7 iterations): 190\n",
           "Final accuracy (after 8 iterations): 190\n",
    -      "# Reproduction command (with lincs version 2.0.0a6.dev0): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 --mrsort.weights-profiles-breed.max-iterations-without-progress 3\n",
    +      "# Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 --mrsort.weights-profiles-breed.max-iterations-without-progress 3\n",
           "kind: ncs-classification-model\n",
           "format_version: 1\n",
           "accepted_values:\n",
    diff --git a/lincs/__init__.py b/lincs/__init__.py
    index fcc67812..d8292beb 100644
    --- a/lincs/__init__.py
    +++ b/lincs/__init__.py
    @@ -18,7 +18,7 @@
     from . import classification
     
     # General information
    -__version__ = "2.0.0a6.dev0"
    +__version__ = "2.0.0a6"
     has_gpu = hasattr(classification, "ImproveProfilesWithAccuracyHeuristicOnGpu")
     
     try:
    

v%}IeYS*(YjqCKQ8vbZl{*z%@JY}(b!0AAJ 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 VULEI?vtvJ~(=2g)1?AHhZUG!oh=~9I literal 873354 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 |-wp7tJ@npzj zhQ1EdaDK*ua($wxSx%5R1tQ9=8&K2%hgGm}snx(5ByrHg9i+*St8_s_n{kmV1b(8d ztQaqj)T6ATr=m7u;pzBUgBDbk`{|^oRe%B2YMnPLrh_!_(_CuLnt$wZmet!nZGRxSp6Jrw>Dm1&-{%)crV?uC>Fx){%%ZD_!04)9K}=##osvrpHi_N`wd@0DCH zwE_2VPOi|gwE=Uv8i+AzJL%}`5nw?E4pVKAOkfXE9d=Y~TK#YK`gaYiXYe7pAr57@ z@`fcBA7K!{@`G{ch1+crrFd|LYjW^APIhoLw4-7aQz?vf!Hp}&hT!aA8|s4b0Oe-b z(r`|gziIYi4S$+Rll|-lhinB0>~avg zRLWLut>Bn->zX6Yw!K!6<@{--U_sC;8NUv>hwL*QE;Qc;X-2IREYKbHVEt(y)*mmf z!Fi^M#&}=t+(vx}$`asNX5sEVGnm$BW~4^aFUUWAR86N=c~2#iDF1Yq=|sEpqrjc7 z2C!l(;SOZ^7iNS?@kv)*7Y1?+5ku+L8HVu~F^fv&Z5AS-s2G0Gok*bf_yL*bz_ zZ6tk);mg=$Uh*LP2L=~Y&G&tl2wTmksKiwB{WnjAE51-v9)cc>pk~1A>IsfmbkVQk zq6CF}^|OjfjKy8ZQ{gO5QE}#OPnueK5;K`^f3v+7V21XuX#R&- zo@1@CDMjH}qfJkFTl-hU!VAi=;Mt~RAzQl(*{01Xw=Nn&KbDC$#IzJJQK<&mg9w@^ z|9WTN;fbMka~%Mb#yS%~;YV1pzX^F&OYp&1O+sX5o=lttZvkRjB7D<8 z&7>YCsf>M{RQi+AD(xZJV_*~?Q;j(+kAhRHt9sA|K&}LkMS_c4UHuBsl&h;>#V4`4 zDxUJzDg}Ji*uKK46&#SdElPAL7U~pgj6%eVG^!0D;uUhm{DO+0_~)!xBe&FkVmi^F z_&6UF*9@d3Q11*ug<2;z2XL?(i&^0NH^Ws3__A^M&(Jh74$poLhy7UOtEj}p;eB{2 zTpU(ZoH*Pyl|Hf?i;{omeZdqzbYg+&-loQ7^hmqOMnQ8HVKnb@Vv*bW2s_ zd$^c^0%283HJf`cto~jqv}0X|O61yCbL`Ohp%nfdWW~eU-GEetn2hrZo(hM56_psf zyOyWI*`1=|*xi24>^eV0qTpT9jQ|LHzon@CI+lM|-RXV+|NPl&q*xsL^hhd8^?pl? zyt^DDp3O=|vbDYtBKCN#0E%BN=BI%5O5MmFN6>ot*OT{viQDKm7?j;UdXjAt_Z|m` z@rNpSLs(!d3l{pgw<&Q^HuNpfg4Fk?(dz4=-xFXgKUR$+(XSplpA`;yrapvcY7n2QMdxh+{Vw6q?{c^%Uw%QWDgfU7 z5)Qvb0^m8O6Age*@&WMt008z!(R~cuV;C!pfu9OZBQfytJQXe$D=IOu_za#37mF1Y zCl+@N17FPY6&qtOkkjqNSOxeKmiA{huT8@NU6& z0EyFoplJR%b}X&|WTWEyq=+1gO;c6CIQ<7==NskN@oZVLlWh%!uyLB*3h?+dVxkHd zwp5txp#%+^e?0|{gCX1PV;hCXCjm;^NvTX8JU-fo$7U&5o-=M39Hq9}%?fdemZZ_U zJ(mMjwt;zY`4kx2E~;@PT-H-Ta2c?dC&*m5yZ~rQxZHzJ0xpZEse;Qri74aiMU<$| zb7a^_^-cX~4e}OwlQqdpf=%t5N)tj7v@H z5Gs$%Il?SBaxwU^C#r~Jgk_6e%1)puOh62fcp*=P6Oy80m#PJ?WHRGUmulS1Qnw|} zm1?|94%Z3&4AD1~BkBcsN!0ahF2hp@)}<)2nTfF%YMq=2Gn8M}De6Z=5vR2kJI8Z& z8QZYZ2Gtg9az6?X7Czhx&!rH3`jo8lBI|xwxG%i5x@*HkRue+GS149~DOx$aSh)(q8H0R zYvEql{PK5oS~4rT_L{D^%0}t9BMRZI-XIuwfwQY;s{iIGQj|BIekq64*g|-u=WCCx zcb*IQvtdt%%+vjl`B!{JhRj(sZ)7U_u*^or%^)9S1Ih1ziIT2pkAOZ-X80p(fZ8b? z0mDl>rPIO8|DfhB=#=aO&b{cB2AUhiWu)yIUX(1pAaI2!6A*NRqs5$i^fo+zBBkVEQK zikZ=>%#b(mtMome_H08*`?NECpLQO;qS62%bQ;_>rgeohAk2c31{4T*LLp-o9Vc1d z*<9h3&=h7VCRcbHPld}B6qVdu!Scgg==liCiS6gOyx}f6bSG~pCLPFV;v0~v-B*r% zF9VV6XIn?1CC2z+6j^%IF;rEQOD)LeIL4l-b#gXLVVt1{zS zgl$WnM?2V1(gl z7R2Bb<3Kc2`6Mb+3aa3jaSu?^&Vwquu8}SF%tDm91zTp@U2coW z<+q+DqRqNsEWyqv>wVk-&}b*h3(c!mB;s^cod_DM-)PAzS-AhxP?SNyC(j zeVFnkd_}<&Yx>B{e`)%tu*MQ*#DOW+iZb#OR~7bGmN^!O{1KW);*go^T`3n3n4;1x z9I`LViLD774w(nNz|b8W;!Qtnl%l^V9o)1?|~P`oKja4|&P2b8(wVS>Z4 zQbYKAs2>wdjEnLNxV&^cP@xg~I;qix(Q4#jhv&j5)~d#l*g+4P!Z0{N5>+gA7y+sh zJB;F!zz*UmE)pvTT;a+NwQF;9b9^1{)fWlHhv%$&s4lw|hj%pnO-T^G(Nm_Vg^O2u zjSBd5q~~jp?Y%r#ajl`GgYad35WXH?kwMtZ9U03zOa~PraF`1x0@GJpQ{ff?6qVfIO9O|nCx4*X{{~CnmOB@6za|Ilgj|;FW97(tfmV`rot?{a zfj}$ytq^0SJhHioF&t{0ycnjaWQ?6l>A3b)83ESVqmHgS)kD$sGKfo8E0N_z*M<61 zxcJ%HHbmNfUGrFj@QS`&T@WCPA9}3s80LOOcOGzOCnT<0vqg`A6|b?~9mj)T(LE%e z9kL2+Wz!+CU_ABdSa-+Pf#j~Laby73^GX369H>iB<m)1+_p*`(!YW7 zOeM_y5UHM}1eX`m7qcNe;2h4*ryMA~rMMZi5c&)9^_IcJZ_|1N&{$wwtyc{$FRu#z?!>Y>ZFh zqNO+}eFCT=L{ z<+9b%b64{WB^~Mq{ZPLTz9K`tH-ltN$D3{{MEfu=j({kYj7#0mWcgyF{prv>NWd zQ{ke$qEao|Z)EA)(&wUmzZ`IUw4W$P){FL%tm_S3mZvh>OL=5-6JtKqI++VoR5IG{ z?WFFOH_Qn5o^9%w|3;K*D&`MD5ZgnEFE8dFlO6Nh^~>RCBk|^x2Nufb-yN+>I`Y2* z2ZoVU6!;#&e$)AW zSI>h#=BZg!`2TOOk*j2E_(yuaZrNJt`L7=uN;>=x`{Dn`_=*hw!5Jiz`iJSP0tg6l zM7EOr7Z54wQ4eJGHtURdaM0Sj?%p5ruEXFWzNaQ5=w0p8;)^aEthe>%W4+aY(h{_( z7JQcszEzJOCey2?=8Ra8CM2GHfmhq(xmsl_3A$KoDRUHtGfy>!;Z!TKISZ~zf~DVa z{5oV_ZF9h2?ZTT=i~EsYqMmjsdW^`*0A zzQF19pl)|;x1{T*zlKVfN&}wg@JlzkB9;D*8bINb@e?rmZ<*1%5zaPlE0fcc zWgx;zh!3OE6lsvj!UfOfW{&y9UPWF1JN6HhaJY z;Zad?cdwDFsw@~odYNFX6f;k)%8Y9+wxM~hcZQ*)!PsUWjLpPX6d1EaPtM^)(?wq!KxfBFrR!a@W-i%6^0%My2j%=?qA`gr$3xKhq(aj~W zSQmOCZ~Lxjh4z-1UI1f%hZ(yY-)z&ipqQR2f?^OINEc$E*k^#Mgkt}RPXdaGrzwVF zD{)0^2tK9SfIXFgs!Lu%ADNyU= zE8r1I!m=ayH8MB46hmg7bJE~!7*#O^&aMK0@-^lA^1#_y0dR(eh^^tqK(pS48|(4A zc?H(Xy4N9j;E8A@_n_LBZCZ47ksx5Dh zkG4lgaxV$!&Dp=~D*@6J>2AR@IQ1ij5-NuL=kHwJ>FH<`F#Dj_$b}XxFhhEoz^oKA z_f%!ZwGum=dOrAVhLQ$m*Z9Ef9r%g_W=8Jh5WZnLsIXEN=3)vV+0WQfu#oJ>&@>W~ z{f?)?K{7>UYeKT=8#!=o>ktRYra><-9oq&Z+oRl&JV+*olx7K$_XH)06eTmQs`||d#D|ywGUO#R$vTYGz7M@c@$|49&>t*;M zQTi1v9$dQtx_pLWA`-6Y2`0D(p~NK^Q?5D$R3%&+#wP*S#M2bRwP)5x+Rbj@wUbNW zHBGx)fNdsqxGgTFU9U7v@5M(UwpVzKTpM8#8`8@}Y^9iaOI2oEL$NK~bI~s~lr&JU>eAM(%0kVbJm_o?*Id&8*WV;udMnbkncq$xZQ&hGlWcw-0ovlP1 zWc#t4j%@?7{jS`QJjf=8lxR@zVyw9)2i3}~AVbEXeQ>q8R6G#o#1 zTPmj27t#XPojk{Ie2L*$JmqoR&6`8XzVMqq7swC&^@uA$Yt4~b2spxL@A9rXp}x}a zk!}u^u|NO((`>uDG%`ZHJd5cS!nw*&2T27U{;reQVo zpfk76HXVOPW4yoB9BV`Au=+x8i@tePs}Et#O7=OYvdu|I?`4H#YlxRNzY2!=E*fUF zGf$_kgNu-w?RD#V7UmXqkgRIMjrQQ^0QiZ#3VCYNt0|=&h8~UawNa;=F4P_N$YW`E z)N|c{KI_?63v6*Lt_?Rw)`{CR`)V79M(b_(P5nyeHw)Egssaa6b>1pBf6ML{kV%vg+_5yTd(0 z9qPFZ|B>ePF*7A0cb0qy2-Q7%Nxlrf1Uva5G==GlIaTyqp2|gQ15{SRFNsRbsiJ@I zRJdGEjm4SQ!vpgl_?4LHWNT)Ldk(r$)eVrgbhs>WF7yK8awwPO*;Cv(AfnJ8C zfAtg1^-Ea(Vh!~wIqi<2<`BN69AVEGCE;xKEo6*};|k`tMa)A1^OG{p=0D2(Jj6l* z?@1ixnPspInV)WJtttEmD;d`OJ|XoW#{9m(Q{l`{QHe3XZ}U_*^HWru8SJ|G{fgx; z*8F}cr@e^zJz0*hXMU1!w)#%7`Tb1HLjm)XGS22dXny?b$$Ku|Zo8W>8(jq;9nfG9 z!BZc}{SZK^+k>^{09@oJst-q? z#ke_@TcryMeJ3_!F{+nw-v*<7nra-m=BX#gq_is`jUy$n>I!GbTzWFFes~Vhlq;TV z@JXzAil@BwLy=H-?=0?81LKOU5sbA)#~Q8n7FZ?7`{<*k%!X9AmI*AxiCIHW;_M%8 zg=-a?o|;81Fh0*~kVC|3*4(%9mGqaWU~`vK-4-}4|7y9zFVIt47$Xq0B@PB z-u(O(N;*}sb~}W%4N9PSL3{~*jtG2nb9iD{-U#L_k!O6Bs9-DdFu#x1GcQ!X9>(-r zGbY!I+A4;#p{_vIQ$V2_93sin3f1hl4R%U&u-+M;M6ec5Qy#2!iZ=zpT9fKtu%;fT zBv>B?vMRhAxWsGZsu{Z*i1d8zvh~vQHHR2VI#|EK57zVX6&-9VpE?6rnRfF~OSPpFAbHRE<4!KCMen~mPUa*#gU4Q5@J*B}~ z3MHGJ7z3i#$pJ7&-3`{p1S5mBd0z+XccY|J!TJpl*bY(xjSJTGE6W7y=vL%m?uynk zFIc}B#`FO*CfAGFDrN<1Jp~l3!6A}7V}teQfvU``AH*jSti{t52kRA~ebJI}dugbY zr#HB^6QbI!5FXymoto79$DSrerE|aZ8o7GNMsuX+tDmj7o-_Ksp`@evTm5MMLwrR> z^YBEH+5O%0Rw1y5S#knh_6jper*T@TIT$n+6zNXoZ((^^H zGn6z|xYNf9ci<}$D|j{67FqBT>PlJQYq{ib^gj zpn(GnkU!Au|B|I|OP`DTKbHe`;yz3E&*jK^kzJB?U8Bo#fygfTtq{tkJhHioF&}E3 zOu`hE4CRLgL%Hk1qGGsbv^sd#hC;#nP6&0cQF6@--b=GTi!@jthf^OWUW6jNK7oFp zDF@E|xb^Xn_W&P< zsm77$K}&$p19)YZV9ZgbRX|muht>Eb(1UpTC!hy9W>#|Dp%{7~a@|A^cCS;iZ?MTz zx+wH8>NRrBgk5PsdcLOFs_nVIenUy4hxhsDp@FXuda!1YOzRrcO$GE2=A{yPm}L24 z(ZegDX(W1h8&8Ep4~j}P^zaduzAb$YJ=`S+9FHFED@WEt50b3w8eNvB5WI>{LP$m$7`YNa8urG!jV+@l-e@p{P_t5?8VG zZ3W$C99a)ZNV2Y*bXlHCBq8OI%}tC2QR}1!rl=&6ur9mfJY*D@NSm(4 z6CXvPr|`sG5d0P?>E_{yW&CP{j37(Y#|65yAaPH$=4nWAH;xk_#Yy1>i5ND?-C=LG zUnhy@tVw(XCidUW#JZl{R(cCnXgLt704MDdj9HWTF;JCj5iQ&R|;K z(?CqaH5YEn-0M|-V>td_!?AeENbsW=zhvj)A6;_~s0r3WskLm0Wz|4<9_W{VS5k`7AHC zHgH(yTse3L>)7;^PT0R976!_(;Nc$0g6k7q_6y)1o6#b>FnDPX#u|0qfRt7?Pca5Y zt&{Cwq6(oOxizwV@$u${p$6g&xVLwF9r9@3C3jZ0dbiGc-|DHRbr0Q678ClsINW_K*s^-K!|TCy z&$fbUXoWP>H_-WeI~hLQ#xpYj36H}Dk+IJ~)|`0|A5rUK*$@pT@MCsI_Ln`pL~o8GQq z$7TC6F25R=;&Sqo+hp?pB{7GvE1 z$y4EsTTzKI?uU3PoN+5E&J515CO7|vx9znYU=2h((;WYV-QpHR=F~@WICzLc=`n_Ld5c>uBR!^kDQnNxOOyk5xmm^OE9|8q(|7PX zx6eSD*`vHTnEv($(p}JlGek^(wkZa$au=I|2UWTt7x(&TOYoBFdtkJ;tHzOa-+FRP zzPb|fG|~pEa*Mgn?ZZG*E+76IK8fW+@sziGD6-}5UFWvUpt`&r%U(x^?ETB*3oQf~ zg56pPumC3N)YiY$?Mt4rMeSrh;x+PI92dBdp08ncMA0rzUF!CELrJeA+y{2-T|N;W$& z21Kos`#_UQhWkUZ!aaG#*m!RluCC8ojq*-yV%`TK?tW!Ac>%rPC2h)w6l_ImenGUh zd13o=FsAcV1o zlx%il42W7MFM>Jhdf+xz7$3Mz6CJo`w?cvY^AO}-qQn{(xT7y@a{_mCEAlhD1H+{@ zvA+mo+Eq1<4BUDOC~$*YB&o&*?u9^A2JS`pBm%d1n&QBHc4)u4d<;BRitH=BMg<}}(({$j_LH7tdb**cBm0;A$i56;k&!(-kz{=9Om7u} ze3&IC$Om^Vr95MH-^N%r*^oa3O(R48i+Czr$X8TyLw@EwK;|C&8;R-`mOEQxI5^Oe z)8W8@AYr9I!M_nxZz{)>2Nfh!t{-*>Q~)XjIj)fLOVMUC7h|8)I_ZNMD+wGHXJ!0B zR~(BW!Y)F?i3d<$QtJR;hR}P85`7+=D0X|BQoCY}NFN`L)<9N2znJBVMF>66G!h~7@l-g3ps3^`1R6L%0{H{Y{z{g< zEqx9HoFxbBU;vivbIOtRqP!&QI!Kr00#RP_TOq7Vd1P}FV?NY6`6Jj)$*^u6xaNFg zY&`c&R|oQ!qR>-;{A&>Q{;WJhULc?H>)&1xt#%m9@%p!y3C#w>seb(%c4aS1kgPGV z+j{FEiEjWOH>k#u%Mw}wge1T>y98s-5q$`#N+fX?J_#ftp8g3)!n!JF>W~Bx?Ix12 zd!3RMh%b1m7lkCg<~4F5EQ=(Np097Vf_tv;bB2;e65sNX#OLu9LK4;tQY`zK>88Tc zLztIJNaBwyUo4V%0-8o5iRo?Ey%Z3aqEZb>?8VZzrOzRW-Jus4a6FQDYB{nVl8|Iw z2kEjrl}JL$Bb%ET^P$$sJ)lHe0ZCXkSOiH}%`}oY8-<=i65oQbcb_tyib#TJcIzs* zi=x#|BZ;*_v$K&zE|28su&Yu?;yW;<&sL2ik%X22Aqnu!q+GFU5?g?(L=w-(CxIly z(-b3#vtW6k*i~>2g0`0>PA#&Y5pf}0xub^Z3z4Q~apG1_2csax9bTgXF$(GVif4Oh z&nMnuC}~LXT^~}s3SW_sB0Y&@Y#%Z`RX`PCb}FHYdsx0$RB<;njYJg>^HjL?2}PwE zs`w#G-&Oz)ReVnlI388}x*S;#RYm}`k@rcZLuS*!Q~Ozi%uaU{afav+2OuG%FSvsQ6BP?ZSd415v@Lp&8l7%pjVuJu-p zzSx17h6^&>mbur$J=<`6uHjfb<#F7_YvE38%ELD$ZiZWugMZwf)9WYYE{B`rcRM8u zD3^nPY*NE8#6r|_tldXxKuij)RX|(erAMG^p6^VBIDI~0OgXyON)(JD? zU>(nWOT-#ew((k)K^F8(Leoglb0<%Q13ijLF6ar&0HlWAZ%HtpU^%iigM&dIl~drr zAdjR{5%0Ie$OGjV@qm$J#C4bMAPN8@kJlnQINqgkQh3>H#aJD+PBy??6+%dKY1}@9 zkUW1UmRiz)$hT>IHPNq8BJP?F4pKhG(2Gf~9tacV&J1#&C9NW;1T?hl@_ zT6f6J5qHQLR`e0|*`j(t+`DA;^LMWw*OA+btI-%zPTwTw^Fz9lgQ^|_c|Bp|#gf+m zMT?gJ3WNlgU<|4{=n9Rh4#p>es>D+qMp5AiFHNd;B~%|7#PX4e;YO?8ZVbd;CU@iz zRD_K8_7BzJBEyZ%{(8F!7iVSn$YB*381wIw+s$WFT}a}@!LD8@cOnR=Fh+TX*T~f^ z7Na0NU!`nY@Vw=5hLXl8Kl3rl@%V~bkx5M-#h|sOrwS+~$PU>@awHHb>Ad%2G%Le> zr?o{p@J+x++JXNJ9Kz9R8iEeozFY2;w0CV78;ZSNu39G~yb)G-w*H_mwQiXE1q}Ie z8geyva=N*oZDDS8yRV6K$=rzr{ffEUAnjoE$c(#=x@T^_8OCU9pwVg!s5GvxHq;z% zUozfqU0VL$xL2`~iY&~!*>s|<{+FPy&b@K_X7VmvX5w7*R13YV2aDrXZq~U-WsciO z2Ydh5q@?dMT!%aidnwJ^p(%_oCYkvdPldabMp3zRE!}_7nO4&SgC`oxXL%}IGNY(C zbGaK%c3{GDGoI<#NOLHEASNGWnY6tEm*0F-&b^c0uw;Kxj;xo>NU{_=d@xt&jvC2t zkt9Y(2zCA1*W@I)3V4a0_-U6|s6u;3Y^Stm@g4_Hf^SBkog;BX<<^d@%#A7TL3>mEvL$A)texd}%1jYd~pAqQHd=3iQHJ z0W9c;ELE%0IU<@`5EuRr%*AVAtTDLopfeloT6?fjLrhT{-B_#FHZ`wkjL79c^HGVs z*GTu1Xf^ck-EV;FO{#GuzSDywdXBiHG$`yWWpSG$mxQa4}T zZYXIW`CIVv&dryv!&g*|h9?;^v`?6RLU1q=)rOgIBs5De^64d2cSWgBRs?*I zWsY57xF4Frgv6l8Z}C((6sf4>u3PcThAe$s2e>%@Q#oJV4 zz>AevE0sK4-3qT(?!JXXS24PkD|K$+kfrWUVE^dIKoj?vCzESng&w!>TJT>8bT#ND zh3&G_l4Hsd^&~Edc1hw@GlZbP!>g66+0jP`JbTC*L2|yCS|_gt%i9VF((~~}5Tw^s zS33`)ex=HNehZp6shkIBAAf85S^$M&L1MhNakK>(u{lm(8(Uo4*cu%cz;W{^q~5jm zsQ6(+W4vuZV_$_XD9(+s(zgxH1C+mq(GIJ|k$_T94gpGt%_M&dP_oyr-T+i3q`VQI z1f&#CMIoh2+8e8`@Htv70Ta_uP~o=BEkVA`aQqs>v3SbkxQivoCsQ#(i7Moya+Wkx zou@%=xkBW*fu5(N7WqRUsls(WpYR$Lz`01zS1em4Jzx4hLrLS@Kl(WL1Ne%>xq(?E z7w{$1RRyRU=Es4$>FpYsvAC!tjCjAt^5_St+oo+dZ9DwGODEAyuav0ZQRpKQ`aaH+ zuvjMAJ=|7ODo@Dv5)rEt^f0h&BK;kr2r8?<95IeJ<@7jo~?wRa(z)7;> zx>UDq0jQj2x5%EaSE(#znax>@O;YRRPMG&X_=YN#_op?hv_s6OcAJ}iQyQjRBDq-g<-d)8)%PSEN9G#fyi?{sLVdub7BLWLnw;ZXk-d1Y^pVHvmz>o0x_Z-SYfG(1)J(&UEEE)`OQ>PR@xajUdv*IX))HJo-Gbrt;R9$JMt;JnCwavB zU1uhBmWEedEuelGOn6~n^=hw?Yh3ICBGU8q!`3X%iC=FhY3+IveBtBvTwe}s~GWj{0Zd)kfBFUV!={sPx^d-|3{xr{lc z6YXIC0fKO9)n^%A1vhS`&(7wLdPUbO^qGz?=wZkoXb3%qddT^*MHEkkrod@Tx_UfM zg)8$>RAM%0&fuwVS*oJ4b;^7$X8E#%8kePBAg9~OQkk8D!E!{sTvQUx_9l)4yaU!1 z$N?sA#2;s&KdiT)YGG1VKNU$o(IXl!I4?O@%z$fT5gMA!y@oof7`PVb-8p3EN^#?>iL3 z8qB*2VG9f+I-TWOHEkLU_pN5QY&)G?>De(+W+ixM60fyJ&lL6k2hf!H;NAEn@9=&zh)>YK(K22X<(dAF7pV!BXO`F(SK{2ha!4prA7u1 z&ib_pK5;jjKjnoSSn`*wot5hU6B8IErrmfd90pKSa#yO&xYGr_hp^ObnRAi;Am{}I z9vkV8Do50d^pdFS*<6MTtU4FouJXCS-J zRjs*n7)PpBBK7F(LHmv`X8rUEAS>hLW_%LyQalxnm!txLG+1-3mq`rQD`ADpZJE1% zdadF3I>WJe%Hz0;>!%CUf=K@I=>fsGuGdor{fJ(C_0+6kV2tttdRG@u-vqN=c=7a3 zuTgPd{Zygu{K*>S+d_4&-jZ>eT@UUDN*Nkdu+#~(_EU~y+dbWdR@2a*NL?Q0r|LVfqguCzgBb72 zSSd3v`Jx<(Yo8f)mOK?MSSTtn!QyeA3KuLC6=zQOqhOICf?TJ;`s{zO?Anvgg^IsP zDLAfzB|GOu9CFGe>p2KXHe2lr?PygF6@QkK;HqLcR4ihL&-w;MC0FWH7NZ-~J+uW+Gu7LWNN<>EH^$|PL3037>t=s_NGt-= zNn#e;!QsA2wT@gA*0W>sbeJ@M2~Dl9GFzzc1EO+C`2F}KmW0Jq z-U6#wCeVxU)wfWO(ur)wHmY9U7^CCy`~rvWFJ0hNZh>Pab(mgz-3sU5Kj-OE)Gpma zUL$uAgxyRVa$AG5^ zl7TL1g2j0S^chr#F#5cbor4H<$R2o<@22L--Qc>a;zAQH!?@7=S#R#Y8nq|2xxX6% zqt7TO49PWx6s zdtdZ)EebY#-D^|;?IAs1y=;y4JjMftl16)brO@7k_>M$-p?M^``nl<>0`AM;$iaPc zoaNFYuxpH9W;%EeLK9QH0)DUasdE~zvi*@ZFS&a-yYCQA=r0VIkH}`mt9RbPTT@CNF|cnLJNy{k%9T1ToayvS?-f{wy3S?!aHlf+3Z!!a(vKovFGt?f0!hA0 zT0nePKzu<>2qV6$*eQt6gzRxg`EP2T+zVc-B;wnTiOWIk7m5xV1>TP8ltO`fA)xxK z^2vE9@MM7kO@)b%1EcOds?-NXx;L=`woS}Kko(|(?@+BH5u~0ULXa4vNyf1V@?$_& zBFK;9lR%K-X^Ii#;(>|bvG{VQL)daB?5kTSajsx&bfVo?8{LpJ`rE;e@=TW`B_NVN zkYap=RgB1Dr7xLIG$`8-L77vmw3EfA*#C9UIL@{HEXN{V@(wy~4{zzsWARJ_`I+G% zgyq;BkRL-+VAli$qrQw*O;_MdhEGN{OR_9o@z8zs4%KP*& z?9L49Z8!y?f28@I$MR@<6c(~UFFs_`v=m~{KN9J~%8~X0_8x+?>y=!#3&1wbWQB0O ztKi4WoVX$fDeCM2=*X+eJH9Wp-0j~UFTS4IxC>i0(M%qIUQ34Soprbt{wWxsrMJ>Y z9_QE%f}3^wVYGTs*=SyPzUT~a#p0I1F}X0KFCBy*uYm2jff`)Ovl(kh*RNkPJ~1{n z+G;mPHq|yZhZ^vW>dPC-=`O}=OfFuw>TJB%aJa7SE5wTv4#}lpq2Riw)z;lSvxyPy z{boqctoBW>eYT`A#NP`Og%rg_151hxk1WyWnH0lc`}SbP0Vt@;6vvUULd%t41x6W{ zWd1he%Ydi^6)(pp0V>4P6oZOmheqoIxu9aa4c`>)rw^_0*aExk7Pi=5@YftM&;q}p zq6|=lW@m}x*h@~C-)>w9P-KB*dco4gwNnNftgC%S%s!v z#j%GYUQflbjG1!2)!`gz%121f>o70oXPT5hv6Ettk;6#87Xx++sSGg%lFZLUe8x*T z5SdBbLrIdj>tx-w1yGXVvI0!{-w5%ep{j3qgauFIN$!CDssb2c+hG7B{*(eR_}d_W zISAw88j(`wWQO5>MY0+z=<-qSY=zsv&sBKgqpWe4%I z)q1JdI@=v+^n&!Np%%4PTuRHJbvzD(~R)a`W8y+2)7;0qQ>es_AjaYqk3&rf@^eHyboFk8$ zQHU}^JFk)(-J-;-frzV^k%4-`bfV$He1r=QfHId3#9g-VGSg)UK(I@;*F#gF9n)dt=~EIb3IXgCY9KazwqjDT%t~?J`^-ZVGNI z#7rrQY-aRIfdaQ-ZKdYP7)(*gn7K#5aZCn7r(=(LRsKgP%ham;eDudHCAYk&c@D11 zqg$wr_YXFP>$QQ##^wkn_HFosOyO%2f;c0 z;W9R8C963w+h1IyV=MIi!c#aaaL&~9b=>rqZ-3*pb-k0Va5`)vH4!#<5MzqwLk`{W zfj?Spr(F{ZHdB1e@uri^-=7%Lz?}GeIO@YsjXtoGqVI^%>O=7vU9?M5#pme*^>*F8 zSu&Y_AcW&XVHRX`o{vu=I*X^G(b*;IiBWT`53du)c=dqWRB^0ss&p>Hlq?@*SU%dY zES~aM?&7r;z03Oh8)NOpzyH}AUGXh?)mO-~Ya*F^@O4)8k*2}$7R zOPL%{JBOR7y6`YJWTwe7pi(57>MJjB2oyOJ{83+dfzRnM*@JHJbof)$l@~{1I8z_& z!K>@hKrtlN5#u+8#7BJUy2x>K#8fpFZb$R|a>ZL1YulQMQN+6UZxN2{MjBbQD=tnj zH%Me%a_jm9TAp1T;h5;0QtBEWJp$v=qb|It8Fr<#`fBGk>O*S>TaEF-(V>Cy;HEHL zcB`y_enIm1AS;i^+~>Wf6YVt?qt|d2Dd&YbmkW~4f#j!#-*iVT+Id^YGh{;zVDyhP z*!vBiA=ksMVBP~wVMs9>$Y1BFa2v>qN=(}JBc2MEwkaykD)0gB^twMuA?2oda{{dZ zH2c3MdHjJLgY68s#nUIGXq@EFr>WzB$04yY{aQCJyCF7{6)z=}tdQgPL2RLO$^ICM zWQRIBsLL#VEvCpFQ-r!_4@AQTwP1gDpnrSLf*a3auR%1EcS5g4qNa$C^2F%guKOm3 zOwqLCgMz^M(S0+z2`=m|#t8K;;5jq)S{LyifBNVMWS0~DZTL{0{8*lL=C#q0TD{f+ z2fsu(G`MX_-g0C`;Ihq0;hzz$@LnM9#bKVRT1T#o>RB;SZxsdz5;fXM{>tcuKvd>l z7vYo0y~I;qA|rxs7mkl2-clFjmW$)_Q*nI72z;`k(dtGhA7LdL8OjsWi4NsQr9%0> zIzXqG4@C1tnJ$e8|Wo(dP!6_uEn{uZ7J7t<9LC#D~on&H$h zA|w0Ua6<_0fxnQC`4~GMJ3w&p{okaRocJCft3rI>FT~LO4}LxU(?%EBxawVci8Ki}L#_Z^S1A zHvha3e-y^PO-hNtb+9J{`*K432o#kG=bs(st8_tHzuk4Q*wzd6$Kr7RZiefsl`VD* zjOzMeJv$WYF@Si&mY?upZi?6&SeBuFAAAy_UOZu_zcE<=|K61J;J--vA6glsJsb}U zoD%5Y9(@oCgguT+^IroCJPm{60;NZJSRgN7AE`A=bSRPTXEi5pht0mRe43$`e zQ{m#gqTg}D7eR-ln_`@NaP0FQ2;Dtd?*`iz4dC}1 zZVM;s_dwIg0RDBJ3Kzf?m6!njBc2Kuz!eoIfY+%(PAeDbcw90$Y{WKixsj78k zbk}o3(H(<^C+ghjejyN5JMj1j;3MYbc+ySmPvD~o- zxLyxUVK!n=$@_UKoX8ZF+{!+0^Z+fa-;gvu&2nPv0=Gc$DLHfpQ&{AbK3KmY2EJU5 z0S`q;23+6hGG72iSbSE14^mLsENL{r+7>lW24SK~me%<-ah6}>itB9q)knR4kCFzD z;C^HG3=D6Hl4M>iKNd^aMI3-Dcm*rts+!YWVEt* z@%v01;GfL^T^DOB8qST{R@d`E@f*D*Nz|&Ko2i3c=={>|H|hw!2R?}iE}k%g-!ugq z>negD-yC1pg2nKRdwR3O_YpDSTXo*8*uA6aZ%P99VvtPXGeXCCja;o_&j=wsUzcn( z^qfnNp`-)%id5iUgzw0}Z6=Q_=Pc7hg{Ymuh7+}?Zx|gNDiE+QW*K7x_W95>GGK4w zsc->XQOOP1G;oO3@&}s!D_Q!sRzVIO_1OHviivtj?cKvpL1-@_*n_Qlf_ zhy9a4E1R_#T;8Jtvt0Ee=Su@K-OXc`Ftj^e3s5I|9>1_73_ z^ljmD5MZesa6AN9Q;w_$0VG-13A!v#B?OT2$mS->dZ>BwD=?js5Wr8(Ez9FjfbHQl z5V#UWn*su>F@*hE*?%4o=+p5#BG#&ypeo@@V1a9*HA`cG7YpSDEO1N-{>YJGH>Kdf zvvDq8s9Hy^;_Im=IDoE~lqYr-;2l6#!hv_%DWIWN;bZvjFc;U_OZi7f zt_2W@Zh?Yb9L80K>BOC_u%Q1LPt~Gu!2@0+H_)=U0O|SKW&2srvwg}?(zxKf6fU?M z-;ub$n?kav|1$klSRKe<#t{)^t8vTu|IISSLW5sG(@1FW7oG|S4HT7X&|vnD_tDUWP!q6~5btG8OVj!@9{+QG$7Ay<{SqT9V8rDnVE85WB(Cq9`12i`U3?>nsjH zdcNY=PStZ`*BD9~2V9iG0oUO>5(mgRBO7_UXCLXXGz+Nf*2X4_q+oyI2m-a`LSeSAFsa|`e}2K|Kwy$PJ(h`!OF?vNxQ z|Hu<^l&ATBUZVn@2I-0Qd0Nb_$jo1>GDAMYU*7lJ-uDb8?e?CVa(h3(cck01Wlv+A z^Kus;xN{e|ESkZIllv41i$XDDE09@}puh0oLLh5c{jjvG3(slKpJkD0I(e;vao=~LCavvR$W9U>Zls^{=r(m{J`ZFgCFu4Jl;vetbtF z8%y-$2fkv%uz;&@>X*JjqkxfQ_P34cP45;jpKz9~`im1--z4 zrykhsUygkb*hu!XO=H^wHd6N497h>5HBa6NYFHB392f#N6bNE)jpaNvtT`PuDg|pc zAU=4PGMRi>BM)_9EM;L0{~EcomC?%P!J3W8_F1ZRB&^Y+Bv^y~mqZo|Yc>E`32XZC zNx&NMR20^@q;1cDa#9uRdNGT*#$`aaY3{cx#th5PGc1dzJeK8^uWH@4+7i>TxV#p% zxMX9mD8Pn2rx91V17_1@XKApt6?URu2EwrSF{04ZtGz}A&=b=0b;nja&&OSFC~3el zm;x*};yV(s$eAPKzSA_XfK@VhaIi{nB^jBD+mHSP%O?v{bUkF0x>PSF57`RtqLl zc-hQF*&H=bu7)Wqge#CAxnSZCO?WzP&stiv-f`LG<`94w#7KONl4Bl#I2t!xL>zE- zS@cn}@kT9ctEEIsQnNjQbKB3lF4I;O4`y7BgPW^bN5Tv}7ZkA3Ymx+GVa5?aR>F+M z_#|M4c#4bJ%4OpQO0~F+#bstO3qCm&u^3_p@Yv!qBGIi#jujVnuTv7zmwT!f71CFE zja>a?7etVruU)o6d+ueKp`=6la4Mvqj_=5j?oA{LhW2T{POlz$k5+EOLTyoh~_ zUtC7D5qR zj*7q!SXOB$bPEpb>~=aOXkgAOTs@0I1M|E_u9C560O|RvWoxD9%w`)(8V$5kXkcf2 zN1_3D2FaQhnQkh8fecT11oqc92ihks)2#$u=H*5b70^?IpBCO z&@4yR0|Sz*>kM6%rxFZEd1P}FWk1wB*#YLLBpBG=+XQgD7l#F0E7efoRVdyR6lh^M z+ffNJ4+iqv|T$PB}23b}4eJ z%l!{R%9Ua#&~&xV{M(+6MS*}HdW~EKV?hAY^VQ1MNY9BqVkl`4usH<+zKQQh5a7=q z+0yS!M-^Z|m>aT@7-RVPe2O&=HCeA0QkMJ9b(ThQge`+tRtsWg| z;Qy=Y`NX-|*{;r1?#KQW>F+bm2tuxhz4re!XbOXkDa>BWQ{isMR#al{q1?bz;nE33 z#hJr{anAGSJwFA(KFk$D;s=`l%`DHh|KL)PwiJb%f^cN7FGto(K_poUG5!)zp<1Qs zg5M(RkvfE^{lYOh39dd~q9=aZCDz4FZ)1ngrnibpuGDuBcB-kXpGfW>VL6DE`(1L# zj@)wy-&c;XCwWP@OOjU{R~LPZllTEUeij}E73_st#M54ADcG-gDxAYpRAR>RSDp&z z@D!C?HJ*+kMh{W`KuWyRD`UYA=e%Y@FAzr@C1%O)SB|Ww!jfz$74B?5x*?eq-mP74 zZECb9JCfn*D(reM8QUR6pLVIGTqm&OkMLgZpd*63+raitIwgAGB2Wd`9085wcKh-5 z4~G$ zvv4xKmh=Kl1r{n>220>S>bs`ist-5dSjKp5xIR{ETv_jL4{fQnM{D(VyVcw<(T1xE zHaFXYwdMev&29EW#pwvN7&nJ!`YLom#=nu(LR&|?%;zc`Zog{HDT}oLq-Vz@5~~ns zlZsdiK+H#duL7cS`R7IWB$j`~Q{M8A$YZ*9tmZ62_ffk*ezvBM*22dGPA!qI5%u(< zP`QlF&Mg9qLR+B#^mb4CqLzl<>@{+ebvE`RJzwE$9oK$P-G6?op`;VT7pInnZo_xv z(vUrWWMLmMorH3;$P_h$6KBzGFNEHy+*(BaxI)nTSx(uAbPqHIpBDpnzRpwO;Etk_ z4|lkv=`ohRtqmO9`H>v33wJoOPn09;!5vA~^_VWpMYfBo=4whFF4_s_YI9!2fy@}) z%9VOf%5*Txfjf!WU#dC)dhuay4&mN%ggwbi!d;Sl^;}JfKE~jm#g3o#*Fgmf=V}-6 zRJdHNz*si&RJ!84xLj>BOFveL+t7=z#B8p1eL1q83QMx(RQPCcpWRK>g1Qw>)!xPq zKf-xsk2wl)Q1j#!Fb^e@sGQ`+!jr|)C>!?Z!*+M0hNZUKUyM1!D^(!OOOfV_PqNT< zD((ff2chPUD&0&j6!k7avin(i+E(NxJuk%p+^bqgCOvw*l=L8oB#~N44_#N&u$f5a z>Xk{nD`fxM5j5<+0qwV|Pni zuq$uX!AGTPb^(9X%}ySXbVgS0Fy5}Iey5~tZ~IrfU@Z#Q@8mTqkd`4mU%70(^qk~B zK$+xjtxn6XO{HbikQ0X##WKa|*PV2S$@!2NT@wc8m_;mw{>}86JNcg2COh5*Mg-bH#^ufo0tb|{mz$XE} z#8VuWQIV?pal~hMTNEqgXK>aMQ0@`8Jl2{cP;4{OKi(^TY;J@t1gyG&)#j&#e&3td zFNbMjOAqI!xK+!OPO$81_2E~Qx)l0+?W0~JSJT-g3#8}kmu(uJGySrmq_NCRDJ=6a zz9X?rU;-&h{mS%JVWm0D5ZO!ed7x6#yVr7cjPvh-v1G-%C@NRk_bYsQjoZi6<%aUahT~uJB6Fk zDL4g*2j>hyI99hDae?1NY#70S;eTB#MSQy9J*2&CmBPu;6owg-6|Lf_aI3wFO3cdj zB|H@_D^gUPQpEjnzWF)N&7x#|or(tX2l5mSxVcpg$=E+2D>gRyrFd@JNyWj<&HTbs=Ezr zx1C?uEKvIwO(Y^AwHvAo<=;R7m3PcYWAM8+$(Wb zh_*s0;w_#IMs1ti?lmf~PK5M)wX-!{yG2!s_;N!@r-ZLctrOjh?{KAv?=zi*a@SfM*ET3$6`Xn?3zZV02zQ|MIppT-G4}EYRG;sH` zwePa@ZC&7?&!cj{F7)BZK3=aDx9sY;i+)h zT7j`###8Bv%i_upM_Kx@>N^Cz`0C4MYcDEC)>B|fwwwZYKU)jxRybRGJv;memz6!{ zD3n3Xlj|XPl+2^@GaCy=7S5z>z^IE5KZ<&m+V_7I<_tHgAefgTMHLn*%oX)6E!^GB zO4YU{FX@@Y0sOma9hvm#@lw)*@R0;-B|U5r;v+y-raj-lCz1Aur=n?(OWGT)PSy0@ z9dV7Dqi)mOBE%mXmVaVc7EgIBcd-a@86aTXI<$&FqOvu+4)OSy+$>EeospF*Mch5q z^^{a2J_%y8FK3AY_uIe5ZB!sLLwdfJ*$V3U%s(0SbY}LNRA%-Ud`D(xp?M^yus6$g zWQLZ(k&~eXR-oT6kvG`#{1tZFOvsY&bO*qRH33`Ft1iozs8m; z9#^J&tMux4p3J?LOe~^R$8=f_Gq~wz*cMoSogvtBX{X?MW1I< zBY%t918T2B!M#**5ed|^oC)$^G;vABlq-G^$V#C0A$$@*O+3Y+9u>-}mn)v`Sk{~4=TMWRJZt5uaT?r>{>=)DxaV3Sd7q-Bnnb4)a8|ll&)8De3j+N9ge+=l8=i zpgsSefU~sczXKh}y=rQLp5HEDJl*omp#nxKSgf_{@DZ9#wT3aq8hp`i!n$0fD}9l8 z|Bn@~t!ADJeIw4mlQaX>N*d2L^?#8ijUmgYs>Wqyy%OyhrwSYOSdIVhT4CdOyH%yI z@sQiOgeo#KInZ>Xy~dl-Ys3~diXlW7Hp1KRzpfQFo?v(nxhS>-;#g=3!;DF-mh)7& zb!0^)W=;G&o(h**DJmI-jhSw*TM~u7(tYlW?(QHajV_i;ytBc{SvRm2VvuVDfk}LJ?L18qm7ta(k-oa9jmHAuca2=U5L_boF zs3&nrv`Z2f+!jfl!vc?S3twSJ&%(!`T7|dDzRy$PT%4j3GnW76sc zEd5yZ{R{L0k;746mh4Wi<-&9(SxVcpg{`u%2D>gRyj8Y<9e#w%a>pDI)!hd6 z1nZ1R6*e9zMCoQ^{_Cm2#xP(an#n%UYoU||=T;UrE{;fP2&u9=a^d7AP~PaDG7JH1 zLo-<6_-4!q_EW|c%!vk{z3}SEt0sE}cj#2PBT;3pRl1;Hb^)uGwiu;Phtg0Jmsw*i4>-L6^^TETR3XZtT&`n_D0(2 zrPDUzB)zUwE^)KBt>ylUvrDrT>Kt$IG%;#7?G~?*>%~}Lfb@Ljv-MqjNmb`~jiID7 z#J8u`m9E2glDDtQ0lP?uBm0wbWIZG#$-2JNWx2qfSn)bX4+$xGxJW3R zy!{_L{21NJl{%A0?fSY>F!Y+Wpw+Me)`I^++}jy?@zF0s^q_J?J&8-AU6Od!Vcp{p2mETjAvG)$H&iTvqm&qfiDlPhJGxvt(KomEu@PvP@!S!yaAj_&OI1kCzf41d$|OD*;cq*C#xum_(>S{;5(MMe4ma5w{x7zVLhUNbesBXhP4rktEDyjCTXZx>jHiyvz&qimEq0GdW7ZM{4d4go1D zx$r%EBB1^;{6`Yk(^>v(z2TC&Q{;p=NnMz-Qls!6iLKS;*zypRWXtuu?vM&3ePNc1 zZ0LBkkW#+c+(j8GHBTM~D=ma|s21|6-V$=yUvgzJdxe|mx|l0aK~kXR-G~W(r5sQm zsJX-{i%}JkL^H1_(t4Avi?qK%T7-yIu6UKFx>jlAd~um0&x_tgJs7GZxi>9}*Lf6O zmuo9LVzPT-&XLD-fuzql>6X9M?P0t3p&XyDxQN7dTI__9Fz&b{V+thi1hNv_y$hcN zwi8crKuHC?>IIUgcqVi%Tp79oPK&glA}it>(nrUDB&Saf9L1JI?&9^B21H%0g}g_p zNTFKD2faqFcC+gtNYB?P+Z;R(d$*yaq0k3XQ0O!Gj)X$qH+JQ{C8GY(#-#$J4wXa1Z1XF&);N zh#656BWEYC4sw?1RwD`PH>B)GnlXla6k9KG1T=-|h{>@|<*9J1%!*3Piup>O3YTLk zDoz#T2`Gv3(#Xx%*iyyy>{x6k#N}g`N)b8v7)y4v99b{ll4L1H`LOZ-llLWHb`@3r z1hPPgfe`lfVZ=0$G=wEU6Cxq3N{2v@Ma-mMx?j@o(dq8#_ZreH;{t;+wu4H$0HS}# z6~qw)6#+#+KsHg90Thu%P>}&q+;HK4PVJ{|-E-^S_qxSz{50O~zE$T`)meUZ&Z)ZN zTp_8wkgAY8RZaqx({PgQ1MKkGSb(CEx$0AdR%@M9KUsbJB+EhUx?duPOx8Vv@Ry4b z_EugJZqdpsj`M7-i!c41?D$)=^!&%iA7wd+UHXSZOV1PjMKQwO(o4dvT6)QGtCxPB z*1JjboPF~~pX9(o%+kkrr&&A|&O1fh7Ji-I$Z`-XV7ovs;P$C);R!D&M%WWDN%-|G zVBth)Cp-RD3D{{ol?VZ&E;3v&Q01v`P)><)jIx}`Q;8T$rXyxE_wQ%v$EwP|LodFn zuw*}8jI5_9l58Lo~ZT? zZy+tr+UC$}uGkIEt*rLmjf>sb9Xwl&;6-r)_1$x$s00hUufb@@77AK`7W{KuUHddE zg6@iY!Jlh!xIa^^BV*rsc1$#-69WuZKAgG+rm*|ZKvYJ)U&SX8`4&%Ek#7;qX%8A>`9_Vq+ed=|bVW8%*A*}d&vrjJmpDY7IWg%Pqmb41j}TvzMF(QIr{ z>;&4PqF0Bqe6wz85i|wc7Xx{g@l-g-qo`y<9-J4w1(I~_`mShj5vO;`0h8SU z8*%C{M%IHok}S2Hl;s>5e#vhWdr!3<6i$aDPXECUKSs7PS3M)}a~aD4oy7Fo*iQu3 zJ%jL-#Rz*VFA2A3<(rQ<G^&6BP<88OaD-4>3PD>6(j5|y(HYKrI#GH zTI<6Rrwuk7dUnV_RYb>>WIn2mzxmG8}R0<*BqtS#a9)U z?8l0c^%O;tEv6`~k2nQ=a9B^i#tuJ1PtwO6wSltDYtz9e7K{bGnT^uey>YH!kh6u; zM^f%Z=}J^@ejOtpGn7Zq3iQ13#9sKEHYw?8^j7Poo=UxYs5;mf7?R)8hLYu&SMB!Y zA$BEQ{qX`f*CYEsQmrEcH+r--aD%&HyO>VkhCPt-YalB_H!t9m2;GRMyrCOP+8eDt zkfKYlEZ11qMw@0HNcpp2`BlTRc*2Tsr@}4WB1t6^%miitY_|7X zyE3a-j$GMbqf3&xIvgiAcfxoim5g}5wT$!^W5feI?-Yzs(@6)BBi`iknr92@9VL;A zm(Es{-r450=`hS(n8Y3>*~!Bsp55clkofwotBXH|lb(PdHwgHlRy7NLbUMYw>Rbmh zW)aD}Qn|akQmBQLQQuc-4P#_M!-Nu<&SV!wCZZk_6r%N6Uo7~VN2vZFXB zl0sd_akqs7BEeT28lU%QP*d&-E`p<501zQp$&(>IuU1t25M4mK@uXv1!NBq)jM8%9vhatTjh~;rZNz3NV3B>XQz9SJ!a{jDC z`m5T<+@sx8?tJsQ-0r__!O_lEtzopyoftXV9J7eL z4%^piduZg4B9_Khog}Wo)?+k7k2*K9pBWIYqcD=;b0hHQdFaDeHghBPLF_6oh1(q|D&(BVUbq7JS0QtU#iq^Q&5pq}Ioy8gT)8x4KgE*0 zs2Evq_aw<$@8pBWaXufSJ&!scG9o8|%4axR|7CXg?CxDr$z1h}r1?!O2eIq^EjeVe z?iqydDMr{^c}ciMD_(>@amYlw~UmRu5T z(URx>&T!0vhja9E*wM!#J+YER zU(aF{&N!}PN8c*3I-92wAy(8KhBNaQ@>Dpuri3>}MLy0`i5N?!(`8fSUt;OUD#_=e z7hg$OvfnI5)>9KnwwRi!IEWO~Lxbpr3x83Wt6am2C8bbE4CUGW=s#=3Oj(S1iaT(7XBl z964aJMPLI>|5=QzhkhhkYC9>*Inwl!-#poQ5B;e1pvXELXu6UeevE8ou6jni=SG$T zI*IAWLaq<2dj{dVixKu#UJ`E6$~PZq%CYp%vEy&a(leX$KeE(gm;IH%vNJ@del`|g z5gX$zxg^@6B^TVbTGzvYrZ=*qk6G{-Ke9JZr4@dJS>Yut^;of5488b!Xol$WVnjW$ zl0;w6Vin#%_pzgIl~|p{Q;85O>JGz!ruXwyxImM#yfG^BF`i1qSTdb18}a!fOFvdg zJ_o({O2U%;MlrIUnn<$6)TH%+rl7wK>&XM`@FVmjeat#;#BP*q^V%NZHVcM;cFzjS z*llp$7?87J(+5FbKp9I^V%~|-j(G||WCeF(PIsssW6Y~|!}1Edo~{;o!J4~~{g+ki z$Y6~gtqs=T-q$Xv6Rcqmf^7OZ9j=*yPa<3+p7MrkC~0rBy0TK&S6QyHdW|;CJP5L# zVR?JQvUtj3xrGNo4n?V6TN!HNEXe*bL8SzlWGt!JagbSoo|Bc8;}KJWHFHbWqGAyT zdyVqMl%T0EVy<-hrqWQ-F{OKxF(rIQ#*_lnXbr+~rmtpVOQsXT5Q!}% zTu7JcKg1;Og`jC{Fo~zaA{0czxvf3QpRE|xD>PRIt(4>Cy>>+b20BvmCc z$v;?j{<9c69wItNutTjX9ZHViQ*41 z+)0sH$=7vx@i%ac35as9fGF^%nEcZUr@B}j7E$yv&Wq@`xFaL`7U2{A2HTteVBc8eiFck8ZJUilZY~{x<|MPI!{kUc~m^EYR zYlJh;FzuRaN;2l`$aBz-Or!k*p9C%wPjMhe5r<-DO4^$>&Gpjrv{Tkxx8=uWuNanp zZ&(&jSu8(uGEko@-A|L1==-f0UbCj!U9I#tmJXErs*UPEf5gX6b`N5)P+v*>CAf#A zvKhe-cC6pmG)?Op318g!6>2c!c+4|{* zk`}=qA@F+Mow%)n%cRXp%3rN_-NTRwL7leR%RsC4TllBqs)^?FSMUe02Pu3$=I~jY zfrKPL46n82>A(!0evUjno5s_l98XsBYg2$q9zWSTRn&Kgfmk;ve!O6;Hfbl|3CEap zb3a0pIZcfzxD$6z(RAXS4Bb{w!PnJ|{^~O`eQ+S7zuc&vf!8^d z%BAiy?8F9!M$E~Y7WZn`>Ns|-T$%A4$%8m6$J$wG?zGJz=5R{dX`7IJu}5semk@;7 z*z%pkxf(qhvy+cHSF^og{me>rZEvIAQ94;Z?5^_Pt{yo>KuVi7*6kgbFvPA(WCp+A zbfT@#!)SfT>6y)ao(0SFjLbIvJ8F1pbmaKPH1)2wU*=~kaql;5g)A0ZT6R7(g%QMT z0YAo5;eyu6X(gv{P1vk?#)l@AizZCki9OI&W##s?cj5uPNQ-H4p_D-HA7+)~BX`LC5r| zedXvbY?r~J$A{7HoUTMF=#6`iH`iGlv=pFnV`#V=u0kr|nbx}Fimi|CsjR8?S9(gT zM@q_m8OPg14^{&ve}TeODm3n*dQSEc9PA|3Ix>o`=f-%kPBi;g1e_>3Q}Vb25S4qi z9q~!*)x=ZQ#z#2O7L+`q;@l*mU@^bEwf3uRLjwcol~2I`EAEr`VHYvdC%2nUv`>C4 z;ge^${098-EcfqXP$5q|MZBf`u=>f06wJg+274G3jAN9a{? z+=Sm967xV!D2p298mIH``Q1YU{ky{r`rWWzQ<`nHKjX&tRe$4KyBfS}Z4H2g+U59! zI71#qczt->$IuDwsYEHu;~tRP;|e=v{B7a(R^7fAE%lzaeH;gRiy0^tF;@i8H*E+3 z17}{Ww?%{QE&S+)gCk?3jJN#>5S8BcaeNZqRy?7%eSd8({Ci=o4gW>b_n}+F=$zVs zx4_%B)pkLMcTfJ37ddPi32VYUSS_f%01On|c5Ig}LfKmmIa-~@dJ~Kl73cv}Agwi>PoUbrsAe%} z-`x1#AsFB5sjgX58G?X(>2#35dI^GjJ?75UdiqYon7JlQh9e7g&87CsR%v`92YgJ@rfWf@Ytjyh5Y$)DlO%5epRdR(%^A0A@u1@=66-|}Wkj{6MireP3 zBVaaj0S@Fx?z(nO^;X8^2;k8s_H1dvPARFQ#<=Ke-)B(P5*XxZ^u|Xi2?$~kH>!Cg z6UoGz-&f06COko25vm1}QO)8#Sb_buVpkUlQ19aEo(Dai!@>U243=%D_gQ*wj8E@G zn{F4}iE3JpMRMM?Ik11KZTKa<)7l81#7;{*WyLiGsL+@Z0Y!6w=`CX0+YDR^-(Q+8 zyMkb=z>*VPeBD8%9bsW}SL43PYea>T-LE0NRH#&lnT5?VL-oQ{MbD0IYba@`^veWP z+8*DLP$>~ceyeHU1W-z0VuFCuY3vYKpmZ`cjRZY~o>(GAtS-U4wF# z07<_@+_05e{Vb4lXe7jGKsZPG;(;|K_@O#f8Xl}y8YWcJd`A{CeJfgYJ;?L|4*eTu z=+ry8+KaQMLeqMtEM!94ZkIk5GW`(9%HZ^m@JT=>@st-bQPL?~>p-048pD~iY36aN zCk)F!Gc1dzES6>VTE(B6LwE;aXfOxBb35ZGkdSu*}L4riwR z1PhZJrEPEpZAA5eMQKRSmm^mMJ-hjeVNV027Zbqf5BQD*Msnt?qHoDE8W})J;ep^H zCOR(Tm@%=U-B@l}2(&9Sjf6n^@>Dnoq^L9pfevTsyRyJRpe1s^1OjC&0)&N_H>}XC zD8`@%Y$Su!VA8?mNY^ub=Lz;;N*g_s3iin5OlL7l7j5&}OQ49kFbwh|gFWE^3Og8) zT@vr3Olv9<8ih*;t5j36PZ#A#Pj|bV5EO8&Cv8zlha0^{IZy!7^99T`j-KWDs-dJ&!0!?$;2L~Kq5yaPtVZ2$ zI%y(ClEMkW0+Uw{4D_jTh#0s3B+D4<_8*6)k#7G*o(kvo6_sqaZw8JjBJqQr{?}Og z?&5Q9|F3eu#O>Sp4v?LBB?nbg$$HLQlBEWbw$0(pCBIGhZMh!l+(c=QZC<+)Cbgj7 z4#yrG`<3mzU2WAqd?Bn_(ue;JUE5Vkjhjy6}s47+tWHAtm@WZ@C1) z1$6JE(!9<2P~FD516{m38T)f;0hUCI7P{zLfcHaiSgS!w=f*N+^#|L!8#TLrej45b z1b@I;>rkyD0fC-m3kcBQQj#%8jaLI%2?)CJNdN-zG{J!25Rk~cnI0Do1e9>}Et7pvC8%i1q{3!ti&cb&j6tJ^rHR%(kiza|T z3Li}Yfh$}(jD8pR);w%2n514^2T;$!vL$P8U(zCOPtuq{|VjMuv*M45HMf+@C<(| ze1qJ+=Yjy!zf7GnwR^5$Xb3PBS_lZRTO3Q)Y+=hn0N^h;V;iZ~kpMtXumu2UX052i zMg;Z*vJwEy!zTd%#M1-=fJMQAjFaU7@$91d1@Seps!z`StGq^LUA;LTD?`Y{x3sjh z{s>RBqI`a**NDnKn*>05zBIYY;@PbwhLZOAe@poMrTC8Y`DWUz?vzarO}P9p8&)T3 zi-1Z&^SL7@pYF$K!bjDmq zQjV%YQ?NA-S0@26zMLEU>j6hbp_P zJb{ebU|;7oqIQejU?V+W23@h&c2S*O|B|7k5%v^B*yQZ`mH3X_UfZNFUm=hi z3HehPA`y^HEnHLwcBA0&V=RBHdwLj}!nDM|<6rPpIC!k6Wa1z8Q*(b}>ARx9q2Axi z0TcAYlAZPy4)&#z^{|g5OD!mEnYc+5KSs7PS3LuK?#FUKCo%mC zcMG7GoTztcF~Z);OTsN$`Q}k?aOuOScNIJSh^0>-bd<5S&1;_ptu2U0!}r9f*j0Pd zFXsZL0k@$Knv9^pB~m?85RH9aS+XqfxeL~8o~Z)*7_F?7yL0?AA8NdQUllov=+(%xwG;g-c} zYhby?&^&FLc}(OBhUG6Bmc>&R%Pl-6vPg?gTQpvE3q*1xh!mkDrY&|@#GGuO7$o~$ zSRpqH8HI+v?={MSWRadPP_8U`#_=XYNh8_m2_*X+d`G2<^kP`0f86xY1b$6ngWy-Q zW0wm@@kRK9I{(Y^#yXi_LDNX=`WK!Ghg}twOcX=L4)t*6XS)tF{+kLKl^ItAI0U;1 z^x`8KLre?7$WxWF*a(U7jic%)qy!K6ylw3%| z9{30+JheJzmx~y)rxTt_aitRwVmf-_Zz+M!f)H-HQl3K9fMTBbNIs`ugF2HE(!p-GWY%iT30^cZ$V%ALz$XEF#8VuGP~M{X3q?AD zvDOpt&g1Mdlf9y`N4w~e!w}MY)iR4roV#niD@0maV)8*H7CI9gg&RKVHKG#DM!=As zFGsHJ^-SG`hLXk&n+ zn}Cm`t=$aO{{l4;L0jtRnO_F-^Uz zoxSJpaS zSWW$yTm_=3EZHv=BkSp?B%3bbxpY+W+k}FCL{0(~#c;*f_t@dH-a=7nZq*-V>Bp}6 z19HIetN!z1WW80FWd8|QeS@nDV}#gM-v}&&Hn!r~8rfMa_1HC^3BC9}nIT##M$}tz zNwh^PF1T&Anuqh8i`db}s5vzzVJdHJmI|HN2zN^xxS|up6#VOn8p7~4!*){pDIk?x zJ9|V@vW9R@`p(|&@*)zo`jbHRLzudLFkGc5cA$nruzGMd?v#H9oc>c)500?H=Zc0G z7}yGjdxmNq8UNI?V|Lq}xB<12;iP?;>cI~IQ5pUGFg}Usr+CVWeu~Y0>#7HjbO3Um zx}u0HCAA(D+=O>ZyRyTNk*(%deIJ%Sox=1Q!M>A2qZ4<0Zw&daEwU{u8eH zN_O}yS#@U9($7+lUGvieYt9fow-`}x#U;@et$4FLrJ$OJ_b`{RqmNl|YD~gZzSu04 z^ofmf{|tDFmtz}4z=y6gy#)n0Q6#br;`YxfUkEmBBltpzPTllQ z6=24G%X)9DGZnc=ygdvr784BO5B1Pjtxe%+{)QGZ-Nml5tG?crWP2Ri9jbNYmPF5l z-I5^6vkUEPN!Uu%CxNWolstt`VpAfX@@`5fX>YW;5>+RjE!UXAr%f{}QC~DHzhqbz zPgyLtuoAUH3Rkf@)EpHgf=qI+RICa${X;b4uuIzbYZO05VeQSmMmcs#NY57~R|-8t zIoVLsyQCcxyQHc3j;bY*3t^T0O{RSl`=b;l$o`0w{!nKVu0P$M<&1S{3!rJ_u4pMw zh1(S=Dw+7$898Ko)lYT>PGmW7m!8`f9WRGW_C*E;z*(nJH%JYj~hn#KHqK%9LbGo#~B0R)U(F@JWCg@f3#;lt+M) zDoWa$HO=)jxFBDiw$QHRNBNJ}++|q4+psL2vRHoRWS~A*I-w@Nv$tF4Ku@JFy8;$! z1Nyt`?c%e$)irQIKm)#;*e)6;p^D%SKftbe%r16SJ%Q&P&tlhSV4iaylKHjQh>A5^ z?27a_iSjJ$&kQ9kRl6cUc^*E;t+zd+TLl+Fn}w9WS{w12ArZzfF9WUGZ{Z*EZAi`M zukgd*kU27)5I)JV^r!G01*GKSS|;9bEnNmWqmhB;FcVgLYd;1K^0=eksUmMzL(Z+w z5kFoqR-1%h$HYG+J539nrP4aoL$fF4U$Qg#CUz!0 z^RB8j$XIi=vQD-!CA%aO8AenEY=fzQEq8ZU z1{;;0RcDm@hAVYd1-nH3_9XGkmGhhc!m93pa$gmVpME(MA!(v|_9%8mBXwh`=|n5& zZfHnI^=u8YdR{&7c+G~ePHps>w-#64t~4VK*)_J#;8bV|lM}PgI-RG&mGvnqG1;dP zo(i|mQdCG;-?&xY{wK?)Ykauf*azhFliir9VO1W){A?}X<;945J2FY!It?G-=Bny5 zT;|!6X_ulZZ{H_ogF3_r=}jMjcHOG-_U&@EN#*SULA@90S!xOCPdaT&gl#jgFAYo* zzqc!S7rT<|;BS|siBa80cq*LgDk?Fm`z%j|Q(Z-c%;uX-AugSI`jcLW%;*Z627Hxe zJyx6lC|87NGfQ@p>o_c!O4ie3Nj6;za_MpYoU^CIzmtj zl@_g${;#b{vW{QzR(M}RU!#KO=aHwUt3m=D8`B>9g>w6Nr%sD z6UII$C*gErnVpCTIiaJEu&T6yyXp}xdlonD|!GsJp< ztJz_=!pA|$ugKLQCWj?^b1|}>d68t(^<`q6&lPeKsECH0&rjIlvqnWx$z1jDwfM^J zhyQ35^#zu{SgH7xoDd=vVakzg{iPUNp43RTS|l~$@igI@)cR5>3cIFlzRn@I2q~g- zz`7=BvuFcX4uYiPTXLF(V1R|%f=Z;r-(m|IoAZM zeAejZv{A64e>aTh9jYKaz%I5_=29$`=@=a85HZM(F42EiX?3OAzqVBEhwv7}xX!Bd zl-3Q`8>Q}np`l8BZ~(r#+ZYgqHEXM9RQlZx)WO)U_R?`scr#QQZ0^3{Hpu->Mjo96 z*%6+Uk+Z|2vl63`Xy8^IH?JLs?Nj2>$9sL#?RQ)6eWM!=j=;(cj?5P`Hb#QuI+@l9 zy>OL0qf+r8)sI;wXBhuF4UC^!t>tM!}wGxN5KwIqG`TAk)l^@eWd37=Y zLOc#rGtbE{j%P#2f;fi81mZg}zD!A~q%Cte=5s()rffftPaTc`DrQQc=m=Ah7$h>EGZSf-4c+ws0Es;zy!bvfC9S>j8X8 zmKsIMa*k>*$!`;YUabd}t?;&Re|GpWvX!~&eh^J*rvGcJm`Aca(P>RT8?!VZ2|mqC zR^DEW6;C=OD=m@^e+;dblkmpxU)hO>kdyS$M;UnAy!Lf4R0X$WTgly(?^pvnv(5Z> zOu-?FRifZ~gs(qvyC z$88ZJx@5azv1b*o0J0JzUWrcvBZ{X9#)t<8L(Z{Cac>4G20LyQUfe3B_X$Cbw|N2= z1v&2V8s$KZNY9rsSFAmwaqim$lw6K+{MB`FEZQhaeS|Of11dxy`=W3IsU=ddY<#cP>WO!w8ZrHJYwK zlQ7a{7+*ADq}t{9<0cqYDi5u#G{#1oMv!VfsBDE1WCuI^7}?5P^>D;n>1z0oR#o4| z@<*pQ9Zen`kcu$nNVeWlj4e-UBwH<#n(%mfwRmMn`F2b*<9f2!5D)vSdP{DfxpHlkc-) z5*c{=p6Ns*x_uGRk+SEVSjI)ZVtgx=pD;{@U?Q9S{4q3z@lX#OMt3jpRJiIBMI|Oa z_$p6@LwAY_sXiIEO6AS2ZwU&7UVId2vOUVho1d*{?_7+y=hbHj;?$J6)-x9tG+Z{} z$Tt=YdD}Ctc1o^z`Utd7R+Y;CBZZw*D$jCkjI=aLVTl-R1aHa2{_tO zccd6^l=7XzQ{j|PQHfE$H9Qqg`4km0Ycu48I@3y0?DD>iHd@a))p;9o_WDOV-)FNt zQu$2>+Uw=i*I`Se^ZACB(z_(-|0qV$f0#|snZ7#)H?q4 zM8!gg2)h2}v)P3hDn zoyQ`!URQ3|ZxZd2(Z5r8afc_%>!mJMz5rb@n?_CN62Q~7b#5J5Pe3`dHhUSxj0 z!CBS!dA8z^QIN1dF4Ap^<4EAI*VF=kM1GWHc0s~RKvcs1-{6yg{o-kYVgG`@fpSj< z?5{WA2zGZI`p52Ch5q*xyd^<&wcmjM()`6Gp@_;kli=mPr!AV(sH}&r!dy9oxr^tO z7WGu>-K*-=wX5obhIQU`{NL+82o*tQPHNItc9+BKJipT#$Xy&TZ_Ps-+}oY;(Vb zc&SEEMfe?9%H$vHpbusT&7!me#QM+$4Xuv?nfr>@>B-dTR+Iw+^8X4$aerk8v7-1O zjw><lpLN}$dygEUIE}{4sKmM!n*>ZWpy{l_pY0c2UI)UY!KerE6$~{HV+s-_3 z$3w&VO;4?rkD_;bn5?8*2PXbqprwPWD`^fFl zTUQ*nY}JaTM<3C-q|^qx6WHDi!{<{&;bXY*9nK)9-Tc$;^wcVRxhd%rJWm^~1$g5UcHpVy7tH^6V$1850O}paeQF+D9WYdWTZi^7O5h%M+y)h(Iqb({bw4LcP z1m)Ot)>hCIsK-Qw=JHgysF0$PnR+$j25Tjr?c5*8QjhiW`^(`HFV7G?su)qv!%L!6 zwJF0n$~6VIP55`Y6zR-(+l;WZ+UB*_!0r_E@3Rs{!~HI)fikYz>Rjaju45usxd`p> zB(-K)KK?k&RbtXk zSZ?8sfqO2m3<rnFz)eYi0y7Xt-O>+cKL#`J!iy-c{FK*- zYCaorLVCWSxH9Isf`<(y4P2HWaB1Zog17wojaiBzysuL`gaR$?oNv$0xhtBu8+A?^F2&JpqgsPZ zHh1UXe&$-gwE7rFWNe&#_uzKMd6l_;Q1fnVc+~xaI~YctwdyFHP$~BX>tyVA-jwXy zU)V)Bgk6M4!9U1!qHVe#O9G!TvjmCpFb>7s{NPcIBxWaH3 zGBa!x_&8_^1Boe=Df3jgT)m~Obk=ggiDJOe2mh8pF$a=drN!HqGA8Y1{%SwLpY}>RMSGV__D<*+Dp$I`uXJ0#a zm9BVOpnrFP@byHbKdj}JW^F&{HII7}j!b^za?9n`{aC|kecmX6W`Vmcwhna=3=JQF z-eaK>8c=TbhKoIx!Ue63q2cbvz>tUxmrFySGV{g3svg&A8lRY_iB+Ea6+`-DG+ldl zZ9Hdq6b|QJGaR;^-b3io8~@XZ_S&u_3V(Jq@;M+X_dUPBC$aAlPg$D?;r?21>>hE? zO)|_@%%koc_Nd47L(Ot!sJK)88@rg1PW8{G6YW%wNjTLl9WU5XQhW#e>JFjz+}DeH z*V#95$eA@-n?ch^@472bh4Ze8N{n~ii>JbQS4D+**O_XD-HFcjvD4hwF^{8vw#MRc zmQUAMaGrLFoPOeI4KW27&Cizjiekh)e=CVolS3KL5hXQTHsNv)5wk(fXN2^okHB-e zn+E!K2OM;{VH-ecw$=W;BbeV;;U605xf;qG<@G+7LbiasC!s&`9bh_`a&4qt2thM34=pFCdQ4LV-mtPM~ch|7fJ)(bjU1bPP3-uKD zyWdtT5(ZI`e)n6Z6YY1GCH(F-#GhK$1Fm=1lvlk*#U1d2hTq)V+xwwuqyv76r@}d4 zMJ2`ozr<7F9I&E79PpNQlI@dRqs-*wbgub?Ed-_c zy7tP;(0zSF=~|XoPVQ&>OBG|RBe%fmO{^3j7cIq}H$EPRbF69|>5cX1tv5z1@2z2` zH(moor8i!SPr@6Er-|~$ZM9wSeEvcak648lKc-wIvfRd3u(A!DQey;)a`w!OV%wgR z8Mb1(?&)rq$t2r2Ts!w}PqLy?ZSVIQc}9ryMM%#VCf}+cJX6Kp=NL*FajZbZK~h-% zhVRG}mOFn|dp>D83BiC!?32O?NrG;25`N9-M7(1Z8H%e}`U=Y(TeEZpG=I!oHYv$|!Q*Up5ADj2jTF=xl9rG~9t&DFI{8+`}F8*IS?JA#7i{aNP< zbZH}M4YNG-zL>uiwjUC=f{(hXVz!qqW35v%gIlPr6|?EUeW4xnNjSi1s&%B#*7M;` zlW%5K*qZ%r`K~}#dhIvjlknQ&X`%wx%4_dit*^ptLOz!r{%*MA-`iEUt@78?On(#N ztPl1?D$4RN^%~`H)=1BnBG<-w2IT-lNjvLP63+S{d`CKKGkI2LPBuL>;i*&DAf9^i z>VW~BJda6X_p*$!PPzx0Mmp&;cq*KeR#Y;bv>iC6sl_bV>3<(f-(7jmHJ>jBOk6Wd z_G87!dJb8VweG9AG_{zSCVa76k92OLRL3^2?E`aE&==1R8NgIWY_w8);qTybCcN+| z=%n^j3zy}E59sPTacCG$ahIxVL{V{y>n&C5ZVp*j5}Pj!j6(UZ>`35ilwkbPDZ9NZ zT9k03jHj?~$KkDpuJ+2yoYfob!*%s`-FzWLs!qAqX*i3wnpvc#+0{2(09ECxC*8Vw zw6c_BjH`bh$VylLYkU%}UOY{(t6vB{RHZWVdHd`Qy6w4D4u87a<%IbB$v0Ekit_n0 zyhc>8*jiYm=ZljoiJsxwz);dYe`UhwZ;0-OhE z(@3}f7M=>{_7#=p-2QTwzPtFG+wYVEj(7X3ijno)z9dV{A7wemK3u|-CfvSUk92OL zw8u8D{RK>OLAOt~;Evf!_57}GYUlqxT-1c~Ux{w(Z^mu$bz&XbXGi!~n$j-d|34Bf zQ`-Okrx084|N9i+&zdmorVs?^!nyo_Y8|=T*HdpH02*B@HcpWmyW77O$Vv!s9X<&N zAf6@|0vrV5>Eul^xAAV6zCANcPdaZE5O{;v>x5u|`#d3w!U7L_jdEZCr02_(Yg;{Q zc9)@~vB2sC7PtrBkyyZ+LaR%^GW|3G2U3`63J$!=GRDGzKS0w+II!_|sVT{^V2Vm} za9}%@zPtV$9M~FqfdR+Efwp2~JvboAQd3A-o=7+#*CU;qC@p&Aq{$E8hxg4O8A?ob+%6%jZz78Eqfr&sE3Qe6h|3qXU@qUB3NgOh~_ z12i}=3mT+yX^k3oRtO+ea9&STts?<~UIq&g&=OlgiUkPg09gqT&c!DI5X9321BAU@ z;l+bC*{5Q6%ftopz|PcVjj=LHbD~^cI-lAPAp4}R#MC!*KIr^T9ri(|)ike)9xt|9eI*GCK`?fcgzeE%4}BYnSrK}h_`f9Uj1Z8GvyZQ{5(6vU1>cDngY);NxIoQ6|N9hQHiOf*_EflMe7t5 zGIP_#oZ5-aJ_R$yz6{tz{bc8QA(wg9lJgM>q0I;02L#&@DP%v1562pFjuY zX{HOSaqo>5e9vpH!{NS5wdSM%0fb8b>De*vsS|CwU3&-GGiPNk0iqJvUy4rx*o&tu zU@yF*uElEpyU?;aH#_eqoqVq9Tp_#4Ew#qSJ5J6+`r}ZTd#xu_QF#AGuaRfBINyZy zd^vKRg|=I&c<`%+l7fSv9*3r2 zwPH}ji#!!>r4*ISAfGex5KefF<-lEf4k!Fo4ml4_n0YG)22%-pI6)Goc8|8r5$J0k zC&)!fXD3R1Z1dWcFs}tYI7$3DRxs0jD@B1xSE4XGAc%doDnB?`c9skZjssLU7nZ>dEk`+^fA<>YfC@;@ml{{#JX<$nC~2tB zNI-?N@f{T!6f_!8WZF9VJsn{SF~=~M$x17=;r=v*WWp9L@kblB3AK3nPE%?->4Ef1TVi8DJ{aS@44^g>uKj|P{LjHwXb8^}s*vH+h1 zHW5#8j$T>&=7R+Lx+jsRsubyFmE%vDDP$$#gzxo ze4UNsI@gY?In=+%B-vu}g4$A;)Zl{5k^t4j1gVpzL661Q)~M{@mWFYaO{?}dksJIh zyBd+X!B3k`w5Fbmno4qm@=$IE-ZUkAB)yUL4R$R01@EdJCt!*ZC>e~kQuQsvLP*uw zyG*_gO@Z5(tl*tI6)r2NsKmtc9_FcVFkMk0S;46=qk2-aGlCoGS7DaLvz_DTS-xD& z<>31-qxY(XUBM?PBi3J2%JbHlMw6#q7v&b!zY3D z#Zwm67Y?y?3BiM8j5r#+=Q|2;jJz_jU3#KK=}$4|?s&QJPYbT~L@Nsa4|t8JJhJ#7 z>G{&+3a~a~DlOP;C}~vjo&^4{;5!okCm_LjrhNz!L_(VsCdj7Dc(1rv-x$jm8|(WJ zGzF*<10w#5ry@YaM>p7D(gye+cNK6$@lLqy3ap1Bml^ak6OhCV*RpK5bUDm$wH$XW zX1KK&Q4cdnqSW|NhI0h`n#BxqDbksV(jD8p_Af9+1-&_`>Y-LJ#+55Q)tSNPacL8K z*!Q6G>Qc)X+`~G>J9}X$FC{YwXcjLScf*4wIhebhg~Gp$mN3sNpN|83$qbBIPglBd zPE?tWo(Jod(Gc3jbi6W~AKc`2?U$$Hlkm&pDX(9qq*J)o5eUmQhHq%o%>3XshUIMy z%i<}ENXh{D0bi9G}E8RIuQ>w4vE4AupVwaJjy8@Y}=ZlXkd7c5BZzyT-a6tk*?1k^B;Gv#8tKyxehbG`d3L9i`%q~a9dt>4d|HAUd zLWp-j(?|%>$5Y|r5Q<7Bav);|^k9Cr>u@g1g)0Iaf;dYKn;-~7Obfv=(pfmUmeFFw zJtQHCQ`1Ko&w(Ti*LflkUiMHfPdY*9o98d1IHW)kN{ws*wpMo+AqWa3PbOf+P4KGD5U!Rp3s zUO&{Hx*~=!1XGGgIhj)Q`LRpu2g*D+b0JRj^=6`3`WnvYb+NzzO*17KlT!RSkd1&7|YH4oq?@A_e zCcY!hQf1|Bq@GgBI3JG9C~}GTK{GOK{{FuT8bb$kp|# zW~WxTy1#WQgq#E~vgtzo3ir5)d5vUf3QN4sYBi&eimdVFm!tl(R#`K`2>kb1c$Xzpf4rU=QLU*zpxcjHdLO!n; z)^Lu>kGsB}_xvyp_ZMckY&*R{(6eJ)Qzu$IitHpC~fJrGY>+XLYl zTbG4g6q|*#ZrhC`W)~XSc4@iDV!nPtbCEm18s!cr&hZ*i>07$hw!?Q)a*+p^_9282iF8t!Ae%Vj%;Iv9N3(pffyBe1DIk{^OmPxVg~Jqz zN@gI@j5~=O*0R*yMdy%1j~s3+ayX+HQ4cvtqSW$HhI0fC#S}Gx9OP1@GZUpUws~y} zn4*F{ofH%$>|dlq_Y#qx!Uax55-&#owWV525O?-7)*_(@_zX9*((0@8i531sUb)*@ zSp0=(IrALz$8cbuH3Orj)0Hut6P1Y6^I#n_T0y&{j$>vMk>3WgGIIAFd=jo%Jmq!G zlynN$I!a-=##j$+nwf~a$FO{_VOcz7vE0H$ouZ!z(NS5=gW~Rf}TBm%23h};u8r7@eIDBLXOV-S#_WEeL63#leX!SoT;rF%z0b!if@3g@Y4{N+z7}hYzU2{gqvi1uQSFIB?*i zT@Idr3zwdji6e|3aUvs!7GuGK8j=NS6)F2UpoYtP9>n3LDdlRV^Ax3Fwt4MwP_JBw z!=@=oDBV%b^iaC7#wXAdKcTEc7Q|SD$wu3CX1>zC>ZUCBi0{P_v;j}h zoUG+6k+pP*>BOaX@2l0EGriuZDRV^+kqhQ7k$y6F>2qb*+mEw(2Fz7n>tpm2 z_jBO-t=bn1%U?7si>EA>pE((*&s9mv=CUVyF6nDjhWg8m>KX6_R>3M{?n|MJ2wdM7 z{C&IAMH1@>Ug5ql!*3?e*_8B`1UfCvs(u${J~zbqzSoE<8Vhldo-f|6jClt5CPPWf z+2sgvo_BA!-72(LCefGjS8FvMHzdM=l$U{4?YHm`kzmc|uiy`$^eKFjFTs8X2}vkM zme{iLdIqW93nf6|2>?ZvvG(KC5@C2z%F%f9ssYj~B>`^u%-04PB1r@LOt3 zK{w=PbdOomUn*N=oL4%t+UPA+8+F$sl?LF0)aCA8o9dlcT2~%fT`39Gt*)t7dd$+d zut&Q_lkTDlLuKC;WzRW$8fWA0b~c)`Tl-~ZeH|-eQ@y(fb;WtrCNUEEUCq1kR8jfe z6^7CN^14b#34$5(a3{H@+6O=NRqKt@oTSIfd8O_$)K?D-jlgHOdMfKXO2-X0sssJy zzSE$BY2_iy2Kp<-)5C9K7cX+NQ!<@soAep9NhCddOv?rx#FS@-TP9;CdJW_cb^#t?nU2-YhvZri?PSS5SB$KupOS34gy+&v z$#0&3il?AIl#@UO@-#j1lTLFs`y1ZPAtyGJr>JDEI{841#@dd?I^4`=xrvp5&7l`? zh(rc*F!9D>On4F@nP`zj5bj$o7%PontaO%QF*^$pfLNaeM3)WO?kMlu}WU9 zLIycHyFNTPI55;$RbN*gYW(Z)K%-J0yAa2|)Ezq&1$UZ)sDXbyQL!8jE7?wJI{?(q z6StKC+iT$BjnOTG5k4Et9VG#2r!ZON8ArDcbr7sZ{tSjWcTzhYupw-DQ!`&UQSiQ* zF05J%u+rl$wHMX>tVsE(){!YcJv%0l+KB-~yV6e46H|?R0T7i5zxUyjNcf4Ttn8VH z9Ed2ft0rhFsCks7ypD16zu^K!e4U-}Hm3h6jjXn zC9jbe?&6#Q((^^fl~!$-RMGJ#4J94A{yc`RNt)_Y_>N3d`H|zBO!H9WI5K>m!UL%l zGC|I`BBA?OzSs@qUCQ z{Yx>T9;}l@sePji=O_fqU32X1OXO0dGZUpTwt4O2FhvEu^5zMPm+FzFChDr6IroCl zCaQiukFMwvwPIPGcSo$(5tdsO6qjx4)g(~)m#p{P1Nd=^2&e&bm)i55UqY7Ws@9R- zQ;*PkPqblnMI7(RmJBZeveJJZhEKwOil+(opZltWK|U86uGV!0%H$zh<3&v#L#7*v zxgLkhfKKy7D#}84dyS|ZvilCC=Sz_*xSm-!*-+As^vZ-IJr&=Pj?_$^)tNI*4^8;e z6gJ4>%<|JIG6);zS>Mlc$$HlFp=qRN{TNS$^Q?+Wre|dnGhbxsyJEok*3ZcS6W_{` z{YEjeo_CdGsr{oY=kTsg=Y!OG(12VxAM^k_{21BFTy>JnP`XHdXZ7(JmK!>u-2?qS zRjf)GtDOhiYjnj!@_x%F12RAe@=W};7!#gENG4h&5rq3DqG>_F297RK?F&P7EyU^5iTE7WR6La==2Q=Zlsr&7M7Zr=g@_ z;a3x|@L%v92@Cx>wEA?8>8J^Gn8FP~hi@R|l`4Nqy>~cc{6UsO)<|CnO(T)vWjqxQ z87eB77=cO4Ud2*(<$%M5SIFTKT*wf;u^3Sg14yFOCQ^oTpu%Qz!8sQE5q9+K7EV#2 z!W+&7Kg(0$a=|&q@;jbND}|$g+0hVNo32^Ik z!E)8pxry=vwt4Mj5RHPka(fq7dcHjsUizL!qs)VGaTAfmuOcWrRY`9a$~+8Frl{4| zxKcBve|B)@Jp6iMwNa|pLkBim(UtX~hegYwhe^MN!+(ov9f?WxY*|c-p5Lx`EG9h_ z$VyE54tx@rR6OOyq?EL)?6}_Q`UQPB$8wFwt7y~AiwxEpmU|7$;wg*e79Qi9=O{%z z`yAh{S)jR|gvt32^38CWQqYQkua=(Vdk;*$8-$O7#us{xazJCG=gW#KW}Znr*HF^X z_&S8ftvtzhxgik-%~2=$Qurh((sv;t3E}A)TjTTP3|^v+@`ZV^>RDS4RPwkHeUuLe zV0}dmf7D0$@Hy!bu0xY}7W@e%Ea(y3qkL^kO7%(u&A(&%>&!{L_y%@{Z&lprgSAw2 zT}kxJ`!{ebH`}o^cMxxXbG|L@`c>Bo*pqmBWSSu6D4yot*zKsJcn2F+ArJ&#GG5nF zS}q^pVse}QtE*#q4&N(_AGv#$U8cyIfu~F-+IU=##)BNWTabHD$|RG+Kil}ds2Ni4 zlKNwe+2J&bzd`cc{A`8vFNX1uNn)!B{|HTCjC4B_-ivQ?KQ;YS71+JFq7qa8unkXz z+s-H|WcFsNnRO>P`^?=m_jR0e{j;6(c`ToS{yF)K9{bbu?h$-W5ezwF9E=Jtj z{7B-~&?9=JjOWbcq*K(Dk@|i?Xf&( z#+^q!`I*5sHXr&4mT4;g>G6t>%C#Vh%aZ+KF|wY@O0ww!pX=~N{xqzouOF6^Km{_K zhP{m)KI=RbmCRKq)y2wolHXY+e2C>HRtA0~hfidH5agM7rWg~RL`WuDBoT!BCJcE{ zFv4lr*VtKz5DYr>2m?wRxQiWh7yRpq0{bwCw4Kx*2Pc$gHzoE>@=EZn9Aj9wz}@b# zM(IW|P-4GLu!~@g{q?wmc|t+U;BL(Mmf>eGKG!ig(jjh0>F9FFbd^?D@M_U&Ka?|+ z`>JPEdP?ht>y1+Pz|c^oJ_vOVrN%(10X?jR3zGWXeiZQPYA+oJe~0fOmWQAa94=F; z!;LJ1rONtpccX6vo0l7Kf$8dDI8>qTbm^(UiOKGApC~}A%W}gu0CSU(Rp+qE{2x+W zOW@(?wrPWsj{a7C6sC3ncEfMi5ArBcq|?@W-{^*eBV(f*501%(ZH!$gUO2Nn)IWA%?IUns zL2V8Gb20vd#=rLoPsDH&FVLGV_3yj^#Rlh8TzR&4-nEZjnAy(4Xesg6!7j|1<5YM zfSaj?@aSD*1g?f_&yMG~y(i<#Vl252x6sWDYSj22a`}Ri5gmDpiZuVX*NCbmo7hEq zzEHV(tigdgg3r^0O~6_w0A0=q@~Elb~(1umrXk{mGE6|iI{{fKiz zsbsx`c;wb~)&D!9Ck{j>)Z) zVB=W&zK!}@T}DwysY;Yl+=O`h)5>&ZZPWHn-==ky23FT9-Eb2o+)Uf(h1v{dsGdehZ~6!{>QULypGsjT+0a>zjgfFbDJ&7Ajo>Zm$>DRS z_-xnWcy=vV_B-Y3$0*+_o(iXYib{;~t>dY1`%y)O%-Re&q0Y1t%+xy-CA^K+0!($@ zhS0VC(a!gKSstnUrYqjNbfG07?91?)Arr!`U5-Dx zw{dAEo6x$m#Z=_bI=R&80|;sz|9T>+6!yEeliD4i%LO+mvmAV0Zx;|EePbd~h1!se zx`z*C(_kX$7KFFoSN<|cRUfHVJBW7_AH+#T20<;LKjwtrPmzgtz?Z3X-GP^nN3@m=D`}aCLU{C-c8<C2D{Zc_f60G*9USvnOzNw#$@EEaZ9wQ0~_ zOW>d|bPOC6e-Fb!{8JDP-i~-;6SbOIaPW*{p_@`Ubkai|z!G0$Dh&*k`Ue`jm(~mo ztP|+bg@{9ya!)~oxTI^ z3|kS)z>MF=HU6eqW0qB2<)KBwVn%eslw>w$dH(X0)l|IsFTTFB_JBYgiUfSuD5kXyd+XEB$!Ab7hsn3kY{%*R*b+XSlBt{30Qg zqlB+m^}9-fTYJh;A+DH{MW;-kw7~{`-)-Hv{Tr&5S9K2z_XA*s+xpGdy{eTu`Snn_ zzh_|Gs(Pi;qh9RCOKU_$;;MDk{#EPB@F}p>0|R}BoH#UG!ShOe17}uxU`{G)Dnk{x z-DXu!bqJDVa4VBOz_i@_?Qs34m4}=b_-%W&zZ+D%4m(u%0GaMu+!VbEOY(GwCzbn# zD<{G)pd0gy#-MNI?g-wOJLiGgT6(l`(}yTdr)t|)i#pmk&2*yC^xX+Gy}7@P+UOr@}>u6_uC>@!NPRT!dIrA#(}0(c?E>#2jXWc;oeN-lVU_KhVD`5)ya6qUoGRXy0rfAEqeY zrp|j>=g9A@x=nkSLsYD~Z3Imto!wSE6;9n0l^AuK!&BkZO;H&ibvuydD^}h1m(v}q zZbua(>ZzL~nl7{xrfv(w=yRx>T+wvSBh+n9+U5&4VDND}+=2=9^8DTw$#z-`Lw~Z$ zSZCLaRmK4+9WlP|Jvf1oOAr2n8|GHIoZ4mkt+Fvo#)T7 zyu~WyXXKO}Cv%9;!|YtK$u&h~H~0jE z$w8!i2J9K0$^!9Gi=7~IxC{Jm*Og-kMAUb{a*X9=o=Su&9PW-~vavfT+TsT*+OP4n zmir^h{^*w+Xu7;b7}6mfOJc%Q@_PPcs45VrS_!r{D}EKS%R8}bXcL|BmYwQt|EDl? z+7g;ZLZ>(LR5)v`sKi+7{dg*zh$cgO!6*ijnoqx+I&fX8Fvz;J2VzKTJ*lg%aVTQ4MzJ>w79J}j z6=Mp&$Fmh-3S*GR13VQDdE^+&lRTA(u@K}D=XC*ya?Tk%vlyrHPX zDA^pI3MZI~3Ypa%aaGb*MlD08r(vW^gJzL}GA}Vk>{_0!2qPAQ6mH?Ea7ZD?SnlVkM2v+X zh0XoK5UpUzKUgvUDbGUzBp@e%uD+|UK_tMxo+yD$DcB$-u;#QKYI%0>lDrOZ%KU8S z>NR$*+%ax~?u-LDSV$(!VG{y&4>G^7H)o22|>;9T5nd}tzMNWZ&!{yPi*%r3h?5~)Uv;CL)?iz=i$#i*q`uW+&2Yac z_#CUa3s9T06PS`qfvl`Hz6_s4wXt}LE8TUfUz__rz=6hitsANj3^i6k-EO5Xs)jfG ziGW~#Eh^+4Jw4ca;B1pqXrT&r*HqU-J?@#6>e}8$eN}xJzAj+CEw=`a95hxQvTUHg zA_`?YaSntux3*07I#&22%Ve)Mo#-;zA0*0Tw+haa*3Xo`T8+BZkZ7V{Hib`8F#9%D zGwyupq43J7^&(|)ExsV+QFdO~?aM>ZG&0ij98ZOd^e8GZo1|BGD%{3GQ6Z6@al0U7 zlgA2S+Vf6?`L^Y0Q=yjvfO^|v#63VQiBlipdV~oD)EkPKpjazHa?`oj2wYXC{!j`! zQNwYlk2{=Q8FoO2N?D+>uJBzwC-77_Ra8`BRI!Vv!l|O7LR7J3#o)s%UsQtA%Tb5q zbd$X-Q;vFmF`}NzNuudOn@i=IDM#%WqtBskaz)cQk5IS00$4{t9Pv--oDu>Z{2$b7 z;QuMlNrY%tq7RK80)Mf{;c9mEShc)L%1Mk`eut;RsimS4qn7vbR5-O%RLG2O6-{ z$rcme=067PmVU~$pq#{5-57DNv2(?WyRwHdX_fUn6)vrk!?s_*Q{lv2Q6Xs+R>sD7 zS_RT4k_EcTu8IUP0{?m!@(QroR=YWqJFX->>KPXxufF}C)YwR zz5&P}e0wp%o(YhI)8{y!2b1$!(1U$d%mIa*?)+)#P$`q}Lfetlz6?9MA}N#aK|3d9 zfK8cI6S{{Tk%Tlr1$ z)rLek(jRqkM+%?hi#B>$!SzQAqy-0q8Ei&`jCOiB9nz}>bPcc5Nd_uWehZ{>*k3dG>_|3BODJV$mpVlCtHcvl{LtDqc=W3>V~rP#}jaaAQYFU~&2d`i#4w;4-LH)pbhQm^AYe zM~77$u$8v`ZY7plZ>exbW}ELYooFBQKTNinu9t+dnHJztLn7>hqKtbApCsGdpUgIo z=NhXeC7G}mC!}9wr;ZK$JP%C)Owb5qI1Bbyo(dO%R8(TZOVb~xV2p|@i>nkB5^f*2 zg!C>fpRU8=0u?(#FMgoH)RU!e0NaZZ_ktCYc)F9z6|68^7YtWyD`vu5?Z-|*DCV8; zz88K8?pCgLI`=xhp%T*1NkJ!SILp<0Vc?ar5)qmr-qJ`${bWJIJJ_{gmG30E`Z3Da z%TwW$Pf>|czB70#Ts%}!Au~5!%&DDN5(g;~9sB^xpDQSw(!F0!dmU;+%nbw?(ZNfL z5%v^L5>6M{TneW+E~swji#f=lZgPFod5=)H?Oj~pfTxselD0^`u9YzKC##Wnu#3fN zMlq;Ifd4vv*Lk-qG?5eQp)(%Z0(dVH&6;9n0l^Atf##7A?T(>ae&w>`ZeK(P3S zslR#yX|LU%_gm}vKE*>WN~6Jr$LN(*-@3iZ)kw^?f-9F#_@`J9aiwpr}w`57%97`~-(N*u%{^ z#-{$rcme*4ACgwV<5DSlt+LKZTtu zR@{|6jH$a?!&Bkvt`wD+u{3xpoVY70@pV`4Rd!V*hzt1F6LnW9foxKD zML!>e(ZcKiOR^25V(Bj}ocJ6&b?%V4aLZ?)7vCySiYm}ae`(pcwip|pm5^-EW%%fn z4d9y~@EW>nxJN{xP(3GT8WIvQ*2B z$^=Wb{s)txw?W&OwDxCgg_ZtBQ&*QuLdJ<8w>?;|4EGGomj?rBPCKTk3qI=7SFYFP z*PhDV-2+2C_^D4whc|jFB}fU$4}v=7U?OhWWsAYKNV4iAu%GmV)JczT9UhTJ^L#Mt zmtMc=Qlb;%$cadd&(Aey%vgw7iK|~juG8z+*fB-duZeM{&qr$g+Rw(be(h0|ezOE~ zBgHOy@@FLkREp89I+9&0!SK}7C#q}Th<|e`o#^DnPW;Z$3s*&#Hu3YCpLjJQtfdj3 z*)X*$HD8Wb!9k5R=IXLs;&b*qTJtIZ`YO=ijAPcusyBIR+V=2q!9>Iceq39Am6nG z&2_#A=ATF3U8r4a?*%v=R+`byxX)*;HJ#{6jUOi}HMUKgAnlUUU$Cfb#1LwtUL%ED zQm^sWWW7ewRa1*blE5vl#kh!_7IriE0caW-4ZobH!iC@zm6&bXmw77OHce3>A-Hj? z#rQ7Er;DVyeag4x^po(LscJ|EGxrxG?(I$_aq1^1<2g1ZhU@*xayDwH zsKn^!HarzhKNS@+kK4Kv?LLb+C7Xa?@dn)sXKd={vAk2!Prp@Qcj%?5*uufZ*zmMh zvXL(TxdP~P8VjoMZen6`sIU}>^dUs3@Ea^(N-61>BHqv{s(!M%xt3iFRyVuFc%$kV zhj}WT?^IM`bn`r(3a6Wj3enA$6>fZj$GtmyfPL;9}skRk#%X!(7?LXXt|3Q zouK&)w_hj9d8{X*PPlv%Lp~KKoanWtvf*l#4vHf^5fm?Fjfr8BK;Y4Bolq0JD}LW>>4r1^vOsI%r>B1lb7JqfhFU!kE1Y}MIiB6UlgnkWyEJi zpU0?~i;T}|eX#La43ANgG4a_;fUJzqUW!j5J}aIkI6m8XY^6NZ|MqSOvmQ3mSzf=Q z+&FAx=|H)!ilNr}+v||zI^v9SAJmc6%Z*Z-2*sAF{iRT3cK5N-!$QAr&qag_;$qBsPKi$uEgVB|tr9YQhA!%a_>Ep8s+VlR z2GaAT(zR;ZfvFSXUp16;%=Zb5`L^;D;r)h0INBR^LOg{}azgwXBqWVxP9dFXp}b&~lXC-aUWW(iQS{6m=Oq zRD>Lgojm>SPX@br`rVgjcVt)N6~(z$9;yefSfjIEZY}eZIPRD2xSPA;`lMB>s{Pf* zs#Tb|YTn9~)>Rt413h3e-`0F*?V7iw?bPEp)3OXSJJWuS>J9@bFR||67FN|O4L{}8 zzk1a=n5A{qvns0^y+f69PhDJ`eaPPPN{#Be%D`}A)tYi0?gv+I$-gdyKX(sQ)|g+f z!k6XW_R*;_SItK^)(mQlXMbTOXPc*`%!ehXtrn%nvrQ-3I6jTWk))X3n@llH^el;a zXseN!c#Bh0^UX|zY&g5$-yNF5q{W2359XD=K8aKW?e1e_{D_ zjUShqI!#VL3AdRfPkL%l|_Ins$q#$##s6evzlb>8PR- zqoZHvsc<@~sE~P_(Dc;ZEbp;;d#79yqPKLXoDmmztQZ@f21_>5v{_M! z(dJ!wDx5YeDny%Gme5+r@)fJ8`^xDin#x4jk0?ge(@RM-U7&O6W!{9A?^X8_Gmt|a zbI8tGcDmS5h@uj6c4e5S!kt~oF_!aqDiL}>&aO<7HV5|H@MJB=hj}UmPOZoxrVCqy z^?YOc7Es#Hg+T+lRj`>hp(%g0Q*k9f72F*$Ux22OM)Z1~3TH$Wl^7#>2Tz3)9z|t* zjOb5TzG98&qjI`qjp*~mh1!u2{ob*i5bXYM03c_jGwb$B0_dzjOg|}70!s} z7)u*ZC1NbZh;FD14_Hxrw6B1H?o&4*GvYc?V-*!@)2~meUSv#>!s$Bzj#f>gJHczhI=5%bbFK=GkNt3*9 ztTt&UVB)}HOav>0p2h^*<|@PlrhX$JpwAJ?w7ip7oUs(@2^vGg-Hm}Ec_sZrlR*QvuBG%z z?s0JLo+K4!x-y190_SDWzr+dO6U`VxIX+kMxO~&`&U$l2zz)$5~iw4na*(x zN=;4^A?i*s4-}EO?C8Z-7c+zx+m5C-5Be+UeD=?0_qB>N;d_kQY1eZ=Ar^w3=Q%X< z?Mh^_JkP;Px*NmgzP^!?8kHzQ?L%jbS2&d669+?;#xNAK;8hOd_wbSo<~H`%EHPQ4T+G$j{H1B3ZE{Ds{IfNF@=@sLSW6`Uo)7ED#!{mYfVJ$ zE})XfOZH9``!g{@>+i&my08)lk5-BnRz8nL`5rZyUAHtIr}-P zJX8-{vG$zN3pno0Rcjb`bC$ALVP&eg6)CJt?aXe%6W=A%<2Rn_|4?D&LRNAjw@dq& zPPB1+F|l3xzfo9uteJ_B4QIpT8y~2*_Fhtpa_C?G{yGIrhXiKa4zl|99XdU`2| zrVDf~z06%$>3P*~yilQ&EXA zo=@;pIOCaPEHCg>BJ_Y5&y>Q-S9vN0Os5=Ty08UJC;xh)ureI&x1H4HL)0Np)=sAD z(hDmiaymBI7cQ(!?P4spurjp=lUNFtx4ei6w!Kt{2~2(K3M=RQDi+##Iltc^OC{Ah zvanK*z@*4JF~eimJgxwx1Bl83l!Ng}6rhNwtZELCq5B6HR;CJoO;g4fR;G5=uFJJr zl%;H4VdaUeyhUaTmzz#>rtr6kOkv)_%9K9Gt+29g#t_Q!#bS{`=mqQn!6F$Io$oD1 z*ux`|FjZa3^!OH5dNHv+F%J}xxa??;r3x#^gLrMGpKcN3_Wf|ogo~JWF2NPLFnZhS2qkIX+BFiYFm*1MX9WvOA zDxeIrX-z@xm%w8lZ>S3>actJF)$m7MK#9+2jc5VoAJF(d4}Xffnesq!Gi4LEQi`iB z;a18-7dZ?3no0WNa#-pr1sd{Sh&5oxVo(Uh~qNUtJ+J8lsmaEp0=?Xmp15!H?x!Dzt z3+vQ?s0{0zj!z=2Bc8HiBmyJ1E?se)$_cb?b8vW5n}gI8MX|j>>rxcwvoaQm`rmCj z(Ww9L3DloAMUm3yxTPpQYsL`T1;l!`{|CMJo-HFq@wH-vJzpjXQ+1_Gk8g^?b7G$q z^FW=L%Z~O*Dn$`qY&)9T+0b7>_p(>4mDf62$h#!c5({#Y4f>Y9qai<62}qW2X)2k} z+JwZ@(K79Mt_?PV0sqVlI9-4+oTd^IdVZ|uLhECNC(d*I8Hh^H^(sCI&n2GndM--X z6?%tf9rm+4V^Ehi%}hv4dqK0jF+K^F#Zwl`80Qg5wJNQApj2Ho=C?vR9%X|%@q zUWZ*_HFGBOtX-z?GTcDE1_vwTLj?MbA8vdvg68MbPh$bX9MB}?X z{3(AzqF&%O2QMLEyU3Z4Sgkk?f9S{+WY5`5#__JQc<{2%1Lf=vF)xPDd4$7#*F%Q{i+} zQ6V}yp$UltS>9vyc7M4fL~m(8KO-S=R53O@4VG-A%l`x=Bs?`+{ataB+4m0_LB@JYl-#8Xy`L}289WI`gm z^mcO)nUDx~lYVBR*xsOZ35n}i8H+^ySDQ{W>YtuK{dp4-DSeJxLgGO)hR`k`*0cQ( zdI1|iJX=OW;^|_9JzpjXQ+1_Gk8eW4b7J?3d7w_rWk>rYm5>N8wjE9F%g|pz_mWIV zWawxi?-G%a;K>Gk%XBp4Ur_>*$dVZ|uLhECN zC(d*24n(Er+5?}2=MqnOJr^bHja4U6blA`Gj6q%6G&3P_fMNMS!?JkFV!4G0i364o zRiMDMyHc-LdPEKmt~p;(X_VT!`^xotsoGx(W%A)u^z%Z$Z%^s26$yuJQu`j~1jF&L zI=K@Jr+SU3EoBo7NY580R}QuDRSAYpLrHt@ndrS+nP6CFNQ9hgWP%}uPm*9b4hhKw zL+Wzdgu>YwY(*s$!faVpt{n|j^7t;DP{6TRUsS^%bwUB3lL>{HXguEve~L;doVoP491ayUBi#4@#aoPY>u;ak)5sP(h-N6;{&^w z+VWU7yTjN&PcyS8OuC5 z&=f3lOuFGQo(dPrR8(R@nZMwvaG^{^g@iK4E#2@}mQU9=a_NRY%jqYZyNGndrY}+V zPd#}mac_esiCeca@#zNbbX24pQ?C1XdqFEowR z(Ia>&oQ^6gF*>?}r^4x|qC#|ZLemYsEbpnR<6Wv%kxN4KHdngg%wlYK8Z6mJm;VV$ zH+X7X7L$`hjipee4|`ex<^wt5rOj! zZ_MgA7~6l>ofYS9@;+?B;`F8odJ|9{@yOudW;Hs|=O! zLyh>4f%pcfx4K)4&aaKu94`>GB~HuLs&!-_NYA1HzMY5$t<=N?g6;;QG7xkRK8Zk( zc*=^Z2;AMe6vmO=L)AuQs9IjtJuuu40hK)41CWgYD6npfK%nK|JPq3^)mH5;X8PSG zLoWNDwrEbHvcAz#nyZygX?r>D|lLxO*W1ji>P)8PM?O&}!KR zzu^#OZV)u_ zZ0CM&mb$z8+}2{g94>(<4AHj~BkBPXNtD`0%5aXHk>EDZIZO|S$fZbUCQ5f~^V&~9 zaS9@YH>Wvr&xl3g1Yc{_2TE&eam5og!CRx-`>C=EApdMJLHn}db*sU#L)=bthVgd9 z0Ud)Q9U=hV(Y1VNV0B+*U6=IsXezf)Z|4}#eow~8=YB_L2Pnvo4d1G-4XUlj9;EFu z+hnUaXLpU$wj17`srsa3*}Zb?n00M@|7Sum=CR82>@(?R{d@ zj0=}iY>YJk=-dvM5+`wZHO%>>c4lg=*!sJA4;6_%PgfJi4I9}}=XJC+SyY5xhLTjN zChJ23A3D7P$VyyvB|ZsUB%UT17aiSQhCuVcP_Vm z(QQhObmTnB+1}$dqMFC1rI4O4c&@5?7XD^KNu#4366oj_d`DWC9f_-+z(_lwW4%cUbrwe2 z+rc`9yC{^jBiGV#=AE9b<;O|?pS>@ElcOpVPap||Ku9>{ZU~SGCc`O&7y=1rfC(W9 z1_)u&GgC9u#mw~3-4ha(74ah4>aLC_h{x)BvfjEX>$Qps-gw}BU#qKv7vBHxd-r?w z>Z@1PHAC<(Kb=%}*L&ah-gh7MYBSD|>L*>}%x`PlP(SG^+{yxeQa_BFT0iM%BqwfS z(ob@?R( zyhr#+iCxrw(g)R49r#Hp_*hg@sg1Ba(&tFLNI&U57#ip&eT#-d`AGswCw|f|N$4j1 zDL?7we7T{1(qD@Kb^Ig_)YgFThqO$#@gb0TDNr_?7Pdect zVDf~YR6)afyP$BEpR`_kI~ok(CoQdX zp3UgUQ+Jr$?v9LcSCe~Y$~ds!@Doe~W|Ht#lCb@lG!Bv|9pqy$1IIWQj+ir4n`9;B zT>jHKAj8>Y8^1(gLGgy+Y)Y}z&L$dd8)S&H`5XYtoy|60F=vxqO|!FkX>|l@m1EFH zy1nzX+_|~Za!JT#Ih+Uhrk)m;^K}kS2c_ojat7H7j&wN@p38owbUQ}#)e4eyIZsHq zod1sZaAoY^RqBC(CPdx4TW+#1r*av<}F@6NJ2L` zfO0y2$(I}Ibk6vVZRl-2O$F*WogApGG3~L_=yY;Yq$3j~KYDn42kdA;r}Lz=6MOW7mzaPc%Fcs$en_FFcT7`jto10}T)1 zWQXB~wfC{WonLw#`}s05jSHK=40e_rlpi?O8le&C`Krk%Eln zS?n`XYqqxZ)$1doA1$am>XjsVq=Rug3=MQJ?xLYk4u*h|>0r#l^v3bBkf7enu`ogtxM( zj{Gix&te}m)&E4ox3{prJ~mKm)#_uDvD3K!2OrfbuycP~hHJ^emPK`jZ`oAmdItN7 zwi;AFfn0t7)zjA;q@wlkxCW#v=)s{8@cXUcsa7@*N6?Gcs6^HNVcDTqAFI@w(2|e-%QE4= zKui8uy`}r}<{48P)V;`|uHnWW?8QI|=fVVb#;og{S#7g!N~&~d5fA3jo|=D&T0^+2 z(Y%x4053x-oiDHsbbuvMwF8VEg$**q0j>jB?f{SD6?1^u)pR?++p8lJGSLPPVdwE< z%|`?BIlvas(i~uC)@gBocM0~% z4zRt2TE?Ufafv?7@jxEhr> z628dhrhzTj~G_lL#6I{q&QYwJlH<>~Z)1wBIi-xQI~mEs5ftJ`>_4xZm|%Nv=MC;OR>aQqFpKd<%$P*{-jx z;lo^CdyI5_pMYGI=oL5_ovK@f&d73oUt;*DUdOY$qI0tYwZXxt0cXrqI6mwNRNEt7 znwIRXRL2G?qwq)z`?tEooMLQZ6dsQ3uZ~F1x|-=gZ*_R290xjbX0_b{Q`n^gjd(Bz zdU?@}GW>U9QMr@bHx*yX$$4p|y%cu^T9h&(fzyy_uN624Mgo$@btHhUl?^f^5_l}r}Lfwkf_O4YIcs8<}xR5Th`m1m$l(o_R3Di4T^L%ManL&ZxeEgl}(QdW3Km%;H7}B-Pgz1M5(ogMAcI zJtCK13e|}KZ954)l;%wj%?Y5-CUyCmJQp!n0{f5;g0Q^>=K81xKu=ie;MVO9*fla4{R7`;SB zMP>t>S&GLcu=vxsB{cxWipm0NFU_MCYT2;xM*rg$p|gaLSFogKrAq{l&q^m zOZ3lekRhSvyg$g$a$me+p(VST=FswdIKLZ?_8o=XO$Q~W<+*}N17um@0oqbhI8G9|@=w^z;{{dHSZM4D#_U(;&V3hmfNZ z-u>C=Q5`MzFUz~{wY_`8Q#YLX^Z9umJHdH}j;lOweWnlpM~BXa4}U25@IHK`%YLBe zSHp3h`LOL8*jC;YTIr!9F3dw;+Fc1>vH_AKHJ``f6?4qlRbI#32JH}CVl7|fp|Qr-ve-if*5dR! z&!KH=6w2o-l-X4l$|b%cXf=B+P*0;-Z?x9z+#J=0hFeWIm2j{&5;fN}B7A})>t#V_ zdZUQUiIXt|Ti1!hd#cW_&mK8rhI|-WK0bH9@m>4a04T|*;xv7lEn8cjqih8^wX1y{ z&@Oj8G2jfcMTLwf5T46wCYL(4>S_f^#uKYBo+$GLLOT=)f3Wc&P%M53{#Y^~@%$P5 z0BR!zPwTwhYY`BSdjbfrN%YJN1cP2BJ;Fcwlp**2i86RJmfLw!H>D&>QQ0a1zntW@Y{G z1$aVf6S|<`baM8TU8QHkvW=h|Dx>v*Xr#%lGjvt051sb=x4bNDVok4Ch_y*QU`vO| z>}ZGAYbAUh?##>e&UE(Lpi47f8>UUE{|4;d&Xl#j~6%(hlNZD)^wcFTz{dm}p={rH66H8vK&2DH^~d@VOZQ zw-6p7!Ix99S6THoTMhIMcOnpe$6D)#jpFyEm7BOd>aCBrYNN^F!dzWp{Hn)l=%aAC zJ;GF(548SOkL^Rl$F@SD%4{KgrEh{W6`=jeUD77~t-iJ1*Nht5;r&}H;DvkeG};y7 z^VV~=Y+WK6C`?Ufyud){yS*jN4Bzp?q?iProO!pJMB0ZnXdl*X)|U6`rvuOYlU15) zA8A$*oMOFoXKjAMq(qovcI$;Qho#OgLn`79t{B=ngp z40-q=4TU<i;rMrOrY1(BNp@yAo}$jrgP&y1ADVda8m}2__w1byke2inNvB)9 z#_O|OxGaT&xPhaWZQzq8-={$i@=Yhj*Z-sD!8IhA$(>lm881X{tf!$+dP6`7(Hqy( zP$<12pjdk2_~iB{zhV2Ftt}2n83}H_?H8E% zX80hLNcN4IJN}d84pO1KiF0X)Lb;oULMaphB}AdzOGBX)ihyD%l$A7z=wAaB&Cvm~ zfYQmjP1Ex`0S_&u&2ce9zZqum#vKXq4V&bT#%W^Kol!bf;O6mc&r8$%o zXUX)11t_Vjil+;ROoC509YsQtiYenR%^HXQiE_0`t#k+s4GfREXeg9c5>P_4(wQ_A zN-GH{mR35GpbYU-pguYxYYI?Cc1aa*hpgizaC(lmZe^LKM(zXeg8d5>RXfq+FIHWr&|b6;Rd`sDP+@G!5TNt~*o# zy^E96RzMU2QUOu-Xe93`hNPo_IFjk2noj{yn0KIn-o|z^hXUf zFcx^nftE=Apy{%RTuZ2GsK6|4DmMvL=!4`B8lBUMq2nk4j!wF`q!ceir`w#Wg&`SgoZ*X0s$pN5j>HG zLMZ|P#Zm+(diLM*RiHXJFl{Jk1n+N}M$aeL6{-~4oLrW_-~}x7g7-I#)SbnUa#RCH zDqWs(sRl2`9cYK!*pB7U4xEe9R}-KePI4L$tR@82j8HkJvPGT&VDao+HC!qH;~P!9 zdr9JvQhyI;qY$ZofQCXzy?_!T^*^SeP*N|TSUY$)?zn%~h4RgO*noU?{Ldu1p~Czy zr-CKSB-nlaLb+n8U>$MgVAB~qm$-6#JCM)c@=dT=(f^3aiRALhCk_OZOselKrBh0t z{z41hStK5*WN;4jJp*QO{W}d!=x_an27gg8@D3Mn@Fj79Mzd^A@IQOfM{Yp?C)n!_ z(Ul=uY&(rsfEGL9KHUe_o_UVsLb%fOe>x52RG6Y_G9flN91mYYuVxO7`~n(Ez*;Ua z*RqE&b>JxBrC!aeXgKTL)wB<6PK=L3hiq?iwAyIhI8kp!&BR)|b4YK#(dQ^0P--s? z2iCP@5_kEFN5T#)*4>M+8}Ac6TAXwe4+_&V-2t{M)gIPIi+UGPmxS%G862G*%5sK zc0}JJMh8ACFL%$}RQHJk@o>wWQ8-1rJ}_x@_Q#80&*Sd`Q2s#9_wb56ki)LBo^D}% z&61wj)7)7X_oi%yO18gbKlHM;*h4SfNm$9}V033UZk3z+`*3O%VBF2crUv&}kw81LZ^l=yZ~%ikd+ z+JUXsevAwq{UD%IP)DCpgv%#$YHQyf$p=f9zz!v~@kOY9ej_O1)yC$dD$6gZwyKrp zaJ9jY?yruFxVjh=@c=&%2A)w#DBt1}Xi}d-lGd zz&FJox!6cDN1z_KLQNty)1~es7wyecv~-beusVJp6^{_q)TZTrgdl>UAdhxL?|+2g zCK?KrToO=1!m?-3P^eHwK(UfbyX_+cFDKV&s#2;w_$8ctR#qzY`2}IkQ-9Zb{*A?u zbFvm3Ic>uq`9}z(Ar{@jFJ!xyBi+n7EPX}N%@U6gR5^7lg(BPfwGIZQD>RSAx%-at zXARhmGPhuVsR{OFl3--Y|h5DoAH8VaQW1e6dB@E{F^(f|UAwU2XPf8`cuxBC+( z$jtd0<(`L1?4B?SC|pZo37`iT1L{a32b#{exw6Q)kF9Z}?(dA@a!4JgYC84-Qg@*1 z=17j{iY;cDXWS=c&iYP^+-j0Cq{yAac_2jOuAre%A}64Ph}>2h3MFy^inWWSiClxk zD^%p_e7i$M?y1FqIwHq`rZerdirfus2XcrUr)oO(UXi13Po!o2uD+fmz7!Niu8H6%ijG<=ZEcyU~Ek?M}(u zTHAgwSSX#$!{xX^9}uGhle}_2RcPLWL8#_TbY!!Wyk7>OJjweNykbdSc9oUnWtoBU zlDt*Zkt{P`GTx}e5zDQeOD5Y-C@*7TVw+6=7R#F0ZnG!(`#62-kz7@tgOB!>gN$0) zuN;mIN&)}D8RV#J$`B(wmq|?vDOI*e0smY4r{mFB@Cvj(I9dzJ#I>$nhC;sS3HqXS(CxgXkvK=rDb#Bd?B@$giN{|&%$C*lQo#heIsHO)@M zpa_hIqOk~y|Mf=N$?8QI7@ty?p2U{&Jc$I#Ww{dzJu@c@%2VJ|yxC#lAS3loXHX8G z0^zw_YpQ8SGrnFyl0L=8girBCyodV~o^909`Uy3cuci^`Sfn6iITrlXv8%>vpm;_% zuxi+vTB~`nWOUi}8^q}KalWE{-FGh-|_`p zeg_G54jdeB9wut@aVl8H^Wb1@MQo4F;d$h5sC9Cof*v++`5S7FBbOh-TbWcpJY5Q8 zGL*VS3-9S9uJ(4PpYVPP%;KiXDfmLIP`79l*Azq1;U;ZAQvZ}YW6#b&wF*V*UI zvp~Q&X`Y)i>2Djp8yuKl@2^1<=KywavKK`qT=C4q=5KMh#W-w!AsjYuBO?{ae%AL! zzT`G%wsiH5?)gVxlMp^TVE#Pz3Mgn}DZEmx7u-c@mUPS4PL%Kjq}$D65rI*HB(shZ z&|$Jch8*zzMgYsBgg4<8ixSw?G)D;oHFz?TpZdz*ZO~PkH*dxW*OWGEw}Wt55yJk7 zd8Z{l_#eT3@^I*&_~1TgkS%y*+bP0x`PH=Uj?({-f+XXEs}u3TNAMmVA0#$WOX+vi zOdUiADdRXweDovasQcx{BY-qs(oP= z*SRBr9$gHm4kQN45rA5rO_Xf)vL^NL!Ee0F8?`ZZ7>9jZ5Kt>IBsM|G&>l5hEoYoA5D#W zvAI0=!a}z!=VCu+)@gAqp5m}=kZbWQXHX8;0^zxwYN~2SJ3dK4lCH(pgllm#-osrB zXA8A--md29z_Ca{#&RqQy&Uo_BzB~G@dg+g=w7^^hC;a)0!pTPK_>d{BjKA&K;;)d z$rl`+U;KJ8u#Stt!P*+uMtM5(i-H~@`NiLp%ManLOsW(9-Clc?;Z)9oS#mg)hZF42pr_w4~fqLcdLv!$BLtOZm0XL-41tUS~fDWj@yutt`uts3<@OQ>7W38 zB^zW&*75lOmInp@idQTsU{})|6kI1xoSvd^;L7sC0fA^)fxupBzG(>o-sp%*PzdmL zXOJ!aWOfnZxqNBr3&+a5PC=3(KwlyRcs<_3LjbjTS_(g|X6V5APeH?S{`Y6cU9ms# zAj;M}Ee2m9aU`ww7hz~%2=GH13KaqfD4EV683O!{gl{qd6#_iO7aSe}%-XY%7wR~K z9IUNRZIq`o1Q7HH2>~kP@; zOQAXu_>Gd#Lunp+XiflqaxtI|#W~QDDBfw{=M{5*;P+B;^&teem5Cq9e{>2ZePe?R zzaAdH3hY3^@N#9L@KX9^r39ABQIR3#hmqM6A!Q#%01ZdktLZLUb8AMx7a^HHE|w4&@JX)F0UvtCHpq~G??C{| z1HOmwiUoY^YMKMS!IAn+z0fm0SR09Yp>OMksj38(*o>Y)xvU^?p=ai42?yuRvYq9i zaPUB9kS%;tZ!m2Z3Pae3L1t@Ng4faCmq)SPZP=Hgd4G_O(%- z&hSvs!}jR>9q6}`%ManL&Zz!E6285K>EYqO=B4^;ih*^g&cQwkss2H7`BP8z&yny$ zss8D_RR4A{unyHZ*heAN|3ogo6si;P`MlY-Yhil{p)}tcW^ofi1kl5a0d*+OftEz^ zPLl#&nLLU7xJ_@P`dEl@Ue3MHL@k*PG*C(s!s8yx zbi@ekb}}6?gmLODp+&ON5w{ZQ2snUdY@piMDY6ls6o4I+V?3ym60jTc71&FiyhH^a z^{l9*MP`knvliWU)*@@5k;QnjgHO7Olvxa10n1`sSk8v&@W|a8 z&How6j2M~ZMzNB>WQOD^oy@?v&ITEh%y0*4Na&8{e=dHYfOlm6+Uu z08U6>caR#_!{h%1Ra7vHSXZcmnQnJW2`30cB*TiQBj+ZnoFnKlzD+3RtgvF(4l9(i z?-Vv`V*}9+crFZjY7@(DZrf%A4%ja{5-l5#syD!s^J>1#;Gyksk`X){48en%NFgQ_ z!@|UGMhGzJ%xb$CriPFq0OG+yfc<$0pjK|oO5l2ke}g2l2PAjTnD;-5W4kDX1X^{u zE6{S35suW6xpoOW1H%!?i#i-Z56lJ`5{`TV!18e9lX%6#5q34r;mA;uh*Q*8d)*Yq zAwPCIZ`mPLXM8>tMm7wd~(t!*awCNMjl7fP^id5K*{t$$q--}3E$)j zs=j&>UvLxNIkx1flQ&Ox4bN_qU{@9c>-d};tgV4N|>ob*Rq4J_@NmNiKitss1_=ekj#nlb7o6DhAe}ItTkGr26N{<(EQr zqSX045_%}jzwMzp0rc0!fI1ZCKue-{r}b5@a`z___T9Tv$H6usekg}e3zV)-p`?>9 z$jj8j;|IWVESMO%xSYgDlfNmn)3=5A9AudaSp)l>OoiNt(dyTQ=bV)ad5fJ2F`j?k zy2Y(JCL%ytkV+&Yw&F9#W=FJDe8qXl>TA(-%B2qf8R?XstXgcY#mUUZTDnY|V@@L> zvcXw}9jlp2Sf+1q-7I~xX-alo$7AjWYk|wiptO)DFBS_6%%DgX))^FxByEr(8I&e~ zH3t-JDlc=QaV;xjvX43Cv}8)2EBGx}jrK*(AY1y# zObNns8PpV4$A;}vkYuK0dm>Zv9K45TO3eM!68T0oNe3B{6iloPNuhIz-cMpjdb96= zp@CVEPts7RtcZZpS$zC8628d+R956Ge8J7&tjJG`fpz?54%XJHHp0CI0NX z`jUe*vmPEl9Yn8SbW!YGe}?TWrOs*^6B$ihi_DlPtZqlo?U_Q=WJMFJ)1wKD2v&;| zg;X16{GrO8*-+6E-YW4O-&6aeccXll)(}^C9TEq1Lcwu3Q zPj)6yF3XcXJTWtD#A!ou2J-6ia!fY9Wm(6=>}k1a?5Ph#Bh1Ql z#g=iLZ{IB~qx-dH(8rMs8fX?zRg*}w_>_*#V#=JBS)8r+A=@w-H-kirPkJLZsWo(B z9Iu2~T;rGlxW5=+$3Swxwyc}#C08H1z_^3<;~usT!6wpAY`vOzDa=>UM4sQ7>0!#J zoZ6Qwh0-`)SOSJ#%lH&DBHe<&vMl3KhGk5*gc)~fd72DnYsd0E6_Nfog>*U(VQ|04 zQOt*yYt)tx6_DniFw6I50Lm@jTkwimK6aJY^4Wk*F*I=g&0pjz#ii1`C=KV?{Uh)u zGoP`3pF;Wl3T1Ych4RZE2Iz~qs*C^Ih_8m{kikoPFL;kg18P2#*c^HcWOv)!ve|b% zKg6iHcC6N_RYz)1WG~O!*n*d6MMFC)U2J{Wn(nj45XN5R`@XwVxJeVucICw3J=M;9 zHnB5Z@%_ek?W5_X2^(#d9!}e`a#1VV(OOYi%+|el)zZq!fvDNv3r~pkHpi>|(Ta+? zrLuU{DxN^>LbJs=L5tb_Kz8$Op+W7l-*5)mGDa4K5S}YpCWFh^=R)8NkmJuONRr8) zhMs}xv&3J(dw5YOYd7_}f2Ah&nd?Bm#gCnq-uPaClFRH|3t|<&9i`&Dj=7V?WbxqD zFxj!0lTBuF;nV>D>J>~%g6M506q1OGh*i^5n=o-FKwYNTgbzc*Nx4%{Ct2W`t zJXBBYxpQ$^SrcU0l=KST4WbTuL&a1b&7m1#E-c3s0GpRh)^zO5GjPRo#AsM?XG*Z8 z797ckoSPklEVNdssQg}SN)%(aXE8}-Dfdnp-F2{wnF{kl&)i+i$&&3ikQg1Rjjh1^ z-%=iqt6!qA0rox5usN~Mfu5OV0Ob8mGtp9#i2}7rmzqTCx@RS#pi}a$R2Yy?fEG~F zcSPDGI%E17^Zo-p_p6QZ{iZi&jarjW&Bk8?FjYs!;!neuAX=+nC@_Rw`&=R6&Rk)% z2(71~Tn+j(0p&7oU<8z{@Ja2@%!-0yzE~~ukJL|+FS=rjWfmsxmW=B8MGN77lC&b1_$H2Xh!EaQL!pFFKnW4Tdub?? z5DF;Pj+Q2b-y!h|6~b@w?G6>fUls%E2q6cW&c@R!gb%PC$RUKBs_EE!g^<2Ie&aPW zX6!;ASCrWNmRU~{F9NJ{`T3}NxSzi%(>3p=ojI?wmA4*~6*#rM4v*>y{wy>J24kIRfQx)RDxpNrtNfE2HzN0yfRctQ4OEbHTd0Z-L&FDIGP7J*Z#kosh5m=>^ z(yzkC9t@Lgkl9tr9RQT)YIoul%hj^0ti&gaS{I854I)+>u*3Z_zbq3Y8fQ#n*+T`+ z>ABixDwLn4P-a(ID3_S4-I}fGH%IV1ORIUsc&j#=J5jr#U_OEXnoK<8&(a=2&Y$ew zFEvH`DxkKRp$baTzQGw}D`_%Ci|}0LH2GS3R3b%thk_*27SBnfXz#>(c#4+XN*%M@ zt!DKl4gxbOe$=$s#V-LUx%@VrpFO7|N#F&+@Z>DHYcezYIam#PtzU!!gVr?9K^^-t zv7KI*$;`|yPs_~m*O2Rz7m42NELj%*VN6}EI%#VN)lKFWo4TZ}52q;sN`8kio%T!iW z`t=;X-JzMED~bViGCv%swui2_KDC)2X|6>2^=!5Sxj8f)d+Dc$^y^-Hho?XN`XrK8 zWcu|cj&n%*br%hV5<&qbLLi&bMVKs48kB=1Fnko{AP*?MOI8lj-3_fCT(8E78UGEr z{C9%dfjLMi6e?uu!C1itnVo|?9hS~>kZ0f(%R#cMtb`tm*z)EeWePy!jCmR_&gnVG z)e7Y`3T1Ych4S>~AXUX|6dKC5N2Abl8s02gGzUolO$OZsa**WwQ=Eg`0@Ti(gY0(( zIc^2zEFwIYIZcfz-3pO|+^itU*!_ix9ON~4kH|q%Td5WJO={K-a*%%1wAjTP07@?B zC07oTT4~M((Icq2WDfG#u$p8J@`b2lH;L`^dJ;i7$Z^pIUa4uh&Xt4AoIn%*-$>${ zyy)1I7vWl;r`OtH4pJ<&)TU6qdrB*giYLBbw8xB@Gw{E5(PSjSCEe~~l6p~YoU&43 z$w+tNl9G|`w9?yKkoZ9}&bvs)2~0-5O-&*d+Djhw$;f-vntbY%%!AwmLj#kM571Dk zJcxi2k_Y)Q4TUmo0?O3nLHf?ZtpPLdb!pv+=YF;WoAdIfRf?H644e z5Yo3Nl97JPtS5=z45FROpGVaboQ%xnUFA+j60=XXlTJ^LWF#?j!YlM9BVU4U^0U72qPK!ej?c?T({l6<#SQM8jO79J01Bq@|7L*dVau})fPrmm0=Wwy`G4Nzt@w% zu%lkj&lJZoD9=jZ{V2+_ey8{@S$S4>H?-z+9X2N}ei;hz+XNPYc~&X!DjMv;Fvtd( zooAh~K;~Iz;uXuYva775B@0IL=2>N$L*tCOC@;?GdDi&~<^2`P>?#Z867#GZvP(>B z8c{R=FMCsIgv=-LFD}^N=|W0o4)SMI7bGX0;xuX(5Hoig^%Q52t%J!{PK4+3o~g8@ zLnP9u$16xO>u@`oTI*^16Y(CNMosRY&VpQ^rt$^*fmskgK3bIGV*pAnUrXmsPs`8U zd7Czq`y;cYn*nch_3cj0+fhRvD>lyS;+R>|rD>g-eL^UGnbCZMG&!#)$!W5bqxD~b zYucjM)LAz4YPPlx+Av*-*S(iLB`KzEhGJ4Z$vseJAtu_a(~C@Bkp-eIm5T=8XfqTEA_`oeT$77cxRxnRugu*Q1&}Td}y&;UXp zI9Kh1#Bes-7i0AMilaEs++3};Tzs_HxH`bG$ZteexkKO+n17d?rOZ_iDtQ}Zc6|1A z0LtUDZ{QV+&)8K~u*0ln-uO(qQyORVZM`_B$7erPDE~~M%&xLfE-^m4G+SX@(btR` zaI{VK3ApDL49X;gq$`s@65Cr(HpSuB9tYSFNl^H;k2ACK7oYX)M&!!NyWS`8dcA{*$#`SH-A68{kp&1Hyn%ym*Y_vQ_>^nS?b>QvnS zL_Yn^sPXp))VIS14{yj(vaUE@|i!-)o|7A&D9& znVZ!lQbWA8cR;RNvPOcSc|C3|{_O-Aq_e#;T>H5Ac>V0R zqQGquMDeN;!_ThzJmB-;n7L@6!uY8YRr`l4O5W6=bYt~arGFR?iGy>}cD9Dm@rGmL z@ZCbn5g(|ws_G2vX@H~|`&Px1Spl=7t=^8C_Y}2xwq13!oU9DUy;efqg94zLHLNo5 zGGtIz8F)EfG0&4-Ww~)orx>1Rhxx0k`=Y^mBkJW*R;l{6Xx&nYqlH>o+I4?xR=;lD z&$>ryR_9yIe(xmNFHo<(RZSxG>N`8utNuAPtHy5vpau16Ks_^skR51MhXhim=F#yM zX}uctov0MvBFK@YQCoyYjVIu(YaCvM%NMFmr87b2vV%H{E7?Z|xMuvXE1u1%ci)X$ z{8hEZL3&qGMC)A?5Y5bCdiOy9%JuF;c*XQCyUMF~ZNMqELb~`GXAGz8p(0C>9`XNO zp*-V2i88y&Lb=3mGi5q!K5QFlj$F7?js|zZWgb0fHT}jQ8VL_qQe> z`q^0#*lXjAmbyANAndmOUKwra6?Qa-7M+`dIoJtd-iHfrsRgIA3v!ltshr#&ZI)2i zXjTa`rOyMP+>|~aub3%iS7CNZ>uMXY$>IjiSAlTYnaNdYIH#M^I~2;VP$;vjER=tM zFFY>irE>w3c%CA~QeNln%S@*8^L4XxM1b?hoFH1as zhDZM%5~tv4HS)g;0da4uJpRz@_-@8Jeu(S%QQA5lpw^)^S$r2j$zyGY=dgTbjEmPc zlzn`rc)uO~gc{NA&Hn%zfVYY@c`cqR(%kOqp;@8D5M&c6LyU^B4D!q zsM(ALdS!;Vw;92!LDw5UF<%c{t&Nd+S9ik?Yn)XA9K<&DzTt8c3S8Scour@!y6gr66t@8&COPyWr zHgSjE{!`S>`3wko!oyM+3c4-ixY<=S6zYTr0VU*whs$Xw)Cms)inYV=CM7K}hE$|{ z&9*%|TtAc=4gq}X@0w;+a-F8~r9%4aIr*%RJ{7ny{i(leV#Zlzpd ze=62_5&_cCi$uV+Z1-$s6(B9?E0R8$IP#^7Q^!&$D_CkeKpQ9ZvrmH@pgh}o3SO~nC%ei@9kNiWyoQY@*JR8d z@H+Og_)bTpH%@It>RDV_!Rc=KdiJ%XAOuFF7ph5QMEXC8i1g9+diGwmrrfdO78n{B zD~{4oD4$P23Gw-!L_?u`J^{t@`AT~;^uLmLnOc~N?ViiG+w$9pcf!B27*NME<3Md4 zZX*nqY@j|`t&L5_x5Kf8?Y-cO*3R*0GJXYqoQof;jiIPD+0OlXb|*gD#daWvE5@ms zj=kfGZRR^{#b?vkfZ-8tB&wot}+=? z>VMH-ajSwPgRDtQH=M_WFiS{{i+FU>KZ4%PBi#Caq*zV<) zmh=@#4^Xs8Jj{j5O2h3=Z4x6SnaOP3FlW3Fz41gE3Z*v$ln}jf8x4ih8v=@@H+G9Q ziC2(o3e^!W=cKZ9gs-(As7>N6#ZYoI14k)cj&kJzeQU|nCgCWB7qjikp%gg#q%X#+ z6zJO%X+ghlq$i2L2dXAdB*bDKe%{5RbQf4VvN~F7Qvsl-mEnYd>AktO`!Evtfp7}F zG1uXnZpTQ;mNQ@55&&eH85kwEV$(j|y@^gO&pgcb}<1sQn$F8!HT`Yhp zuQ}nex=48Sig>xBK<&J|ftm|FnG!1&u&r??F6kwn?zFNYazWw;9f}_Y1UA!TwrUFu z&JI?S$l&aAiQw$f)-iChT9Yq(M!G+bg`t6A(>XL0%KZ^gLfoIrXegBXBcNFBPiY+k z+eo}ZU6`$WyDb-n=oqLM1L`;_9H^~WZG@+?W5DrBu31>=UQpnvg;0WQz*$(6oLQd6m?7c!r-<}8!{FYfy5-$L(3x)=dy&|<7*`4q> zLPLb4uOjRD%W{D8h76xWfBFEycv&F>ReM*puJj7NcCZdTjB>C{@p9b%FCe-HiP3@X zzg(Sm|IrcC(# zDhuTj%k#^940`cMeLTB3zbrU3!TFMLNdD6NW73cnk6T>?U5!hgI(hSC*YNE2XfzLnT7d=0^tiS0t@pgcv^+|O$dk= z=F{n|Rn;vScmZmSm zA7c-F-%nCHFyr$cHHp-cUrl6u{#lOqmE%9J zcFw2#$&mKbFf=f)^lcgn719bQAtCKAXeg9b7Er8^cDF6Z&ph0AS#0mabS9{B{NFhF ztPr_`a{Pi~$T^`jM^2mRN4^{{jk+ku|B3CMz4HOmlD;D8_la`+CpmSj9M|qtj$cWV zncRuxFf>qaTuMWs^oD>EqBpLlp-_55K(X}3Zc&aOCD# z(F`1=bUDhEWb>^hPdVOE3WIFBawrAPKIx0`Dh2xXM9$6c8|g{nw}Yz569KVUhnM4z zO$*z#8>?fac6!j~DaCs${peY%sl8dXucH6|PFPWDl(oAQ;{PjH9Gpzt*KmpN7NY|* zadJmg?9hV_vSxy?Ox))HD9^-w9rUls7jiQB zRV+-~or>^3BRMlLB>Rz?M22MFNQ7jMwj%uB)tYh#OMix;flkkUM^Ns4OgTLQN{G{Q z1Pz69dIS{9=_#!Ue+r3LsN=E>W`XUt92cSpe{M0Lj%&h!+Dg?%cq)tVjxVx=?LZD+ zgi|#gd&d{~17~O}K$(^z{0$_n$jD=eb45rIekTou5<&qbL-{W1aD6mypzsa!qQ5T;I+%(*kJ1&!;W;dzy;4;iODn(s zB$&q?r~g}s?hnQ2K&M}>PCNbRf@wmBIsJbFpxo*IJ6yjFiAP&0R}zS|k(Xk*I8B0QJ*Oum)cSk&r|Q;=lH^BoL% z%B?)>wfbQ4>+5noIZfi3YsLVA(KgmWoggWfByQb zx+|M5S-Y_U|69GTa^cnMFWj)U=fZWHR$pGZ=)%>TuG(IM5PH6j11s&`|zrk zk)0KMDJsrbYpK3~`#V}$k-mUwSexeBAwl8XO$XmY{ut2w(OJ{M`a(?y9^J1G1-P&i z6QUBXNn0Y%Bf>z{C207gnf^)qk|kfu{R72)EkG> zP$<12poHj+E*c7@Hv|+*Z|oK=3FnY&3e^!SIH@ch;Va_@wIp0#3?)Z1aFo*JC|AnS zx0XCD364@YlWkXSQAl5mS1Hi9Co+(J-$+jqKNVC>p2&{HaJ(hql)z+#_G)z~*bWYL zJq-(|O^tKf)zGLyQhgWy&2k0)tGCO^)Cp@BlUmWDzJp@0%1gqvw7ln@FiQzL{UBwjX8r*}8h_;!a1;ggC1 zb%c-uO=sg=p+@fR21f`ZwgWkYkW)1sd#@1Ew_Y0^!6DKSOliB}NCv4{~)nen5Xs zb46JE@L2%L71HA5EynT>KB*3Q^A5G}oR*a;+)&j&c4!>cq;@q?>974#cnvT6!2q+8UK(q_S7D25L zUO%c(jL~5$gbxvK%<&s^$Zr)!A}i)7trg-~!2;pL55GfnpDsoR#t(9JI(|TZO>;$9 z{BS1#?&{kU;{Qa4i+E9sSvW@sBy+}vOP4j72+)l<+~Kh>?#Z85?dkG zt{sI3thYz&8}-53NYvb1YYngN@1JN?`*&UvO*CrFR;@qqTnPWkb-@72Xopym1KJcf zMBD>3&D{|3S!a-=z$vqg@LU!&xmPN1(Gc-b1xZFpf50fI%!Y{XD-gb*C9okP1y8FX z;$sMiH$>!M09{=Ebq1nAEfIc1wMvNp8=&MdZn7l;SEp@Mj2~r71YV<7vQLNj11jMU z!B0Ug5nJ#K1<(OZ{3~z}461|CXslIfwi?w|G_>#d9lNWi81q_2l>r|4;3Se40+UH6s!61p{Bt6i^v_lSU#q}*YUg~~ zpNy7Q!qC8Ic^wUfik1bGkZAcj8VY5W1r#e<-fde2ZY0-fs!ys_V2qQ`ioQ!|6}Y7s za!!=ak<(`Rk#7}{MqIQC#BBF$!xbPc=_`_spJ)|W&Z%Ri&vvI)fwz!kCU@cud}$%A z0`I4xPzg7oH z?HpmCr(NKT{J_1*yFX)4u}CmyR`Tu}Kx>tqs=t ztF2mntUH`NUEGp6wqmj08h7HZ(fU9%(pwuFh;~HH-o9w4HnsxN1+AqO`=c60cBi=oNgsEpLcu8hC3lppL)8f!b=I5?cD>DW6C&Jf>WE9#k+rh#vev?9ZquX3D2!kM4ZP$(f3P(p<84>S}?2nCd> z5yE|s5A|NCw8dPQ1$17h5FSwss3U|NXgV9`3OaH(4LCwLo9#djA>>p|$KET1^zDf# z!*7}OB=LIS%7RhGiVi%fg3(6OlX=!;JQLpa&|X;_8E^FQcXZ7+2$9W-KB(4#7tNS4 za|Zq=f^q6z?Urp0mJg>CGjkT;y-AD?3@PL?bx48kn`V-*kYWsg@{ppAS1hDpS9wDU z8?b3qjUED7q0=~H1=b##*+cMTh4Re`Wpa085CDK= ze3So3g}~eagEqxI1TO}f=I$Z5(;4LGbIM91JeLJc?v?sn^bov2L6Sk!p0hyFl-Wb@ z4h6y&!vyvaq~K|Wp7A6C%GE=F44~EBhcgfj>LKtWs#QY#T!50t*2x|MT%9&pY_YP3 z0DnsM5bTLc`1xW@UgKdNt1#SAeV^zdxaxw{%lfP1@cxIWf=3F-d_de0K(e7A0aDZW zt71QLzmH)y?&g>DZtfo41*nkKF$A4-7r;bBcY$2DvUC3s-35Olc_A?C^m{dlRG@pI z0$sORzxu2F&+YF@@%_PcfpfMGLz}J9eimadgIwN6iROhC?R^|r8E>uZwM%s-qf3WS!p%gg#q%X#+6zJO%c|X5z zq$i0V1m`JFEX1OoT-^nhU#r8X(Cz{Z5Q}#gn83aHy}dA~_>B%KcHiR&9uAfuClxps zm-ss|IxrO|cSMC7J?K+wz6nbO?th|81unoVmI`E7S$Q=U?d-nY1;AB0=If-p0NFEH zt)H{5HCe@M!rezgx>(1&iWot$-|p01ums3&rr>NX85rlCpeB)V-n>Md_h{=bI9IL7 zmzg6ysmH_6zzD2|hC+E#0!oM{wS|U4c~Sz3~A)>qBDaC*~ z{tgFft6dx6sq8Lr9Gn{40b6tfI5Zu5$H6&^@30m1OiOpcn@L)cOME@YIV7BU9}R^P zLIEX22tPqXp@dLCnHnMdCW)8L)9FVNe2s5+s1W|V7*IzDInZ=A&J}dz?k;eI@XKrm zatI-(YC85_A*63lL>Yd|tS5;pfOWwrBe1)`>q!-iHahMu@FC-kKIWloew^S^Z-Hnk z-qEmlG3AY!vgkw-`ysl=i_w9Rgj}6+UVG4M)4UNDNvr~(ys6+^yke0AyUH6$*npk2 z%7Y1H$xh>pC0ToDW>dlC3gsS!GP}w`xx}V|vo}Pwv0AHE9jQGrx;&~jTl`ppR+QaD z(Cuq3=uVxmjHZFZh}oyONnj9YWJV})h_M}W203b(GPVfMWhs*zrCJtE0(}aSjD7aU z*r&`Ufm;;_UnmmTB#?rq)g&;0fOwMtL2z9#{?`n|f|>&Sh-s0Iw*r(rCQ3F1;A*s; ziSeUs3c%}RQ^5YHM0??+& zeP|gxY%$b`noa(6L6bKIbPX?TUzr=K(+!Y-YczShUaVa<01SV0$x|n9p6nW)-JYw^ zlRXNv8M?;kw>qP3nKMNQjn_wDuMyrvAFS#i@0vBExrk}*a4S%bU0jGHeXS;GXPpUa zGS59oRg*d^byhy@O>`c}btz*QlzqBeErLC{f)BF*1NV+Z)y7x^53ls#lP=9Q_$AmS z{BEf_KLZ|s5jKlGsnaWu&{$DfFHYE4Yu&I>9I>&qa#K_r8g4av#WA1m@Xh?^EBJd_ z*{^ymW3=?AYW9{3lANi(&>Zwlk~stOTo0&8q^>_Ok>`5Hqi=s4MMdX@H#ZNUpRA3e$ zm6bv86#|2bnx_>*$;mHpl+uk&uKa>;EqRKX(q|E!4o9->a+s9r3*zjPz8LA(icW|B z<&tA5h3n-rphfKfZ6$;rvKTzm^hl+jeWNx8*OS~qDwJzEmxiPjM`$RNLJ?3x6v`86 zD3n4GP^|r4Nt1~FmC+&|+oaq3hUcKTcG*&Wbigd&6lUF~>G^ze4?-1Co0Ha3Kv_5l zWt4TBM)l5Os5**?qna+uxfD|t@*OCt+t`-oP*R*F(-#(?q^>INY7$xO8h2WTjiRuWJ`w9=1hD3n$bP%N!Mi6u@pgR ztp`ISUa2zhH1KUOaoB)=A+t2Vx7!j_qV-^VF`$m%aiHlenoICm^WMtiQd4|7Q>U}eZ6c5E>76`2dvb5J@<2>; zep#eRK>o>I$?MLqk3r&YqQ6ydbXP8mqVXo=q6ec!G}a$AE3JB^WgVGoW%P8SyE-<& zZe)o=Oo0znTUGT0+tdQlw(K3jBIRU;55_Hfs~8UGRx$k)0Ob|a zd+~}@Oxaad`H|&&%j>;7mlZEkk8?_8MV-n%BWEg`0Zf)7i{-KR66gy9YZkKFvjrqx z%Mzb7)BJ#Bn!sf6chn>@8GL9W8N3HbE3@*4Vio1Et&?uKLTbAncq9(^(LbkVu=wi$ zw4mZTCY7Mwe76F%me@^sti!Px(|YyQp(uRc6dRbOuc-4FgbPL8qRBq@q)@-t(G`aw zx^u+nKwTkMr*#FghbCp1uBZS|t}BkkE2b;hRbE|T12+8|bZ5kCA7t%QDu9N}+he0ZTv%4a{MIRL$RONS8QN%0N%1~{4G*%g#80~|P^}$LFzUES| zywWL{S<`HnSfA{kum!{9bH}_Kg}d`iy*r&XDXf;|@Kn!EZKSIl)oBT5=2C(>@ELX= zkddoW7A2@fp+_wtyqG>(-O;Nl-m7yk-jg_Wi+~VH{e>pzTS$Tix`}U4lSn0YOu|h( zzl3E9H`uDz?M_AfkE(s}X<9O=^+6a4N+Tq@{dpP+mDCbYLXukFrlC+KP(ZPgTDwIN z|2O2COzlM#@qf)pWhKOXg>NBszMr)G?eSRKJxN!n7D`UKjH9Hjo*RPYN|*T%&Xb;& z=1~;!f5EoPURQu9q%TH#P@;(ceohWcDIA%qDO0l52l)o@uogP^ygzChc9S$D*Lo5R z4HWy8G!#ng1(Xo6zm$eTiM@bgiG69g>|PSDP|>}PZ?`47L@s-*7*IzzInZ=|&Ly0= zbJ>nGUd?tOhct4krep7wM*8+dF5B-v=t<N}=f#4~rD=dzDY^8~d=r``N^dfej4 zWG~8`+M5_U23_IT!HQB_u#LxV9?@3{yeXLf9dG|wT;l7+=)h!>+!5tQ_n;H0nIJ5g z^br8clSv=NE0#=RS6P`E=EawncwPg68PCpi5Tf|os8hL4flOv>ip3}gsu^Js%T`tT z>h%#{DtfNEPnt~Q8*L}QL9$a|tnpPfiHtQCC1Q=dDe06suQktbo23??-TbBRg{}(z zLGQw!)B=1#LZ~JC1Iz-BgJsD`uydD|;b?NOwouwA=XfNXk}>Lf#pwlWu6(mGFLLrnLcUm@)sx;2QEdJ zzl)6i-}Y%+RxWBqJ6bC$i`m)Oi&rhJti%`Y_BLxnz0L7zf3%{aZmBF@wF-))SoQ$x zFq@4qo-o@1)XZJ4xWyS{tHhX!+7O=0d?w#Y9V+S-Ed@!M-^FNt%dA&SDiA&c8Cb7K z!PBZ&Y)3%6UJ*=wZO31efo4$o!jGm_1#umqNk@{lFEN z#f?0DC4->y$7#h-ax$zOC2chy(ej5huksm2wp|XBlFu+QQAl5mbjaj0j9hXa!ScuT zBn?Tizn1e-NY!(MhC+$GfD$71Po$wxVlSXrVqaSM!Fnuu)nA6?r$!}42I~>6m3%!|Se&faGF;+U#puASm)sHMbN8Uf zsW~Pr>-8W2~x6|R+}MmraE6zwR4lBuO);ZDhwlzH8h z4;&b_?4>4=Vav&huqAILC1uX3sid5w7T}9FLXF~Ln8o#H$x6!E#lSjdk%P5G)<$_s zD=Cg$T*NlPwu>e<(#(lUil5ASG4UQSUqOp?YN+ARLR!dVdFm{u=LYRHS|_7MpCz~i zSc`m8t+cXBEtoAG19U2)JE+i2X9A;yAy=mj5b6%i0AU8`768f(&{Oe>86b9**8tgo zO~y5FmdQC09|qyP~PSYvW0*wpddV#jZ6-ds#6qDUaKHUt9v?H-7*U(A5$QFb}_Jk zl7gpIK=}^@#0w}X#MX)RFJ>SWR4(x&rA0V?B|ynzcVxK)SE8**j2~sW1g}wx*yWPb zQE9#!eo75Y%yP+vQWT1mO9m$RBOaV$X)b!9PYx8^)7T)^jMX%=phxK zdZgp@a0RF1-9$k{u1DF4pn}Gc3VG}nZgQQxqB1yAueORmp0V%AwlcHzQlO*1x0*z% zoU;;+{sBp>nWnZ+OguDs7h9lE>Q?S+o^dbx9je{dcbfl>QwaJL7MVdj8is=U49Os# zLPMc4hyqGT25}V)g~}ibDAq3S!}eEia(46CY<)BK7w}JduQ!tTnTCrh0<7oTZeG(@;L1gz2_snn72yaj16aDh8 zVa9vHta+>?vxhvNc(k-+yzVSiu-2y9h_+K)0#B|`KlaF;)^jKI23cpJ>6tBfDl5p^ z*E|kHDkJ+#Eg^S`NpoAnvk|4+6-qW&m{c=@61f6pY%m zU1dcj%+{5c$vd}|Gn1Dv;r`<`{7k2SC8L#MHoW94-RDR~3N+sLsY#^qetg1s=grck z%sDk#x?idV_>8+L7L>vHIm`l5ZW$ahOZV4eU>$SA!P??zqdcWqI>*}lgl$5)UXjK_ zWa<25){BYnf%yvBfn%~nGQbdcGH}k*I?@s-N%xw9$D`i;q@Z_}DJU)9w(JzjH8+_A z)cx>!t>Di=bWaka0}DQKb$S-m0-BUzX5s<>%FV=uc*V>FyUJ@OY{1T1Wt+2%jy2Ah z>9B`p=G!(Xls77r*;N+GCFa{M@bbD_ddlo^K07=*b>>dmxBS^S=NSSaSqVVcmK;xA zck>7kF?VvV?$>;NX`u_NYdDzi^jIhmze@xG-&9V*Ds`b$Ff3)t!q9H-evna&=FT z(%wm~F1?+3s;1Y}yGyJzcl@#%_vuY~pE}Ft=>tx}TA2MBN%t?WDXczqbehQZ$<-3sB;KPBvYR^I6mZBG7du#`Btsta+6 z_lePgxhlCM%BSu@$5Jy&Sgz_v0F>vdevDTvSH-Tf5Q7){BXM54=^-M0E$*3oW7fZIq`R z;yk_MPmy#hpk6C=F{{d{ zhi1k8o!LjwcV$>XHC58o<*$7lsAbofcZy3LcK}6lmpWeS46;=pS?WM|E(4joCv~ML zb-YwTl4kZYG_z%vI{r(6@Fmy+OC2eATBVMcBOqSt@RC~R#_!2MDX6mHM@frr{6c_| z$IQse2ChTfjTk@5$_8F1D;t-gvV0Nz6ja&RBE=xAvT@Te95s)p(Dy~nR)uAP;T=lV z{$V(rUY6#}n%lcyAhrsKE7nse7UdT__Su6L}n8pldi2*|E+D9xiofm1`3pbmW# z6%4r+Wk-T47?&u-!!!J?YGWvB^-7X=__F#Lr`zh$)^vff!e0~{NF{bfB34+{*$Q{} zD#jt?K9X6^17Ikq{E#f?@iY`F%PF9QWI0cxp-@>)0maI4?iN*yi^(;a2AZm3T);_X zWk!9O|DZ!xo=^-WCsO1nX{+~$RxzY`6jhA#*ml_}B|sF?7bBe~QN@_g$zfM9eEKov zxcU8^du2;<;(KlJZY7CEF797Awjpxwk_#4A)* z-^RDwl2ziAm5&w!>PRC8n$EzvDj2yBnRmqREo=vJh##kFI`&@iqi;{tFZ{lOo+SPQ zI1_oicIKb+`o)pbvyN6PH&6R)+NE!M!xK++!g$OgIiWYra|JrKf7FgG`Ox_zT8#Kx zFvB~kp(}BTe-@(yQ$un`lzZHR9-^jtSZe6tGh}M$5WHfkA$FCOXJOuXdBuoxj8tDG zIEA7Ej?;nz4h1Nge<>Dmlw4{!8R%eUS8Qby7(P5!O(MgGjfwCfZ>b?=&Z#LitWyi{ zWmrND)@3kDu2RF+VqhJU#lhO5Xrnx(r3S}lUCcJYW+M|DX@W$l!B1wrnD|7Pub?$K z%4bcqKxUc~Pa(m0TtnLvHKo^}Y(#C_B`7^@b%W;yvzB8Vu0nL5t+P{tJB5- z+p&h2X>X$IM{$q<}+}X**=Xk=56hvnRSDAD3sr+P-a(ID3@3_ z(6z12kZ4>z7Em-efi_=ao}|UfUolvqL{LpS#pQxe10hU<7Ka2EBO%yPj`6$qa(3oI9;;Axc$?nOYnT#%%*j<|oHflpAaz>kj> z*Z6+`N*+5QYX!InZ3$xhC~F0HjT*x~v1BtU$dAKMLA8Qd3P6rpL47Q$)EiJKXhaoh zTa4i~s2dDK{j~x3wXSZ6ROw(kL24@R_c&YbY!Nag!ZA44;C}8SMuRAHR!KNpCFC4C>zA?ZMNXFnrH}!y`nNwYqrdS&_@2-&aK4{ zL^*{dSD@d&R81n4*_MRge`@YUu_T^-UdkoZBx$>|Ni>{+=%@`7RR}BXb%=j*nM+Lj zS+o8{Y8!kCmrNK`!af=bl~NQ?ti3%2iBo_;W5#=7hUcJ> z>2jV~$4MoLX0Z>NAUBbVFm(}CD`;`rSouc|Nf@$mjb;3CgR$I1?>H!?ZJkK#m zqbDi=<9rir2Hheze&!bAjXSR)mmgCMDxhRiU8VgDnU=VCf73kiP7=FNo_HJI4vQze zfCYj`E_amK6lqtqLg=a4a@@C z!?L7gU;Yinz&f^)gSCawMtMq;<&JlC725>btY8L0B+LC|){BYHfcXj-` zq}puO25bG*7Wfz&qUOX%E4#UViPvoT=1Ll@{JHXj{1Z=czWnPzl-&99?>mER2_W<3 z2+!pqll`RQE%N1GQIMpy>_=-^X1@IQ3WU#|1?J0B@U-&f4SduZ2;_Xp$+cq8{;QN0UxMPgC@(5=$hd;XHsgpOuYlCOE z4@;d|rWFqMf;MJf{{>r z9VB#9r%)l*%lLAw5Q_l%=3+pd0E+`nS6)-wKr79U$X;_&q$A@v8-8xp!{du#i}Dyu zW*S9nE2#suHEsJ{gSL{;XHCX4kD4(fz8|TZu(U&H4Au%t0-q;DxvVmcaD%G)pN_7xSaz&U);bE)P z-Bg0m^78dy)^%)WjNA29wOzJ8HsuU=T10Ykca?eSLDj0c#E9gy;fT!1;zdZn2LUXP zi!1AXc(uw6?PU1yc{xe``pyj`a zhC*3>0i_emznO$?5}vaBoA`1=E&pIKppNC|Ky5u}Bb+0(%KVf(Wk<*Ib5f)u6C^fz zc)SN}Q9;XpbcQC(w*7{bO6&hTq;SIekDxi5C8(KY{hyF&{X4S!Q#HNTQ!ff;TgU3x zahqPCw#nAUCd(RDU+${5`lwhnhlE=Fw*Xjf_3y$fX7$-sUaN0|PQhB{Tr}30KC_2r zW^muHQ2u~InO$X}Tw(@yx$rOT3=ozgfl1-X^ofxO+T_Oio87h}3MmQy>l(fDCA|`z z#ufH7C>K%l&fW!SguanzbVX%7zgWsogIH1N!Q+pYT2A<66P=>#{3d#(Pty~MpT8>v3)ZFrd62C@m}w=fi}gx%b=Lc*H4!bo?`Ih$e% z()SWjLb5Ig(NHMgOF*%9Z@$=BbAz*A{I-{QJLG26XT9f3NIXqlOnGT1!Yr`;mY1f0 z$;6yQMgw1747lU1ap1Nkuo2JUttqT?cx>y?xQaZ@acn1SMH9fe>DWv6PPA|Rnlrj3 zh6~wwCPMcz1?&^R+3YSU65^Al#Q;eQatYfw^+SZOK|`TBD+QDg;k$)~LJ6OMVhP_q zY)|#ZW((eIeKUxi_@wvxMI?SU@8X-BYgp=?jGqRr#K>w5_!r$izU`LKWdMF{F~E+% zalq*;n=3IYFfJ%=&trR#L)Vho6>{iUYE%oUWw5Gt*I z<0P@9)rKhSr2VBvV?i-A9NFb)r1O6+*|kwED8heY8hS`j2O26bg(cx2U%eM6X!WHi1U;s;`cZclYM%#ySAW75#!hE}!8#LvNLc-6qxV49bo>p-%p-ZlK0 z_8#LqC)<0E?_9<q55Tw%cU-I}YpbnJ zDVL$OcF5?IV&wZ5v1NfzaY$j;8B|PU*&sy*b?-qaMzWy8;%i>*{VsszdEf8h70dgw ztFR=hk$vo}zw6Y2sM+7B^+mm-m~;%vpf2)dR=e$qN=u#E)9Re57YC6YQHfOVO-!s< z26ZiTDpVl_y9J)E=Fgy&n>ziI;H?yKj2}D_l+8o%$6^p^0)GZSfPVSCnnb2fClaaC z`Svc!pve7NtLD8QPb!KysGBPVGb>qo2^cM& z{!}Pb^;z%K(d16a0P;mEHq2oE0UI3y|37vs^AILr~4SY1kkqasNGB_xtu zK|`S;Ndd*$#zmpqZ}}SD2f0=1P*OxpZ5YriNaQU;H8(x+b2+Dp6-pkN$v+TS&^Kwu zxxN^hjwjF2wC#(%#2k598ufx6{UvN8ZErz}1tAUTOOpCeBx?`hgtC&gCo*FtlC@r< zF(vO4`HT$ivq`Fv>v|?fG$dd2QW^>+Y|}g_3ds#gg)4*q&zWcD96PWLG~x zB5kvNx^({+r-dcmhi9M;vQ6EhCHvlDC_0kOQA`&DE10<*venwPj$eTv=VENb4v(KC z5icm$?_yh+L#{c`q%X)T*Yxd)lv0YzVWpJz^SO1IO;~%&QPO$RUueqzy%^=4q|skI z%&DOX!>7N{;ODQTytY)?a2St+Pv7`ljHl5o$Yu}o&9Jqm|3s0K$mNqoX8|RX3-*La zKr#Tk)|>x$5_;<9JG5U8v$zRE0_dg1fI1ZCKue-H!?sLf^T-RduXXyzAi44YVy7=x zDk70%^y?HoJbn-&up&9eeSo!%93y^|ImQKcz~+4ldIGaczY)7zDE| z=)tcHPmET_mcct^1~9mV!{IQ(AID4tYwdS>^Lf*e>d^0eA}un{AZcid3?}=GXV`AS zrQa$>2WDpEPU*}H#>twDW=9^CnYjbN^32RD@QP(-*wr*=W=>ZuBBI=&+>HM$Pj{-a zvNM;s6NlwzrX~6E9+LS2`_|r}CXvaPor&a&mSsUGX+V-cXwmqXnz(~*wG`~E1k4En zDLghX*$>$*!)x?9ra!szb#fQTXzMF5G%%;~QyK~tZ3!qL(bn&2C{(m1pjgq?^yXCN zom0rObex;LVHVf9p>qzx*`;sNQge7QG#z({qiI_P(-`G)fN9hV`bo3cM&^jUI0vOK zNxD2Dr}9N6JofzN4&d#H*egZbOjqo6MKRhtEPA=?Dy+WlhY`2<#UCmPcU! zhgU2DV^`B0ft|L!)|{x0)Sj59IDWj>&30xgEB<=7GjCY<6;K{`A3l=F(JkK98GTDz zVdM@xqm|O|GI)@hwu4YF1ve|ydu>pt_Xty;ZP+7F$3Kar0vT$a2txxy&E+%{D%2EELPE`p zXed;uDWE)pq2?A6dDA3OzTDNECYCQphhjNH&A1qvj`zpWv`wJB#7DY(zlm+69SR0W zL;8}WhbKbK<2a$FseJ!pl4|6-UceExgCYOZkFTYnP*N_Sgh=^2XegAF3n-S9Pfz*& z6C~0$>!+9RKgMZcNjFuS7qU&=qV4flilOL8Hb*gC401*C6ygPA`wz1%%pupDXVMoG zAlH{wjc3$XRHV}=|J`EviJ5++@DnT+wjc5mM7O`xWZvUk$|WRK!QVLhg{XoBG!#k| z2q+<{;Ak2Or3wTTYah>%6p{ZHp-g5zN2jNVwA$(9%0l(UDKLwhcn$);rWklf7jW?D zqLWJ(XuJzb{!+dfHuw5FDy}D&PbPWWHu`1qls|d+a&lV&c*@?307Y#NF!?0FW*yJd6_}VvPg(ek z(JUM&IhudayzyW3CVUP0!mB2t_`r*37JnD#Ut4_re&{_k6w3GrC?Uq@OEeV9_y{PL z@i{tRtFyaEXW=Yr_t^)%`#&QwHus$hF@MYnVJVWsGk64hNQqlCiVqh<(NP{8#dQA9 zWq2sW3#yIpvn|ZwgmQ*SUyxUz>Dv=^On)j(PZIwXvd%?n4u^o-Xw)3=qpUeBbkc_2 zhOe73=l*w9a4b zOf>O<(;l6?l`=MM@U)DadLHG$n_}z~FP?%M*)2u~7BA$!>*56_e>GQx7B4OVu)KJ& z7OzW~Qzf8^jQ`bP)APy)al6F^scpYffo;riIJ z>UeE3-U4?=^1)5@TLph>&xd5$GUMjRSl?Itky*hkonYcyE7wbQD(B zg!zu(-$ZaQ9)8n%Q>``J%hVNM4&cN9Jo}D)u`lSodZX1l5^axQ@Ahc#GYlF{ew^K2 z811ORmVs8BXzFig4@7+vLonZbeE1u-3}3JtRY&2Qxv=;B5w2+Rw)Xtm7;I24yq>O( zPvTFu=T5W+mn~n`tikn>_K&?$qfu}4!ut{iMxq96H=^3#nr!dSx7nCwHk)O#eU$Ty zGe!IoVBPk7KCi|>jy}@_ zMuZ0q^bSPhz$O3&UNQ{(FbC3egRo54k=g(-YBX5e0d>pv{OUxj-mAZA?@#xR}(ZoQ#cgHC5(*k%nzut^`&5?{t`dhtV z>1r*;pZoU?)SB4c3=0uh?j_{{WNcqpOcNx52^mbfpSZ1eur>mV13h^NUICCMyr=>i zqk%R!+W?S!UZZ-G`Uot#5QPgkXKV-aI72PM&NZjCV2w;LhGwGz#Qt0Xg=D@0Xo$${Dbq^BaTx z&h+?=p8iBRJxFR5S@wpg(OrvLgA4{p|H;Fx(GdVPw^i)}DH>=EPhPfn`zYYa(OxB< zY5~1X(BBaph_Il!6I_TLy~DMk;Su;h@b9dVI=#56JwUOTHzyNAlhW0|7 z8A;xZMh3Y~+tuDP8rwbzXL+{w=IR9G7g(_dr-p%Ww0iktR*Z2L0#d+QEl{p7$3QfQ zy1RXV_3ap(jnBS@*#^}IJg1^Iz*PP4t08uNaW%dO>=E?cu7rQ8@mWW(56j@6YJ4U< z{0+Y>g@3BdCc+1_VbzKDUO1zeC>}-Q7UQ3b;nw&9{L=%|4Zk|R9R7*d;-6J8C4&{8 zgI6o?&pCJ}f{a(<)!F!`5A7mCj;nZeJ^o?VlNroDgwl(DuEjr_@z2kpmn!}#{@H*Z zuYf-j?YW2`p1Q%-%23?J(A&jOyNzMCi(z#e!)O=7<~D}OE{4Tz41-+^`fV{n-o>Eq zVi0d*&~{A>9|mTVt$uhZTl(<1!>=BG4O=w)gS#7V!ar=q?24`Ud|WnLF}q?bz7&_u zR?M#M!;fFWKOe`#`R~O)ha3%mj=(=d_-6$FtT_h$T#SESkAMDOYxf>iWtE3<928QZ z3{*%;M-V|$5GA~uN|=flRGefkW(k^l0%5q6<_!c%3u{u$M9o`X0urp0H4F`D2$7_Q z&cN~#X_Ko-8G{rtQ|9@;2k?@yV2%9oS^MmB&U@Cw;ys7`+vnXo6KdfG1iFYIc*<3b zhFy>ewQvKnx`~gWqnmJs*4;&0_!B$_dtpB;aTkd&*h3753ivnl=^^?-0whBzl!2S4 z@Pt@c0EgfUaC%%k1`!YqrBDWLJ%uM+genN=CB{G+Y=$bRfvH~N&#((Jp%!jHk+&#; zfAtopz}rXoLN#0kyS~C60)0ggq&y+sf}?)o1hnrj9)altL>OcZ6d!}dU||iDhlr`L zbf`#zO;3t#@X9c;6helJY2Y_P3<3v#;RHTU2|rjEAmX8Dq$q(=qr^C<9W8Fa$UqSY zzaK092*<~Xa_Blibcd)Q5eK6uit*q(NeqBQSOH0s#Y(7zY6#X^1f~$!4!hwpTm$1= z=6`bYxootIbD4pF$(3{21B|o!9IcMe2xs^jzJ(c6#S2ghWzb)%GL89#>@~Cz#&vP!AYoqC&I)) zu$(C#fTM5%Hq8>-VDSrL8N4`KL_q-*!}D{+Ea+?!u22qVAoWGD9;SzjFz}2J-e56L zSi_f43LcT77aWWdMX=;AA`u2hi{VfM*WuF`aR^?E6>maloR|$hF9|y-}7KmCV;=n&q zjDj7I4s%`=5#Y8$c)~@ff_*DRE-ZOXBtjXSh8?eqbVx`M$uM-4@CWNRge@F_-XUyZF3f|AJ4F>dy-SRR4!cDsxCECW z{e6)IG3jDH49yV!uolu_d#2b8IUk5TNZKP-!WlRRTeHPZsM{;7J`^XR0)~Ag0$|@h zk!!GDt$c$VwFc&u2sz`Da? zBLtU-5Q8t(ng;Wah{bRk&cdc+VjC2GB@RQI)yCCovD=FN@{y{uQwYI$ss8Fr`-f0dgP@s(ukQ zF!qL+285F9wHQuLphv$TvWjD zo?;|yhuu)xOO!#RmxzVqP!6qni#D(s-hFZ=0FjYKuuq99oG1Yci<}g z0v>*%7kmbvLyvyK3)p_!#3tRw&Z;K%Up2OjGqJIpv4xC@ZIO&MEKRI*XKyy z9Oa_a6uYp<@Nn}eU8T%60rmZBG}2z48m!_-)Qo7ASv1IwQ8~c;f{k^h+q*sI*r>#~ zAVwvYhVI7d=NxPE0#vtF=&Zl(kkWsQ2Cvc77F^6Df0u6h6?s#!@vi@lbvKu}F~)Xy zy2D%^p4qT_t7__2{+1Rop?A)E{d&H_$z-X=H8nqxVqIU>v`n!wFJoyH7&K}kwZ+DI zGBuD{spB4I3b}5C@jVy|9k$^Lr{4@Yu!)emP?)KOS>a8`?Apwjom(2yAa9A70^_ELEZ}}( zFf^u{U$B4XC&C46NE21|_xp(n+>SaQW%l8r0@Y2OD~7?p!o&s0o+sM*wG(jk6XQ^L zXMmVMDkeb5644!E=Zl&4!U$bi6fBsJ#LquAc7?b_BF}zsu&(^j^WE5hyjo)gm;_b-P2 zla0ff4-`!lQM`Y#t>Z!xu!ltqk1w|Q6%FS;#nADS8ThzjThWqnJh>Q}|0z=Wv|>nq zj#1y19g_-Qy(`9m_YC2~M-@X+B#Xy+wxgrtc-La^&iAU}xw@j&O3`LgbT3=2RK2NG ztuBVCFN*K@KBelTVwm@m$lzb;s<2;F-~~#}`?{LdE;aA3_d3BZ=xW-Pn(InUyHvx> zFm)z+Y|G0bydBMWSsY@)L`va-C9vuRuQ@E1y7$`V#rPme8fM+-HBo8oU7`$YcWHci zE4px|5_;sJ5I(I0vNL!j%T%P2#r=?EYn~O&mMIEpMyC8{#ccKhky7~j64>9<9LIpV zN;8p87}qGR`MOpVq`ULz4Pzn((R-2z;lG`-6=lc6nluDN&NlIi`G&y~VEz3Ru$NgR zB)lq4vN94J4Zg=%H}g#zEkQ{G;@IybAsE(iugHL(O1gBh9z`TsFVNH1>dEGKA{_Qi z77szxYhr^+q|wis@8d=X6s<9j@a^L0(!~;KF<7E3gDlaLZb5dQIhl8HKzy1A<~K^* zYrFQk*kHaz+HaPqwcR>wp2%Yy5>IAk#E~e6T-Qx_V77QLAQ@$=B|S(_a!C(5oJ;Bs z7h??r;T&;Jc5zN|aZYjA)Bi5=7+;7}0uy<*gL0WIg!C*CVH*-IFh*OR5Rdcq(v;9w z>rKH(ik>S%yceJpi+N6=#SixH7D3(C7v>kPEgXa^v?;s8GKs@&x51b*Khx5Ocmn4X zTIWIYT#NRgbPqPeTg?F;w6}I6?N*WK!EusfI_C3;ouYuBR10T6 zz{U&_4nc2=GrZLykbN?3kNIjj+mW(t33+-+XZdzH!p;8&^&Kt!o3 z0Dh&e0^q9~W(`3rapB#8Wr-oIQFBk)^Pkr~9*YXpkDo-^U`5r|hevZS}i!u9JN->}kI<531^R%^;@{~fbbr~B6 ztsjX^)XCl>mh(SLC3e^~h|k7Q?C{ox_+G=A9{JQ2n!L4HJg7|iyKk8-|Ic_HQ>NUF z-Tkku_3Py6US-hV%m>)QW4of{&sSh+xPorWj^}992m1w>yVBCHmb$^mX2HBwVg#RA zCe67D|5}CSWS2S3d77T2IZu~4&1sG`3}N#jXSGNU$aQh%xj6I6Ao)-8Q}!1>7ULOz z9p@qTipu0Zg1zK^F??GYTv{t;^H0ji4-$BTwxIwI`+YDxmbPexI+GP>RN?W~F%jc| z$752)2$JcWixp=}8RWmm?hT4^J+a&|=ewl!9Fsvi!&fEE!H@jVjkS*>bfjluKB#T(|bs zy7tYAM0?R{shz#4D6|(LliZ8;5lOA#qjI$$eMO`cPF+Mv zJ;_}3uaLQjfsoLed|Z4$QIXKPyFx;X52}DEuZzjPgK(BdTJ=$|O0AHvnouEOHLF6w z3cCcWPHrAo;er)OEqWboi@^EW@m*z(Wni7#lmP4-JbN`A7hPe=zr;p!A2MiQg&S)8 z#R^qF0%_#=3TY}bpgi5wBA2NdbD-_BOmx%4$yHYtJghtGj3T4#}+@7!_VfA9En8xEO zRTQHu;m@52s}W^lEgxH{_KVRtXwafqrQ9yC$BbGG_UNEG8voU2@MkJze6uTI>THug zgeS02{#>PsG7{4l@LXTDRwtMip-?)pq5w+fk*Lee6FDv*ZZ{f#7Yf8=M&C@W5-)-8 zhgc*cQ8S&eE}u8W@voF&aG6F9qYzAFWWdRKbSo>JiCjfbGLfq)Wg?^L`xh8eU|zLY zPkxYzd|7wF#Y%|WD<*UNzkIK-;32(Z7oA_*2JvoHl)fxfQHC6m6v|*d4o=%dl{jg*JlE{6pZg)(+y6)gD_ zPt5PDW%+h9g%VBJ(UzC0;Kdd(oY~db(w&>E?r9ZA*(ta6UeRRz2}mvy55lE0VkbXQ1zX$1d#pn;*~ZKY<(H~p%i zZa%FN)o_}Me-t|{6BT=o3?73$N>uF08`XWMWu^{0tqxS zRFqH@tPMs>&-^47@@2ZxB~oc5&sSQp>o=1*wJt&B2#*~d0q8CK}BAzwJk}H3za&H3s zm(!{s#L>vb(=x@70fp)*=2h)XF*7~M6f;-L6r(uM+3M*IOq~<3bdOlU!>d*02(E^G z-yv-9Kl@%-_~>fs=liQ=#ecL~xf#2Jmrl0cSMA0N&aXKkf(+I^C;%$}X3Ny8;*dF> z)*FbzsRGD*%(`l2Ndk?mu9lV{1I|tk*yb|gRhJR3x{Q!G!Sut74T2p%ih%)dyZGO6 z@xN28%KG$cc!cI(;A|}G-&V_P!XAO-U^QGmg=M{3Izg3nq-`t~!QO{ZkbZ&+H){bN zC#ZJaWytAMg0cL#S`~Vl;ei?IIx$1fo`pV;Fy*F5<~Sxx{+BmJF6$4?-(y`PFoo1WP#J>hjem3UXxa(l zYv2mkvf0~81+8PdzK;EhMC(A3Bho8I5oj6PX&H|*Jj^*);HXiDs#YSUaO%>bs+0DU zy7uiZ?S!-Nkeb_$F-f;yUi#L^+&qNg_tMszlgRP?YCKRDR;zMzIE@6?Qf~V8>m(8! zi$!9YFa+UPHt0EY8BodsfEASAl~r*r5eQBl3Izk ztXhe;b$AD(7e&}5ymhkKQtQSW&Ue&d5{}3Dc)}u1t1KuXkltMjf!OZaeDg>$V`8lb z`1a@qj-rv>(m;+3C`vCQ-@5EN?y~E+%PxsP%wNoZwNuH%Rher}xob{&twLdik7i)} z5=uZ6UagfV#2%sWd@YnUBMP-Ta*aYE(z066tP8ae*HatF`^d2o#LHTdex_Do?gA-t z?^D!uVve3YF*lk_JzJ|btx^8kc|N!fvd@U&Jho0@Zs8=v9KI{iptzSdnaC1uk5(DI zVMcGw!l&x1m{bSL&m!RZ1!%2&L7m#YGEf@6$l^J5a{J1tlh^X+>ZGX|b+7i-Uf{3Q z$tZ8DgN{o)p6{wtVa9&{R>N99eaTK_ZAEo&pu}TJB6d5vV)cyO<~5R+D@l$zXy~U+ z;;p(QN1ep!mqA+cf0K3)rQLE#W1r(1aGiANp9@8GA_AIva6gXbz4kLYc>?Od5{@yL z9-^&*?Z4nr?cq9=MK?pVS72B(?pFKGi+=J=8RT9@hM0O;$&v4q%UH?B)jRQ#LQfJO zDfJQ`=-=!x?FjjqpuwJiqVsx1n^g}de?@fQ|IjOVh+9iTsxYmpmxs7bL`mV;BY<>r z+_Uv=fS`z@bPc?^hFP^q?{YnNUJk2VFugE6Js{ESn$zN%(^9V>kr=7@Fn$9i;0ewE`!DDxIHV9P{-}q4U&j+%9~ub( zI>8P21BH0p&Qfo`^k2tO*gO%B`UB-0xjCSipc@#>U+WcOh{*#n)O8|;o;?whN>2E# zULj_8v^Is`-vC<^4S^64qm6|F7ex$=Ni+!}CmRgC=zsnM<52S?nmD{cp(-p^%j4K7 ziq(K;H%Mz&N^7AciG{ERvUb#>hTANge7j{!XjHz=*ksPIq%U5O`DCH{72{@?wSISq zf#i6v;p`v8k;LCs^Med`!-_<05xX1GuZy94 zXd@LM>^ZKB*ziF(-y?yh-|ps^MkpGph4KmbAKz8`-N7xr$Sc}lP7m~C&efFXq zp3a?4?i+|pAm^^XPdmy##n-U-*~vVUMh-N}Eqq`n>%nh>7AQS@lKd*)NS>l6>ETl@ z4@+z#5D-Wn*sgWWsdLS#Lv#Nwp0Wpx)Mhh&Rr*oxXuciDaSc#iXQ zg-ceMR`Cv9*Ck!oEv4&{($&3L8jXX#4{5o4Krm(5ws(YX-kQ zUIj{5P_sIuq7+>h9TNjO2L<6^?Q4XriP}K;a)LIOKc(bnDEZ4LYNL3LEt1F13;;_fj8@z0vUx85)c=B1jiw6hsuGT-92 z3GYeSrbt~@Fnn2K7+@^HLFkxe>dQ-Yk*7RG)_ID&__Qg&tcz5&9+xF+y(DgLmiYR) zbB-gvh6S(|C$=~}No?^J+5;nD@M3L@z4sLDQO1HGy$>E(X`l1$gNz;1&EN}LR1%>qN}{9|$oq?y#db@XO6x9N>p`L=@m)&mcalSD zMTTEyYAYC?*GL6vt!{z-f5YtkZn-vrT~KsVU9D8Vm8MPO6}oB^sH>*@z0(c$1-PJa zI64SDx$hQ_X06b$T1#T_k|Zq(X_Xeew?<3mfvxg{$x_uY-OP~Ge9)K->33-{wk^Ga zd0MNjV?-SLt6Kt6`aiT<0gEKysggbKDFN3Q2_-+9%;B8_i2(D!LeCb3g;>f9Hx^o`g(v&GVAWvNf`g=Gb-ywDiVc0`iwj42A)w_hcoy8(>NF-N^e^4T#gL= zQn%PeXH@8O-C`Fhu`=`vQ7m3A;LQXrRIU{X6nOTbTg3ZkWatmMB_PEWdXhk)$M=Cw zdl#N@hrY8jZx8*cRu%eo3XMDT?X55^ON%k5Q*=u(6^o5gusch84L`k;78Uyp8oh$L z@LFEdIc75U-P@e8??F#8_C4BU?Cn@{>KMFvFIEa!Y$A}uBkGy(m!(=V8wQRCP~YWs zBFv`~gS~YrzDGpRActOU#j9+|zqyfCWRTV7oKiv6rmfAR+WevD zq`FP1mern$!!H{p7&W?}di#$`f+*220bl!QlIx_88vbjy|IK%UXcKbhYwzROb}C9Sfmt3JXb;s%|VK zwZRhwTC_QnvOT;_oozoZz*i2BwX3u30vegzE^!dvDM{&UJ1k&fyAuaidXhM>w!3Pe znSK)DZMSXELJa)fcKiQs)LIP_Ruk(AYTm|gb=Do!ETisHY;rbfi_;fnKC^OZ<}&(; zhn2WDO3oJ~*Tx)6AkkN}L;Yq9^U`+vT`z0iBKNmbDB?ObH|Pg5^g|fyJZk8tA=YoG zq2C->uh4G-=<~jH3w@KO58c+^sJTu}1bt4Uuawp!)O<_LUG#-0nwoZME>crKUobXO zbB>xzRk_&qq1R)<)O<|ML2CNqdp#??FSL%Qmr0LMbB3Dp)J&+uW)d|s=;Az!nqR4* ztGLyIcRVZIIjs?N1)%$q^&&NN2DJ91ZH;z7>nSW!-K|s+t)Ud;h&Fo;Xm2x9k8@qR zEQ6zmjr|P))~?WzhWRtZr#qy-uElE_4&s5-`&LStx+MNKt?rjmZnx|y;WLNTUAp=kx6EmXzB1e>Canh?Q@4*^u0gc`+S~HKIfi2t@*pwKKmSh9O!WP zP{$?9*fPG%W0~hN(=xAv+PgQ|AbF!$Yt?c{;^4Wd^WsJ)%t@LZ_w0zo0ZFNHX_n`` zazu*oks~VZGKHBvA7-71MDvCuY#aa9POv+V$@#amBC|D~HEPslY5FGC2yWn?92L*n zuuS>kSK8dgb5ozOBqWB!qf{0{tnQY%iI$Z3ILm;MV|!S}3?4Gt0)NrNEivOq#ymb` zSj_M-(L*f*W1`25eLSYSWx?E3%RC@3`zcG(GjpfMPM^KNk~lZTf)o={dZfo|lhfnP zYqG}x#rbgwGvia{S>`6CB+N;8E><4auL;-h27n=`wn`xHe6$F=r-`Y%XK&SI%DJI z>P)TA9b@LhRP7%`6j?9|BKD9^WN9mH<=(;~~$^&M&X7HR>8ly@8-RjB#1$h&Kq zJWjLN@_of%ezzze^xsE0PWgu@ZyF%(8s$F)iogCx;XLU7S2+J~h$FwV{9`zySsmf* zo;u2c#VULJx{b;8-9@{*WR>&Xh3{SBwrR*e#4XBl_qfGTiraq&ix4?BOIyVrl_w%Z zKw7_vfwtXYqEfqa2;;(k3Sk`orx3<*3gNik5W=>1Z)(Gt?aY6ODNH_oON(IpCF`T4 zkgxO=dpA8V&dH|zgtzqWBbv*Mqn>SLVLvfge#^v1a&I&U4|!obt9LA8)w1aTVX>8d zqxmq#`F`S`j}j+i5R(fkZ8fXU64CFvQSu_b|NZ-|8ZW9tkvFNa||}f zI^lw1{k-b4bkp0h3&eUA_C&G-xim&>VQ(llz?p56(*}y6Y>((oR67|wT)C3_WXQAQMUad#i+zy7q2KUH_Y7s2zVgH<(TjJ_AfpV$ z8IjPE$v$Edi)ZzcN*X0ZnxI=}ba8?~^4*%{TSt zy|aire=JKzC$R^ijjZ{EtTgjZ8og1cNuEe-*(_;J5H011daXBKWU!u_T2Q(c=J_Wh}_k&2UzfVRMc#DvpiFXu*nOPWx=#7o@*dqw`k#cCLn2kM|V^}wd zpyzd2^2QV%$*#zqiLkFj!1G4g%04#@`!vs1_PMF-pI^vEWp^M2XN zE!YO^x!a{{wz3P*Lc9E)MWE-i4VLlQ$|cVkEaS7uB`Xz697UGf70cHQmLC}`v3&=Y zn+=vg%V0^axFX+p23=7G{!I?$V>9KSZAGX&^pM!6H9-?sWJxwr%;hy88``}Yc2)rq zuzLkA?(cIe+iv$pId;1@%CXzs{G?|%V$EL$TJ$Dqr6KKnn&C8ZRCC9I<~cI_3X8Mt zc~}H8-U*ib_LNH&iihzYasY3iBkNNk(G8GG7m5It1lq%Lmn6`lVG`(&BQ1SJ4>pQc z;2r^qurWPRygoNKhX()mk#!PKr`dgIM6TwYI6H%v4+Rx*!D+*rfj=YxUD(T_M8Z^bsr!` zGj;$6jDoW_M`ef;)R(rQ$d~WUp$u^Wdm^DF5vEZ1NQlx6UR_v@j2$Q*V?R?@8rI^n z94Ar@?d(aSI7dY!kj3!$Fh^b=Bno&?t^$Eyu8PQzTm=HZT#Cqta|r}6dTxj~#Yg56 z2!`d#qDRFHJ~dZ?0NOj3c}Z_KmP2ItD$z0xGa!&NxUL^6&hXU+*A=;P{|v1YGnhit z{FK%en#tR}BH?H9aB+kmRZI`(%4s9SWPS!FZS{&_xuojIkz$BD-$PEmD;#{gzhD~8 ze>3?0Y-nq`sI>iAY1{H5X^W$Xzs?s)+YT2M1WvEJp7ku7) zIR<2U4gnBiwswq=T1$+W%@D1a`1Xty=lHyf3V^L~By#1##$cTv!CNk=<$gY84spsI;*>kYDeLAD#sNnF z#C|?MI;LKCOuc?lrGoxX3O~m6JlYhP<<9NKrT}^{A(-;y>~)Y3I?xCugs!H%1_{Bh zVM5SwRGl=mmBF#1ZPRq;-k_&qfLQ`4uU;?wStA+#F(kvi?=umOYh4lrHtmT5?_Cpx zA6ksd;JuLZ!g}(i^82a622U!WK!g^6gM;!^D!4UGyuzVDmFUx0u?+U#sHU8@(j$oF zN%<;lKjm~$$zD>@Ay^jYsbsKGb>VhlaULauH&qXA7hn=41SpN$MVGVbYK_mW}^v<$|Cl!QF_!e(&FQ|Od1uI0(!ts>nk2<`ba z8vAWN>k>i4D;WFYCEF)@@Tc=+;1+<$in3Vn7dZRyQW{=K0OH21GxhS z7=evbJgY@ifP)-sERHpne1$qwiWtmzZ=m4YlSk*1BcX+ei^!KFc7i|0=F8ZxJtDDP zvs3st?FB>(Ty-K`$ z`2+w4zps4)0IOFz*Ax)I{xnpsL8XRDZ$DG`JytixD`5`83@E&C5Yog+8U8J#iC+0~ z-zxF77K##oQ-HvNjamkzSUi={!m+zkAt?f*u+kM;(S>%E`r{p`)W6WK5Ra~Kb?l2UxYp+Xz3azPt5?P$Y$SG4s+yG$>X<_+Ro zw%f&E5jgN3=!9S!yAkjO4Fa3jtFUW5=VX7nQ2zD>gy5&Iibe3G016wM*^)w4ziv<; zZDvafseawUo=6TYbMXw;N`~he2U_MLS(YxsS$oxmds*m;oylJ?8?)@EaZ;H9MyY;WDyCGP3ueIj zQ4PO%c#~V~EFgxs_IS=LR`CqO6>dq|SpSc6A6}5Q`AZ{d@*Erat1B`bdeY9vL>#l<~>15H@9TC4?<#A+{!z z$kEk+tpz1&QwHs;)gbXCSo*o>%vY2s%s_u~4fKyGA;^SJLMG0W4{X{YgZHkGc?=bM zLT3JEf1r8f2t1{~VW>R}N4G(vPV|@Sj*7(`8U&ljFQ9Qk@%R1$h`L~Ygfx9AuJb%t zhxo|`>EH~MSCy!(P`14B3v7jcE=fynl8k zX`{NZK$uFMpfVJ)gNl`^kj@5Q0jMsN$fv&&$#Aj+^o$}ERjNQW3j2ETs8RydRGN`? zJ;)z=Xm`d^6i0|Jo?J>hGWdON?MHCYXC(wF zT%;i7FU_Y#E4k!b5$`nu&HXt#qmz0Ga!j$KWIqZAj{;Rd)aOLaCE5F2EVTz?9^O$f z=9N+~g3I}ldP#W7P}uSLnCJjVK*FNdtYm4iAi!{ zuK0y(Dp%DM z+QAhbi_C^{cF>2H%bl-5hM8dyhW3pnaJY6pAGT*Hic~VlP#}i!mkd(L<&;DI*yI&` zCvt~@+?!5v>~oL;Bn;mTUsXUfx0j{Ox!K~bZo`nSDWi}E@181xXRb+T zyZ|SUV2hG+u~?gm8vj;KMOM!9*Sjis$71({3NplRZUVc&dtQaz5Gi;^hDZV7lpzq_ z-Y+*a<2YJP2P8`!i(hmsezC$9T_sW&-&R3ocvl65B(xCT66U#>ZU(`d+dywPDY3YZ zHiY)p3fZ_ubm8ArkQ?qa+XdIJ!ow84vfPT2IdP3mJFfBG71uM+Wa$+O*MYTSBrmE^ zuP#>AiUGV5jQLd<_CIY}{^*@O@{H*doj`F}+hcf-XYshDILl1n9 zqsjw%YU1ras4;wS8x`e)KPpvD{*|1-GK zl68VZm}wJC16T(c-4DW=zDNqbqS*GtzFs`|3bBo*8N?QP%*8F`;fbb^-~*VXzDgQ> zMUI+e3TJVu3-{>IwSSLkk=!@O)Rd2ax9|8x5-f*JG26d6LT@Ese9knJZ6w-?`&z|a zp6Uakg|8geD*k(%{9($~=S_>*S5Dr?u1HpGih@r7NgU)2UFJ4k%M|Y;25%rnywL=z zeBbVe7D9i8dsS1$@u-$%LLb3fSF7p=?br)^sQg;jhw@ujRMB&Hb;F{!2D}34-24s( zjWeCUQzhSRtcPmJ7`W@e7nopp6MY5m4^FG_jNwD8Mgt@M7>pwpy(+79iwZqMT)7nZDR|4IO9ja zcu*|8Z7|aX8mY3IS&!nUNyIyherndUcnK(i&yj`I6rB88wMtcm)l@J3s-{{EqZ{tm zmvHYI@?NtVIliYpl?T-*?=`ET?cSpg=wq2KmyXxf+i9SIPicA8l11pV`C~PT)u0;1 zYC?@-HK>MI&8#6-Fq-tB{w!apSS_fLVZHQ8e6_)9fnpW-kUpBh=iPQzK*L~#4}`Z{ z!rTr7I8G$JzNmo&I9--R>OJ`dgX|ZI?0P>vnjfxF8{T?DK4_O6_KfB?l|+Bkq}_-N z;Z16l?$8V#_`E^`uEf1L2rMAQ48AtX1y)z%YWWCHLBD$-OX2k#rU~ zCGZ&d5|JXQ(6Hv|T1O=DZ)#Ou0|MyVv|2inzMVVy*1HZP)2msX)3-r&Ms(H@P4cZ? zr+oWxo$?U0$+tskIUiC-zMW*Ogr>u{xDtIk-?7r^TX%Cc^lf6T^6d&VztguXYUPD) zdRJ`$dN8S0mR<1dBs+E2xA4t%%D2zsNLn5FHp$&1WKWIK#Fhv5HR>)61BL8Lc^&3vQ9;H9tNH>s`Kh(!2rFBwg_YQICvE^ zR@ftY1^)@e#^>?HIPxQ~f>WmB?y*QwtzWZ8bz{7vsBV0XqS^+vuZIU8c+J*hh+g3_ z*bgVP#mg=RmmPR%iA`^~q^{8uW9P)BEJ%u*hu^naarP>jxsqnBN{#o${GPADZC`$B@I8P*n*cZe4iYFmvp>r&0h@HllU_DJG@N8*N^yK z6JEl> - Contributors — lincs 2.0.0a5 documentation + Contributors — lincs 2.0.0a6 documentation - + diff --git a/docs/_sources/changelog.rst.txt b/docs/_sources/changelog.rst.txt index cdffeebd..662fd1f6 100644 --- a/docs/_sources/changelog.rst.txt +++ b/docs/_sources/changelog.rst.txt @@ -4,6 +4,13 @@ Changelog ========= +Version 2.0.0a6 (2024-12-03) +============================ + +- Remove everything related to our in-house Simplex +- Upgrade to OR-Tools 9.11 on Windows +- Upgrade to CUDA 12.4 + Version 2.0.0a5 (2024-11-08) ============================ diff --git a/docs/_sources/get-started.rst.txt b/docs/_sources/get-started.rst.txt index 2ae454bd..3b117e16 100644 --- a/docs/_sources/get-started.rst.txt +++ b/docs/_sources/get-started.rst.txt @@ -73,7 +73,7 @@ The generated ``problem.yml`` should look like: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a5): lincs generate classification-problem 4 3 --random-seed 40 + # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-problem 4 3 --random-seed 40 kind: classification-problem format_version: 1 criteria: @@ -144,7 +144,7 @@ It should look like: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a5): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort + # Reproduction command (with lincs version 2.0.0a6): lincs generate classification-model problem.yml --random-seed 41 --model-type mrsort kind: ncs-classification-model format_version: 1 accepted_values: @@ -217,7 +217,7 @@ It should start with something like this, and contain 1000 alternatives: .. code:: text - # Reproduction command (with lincs version 2.0.0a5): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0 + # Reproduction command (with lincs version 2.0.0a6): lincs generate classified-alternatives problem.yml model.yml 1000 --random-seed 42 --misclassified-count 0 name,"Criterion 1","Criterion 2","Criterion 3","Criterion 4",category "Alternative 1",0.37454012,0.796543002,0.95071429,0.183434784,"Best category" "Alternative 2",0.731993914,0.779690981,0.598658502,0.596850157,"Intermediate category 1" @@ -253,7 +253,7 @@ so it is numerically different: .. code:: yaml - # Reproduction command (with lincs version 2.0.0a5): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 + # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type mrsort --mrsort.strategy weights-profiles-breed --mrsort.weights-profiles-breed.models-count 9 --mrsort.weights-profiles-breed.accuracy-heuristic.random-seed 43 --mrsort.weights-profiles-breed.initialization-strategy maximize-discrimination-per-criterion --mrsort.weights-profiles-breed.weights-strategy linear-program --mrsort.weights-profiles-breed.linear-program.solver glop --mrsort.weights-profiles-breed.profiles-strategy accuracy-heuristic --mrsort.weights-profiles-breed.accuracy-heuristic.processor cpu --mrsort.weights-profiles-breed.breed-strategy reinitialize-least-accurate --mrsort.weights-profiles-breed.reinitialize-least-accurate.portion 0.5 --mrsort.weights-profiles-breed.target-accuracy 1.0 kind: ncs-classification-model format_version: 1 accepted_values: diff --git a/docs/_sources/reference/lincs.rst.txt b/docs/_sources/reference/lincs.rst.txt index 37870387..37eb522b 100644 --- a/docs/_sources/reference/lincs.rst.txt +++ b/docs/_sources/reference/lincs.rst.txt @@ -988,30 +988,6 @@ Overrides the base method. - .. class:: OptimizeWeightsUsingInHouseSimplexOnCpu - - The weights optimization strategy described in Olivier Sobrie's PhD thesis. The linear program is solved using our in-house Simplex, on the CPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it. - - .. method:: __init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned) - - Constructor. Keeps a reference to the learning data. - - .. method:: optimize_weights(model_indexes_begin: int, model_indexes_end: int) - - Overrides the base method. - - .. class:: OptimizeWeightsUsingInHouseSimplexOnGpu - - The weights optimization strategy described in Olivier Sobrie's PhD thesis. The linear program is solved using our in-house Simplex, on the GPU. THIS IS AN EXPERIMENTAL FEATURE, you should probably not use it. - - .. method:: __init__(preprocessed_learning_set: PreprocessedLearningSet, models_being_learned: ModelsBeingLearned) - - Constructor. Keeps a reference to the learning data. - - .. method:: optimize_weights(model_indexes_begin: int, model_indexes_end: int) - - Overrides the base method. - .. class:: ImproveProfilesWithAccuracyHeuristicOnCpu The profiles improvement strategy described in Olivier Sobrie's PhD thesis. Run on the CPU. diff --git a/docs/_sources/user-guide.rst.txt b/docs/_sources/user-guide.rst.txt index 0e3ae61c..6d1ef61b 100644 --- a/docs/_sources/user-guide.rst.txt +++ b/docs/_sources/user-guide.rst.txt @@ -512,7 +512,7 @@ They produce a different kind of model, with the sufficient coalitions specified .. code:: yaml - # Reproduction command (with lincs version 2.0.0a5): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions + # Reproduction command (with lincs version 2.0.0a6): lincs learn classification-model problem.yml learning-set.csv --model-type ucncs --ucncs.strategy sat-by-coalitions kind: ncs-classification-model format_version: 1 accepted_values: diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 4f75415b..b56c6186 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '2.0.0a5', + VERSION: '2.0.0a6', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/changelog.html b/docs/changelog.html index 15f0cfd3..1f683adb 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -5,11 +5,11 @@ - Changelog — lincs 2.0.0a5 documentation + Changelog — lincs 2.0.0a6 documentation - + @@ -34,6 +34,14 @@