* Derived from code by Markus Schirmer, TU Berlin.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* Derived from code by Markus Schirmer, TU Berlin.
*
* Permission to use, copy, modify, distribute, and sell this software and its