This program is free software; you can redistribute it freely.
Use it at your own risk; there is NO WARRANTY.

Redistribution of modified versions is permitted provided that the following conditions are met:

1. All copyright & permission notices are preserved.

2.a) Only changes required for packaging or porting are made.
     or
2.b) It is clearly stated who last changed the program. The program is renamed or the version number is of the form x.y.z, where x.y is the version of the original program and z is an arbitrary suffix.
