Apache Royale Typedefs 0.9.7
============================

No major changes in this release.

Apache Royale Typedefs 0.9.6
============================

No major changes in this release.

Apache Royale Typedefs 0.9.4
============================

No major changes in this release.

Apache Royale Typedefs 0.9.2
============================

No major changes in this release.

Apache Royale Typedefs 0.9.1
============================

No major changes in this release.
 
Apache Royale Typedefs 0.9.0
============================

Apache Royale Typedefs 0.9.0 is the first release of libraries that contain 
ActionScript class definitions for popular JavaScript Libraries like Google Closure,
JQuery and more.

The typedefs were previously released by the Apache Flex project as part of the
Apache FlexJS Compiler.  You can see RELEASE_NOTES for earlier releases in the A
pache Flex releases.

Known Issues
_____________

No known issues at this time.



Please report new issues to our bugbase at:

    https://github.com/apache/royale-asjs/issues

                                          The Apache Royale Project
                                          <http://royale.apache.org/>
