Apache Flex
Copyright 2014 The Apache Software Foundation

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

The org.apache.flex.crypto.MD5Stream.as file was originally
the com.adobe.crypto.MD5Stream.as file available on code.google.com
and Copyright Adobe Systems Inc. It was almost completely
re-written by inlining most functions to improve performance.
