<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 *
 * 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.
 *
 ***********************************************************-->

<oor:node xmlns:oor="http://openoffice.org/2001/registry"
             xmlns:xs="http://www.w3.org/2001/XMLSchema"
	     oor:name="Addons" oor:package="org.openoffice.Office">
<node oor:name="AddonUI">
 <node oor:name="AddonMenu">
  <node oor:name="org.openoffice.comp.pyuno.demo.HelloWorld" oor:op="replace">
   <prop oor:name="URL" oor:type="xs:string">
     <value>service:org.openoffice.comp.pyuno.demo.HelloWorld?insert</value>
   </prop>
   <prop oor:name="ImageIdentifier" oor:type="xs:string">
    <value>private:image/3216</value>
   </prop>
   <prop oor:name="Title" oor:type="xs:string">
   <value xml:lang="x-no-translate">Insert Hello World</value>
   <value xml:lang="en-US">Insert Hello World</value>
   </prop>
  </node>
 </node>
</node>
</oor:node>
