<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--
#**************************************************************
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#
#**************************************************************
 -->
<html>
<head>
  <title>Apache OpenOffice %PRODUCT_RELEASE% SDK - Not supported page</title>
  <link rel="stylesheet" type="text/css" href="sdk_styles.css">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="author" content="J&uuml;rgen Schmidt">
  <meta name="created" content="2004-12-14">
</head>
<body class="sdkbody">
<table class="table1" cellpadding=0>
  <tr style="background-image:url(images/sdk_head-2.png)">
    <td colspan="3" align="left"><img src="images/sdk_head-1.png" width="800" height="120" usemap="#Map" border="0"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="nothing10" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3">
      <table class="table2">
	<tr>
	  <td>
	    <p align="center"><a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></p>
	  </td>
        </tr>
        <tr>
	  <td><img class="nothing8" src="images/nada.gif"></td>
	</tr>
	<tr>
	  <td>
	    <p class="note">This page is currently not supported!</p>
  	  </td>
  	</tr>
      </table>
    </td>
  </tr>
  <tr>
    <td colspan="3"><img class="nothing30" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td colspan="3">
      <div class="centertext">
	<p><img class="apachelogo" src="images/sdk-footer-logo.png" title="Apache Logo" alt="Apache Logo">
            Copyright &copy; 2011-2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the ASF logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.<p>
      </div>
    </td>
  </tr>
</table>
<map name="Map">
  <area shape="rect" coords="25,100,385,25" href="https://www.openoffice.org">
</map>
</body>
</html>
