Forked by Steve Foley

Prior authors:

Andrew Wooster (andrew@planetaryscale.com)

Ported to Python 3 by Kevin Kelley (kelleyk@kelleyk.net)
