############################################################################### # # All of the code below has been dedicated to the public domain by the authors. # ###############################################################################