From cd008762e37e2afca0a878ea1f28a87aec501b7b Mon Sep 17 00:00:00 2001
From: Sortofamudkip <wishyutp0328@gmail.com>
Date: Fri, 14 Jul 2023 02:53:50 +0200
Subject: [PATCH] sphinx documentation

---
 docs/Makefile                                 |  20 +
 docs/_build/doctrees/environment.pickle       | Bin 0 -> 256052 bytes
 docs/_build/doctrees/index.doctree            | Bin 0 -> 5007 bytes
 docs/_build/doctrees/source/modules.doctree   | Bin 0 -> 2770 bytes
 docs/_build/doctrees/source/src.doctree       | Bin 0 -> 153021 bytes
 docs/_build/html/.buildinfo                   |   4 +
 docs/_build/html/_sources/index.rst.txt       |  20 +
 .../html/_sources/source/modules.rst.txt      |   7 +
 docs/_build/html/_sources/source/src.rst.txt  |  45 +
 docs/_build/html/_static/alabaster.css        | 703 ++++++++++++++
 docs/_build/html/_static/basic.css            | 903 ++++++++++++++++++
 docs/_build/html/_static/custom.css           |   1 +
 docs/_build/html/_static/doctools.js          | 156 +++
 .../html/_static/documentation_options.js     |  14 +
 docs/_build/html/_static/file.png             | Bin 0 -> 286 bytes
 docs/_build/html/_static/language_data.js     | 199 ++++
 docs/_build/html/_static/minus.png            | Bin 0 -> 90 bytes
 docs/_build/html/_static/plus.png             | Bin 0 -> 90 bytes
 docs/_build/html/_static/pygments.css         |  83 ++
 docs/_build/html/_static/searchtools.js       | 566 +++++++++++
 docs/_build/html/_static/sphinx_highlight.js  | 144 +++
 docs/_build/html/genindex.html                | 306 ++++++
 docs/_build/html/index.html                   | 109 +++
 docs/_build/html/objects.inv                  |   8 +
 docs/_build/html/py-modindex.html             | 133 +++
 docs/_build/html/search.html                  | 117 +++
 docs/_build/html/searchindex.js               |   1 +
 docs/_build/html/source/modules.html          | 169 ++++
 docs/_build/html/source/src.html              | 589 ++++++++++++
 docs/conf.py                                  |  55 ++
 docs/index.rst                                |  20 +
 docs/make.bat                                 |  35 +
 docs/source/modules.rst                       |   7 +
 docs/source/src.rst                           |  45 +
 src/Dataset.py                                |   2 +-
 src/test_dataset.py                           |   5 +
 test_package.egg-info/PKG-INFO                |   5 +
 test_package.egg-info/SOURCES.txt             |   0
 test_package.egg-info/dependency_links.txt    |   1 +
 test_package.egg-info/requires.txt            |   3 +
 test_package.egg-info/top_level.txt           |   1 +
 41 files changed, 4475 insertions(+), 1 deletion(-)
 create mode 100644 docs/Makefile
 create mode 100644 docs/_build/doctrees/environment.pickle
 create mode 100644 docs/_build/doctrees/index.doctree
 create mode 100644 docs/_build/doctrees/source/modules.doctree
 create mode 100644 docs/_build/doctrees/source/src.doctree
 create mode 100644 docs/_build/html/.buildinfo
 create mode 100644 docs/_build/html/_sources/index.rst.txt
 create mode 100644 docs/_build/html/_sources/source/modules.rst.txt
 create mode 100644 docs/_build/html/_sources/source/src.rst.txt
 create mode 100644 docs/_build/html/_static/alabaster.css
 create mode 100644 docs/_build/html/_static/basic.css
 create mode 100644 docs/_build/html/_static/custom.css
 create mode 100644 docs/_build/html/_static/doctools.js
 create mode 100644 docs/_build/html/_static/documentation_options.js
 create mode 100644 docs/_build/html/_static/file.png
 create mode 100644 docs/_build/html/_static/language_data.js
 create mode 100644 docs/_build/html/_static/minus.png
 create mode 100644 docs/_build/html/_static/plus.png
 create mode 100644 docs/_build/html/_static/pygments.css
 create mode 100644 docs/_build/html/_static/searchtools.js
 create mode 100644 docs/_build/html/_static/sphinx_highlight.js
 create mode 100644 docs/_build/html/genindex.html
 create mode 100644 docs/_build/html/index.html
 create mode 100644 docs/_build/html/objects.inv
 create mode 100644 docs/_build/html/py-modindex.html
 create mode 100644 docs/_build/html/search.html
 create mode 100644 docs/_build/html/searchindex.js
 create mode 100644 docs/_build/html/source/modules.html
 create mode 100644 docs/_build/html/source/src.html
 create mode 100644 docs/conf.py
 create mode 100644 docs/index.rst
 create mode 100644 docs/make.bat
 create mode 100644 docs/source/modules.rst
 create mode 100644 docs/source/src.rst
 create mode 100644 test_package.egg-info/PKG-INFO
 create mode 100644 test_package.egg-info/SOURCES.txt
 create mode 100644 test_package.egg-info/dependency_links.txt
 create mode 100644 test_package.egg-info/requires.txt
 create mode 100644 test_package.egg-info/top_level.txt

diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..d4bb2cb
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS    ?=
+SPHINXBUILD   ?= sphinx-build
+SOURCEDIR     = .
+BUILDDIR      = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
new file mode 100644
index 0000000000000000000000000000000000000000..e2d1c88827ee4387e1ffaa874d7af86d9728dead
GIT binary patch
literal 256052
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
Jw$ZoZ{{ge+t)Tz_

literal 0
HcmV?d00001

diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..15587ca854ef885240995ed0662c2b60c3365c25
GIT binary patch
literal 5007
zcmds5-EJI76?Wpxpa1P_0;}DKj?iwLB{P#axd7jwC@cuf8Yw{wdl7YNx@)G&(_P)E
zs<y{Sh+VWnF_Z*ody%+<SKtZI3JGbic>*2*AtWR&_^P^lradN35O-J_tLxP1Q>V`P
z&R>7n`1Iq;3+~UXtCVpu>5(uLNk~<0+F=r8F%>%hB)|Dl{^NYxbR;=aNhSlDn+0$L
zj7OoQB7cm{HOsGgq<W=*R*=M}-e(Q-IZ>esy-GCEJP}?@l%~=f@`&E@0!fLcp*J{Q
zDpcw|&3G_Ynn>+|`J0k^-^n8H&OPt;&hDMNyZ654?cCnE+gth|$-ICFkAx)Eo@QJ*
zksj1YBdTe1?CHcihW=i}$6SnVd4o)QTziToSrmFidl7{$OF<$u;Q}(KCzC{bPjnJ!
zN$C?W<dO!OAJSgVT90$qF_*qiC)P&)S9g1sTaTM&O5k3dvlTTUW{GGmIcx@aSU4>5
zP{H-46+}cS5b@j)BrcxXVV2Go0}_lS9Xg)QB#w4fN-T`psica^Lz-u%rOC*?k+UUs
zl`Wc%U*ROjs#ziLr~O#ye%SxkyAR*HzyCr1!FTUJdenbJaV}uw-|IhwL?Q#`JxYf9
z2siNF6(cSvm2i4LmC3<QUn<(&x!WDdBul%{o{xmZYF9BRlZD-sYjQ*cA9sh6h#&Q#
ziRyC^(n(J$otsM$1m=5<Yyb$fl*L3Mrjf!LtZCt~jm?JUI-<2LbNvT20w}44ql<?d
z>U2b0FR-;~zC6$Q*AIVthPUw5HcWPhz0DTcjeT}=KN}GC1vrVl4v@Zq-!=Tcgx~eY
zdB)yieX!pu*x5F_xz}<RY1>#yG7;9)EpEaV;GQA~&hEYFAa>O>oXvm{7+3NF87o`_
zQ5I4g@D32|m`p;NYL@R^1ey@O)|jUA0C9--)Gq8jijqNoVw#MHAu`U1SuLeZ32l+Z
z11f2l?=6@mXLXf`=oq|9NL)1q?6NwAy>HF&4R*tsp#!trpSPV^FK^yGk|a&3%*nht
zzkb@BFh8A|-*`ubzq>jC)R6zWs#_u3WkAR)U1YA8yyswp)cyDl4qlw|<5!AwJp<wG
zieR?BEkYhp<q;8jnhdN1Tpru}k6SZnJ^k;XC2A^dIA|>ovItq&k2u1oswguRJEmiI
ze6DF++cxXF$Qrv(MpQT;J*l#82bqbC;0{*fX3yPS7R*XYaZfSwCwTiTL&r3^Z~<IX
zq<DAJw5zl7+3kPx;@fYVOYRV}sB{RN<A2v4O6MVx!&ASWhgO}*H1QsAk+bii(%Q!u
zMJQ*#H!ZC6af)=gXhoZ4{HK#N;sMt{x7|jX6Zv!Z9xCOCB1O$EViEq!65(4=!<?sv
zW&U}M`DZU<{umNJn)w^pXV0d9EBzNIa0ilS>Azo8`|LC4v0u%tKb>2{E0u(rS3W<-
zE9`f#<d8p~cexii<S(!85cY?f=5;q*hSC0X-r;pOSmr;zjQLzQtQKKZ)WtJS`1_m_
ziuKG1#d;GZ*wxjV3;y-LyWpSaUF-!eIA~s2KtX!duz(jT)$2ZZ4QBnvd8gNXV445+
zGUl^Bn3aJl#aG$eG>eRwn+xx_lKhie(7F71s)%eMer)FMB6D}k%snd`)owknpIax8
zl+RPG?6ugoHNge57G%;kf__QgH!BszrO|!UR#a<bTnrAIwzj!JU?^PyM_O#YPofO9
zrpmXbnPfW6biU8}`=*1GOC`~X%&`d3|D)ZHQ!JK?15q`^7|W${naK#NRg`7lHkNi5
z2RCeqKhDk85Iws{G_7s!T`;S*OGA&~Plkz%b5Pb4dXm&H=M)8zZxj?7p_@eG;U96$
z{HndhiRBArzY8-+nkEuejULj-b}vheMAK!%Y|;sb)ilwWs+bz45z;|6!f|UhZQD8p
zxs=49bhJcYY%hguzQzS?<WmvY^f^LDl<8sjt6g-fxq0*Srcb3zq|X442ptLlkGlmZ
z1M7vQYf>6cN^Y*r?aYZd_@NE5wL<PphwAM&PjAe<Y&Ps26b!{+qR937s}T{SjEpEO
z9-^3CL?34^W1dQ6=%fEb&BigdN!&M0%wR)Y6Bgm2k0D{mCpl}HHInJXpOMT(4tTAG
zS)BS)2*R+Az|lTRK_V+~-BDm&p{)C7q*T!?Onl5F;Mzc0O%(O(Z#t9&+CSuq7Z6?d
zL#}M|go~6~wyMxz+hzrqQ3!^jw*zWQHh<diUbRm+1e1?#b>SN;EriRL(V9+|fas=;
zFCa&Z0K|yLDERMf+%Rh?O?}%1AS#g*pgCHe6nKa3HaN@|nbxV=?e{@ez4TbKMD!9l
z>gVQ)<#Y;w(?`Dr_h>hY(X{*4?R&82nj8jm;w@z+{_RRUf|Xdvj;ZW%s)z0jB!E8C
zafHJ<NL7fU(DwFia}Ah`{b_hkFW?u`;ECB##~8gQKI0=6;pZl;#6o{X#rOi?Kg|%=
z3WmDu*2U6~l7N)6#I=B-GYsq`=z<bfb|%Ez<19tDWWQ6m;h@X|m?S{qVh9XWiDAp8
z3Y87!_;_r=8zrQOMmqzJb6^HzM~DzUh6;?L^*S+E0&tCeiViOF@l6Fot{sq{o6T}m
z1X!bCk=9PkA{B=@`X<vZ(h1@hP_zl(er)iIhR#h&n@|eS(#WrX4Mr$CiJPrc)MDrc
z8PbN+g>5eFybgNH5{u_;HfHSL4g&q4hku#r*ge~8x)Gm^Pu%87#$LC>BxAQ69}}5b
zt-I05T}3<UFmIt#P;9hTe8mOol!6am4dC{8kVI2tIM&zZh*R#)DT$rxRQJ->Df#ZJ
zk<Ij1=4F*T7!;990*t%>3>xbo!I0u+dDN5EgOdIUtoAH_h`7Mife6Ew1_dM(2ToJU
fDf04^?3}q=4yypq$bKeS3T@Ua6NK%dvO(|PYzBfO

literal 0
HcmV?d00001

diff --git a/docs/_build/doctrees/source/modules.doctree b/docs/_build/doctrees/source/modules.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d79d74219bf868d555dfac7546cc4cd20ddb8ac2
GIT binary patch
literal 2770
zcmZ8jO>Y}F5Or)zmSjo(NK+I@+@>hfBxvL<(j1DO8U#TPZgfbB067E%wM#8o?~+@R
zYs&=!q=ytS%3Ijq)W6lo-PKyMfrZ5(IWv6o-jMG*|Nb}FsQ%oZDY%e}W11vVCCqr&
zOH^FuOj`fRKm5zT^AB8K({rOr9W(DXup;InOEi=It#{+F+=|Q`H~V)Ci>*+y-Of9_
z%Xi-T2fXh(R@jWKOt~$iV;`n5yZswmgs`>ogRi4^3yN6Q^8?o>ZE}3eb(@@~ZaWi_
z`Dr<$Za}ToVpdw5CFH&(5)<;=i8E>pjQHJ=G_Qa4lCroO%xHY7**vT%-HxScnDTs&
z-{wPphi~yC_fM2d8zs>%&tJZHI(-v8`}OIoSJ5j5f0k+TBznmVqdMkyU#Yo0N9K2*
z%M{r$Eo2%MTK)bw(uPeQ|1e3lDvJrS5~&P;PYh@JtV||_u=JctaXOi6D*uddXcN_k
zjdGQg88gS)0Ff_GHp>}+>%}TBR4J1cWNXm*1`eWPtJx~*&D>W2h<^>}zrlA8-+g=!
z@!fXg^>Dxs32ITHHg$t$Hq`EKPu)<+I4cu27f220@t>*d<#ds-!g7DI4fJVIkpi_!
zGd1&<uFFM|fJ2vV)a-5zJz3^6rdi@oHr$}1j8QVXz}f+*c$G=XzvGYj5q|_Ewo#=B
z4B)G$a(m6;C+C_L1=F6c9yIKqTva#t0f|`aq9!6;;<Fq!FooR%?B1%mQDuR8tY@$q
zu4OEL6!zY5<G9p;+oWakaA~O-?Rth;3+6zW2d&cPT1m@LZP$HGvl5WEQthhJ7Nzx5
zzBhIKlu4$kRoY{aP-w!^yue_$4oDE?6vL*Tq|_NkBVa~?7Q!q7cLLxS-W|@BvQk;L
zGI?^tje_7&F|wE|oqJfu22?2sNEv8t;PQ5DVHt!13pp2-lcgdNvDwf_bn1qh6-rx@
zu``zWlTA0^G;4<)cfb|`s99=Dvs~11orKNG6ye4Yo&;)Gp&89#>03=>77pb<y0MVJ
zh%gze1gpI3mv%n+aRMQFcV~T)Fs+p)oXR8veNaN2Ew<k6)kv>+=~Q04JGwS=%>{q&
z#<kO{1eROxtWR9q>Gs0`3{c|0C&Pif8)a0cB~2ONPB7ktq})x-Vx<!T{edP36NEc;
z-B`&v&ImX}LJG7xvGBa>#<aAGT$$Xa0Jla-nHQwxA5g6f0@TxzX2IcJWdXF(gxX)3
z3d71okwqT(w9giWGK{S5tSAy&awd$Z`MF0DVdyLi2Whh0S?Yp6azh-(Knb*IBco;+
zS@s<FdH97OhUu^dg$dpg)O#0AqaA{u2SHq*jZDG9Oyt7)7yI|!xL^eVDCj&gt^gYb
z%ZwuTpbYl~x3(}pMG?&AxVW%f$z!F{$h%u%Wt9L{63cRw$D$lP*eCbCe*!$mdLCbM
zA1qhyzg@bAQfc7pDbvS-*?AQM>W{e1GX(2fI)j9g&|7=%2!zZ@tIhTR#1w%cmu}x&
zNJ|%li<D>hK;G?41>O%$PNA|tN{HG3sGHTe9+FJOv~K6_DCQLTgd46>Bv7s(#O~9w
zK#1@PsQPr%1kluB5poU=EW5&C=o6-#U0WyeK;BHzT8iN+KlR`YZh!>(y+8__F^eF#
zVyrqPET<wPc(7<zUFaX(LG$DQS+jZF(=Oc>lV{;c;Cgj0fp|ehArk>{SYoM88F~|*
z0|!V7)UtTSfHt_r!pp%Ou376x0?hC>ZwK8VA-peO-wDS0H-E!l8`lp8dr<(`cb>nw
zH2iD)f6a%+jaG|Q?H<Lr@~iOhSX+W7m+R^@S1o}^l@-O!XDVy!Ul~8UW^7mY*F5%@
zQL9adYyQz&wGGYu)^%Ua3~pw0j2N#D(89ajSY;W21%$XVcAho%PdNMs{}SxSD-Jrs
nJISElb-=c9teJOPb5*k4=5+vyq@h}aB=okX4TPJwoE`rUoRCep

literal 0
HcmV?d00001

diff --git a/docs/_build/doctrees/source/src.doctree b/docs/_build/doctrees/source/src.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..df7b3c3b191849c2740b3c13047b24593df37666
GIT binary patch
literal 153021
zcmdsg3!EH9oqwL2Y~F+<B!q<t0kVPJ4FnJkB)lIU7!aa(cXGq*OmBLc*_mY?Nfv>_
z2WYf;9pm|ap!hmHJOLjlq9|~3_(nlJ{okE>;;E;1o_D97cl>|9s$V_2ySlo2W|qyu
z=fkA8yXsd}zxvhh_pNVLSKl!Ijk9LWo`wJU%NrAJxw>zpP%2exC8yE$7nW+p*0@t`
zw(n?fer5Z*_MqQiFYIm9TJ@sS_GdwgqFb(%>Q1$NMcZG7$(!X$V}$ZAXgI}YxmK0g
z-T7{xyWooUpxf`yZ<d=CM|<QiZq$ppi9+$J!fvOH$spCdUCur%KKSs)Hm^<JL;=cf
zw%vpL{=BTLJJ;`{I_~u6RmxSTy|Xo1@D~-D&3bvX)r7WTTjrKa4XpQqVx`b%z)iTG
zUoDLDtA(Z3g!*F?s#SN!Fip!}&@Al6M{RexyWU;m9_G$<2mIG=8Lu|Cl(w9I?xim}
zbLSs#Is2kBFS~5ZWe&(|I`#ZXTP}4PPN80ObC=b|ntP$<xpS+#p>|HaT;088qF(d1
zZmBn%;jJeQ@2=Nc6T?ue^6n~jz;MHL>U&zH;fZpyu(wbxUo|{dFI2DD0*!8L;f>t_
z>KmyyKpTf&IHxu0F6Lb(bndPYfBTCrYmJWAO05dCl<9d*;1+2Ynsz*I+D`XyRG@nV
zXwBUK{jw4MKN|ku1pjXajkw1#O$_to?hw>qzMjEf)KDcBME1~KP1qu(Rv|3hoI$NU
zE3xJ06q<#G)6DUPiFTPDsrJ1vTl>z_+P4riJj<V7u9lpAnh|sRj@6XE06Mc?W)?Q+
z&zmTe>uvvFUgcABS~J@IN`7}(zv=evY_<!i?#n?#R2|+s?#o2?W~xG818fh5p?|p0
z-yj<expGyn&St2kRuQ4>wyi?5{CVI-iV@`ug5H+llRR2?q1mbjynv|4V2O8Veym(^
zaI|g9HJbI!tYcBcaweist=5`_kdyJZ{^@BOo8UOM<u<X_Y}zrDJ53asZ-9>hX);M}
z(~ccr$jmRT@#nJ~ZDk~{(Tzl}I~Sz2&!3$Wb_Z8V!Y#Ul;4t!M?`;>tW66ikeNAiB
zi8rJEedCpFtR3KkC+gr>>U$hE4qpX%ujl3Y@0|{h1ZJ{@Y-wa-avM4*u=wikTy0FZ
zC}l#2UpSkMr6s&WA^M<e6%ogs?=R6UPbfHeQ|bDH@wy&_AX45v4C-Pf_)D=s*4ylF
zNACvrz3yE&&fc%o>Anx#8n0?Ut7^EO3#i$mit=w&yHDF{w-9T`tF{meh_BVBjI~<H
zY6T$?^al~AQifQdsd2S&K=I0o5h*jL%!mV#sS(F=KCF-x;Sz;rq7Rgcz7ww^e|9xG
zSe^u3e3Kc_D%O6i$V97JY_=k9VfHpr0k~2n{)?@|iD-#WQ;9bVj~h4ce;Y5@eT#9_
zV?&;jV&}rh5&g4d!l{;E80Gf?4AFXry!{%VC6<lymH?`=6t6{Zz;w=7sWx6HSKI!a
ziAexNaHBan0a1aRAxqLM)OS10HZRCujA&@WDVE2|#rA%`ABH+bUIx|V@CNrZxsAKj
zoiL!hMOd%(ULX9UBLs#CeiYFOb#A;T6yx;k&?jGx2-I3B68>Fu=xEYg44eQo1S@I-
zK7j#Q8}$IiwgcY5?=!a5I}97w=Pw*<RVr*SxDWV?^37T?4+E>&XnQ*_!2>t70j}a*
zN`sE(T6cgu7^vSQcAVxDi?wP~N8tj}A&l<FA-lU?m~b_t@YkIMSg5frw@oO2+m*Z>
zS2BAVbl3O`D2W;f-XCG@7?|al!dnbCq&2RL5eAi5P$`4MDO9v7c)L&-g7`IlAL&q8
z=gUGR1%o0WBWC5?8o_{uxd8?G0FCLTC}zEPDg0yWd%uracoBP)&0P>GLmw!+_lh9G
zVE1U{&c2CCxma$3mE*tw;9d<HJnL1>&Y{y$v=}d<_0swWW=>!R<)Ts8un0Em0_=wY
zZxa837zw$~#Y=9*9RX9f;co?RlP?yU&hA=$GGDB<s?EmW=G>r;1}Ng@AmF*R5}?#g
zhNmM2K|$mytLqLBn%*bOUQAf86F2-ZD%2!)uvlXQpJCOZT%l3qUVB?^v{tL+uFdVN
zRh`^+_Rr?r@Q&Q|6NPH2&=@J!>dpwDIG7rYT*m&PfqK6z_h4f)_y{vTQ^W0z)ElCC
zq2cB};yxM}Tf$ia&hT!RdHqk$06b~x6`T<xaC=<p^0*BBL>=)BnR$txnVzbky?~yw
z2k2+T->N%4B2{XfSsTNk_d&=6ZTP9Ih8fLxpSBDCO(ezwoDss45RLaGyKp0@5yF*<
zB(4brm^dW!J$sp2j1PG9Lm`{;=qxk`+%l_#1;#|Zx^&>{y(d9<B;wfmO~V)=@<fa^
zKrr52OsuO+ZNTb5BDU8rlMCz9?kM~FKf6ZF?f5;fTcZ6fnZrH5+1I#c`y=6r_IIdV
zxY_<lxU#>+nlt7)G#lbPOsC<aA$#eaS|Tr|Q&Sv-N`YTURNWc&%9~Y3!nIDnR#?{T
zYc<X6v<o+PdfJ-5+%DW!^O%0cD6G}qvlo!AU;Vj&ayh6J$ZsAir@M{~IS%XCOtgU;
z?F}_+l7`PL{~$TPu1x^iZ`SG>-uGv3mzJ?z)9o9rMf$UAk@>ZE2WDCCrS%DSSxYca
zw1x0~zpq?nD+C%*!n=*;F8mMWJMXiWhGfWCp;c+-_Y^8EC)hTiP+JodwR$t(7>DWL
z)vX$?MC`|~a*y8RP?u}w7mXFkX<@>vVL0!-==%ka#VNPC0~~C%p?Bt?3AofeuKEbM
zDs4S!)s{}UWs2SF;!$&_qwSke(?~>*s^0rL?<s|fHI1sy@O)4+=Muc<!=?8E_z6I4
zZ#&!xQYD-|c)&XypRBjcGTPo5DD%IdD!wEced8S9wQcV#6gOZIH@KNG$G||ywt&st
z0@?Ts&N~M#1?;5xkoQ9Eo`3SC+=Oz49Gj;h*Gn_Ea<Nd!vBA*5HHD_@<Vu{_9})hd
z!`#Zso=I(GYO*@BCo|ALf1pM~?C<v%jg_5BDIcPI#oQGZTiJ7MgsVrCHO$>Ex<v5E
zYK>64rIdf@Tr1wwh7c-$Ev8=Yt;T<(xgma$Z5XYUCL<Mv$BRdSR0BpJwvGMxBo9Q?
zcqDt!S~t*)45$QHP|6JtGpmG~t?_CO^}sEYty2-Pm4}qI>TXT2n%7aFFwFC|XHw0n
zTs5b_KcJ5_{+!&P7Dw@REH_6}r&<0AQD0|#!Ywq)0jDmfT_BuYt4`b%k{%=obU%%q
zcqy;x#jK|BNp+XbsXPOn#(3t)?96*9$PT*l*Lf{)In3#Kd(byMfK?$nSt@PzW{b|C
z-Scxlyx|UQZO#kp71FFgClxRUrKoUn<?_X<wzeqFd9n50NePO=hHT|J-NKT3C&E8L
zj~g`MJ#wO#8^lS<P_8zCi=c%Hv*&Zlb-wc=*R16lfH-onL<p#)F|z1|unGsO<ZvIs
z=@2u0dYHp439y{XayX@t+&LV}G(>6|7v5=F?R;&9Nh3kKqZD^Dwol`h<IM)OL1SS*
z(?(=0;B8%&0gZT<>2>5YEP?1kv%2?$q}gjmw*M|xv-qUC?R#ZN%#1liCCAwQU69-x
zhaaoSbKL~nIcG>NK;xy-{-;5juCe%vYvY?r&=&!?qX`zeP?(;G=jw*4z~h}%;7gFn
zhRM27@>f81S|x)42K-9c{!D(wkmhAmHY}B%!^NiZPd6p#IpUw}Qirjx*L%mNkUGed
zA{<CsV>p;6UBQxitKgrYgB<kMY4`jE1WAQa%D<JaR?N#XC<wVM#Y{SK@iuG4()b8~
z<3o5jf#nOQBvCQY{Gw*D&s9w~WU47!jaly<4w-DD2YZ$DkB#cF{uguo=a`Qp&l|X>
zTDK!p>!=@2#Y~y{p?{*JFRd7Y28?4Zk*eTjsVmrpN79Q<c1#zu9<#e~vV)6KBqcjQ
zrDn1NyCYZzBSV|12u9eR>1@PyYWk`A7*=qCIR|-Q?c<Ao;T3w?(ZJIz0B(*)+nb<?
zu(1`k*Jyt)sMh#KzWx3Zy2O2Yld#Uayjr8>_Xgd9apUe~!IYLc#hPKK3!N`u3wyQk
zQP>Mw$``8p%1(1K-@qlo#P!aR*!51Mye^hK%K-+#D4lKDgMF#ES1&*yv3qPw$a(lQ
z>&oY$@d^@7)RsgI<o7}6$HSmO>pJM2GOz#Oj9CXYc2jgYbQ4lCDLRg8TP;tm((<8s
zu-;{f2DNQW{W6v4E$xo#oCl<WGpve!3NpcLSzDkm?(y>e&Mw@%KtaM2Y4z{eg_~)0
z60TOI`hyybiBBq#(%jGN<!cm7AU+)mp4PTPx?X2lLqixg<ii#h^9C^M%IQy7hlK){
zc~ygJDCqNbDne(&?=y+j8ZOcz8?HvOcQ0y=vEkk~fKL;M((e`jy=uPA;pmOY)H74S
zf3JX=+R!2?Q1IVI9jdPK-VTcGivK<m4IP*YzMsSF$2bjs64YFy!EKR1u;E7~3)e_-
zVI*KW??iiH+nSO|@xMMFc@{<`@z9>5(4J$V9d`%ikS|Btab(dhx7^?la&R#UO)uqY
zoG(BB%$-BI%Px80P7qMaU3U3JxZSB<E&`i#ZUJ5=0kR#7X}Wbs@KzuhxSX*vybc14
zPJO%p+^AC;S_J91%yFks#e(?S50E{=HP5hGD<`-;^-#l!55vX-&xuG5X1R^p-Wv6m
zM`ojg$&=;OWdEg^luT2#i!sxH@U`G&5~s|^mINNj4Z^HV#ym;Z%jafFQa%<|Z3G;<
zGc|@N$s%Mj(DQg(N0x@@9c0ax=<O2K4Bk|>eQij3D12&h4sDw#%1Kt!_@sKo$x6>(
z53==1D*E6kD=&2wV9&y;GO=fdG|SM($&MY-$jxwK6^1OF{FMpX(by5R-|*a158arQ
z*r|(H(&Par*(kAiB-kp|=br#kx<$ozB$iJ@?Ox23X{fD3wFUx{2uZ>yEh$uO|29)?
ziJ5qqY0KU)VkWR*J??`58)avxew?Xw)EEDRnKJc-Mm}ME3_c`|q556w3hJZYyB)Hn
zUzmtvsLX@^KS8z)P@>h69sD{)QnCY7Y9>3dI|E{<MEuOePzfxk`q;owF%26TD)04x
zC0P%6Z@{aeKKSwF)y;6V-@AqV-ip7Vuiny5L&&N~hnmPVZHQx<q=+uarBlw)(7qH1
zbqa5h4^KmJoD8~Zll;;^ql60!-BoVuTu^$vleH5<XUe?($7Tv4Bvl*bfabuAhk3!c
zx4iW!v}(I|8LGiBg+9#20J4%|{2Q7ACz4b@jY?e`xgiYz1^nBzFdTmdb+tLZ&`jE>
zO69e@(?DETGwIdFu|<2xUIo&%$#ZC+i23p%MiJT+Sr`G#MRrhE0nAU_H+IySIT)|-
z>R4_J-`Io=47ssdoy}&YrOKIUy2Q$6-ar)*PTh_(XhJwcM>6RBbxQ9Y%>h$D(syUl
zD8Zn2V5R}#CSYVF&i<ANq>uEEaN)t5s+T{OsZInq?uJaZA&S_900&k-CE$1~OPUP+
zGXT%8W@;U2{Bg{bP2-WtsM$Bi%};-nx|+Is&N%7xgQe@!PxNBZ>E}Pd-K1V7gZO@m
zq+}4N-Ao3de7R{lN(fYpUg50lnP`nvxLVcO1_b)=P+xdonY|zxTqETO6rXbhddLES
zK-tyQBhZr(td$$^Zs+)f1IGcC_c(A}Nra-u#zE1jtS&I=`FhZcN>07l$vl{jQP-H8
zEj(S^W99RXhmPtLwGPR={-<XOYK<yC3SSS1CCu}sa*Z(6yv%hrWJ<Gy`4YQu^AaWr
zPh7$*+J&2!FiChXmM~lP@((D0e>Ll{5S+C2ZM-uVb1HoK^K_F~t>GdqE@7%s?Cn6!
zvH6!O#@hrpyP7nJQ<&KDn_>L%rMEkw7;W|t=efi*BA4J%)q5zSQP9-Q*uJ<Wx7ZVs
z5W!KD6apYh3bEn%J;<SmB}(24wct_mKD=T)4ZE89D0vcviz=KQSB4Ye;3bDNL2|Pt
zNCri95hF{X9t{dk9U>z%kNqTs)kcko_!;w5h0m{$MG34G9LaXl=P{YrzkddW&tShC
zpwaWkQnwkR=RZQGG|}_dcH!peNx~DO=d6V`Ko;`~DhcmJ^jv8#Ukf7o{L7mbdTbfg
zH8LwRM^COH71qM@ClL`bdVZhTL2xMRi*zC_Mo%?}y}w7ZFtC@s+5mLg)bz|0Yyf(`
zsb4h9Aq9#JKt>&^uJRrR#dd{20&lDW0tvY=4nSTGmDT`AjO!Qp;|P1SQt(4q1=z}?
z<TujLneR9scKj6BQ9ro7M%7p>slqNFC%03?@p0Pk1N(PQ7&#ty<G@biM!DqFVeijQ
zcn_<f(l&<{?S-RuVX3wvU#BgM*7o4Gp8}+W-9G$Jywb&p!W5HsfY(yRX(#pAk!y(q
zGd(JU#f?(4!Qwh1a#L^Sxh9i-iCo-^nFfU41W%qw=WZ^g-OR(8lF;jgGPl5Y#=ShZ
zW@-!V<#_{SGVJBS+d92s;6l6D%X3#qdVI)2tERm?ce0wsC)LAxMq1T-Kgia}RP?D)
zGF9p-u$L#SD$`ybLz<<6;b+Ua+E$)$S`|>jv0n~(Soug$4kjh?7Ogit`O{GXCZ(-B
zO_ns7%}=pz^8Y}TZcy?4h~?8j`+LlkX`mgBTE&-J&A~^EpQL2U0sksfy@^Wy1=E|o
ziPRg|#2)uXhP9O?{T=j5KW56*E1hrZ*^s(|`tbMe2d#F$smJUE2B1n2@UDSGZB!nb
zA}QGcDm9ZG*xdpxsfai#rup_vL>39Sr~25iq{1|8A&c-iCyRDL%Q#uYuBM(WIv%MJ
zeB&S9B;#Al6IWA?jw6Z!V!9xSuFzq3Kxo2oncH)_>aEOgiyahEf$)5WC(7B4Ls!K+
zX*(-amU;b;&lFZD&=FBa=qRurJPRe}Bvals9I$EU6?T0z=4+%TGjKpRK&CVt&|lbv
zn>ip7p2z{c+b-O^f<nR-2PDsEF@R10SD|BD?y;AtIp#owNaB51DV@IHbvNsbQ2aOZ
zJG}Mrepzrf$nRXs#A>FtMjnAehwBDRQfX8>jf6J&YIoG|f6}f>a|6D~E0y^6;g9XY
z&4x$96AkazcHw5jBjHL->WCDx<%Q3}oVUp4E_F<u$@IEA3v(7!DgsZeU6-ic!|m;~
zY1eD(uN20dk2qwN@4XvDgiq`h2PCF7kZsl?V%TXe+`CtA!aNMeBAD_&)Bw7`T8j6%
za6^($L*!M+;vSOIBK@nPwf71fJ5xyi?zSqW<54mN^luSr8W}oT0145*Mja~kdnHh8
zSM=|?SkOp2S6>Si)~H_twiC2(;3&la?9q0x3QGX{7$b+8hVng~Ufcn$mVZf!sNNwu
zL@Vc%VOCyOC&A}ne=D9o!Ow-4+Z(%<qXyz_sclZq)&^!WY=s`XnVLN1l<E62>6VzB
z_h6<0;cH-&nJCi{!+V=2M(zbqf!j_PJ@z0&cmS^i<9rBNRM<{Sb3*uz!e(xIgF&`c
z9%4vPN&c<O>+_jZKuqfckjcQb;%$A-Wq=+*rd7h@C>H*9NLC1eYOV~;o_N)7vU<fQ
z)v-%fUiB%Et@Enru%f)G)J%X^4J*dPs~XY_Ap^*#{p=u1d;hCG4U1Ba+(NtFpP)Nb
z^H#867@wbDNfS>s+#w;o@l?ahfYx9i605@!S@3j11SUp<*08<}{V!b{G{ks|z*dn_
z_d_OwQRD4QMy;SXbaNPI9~qKnuNj&35v*qMNp-XKeg>VBo-g!{0@=xC&2<wTys@Vf
zZtJ9tR6<WqC%mwe3S2OSN`6rWC4<ofd`H;+OuoaA2EIy~Fuat%2xm{_FZvSn74a8#
zsdUQVy(zp9(aac!Q_{@u;ts19rwrbf$+ieG+>Du$AVc7k!Iitf^>c7b5kO)~(<9ZF
zcV?;|E%LlGMPHKEu_-;)dWJ=w2Q#&fwEr2*lu7%YFY-K*x`JIe?YK9$&5-14tjFS`
z2M$!SgD<B@N_K!s&147m;ZKV^0{LfJ<Pj4*)yIZK9u^iYi#+(8FY@#)fh)Enm|ac%
zBF`y^=v&qD)h+hE44fatKR1#5d9<OpwH}kSE|z@6=O5Yjag*%8%8&S{uX>GpZCncl
z`xKu*dA1{<UvwZAv}pT^&U%^Ge_*Dp=$P~zUD$~((P*T4^r3!`pPUWG&kmm_^_F4%
zW-DY$vwm}qUAUP>C*g@i@1=I(W}=sbD;ix+Pz_UA0Aiu_o07duZO$5S{!_Ysb0zDH
z;8=0Z96E1(yr0(BZ$?aFwFZi`NYJXm=MAHV!f&^%fty{Ci-8wWjKhX+FTD*4(m2L=
zrz5Dwz^Qd6!5ZTzng$JCi>-`%$7L```gHiU6dJM}=2lMiEmTzza6^Wo^{9ji1J3~$
z3Z3+qs*|R6U*_GJR7{xl!<cD6j2CdHCXz8QV@UfMl*|m_7c<qL$du1PCIgv*xAhoq
zaH~O*K|0{5xBX5?mfduTO8GXcSA0_4F=u56zX!5)Dh1t5lp&Ow3C!}tiZRXd4QXuO
zHVG$>ckFU#ulF8E&<`f1833AS${D~1S<;?tzFfI9XhHE^iB+Z1v>Y>K8cpZHhW|pn
zUYNw=IN@tSKvc5*{7v|*I+B*i%<_OhU&C570iRugBgMs6u{doj@NKWeDaXArlOAY(
zmxD~URY9$HQDr^u-3;^mGcvV~dU-o$%GAqCc+c{lW_@LFNH7$G=~O4YBy}})zvBHX
z42Sd-ZK(8Q5A$Nyb@qWl2C*|mQX1~4-Ao2y_ct`*7g1Q?4|^us)hY0m>TJV=pDEcg
z;m7BE!v8vG8K3a8tEr#xp8&pMqFyUHjfPmsOWf9ZjA^PLmD9x}f45kok4hb^7xt>N
z<+6SaAnA~|mC*u)-!wf^!|zV$I2}y{P2SE3yhG;oKQR*+0h5l{L`we*dWLS|8dhij
zuMOozW8lZO;Z#GX4VDH{ik=GHRh{%Hspt$8!hMh_4TbQiUAUP-AmND=!nf?g%@hI&
zR}@0$-vRiEy?kwM7KkoMbi$N;2jGXS!-4}ahGyUzig)yaI>2qBe`6A>HC&`cnn8_d
z@1v+W!#=Q{9%8s+na%rjycujtx@QU0)du`XkK%1$qbgO8d2a^&cE#8n8Xs$DKiKh5
zV~wjZ1p>j+92PH3<7b3TfTg?@%_Aj0vsF1>bzF6>JU;G}%7vy=namZ&@WjJPtx&>=
zL0P?-+eudCH(!w2yyWz4U`B^B=$PkGo2Pu^*Un7JrTN8$m}x*b7Z^{8oXpjMP-!^)
z9-eDf1z(V;JB3nitX><>!5Mz|N50tDGq{;PC{dEH-oo4ErE;TKfW0#%Zh?E@n!Z98
z+65L0%|soB?kdA8X3`DuJ$cAv;Ct}4j?fI#t03PKJQR?s8oa4$x-TR>6n?ZgfkT8C
zpcboXd{RA@W@Uh`0onTe44qh%0g}23FhF5dnHV5Lniu!pgp`8A<*5*0*+};C1O;m(
z1CFSabIJ=?(w<OA_kbwfDC2Dbt4f3aqnIhv;NQT%!;3*d#Sj>+auCZM9Vt?(KKWv%
z+S5G$^Gtj8hSEGA8`|SO$w2)4W2V+o-~0eGW$K%tM?p7Z@JvYj1Wr;_o$#NjtEsya
z?`FuBh4=}Sp6pou9mLyEo&*Z(y<etCN(O=2&14XEFG0kQ2=$qW9|7D{XB&tgreq88
zgU>nfGq_w3KkVw+C4Tn0lM|J~WY@$G$?1alDH!mxsGW3HSxF!Jk#9PjmkoeX2t&^F
zNDaI*q08cZx1I9YF7wVfoGf(|rhE>Fb5dU>6`O(L*#()>P&{LH;bw}5geOuwO}lV2
z#Y4h-LGj#VFJD8jfjBZP6wj+zhlMbNc_#_iP<$K^v<*@`mzczA4Hs#V;!z{myBIZR
zpm=(9(%aumP0viht9~Czr$E8&7<H(+%6mSD>p8b0{1@Mc^K~d9hT9PdZQKr}(YPI9
z3}7PLsNZ0Ap7_0rvo4YAFiwLl>5^#q)*pVMk$+PWKkoR#z}e=QNJ98th*DARyVM8)
zjzWV@8yynT%{=Z$bTy7*=(s0U$4%{ioL^>AE=@6hj+q98*MY#5$o)J!A3dDA!iI-*
z5*jUq$eL%MF$S^*Z|m5~FeU1OtXZ3>rbO1PhD^2@jUE-Vk~N2dY<*6JUMWh}NL>ZU
zny{)&WQ`$B{6`PNiIqdPFfD&z{b+X%G>Jp|O*x7CDNEWDrsdL1eNIE|V$76js2z&C
zaiY!{Kg27RCv8cT-z{dUFL5hZLMEGy;=rR`z^3)M7cy`wH)LuZ^~QCWDN}EB{_@Nl
zQ&&(Q_uepM%fPB=^-CW9w}b4Y&LumzB}G!Q15|1zJFvS0qEti#6{x|UiT2V6yrlZr
zK&dbdTPPKL&MB2I;T3y%hFwiPrE*H$8HaOo^VM3lP%JtV_)2lUUfbK@%QJD(x}aCe
zf?kP}-TArtNjq!S#uX{tVtfMS6#ogjREGt@cw?trejxMCj7{V5`Z^$qm)}bDW*}aE
z1DVngFMS8u`rS1XFC;vXcv)o^ZYEwxcrS>TW9;Q?Gps<UnHJ*ZNT_Qh2APQ$uAz9x
zFUS-mUjB{QL2xwd69$nMi5E4Fy<eft8Hksj?yb3G26fLxrtZ-Ui1aA<7o#dwk9pq#
z{dUE_$hV<lof&6gCZOIL3lkp-1Q#RUhKducF*3qRz;?ce29t8P&Doc-Xb$@zAcE)i
z!cj|3ZlVAO85GMCg=!NwJ(O})I7=VT#K+zC%^F)zg%wt|ofd+>g#0~`rNZE3YLnDB
znHll2X<T=*mrbDq_fX5Hd{@pbnN&;@ls90e0pXUwQ63=7%zHC6hM1XmK_&w;gST}E
z)>~%gQz7Z`AptF$n3<2Wn#L#9!)8`y=F=cspPHekiZU}&R{>@wtSS>TV@MOv%!Csw
zS8ZWt-kzWxjT1ooO*t2Q9ZT91X6Dx*O1G%^j>M|cQ2P~T$~4r%YNZWb;oHi~&Rv<M
zUNrNb1(_lMNsGXmwy_C4)^-L4CYPyor1b&Jlu7HsT`Splx15~1n))dBz5=?<z{3P<
znLOT4NYTq=5F;s)5*35m&14Yv@lRBY2$`9v7y*=2XB(&(req5hgU>k?<3h_g6~nHk
zo{AZ6!iLpmzSe41%1%9*fH~6iN>flq7qrWmpk0Cz2TNo2tt>;ht|yO5-yHdtVG`%E
zELfgkTEe%L%X=mCQ@ks-^DEcMy#75i;Vq`HZo;g}NVeW#${o}WJXwnQvE$9JF3l;8
ziT=P#)dz2uddxtiv>{U(BIW&d;btO*geMXy_t}M;i4+pv3nJxFd-+-v4#bLSAyU4;
zIxGZr%tQ*;P`s}f<OmWew=uDr6?T2>&d=;hHCOp3yc&t8*Z<Zo+-!~{JkcEc4z@Y7
zn8V3QxH3n1>VsjT1Asns?9N(ynVp&-D}~{i#)MNWkClt<{c!Ty<hJozsa0{>-j3OT
zcNW5pVx`b%wA}{~XD))9U=ypLP7z3I>$fbXmYfzjI~5zeTd~WhnzK7=YPw-c-iO;^
z>K@HdLY$pZm8uuKeW2g2IJ-4wutM*`jY4fTrY;O61V6XdEJS1FgdKo&Tti+U%|5B4
zb|J9K31EjuVpLn>PQ6?#RA{Rdy?F$KGhJd8dap`tHaNT(z#o{gU<VZMQhTSIO}inJ
zV#RVlW*QI<16-JiO&f_EWImX981%-{nBo05+_+H^FST*zHuUmZEM$9Irsfg9_9n<=
z;MefB4#5p!r;D9We-n}(0w9{(K?^5-?XOu)<CE%WDl5Ns56IT%+vs1S{F>BNfL{x%
z%EYf3(!?`9;l#?VTKKhgf_6}mTlrz-x3i>)_IWJL`r;4YhouHKeKDG8inA1d3Kh|f
zEWU5C_GGX>X0-<;&&dsH^A)_U%Stp@iKwFR>3>7A?DZn^{5`8zd{W&!y+<H%dSb|X
z29hV6r_@ZqJj04HnWrJmI&?(*$R>W$zUpihslxeES?WI}C@Ny9cByns_AM!-ioHfG
zsa-04BlQ}Vv?u)XS*wBu8gD76017^*W2U6w6FBtl5bU?Has}SNH@;aJ`&{+vWtnP9
z1mh);DFW|9j-2$5jY>%{rqzE2#(5%B>!=^bF;k{~2y(gE8Rr{QSF;Pp5_+36*~Pq)
zb)DUG$sn#zk(3MqwVTNx>|>W0X8|iSG0tKVpgP;YI5Y2UVVv<fXPiF;E#r(cyGqSC
z+Z)I?D!P+A-nsAN6WL&%K@NfD^O?A#Z)5RZKM!j42v+S4c=f2PB)hUz(mgM#%|Um}
zUkSwZFv3>&1kW(B0ggZ`?CA(S&C%0>y9r)y+<ZkFyq&wqUGFZT)(k;w76Kw&y!n;w
z>)@EB`EDPMo<VnoxWVOJQmHlZm=Tgk>u6Y!k<cUM*}e@e)j@*Qklp1lH~FT_;bO&B
zK*e4r>cK1K9)Y#o0FBuQ|7#x4UjW-N>Sd?V#@d(sgLzF)&1qF^`z!g~Vg07tx3k$U
zpkgi$RDm<G9af;>A1?GV$czHdWz<UD+=dU<Ddh<zhSnRDKBzMLg4!5#uM;=?W2ii~
zn-dHJRvEAWF(;>gHxp(3YMF2ApPsg{>Fk5_n^;9R?HJ0PhMyG6H_E&7jfp}LKH4gi
z<TmZt0g7iPvc@NSS6$w>I@slIB4M{Ilp|y$X8st9vAHn8j=l;ybdD^*fA4fHQBc>6
z09RM473t7NJlNA@0ens31G0mb=&8i=LGY&PfQ_=XriFw-_g?qDfOis_dVfGu-jOJV
zS45qnzkr${>LCAC#h;K+{3Gt8#^OH}Tm0iv4+G@W%!bV?rOuOEAybp(lhG=YcLAl4
z%@KdA=A3VBPR#jYXG5km%Q7#q3pexNBs_6g745>!!-|A!D$;dlnB&3hW`RhewAQkh
ztvl`hx-(X)jl-d~Z7*p_hWSe>O}MqTg&+49YXhgP5#>7(@)J*fHS4U9(=qepTsy(I
zuSXy;lyFJrbdy-E;UX>a<jO&5!%h|B{VxQ?wB)WBq26J*4AAGD4*z&3LS^`t%lF_F
z{&`c|J4-ym$agIuFfrz#O3zRnPD9SFI}2b)V_R;UScuqmWo^`Rip?u&#DR@a5{*Fk
z08~Q91_9&pSH=kQE{94Bhv0n-W$;5A`goCA0r!Rq2zK$HHwuzCXoD4$VFPYMBY7z#
z0(E>8WZ7n0ejhXAV%w{sRNbgQ3t9aI@VGfS;j~4-G?5W-epa=;-)n&ckM+|YykdQ~
z7p00OO5+`vIq?j1h#hVV+1M;ju6tj@u7ltMx$eSCws*H<95!5RHJY{Y@-<F=0zj-d
z??i-T`ZqW3G~HSWU>VyL5_&oklo3K{qLKovyB3soijW+XI5<|`J(Mf#gYUdHCoA|0
z5$rlHj5pZ!kDawD|4j0rtAg>epa2oX!nc)I{yC{q)G{<6Tw7><TIQX;l@Fn~6c{Sf
zT^z|MC~-)Py2)cH6fqYPa@DG!sP4f^Fg{m0p0kFVt69e}c;Wv*xi;@2Vg<&P-?OyZ
zQvaO7zHt5IEg)^-sjA(foz!j(Wa_wf%YxP%uBq|y8b5qnwP0%}Ef~q%0u_A2vrN$!
z7`N4+@P3EmgBh9kjldVq<<JepH=4@A*E!j9)xJyY?b856AjpJ}(<D@ZJ#QB3@ZqaA
z6=Q))EZ}GeiG>{*Xx4idrBk7J#l)x?rBv^SpstP(4G)J1YWy|AAB6lMy;}km_T~J<
z4|_$qVr>?ptyqhmh5r6Ac5>W%B;M4X8S&?-4Fh|PXw+*l(||Be7{$F>OI;6M4;E7^
z%@Me0)t!;^*gp`ghI8D720!v*@tAMT)G%6<`b)@USVhI#v6zyNx!@}5L6IhK54FZO
zJW-?cqoHzwkyM`&U}w;R)kj#J<CE$GI_rAs$3V8uCQsns5<Y6<SSl{CW);?(Y0WB}
zMvdmMi^SrHl)fXO&6t!{NpE9G6IV&s6!vk$E9`R`BWJ=-tkK1W!5=|Ux|ziH3D%EH
z?jKnFKr_L0P`s_nGPwDm$t^{bla&|d7P_lU?YANM_PUa({U@tyd{W)iyoVvNX*$B@
zD{LC6hZ67ikUW*CNreSWEvzq-sfE*|GPUm~v^l$}tqWq8++e9(Y{pt!7_-p4G<;k2
z>~V(#EhoOaG%MT$nGB8(Z)dW?dDs?VeEbhpvok`{>@_2s+s<khpR^mBI}2o|vN@@q
zfX#)qW3st$np8G-R6?60HfNVgOY1kMuw+`v!vLQ&r>3R#NtU!HOY5)9WFLe@uE$JC
zSR}Bt&ap9#qcBkZi%fN(aCB>m{vyp{bu($!-nHVb9OwjnoW>6qG#xr1MZiv_J;NF)
z^Wv5@Qhd&rA3p;v^Vk6??8>(M$k~^HF4w`1hjZd#VQ#e5EZ3^(D43%);#RDTjYPzB
z!NQy-aDPPTAfGdZd6@05xGtWGIVd7UxK_gx<!8TTwPE{vH(!@|{g2OpMJ-e3g*lmZ
zv6^Sv)Zen{qlqnZ4vLrw++O30Kb6LRF12P_9E+i6o`y_m36LMLv>H8gP!L3b8Bt?Y
zt-}x@5jo6VYxN@L#fxWH&AhhGPR!me>=dq)mJYJY_udU63gJo49dHw-$W+R`dMR_L
z&4``hQk8Rry`0a5%Yg;+*2F}u-pn_~;Yfz7TeT*v_U}hmd5>Ovyek&$4KiuGtCG_q
z)1yY4_d_(H9xy#Stc};z8$eD|&h%`9dZn;-!Son4qm=4B4(jTb=~)-+tm*ZHKZ81J
zWRJn=3chE3tSF805nT)&{}t@*ILasVA?0-wu(|+;wCceihxg=xAeIzrRP0V|7-;x>
z#bhSO0MK%YnmpxiBwU+Gw}f0LG1Gt;_%Jwn#iE_YqZr%pJ(L@VRjS-5oHj$BafNU3
z6vU2T*g7O$RDg{=v2#!n@F;?aKb390DO3B2`M3iz8RndLTgS4A%!g$M_(wvr?6{a_
zoF8KKichNh&8&pl-5^_^aiWJY5^7vIL5gS25GO$~;K8L*|0A6=lS)_&oVQr`Hc^?!
zrnesv^s{79jd(I;Bi=ZB7E~GjV|xw-3;G1)wuKkH)4YcuaRzGYJCHm>r$P4wXo9do
zn`nY?8Wrg*Ea+_sZPsXln_1FC7IccKss44rp&dWQu<GO{=0hffo50(d+=P{yIy@xJ
zUNdqO>sig>lXhcsIgp*o=A?Q8HW${8$>zdoQrX;`gf>TP&MuXxsn@5lWFk;7YNjMm
z_Hd(LWq7G?op#S(aH-R5)vNHLGvD(g|5nZ^pUFNbz`q<bB?b8O)YL?#IuJEAo}#}<
zvsm3snzeT=QBwkgiJc4fOhioyc&xN%pr)7?w@_2~oKsV8ftGP<id{`THT437=lLRh
zMss(Ky-b`RE!6Wx7iO1<+k{3;996u$F376OE`eIY-usbw>4VgU$rIr87~Y)8t(iEi
zL*s>u@n%b+hTuI`^S85Fcgwu~gEN8Evgs^LZ*3C&lF&s=+dA3RFEjFvP|Q*I$r@j~
zqk7~qsnrau*CUY02Gn#a<sp_<W4&ZGw#HVOo@iCxsv+fn>ZHm)=%&h3LDc=OlUDpE
zYeg!eZo#2JY!!q!R-%qdNk`PJwwKcZQOApqk1<i}N=}PJopK=F=TZ4RAnH!CHh%hu
zy5pf<DF&z@>WrFEO7%Vj>gtxLJ2E*?5o5OtDz7niw#Xu=yQ7kYYaE{FeXxlS(<n@{
zmwf;|I`S?G66639<QOE7JYGU7<$142Z95v5_gsj4p!PqZwof^!SI?wm!u&PNG$5P=
z45VI>dZ){1-8)`ShSL)S6w~e~Yr8p<B52yaA2J!H?RY!WwB5q)y(c6q7^ZX&ilcxg
z?eAjsichLf+Ox8IcY$nu(vIH9$nJ6Fq-6I#(@8U_gad}%`*J6ZcnmVxLXqBA-X|e(
z22$^<kUT?Qg-N}z9h(T2a2gdAEu`K}32oL0mRGZ+iKL$N99yTrbJ*ebGf+c)w8sxS
zY!-Qr|6$Dng$8#-;%!}4H|qkc)(2(T>qVa9AjmXT*0=^_r?N(_oRpqpsFP+=2?vbl
z*xpGawoPGQot~|)!k!~+$0pAaPLs-W{FaRyyD4u4-V-oXO3yLH%K;OadX~IHh4pO2
zJK*h1-od&YaAQcCU8&?BUd3t_pR}83^;(df%0Ec;1eOEB+A-N&I87>>D<`x$60Ph~
zX*uAA6qZb+HRA1*q;-WQ?a5BnM>E+6O%1+?nUbak>6ZhZ%2Wqh4)|7z{vyp{bu($!
z-nFzGAZBlwmIK60TWQa*9Ki6OWjO$!^W}h9hrt!wsmiXVemUTjD4$!~hxZZ}1BTKq
z25@OzECswMo&=$qicOSa8k%VlU~QZN#Jn>;ftrS{gKpDZe9+U{7XVhvywmr&KB?m5
zvsw%*GNOya^#8^b9mBM&Q~zQIPu6{|$4fP4VEl(5lMOfPoa`V=t1<oyg}sFd|ImXq
zzPh1I=7LV@drmj?oeH}D%1&DGa@LAebbr+<-%9sWDe36`YwhK9K=<?F;{#9Bw35>z
z-LKq*w+SoV1G@ih*2e2(RRAYW`M%sYLA_FpPC@q@HKUa3tpIV|()~H<DI=@s<OTV=
z*q?#2G_pTFh6t+PvW`GeZZkW_4iBvn{SMZ!lDaMp(Z3!eU6|<S!X?dbO{1LG!&Iz*
zO2K%iTMVLX+ORuq-{q5i)@^hHg+HVeKDBSZe>ang3CBN)nWTZh;OP~`|LpJE{Y|F!
z(+vFIAd`XF$J;tQ>xQ4}9|+2_n?B9I`yi9elj(jnE3>~CWb5;9bUj99pDQONKX+s&
z&7=|z7=G@=P8xB1hQ9I+hr}6}{gWYihQ12(b74C+aV6n2DgauT{eNZS#%{{Q&;5)g
zO=R|W2yomxVqc+X+6<{~sK_*ysmsZ2jIu6|5O;XHS8n4KAz5}^liS$G>J^_<cN<wv
z@j8&5$`rYBQo4;hI%y`AaKN~YyE<vaom1FX@6Xm(VYd;sW0Ttmr%B~D@(FF$DAts2
zV~T10r!w^{d50%hD<j?kZ)frjR$BiTA!+f09+gV|;a^zI;*)mcAASk4Q~3v}o&c>M
z){e>M!f8_3+}9J@9I-jORHF5tP7wf!d`66&l6-!G$I4#p@*h4tXl?PGjtZdZz_FMq
zX*!Ue*58q-4n*sp3Yl!s7pqH}#p-6#ti5ZA))zB2F;}%`qFw%CUahoep!FH}v(WnZ
zoYVTdp=F%bXIE2C>pvgo`hi{kE}Te#Hxqe%{hWAt5JjxGE{Ofh<-9z$t|<uQq1<S>
z+Sq>L@$qL>uy>G+$`BmCC53{PH(1TzPV!$X^ZK8ik-Pkb`LsFV=&Ex?hq821&*=U)
zNrh&h`|p5EHeaN3vbVCdJ)`?S+DUys+)aI_g6{v@PFnFr){0bg|F^C3t#m(?l8)~G
zk-eM_=zd;&d~C6r)&g>2G&<DVF7xn#a8mpa<&XYgZA8q;F27CR8H<jvK@MwYP$|LA
zIPrMVk~wgx+OgJNP6wUAi_g*-$!T%zMR{@W7F2!@)?QArHeP4a17Lp2*IrJ9dZloc
zV(rDK8KqQjFQ}{AwU-Tvc!A!uxE$)PExuTSyI6hMm?&C%&q8!P7{nwE!A_T7AgUs=
zvM#^KG-||Lnc8R&UDNW*a{zaM#;>5JgT|+J{iT&j$28%pW2OP&9AE&=-1V2+GPR$m
z5+5=d)?e^;CaT2pX2ttLvg{LKB1+!F>J^_<_pMpiUp@e`b)p2lk8%BlD<>t9`d}x`
zq!JDoBK2#XG~&yU$rgF^zVbc|i8HLfd;^ka=&LZ18n$B-sTEG6f}mynWq(4OHB##)
zmh^yKf0>gD4)ypkhixLa@qesM5r!3S_sVS?lBr(gHdaBVsWQcNAUl;Qa^<9S8(TVQ
zCY5l&xQ#P9X~gy^?5ne~^;OtygzebmHo|FAxsCtnx!aiH^_NDbo+a;4V?7)34tP70
zcd)L%ye=fo?zhN4+{kJcpR}7$^?Hz<%0Ec;1lC`|+A-N&I87>>t0c5J5~}P{Y5nEZ
zDJ+>*2@qqaTqUTnq&<19;;~HjLDPXpF;miXApQEw_cGOi)?c1V(O;xltZpXF+Pjw4
zU&M?p)B1~;SS#%r)?XO-v#h`1bH4sEcLQ9p*DBc6)UUs6!D)TI0h?gp5F@-!Ty{As
z_H_zPN*Ajw=LRSaO(vcG4M+5FB0t+1N-M$*6&zpmf#NR?gYM8>chG~{S5nr>y#9SN
zW+g>acXR=TUX!qP05QYrBW(+KXVK{hiZKq}htE)obV~atN)2XMI@to5Y*1L|w~u3K
zwWSlPMC4?o;C)$H{Zyn2JE`pX-Bfle)=i3?v?9-1k!s!KYO8!JRZpb^srtC%%m3V7
zP6t#yFFrnyMC~d$EmHN$O?by*rF%ftzth_I>7(l33iV1cGzC>})QnQ9cQA<Sma1PH
z7i@^3e-O&h82V_e5XAhUae_2HUi2^Y`fBQ;G<^KQ7`fne2+cQ39^Uv&dC<S5Vg#fK
z#xLCxH2!_&Mk`S4!%DGJOS^wRlWGZPe-|?ih=C4+p;xr~c8Z?8+r%v6u{h8*8lV3=
zlL}~({2!3Xz`Wya9cgv*=EIUBgR<;aPgCT6$YgU)`V=`U^S%sZ>r-U(Dn{m=D<>s|
zc62Arq!JDo3hjBFG~&bzedTR{#2J|P=R@)geHEtA!gg$;Gs0<9OtUcW|Hj6R-ITY^
z1;bzO{VPkF$h?!!=;4V*DPVFrQ-71sa9Dpwh&8<3E1z+FNS0mE<TGBu>J^_<_ZeC3
z@CJ~b$_}}5Qu>U)?4+4g!U5wmKF~=c?wZ2B`cSsM3j2((9h-bcI87>_F`Ce3jRH;S
zGp3k!|6Zn^CGYSgYh}bc;O$J_!AiUTDkLp_(4$hxKm3B#EIw&B{^8$2b}IiM)f1rI
z!`d;~TsTcCn|mUm%@LckOC{R<XDOl|k;90wQ<B3^@<7>(*B*}F7__$dPDcgMbYK`W
zB~1s?)9z<xssqvPJ0Oz{_hNNPvsm3snzeT=(e7f#Cg!O2O!V4=m_IA+8EAKg{4BIP
zKIgQ%2QA~YJG)9vyQiw_GpmGYct_$_>KVfm%sI$s6!VLfLZi`k^ohCm`gu^dy;#9F
z;MG1^Rd!{q>Nl}u`b4NIaM1e|-1k=kk3Wpm0ucYh<F!(&;y}q8uV`cG>?u1z2cG8W
zX~EqDPdBq~2Dyve_3jexU)>>S(+Zf>Ee?JJY0zCEZuo0))c`&T*nD}uRA?69OIboH
z%`atwS>XhV&Uh`fU3cl$LFO(8DEu0kgH>`ZRPtq_PW($v?h)6u2i*<OFlxGJq`$za
z!lzN;D~4A<f|9?MYvI(KXo;w2+dqUqVlSj%8|4$XZ)dYzfFa~w9;l4}zUf*K(5p8x
zVK`?(PXJ2*JAtDJc%YMa!9LF%rpk?#D-OGYzg;JH4)rTD;v9Syjc!0OlCSD8w=#jd
zWQQ8p1i*Af|DogJJ4(IxVkQ`NS|4<52o3)frlQeWt&*?R^VM3_$xjsOh4BV1ok6p?
zF+|K{bKBn>HXSx1@&-|%^)qG0)A#KS-7pd@$I>t~DR*CR5DvQ6i5vb|vFZgQ6C-O|
z?t0XvurT^}D91WtGc7`WK*~HQqIj|TXLzEF?Mqf;8+7k=?+f^9u?FydFtmqd-seD<
zT?o<Dy<e(xZCn=#t;Q!%%6&>I$TX7eYpY7R-jg)8p@QmFufepY5?QWX705|;MXA){
z<zg+BXmjA6YUaOMn;G-+%fCP-XwXlk#%FI6#lV#k{y%o%zX^W|*nJu-lZ4-_gv(DN
z&ep$(*ngBY+P)<s+*iVtsut)vG_blb@sLSW!`9o&*4%tx4i$Ra<gnR*bNcJf80W6r
z@R8!E(`Ykturc8j%VXtYd%xcgVUZAzzas27+Wta#%yHUI3^9wK3~2WuP~ixSHh=Az
z>tErqFz^sw1V4oQ&)g8ya{7Gc;kYp<CF^(B`1F_3<{5TvnyY!5sYRONqt#4q5-xZe
z$F9oiJqS%sv8)&E84tVL?ek8Df4uL46n?_lmCz3M=S^+zEHsEi<Gh!)R42R&)b}A8
zW5%VrAT~OG7r-I}Lj?dwt!lAZu2t#JX5lI)hk-s<tLJtCW`NJf*6U8OS(#k4w^qL@
z2cMKJSDQ|?<dh^@>X|%c3S)Lt(E3-yPoGB>aQsxH{1ICZ<)nF<P#(<Fgi6CRNSgaB
z6bds<f3CwmWYeGP@rrGbVprDb4?|6GSTL(SqK?j>f5ShOSq$uvD!Tb%tx_$FJAnI|
z`EoU18cRfdk!b-3M=|2!k>3|)#GE0aaY^X!bgQbhuxmzuJ%fI4wvH1!^lQt!{&S<x
zLh$b}TOSFWVo#(T(g&onvco{7Xz%?fhA}G|4BU`tFTA!Yy!IUaeb(B%82EQTWJ&}7
z9=8iO!#@(92>-ro7jA}sBwQgAiS3Z)Ne%ygZZBJlHB$=zyb-8J4B&ej9z}wn8A)-a
zD2QVNd>=Q7)!Hji7a}R6`Kw~QTR>L#Na{l%g(Im$j)p7zQy{6sZH_=gQ(|yJoo|Qi
zNa3YGQy1^DqbZ8S8jxZk75-)sx{-qrjWkq=^HLI3^<1uUW&@z1)C8qqr*1=)aCCJj
z<&PMaW&w!H2we$f0=g0^?gU+(g#F6U)ya6p&=tE%gRXe(yFpi{#aK}T*w^arM0mx%
z^~*$vj<(8+$5&sR(fEpMi!-)1dhHCWc9Myco*}G@tz*TGur8E&{pU!pg&@{|wU-3O
zN=T*r(w|9vWd~VG*WMK<<^Tj)O>6UFK-L6gN&~W9WfyJ+StL9WWZh;LZU$K-yjzg<
z9(&nZ$eA{f^-k7Dp=CZZ$l^*-=*I@KDkia7dv%ayG=Ei$cP_~49%Nk!QaH%^Dqi8A
z0%RRwbp;yA5~CAP)&-FNxr?&CMXeJ{+adeVI#T1X&c{p~Wqm_x$DWf=mQW_3ETQ5~
zP}a|(RF1NKfmaM=v8yyFi`Tvzl(kheBUrO!i;judioNT{G8(XzkP?rm?w@gpO0_A8
zsM>DQXCmLw>lMnrWB5Qf4+T4jnj`c2GrFTf(CJ`9#|Xe=e5PR1YN?UzFiC0CTZLl6
zFew>XlWnlN>K~fwIVW|TwV5$+X%l2h1D9T47jA}2Bs>u=oo^RzhD#*8Te$Sc_Oi98
zGi`9`C9ID^LCp-8xKb33vB9N{Osw{rtiIf+)T-Y#EJ9vq*PpqXlcpAFsuoBM*GhRc
zlbeLpnQ^qLtll3WM0bzs4uRTpRQC?N!aoJ7TW#=C8kQ3-1giRsL@VAouzV?2?fLGt
z;QHg`yX=fv%=#mz&B|3;kp#|cqSa)yS*|%b;WQ+3Hf8da3w|%?C^Lihf2bmk?cPoK
zQ!;2mxq$72$~(b!pT_QG4BBV#ieWo;l?L1K+INHP_>MHbpoj<t!P*$?NOKYaUd)a(
zgQ$3v_uz~~c~VEolo{WVX3$CMnBFte?AzAiVaI#lka=g+jx>Yb#nBYu9cjj-u<itV
zjQEZ;Qv&6Cek>J~9sVihdOt!j2Qd8my|tM!@bAAMQyTcUaFf-4o8cb`PlSJK?843P
zkAy3n(%F*apuKDjlS~`@I|`~8iF;;T#g(D}j}89)ns>cgB-eqSQmcN~0RJws>(5-x
z3rsE2RIS55Ud`ktA^bCrR+ZIz9Gcuc{QC(=;qb2l?eOqV0sr_OG=n?RFre@wP~WdY
z)|7l+5=NUSv0c;WAv}mIo%R3&b}V1{;kw;awEoxly|18(I0mdy{>WGe<s^PjC>JoG
zP<ba9a6k4j!+@{HD~18tRT>P)Yu^n9+{PyqwQ)F!-znt_)qQ2BISD6w)#}MGkbNSZ
z2?+9hMrrX#@S&N61Y_Ek#QW{A={b@A>lqNd%Q{BvK=9o%um7Cru@C{c-qJ&Y2(+eA
zp6FhwsqBbQY1z96#e@;z0kApkF>CW;kl-VbDGd^Q$}ZfD1W9-z68vYoa5EAl;R>>J
zh6MlHUbYrwrVR=H2kWC$L?Bm+!ag=6_>f7g)?NX}5Mmk4UlrrM6=Zb}u|5t`IK<jG
z2v_*0fLOFS!szBTlqJR{RQVl{J0;3GZWm+P&Y`VkyB+w3SxiZiJ<F6w`Jm0vu*{6u
z+p#Ge4IM-IQ=%cE1VBSVHJzZLGq5`t8aflN7#d<%Y0wa_eK%<61Qr9ZTO`ku$c1eT
zzw5)dvIm63W1mmWAnX%rQWE4j*`Um459$1=)&A{B=W?0XpUM3b0yrz9{ULCT>5+0J
zo>WJ6IHOeQl~K$A2xo4vHZKOwTnm}fz?oa@!p(4ogeSt8x7&rA;S34y7S7ylFIx-m
z(*|e$iuF+{IK!2qaE1-e>@$hg+N;AEqxq|1ycdJ4?%_-Yq;NR%J-os{1)NzG9rPNC
z5knGC%r3~362%<8D}rLQa4CUHQZnUW{*lTyZ%5IOHPM)x%P<qiDnF2Q4|TTIE86~d
z(Nw@HLIIs%mH&oPIac{CUNNk~uF_x?Ui)sa$_r%AmK*tMp<XOE8t@HVeA6%yvm6(X
zSt7#XvCHRY7<Mr<EeXT$?OF(YBAJs{@p{JEtlZ4Urg?nWvCJ}=*MBbbR|wN^LfqIt
z0^8V<C>OLrswq3hQ7ZOwDCPjfIHy>f7lUz5giL8L&bfBsW{g9^6EV(ZcHw4>L&Ceo
zIF7w+ExJq_#woBq3WYuMsu)*_0v|Svv&AG<Yp;%RjOMS3@fL!t?lI0rkis#}?RbTM
z3XH?w88$ir4eN-Z30P+_WKM~7j)`KOXe8JyF;Cj$%JIC3>SFfoG1zAjX5!eVE!z?@
z0<E_+>?4{E*heU&6YO(0l*+NsNAZebA9j@n`|#R#gMFSSu}`B`Z^F72fS%TPHTfv5
z!Fb>kloXG8rtLektj%JfE$Iw4MM8z!l>~YCiXe`rV9sX|?>t5}Z5|VLyz_|6>(BU}
z3W1$NVys>uo!IBf+k8iACp*khn)RMSF$W;b`K7gaF)-(6kSPt!`GZ}!8Rn4iM3}Sa
zSRRthChwYI4hioT<{V}(TMH!926NUz6(cJVW|+g3qVR_e=KO?peSF~5VUE%KRWaV@
zKvwrK=X)T9!<-AC$sYbGV9vUj;jdvFF)jh)d;xN%#5hOpitsrB*FUK6O`4?2+w4qj
zSQ@YM5LTRHn+qv_q~|r0)Ub_cGGH5_h)%GLgNkQsP-A$-unoIPgKc>2yTLa6Tmy{1
zt!nw|mP6Pkzo$@XImrko=3Ij~dGR=BCcPma-?}8U!_PH{%l|B5o*S%V#g2Kdm3e2>
zxdw4skM7gvi}La5`DX2eRLU>iD)p5e1u0#7x1g8<5Cy%@+PoMPbSGp=gM#k03pb-6
z5}t^H9<mEJqaYIAEed+VUbYr;rVRysjrCCou9#5}SBiosHWc&@lUS|2ItntHzbeMt
z1G2hDLAQexj)I=SEBsTSAbzevoGZ|<kQkkSg(e|?N-UIVw+)>^pDB;>Li3N~wTglK
zS_f$8XdgC(qoX;LKP5U6N&s{uRMQDMIt)tX=x6}17&>BCY0wd`eK+Wczf>hRoL46E
zm0F>cryW&!cEWDr^4Cdb7RW9&7Af%<VmmzPXolSF;=yv!oCe*lj~{=Y)voMFVyn#S
zKQ@C__w1^T;)#tZIz+H4snV)ZeXi7Cc5I=v@128U!q{RC8A<HNCv;D36sCFVVJM+{
zPklZ};hwsPSNNy!)G4hVoSS<sI3>|y@Yh>FO02(*ZM-%U6aqA{o%p&sHi^vy8+gTh
z9lJ{5>&Po~dUh~pxI6G|F${N9Qmj9lQM{?CT}g93PNYP0_Ra<0Oa^QY?RFQuU*?_p
z9bqJ}qly=<mJ`^9=gPglU1}%0dsUkC-iBhja<4{VntOdUl+e9<eJ4oa?)B4ng?|e7
zYO!MBQbjAlrQQTNV_j<SIEW!m2bRa!=Xq$sDF<KgX|#$(r_mT|RVtG?>?Q5Y`D~d~
ze}10oWgaOp%bz!5CJur>E87*C7KPw5y|gFP0D(a$r<1_&6qL#X!*}qC1qODNA~1No
z_T7MBzC<@scP8pJ>=9T1)i&TId`&3kr9HE>_#iQpUIB}1TT-ClFYTFgKa14hugS*E
zW5ga!ekt?LsF(K4I*$T*{z6_{YEBDU(<o0gdx(3;I4wWoK5G1G)2G0@DlL1nP)s<o
z8~`uv9b#=>3@LapWJ*H{9&HzHCIv}&A}M&HUAUPPB;nnXg6G=H)`HBmk%DKkJ_<!Y
zGbzZGqCkp`6kKi+tF>33Y8uU7732LBoKW{zXfD)<W1*|@3jY*Xh%^6YH=t31Vr;^Q
z{W<x?6bH(m$ng;SJP*9T#7?+k$0Q*p(#urmBFOz<9pzO%X)m-9QJdK(#h{~~VbeG|
zYEu4`6roTGpd+EGPSDXU*gb68d@Eitbi}UGpd()UZqU)O+Dm4MRN!GzDo}kcFc$r!
zq5PB>sKoFN<Ch0}MfrWuYA1GtaF@*Me{6<OeoD1bL=gC%9uf3`dunujQnoz%TvBPx
z`vi&!NBm4wol%(gjXCPrK7W<z!<Ec@Qhy!g32Sq8XEJTE>}ya(o3Emv<9!`e15Vti
zH!beG3&eFFckTx%JnsAlUg4i2?ko+snzopC3yXj%-U+E==iP(BiTCp^b(*a@`}CUw
zrzw`3<wB(llRNQ6T)5Y07OF)Dzxq~y@96G><c^Fron}`9;&)WpEa7IRIt}QX|5AOk
ze6AX6{D{m!uNU8UUpCCUKb=PD`|gV|(}3_RFd)3mk?I94XD#9qgT+YOh)<w;|A<U=
zrSHHW2AOOl7D;*f4m>t13@3E2gGmpDhC<IQWJ!~IU@;#t?7UGyA_nfM)}5BAb<`6t
zz)YEXqO-F>UYxpex@+cNe_sqADs}cvRLaG26Fx(_0KZ!b$FH{8cP&|R@flNDH*Xx&
z{5r3NU%X^KZ4X@OpCx?}(|>4Ap@DzwDl&jSN|BTd0JWLP0F)~a&s4Ai%ebwGQ7nd-
zJrnVO!Y!-Lg-;a+a}IiWsIPDRz$B*NNcTp(Vn~-=r9iqIbEq;0y*oETd4~WX9meI!
zVPal~$7`il#ewfz(wF90628A*kh7Gepnb&LUF5EJm+;Ah{D}SH;4#31?h0|kUn_v{
z%kvYJTC?fY>5JrIT*(Bp!U@zMYl9Y2&sW^#Fw$?AIanogz&3QYWLEOmaxI*yKA}zx
zY5RxpN9vQB;)&b0v)L|yHMy4uDnkIjv#NCV<xi>-eD6I{P2So3*gyJAnfj1uXp*87
zI?Z2^r1r#r^IarhYw@v-OX6rxw`FG}EtNxG{=9@6_Xz!K+jSu-C`N$#=(~KPO#e}7
z$mYp}?W6Bska?dYeHL2xvwzf+CTaFWO3~kz$}%h3#?vZAd*4Da;aMBwX{mF~_QGvJ
z9cs$HvLJI@!i|e18gv!;$R?naN?23io@(CDt<8(!X`hBnX?WV-*@c^VS`wbf(=HgX
zI)5`yOTv|^7U(*RncIpaN^9%vWoyty2T)$B55H4s!egZT@Vn^knD2nDh6+b;vzfK!
zDpEi}-~bWq1rv)OGx!lRgm~a4(&ABT#=)S9@g4wKnP$(T$$>AbKLt|w?D;%svWI_)
z*>l?OfQq3Cb^aV=kDX2j=R_B4w5|9^xc*gj3Z#m(UBqJ0bbbf)qSRI_0r-ITAgYAZ
zy)UHv5yR5#A9E527Rm$=EL0o;!F-Nk1;It^S4Q`i@QQ(8c4Y;@45x_NcSHB;$Lx~@
z!WY)dO@@%p;V13I(7==&AeY(^O80cg6(=<wc}?%$NzsJZcZ5X(4LZfQF$sY2ZGIfT
z#YwU5tP-^mfzb-HuD1>mJJWrQ%sb7STSbd|)IlM%#W$?lJ4EO@RazBhZ<ZR&j=hxj
zJs-t{u~#O>+$c<oT}>#V``C3WNa3;T!+3>%irAIX>Tza?n_ESTA%yJ(DJetP*;)ug
zhVK#%FE=$9*Ox04o2>%w#cCF=a*z?mDLi>R`LF2dbIr1Tc*9#VNmI7)F=~h4UE)E9
z7OeJQCLXNrmU^(~q+lh~rYW<NVD%*^l?SWG@QMX1c9kYr@!EG2tj^S2ZlgI_fiG3(
zCkk+=J{;jygHuP##b#oxI#Dn+f``##RgBR1Q1zv0UGwY26UH_%DN<dOLixC$LzOa5
z08@O5Q8Y>nJ!?Sw5e)<LFtP`<e~@|o=TbL@;@OeO-6k}hCaLmZzn1FD9?g{My?;kB
z;b@l3JXycnC{6H^?iq!JTX?`RTUZREFb^`NVHDQbg_{`#5}wE?9Ay`7W)w(xw~WH`
z>}6{+swrg@ydkiz7!F}8>!VQgG;;`CDGDIjID}bDto^%<Z+zEFX0iX=`F_F|eE!6)
zNOOH(YHFIMbHQUE=fUfn+&1JqjKfxC^}Y+*?jAS(2BdJ@cn!3}!#@RXJSy3lX&csr
zYk``7AB3cYjY-T$Fn~q~5cm{e4uMFy2B(UaweL9gT&{A(H`t9t>v;`K{ynOMgURbC
ze@f;<C=<Y>P;n<<@=e&gjQMyoUNJDquF`->Ui)sq<f)o1@ikrsA{)&*z{*4zX<cQC
zh>Hi1Uzl+K($Kgh=%}wUMY1Qy`kt*a-D4dmcC>i6%sT^DnIcM$?)=jikPONB%K-L7
z${{@@m6aVEDn)yrM=@b+cmS+2J!NfP3?_U6GNr+U|7;g-#)Kq15flE0UAP$&lJIUZ
z;r!#RNLq_h(}oFWLlq-I(2TLTQWW^HVZyJmt`9*?t-S(|A;vPAzbeN2Ajs+-V|@{%
zaEx^VG}*&H1;*0Xl_HKnLsw#OLY+Sh*;Ascvv#r5(%9<&rgbG=q7hZ`$gDn$-3w95
zWu21RIyDUSSJ-flp-!Uw5%bad8FLaLCsYO)N+_}u47C$`k71~b@rq$6c9jN0@!EHT
zp|)}i)oL_r<K=5O_mc>nj*4O60#afT6Avi1^FsK`|HXi~XAxw$RztFbjFQaj-#?Rp
zVL;bWY;mx`Oa$p<e5QuwUa67nNJ44T+k;{bKqPUqwRtf}Vn1X`gCyQ&7j8xpBs>vG
ze8?``j3h{Sw@BhM_OdmPJ8ekfldO+IA>WK7xKdPzw;_oeO=7k7>PW(9{;C)+53;&P
z5|bc>BZ;T+3jY*HVzpt|YXCxwNdOQ9$Q279(i~YM1VA_yVmk?^|AkFp;q<@piiJ~l
zl_H!{VCr<!EC1eG3BEy7FORm6K4L2=iP3bEIhsZUbrDecw{jv9pT(HE;skCVW)j{W
zQ<uoR{sS{8rbg5q4XbO|_%bBqll8dAD!3jYRg*oqDz$otqnHCQxSninUQBR30Wzft
zu4mhYn}aI}PYkXvwhK20R}$WBa4p)))`HEn1=l?5qg26_D@8>;TW}pViPhSx2Unx{
zt75zbAglY}x&fr{;Cd@w;h!S7t~C#SExw9j3GuZbGIkYTg#d`JLTo4T^_|!X7GK|m
zS1i7=tErE#$1{Dg)3IoII5D&yX%4NrjM%8^e{u%JnqZ5P*nB=?)ANAQ#h<>JX+OvP
zWT>44`j5-JGg<ke?HdP0%vMaC4Np{L|B}>2_Q<aE=>08<2}kx!TMdoEG(Y)KD4}~l
z`F9|N`^lf+75*vwq|sV|h+`WIMf<=--UE4JU1V@?Je^o9k2IlOCOLL|Zmw9U=0=_H
z32&M5sDAtf)yg~`!tejGmr4h`k6|XxO8$#%RVZ3&VNGKtg%ZHc3)OVu=I3q|ZhjtK
zF*nbyQn-1leK)Km9XtkmfAX-8*V$dGmy3l;ezZ`}7u`ZVd5_@nX2*}7%q%fB4A7)-
zpLkJ}-i~*#6E}Rm0Y6^!vpCBdfX>1pU^X`UENh+2>pwDsB451Tqth*ZcDgMGpLZpu
zQ^R{mYAw5)RvPz?Los1DeE_VJo@H%b%mi!)WJ)suyTmTsJOLx&i4(9tvkNy*z({zv
z6R-(;*_!8`wh35;^-(CKnAuIP6czDp6R>S2v08ie37FCRRWaTwkkvh~7y&69SiBvt
z@J|6OHZWus?+&z?m>8b`GuD8FSeTK9=@bGWL<_N<gy;`rbJ$GmBY4F^G`mU>qA93#
z%5<I<qqrIz!%<5P&gv6Qm>f=8;2Zd(9l_;w5t{kejp779i-GwOGMY{T^FuQ4G=JSl
z^j5mpw&JuN4a;<TVFa6r?&m={A(aZr-;(;u9+H)=y(du20T_~hW^G<fNd5_AN)wWQ
zYZq<~$s{~6B=?<YL#Hv{cqHN7hUB&Ovb7L3Z6SFTR57ym#2k{jQdF$8h2$Tyt`9|e
zt-X3kHk!XG#(Mx{bsv(S1Svcup94+y@J|tv<B+$AEb@psF*+e2KM47|3dlkL1Y{w$
zlYo2~HiiY{U3kR;GP|1kfV|xtkX=}dL^qtslWs{lT^0hn2+8~nz({ZqlApzxJPy6o
z>14Sq^ZF0Z<jJy7do(EXO@y)iBsk2ZWGXCQD^->~EGu<;uRt*eU|9YOYx82l@-2`l
zO;~=nUAQ?clkmi_e79Y=d8SOlyA8{qx0kJjsc8$#53oK8#ZPls=1NiV(iWCqZxXAu
zR}afZ^H;@qC6Lv9SiT;l@UZ*~yuv?4Sk5KI7a5nu@PxQL1_HW@%R&IeWg)hcxcooZ
z8WxxTfLAOov#Y6(%O@$lHGs&5scx!pe2gU=YjV1X!p}EXEb;B{o-GruKB@EIdyvfQ
ze`cly-$3{AFm}ION#NV<Sj-Ki;}hVRrz*l8CH0a$!YZA58&S*w7-6?rn->#dp9h)J
zMA!@L!p#wugeOMWm)eD!BP<E;Hp060vbBgaZ4tJ_`Y2U|<w{YZ&lX{~n#5}D)g!FY
z{8cgD5|Gt>ggpkN@Ce(+EBsSLSpMm^@X*&7XfY}wur7mqT?JMl00OHJ+eu)3FE)Y&
z*1PbE1y*)7^?{Xr;{vq>AvJM!tG;nTIYzWN*F_LLS`!16$o`EBQ5`XvvL2N3S?cvp
zDCGNP-f2FrUbHxwLRRO{MCYb~qeJy?T#)#-iiuyAEzcekmDaq+QA{`{X4*z$6xQ=^
zT>RA9Tz$7mc5fd#S<7|~sO{8_A43%*G-uQ;i*H;Q^`?2|`#@axp82aFg?r|OC&Lx~
zDLga##swLc=8uI%fIt2Or0&We3jyGdh1gE~@gZ1s=8xCn74ygJDz!gWdL8uchI2Kw
z)7VJ^w$s=ti8wdidK!BUK$+z<_T?{PhrYvGq}8TVZ8n65jNDfveG{}fp3c)vANP*o
z+3QEi9PI4%L8ww^E21TT@i?n5JA1wDFXDgU2@|34qKf41NLTooP#u3cWt9zA$KKN;
zr4y@yp*2dlzZj}AJW(iKRoLyc*>FLHu-iFxd(#zdck>l&E{~_@&*kc5%9&#uvVLEq
z)~XkswmXEno$W6xw(520w>;h7=`Rs?;K(<pz0+UVaGFgxrlZmJ4=UA)@VZQ;F)~(X
z-Cb(?eJ?FkT27;VN1IQM{JvVNInipice=}W`u)3|s#7mCYju#+4<7-5H<AnE6Y$4k
zUSJ+dxeESVM1QvG75HmuvsQ#XWW}rSDHJ>(YFM9a`zyz4wI&=t=V%Wvob4}dIK^hQ
zHJ;x$R;!P<;m$IAwPzw<tc{N|qulAQ=Xacn!|vqwmYZ&#?IMKALy453Qh<+?;*BNn
z&C*)EnXfo|oJ#w`IsPKIP?3Mm_YZRR!O5-Anr5pZ62S>WC1<p?8?rCkTc}s@%si0m
z6vp9Bf3sdFI@qZ8>-=TqD(EQhRExC|q-y*9t>)P9^M@N{xIQfSFz?jswR+wyR7(}7
z4jRX*7MpE<IoGr%Wj>SA_6I^wLL$7qXu!+3TvZ2=`>^1HP-cGxwxI!vazRBEXj9u?
zS}9a_x4>dS<0bfej#F*>2iKiqtqvc2btar@35tOedO#0-Fkr@@nV^w!DGy(zgRcX@
z*z=baTFqKs-SX#@!Mv81TH_OWX@a0wcB2f=rd};nP~dWQ2eeylVE3zA6Ah<Ts^#~M
zqe-oRFOSq34jj0vaxyC^HuHPRjWRdU<#4cJqcB>*hEOdRh@s&Q`AeWN4Hygsd}j=V
zE~RAov2q0(2jg@NUO^!Zr_SChbE+t<1YN$kUf2s=#s35oJqX7aSWa~}7-FS74&Ow1
z(TYv}vI%D*j~_~bQ3+qng+i9#ozVi+9S4WM)@?Q?8r!yPf!huEW<k@fRYz*|-CNrJ
zYD~#004eiLXB@hx3Ei;}?hhY*{7InCW%aRQNIc$A;*SyHVXzj^WUqo<A7!UG#>xN(
zu*GeTSD>)|W?>XYQK{*+FI?ykfK86)<?xgZ$Tz@gIq<cY6^+Siv#>AkmUp`q_#f<d
zUZsYnzoan^8%6V1w_sd1Kv4&?zxki}N)5J?a@7vthEh05)T#6F23lq+gxpuPCZLFA
zP`hTi3Hs-LU_V$-tyr#(fei@9uo7KGqcs{zR~|>>#eMc{G|ppQ32bJ36uwxDr%*W!
z*KzQxHLHt|>Z-gmUMN@cg;J@GUp2;RAB2+eRl<f-8RKqkzdzTh?rFpRT7MyTCoq1&
z6wB3883so)&re`rhI0^93QViXUq>uCV~zH8;P3)>tA%kW3T}h6G5JRy4xtjezW{IY
z>p|}l806lIFmj&lp5c9M75w#O{COpOyv4g7e{KQb;JpEVHelMr@#g~kITwCfem_dX
zFZ7^nE^ohk_I@U6KNGW`iP+Dw?`K)}x7-bwn3cQ4J;NPlg}UdtV{X6S#~Unzg*%^b
z(p8(W#$?D7hsOK!%MA#%?bqSn>CZyN+yVb>(?uo<WNn%i(K9v)f|z_B2bylnz25Wj
z`$f0o&)et0&z<;lS|9wJi9eebz|Ro=Jd8h&;ZLa_e#-c>W(oYP$DcPZg`aoe&-0hV
z&vyLz&I<VX0sib;2|w5259`}+VpsnPe;x##3F0!OZkFJ{*7zl~@yw)gdPW-eu*rn(
z{}&rRXEpr%5PzP=pT`e@pReQ3ht|Q*-T1TOF!))GKYI^{pKI~w;0^Gz7Jt~#cnyve
z{NRyQk(eNrBHuS%rpwk5(5XW(jsMgQB@imb#*<1PL=`-YKerqOKW+Ru_h|UJ5P$xF
zKXZ<OpU3g%8~F3qP4M$>{CV*p{9KMd3pc~hGW_`*{yc&|dya*lYw>3oJ_ze=#h+K>
z&wl*DPx7+QR(tr7MD`^`?y2xxem3{9b_`CAW<bZ#j4ZxmD1qo0@$n@1<Q{(gf_);x
z!?VOaJaC+y4#|#?WM>$$gO1o41Rfq#z+Ra2@U2P@UkUQ?y&<-T*TapzZ0nGR`-|9W
zrH4zJj8*lJdi8J?@8MLR1qn7Y^Kd?7?F3AasuSANH9GSAOAL8a2MC>uDPe20<uBEt
z4vW1@;j4BG7b3jkcM#EvbUeuGcX&F$i~x<sM{5;{o><aVp_?*we?VftD3xVe8ITW?
zlX??pL#xBG=*cX95#a4&t%aBv=9uuIkqQSfFy~ruHr>AiqW_KUO94B=`QLy-0fRIE
nE%5>+><-*sEN?Twv$$L>R$3(lSi2D<FDl{8fIu{NFC+gS%<blt

literal 0
HcmV?d00001

diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo
new file mode 100644
index 0000000..d033249
--- /dev/null
+++ b/docs/_build/html/.buildinfo
@@ -0,0 +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: 3bd87c5970a2b25d4590719e2d2fd180
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt
new file mode 100644
index 0000000..5200b2a
--- /dev/null
+++ b/docs/_build/html/_sources/index.rst.txt
@@ -0,0 +1,20 @@
+.. asdsd documentation master file, created by
+   sphinx-quickstart on Fri Jul 14 02:13:49 2023.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to asdsd's documentation!
+=================================
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/_build/html/_sources/source/modules.rst.txt b/docs/_build/html/_sources/source/modules.rst.txt
new file mode 100644
index 0000000..e9ff8ac
--- /dev/null
+++ b/docs/_build/html/_sources/source/modules.rst.txt
@@ -0,0 +1,7 @@
+src
+===
+
+.. toctree::
+   :maxdepth: 4
+
+   src
diff --git a/docs/_build/html/_sources/source/src.rst.txt b/docs/_build/html/_sources/source/src.rst.txt
new file mode 100644
index 0000000..ba434d4
--- /dev/null
+++ b/docs/_build/html/_sources/source/src.rst.txt
@@ -0,0 +1,45 @@
+src package
+===========
+
+Submodules
+----------
+
+src.Dataset module
+------------------
+
+.. automodule:: src.Dataset
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.Plotter module
+------------------
+
+.. automodule:: src.Plotter
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.test\_dataset module
+------------------------
+
+.. automodule:: src.test_dataset
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.test\_plotter module
+------------------------
+
+.. automodule:: src.test_plotter
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: src
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css
new file mode 100644
index 0000000..517d0b2
--- /dev/null
+++ b/docs/_build/html/_static/alabaster.css
@@ -0,0 +1,703 @@
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: Georgia, serif;
+    font-size: 17px;
+    background-color: #fff;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+
+div.document {
+    width: 940px;
+    margin: 30px auto 0 auto;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 220px;
+}
+
+div.sphinxsidebar {
+    width: 220px;
+    font-size: 14px;
+    line-height: 1.5;
+}
+
+hr {
+    border: 1px solid #B1B4B6;
+}
+
+div.body {
+    background-color: #fff;
+    color: #3E4349;
+    padding: 0 30px 0 30px;
+}
+
+div.body > .section {
+    text-align: left;
+}
+
+div.footer {
+    width: 940px;
+    margin: 20px auto 30px auto;
+    font-size: 14px;
+    color: #888;
+    text-align: right;
+}
+
+div.footer a {
+    color: #888;
+}
+
+p.caption {
+    font-family: inherit;
+    font-size: inherit;
+}
+
+
+div.relations {
+    display: none;
+}
+
+
+div.sphinxsidebar a {
+    color: #444;
+    text-decoration: none;
+    border-bottom: 1px dotted #999;
+}
+
+div.sphinxsidebar a:hover {
+    border-bottom: 1px solid #999;
+}
+
+div.sphinxsidebarwrapper {
+    padding: 18px 10px;
+}
+
+div.sphinxsidebarwrapper p.logo {
+    padding: 0;
+    margin: -10px 0 0 0px;
+    text-align: center;
+}
+
+div.sphinxsidebarwrapper h1.logo {
+    margin-top: -10px;
+    text-align: center;
+    margin-bottom: 5px;
+    text-align: left;
+}
+
+div.sphinxsidebarwrapper h1.logo-name {
+    margin-top: 0px;
+}
+
+div.sphinxsidebarwrapper p.blurb {
+    margin-top: 0;
+    font-style: normal;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+    font-family: Georgia, serif;
+    color: #444;
+    font-size: 24px;
+    font-weight: normal;
+    margin: 0 0 5px 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h4 {
+    font-size: 20px;
+}
+
+div.sphinxsidebar h3 a {
+    color: #444;
+}
+
+div.sphinxsidebar p.logo a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar p.logo a:hover,
+div.sphinxsidebar h3 a:hover {
+    border: none;
+}
+
+div.sphinxsidebar p {
+    color: #555;
+    margin: 10px 0;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px 0;
+    padding: 0;
+    color: #000;
+}
+
+div.sphinxsidebar ul li.toctree-l1 > a {
+    font-size: 120%;
+}
+
+div.sphinxsidebar ul li.toctree-l2 > a {
+    font-size: 110%;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #CCC;
+    font-family: Georgia, serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar hr {
+    border: none;
+    height: 1px;
+    color: #AAA;
+    background: #AAA;
+
+    text-align: left;
+    margin-left: 0;
+    width: 50%;
+}
+
+div.sphinxsidebar .badge {
+    border-bottom: none;
+}
+
+div.sphinxsidebar .badge:hover {
+    border-bottom: none;
+}
+
+/* To address an issue with donation coming after search */
+div.sphinxsidebar h3.donation {
+    margin-top: 10px;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+    color: #004B6B;
+    text-decoration: underline;
+}
+
+a:hover {
+    color: #6D4100;
+    text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: Georgia, serif;
+    font-weight: normal;
+    margin: 30px 0px 10px 0px;
+    padding: 0;
+}
+
+div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
+div.body h2 { font-size: 180%; }
+div.body h3 { font-size: 150%; }
+div.body h4 { font-size: 130%; }
+div.body h5 { font-size: 100%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #DDD;
+    padding: 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    color: #444;
+    background: #EAEAEA;
+}
+
+div.body p, div.body dd, div.body li {
+    line-height: 1.4em;
+}
+
+div.admonition {
+    margin: 20px 0px;
+    padding: 10px 30px;
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
+    background-color: #FBFBFB;
+    border-bottom: 1px solid #fafafa;
+}
+
+div.admonition p.admonition-title {
+    font-family: Georgia, serif;
+    font-weight: normal;
+    font-size: 24px;
+    margin: 0 0 10px 0;
+    padding: 0;
+    line-height: 1;
+}
+
+div.admonition p.last {
+    margin-bottom: 0;
+}
+
+div.highlight {
+    background-color: #fff;
+}
+
+dt:target, .highlight {
+    background: #FAF3E8;
+}
+
+div.warning {
+    background-color: #FCC;
+    border: 1px solid #FAA;
+}
+
+div.danger {
+    background-color: #FCC;
+    border: 1px solid #FAA;
+    -moz-box-shadow: 2px 2px 4px #D52C2C;
+    -webkit-box-shadow: 2px 2px 4px #D52C2C;
+    box-shadow: 2px 2px 4px #D52C2C;
+}
+
+div.error {
+    background-color: #FCC;
+    border: 1px solid #FAA;
+    -moz-box-shadow: 2px 2px 4px #D52C2C;
+    -webkit-box-shadow: 2px 2px 4px #D52C2C;
+    box-shadow: 2px 2px 4px #D52C2C;
+}
+
+div.caution {
+    background-color: #FCC;
+    border: 1px solid #FAA;
+}
+
+div.attention {
+    background-color: #FCC;
+    border: 1px solid #FAA;
+}
+
+div.important {
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.note {
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.tip {
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.hint {
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.seealso {
+    background-color: #EEE;
+    border: 1px solid #CCC;
+}
+
+div.topic {
+    background-color: #EEE;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre, tt, code {
+    font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+    font-size: 0.9em;
+}
+
+.hll {
+    background-color: #FFC;
+    margin: 0 -12px;
+    padding: 0 12px;
+    display: block;
+}
+
+img.screenshot {
+}
+
+tt.descname, tt.descclassname, code.descname, code.descclassname {
+    font-size: 0.95em;
+}
+
+tt.descname, code.descname {
+    padding-right: 0.08em;
+}
+
+img.screenshot {
+    -moz-box-shadow: 2px 2px 4px #EEE;
+    -webkit-box-shadow: 2px 2px 4px #EEE;
+    box-shadow: 2px 2px 4px #EEE;
+}
+
+table.docutils {
+    border: 1px solid #888;
+    -moz-box-shadow: 2px 2px 4px #EEE;
+    -webkit-box-shadow: 2px 2px 4px #EEE;
+    box-shadow: 2px 2px 4px #EEE;
+}
+
+table.docutils td, table.docutils th {
+    border: 1px solid #888;
+    padding: 0.25em 0.7em;
+}
+
+table.field-list, table.footnote {
+    border: none;
+    -moz-box-shadow: none;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+}
+
+table.footnote {
+    margin: 15px 0;
+    width: 100%;
+    border: 1px solid #EEE;
+    background: #FDFDFD;
+    font-size: 0.9em;
+}
+
+table.footnote + table.footnote {
+    margin-top: -15px;
+    border-top: none;
+}
+
+table.field-list th {
+    padding: 0 0.8em 0 0;
+}
+
+table.field-list td {
+    padding: 0;
+}
+
+table.field-list p {
+    margin-bottom: 0.8em;
+}
+
+/* Cloned from
+ * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
+ */
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+table.footnote td.label {
+    width: .1px;
+    padding: 0.3em 0 0.3em 0.5em;
+}
+
+table.footnote td {
+    padding: 0.3em 0.5em;
+}
+
+dl {
+    margin-left: 0;
+    margin-right: 0;
+    margin-top: 0;
+    padding: 0;
+}
+
+dl dd {
+    margin-left: 30px;
+}
+
+blockquote {
+    margin: 0 0 0 30px;
+    padding: 0;
+}
+
+ul, ol {
+    /* Matches the 30px from the narrow-screen "li > ul" selector below */
+    margin: 10px 0 10px 30px;
+    padding: 0;
+}
+
+pre {
+    background: #EEE;
+    padding: 7px 30px;
+    margin: 15px 0px;
+    line-height: 1.3em;
+}
+
+div.viewcode-block:target {
+    background: #ffd;
+}
+
+dl pre, blockquote pre, li pre {
+    margin-left: 0;
+    padding-left: 30px;
+}
+
+tt, code {
+    background-color: #ecf0f3;
+    color: #222;
+    /* padding: 1px 2px; */
+}
+
+tt.xref, code.xref, a tt {
+    background-color: #FBFBFB;
+    border-bottom: 1px solid #fff;
+}
+
+a.reference {
+    text-decoration: none;
+    border-bottom: 1px dotted #004B6B;
+}
+
+/* Don't put an underline on images */
+a.image-reference, a.image-reference:hover {
+    border-bottom: none;
+}
+
+a.reference:hover {
+    border-bottom: 1px solid #6D4100;
+}
+
+a.footnote-reference {
+    text-decoration: none;
+    font-size: 0.7em;
+    vertical-align: top;
+    border-bottom: 1px dotted #004B6B;
+}
+
+a.footnote-reference:hover {
+    border-bottom: 1px solid #6D4100;
+}
+
+a:hover tt, a:hover code {
+    background: #EEE;
+}
+
+
+@media screen and (max-width: 870px) {
+
+    div.sphinxsidebar {
+    	display: none;
+    }
+
+    div.document {
+       width: 100%;
+
+    }
+
+    div.documentwrapper {
+    	margin-left: 0;
+    	margin-top: 0;
+    	margin-right: 0;
+    	margin-bottom: 0;
+    }
+
+    div.bodywrapper {
+    	margin-top: 0;
+    	margin-right: 0;
+    	margin-bottom: 0;
+    	margin-left: 0;
+    }
+
+    ul {
+    	margin-left: 0;
+    }
+
+	li > ul {
+        /* Matches the 30px from the "ul, ol" selector above */
+		margin-left: 30px;
+	}
+
+    .document {
+    	width: auto;
+    }
+
+    .footer {
+    	width: auto;
+    }
+
+    .bodywrapper {
+    	margin: 0;
+    }
+
+    .footer {
+    	width: auto;
+    }
+
+    .github {
+        display: none;
+    }
+
+
+
+}
+
+
+
+@media screen and (max-width: 875px) {
+
+    body {
+        margin: 0;
+        padding: 20px 30px;
+    }
+
+    div.documentwrapper {
+        float: none;
+        background: #fff;
+    }
+
+    div.sphinxsidebar {
+        display: block;
+        float: none;
+        width: 102.5%;
+        margin: 50px -30px -20px -30px;
+        padding: 10px 20px;
+        background: #333;
+        color: #FFF;
+    }
+
+    div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
+    div.sphinxsidebar h3 a {
+        color: #fff;
+    }
+
+    div.sphinxsidebar a {
+        color: #AAA;
+    }
+
+    div.sphinxsidebar p.logo {
+        display: none;
+    }
+
+    div.document {
+        width: 100%;
+        margin: 0;
+    }
+
+    div.footer {
+        display: none;
+    }
+
+    div.bodywrapper {
+        margin: 0;
+    }
+
+    div.body {
+        min-height: 0;
+        padding: 0;
+    }
+
+    .rtd_doc_footer {
+        display: none;
+    }
+
+    .document {
+        width: auto;
+    }
+
+    .footer {
+        width: auto;
+    }
+
+    .footer {
+        width: auto;
+    }
+
+    .github {
+        display: none;
+    }
+}
+
+
+/* misc. */
+
+.revsys-inline {
+    display: none!important;
+}
+
+/* Make nested-list/multi-paragraph items look better in Releases changelog
+ * pages. Without this, docutils' magical list fuckery causes inconsistent
+ * formatting between different release sub-lists.
+ */
+div#changelog > div.section > ul > li > p:only-child {
+    margin-bottom: 0;
+}
+
+/* Hide fugly table cell borders in ..bibliography:: directive output */
+table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
+  border: none;
+  /* Below needed in some edge cases; if not applied, bottom shadows appear */
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+
+
+/* relbar */
+
+.related {
+    line-height: 30px;
+    width: 100%;
+    font-size: 0.9rem;
+}
+
+.related.top {
+    border-bottom: 1px solid #EEE;
+    margin-bottom: 20px;
+}
+
+.related.bottom {
+    border-top: 1px solid #EEE;
+}
+
+.related ul {
+    padding: 0;
+    margin: 0;
+    list-style: none;
+}
+
+.related li {
+    display: inline;
+}
+
+nav#rellinks {
+    float: right;
+}
+
+nav#rellinks li+li:before {
+    content: "|";
+}
+
+nav#breadcrumbs li+li:before {
+    content: "\00BB";
+}
+
+/* Hide certain items when printing */
+@media print {
+    div.related {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css
new file mode 100644
index 0000000..7577acb
--- /dev/null
+++ b/docs/_build/html/_static/basic.css
@@ -0,0 +1,903 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+div.section::after {
+    display: block;
+    content: '';
+    clear: left;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li p.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+    min-width: 360px;
+    max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+img.align-default, figure.align-default, .figure.align-default {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-default {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar,
+aside.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+    clear: right;
+    overflow-x: auto;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+nav.contents,
+aside.topic,
+div.admonition, div.topic, blockquote {
+    clear: left;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+nav.contents,
+aside.topic,
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+aside.sidebar > :last-child,
+nav.contents > :last-child,
+aside.topic > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+    margin-bottom: 0;
+}
+
+div.sidebar::after,
+aside.sidebar::after,
+nav.contents::after,
+aside.topic::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+    display: block;
+    content: '';
+    clear: both;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.align-default {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+th > :first-child,
+td > :first-child {
+    margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+    margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure, figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption, figcaption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+    margin: 1em 0;
+}
+
+table.hlist td {
+    vertical-align: top;
+}
+
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+	font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+.sig-name {
+	font-size: 1.1em;
+}
+
+code.descname {
+    font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+    background-color: transparent;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.sig-param.n {
+	font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+	font-family: unset;
+}
+
+.sig.c   .k, .sig.c   .kt,
+.sig.cpp .k, .sig.cpp .kt {
+	color: #0033B3;
+}
+
+.sig.c   .m,
+.sig.cpp .m {
+	color: #1750EB;
+}
+
+.sig.c   .s, .sig.c   .sc,
+.sig.cpp .s, .sig.cpp .sc {
+	color: #067D17;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+    margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+    margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+    margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+    margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+    margin-bottom: 0;
+}
+
+aside.footnote > span,
+div.citation > span {
+    float: left;
+}
+aside.footnote > span:last-of-type,
+div.citation > span:last-of-type {
+  padding-right: 0.5em;
+}
+aside.footnote > p {
+  margin-left: 2em;
+}
+div.citation > p {
+  margin-left: 4em;
+}
+aside.footnote > p:last-of-type,
+div.citation > p:last-of-type {
+    margin-bottom: 0em;
+}
+aside.footnote > p:last-of-type:after,
+div.citation > p:last-of-type:after {
+    content: "";
+    clear: both;
+}
+
+dl.field-list {
+    display: grid;
+    grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+    font-weight: bold;
+    word-break: break-word;
+    padding-left: 0.5em;
+    padding-right: 5px;
+}
+
+dl.field-list > dd {
+    padding-left: 0.5em;
+    margin-top: 0em;
+    margin-left: 0em;
+    margin-bottom: 0em;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd > :first-child {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+    margin-bottom: 0;
+}
+
+dt:target, span.highlighted {
+    background-color: #fbe54e;
+}
+
+rect.highlighted {
+    fill: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+.classifier:before {
+    font-style: normal;
+    margin: 0 0.5em;
+    content: ":";
+    display: inline-block;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+pre, div[class*="highlight-"] {
+    clear: both;
+}
+
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+    white-space: nowrap;
+}
+
+div[class*="highlight-"] {
+    margin: 1em 0;
+}
+
+td.linenos pre {
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    display: block;
+}
+
+table.highlighttable tbody {
+    display: block;
+}
+
+table.highlighttable tr {
+    display: flex;
+}
+
+table.highlighttable td {
+    margin: 0;
+    padding: 0;
+}
+
+table.highlighttable td.linenos {
+    padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+    flex: 1;
+    overflow: hidden;
+}
+
+.highlight .hll {
+    display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+    margin: 0;
+}
+
+div.code-block-caption + div {
+    margin-top: 0;
+}
+
+div.code-block-caption {
+    margin-top: 1em;
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+table.highlighttable td.linenos,
+span.linenos,
+div.highlight span.gp {  /* gp: Generic.Prompt */
+  user-select: none;
+  -webkit-user-select: text; /* Safari fallback only */
+  -webkit-user-select: none; /* Chrome/Safari */
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    margin: 1em 0;
+}
+
+code.xref, a code {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+span.eqno a.headerlink {
+    position: absolute;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/docs/_build/html/_static/custom.css b/docs/_build/html/_static/custom.css
new file mode 100644
index 0000000..2a924f1
--- /dev/null
+++ b/docs/_build/html/_static/custom.css
@@ -0,0 +1 @@
+/* This file intentionally left blank. */
diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js
new file mode 100644
index 0000000..d06a71d
--- /dev/null
+++ b/docs/_build/html/_static/doctools.js
@@ -0,0 +1,156 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Base JavaScript utilities for all Sphinx HTML documentation.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
+  "TEXTAREA",
+  "INPUT",
+  "SELECT",
+  "BUTTON",
+]);
+
+const _ready = (callback) => {
+  if (document.readyState !== "loading") {
+    callback();
+  } else {
+    document.addEventListener("DOMContentLoaded", callback);
+  }
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const Documentation = {
+  init: () => {
+    Documentation.initDomainIndexTable();
+    Documentation.initOnKeyListeners();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS: {},
+  PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
+  LOCALE: "unknown",
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext: (string) => {
+    const translated = Documentation.TRANSLATIONS[string];
+    switch (typeof translated) {
+      case "undefined":
+        return string; // no translation
+      case "string":
+        return translated; // translation exists
+      default:
+        return translated[0]; // (singular, plural) translation tuple exists
+    }
+  },
+
+  ngettext: (singular, plural, n) => {
+    const translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated !== "undefined")
+      return translated[Documentation.PLURAL_EXPR(n)];
+    return n === 1 ? singular : plural;
+  },
+
+  addTranslations: (catalog) => {
+    Object.assign(Documentation.TRANSLATIONS, catalog.messages);
+    Documentation.PLURAL_EXPR = new Function(
+      "n",
+      `return (${catalog.plural_expr})`
+    );
+    Documentation.LOCALE = catalog.locale;
+  },
+
+  /**
+   * helper function to focus on search bar
+   */
+  focusSearchBar: () => {
+    document.querySelectorAll("input[name=q]")[0]?.focus();
+  },
+
+  /**
+   * Initialise the domain index toggle buttons
+   */
+  initDomainIndexTable: () => {
+    const toggler = (el) => {
+      const idNumber = el.id.substr(7);
+      const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
+      if (el.src.substr(-9) === "minus.png") {
+        el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
+        toggledRows.forEach((el) => (el.style.display = "none"));
+      } else {
+        el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
+        toggledRows.forEach((el) => (el.style.display = ""));
+      }
+    };
+
+    const togglerElements = document.querySelectorAll("img.toggler");
+    togglerElements.forEach((el) =>
+      el.addEventListener("click", (event) => toggler(event.currentTarget))
+    );
+    togglerElements.forEach((el) => (el.style.display = ""));
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
+  },
+
+  initOnKeyListeners: () => {
+    // only install a listener if it is really needed
+    if (
+      !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
+      !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+    )
+      return;
+
+    document.addEventListener("keydown", (event) => {
+      // bail for input elements
+      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+      // bail with special keys
+      if (event.altKey || event.ctrlKey || event.metaKey) return;
+
+      if (!event.shiftKey) {
+        switch (event.key) {
+          case "ArrowLeft":
+            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+            const prevLink = document.querySelector('link[rel="prev"]');
+            if (prevLink && prevLink.href) {
+              window.location.href = prevLink.href;
+              event.preventDefault();
+            }
+            break;
+          case "ArrowRight":
+            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+            const nextLink = document.querySelector('link[rel="next"]');
+            if (nextLink && nextLink.href) {
+              window.location.href = nextLink.href;
+              event.preventDefault();
+            }
+            break;
+        }
+      }
+
+      // some keyboard layouts may need Shift to get /
+      switch (event.key) {
+        case "/":
+          if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
+          Documentation.focusSearchBar();
+          event.preventDefault();
+      }
+    });
+  },
+};
+
+// quick alias for translations
+const _ = Documentation.gettext;
+
+_ready(Documentation.init);
diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js
new file mode 100644
index 0000000..cf359c0
--- /dev/null
+++ b/docs/_build/html/_static/documentation_options.js
@@ -0,0 +1,14 @@
+var DOCUMENTATION_OPTIONS = {
+    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
+    VERSION: '0.1',
+    LANGUAGE: 'en',
+    COLLAPSE_INDEX: false,
+    BUILDER: 'html',
+    FILE_SUFFIX: '.html',
+    LINK_SUFFIX: '.html',
+    HAS_SOURCE: true,
+    SOURCELINK_SUFFIX: '.txt',
+    NAVIGATION_WITH_KEYS: false,
+    SHOW_SEARCH_SUMMARY: true,
+    ENABLE_SEARCH_SHORTCUTS: true,
+};
\ No newline at end of file
diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png
new file mode 100644
index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3
GIT binary patch
literal 286
zcmV+(0pb3MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002xNkl<Zcmb`G
zgHi?o6ovOGdxdP*AltSE*&JruJwUGI3!FN?xxO>s`hMrGg#P~ix$^RISR_I47Y|r1
z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHD<M{a4P!N^sPbQKi=?mBx
zoos%BSoiGXjr-;%$QixXMOVNSUNp6L0a1Oz&cgu)wqE?07u5I7qrQIu4Fij)Y3c&0
z@0u_#NH6I?Mk(n;dT}d~^J<WkTLqp|RW-hV56tKpXqu)k@V{?amI+5DOlEU@funz+
kySsbM>fiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8(

literal 0
HcmV?d00001

diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js
new file mode 100644
index 0000000..250f566
--- /dev/null
+++ b/docs/_build/html/_static/language_data.js
@@ -0,0 +1,199 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
+
+
+/* Non-minified version is copied as a separate JS file, is available */
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d
GIT binary patch
literal 90
zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj
kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK

literal 0
HcmV?d00001

diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d
GIT binary patch
literal 90
zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2
m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz

literal 0
HcmV?d00001

diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css
new file mode 100644
index 0000000..9abe04b
--- /dev/null
+++ b/docs/_build/html/_static/pygments.css
@@ -0,0 +1,83 @@
+pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #8f5902; font-style: italic } /* Comment */
+.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
+.highlight .g { color: #000000 } /* Generic */
+.highlight .k { color: #004461; font-weight: bold } /* Keyword */
+.highlight .l { color: #000000 } /* Literal */
+.highlight .n { color: #000000 } /* Name */
+.highlight .o { color: #582800 } /* Operator */
+.highlight .x { color: #000000 } /* Other */
+.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
+.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #8f5902 } /* Comment.Preproc */
+.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #a40000 } /* Generic.Deleted */
+.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #ef2929 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #745334 } /* Generic.Prompt */
+.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
+.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #000000 } /* Literal.Date */
+.highlight .m { color: #990000 } /* Literal.Number */
+.highlight .s { color: #4e9a06 } /* Literal.String */
+.highlight .na { color: #c4a000 } /* Name.Attribute */
+.highlight .nb { color: #004461 } /* Name.Builtin */
+.highlight .nc { color: #000000 } /* Name.Class */
+.highlight .no { color: #000000 } /* Name.Constant */
+.highlight .nd { color: #888888 } /* Name.Decorator */
+.highlight .ni { color: #ce5c00 } /* Name.Entity */
+.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #000000 } /* Name.Function */
+.highlight .nl { color: #f57900 } /* Name.Label */
+.highlight .nn { color: #000000 } /* Name.Namespace */
+.highlight .nx { color: #000000 } /* Name.Other */
+.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
+.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */
+.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
+.highlight .mb { color: #990000 } /* Literal.Number.Bin */
+.highlight .mf { color: #990000 } /* Literal.Number.Float */
+.highlight .mh { color: #990000 } /* Literal.Number.Hex */
+.highlight .mi { color: #990000 } /* Literal.Number.Integer */
+.highlight .mo { color: #990000 } /* Literal.Number.Oct */
+.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
+.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
+.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
+.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
+.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
+.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
+.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
+.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
+.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
+.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
+.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
+.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
+.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000000 } /* Name.Function.Magic */
+.highlight .vc { color: #000000 } /* Name.Variable.Class */
+.highlight .vg { color: #000000 } /* Name.Variable.Global */
+.highlight .vi { color: #000000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000000 } /* Name.Variable.Magic */
+.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js
new file mode 100644
index 0000000..97d56a7
--- /dev/null
+++ b/docs/_build/html/_static/searchtools.js
@@ -0,0 +1,566 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+/**
+ * Simple result scoring code.
+ */
+if (typeof Scorer === "undefined") {
+  var Scorer = {
+    // Implement the following function to further tweak the score for each result
+    // The function takes a result array [docname, title, anchor, descr, score, filename]
+    // and returns the new score.
+    /*
+    score: result => {
+      const [docname, title, anchor, descr, score, filename] = result
+      return score
+    },
+    */
+
+    // query matches the full name of an object
+    objNameMatch: 11,
+    // or matches in the last dotted part of the object name
+    objPartialMatch: 6,
+    // Additive scores depending on the priority of the object
+    objPrio: {
+      0: 15, // used to be importantResults
+      1: 5, // used to be objectResults
+      2: -5, // used to be unimportantResults
+    },
+    //  Used when the priority is not in the mapping.
+    objPrioDefault: 0,
+
+    // query found in title
+    title: 15,
+    partialTitle: 7,
+    // query found in terms
+    term: 5,
+    partialTerm: 2,
+  };
+}
+
+const _removeChildren = (element) => {
+  while (element && element.lastChild) element.removeChild(element.lastChild);
+};
+
+/**
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
+ */
+const _escapeRegExp = (string) =>
+  string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+
+const _displayItem = (item, searchTerms) => {
+  const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
+  const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;
+  const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+  const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
+  const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
+
+  const [docName, title, anchor, descr, score, _filename] = item;
+
+  let listItem = document.createElement("li");
+  let requestUrl;
+  let linkUrl;
+  if (docBuilder === "dirhtml") {
+    // dirhtml builder
+    let dirname = docName + "/";
+    if (dirname.match(/\/index\/$/))
+      dirname = dirname.substring(0, dirname.length - 6);
+    else if (dirname === "index/") dirname = "";
+    requestUrl = docUrlRoot + dirname;
+    linkUrl = requestUrl;
+  } else {
+    // normal html builders
+    requestUrl = docUrlRoot + docName + docFileSuffix;
+    linkUrl = docName + docLinkSuffix;
+  }
+  let linkEl = listItem.appendChild(document.createElement("a"));
+  linkEl.href = linkUrl + anchor;
+  linkEl.dataset.score = score;
+  linkEl.innerHTML = title;
+  if (descr)
+    listItem.appendChild(document.createElement("span")).innerHTML =
+      " (" + descr + ")";
+  else if (showSearchSummary)
+    fetch(requestUrl)
+      .then((responseData) => responseData.text())
+      .then((data) => {
+        if (data)
+          listItem.appendChild(
+            Search.makeSearchSummary(data, searchTerms)
+          );
+      });
+  Search.output.appendChild(listItem);
+};
+const _finishSearch = (resultCount) => {
+  Search.stopPulse();
+  Search.title.innerText = _("Search Results");
+  if (!resultCount)
+    Search.status.innerText = Documentation.gettext(
+      "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
+    );
+  else
+    Search.status.innerText = _(
+      `Search finished, found ${resultCount} page(s) matching the search query.`
+    );
+};
+const _displayNextItem = (
+  results,
+  resultCount,
+  searchTerms
+) => {
+  // results left, load the summary and display it
+  // this is intended to be dynamic (don't sub resultsCount)
+  if (results.length) {
+    _displayItem(results.pop(), searchTerms);
+    setTimeout(
+      () => _displayNextItem(results, resultCount, searchTerms),
+      5
+    );
+  }
+  // search finished, update title and status message
+  else _finishSearch(resultCount);
+};
+
+/**
+ * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
+ * custom function per language.
+ *
+ * The regular expression works by splitting the string on consecutive characters
+ * that are not Unicode letters, numbers, underscores, or emoji characters.
+ * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
+ */
+if (typeof splitQuery === "undefined") {
+  var splitQuery = (query) => query
+      .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
+      .filter(term => term)  // remove remaining empty strings
+}
+
+/**
+ * Search Module
+ */
+const Search = {
+  _index: null,
+  _queued_query: null,
+  _pulse_status: -1,
+
+  htmlToText: (htmlString) => {
+    const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
+    htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
+    const docContent = htmlElement.querySelector('[role="main"]');
+    if (docContent !== undefined) return docContent.textContent;
+    console.warn(
+      "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
+    );
+    return "";
+  },
+
+  init: () => {
+    const query = new URLSearchParams(window.location.search).get("q");
+    document
+      .querySelectorAll('input[name="q"]')
+      .forEach((el) => (el.value = query));
+    if (query) Search.performSearch(query);
+  },
+
+  loadIndex: (url) =>
+    (document.body.appendChild(document.createElement("script")).src = url),
+
+  setIndex: (index) => {
+    Search._index = index;
+    if (Search._queued_query !== null) {
+      const query = Search._queued_query;
+      Search._queued_query = null;
+      Search.query(query);
+    }
+  },
+
+  hasIndex: () => Search._index !== null,
+
+  deferQuery: (query) => (Search._queued_query = query),
+
+  stopPulse: () => (Search._pulse_status = -1),
+
+  startPulse: () => {
+    if (Search._pulse_status >= 0) return;
+
+    const pulse = () => {
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      Search.dots.innerText = ".".repeat(Search._pulse_status);
+      if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
+    };
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch: (query) => {
+    // create the required interface elements
+    const searchText = document.createElement("h2");
+    searchText.textContent = _("Searching");
+    const searchSummary = document.createElement("p");
+    searchSummary.classList.add("search-summary");
+    searchSummary.innerText = "";
+    const searchList = document.createElement("ul");
+    searchList.classList.add("search");
+
+    const out = document.getElementById("search-results");
+    Search.title = out.appendChild(searchText);
+    Search.dots = Search.title.appendChild(document.createElement("span"));
+    Search.status = out.appendChild(searchSummary);
+    Search.output = out.appendChild(searchList);
+
+    const searchProgress = document.getElementById("search-progress");
+    // Some themes don't use the search progress node
+    if (searchProgress) {
+      searchProgress.innerText = _("Preparing search...");
+    }
+    Search.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (Search.hasIndex()) Search.query(query);
+    else Search.deferQuery(query);
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  query: (query) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+    const allTitles = Search._index.alltitles;
+    const indexEntries = Search._index.indexentries;
+
+    // stem the search terms and add them to the correct list
+    const stemmer = new Stemmer();
+    const searchTerms = new Set();
+    const excludedTerms = new Set();
+    const highlightTerms = new Set();
+    const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
+    splitQuery(query.trim()).forEach((queryTerm) => {
+      const queryTermLower = queryTerm.toLowerCase();
+
+      // maybe skip this "word"
+      // stopwords array is from language_data.js
+      if (
+        stopwords.indexOf(queryTermLower) !== -1 ||
+        queryTerm.match(/^\d+$/)
+      )
+        return;
+
+      // stem the word
+      let word = stemmer.stemWord(queryTermLower);
+      // select the correct list
+      if (word[0] === "-") excludedTerms.add(word.substr(1));
+      else {
+        searchTerms.add(word);
+        highlightTerms.add(queryTermLower);
+      }
+    });
+
+    if (SPHINX_HIGHLIGHT_ENABLED) {  // set in sphinx_highlight.js
+      localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
+    }
+
+    // console.debug("SEARCH: searching for:");
+    // console.info("required: ", [...searchTerms]);
+    // console.info("excluded: ", [...excludedTerms]);
+
+    // array of [docname, title, anchor, descr, score, filename]
+    let results = [];
+    _removeChildren(document.getElementById("search-progress"));
+
+    const queryLower = query.toLowerCase();
+    for (const [title, foundTitles] of Object.entries(allTitles)) {
+      if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
+        for (const [file, id] of foundTitles) {
+          let score = Math.round(100 * queryLower.length / title.length)
+          results.push([
+            docNames[file],
+            titles[file] !== title ? `${titles[file]} > ${title}` : title,
+            id !== null ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ]);
+        }
+      }
+    }
+
+    // search for explicit entries in index directives
+    for (const [entry, foundEntries] of Object.entries(indexEntries)) {
+      if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
+        for (const [file, id] of foundEntries) {
+          let score = Math.round(100 * queryLower.length / entry.length)
+          results.push([
+            docNames[file],
+            titles[file],
+            id ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ]);
+        }
+      }
+    }
+
+    // lookup as object
+    objectTerms.forEach((term) =>
+      results.push(...Search.performObjectSearch(term, objectTerms))
+    );
+
+    // lookup as search terms in fulltext
+    results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
+
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort((a, b) => {
+      const leftScore = a[4];
+      const rightScore = b[4];
+      if (leftScore === rightScore) {
+        // same score: sort alphabetically
+        const leftTitle = a[1].toLowerCase();
+        const rightTitle = b[1].toLowerCase();
+        if (leftTitle === rightTitle) return 0;
+        return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
+      }
+      return leftScore > rightScore ? 1 : -1;
+    });
+
+    // remove duplicate search results
+    // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
+    let seen = new Set();
+    results = results.reverse().reduce((acc, result) => {
+      let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
+      if (!seen.has(resultStr)) {
+        acc.push(result);
+        seen.add(resultStr);
+      }
+      return acc;
+    }, []);
+
+    results = results.reverse();
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    // console.info("search results:", Search.lastresults);
+
+    // print the results
+    _displayNextItem(results, results.length, searchTerms);
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch: (object, objectTerms) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const objects = Search._index.objects;
+    const objNames = Search._index.objnames;
+    const titles = Search._index.titles;
+
+    const results = [];
+
+    const objectSearchCallback = (prefix, match) => {
+      const name = match[4]
+      const fullname = (prefix ? prefix + "." : "") + name;
+      const fullnameLower = fullname.toLowerCase();
+      if (fullnameLower.indexOf(object) < 0) return;
+
+      let score = 0;
+      const parts = fullnameLower.split(".");
+
+      // check for different match types: exact matches of full name or
+      // "last name" (i.e. last dotted part)
+      if (fullnameLower === object || parts.slice(-1)[0] === object)
+        score += Scorer.objNameMatch;
+      else if (parts.slice(-1)[0].indexOf(object) > -1)
+        score += Scorer.objPartialMatch; // matches in last name
+
+      const objName = objNames[match[1]][2];
+      const title = titles[match[0]];
+
+      // If more than one term searched for, we require other words to be
+      // found in the name/title/description
+      const otherTerms = new Set(objectTerms);
+      otherTerms.delete(object);
+      if (otherTerms.size > 0) {
+        const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
+        if (
+          [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
+        )
+          return;
+      }
+
+      let anchor = match[3];
+      if (anchor === "") anchor = fullname;
+      else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
+
+      const descr = objName + _(", in ") + title;
+
+      // add custom score for some objects according to scorer
+      if (Scorer.objPrio.hasOwnProperty(match[2]))
+        score += Scorer.objPrio[match[2]];
+      else score += Scorer.objPrioDefault;
+
+      results.push([
+        docNames[match[0]],
+        fullname,
+        "#" + anchor,
+        descr,
+        score,
+        filenames[match[0]],
+      ]);
+    };
+    Object.keys(objects).forEach((prefix) =>
+      objects[prefix].forEach((array) =>
+        objectSearchCallback(prefix, array)
+      )
+    );
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch: (searchTerms, excludedTerms) => {
+    // prepare search
+    const terms = Search._index.terms;
+    const titleTerms = Search._index.titleterms;
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+
+    const scoreMap = new Map();
+    const fileMap = new Map();
+
+    // perform the search on the required terms
+    searchTerms.forEach((word) => {
+      const files = [];
+      const arr = [
+        { files: terms[word], score: Scorer.term },
+        { files: titleTerms[word], score: Scorer.title },
+      ];
+      // add support for partial matches
+      if (word.length > 2) {
+        const escapedWord = _escapeRegExp(word);
+        Object.keys(terms).forEach((term) => {
+          if (term.match(escapedWord) && !terms[word])
+            arr.push({ files: terms[term], score: Scorer.partialTerm });
+        });
+        Object.keys(titleTerms).forEach((term) => {
+          if (term.match(escapedWord) && !titleTerms[word])
+            arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
+        });
+      }
+
+      // no match but word was a required one
+      if (arr.every((record) => record.files === undefined)) return;
+
+      // found search word in contents
+      arr.forEach((record) => {
+        if (record.files === undefined) return;
+
+        let recordFiles = record.files;
+        if (recordFiles.length === undefined) recordFiles = [recordFiles];
+        files.push(...recordFiles);
+
+        // set score for the word in each file
+        recordFiles.forEach((file) => {
+          if (!scoreMap.has(file)) scoreMap.set(file, {});
+          scoreMap.get(file)[word] = record.score;
+        });
+      });
+
+      // create the mapping
+      files.forEach((file) => {
+        if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
+          fileMap.get(file).push(word);
+        else fileMap.set(file, [word]);
+      });
+    });
+
+    // now check if the files don't contain excluded terms
+    const results = [];
+    for (const [file, wordList] of fileMap) {
+      // check if all requirements are matched
+
+      // as search terms with length < 3 are discarded
+      const filteredTermCount = [...searchTerms].filter(
+        (term) => term.length > 2
+      ).length;
+      if (
+        wordList.length !== searchTerms.size &&
+        wordList.length !== filteredTermCount
+      )
+        continue;
+
+      // ensure that none of the excluded terms is in the search result
+      if (
+        [...excludedTerms].some(
+          (term) =>
+            terms[term] === file ||
+            titleTerms[term] === file ||
+            (terms[term] || []).includes(file) ||
+            (titleTerms[term] || []).includes(file)
+        )
+      )
+        break;
+
+      // select one (max) score for the file.
+      const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
+      // add result to the result list
+      results.push([
+        docNames[file],
+        titles[file],
+        "",
+        null,
+        score,
+        filenames[file],
+      ]);
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words.
+   */
+  makeSearchSummary: (htmlText, keywords) => {
+    const text = Search.htmlToText(htmlText);
+    if (text === "") return null;
+
+    const textLower = text.toLowerCase();
+    const actualStartPosition = [...keywords]
+      .map((k) => textLower.indexOf(k.toLowerCase()))
+      .filter((i) => i > -1)
+      .slice(-1)[0];
+    const startWithContext = Math.max(actualStartPosition - 120, 0);
+
+    const top = startWithContext === 0 ? "" : "...";
+    const tail = startWithContext + 240 < text.length ? "..." : "";
+
+    let summary = document.createElement("p");
+    summary.classList.add("context");
+    summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
+
+    return summary;
+  },
+};
+
+_ready(Search.init);
diff --git a/docs/_build/html/_static/sphinx_highlight.js b/docs/_build/html/_static/sphinx_highlight.js
new file mode 100644
index 0000000..aae669d
--- /dev/null
+++ b/docs/_build/html/_static/sphinx_highlight.js
@@ -0,0 +1,144 @@
+/* Highlighting utilities for Sphinx HTML documentation. */
+"use strict";
+
+const SPHINX_HIGHLIGHT_ENABLED = true
+
+/**
+ * highlight a given string on a node by wrapping it in
+ * span elements with the given class name.
+ */
+const _highlight = (node, addItems, text, className) => {
+  if (node.nodeType === Node.TEXT_NODE) {
+    const val = node.nodeValue;
+    const parent = node.parentNode;
+    const pos = val.toLowerCase().indexOf(text);
+    if (
+      pos >= 0 &&
+      !parent.classList.contains(className) &&
+      !parent.classList.contains("nohighlight")
+    ) {
+      let span;
+
+      const closestNode = parent.closest("body, svg, foreignObject");
+      const isInSVG = closestNode && closestNode.matches("svg");
+      if (isInSVG) {
+        span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+      } else {
+        span = document.createElement("span");
+        span.classList.add(className);
+      }
+
+      span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+      parent.insertBefore(
+        span,
+        parent.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling
+        )
+      );
+      node.nodeValue = val.substr(0, pos);
+
+      if (isInSVG) {
+        const rect = document.createElementNS(
+          "http://www.w3.org/2000/svg",
+          "rect"
+        );
+        const bbox = parent.getBBox();
+        rect.x.baseVal.value = bbox.x;
+        rect.y.baseVal.value = bbox.y;
+        rect.width.baseVal.value = bbox.width;
+        rect.height.baseVal.value = bbox.height;
+        rect.setAttribute("class", className);
+        addItems.push({ parent: parent, target: rect });
+      }
+    }
+  } else if (node.matches && !node.matches("button, select, textarea")) {
+    node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
+  }
+};
+const _highlightText = (thisNode, text, className) => {
+  let addItems = [];
+  _highlight(thisNode, addItems, text, className);
+  addItems.forEach((obj) =>
+    obj.parent.insertAdjacentElement("beforebegin", obj.target)
+  );
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const SphinxHighlight = {
+
+  /**
+   * highlight the search words provided in localstorage in the text
+   */
+  highlightSearchWords: () => {
+    if (!SPHINX_HIGHLIGHT_ENABLED) return;  // bail if no highlight
+
+    // get and clear terms from localstorage
+    const url = new URL(window.location);
+    const highlight =
+        localStorage.getItem("sphinx_highlight_terms")
+        || url.searchParams.get("highlight")
+        || "";
+    localStorage.removeItem("sphinx_highlight_terms")
+    url.searchParams.delete("highlight");
+    window.history.replaceState({}, "", url);
+
+    // get individual terms from highlight string
+    const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
+    if (terms.length === 0) return; // nothing to do
+
+    // There should never be more than one element matching "div.body"
+    const divBody = document.querySelectorAll("div.body");
+    const body = divBody.length ? divBody[0] : document.querySelector("body");
+    window.setTimeout(() => {
+      terms.forEach((term) => _highlightText(body, term, "highlighted"));
+    }, 10);
+
+    const searchBox = document.getElementById("searchbox");
+    if (searchBox === null) return;
+    searchBox.appendChild(
+      document
+        .createRange()
+        .createContextualFragment(
+          '<p class="highlight-link">' +
+            '<a href="javascript:SphinxHighlight.hideSearchWords()">' +
+            _("Hide Search Matches") +
+            "</a></p>"
+        )
+    );
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords: () => {
+    document
+      .querySelectorAll("#searchbox .highlight-link")
+      .forEach((el) => el.remove());
+    document
+      .querySelectorAll("span.highlighted")
+      .forEach((el) => el.classList.remove("highlighted"));
+    localStorage.removeItem("sphinx_highlight_terms")
+  },
+
+  initEscapeListener: () => {
+    // only install a listener if it is really needed
+    if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
+
+    document.addEventListener("keydown", (event) => {
+      // bail for input elements
+      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+      // bail with special keys
+      if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
+      if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
+        SphinxHighlight.hideSearchWords();
+        event.preventDefault();
+      }
+    });
+  },
+};
+
+_ready(SphinxHighlight.highlightSearchWords);
+_ready(SphinxHighlight.initEscapeListener);
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
new file mode 100644
index 0000000..5629873
--- /dev/null
+++ b/docs/_build/html/genindex.html
@@ -0,0 +1,306 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Index &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+    <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
+    <link rel="index" title="Index" href="#" />
+    <link rel="search" title="Search" href="search.html" />
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
+ | <a href="#G"><strong>G</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#P"><strong>P</strong></a>
+ | <a href="#R"><strong>R</strong></a>
+ | <a href="#S"><strong>S</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ 
+</div>
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Plotter.Plotter.customize_plot">customize_plot() (src.Plotter.Plotter method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Dataset.Dataset">Dataset (class in src.Dataset)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Plotter.Plotter.distribution_plot">distribution_plot() (src.Plotter.Plotter method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="G">G</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_category_counts">get_category_counts() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_combined_anxiety_score">get_combined_anxiety_score() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_dataframe">get_dataframe() (src.Dataset.Dataset method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_is_competitive_col">get_is_competitive_col() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_is_narcissist_col">get_is_narcissist_col() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_sorted_column">get_sorted_column() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.get_unique_column_values">get_unique_column_values() (src.Dataset.Dataset method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
+    module
+
+      <ul>
+        <li><a href="source/src.html#module-src">src</a>
+</li>
+        <li><a href="source/src.html#module-src.Dataset">src.Dataset</a>
+</li>
+        <li><a href="source/src.html#module-src.Plotter">src.Plotter</a>
+</li>
+        <li><a href="source/src.html#module-src.test_dataset">src.test_dataset</a>
+</li>
+        <li><a href="source/src.html#module-src.test_plotter">src.test_plotter</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Plotter.Plotter.plot_categorical_bar_chart">plot_categorical_bar_chart() (src.Plotter.Plotter method)</a>
+</li>
+      <li><a href="source/src.html#src.Plotter.Plotter.plot_categorical_boxplot">plot_categorical_boxplot() (src.Plotter.Plotter method)</a>
+</li>
+      <li><a href="source/src.html#src.Plotter.Plotter.plot_categorical_histplot">plot_categorical_histplot() (src.Plotter.Plotter method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Plotter.Plotter.plot_scatterplot">plot_scatterplot() (src.Plotter.Plotter method)</a>
+</li>
+      <li><a href="source/src.html#src.Plotter.Plotter">Plotter (class in src.Plotter)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.preprocess_dataset">preprocess_dataset() (src.Dataset.Dataset method)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.preprocess_whyplay">preprocess_whyplay() (src.Dataset.Dataset method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="R">R</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.Dataset.Dataset.remove_nonaccepting_rows">remove_nonaccepting_rows() (src.Dataset.Dataset method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="S">S</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
+    src
+
+      <ul>
+        <li><a href="source/src.html#module-src">module</a>
+</li>
+      </ul></li>
+      <li>
+    src.Dataset
+
+      <ul>
+        <li><a href="source/src.html#module-src.Dataset">module</a>
+</li>
+      </ul></li>
+      <li>
+    src.Plotter
+
+      <ul>
+        <li><a href="source/src.html#module-src.Plotter">module</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
+    src.test_dataset
+
+      <ul>
+        <li><a href="source/src.html#module-src.test_dataset">module</a>
+</li>
+      </ul></li>
+      <li>
+    src.test_plotter
+
+      <ul>
+        <li><a href="source/src.html#module-src.test_plotter">module</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.test_dataset.test_bool_or_none_params">test_bool_or_none_params() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_catch_colname_not_in_df">test_catch_colname_not_in_df() (in module src.test_dataset)</a>
+
+      <ul>
+        <li><a href="source/src.html#src.test_plotter.test_catch_colname_not_in_df">(in module src.test_plotter)</a>
+</li>
+      </ul></li>
+      <li><a href="source/src.html#src.test_dataset.test_catch_colname_not_string">test_catch_colname_not_string() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_catch_non_bool">test_catch_non_bool() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_catch_non_dataframe">test_catch_non_dataframe() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_catch_plotter_init_not_Dataset">test_catch_plotter_init_not_Dataset() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_catch_styling_params_not_dict">test_catch_styling_params_not_dict() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_catch_target_not_string">test_catch_target_not_string() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_combined_anxiety_score">test_combined_anxiety_score() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_customize_plot">test_customize_plot() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_distribution_plot">test_distribution_plot() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_get_dataframe">test_get_dataframe() (in module src.test_dataset)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="source/src.html#src.test_dataset.test_get_is_narcissist_col">test_get_is_narcissist_col() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_get_sorted_columns">test_get_sorted_columns() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_get_unique_column_values">test_get_unique_column_values() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_incorrectly_load_Dataset_class">test_incorrectly_load_Dataset_class() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_load_Dataset_class">test_load_Dataset_class() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_load_plotter">test_load_plotter() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_plot_categorical_bar_chart">test_plot_categorical_bar_chart() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_plot_categorical_boxplot">test_plot_categorical_boxplot() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_plot_categorical_histplot">test_plot_categorical_histplot() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.test_plot_scatterplot">test_plot_scatterplot() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.test_preprocessed_dataframe">test_preprocessed_dataframe() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_dataset.the_dataset">the_dataset() (in module src.test_dataset)</a>
+</li>
+      <li><a href="source/src.html#src.test_plotter.the_plotter">the_plotter() (in module src.test_plotter)</a>
+</li>
+      <li><a href="source/src.html#src.Dataset.Dataset.treat_outliers">treat_outliers() (src.Dataset.Dataset method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="index.html">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
new file mode 100644
index 0000000..eef5e0d
--- /dev/null
+++ b/docs/_build/html/index.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>Welcome to asdsd’s documentation! &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+    <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+  <section id="welcome-to-asdsd-s-documentation">
+<h1>Welcome to asdsd’s documentation!<a class="headerlink" href="#welcome-to-asdsd-s-documentation" title="Permalink to this heading">¶</a></h1>
+<div class="toctree-wrapper compound">
+</div>
+</section>
+<section id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this heading">¶</a></h1>
+<ul class="simple">
+<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
+<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
+<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
+</ul>
+</section>
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="#">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="#">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+      |
+      <a href="_sources/index.rst.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
new file mode 100644
index 0000000..332a1e7
--- /dev/null
+++ b/docs/_build/html/objects.inv
@@ -0,0 +1,8 @@
+# Sphinx inventory version 2
+# Project: asdsd
+# Version: 
+# The remainder of this file is compressed using zlib.
+xÚ­–±’Û †{?™¤µ“k¯¾&Ef<“"%ƒam1A °«;+U^#¯—'É"ìX:Û9©²üì²ÚßµhºÇ:˜Öø$0´QÃGŒzUQíÞç‰å±\¤±'E
+
+$C©v
+Q<œ)¯HV; ©Á.ÄNêÐzÂþ@U0÷rB½±ŒT~o:‰:D(Æ~ÞFU—,¦35@–ì3𳛂ò*j‹h‘&‘0Dâ1¢­}1¥õöGŠ|V®…²‹k"41h@ì~¬À	˜—ªkœêŠ0êÀ7åƒWZCCÖïd/e¡QE2´ä,ÄÛkˆ Þó$Cé[á+ÉJ·H¡¶?A6<rÏAÿý.Ëh7-ÙàË)IxlV+'7*J]©8.ìç;[Å!O£!ãøåfÒè+¹±D†ºü²	ÁÉS¡ó¥+îr}}n[¯Ó
Þx†üÂAè*uϽ’‰Ü¬¼4Ûy©´ün"CíÞ3r†2ÖU«*ÙU1å¢ÏÓF^ƒ“P×§h=§;‚&×I”‘‡–-sç,ÅΈ:ùçoÚÕV0ì·Ê›ûh¨›­5\à†˜e©‡>‡7Ä"u.ù}n‡=ØX=•J*¦ò-kccÞ™Ka.:u©/÷AAþoù3!O¶?phýåÄWö7¨‚;²¿o½½@2NmÀ‰åƒ8ŽöëÄçô¸8-3A§EƒßÀ±u  4~ýFÁËÚ<©´ý»w…;5Ýò8‘Q_rWÉ{fߐ­;þ“äÇj¶¬j,ÌcYó5ϯÕ‡ÜäÖ…Ã0Ç3YÉ)\œ²yaõ1Çi¥h”þžöø¹—®q
\ No newline at end of file
diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html
new file mode 100644
index 0000000..0b231f4
--- /dev/null
+++ b/docs/_build/html/py-modindex.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Python Module Index &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+    <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-s"><strong>s</strong></a>
+   </div>
+
+   <table class="indextable modindextable">
+     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
+     <tr class="cap" id="cap-s"><td></td><td>
+       <strong>s</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <a href="source/src.html#module-src"><code class="xref">src</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="source/src.html#module-src.Dataset"><code class="xref">src.Dataset</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="source/src.html#module-src.Plotter"><code class="xref">src.Plotter</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="source/src.html#module-src.test_dataset"><code class="xref">src.test_dataset</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="source/src.html#module-src.test_plotter"><code class="xref">src.test_plotter</code></a></td><td>
+       <em></em></td></tr>
+   </table>
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="index.html">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html
new file mode 100644
index 0000000..09453b1
--- /dev/null
+++ b/docs/_build/html/search.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Search &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
+    
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+    <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
+    <script src="_static/searchtools.js"></script>
+    <script src="_static/language_data.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="#" />
+  <script src="searchindex.js" defer></script>
+  
+   
+  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+  <h1 id="search-documentation">Search</h1>
+  
+  <noscript>
+  <div class="admonition warning">
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  </noscript>
+  
+  
+  <p>
+    Searching for multiple words only shows matches that contain
+    all words.
+  </p>
+  
+  
+  <form action="" method="get">
+    <input type="text" name="q" aria-labelledby="search-documentation" value="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  
+  
+  <div id="search-results">
+  
+  </div>
+  
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="index.html">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
new file mode 100644
index 0000000..97b0265
--- /dev/null
+++ b/docs/_build/html/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({"docnames": ["index", "source/modules", "source/src"], "filenames": ["index.rst", "source/modules.rst", "source/src.rst"], "titles": ["Welcome to asdsd\u2019s documentation!", "src", "src package"], "terms": {"index": 0, "modul": [0, 1], "search": 0, "page": 0, "packag": 1, "submodul": 1, "dataset": 1, "get_category_count": [1, 2], "get_combined_anxiety_scor": [1, 2], "get_datafram": [1, 2], "get_is_competitive_col": [1, 2], "get_is_narcissist_col": [1, 2], "get_sorted_column": [1, 2], "get_unique_column_valu": [1, 2], "preprocess_dataset": [1, 2], "preprocess_whyplai": [1, 2], "remove_nonaccepting_row": [1, 2], "treat_outli": [1, 2], "plotter": 1, "customize_plot": [1, 2], "distribution_plot": [1, 2], "plot_categorical_bar_chart": [1, 2], "plot_categorical_boxplot": [1, 2], "plot_categorical_histplot": [1, 2], "plot_scatterplot": [1, 2], "test_dataset": 1, "test_bool_or_none_param": [1, 2], "test_catch_colname_not_in_df": [1, 2], "test_catch_colname_not_str": [1, 2], "test_catch_non_bool": [1, 2], "test_catch_non_datafram": [1, 2], "test_combined_anxiety_scor": [1, 2], "test_get_datafram": [1, 2], "test_get_is_narcissist_col": [1, 2], "test_get_sorted_column": [1, 2], "test_get_unique_column_valu": [1, 2], "test_incorrectly_load_dataset_class": [1, 2], "test_load_dataset_class": [1, 2], "test_preprocessed_datafram": [1, 2], "the_dataset": [1, 2], "test_plott": 1, "test_catch_plotter_init_not_dataset": [1, 2], "test_catch_styling_params_not_dict": [1, 2], "test_catch_target_not_str": [1, 2], "test_customize_plot": [1, 2], "test_distribution_plot": [1, 2], "test_load_plott": [1, 2], "test_plot_categorical_bar_chart": [1, 2], "test_plot_categorical_boxplot": [1, 2], "test_plot_categorical_histplot": [1, 2], "test_plot_scatterplot": [1, 2], "the_plott": [1, 2], "content": 1, "class": 2, "dataset_filenam": 2, "str": 2, "base": 2, "object": 2, "colnam": 2, "ascend": 2, "bool": 2, "none": 2, "seri": 2, "return": 2, "count": 2, "categor": 2, "valu": 2, "paramet": 2, "column": 2, "name": 2, "option": 2, "direct": 2, "sort": 2, "result": 2, "If": 2, "set": 2, "ar": 2, "default": 2, "categori": 2, "type": 2, "pd": 2, "datafram": 2, "get": 2, "combin": 2, "anxieti": 2, "score": 2, "thi": 2, "i": 2, "gan": 2, "spin": 2, "swl": 2, "metric": 2, "each": 2, "three": 2, "first": 2, "normalis": 2, "mean": 2, "A": 2, "getter": 2, "function": 2, "boolean": 2, "narcissist": 2, "The": 2, "narciss": 2, "1": 2, "0": 2, "consid": 2, "Not": 2, "while": 2, "all": 2, "abov": 2, "true": 2, "singl": 2, "either": 2, "descend": 2, "see": 2, "get_dataset_column": 2, "order": 2, "an": 2, "arrai": 2, "string": 2, "contain": 2, "uniqu": 2, "present": 2, "raw_datafram": 2, "preprocess": 2, "immedi": 2, "after": 2, "load": 2, "raw": 2, "read": 2, "from": 2, "read_csv": 2, "discard": 2, "afterward": 2, "whyplai": 2, "is_competit": 2, "col": 2, "remov": 2, "row": 2, "where": 2, "particip": 2, "did": 2, "consent": 2, "data": 2, "process": 2, "df": 2, "treat": 2, "outlier": 2, "numer": 2, "filter": 2, "fig": 2, "ax": 2, "styling_param": 2, "plt": 2, "figur": 2, "dict": 2, "target": 2, "plot": 2, "distribut": 2, "must": 2, "category1": 2, "category2": 2, "bar": 2, "chart": 2, "boxplot": 2, "bin": 2, "30": 2, "hisplot": 2, "target1": 2, "target2": 2, "scatterplot": 2, "test": 2, "file": 2, "py": 2, "param": 2, "take": 2, "correctli": 2, "work": 2, "intend": 2, "catch": 2, "incorrect": 2, "input": 2, "successfulli": 2, "": 2, "init": 2, "actual": 2, "non": 2, "dictionari": 2, "can": 2, "initialis": 2, "instanc": 2, "fixtur": 2}, "objects": {"": [[2, 0, 0, "-", "src"]], "src": [[2, 0, 0, "-", "Dataset"], [2, 0, 0, "-", "Plotter"], [2, 0, 0, "-", "test_dataset"], [2, 0, 0, "-", "test_plotter"]], "src.Dataset": [[2, 1, 1, "", "Dataset"]], "src.Dataset.Dataset": [[2, 2, 1, "", "get_category_counts"], [2, 2, 1, "", "get_combined_anxiety_score"], [2, 2, 1, "", "get_dataframe"], [2, 2, 1, "", "get_is_competitive_col"], [2, 2, 1, "", "get_is_narcissist_col"], [2, 2, 1, "", "get_sorted_column"], [2, 2, 1, "", "get_unique_column_values"], [2, 2, 1, "", "preprocess_dataset"], [2, 2, 1, "", "preprocess_whyplay"], [2, 2, 1, "", "remove_nonaccepting_rows"], [2, 2, 1, "", "treat_outliers"]], "src.Plotter": [[2, 1, 1, "", "Plotter"]], "src.Plotter.Plotter": [[2, 2, 1, "", "customize_plot"], [2, 2, 1, "", "distribution_plot"], [2, 2, 1, "", "plot_categorical_bar_chart"], [2, 2, 1, "", "plot_categorical_boxplot"], [2, 2, 1, "", "plot_categorical_histplot"], [2, 2, 1, "", "plot_scatterplot"]], "src.test_dataset": [[2, 3, 1, "", "test_bool_or_none_params"], [2, 3, 1, "", "test_catch_colname_not_in_df"], [2, 3, 1, "", "test_catch_colname_not_string"], [2, 3, 1, "", "test_catch_non_bool"], [2, 3, 1, "", "test_catch_non_dataframe"], [2, 3, 1, "", "test_combined_anxiety_score"], [2, 3, 1, "", "test_get_dataframe"], [2, 3, 1, "", "test_get_is_narcissist_col"], [2, 3, 1, "", "test_get_sorted_columns"], [2, 3, 1, "", "test_get_unique_column_values"], [2, 3, 1, "", "test_incorrectly_load_Dataset_class"], [2, 3, 1, "", "test_load_Dataset_class"], [2, 3, 1, "", "test_preprocessed_dataframe"], [2, 3, 1, "", "the_dataset"]], "src.test_plotter": [[2, 3, 1, "", "test_catch_colname_not_in_df"], [2, 3, 1, "", "test_catch_plotter_init_not_Dataset"], [2, 3, 1, "", "test_catch_styling_params_not_dict"], [2, 3, 1, "", "test_catch_target_not_string"], [2, 3, 1, "", "test_customize_plot"], [2, 3, 1, "", "test_distribution_plot"], [2, 3, 1, "", "test_load_plotter"], [2, 3, 1, "", "test_plot_categorical_bar_chart"], [2, 3, 1, "", "test_plot_categorical_boxplot"], [2, 3, 1, "", "test_plot_categorical_histplot"], [2, 3, 1, "", "test_plot_scatterplot"], [2, 3, 1, "", "the_plotter"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"welcom": 0, "asdsd": 0, "": 0, "document": 0, "indic": 0, "tabl": 0, "src": [1, 2], "packag": 2, "submodul": 2, "dataset": 2, "modul": 2, "plotter": 2, "test_dataset": 2, "test_plott": 2, "content": 2}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Welcome to asdsd\u2019s documentation!": [[0, "welcome-to-asdsd-s-documentation"]], "Indices and tables": [[0, "indices-and-tables"]], "src": [[1, "src"]], "src package": [[2, "src-package"]], "Submodules": [[2, "submodules"]], "src.Dataset module": [[2, "module-src.Dataset"]], "src.Plotter module": [[2, "module-src.Plotter"]], "src.test_dataset module": [[2, "module-src.test_dataset"]], "src.test_plotter module": [[2, "module-src.test_plotter"]], "Module contents": [[2, "module-src"]]}, "indexentries": {"dataset (class in src.dataset)": [[2, "src.Dataset.Dataset"]], "plotter (class in src.plotter)": [[2, "src.Plotter.Plotter"]], "customize_plot() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.customize_plot"]], "distribution_plot() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.distribution_plot"]], "get_category_counts() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_category_counts"]], "get_combined_anxiety_score() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_combined_anxiety_score"]], "get_dataframe() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_dataframe"]], "get_is_competitive_col() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_is_competitive_col"]], "get_is_narcissist_col() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_is_narcissist_col"]], "get_sorted_column() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_sorted_column"]], "get_unique_column_values() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.get_unique_column_values"]], "module": [[2, "module-src"], [2, "module-src.Dataset"], [2, "module-src.Plotter"], [2, "module-src.test_dataset"], [2, "module-src.test_plotter"]], "plot_categorical_bar_chart() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.plot_categorical_bar_chart"]], "plot_categorical_boxplot() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.plot_categorical_boxplot"]], "plot_categorical_histplot() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.plot_categorical_histplot"]], "plot_scatterplot() (src.plotter.plotter method)": [[2, "src.Plotter.Plotter.plot_scatterplot"]], "preprocess_dataset() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.preprocess_dataset"]], "preprocess_whyplay() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.preprocess_whyplay"]], "remove_nonaccepting_rows() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.remove_nonaccepting_rows"]], "src": [[2, "module-src"]], "src.dataset": [[2, "module-src.Dataset"]], "src.plotter": [[2, "module-src.Plotter"]], "src.test_dataset": [[2, "module-src.test_dataset"]], "src.test_plotter": [[2, "module-src.test_plotter"]], "test_bool_or_none_params() (in module src.test_dataset)": [[2, "src.test_dataset.test_bool_or_none_params"]], "test_catch_colname_not_in_df() (in module src.test_dataset)": [[2, "src.test_dataset.test_catch_colname_not_in_df"]], "test_catch_colname_not_in_df() (in module src.test_plotter)": [[2, "src.test_plotter.test_catch_colname_not_in_df"]], "test_catch_colname_not_string() (in module src.test_dataset)": [[2, "src.test_dataset.test_catch_colname_not_string"]], "test_catch_non_bool() (in module src.test_dataset)": [[2, "src.test_dataset.test_catch_non_bool"]], "test_catch_non_dataframe() (in module src.test_dataset)": [[2, "src.test_dataset.test_catch_non_dataframe"]], "test_catch_plotter_init_not_dataset() (in module src.test_plotter)": [[2, "src.test_plotter.test_catch_plotter_init_not_Dataset"]], "test_catch_styling_params_not_dict() (in module src.test_plotter)": [[2, "src.test_plotter.test_catch_styling_params_not_dict"]], "test_catch_target_not_string() (in module src.test_plotter)": [[2, "src.test_plotter.test_catch_target_not_string"]], "test_combined_anxiety_score() (in module src.test_dataset)": [[2, "src.test_dataset.test_combined_anxiety_score"]], "test_customize_plot() (in module src.test_plotter)": [[2, "src.test_plotter.test_customize_plot"]], "test_distribution_plot() (in module src.test_plotter)": [[2, "src.test_plotter.test_distribution_plot"]], "test_get_dataframe() (in module src.test_dataset)": [[2, "src.test_dataset.test_get_dataframe"]], "test_get_is_narcissist_col() (in module src.test_dataset)": [[2, "src.test_dataset.test_get_is_narcissist_col"]], "test_get_sorted_columns() (in module src.test_dataset)": [[2, "src.test_dataset.test_get_sorted_columns"]], "test_get_unique_column_values() (in module src.test_dataset)": [[2, "src.test_dataset.test_get_unique_column_values"]], "test_incorrectly_load_dataset_class() (in module src.test_dataset)": [[2, "src.test_dataset.test_incorrectly_load_Dataset_class"]], "test_load_dataset_class() (in module src.test_dataset)": [[2, "src.test_dataset.test_load_Dataset_class"]], "test_load_plotter() (in module src.test_plotter)": [[2, "src.test_plotter.test_load_plotter"]], "test_plot_categorical_bar_chart() (in module src.test_plotter)": [[2, "src.test_plotter.test_plot_categorical_bar_chart"]], "test_plot_categorical_boxplot() (in module src.test_plotter)": [[2, "src.test_plotter.test_plot_categorical_boxplot"]], "test_plot_categorical_histplot() (in module src.test_plotter)": [[2, "src.test_plotter.test_plot_categorical_histplot"]], "test_plot_scatterplot() (in module src.test_plotter)": [[2, "src.test_plotter.test_plot_scatterplot"]], "test_preprocessed_dataframe() (in module src.test_dataset)": [[2, "src.test_dataset.test_preprocessed_dataframe"]], "the_dataset() (in module src.test_dataset)": [[2, "src.test_dataset.the_dataset"]], "the_plotter() (in module src.test_plotter)": [[2, "src.test_plotter.the_plotter"]], "treat_outliers() (src.dataset.dataset method)": [[2, "src.Dataset.Dataset.treat_outliers"]]}})
\ No newline at end of file
diff --git a/docs/_build/html/source/modules.html b/docs/_build/html/source/modules.html
new file mode 100644
index 0000000..7e51a8d
--- /dev/null
+++ b/docs/_build/html/source/modules.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>src &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
+    <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+    <script src="../_static/doctools.js"></script>
+    <script src="../_static/sphinx_highlight.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+   
+  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+  <section id="src">
+<h1>src<a class="headerlink" href="#src" title="Permalink to this heading">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="src.html">src package</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="src.html#submodules">Submodules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src.Dataset">src.Dataset module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.Dataset.Dataset"><code class="docutils literal notranslate"><span class="pre">Dataset</span></code></a><ul>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_category_counts"><code class="docutils literal notranslate"><span class="pre">Dataset.get_category_counts()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_combined_anxiety_score"><code class="docutils literal notranslate"><span class="pre">Dataset.get_combined_anxiety_score()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_dataframe"><code class="docutils literal notranslate"><span class="pre">Dataset.get_dataframe()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_is_competitive_col"><code class="docutils literal notranslate"><span class="pre">Dataset.get_is_competitive_col()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_is_narcissist_col"><code class="docutils literal notranslate"><span class="pre">Dataset.get_is_narcissist_col()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_sorted_column"><code class="docutils literal notranslate"><span class="pre">Dataset.get_sorted_column()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.get_unique_column_values"><code class="docutils literal notranslate"><span class="pre">Dataset.get_unique_column_values()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.preprocess_dataset"><code class="docutils literal notranslate"><span class="pre">Dataset.preprocess_dataset()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.preprocess_whyplay"><code class="docutils literal notranslate"><span class="pre">Dataset.preprocess_whyplay()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.remove_nonaccepting_rows"><code class="docutils literal notranslate"><span class="pre">Dataset.remove_nonaccepting_rows()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Dataset.Dataset.treat_outliers"><code class="docutils literal notranslate"><span class="pre">Dataset.treat_outliers()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src.Plotter">src.Plotter module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.Plotter.Plotter"><code class="docutils literal notranslate"><span class="pre">Plotter</span></code></a><ul>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.customize_plot"><code class="docutils literal notranslate"><span class="pre">Plotter.customize_plot()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.distribution_plot"><code class="docutils literal notranslate"><span class="pre">Plotter.distribution_plot()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.plot_categorical_bar_chart"><code class="docutils literal notranslate"><span class="pre">Plotter.plot_categorical_bar_chart()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.plot_categorical_boxplot"><code class="docutils literal notranslate"><span class="pre">Plotter.plot_categorical_boxplot()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.plot_categorical_histplot"><code class="docutils literal notranslate"><span class="pre">Plotter.plot_categorical_histplot()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="src.html#src.Plotter.Plotter.plot_scatterplot"><code class="docutils literal notranslate"><span class="pre">Plotter.plot_scatterplot()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src.test_dataset">src.test_dataset module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_bool_or_none_params"><code class="docutils literal notranslate"><span class="pre">test_bool_or_none_params()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_catch_colname_not_in_df"><code class="docutils literal notranslate"><span class="pre">test_catch_colname_not_in_df()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_catch_colname_not_string"><code class="docutils literal notranslate"><span class="pre">test_catch_colname_not_string()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_catch_non_bool"><code class="docutils literal notranslate"><span class="pre">test_catch_non_bool()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_catch_non_dataframe"><code class="docutils literal notranslate"><span class="pre">test_catch_non_dataframe()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_combined_anxiety_score"><code class="docutils literal notranslate"><span class="pre">test_combined_anxiety_score()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_get_dataframe"><code class="docutils literal notranslate"><span class="pre">test_get_dataframe()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_get_is_narcissist_col"><code class="docutils literal notranslate"><span class="pre">test_get_is_narcissist_col()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_get_sorted_columns"><code class="docutils literal notranslate"><span class="pre">test_get_sorted_columns()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_get_unique_column_values"><code class="docutils literal notranslate"><span class="pre">test_get_unique_column_values()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_incorrectly_load_Dataset_class"><code class="docutils literal notranslate"><span class="pre">test_incorrectly_load_Dataset_class()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_load_Dataset_class"><code class="docutils literal notranslate"><span class="pre">test_load_Dataset_class()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.test_preprocessed_dataframe"><code class="docutils literal notranslate"><span class="pre">test_preprocessed_dataframe()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_dataset.the_dataset"><code class="docutils literal notranslate"><span class="pre">the_dataset()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src.test_plotter">src.test_plotter module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_catch_colname_not_in_df"><code class="docutils literal notranslate"><span class="pre">test_catch_colname_not_in_df()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_catch_plotter_init_not_Dataset"><code class="docutils literal notranslate"><span class="pre">test_catch_plotter_init_not_Dataset()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_catch_styling_params_not_dict"><code class="docutils literal notranslate"><span class="pre">test_catch_styling_params_not_dict()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_catch_target_not_string"><code class="docutils literal notranslate"><span class="pre">test_catch_target_not_string()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_customize_plot"><code class="docutils literal notranslate"><span class="pre">test_customize_plot()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_distribution_plot"><code class="docutils literal notranslate"><span class="pre">test_distribution_plot()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_load_plotter"><code class="docutils literal notranslate"><span class="pre">test_load_plotter()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_plot_categorical_bar_chart"><code class="docutils literal notranslate"><span class="pre">test_plot_categorical_bar_chart()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_plot_categorical_boxplot"><code class="docutils literal notranslate"><span class="pre">test_plot_categorical_boxplot()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_plot_categorical_histplot"><code class="docutils literal notranslate"><span class="pre">test_plot_categorical_histplot()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.test_plot_scatterplot"><code class="docutils literal notranslate"><span class="pre">test_plot_scatterplot()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="src.html#src.test_plotter.the_plotter"><code class="docutils literal notranslate"><span class="pre">the_plotter()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="src.html#module-src">Module contents</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</section>
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="../index.html">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="../index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+      |
+      <a href="../_sources/source/modules.rst.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/source/src.html b/docs/_build/html/source/src.html
new file mode 100644
index 0000000..2f01235
--- /dev/null
+++ b/docs/_build/html/source/src.html
@@ -0,0 +1,589 @@
+<!DOCTYPE html>
+
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>src package &#8212; asdsd 0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
+    <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+    <script src="../_static/doctools.js"></script>
+    <script src="../_static/sphinx_highlight.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+   
+  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
+  
+  
+  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+  </head><body>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          
+
+          <div class="body" role="main">
+            
+  <section id="src-package">
+<h1>src package<a class="headerlink" href="#src-package" title="Permalink to this heading">¶</a></h1>
+<section id="submodules">
+<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this heading">¶</a></h2>
+</section>
+<section id="module-src.Dataset">
+<span id="src-dataset-module"></span><h2>src.Dataset module<a class="headerlink" href="#module-src.Dataset" title="Permalink to this heading">¶</a></h2>
+<dl class="py class">
+<dt class="sig sig-object py" id="src.Dataset.Dataset">
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">src.Dataset.</span></span><span class="sig-name descname"><span class="pre">Dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset_filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.Dataset.Dataset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_category_counts">
+<span class="sig-name descname"><span class="pre">get_category_counts</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">colname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ascending</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Series</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.get_category_counts" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a count of categorical values in the dataset.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>colname</strong> (<em>str</em>) – the column name.</p></li>
+<li><p><strong>ascending</strong> (<em>bool</em><em>, </em><em>optional</em>) – Direction to sort results.
+If set to None, the results are not sorted. Defaults to None.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the counted categories.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.Series</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_combined_anxiety_score">
+<span class="sig-name descname"><span class="pre">get_combined_anxiety_score</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Series</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.get_combined_anxiety_score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the combined anxiety score, as a column.
+This score is based on the GAN, SPIN and SWL metrics.
+Each of the three columns are first normalised,
+then the mean is returned.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>dataframe</strong> (<em>pd.DataFrame</em>) – the dataframe.</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the anxiety score column.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.Series</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_dataframe">
+<span class="sig-name descname"><span class="pre">get_dataframe</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">DataFrame</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.get_dataframe" title="Permalink to this definition">¶</a></dt>
+<dd><p>A getter function for the dataframe.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>the dataset.</p>
+</dd>
+<dt class="field-even">Return type<span class="colon">:</span></dt>
+<dd class="field-even"><p>pd.DataFrame</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_is_competitive_col">
+<span class="sig-name descname"><span class="pre">get_is_competitive_col</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.Dataset.Dataset.get_is_competitive_col" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_is_narcissist_col">
+<span class="sig-name descname"><span class="pre">get_is_narcissist_col</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Series</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.get_is_narcissist_col" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get a boolean narcissist column.
+The Narcissism score of 1.0 is considered Not a Narcissist,
+while all values above that are above are considered Narcissist.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>dataframe</strong> (<em>pd.DataFrame</em>) – the dataframe</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the boolean narcissist column.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.Series</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_sorted_column">
+<span class="sig-name descname"><span class="pre">get_sorted_column</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">colname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ascending</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Series</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.get_sorted_column" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a single column, sorted either ascending or descending.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>colname</strong> (<em>str</em>) – the column name (see get_dataset_columns()).</p></li>
+<li><p><strong>ascending</strong> (<em>bool</em><em>, </em><em>optional</em>) – Sorting order. Defaults to True.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>The sorted column.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.Series</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.get_unique_column_values">
+<span class="sig-name descname"><span class="pre">get_unique_column_values</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">colname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.Dataset.Dataset.get_unique_column_values" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a count of categorical values in the dataset.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>colname</strong> (<em>str</em>) – the column name.</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>an array of strings containing the unique values
+present in the column</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>string array</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.preprocess_dataset">
+<span class="sig-name descname"><span class="pre">preprocess_dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">raw_dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">DataFrame</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.preprocess_dataset" title="Permalink to this definition">¶</a></dt>
+<dd><p>preprocess dataframe immediately after loading it.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>raw_dataframe</strong> (<em>pd.DataFrame</em>) – raw dataframe as read from pd.read_csv().
+This dataframe is discarded afterwards.</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>resulting preprocessed dataframe.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.DataFrame</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.preprocess_whyplay">
+<span class="sig-name descname"><span class="pre">preprocess_whyplay</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Series</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.preprocess_whyplay" title="Permalink to this definition">¶</a></dt>
+<dd><p>Preprocesses the whyplay column, and returns a Is_competitive col.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>dataframe</strong> (<em>pd.DataFrame</em>) – the dataframe.</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the Is_competitive column.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.Series</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.remove_nonaccepting_rows">
+<span class="sig-name descname"><span class="pre">remove_nonaccepting_rows</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataframe</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">DataFrame</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.remove_nonaccepting_rows" title="Permalink to this definition">¶</a></dt>
+<dd><p>Removes rows where participants did not consent to data processing.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><p><strong>dataframe</strong> (<em>pd.DataFrame</em>) – the dataframe.</p>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the dataframe.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.DataFrame</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Dataset.Dataset.treat_outliers">
+<span class="sig-name descname"><span class="pre">treat_outliers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">df</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">DataFrame</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">colname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">DataFrame</span></span></span><a class="headerlink" href="#src.Dataset.Dataset.treat_outliers" title="Permalink to this definition">¶</a></dt>
+<dd><p>Treat outliers of numerical columns.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>df</strong> (<em>pd.DataFrame</em>) – the dataframe.</p></li>
+<li><p><strong>colname</strong> (<em>str</em>) – the column name to treat.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>the filtered dataframe.</p>
+</dd>
+<dt class="field-odd">Return type<span class="colon">:</span></dt>
+<dd class="field-odd"><p>pd.DataFrame</p>
+</dd>
+</dl>
+</dd></dl>
+
+</dd></dl>
+
+</section>
+<section id="module-src.Plotter">
+<span id="src-plotter-module"></span><h2>src.Plotter module<a class="headerlink" href="#module-src.Plotter" title="Permalink to this heading">¶</a></h2>
+<dl class="py class">
+<dt class="sig sig-object py" id="src.Plotter.Plotter">
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">src.Plotter.</span></span><span class="sig-name descname"><span class="pre">Plotter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.Plotter.Plotter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.customize_plot">
+<span class="sig-name descname"><span class="pre">customize_plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">fig</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ax</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.customize_plot" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>fig</strong> (<em>plt.figure.Figure</em>) – </p></li>
+<li><p><strong>ax</strong> (<em>plt.axes.Axes</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.distribution_plot">
+<span class="sig-name descname"><span class="pre">distribution_plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.distribution_plot" title="Permalink to this definition">¶</a></dt>
+<dd><p>plot a distribution plot.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>target</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.plot_categorical_bar_chart">
+<span class="sig-name descname"><span class="pre">plot_categorical_bar_chart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">category1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.plot_categorical_bar_chart" title="Permalink to this definition">¶</a></dt>
+<dd><p>plot a categorical bar chart.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>category1</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>category2</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.plot_categorical_boxplot">
+<span class="sig-name descname"><span class="pre">plot_categorical_boxplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.plot_categorical_boxplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>plot a categorical boxplot.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>target</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>category</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.plot_categorical_histplot">
+<span class="sig-name descname"><span class="pre">plot_categorical_histplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.plot_categorical_histplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>plot a categorical hisplot.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>target</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>category</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="src.Plotter.Plotter.plot_scatterplot">
+<span class="sig-name descname"><span class="pre">plot_scatterplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">styling_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#src.Plotter.Plotter.plot_scatterplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>plot a scatterplot.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>target1</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>target2</strong> (<em>str</em><em>, </em><em>must be present as a column in the dataset</em>) – </p></li>
+<li><p><strong>styling_params</strong> (<em>dict</em>) – </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>None</p>
+</dd>
+</dl>
+</dd></dl>
+
+</dd></dl>
+
+</section>
+<section id="module-src.test_dataset">
+<span id="src-test-dataset-module"></span><h2>src.test_dataset module<a class="headerlink" href="#module-src.test_dataset" title="Permalink to this heading">¶</a></h2>
+<p>This test file tests the Dataset class in Dataset.py.</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_bool_or_none_params">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_bool_or_none_params</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_bool_or_none_params" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take bool or None correctly
+work as intended.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_catch_colname_not_in_df">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_catch_colname_not_in_df</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_catch_colname_not_in_df" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take colname correctly
+catch colnames not in dataset.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_catch_colname_not_string">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_catch_colname_not_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_catch_colname_not_string" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take colname correctly
+catch colnames not in dataset.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_catch_non_bool">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_catch_non_bool</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_catch_non_bool" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take bool or None correctly
+catch incorrect input data types.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_catch_non_dataframe">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_catch_non_dataframe</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_catch_non_dataframe" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take pd.DataFrame correctly
+catch incorrect input data types.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_combined_anxiety_score">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_combined_anxiety_score</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_combined_anxiety_score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests Dataset.get_combined_anxiety_score().</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_get_dataframe">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_get_dataframe</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_get_dataframe" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests Dataset.get_dataframe().</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_get_is_narcissist_col">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_get_is_narcissist_col</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_get_is_narcissist_col" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests Dataset.get_is_narcissist_col().</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_get_sorted_columns">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_get_sorted_columns</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_get_sorted_columns" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests Dataset.get_sorted_column().</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_get_unique_column_values">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_get_unique_column_values</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_get_unique_column_values" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests Dataset.get_combined_anxiety_score().</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_incorrectly_load_Dataset_class">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_incorrectly_load_Dataset_class</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_incorrectly_load_Dataset_class" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_load_Dataset_class">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_load_Dataset_class</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_load_Dataset_class" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests if the dataset is successfully loaded.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.test_preprocessed_dataframe">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">test_preprocessed_dataframe</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_dataset.test_preprocessed_dataframe" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that the dataframe is preprocessed correctly.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_dataset.the_dataset">
+<span class="sig-prename descclassname"><span class="pre">src.test_dataset.</span></span><span class="sig-name descname"><span class="pre">the_dataset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></span><a class="headerlink" href="#src.test_dataset.the_dataset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the initialised Dataset instance as a fixture.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>the initialised Dataset.</p>
+</dd>
+<dt class="field-even">Return type<span class="colon">:</span></dt>
+<dd class="field-even"><p><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset">Dataset</a></p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="module-src.test_plotter">
+<span id="src-test-plotter-module"></span><h2>src.test_plotter module<a class="headerlink" href="#module-src.test_plotter" title="Permalink to this heading">¶</a></h2>
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_catch_colname_not_in_df">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_catch_colname_not_in_df</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_catch_colname_not_in_df" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take colname correctly
+catch colnames not in dataset.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_catch_plotter_init_not_Dataset">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_catch_plotter_init_not_Dataset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_catch_plotter_init_not_Dataset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that the Plotter’s init actually takes a src.Dataset.Dataset.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_catch_styling_params_not_dict">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_catch_styling_params_not_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">param</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_catch_styling_params_not_dict" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take styling_params correctly
+catch non dictionaries.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_catch_target_not_string">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_catch_target_not_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_catch_target_not_string" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that functions that take target correctly
+catch non strings.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_customize_plot">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_customize_plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_customize_plot" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_distribution_plot">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_distribution_plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_distribution_plot" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_load_plotter">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_load_plotter</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_load_plotter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tests that the Plotter class can be loaded.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_plot_categorical_bar_chart">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_plot_categorical_bar_chart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_plot_categorical_bar_chart" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_plot_categorical_boxplot">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_plot_categorical_boxplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_plot_categorical_boxplot" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_plot_categorical_histplot">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_plot_categorical_histplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_plot_categorical_histplot" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.test_plot_scatterplot">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">test_plot_scatterplot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">the_plotter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#src.Plotter.Plotter" title="src.Plotter.Plotter"><span class="pre">Plotter</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#src.test_plotter.test_plot_scatterplot" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="src.test_plotter.the_plotter">
+<span class="sig-prename descclassname"><span class="pre">src.test_plotter.</span></span><span class="sig-name descname"><span class="pre">the_plotter</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#src.Dataset.Dataset" title="src.Dataset.Dataset"><span class="pre">Dataset</span></a></span></span><a class="headerlink" href="#src.test_plotter.the_plotter" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</section>
+<section id="module-src">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-src" title="Permalink to this heading">¶</a></h2>
+</section>
+</section>
+
+
+          </div>
+          
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<h1 class="logo"><a href="../index.html">asdsd</a></h1>
+
+
+
+
+
+
+
+
+<h3>Navigation</h3>
+
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+  <li><a href="../index.html">Documentation overview</a><ul>
+  </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+
+
+
+
+
+
+
+
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="footer">
+      &copy;2023, asdasdasdadadasd.
+      
+      |
+      Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a>
+      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a>
+      
+      |
+      <a href="../_sources/source/src.rst.txt"
+          rel="nofollow">Page source</a>
+    </div>
+
+    
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..16220ff
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,55 @@
+# Configuration file for the Sphinx documentation builder.
+#
+# This file only contains a selection of the most common options. For a full
+# list see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+import os
+import sys
+
+sys.path.insert(0, os.path.abspath(".."))
+
+
+# -- Project information -----------------------------------------------------
+
+project = "asdsd"
+copyright = "2023, asdasdasdadadasd"
+author = "asdasdasdadadasd"
+
+# The full version, including alpha/beta/rc tags
+release = "0.1"
+
+
+# -- General configuration ---------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = ["sphinx.ext.napoleon", "sphinx.ext.autodoc"]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ["_templates"]
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = "alabaster"
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ["_static"]
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..5200b2a
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,20 @@
+.. asdsd documentation master file, created by
+   sphinx-quickstart on Fri Jul 14 02:13:49 2023.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to asdsd's documentation!
+=================================
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000..8084272
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,35 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+	echo.
+	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+	echo.installed, then set the SPHINXBUILD environment variable to point
+	echo.to the full path of the 'sphinx-build' executable. Alternatively you
+	echo.may add the Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.https://www.sphinx-doc.org/
+	exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+
+:end
+popd
diff --git a/docs/source/modules.rst b/docs/source/modules.rst
new file mode 100644
index 0000000..e9ff8ac
--- /dev/null
+++ b/docs/source/modules.rst
@@ -0,0 +1,7 @@
+src
+===
+
+.. toctree::
+   :maxdepth: 4
+
+   src
diff --git a/docs/source/src.rst b/docs/source/src.rst
new file mode 100644
index 0000000..ba434d4
--- /dev/null
+++ b/docs/source/src.rst
@@ -0,0 +1,45 @@
+src package
+===========
+
+Submodules
+----------
+
+src.Dataset module
+------------------
+
+.. automodule:: src.Dataset
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.Plotter module
+------------------
+
+.. automodule:: src.Plotter
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.test\_dataset module
+------------------------
+
+.. automodule:: src.test_dataset
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+src.test\_plotter module
+------------------------
+
+.. automodule:: src.test_plotter
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: src
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/src/Dataset.py b/src/Dataset.py
index 6d2b92a..6fee9ca 100644
--- a/src/Dataset.py
+++ b/src/Dataset.py
@@ -187,7 +187,7 @@ class Dataset:
         """Get the combined anxiety score, as a column.
         This score is based on the GAN, SPIN and SWL metrics.
         Each of the three columns are first normalised,
-          then the mean is returned.
+        then the mean is returned.
 
         Args:
             dataframe (pd.DataFrame): the dataframe.
diff --git a/src/test_dataset.py b/src/test_dataset.py
index 87d66df..1fd5853 100644
--- a/src/test_dataset.py
+++ b/src/test_dataset.py
@@ -13,6 +13,11 @@ this_file_dir = Path(__file__).parent
 
 @pytest.fixture
 def the_dataset() -> Dataset:
+    """Returns the initialised Dataset instance as a fixture.
+
+    Returns:
+        Dataset: the initialised Dataset.
+    """
     dataset = Dataset(str(this_file_dir / "../data/GamingStudy_data.csv"))
     return dataset
 
diff --git a/test_package.egg-info/PKG-INFO b/test_package.egg-info/PKG-INFO
new file mode 100644
index 0000000..37383eb
--- /dev/null
+++ b/test_package.egg-info/PKG-INFO
@@ -0,0 +1,5 @@
+Metadata-Version: 2.1
+Name: test-package
+Version: 0.1.0
+Author: me
+License-File: LICENSE.txt
diff --git a/test_package.egg-info/SOURCES.txt b/test_package.egg-info/SOURCES.txt
new file mode 100644
index 0000000..e69de29
diff --git a/test_package.egg-info/dependency_links.txt b/test_package.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/test_package.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/test_package.egg-info/requires.txt b/test_package.egg-info/requires.txt
new file mode 100644
index 0000000..6a5762e
--- /dev/null
+++ b/test_package.egg-info/requires.txt
@@ -0,0 +1,3 @@
+matplotlib
+pandas
+pytest
diff --git a/test_package.egg-info/top_level.txt b/test_package.egg-info/top_level.txt
new file mode 100644
index 0000000..59c251e
--- /dev/null
+++ b/test_package.egg-info/top_level.txt
@@ -0,0 +1 @@
+test-package
-- 
GitLab