____

The binary package of Apache OpenOffice (incubating) may include
dictionary extensions that are merely aggregated for the convenience
of end users.
Basis for this aggregation is Apache JIRA issue LEGAL-117
- https://issues.apache.org/jira/browse/LEGAL-117
These parts are only included in binary form.

In the case of Apache OpenOffice these parts only get aggregated
when the configure option --with-bundled-extension-blobs or
--enable-bundled-dictionaries have been requested.
When you use these options make sure to add the license here:

