/*
 * Written by Tianhua Han 
 *
 * Permission is granted to anyone to use this software for any purpose on
 * any computer system, and to alter it and redistribute it freely, subject
 * to the following restrictions:
 *
 * 1. The author is not responsible for the consequences of use of this 
 * software, no matter how awful, even if they arise from flaws in it.
 *
 * 2. This notice may not be removed or altered.
 */
