Source code
Play here in your browser!