# *************************************************************
#  
#  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.
#  
# *************************************************************
### i85263 ###
svx.SvxShape::com::sun::star::drawing::TextProperties::TextWritingMode
svx.SvxShapeConnector::com::sun::star::drawing::TextProperties::TextWritingMode
# -> disbaled in svx.sce

### i46736 ###
svx.AccessibleImageBullet
# -> disbaled in svx.sce

### i85501 ### 
svx.SvxGraphCtrlAccessibleContext
# -> disbaled in svx.sce

### i85539 ###
svx.AccessiblePresentationShape
# -> disbaled in svx.sce

### i85476 ###
svx.SvxUnoText::com::sun::star::text::XTextRangeMover

### i85478 ###
svx.SvxUnoTextRange::com::sun::star::text::XTextRange

### i35965 ###
svx.SvxGraphCtrlAccessibleContext::com::sun::star::accessibility::XAccessibleEventBroadcaster

### i85479 ###
svx.AccessiblePageShape::com::sun::star::accessibility::XAccessibleEventBroadcaster

### i85481 ###
svx.SvxUnoTextCursor::com::sun::star::beans::XMultiPropertyStates

### i58108 ###
svx.SvxUnoText::com::sun::star::text::XTextRangeCompare

### i38623 ###
svx.SvxUnoTextCursor::com::sun::star::text::XTextRange

### i73993 ###
svx.SvxUnoTextContent::com::sun::star::style::ParagraphProperties
svx.SvxUnoTextCursor::com::sun::star::style::ParagraphProperties
svx.SvxUnoTextRange::com::sun::star::style::ParagraphProperties
svx.SvxGraphicObject::com::sun::star::style::ParagraphProperties
svx.SvxShape::com::sun::star::style::ParagraphProperties
svx.SvxShapeCircle::com::sun::star::style::ParagraphProperties
svx.SvxShapeConnector::com::sun::star::style::ParagraphProperties
svx.SvxShapeDimensioning::com::sun::star::style::ParagraphProperties
svx.SvxShapePolyPolygon::com::sun::star::style::ParagraphProperties
svx.SvxShapePolyPolygonBezier::com::sun::star::style::ParagraphProperties

### i23461 ###
svx.SvxDrawPage::com::sun::star::drawing::XMasterPageTarget

### i85485 ###
svx.SvxShapeDimensioning::com::sun::star::drawing::XShape

### i58125 ###
svx.SvxGraphicObject::com::sun::star::drawing::GraphicObjectShape

### i87698 ###
svx.SvxShapeDimensioning::com::sun::star::drawing::TextProperties

### i87746 	###
svx.SvxGraphicObject
svx.SvxShapeCircle
svx.SvxShapeControl
svx.SvxShapeDimensioning
svx.SvxShapeGroup
svx.SvxShapePolyPolygon
svx.SvxShapePolyPolygonBezier

### i88543 ###
svx.SvxUnoTextRange::com::sun::star::beans::XPropertySet

### i90294 ###
svx.GraphicExporter
# -> disbaled in svx.sce

### i98339 ###
svx.AccessibleControlShape
# -> disbaled in svx.sce

### i111114 ###
svx.AccessiblePresentationOLEShape::com::sun::star::accessibility::XAccessibleComponent

### i111169 ###
svx.AccessiblePageShape::com::sun::star::accessibility::XAccessibleComponent

### i114642 ###
svx.SvxUnoTextContent::com::sun::star::style::CharacterProperties
