47815edcfa
Hopefully there are enough comments and docs in this that it makes sense on its own.
0 lines
Python
0 lines
Python