NOTICE: This is free software and the source code is freely available. You are free to redistribute or modify under the conditions that (1) this notice is not removed or modified in any way and (2) any modified versions of the program are also available for free. ** Absolutely no Warranty **