=======================================================================
NOTICE file for use with, and corresponding to Section 4 of,            
the Apache License, Version 2.0, in this case for the S4 project.
=========================================================================

   This product includes software developed by
   The Apache Software Foundation (http://www.apache.org/).

   This product includes software (Jackson) developed by
   The Codehaus Foundation (http://www.codehaus.org/).

   Kryo binaries, distributed in lib/kryo-1.01.jar, developed by
   Nathan Sweet
   Copyright (c) 2008, Nathan Sweet.
   All rights reserved.

   json.org binaries
   Copyright (c) 2002 JSON.org
   Permission is hereby granted, free of charge, to any person
   obtaining a copy of this software and associated documentation
   files (the "Software"), to deal in the Software without
   restriction, including without limitation the rights to use,
   copy, modify, merge, publish, distribute, sublicense, and/or
   sell copies of the Software, and to permit persons to whom the
   Software is furnished to do so, subject to the following conditions:
   - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
   - The Software shall be used for Good, not Evil.
