org.w3c.dom.Element interface and additionally allows
 for the storage of non-textual objects via the
 getUserObject and setUserObject methods.
  This class is not intended to be used for general XML
 processing. In particular, Element nodes created
 within the Image I/O API are not compatible with those created by
 Sun's standard implementation of the org.w3.dom API.
 In particular, the implementation is tuned for simple uses and may
 not perform well for intensive processing.
 
 Namespaces are ignored in this implementation.  The terms "tag
 name" and "node name" are always considered to be synonymous.
 Note:
 The DOM Level 3 specification added a number of new methods to the
 Node, Element and Attr interfaces that are not
 of value to the IIOMetadataNode implementation or specification.
 Calling such methods on an IIOMetadataNode, or an Attr
 instance returned from an IIOMetadataNode will result in a
 DOMException being thrown.
- See Also:
- 
Field SummaryFields declared in interface org.w3c.dom.NodeATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
- 
Constructor SummaryConstructorsConstructorDescriptionConstructs an emptyIIOMetadataNode.IIOMetadataNode(String nodeName) Constructs anIIOMetadataNodewith a given node name.
- 
Method SummaryModifier and TypeMethodDescriptionappendChild(Node newChild) Adds the nodenewChildto the end of the list of children of this node.cloneNode(boolean deep) Returns a duplicate of this node.shortcompareDocumentPosition(Node other) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.getAttribute(String name) Retrieves an attribute value by name.getAttributeNode(String name) Retrieves an attribute node by name.getAttributeNodeNS(String namespaceURI, String localName) Equivalent togetAttributeNode(localName).getAttributeNS(String namespaceURI, String localName) Equivalent togetAttribute(localName).Returns aNamedNodeMapcontaining the attributes of this node.This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.Returns aNodeListthat contains all children of this node.getElementsByTagName(String name) Returns aNodeListof all descendantElementswith a given tag name, in document order.getElementsByTagNameNS(String namespaceURI, String localName) Equivalent togetElementsByTagName(localName).getFeature(String feature, String version) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.Returns the first child of this node, ornullif the node has no children.Returns the last child of this node, ornullif the node has no children.intThe number of nodes in the list.Equivalent togetNodeName.Returnsnull, since namespaces are not supported.Returns the next sibling of this node, ornullif the node has no next sibling.Returns the node name associated with this node.shortReturns the node type, which is alwaysELEMENT_NODE.Returns the value associated with this node.Returnsnull, sinceIIOMetadataNodes do not belong to anyDocument.Returns the parent of this node.Returnsnull, since namespaces are not supported.Returns the previous sibling of this node, ornullif this node has no previous sibling.This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.Equivalent togetNodeName.This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.getUserData(String key) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.Returns theObjectvalue associated with this node.booleanhasAttribute(String name) Returnstruewhen an attribute with a given name is specified on this element or has a default value,falseotherwise.booleanhasAttributeNS(String namespaceURI, String localName) Equivalent tohasAttribute(localName).booleanReturns whether this node (if it is an element) has any attributes.booleanReturnstrueif this node has child nodes.insertBefore(Node newChild, Node refChild) Inserts the nodenewChildbefore the existing child noderefChild.booleanisDefaultNamespace(String namespaceURI) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.booleanisEqualNode(Node node) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.booleanisSameNode(Node node) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.booleanisSupported(String feature, String version) Returnsfalsesince DOM features are not supported.item(int index) Returns theindexth item in the collection.lookupNamespaceURI(String prefix) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.lookupPrefix(String namespaceURI) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.voidDoes nothing, sinceIIOMetadataNodes do not containTextchildren.voidremoveAttribute(String name) Removes an attribute by name.removeAttributeNode(Attr oldAttr) Removes the specified attribute node.voidremoveAttributeNS(String namespaceURI, String localName) Equivalent toremoveAttribute(localName).removeChild(Node oldChild) Removes the child node indicated byoldChildfrom the list of children, and returns it.replaceChild(Node newChild, Node oldChild) Replaces the child nodeoldChildwithnewChildin the list of children, and returns theoldChildnode.voidsetAttribute(String name, String value) Adds a new attribute.setAttributeNode(Attr newAttr) Adds a new attribute node.setAttributeNodeNS(Attr newAttr) Equivalent tosetAttributeNode(newAttr).voidsetAttributeNS(String namespaceURI, String qualifiedName, String value) Equivalent tosetAttribute(qualifiedName, value).voidsetIdAttribute(String name, boolean isId) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.voidsetIdAttributeNode(Attr idAttr, boolean isId) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.voidsetIdAttributeNS(String namespaceURI, String localName, boolean isId) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.voidsetNodeValue(String nodeValue) Sets theStringvalue associated with this node.voidDoes nothing, since namespaces are not supported.voidsetTextContent(String textContent) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.setUserData(String key, Object data, UserDataHandler handler) This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.voidsetUserObject(Object userObject) Sets the value associated with this node.
- 
Constructor Details- 
IIOMetadataNodepublic IIOMetadataNode()Constructs an emptyIIOMetadataNode.
- 
IIOMetadataNodeConstructs anIIOMetadataNodewith a given node name.- Parameters:
- nodeName- the name of the node, as a- String.
 
 
- 
- 
Method Details- 
getNodeNameReturns the node name associated with this node.- Specified by:
- getNodeNamein interface- Node
- Returns:
- the node name, as a String.
 
- 
getNodeValueReturns the value associated with this node.- Specified by:
- getNodeValuein interface- Node
- Returns:
- the node value, as a String.
 
- 
setNodeValueSets theStringvalue associated with this node.- Specified by:
- setNodeValuein interface- Node
 
- 
getNodeTypepublic short getNodeType()Returns the node type, which is alwaysELEMENT_NODE.- Specified by:
- getNodeTypein interface- Node
- Returns:
- the shortvalueELEMENT_NODE.
 
- 
getParentNodeReturns the parent of this node. Anullvalue indicates that the node is the root of its own tree. To add a node to an existing tree, use one of theinsertBefore,replaceChild, orappendChildmethods.- Specified by:
- getParentNodein interface- Node
- Returns:
- the parent, as a Node.
- See Also:
 
- 
getChildNodesReturns aNodeListthat contains all children of this node. If there are no children, this is aNodeListcontaining no nodes.- Specified by:
- getChildNodesin interface- Node
- Returns:
- the children as a NodeList
 
- 
getFirstChildReturns the first child of this node, ornullif the node has no children.- Specified by:
- getFirstChildin interface- Node
- Returns:
- the first child, as a Node, ornull
 
- 
getLastChildReturns the last child of this node, ornullif the node has no children.- Specified by:
- getLastChildin interface- Node
- Returns:
- the last child, as a Node, ornull.
 
- 
getPreviousSiblingReturns the previous sibling of this node, ornullif this node has no previous sibling.- Specified by:
- getPreviousSiblingin interface- Node
- Returns:
- the previous sibling, as a Node, ornull.
 
- 
getNextSiblingReturns the next sibling of this node, ornullif the node has no next sibling.- Specified by:
- getNextSiblingin interface- Node
- Returns:
- the next sibling, as a Node, ornull.
 
- 
getAttributesReturns aNamedNodeMapcontaining the attributes of this node.- Specified by:
- getAttributesin interface- Node
- Returns:
- a NamedNodeMapcontaining the attributes of this node.
 
- 
getOwnerDocumentReturnsnull, sinceIIOMetadataNodes do not belong to anyDocument.- Specified by:
- getOwnerDocumentin interface- Node
- Returns:
- null.
 
- 
insertBeforeInserts the nodenewChildbefore the existing child noderefChild. IfrefChildisnull, insertnewChildat the end of the list of children.- Specified by:
- insertBeforein interface- Node
- Parameters:
- newChild- the- Nodeto insert.
- refChild- the reference- Node.
- Returns:
- the node being inserted.
- Throws:
- IllegalArgumentException- if- newChildis- null.
 
- 
replaceChildReplaces the child nodeoldChildwithnewChildin the list of children, and returns theoldChildnode.- Specified by:
- replaceChildin interface- Node
- Parameters:
- newChild- the- Nodeto insert.
- oldChild- the- Nodeto be replaced.
- Returns:
- the node replaced.
- Throws:
- IllegalArgumentException- if- newChildis- null.
 
- 
removeChildRemoves the child node indicated byoldChildfrom the list of children, and returns it.- Specified by:
- removeChildin interface- Node
- Parameters:
- oldChild- the- Nodeto be removed.
- Returns:
- the node removed.
- Throws:
- IllegalArgumentException- if- oldChildis- null.
 
- 
appendChildAdds the nodenewChildto the end of the list of children of this node.- Specified by:
- appendChildin interface- Node
- Parameters:
- newChild- the- Nodeto insert.
- Returns:
- the node added.
- Throws:
- IllegalArgumentException- if- newChildis- null.
 
- 
hasChildNodespublic boolean hasChildNodes()Returnstrueif this node has child nodes.- Specified by:
- hasChildNodesin interface- Node
- Returns:
- trueif this node has children.
 
- 
cloneNodeReturns a duplicate of this node. The duplicate node has no parent (getParentNodereturnsnull). If a shallow clone is being performed (deepisfalse), the new node will not have any children or siblings. If a deep clone is being performed, the new node will form the root of a complete cloned subtree.
- 
normalizepublic void normalize()Does nothing, sinceIIOMetadataNodes do not containTextchildren.
- 
isSupportedReturnsfalsesince DOM features are not supported.- Specified by:
- isSupportedin interface- Node
- Parameters:
- feature- a- String, which is ignored.
- version- a- String, which is ignored.
- Returns:
- false.
 
- 
getNamespaceURIReturnsnull, since namespaces are not supported.- Specified by:
- getNamespaceURIin interface- Node
- Throws:
- DOMException
 
- 
getPrefixReturnsnull, since namespaces are not supported.
- 
setPrefixDoes nothing, since namespaces are not supported.
- 
getLocalNameEquivalent togetNodeName.- Specified by:
- getLocalNamein interface- Node
- Returns:
- the node name, as a String.
 
- 
getTagNameEquivalent togetNodeName.- Specified by:
- getTagNamein interface- Element
- Returns:
- the node name, as a String
 
- 
getAttributeRetrieves an attribute value by name.- Specified by:
- getAttributein interface- Element
- Parameters:
- name- The name of the attribute to retrieve.
- Returns:
- The Attrvalue as a string, or the empty string if that attribute does not have a specified or default value.
 
- 
getAttributeNSEquivalent togetAttribute(localName).- Specified by:
- getAttributeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute to retrieve.
- localName- The local name of the attribute to retrieve.
- Returns:
- The Attrvalue as a string, or the empty string if that attribute does not have a specified or default value.
- See Also:
 
- 
setAttributeDescription copied from interface:ElementAdds a new attribute. If an attribute with that name is already present in the element, its value is changed to be that of the value parameter. This value is a simple string; it is not parsed as it is being set. So any markup (such as syntax to be recognized as an entity reference) is treated as literal text, and needs to be appropriately escaped by the implementation when it is written out. In order to assign an attribute value that contains entity references, the user must create anAttrnode plus anyTextandEntityReferencenodes, build the appropriate subtree, and usesetAttributeNodeto assign it as the value of an attribute.
 To set an attribute with a qualified name and namespace URI, use thesetAttributeNSmethod.- Specified by:
- setAttributein interface- Element
- Parameters:
- name- The name of the attribute to create or alter.
- value- Value to set in string form.
 
- 
setAttributeNSEquivalent tosetAttribute(qualifiedName, value).- Specified by:
- setAttributeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute to create or alter.
- qualifiedName- The qualified name of the attribute to create or alter.
- value- The value to set in string form.
- See Also:
 
- 
removeAttributeDescription copied from interface:ElementRemoves an attribute by name. If a default value for the removed attribute is defined in the DTD, a new attribute immediately appears with the default value as well as the corresponding namespace URI, local name, and prefix when applicable. The implementation may handle default values from other schemas similarly but applications should useDocument.normalizeDocument()to guarantee this information is up-to-date.
 If no attribute with this name is found, this method has no effect.
 To remove an attribute by local name and namespace URI, use theremoveAttributeNSmethod.- Specified by:
- removeAttributein interface- Element
- Parameters:
- name- The name of the attribute to remove.
 
- 
removeAttributeNSEquivalent toremoveAttribute(localName).- Specified by:
- removeAttributeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute to remove.
- localName- The local name of the attribute to remove.
 
- 
getAttributeNodeDescription copied from interface:ElementRetrieves an attribute node by name.
 To retrieve an attribute node by qualified name and namespace URI, use thegetAttributeNodeNSmethod.- Specified by:
- getAttributeNodein interface- Element
- Parameters:
- name- The name (- nodeName) of the attribute to retrieve.
- Returns:
- The Attrnode with the specified name (nodeName) ornullif there is no such attribute.
 
- 
getAttributeNodeNSEquivalent togetAttributeNode(localName).- Specified by:
- getAttributeNodeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute to retrieve.
- localName- The local name of the attribute to retrieve.
- Returns:
- The Attrnode with the specified attribute local name and namespace URI ornullif there is no such attribute.
- See Also:
 
- 
setAttributeNodeDescription copied from interface:ElementAdds a new attribute node. If an attribute with that name (nodeName) is already present in the element, it is replaced by the new one. Replacing an attribute node by itself has no effect.
 To add a new attribute node with a qualified name and namespace URI, use thesetAttributeNodeNSmethod.- Specified by:
- setAttributeNodein interface- Element
- Parameters:
- newAttr- The- Attrnode to add to the attribute list.
- Returns:
- If the newAttrattribute replaces an existing attribute, the replacedAttrnode is returned, otherwisenullis returned.
- Throws:
- DOMException- WRONG_DOCUMENT_ERR: Raised if- newAttrwas created from a different document than the one that created the element.
 NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
 INUSE_ATTRIBUTE_ERR: Raised if- newAttris already an attribute of another- Elementobject. The DOM user must explicitly clone- Attrnodes to re-use them in other elements.
 
- 
setAttributeNodeNSEquivalent tosetAttributeNode(newAttr).- Specified by:
- setAttributeNodeNSin interface- Element
- Parameters:
- newAttr- The- Attrnode to add to the attribute list.
- Returns:
- If the newAttrattribute replaces an existing attribute with the same local name and namespace URI, the replacedAttrnode is returned, otherwisenullis returned.
- See Also:
 
- 
removeAttributeNodeDescription copied from interface:ElementRemoves the specified attribute node. If a default value for the removedAttrnode is defined in the DTD, a new node immediately appears with the default value as well as the corresponding namespace URI, local name, and prefix when applicable. The implementation may handle default values from other schemas similarly but applications should useDocument.normalizeDocument()to guarantee this information is up-to-date.- Specified by:
- removeAttributeNodein interface- Element
- Parameters:
- oldAttr- The- Attrnode to remove from the attribute list.
- Returns:
- The Attrnode that was removed.
 
- 
getElementsByTagNameDescription copied from interface:ElementReturns aNodeListof all descendantElementswith a given tag name, in document order.- Specified by:
- getElementsByTagNamein interface- Element
- Parameters:
- name- The name of the tag to match on. The special value "*" matches all tags.
- Returns:
- A list of matching Elementnodes.
 
- 
getElementsByTagNameNSEquivalent togetElementsByTagName(localName).- Specified by:
- getElementsByTagNameNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the elements to match on. The special value "*" matches all namespaces.
- localName- The local name of the elements to match on. The special value "*" matches all local names.
- Returns:
- A new NodeListobject containing all the matchedElements.
 
- 
hasAttributespublic boolean hasAttributes()Description copied from interface:NodeReturns whether this node (if it is an element) has any attributes.- Specified by:
- hasAttributesin interface- Node
- Returns:
- Returns trueif this node has any attributes,falseotherwise.
 
- 
hasAttributeDescription copied from interface:ElementReturnstruewhen an attribute with a given name is specified on this element or has a default value,falseotherwise.- Specified by:
- hasAttributein interface- Element
- Parameters:
- name- The name of the attribute to look for.
- Returns:
- trueif an attribute with the given name is specified on this element or has a default value,- falseotherwise.
 
- 
hasAttributeNSEquivalent tohasAttribute(localName).- Specified by:
- hasAttributeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute to look for.
- localName- The local name of the attribute to look for.
- Returns:
- trueif an attribute with the given local name and namespace URI is specified or has a default value on this element,- falseotherwise.
 
- 
getLengthpublic int getLength()Description copied from interface:NodeListThe number of nodes in the list. The range of valid child node indices is 0 tolength-1inclusive.
- 
itemDescription copied from interface:NodeListReturns theindexth item in the collection. Ifindexis greater than or equal to the number of nodes in the list, this returnsnull.
- 
getUserObjectReturns theObjectvalue associated with this node.- Returns:
- the user Object.
- See Also:
 
- 
setUserObjectSets the value associated with this node.- Parameters:
- userObject- the user- Object.
- See Also:
 
- 
setIdAttributeThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- setIdAttributein interface- Element
- Parameters:
- name- The name of the attribute.
- isId- Whether the attribute is a of type ID.
- Throws:
- DOMException- always.
 
- 
setIdAttributeNSpublic void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException This DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- setIdAttributeNSin interface- Element
- Parameters:
- namespaceURI- The namespace URI of the attribute.
- localName- The local name of the attribute.
- isId- Whether the attribute is a of type ID.
- Throws:
- DOMException- always.
 
- 
setIdAttributeNodeThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- setIdAttributeNodein interface- Element
- Parameters:
- idAttr- The attribute node.
- isId- Whether the attribute is a of type ID.
- Throws:
- DOMException- always.
 
- 
getSchemaTypeInfoThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- getSchemaTypeInfoin interface- Element
- Throws:
- DOMException- always.
 
- 
setUserDataThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- setUserDatain interface- Node
- Parameters:
- key- The key to associate the object to.
- data- The object to associate to the given key, or- nullto remove any existing association to that key.
- handler- The handler to associate to that key, or- null.
- Returns:
- Returns the DOMUserDatapreviously associated to the given key on this node, ornullif there was none.
- Throws:
- DOMException- always.
 
- 
getUserDataThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- getUserDatain interface- Node
- Parameters:
- key- The key the object is associated to.
- Returns:
- Returns the DOMUserDataassociated to the given key on this node, ornullif there was none.
- Throws:
- DOMException- always.
 
- 
getFeatureThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- getFeaturein interface- Node
- Parameters:
- feature- The name of the feature requested. Note that any plus sign "+" prepended to the name of the feature will be ignored since it is not significant in the context of this method.
- version- This is the version number of the feature to test.
- Returns:
- Returns an object which implements the specialized APIs of
   the specified feature and version, if any, or nullif there is no object which implements interfaces associated with that feature. If theDOMObjectreturned by this method implements theNodeinterface, it must delegate to the primary coreNodeand not return results inconsistent with the primary coreNodesuch as attributes, childNodes, etc.
- Throws:
- DOMException- always.
 
- 
isSameNodeThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- isSameNodein interface- Node
- Parameters:
- node- The node to test against.
- Returns:
- Returns trueif the nodes are the same,falseotherwise.
- Throws:
- DOMException- always.
 
- 
isEqualNodeThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- isEqualNodein interface- Node
- Parameters:
- node- The node to compare equality with.
- Returns:
- Returns trueif the nodes are equal,falseotherwise.
- Throws:
- DOMException- always.
 
- 
lookupNamespaceURIThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- lookupNamespaceURIin interface- Node
- Parameters:
- prefix- The prefix to look for. If this parameter is- null, the method will return the default namespace URI if any.
- Returns:
- Returns the associated namespace URI or nullif none is found.
- Throws:
- DOMException- always.
 
- 
isDefaultNamespaceThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- isDefaultNamespacein interface- Node
- Parameters:
- namespaceURI- The namespace URI to look for.
- Returns:
- Returns trueif the specifiednamespaceURIis the default namespace,falseotherwise.
- Throws:
- DOMException- always.
 
- 
lookupPrefixThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- lookupPrefixin interface- Node
- Parameters:
- namespaceURI- The namespace URI to look for.
- Returns:
- Returns an associated namespace prefix if found or
   nullif none is found. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.
- Throws:
- DOMException- always.
 
- 
getTextContentThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- getTextContentin interface- Node
- Throws:
- DOMException- always.
 
- 
setTextContentThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- setTextContentin interface- Node
- Throws:
- DOMException- always.
 
- 
compareDocumentPositionThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- compareDocumentPositionin interface- Node
- Parameters:
- other- The node to compare against the reference node.
- Returns:
- Returns how the node is positioned relatively to the reference node.
- Throws:
- DOMException- always.
 
- 
getBaseURIThis DOM Level 3 method is not supported forIIOMetadataNodeand will throw aDOMException.- Specified by:
- getBaseURIin interface- Node
- Throws:
- DOMException- always.
 
 
-