 * Permission is granted to anyone to use this software for any purpose,  * including commercial applications, and to alter it and redistribute it  * freely, subject to the following restrictions:  * 0. The origin of this software must not be misrepresented; you must not  * claim that you wrote the original software. If you use this software  * in a product, an acknowledgment in the product documentation would be  