Cleanup
authorSebastian Brannstrom <sebastianb@symbian.org>
Wed, 18 Nov 2009 14:00:16 +0000
changeset 12 d2f4d301e581
parent 11 b61dd9190c0e
child 13 32a0da1099d8
Cleanup
.DS_Store
scripts/.DS_Store
scripts/python/.DS_Store
scripts/python/BeautifulSoup.py
scripts/python/findpackage.py
scripts/python/findpackage/BeautifulSoup.py
scripts/python/findpackage/BeautifulSoup.pyc
scripts/python/findpackage/findpackage.py
scripts/python/ispublic/ispublic.py
scripts/python/ispublic/symbian_2_public_api_list.txt
Binary file .DS_Store has changed
Binary file scripts/.DS_Store has changed
Binary file scripts/python/.DS_Store has changed
--- a/scripts/python/BeautifulSoup.py	Wed Nov 18 12:21:26 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2000 +0,0 @@
-"""Beautiful Soup
-Elixir and Tonic
-"The Screen-Scraper's Friend"
-http://www.crummy.com/software/BeautifulSoup/
-
-Beautiful Soup parses a (possibly invalid) XML or HTML document into a
-tree representation. It provides methods and Pythonic idioms that make
-it easy to navigate, search, and modify the tree.
-
-A well-formed XML/HTML document yields a well-formed data
-structure. An ill-formed XML/HTML document yields a correspondingly
-ill-formed data structure. If your document is only locally
-well-formed, you can use this library to find and process the
-well-formed part of it.
-
-Beautiful Soup works with Python 2.2 and up. It has no external
-dependencies, but you'll have more success at converting data to UTF-8
-if you also install these three packages:
-
-* chardet, for auto-detecting character encodings
-  http://chardet.feedparser.org/
-* cjkcodecs and iconv_codec, which add more encodings to the ones supported
-  by stock Python.
-  http://cjkpython.i18n.org/
-
-Beautiful Soup defines classes for two main parsing strategies:
-
- * BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
-   language that kind of looks like XML.
-
- * BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
-   or invalid. This class has web browser-like heuristics for
-   obtaining a sensible parse tree in the face of common HTML errors.
-
-Beautiful Soup also defines a class (UnicodeDammit) for autodetecting
-the encoding of an HTML or XML document, and converting it to
-Unicode. Much of this code is taken from Mark Pilgrim's Universal Feed Parser.
-
-For more than you ever wanted to know about Beautiful Soup, see the
-documentation:
-http://www.crummy.com/software/BeautifulSoup/documentation.html
-
-Here, have some legalese:
-
-Copyright (c) 2004-2009, Leonard Richardson
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following
-    disclaimer in the documentation and/or other materials provided
-    with the distribution.
-
-  * Neither the name of the the Beautiful Soup Consortium and All
-    Night Kosher Bakery nor the names of its contributors may be
-    used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE, DAMMIT.
-
-"""
-from __future__ import generators
-
-__author__ = "Leonard Richardson (leonardr@segfault.org)"
-__version__ = "3.1.0.1"
-__copyright__ = "Copyright (c) 2004-2009 Leonard Richardson"
-__license__ = "New-style BSD"
-
-import codecs
-import markupbase
-import types
-import re
-from HTMLParser import HTMLParser, HTMLParseError
-try:
-    from htmlentitydefs import name2codepoint
-except ImportError:
-    name2codepoint = {}
-try:
-    set
-except NameError:
-    from sets import Set as set
-
-#These hacks make Beautiful Soup able to parse XML with namespaces
-markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match
-
-DEFAULT_OUTPUT_ENCODING = "utf-8"
-
-# First, the classes that represent markup elements.
-
-def sob(unicode, encoding):
-    """Returns either the given Unicode string or its encoding."""
-    if encoding is None:
-        return unicode
-    else:
-        return unicode.encode(encoding)
-
-class PageElement:
-    """Contains the navigational information for some part of the page
-    (either a tag or a piece of text)"""
-
-    def setup(self, parent=None, previous=None):
-        """Sets up the initial relations between this element and
-        other elements."""
-        self.parent = parent
-        self.previous = previous
-        self.next = None
-        self.previousSibling = None
-        self.nextSibling = None
-        if self.parent and self.parent.contents:
-            self.previousSibling = self.parent.contents[-1]
-            self.previousSibling.nextSibling = self
-
-    def replaceWith(self, replaceWith):
-        oldParent = self.parent
-        myIndex = self.parent.contents.index(self)
-        if hasattr(replaceWith, 'parent') and replaceWith.parent == self.parent:
-            # We're replacing this element with one of its siblings.
-            index = self.parent.contents.index(replaceWith)
-            if index and index < myIndex:
-                # Furthermore, it comes before this element. That
-                # means that when we extract it, the index of this
-                # element will change.
-                myIndex = myIndex - 1
-        self.extract()
-        oldParent.insert(myIndex, replaceWith)
-
-    def extract(self):
-        """Destructively rips this element out of the tree."""
-        if self.parent:
-            try:
-                self.parent.contents.remove(self)
-            except ValueError:
-                pass
-
-        #Find the two elements that would be next to each other if
-        #this element (and any children) hadn't been parsed. Connect
-        #the two.
-        lastChild = self._lastRecursiveChild()
-        nextElement = lastChild.next
-
-        if self.previous:
-            self.previous.next = nextElement
-        if nextElement:
-            nextElement.previous = self.previous
-        self.previous = None
-        lastChild.next = None
-
-        self.parent = None
-        if self.previousSibling:
-            self.previousSibling.nextSibling = self.nextSibling
-        if self.nextSibling:
-            self.nextSibling.previousSibling = self.previousSibling
-        self.previousSibling = self.nextSibling = None
-        return self
-
-    def _lastRecursiveChild(self):
-        "Finds the last element beneath this object to be parsed."
-        lastChild = self
-        while hasattr(lastChild, 'contents') and lastChild.contents:
-            lastChild = lastChild.contents[-1]
-        return lastChild
-
-    def insert(self, position, newChild):
-        if (isinstance(newChild, basestring)
-            or isinstance(newChild, unicode)) \
-            and not isinstance(newChild, NavigableString):
-            newChild = NavigableString(newChild)
-
-        position =  min(position, len(self.contents))
-        if hasattr(newChild, 'parent') and newChild.parent != None:
-            # We're 'inserting' an element that's already one
-            # of this object's children.
-            if newChild.parent == self:
-                index = self.find(newChild)
-                if index and index < position:
-                    # Furthermore we're moving it further down the
-                    # list of this object's children. That means that
-                    # when we extract this element, our target index
-                    # will jump down one.
-                    position = position - 1
-            newChild.extract()
-
-        newChild.parent = self
-        previousChild = None
-        if position == 0:
-            newChild.previousSibling = None
-            newChild.previous = self
-        else:
-            previousChild = self.contents[position-1]
-            newChild.previousSibling = previousChild
-            newChild.previousSibling.nextSibling = newChild
-            newChild.previous = previousChild._lastRecursiveChild()
-        if newChild.previous:
-            newChild.previous.next = newChild
-
-        newChildsLastElement = newChild._lastRecursiveChild()
-
-        if position >= len(self.contents):
-            newChild.nextSibling = None
-
-            parent = self
-            parentsNextSibling = None
-            while not parentsNextSibling:
-                parentsNextSibling = parent.nextSibling
-                parent = parent.parent
-                if not parent: # This is the last element in the document.
-                    break
-            if parentsNextSibling:
-                newChildsLastElement.next = parentsNextSibling
-            else:
-                newChildsLastElement.next = None
-        else:
-            nextChild = self.contents[position]
-            newChild.nextSibling = nextChild
-            if newChild.nextSibling:
-                newChild.nextSibling.previousSibling = newChild
-            newChildsLastElement.next = nextChild
-
-        if newChildsLastElement.next:
-            newChildsLastElement.next.previous = newChildsLastElement
-        self.contents.insert(position, newChild)
-
-    def append(self, tag):
-        """Appends the given tag to the contents of this tag."""
-        self.insert(len(self.contents), tag)
-
-    def findNext(self, name=None, attrs={}, text=None, **kwargs):
-        """Returns the first item that matches the given criteria and
-        appears after this Tag in the document."""
-        return self._findOne(self.findAllNext, name, attrs, text, **kwargs)
-
-    def findAllNext(self, name=None, attrs={}, text=None, limit=None,
-                    **kwargs):
-        """Returns all items that match the given criteria and appear
-        after this Tag in the document."""
-        return self._findAll(name, attrs, text, limit, self.nextGenerator,
-                             **kwargs)
-
-    def findNextSibling(self, name=None, attrs={}, text=None, **kwargs):
-        """Returns the closest sibling to this Tag that matches the
-        given criteria and appears after this Tag in the document."""
-        return self._findOne(self.findNextSiblings, name, attrs, text,
-                             **kwargs)
-
-    def findNextSiblings(self, name=None, attrs={}, text=None, limit=None,
-                         **kwargs):
-        """Returns the siblings of this Tag that match the given
-        criteria and appear after this Tag in the document."""
-        return self._findAll(name, attrs, text, limit,
-                             self.nextSiblingGenerator, **kwargs)
-    fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x
-
-    def findPrevious(self, name=None, attrs={}, text=None, **kwargs):
-        """Returns the first item that matches the given criteria and
-        appears before this Tag in the document."""
-        return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs)
-
-    def findAllPrevious(self, name=None, attrs={}, text=None, limit=None,
-                        **kwargs):
-        """Returns all items that match the given criteria and appear
-        before this Tag in the document."""
-        return self._findAll(name, attrs, text, limit, self.previousGenerator,
-                           **kwargs)
-    fetchPrevious = findAllPrevious # Compatibility with pre-3.x
-
-    def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs):
-        """Returns the closest sibling to this Tag that matches the
-        given criteria and appears before this Tag in the document."""
-        return self._findOne(self.findPreviousSiblings, name, attrs, text,
-                             **kwargs)
-
-    def findPreviousSiblings(self, name=None, attrs={}, text=None,
-                             limit=None, **kwargs):
-        """Returns the siblings of this Tag that match the given
-        criteria and appear before this Tag in the document."""
-        return self._findAll(name, attrs, text, limit,
-                             self.previousSiblingGenerator, **kwargs)
-    fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x
-
-    def findParent(self, name=None, attrs={}, **kwargs):
-        """Returns the closest parent of this Tag that matches the given
-        criteria."""
-        # NOTE: We can't use _findOne because findParents takes a different
-        # set of arguments.
-        r = None
-        l = self.findParents(name, attrs, 1)
-        if l:
-            r = l[0]
-        return r
-
-    def findParents(self, name=None, attrs={}, limit=None, **kwargs):
-        """Returns the parents of this Tag that match the given
-        criteria."""
-
-        return self._findAll(name, attrs, None, limit, self.parentGenerator,
-                             **kwargs)
-    fetchParents = findParents # Compatibility with pre-3.x
-
-    #These methods do the real heavy lifting.
-
-    def _findOne(self, method, name, attrs, text, **kwargs):
-        r = None
-        l = method(name, attrs, text, 1, **kwargs)
-        if l:
-            r = l[0]
-        return r
-
-    def _findAll(self, name, attrs, text, limit, generator, **kwargs):
-        "Iterates over a generator looking for things that match."
-
-        if isinstance(name, SoupStrainer):
-            strainer = name
-        else:
-            # Build a SoupStrainer
-            strainer = SoupStrainer(name, attrs, text, **kwargs)
-        results = ResultSet(strainer)
-        g = generator()
-        while True:
-            try:
-                i = g.next()
-            except StopIteration:
-                break
-            if i:
-                found = strainer.search(i)
-                if found:
-                    results.append(found)
-                    if limit and len(results) >= limit:
-                        break
-        return results
-
-    #These Generators can be used to navigate starting from both
-    #NavigableStrings and Tags.
-    def nextGenerator(self):
-        i = self
-        while i:
-            i = i.next
-            yield i
-
-    def nextSiblingGenerator(self):
-        i = self
-        while i:
-            i = i.nextSibling
-            yield i
-
-    def previousGenerator(self):
-        i = self
-        while i:
-            i = i.previous
-            yield i
-
-    def previousSiblingGenerator(self):
-        i = self
-        while i:
-            i = i.previousSibling
-            yield i
-
-    def parentGenerator(self):
-        i = self
-        while i:
-            i = i.parent
-            yield i
-
-    # Utility methods
-    def substituteEncoding(self, str, encoding=None):
-        encoding = encoding or "utf-8"
-        return str.replace("%SOUP-ENCODING%", encoding)
-
-    def toEncoding(self, s, encoding=None):
-        """Encodes an object to a string in some encoding, or to Unicode.
-        ."""
-        if isinstance(s, unicode):
-            if encoding:
-                s = s.encode(encoding)
-        elif isinstance(s, str):
-            if encoding:
-                s = s.encode(encoding)
-            else:
-                s = unicode(s)
-        else:
-            if encoding:
-                s  = self.toEncoding(str(s), encoding)
-            else:
-                s = unicode(s)
-        return s
-
-class NavigableString(unicode, PageElement):
-
-    def __new__(cls, value):
-        """Create a new NavigableString.
-
-        When unpickling a NavigableString, this method is called with
-        the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
-        passed in to the superclass's __new__ or the superclass won't know
-        how to handle non-ASCII characters.
-        """
-        if isinstance(value, unicode):
-            return unicode.__new__(cls, value)
-        return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
-
-    def __getnewargs__(self):
-        return (unicode(self),)
-
-    def __getattr__(self, attr):
-        """text.string gives you text. This is for backwards
-        compatibility for Navigable*String, but for CData* it lets you
-        get the string without the CData wrapper."""
-        if attr == 'string':
-            return self
-        else:
-            raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
-
-    def encode(self, encoding=DEFAULT_OUTPUT_ENCODING):
-        return self.decode().encode(encoding)
-
-    def decodeGivenEventualEncoding(self, eventualEncoding):
-        return self
-
-class CData(NavigableString):
-
-    def decodeGivenEventualEncoding(self, eventualEncoding):
-        return u'<![CDATA[' + self + u']]>'
-
-class ProcessingInstruction(NavigableString):
-
-    def decodeGivenEventualEncoding(self, eventualEncoding):
-        output = self
-        if u'%SOUP-ENCODING%' in output:
-            output = self.substituteEncoding(output, eventualEncoding)
-        return u'<?' + output + u'?>'
-
-class Comment(NavigableString):
-    def decodeGivenEventualEncoding(self, eventualEncoding):
-        return u'<!--' + self + u'-->'
-
-class Declaration(NavigableString):
-    def decodeGivenEventualEncoding(self, eventualEncoding):
-        return u'<!' + self + u'>'
-
-class Tag(PageElement):
-
-    """Represents a found HTML tag with its attributes and contents."""
-
-    def _invert(h):
-        "Cheap function to invert a hash."
-        i = {}
-        for k,v in h.items():
-            i[v] = k
-        return i
-
-    XML_ENTITIES_TO_SPECIAL_CHARS = { "apos" : "'",
-                                      "quot" : '"',
-                                      "amp" : "&",
-                                      "lt" : "<",
-                                      "gt" : ">" }
-
-    XML_SPECIAL_CHARS_TO_ENTITIES = _invert(XML_ENTITIES_TO_SPECIAL_CHARS)
-
-    def _convertEntities(self, match):
-        """Used in a call to re.sub to replace HTML, XML, and numeric
-        entities with the appropriate Unicode characters. If HTML
-        entities are being converted, any unrecognized entities are
-        escaped."""
-        x = match.group(1)
-        if self.convertHTMLEntities and x in name2codepoint:
-            return unichr(name2codepoint[x])
-        elif x in self.XML_ENTITIES_TO_SPECIAL_CHARS:
-            if self.convertXMLEntities:
-                return self.XML_ENTITIES_TO_SPECIAL_CHARS[x]
-            else:
-                return u'&%s;' % x
-        elif len(x) > 0 and x[0] == '#':
-            # Handle numeric entities
-            if len(x) > 1 and x[1] == 'x':
-                return unichr(int(x[2:], 16))
-            else:
-                return unichr(int(x[1:]))
-
-        elif self.escapeUnrecognizedEntities:
-            return u'&amp;%s;' % x
-        else:
-            return u'&%s;' % x
-
-    def __init__(self, parser, name, attrs=None, parent=None,
-                 previous=None):
-        "Basic constructor."
-
-        # We don't actually store the parser object: that lets extracted
-        # chunks be garbage-collected
-        self.parserClass = parser.__class__
-        self.isSelfClosing = parser.isSelfClosingTag(name)
-        self.name = name
-        if attrs == None:
-            attrs = []
-        self.attrs = attrs
-        self.contents = []
-        self.setup(parent, previous)
-        self.hidden = False
-        self.containsSubstitutions = False
-        self.convertHTMLEntities = parser.convertHTMLEntities
-        self.convertXMLEntities = parser.convertXMLEntities
-        self.escapeUnrecognizedEntities = parser.escapeUnrecognizedEntities
-
-        def convert(kval):
-            "Converts HTML, XML and numeric entities in the attribute value."
-            k, val = kval
-            if val is None:
-                return kval
-            return (k, re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);",
-                              self._convertEntities, val))
-        self.attrs = map(convert, self.attrs)
-
-    def get(self, key, default=None):
-        """Returns the value of the 'key' attribute for the tag, or
-        the value given for 'default' if it doesn't have that
-        attribute."""
-        return self._getAttrMap().get(key, default)
-
-    def has_key(self, key):
-        return self._getAttrMap().has_key(key)
-
-    def __getitem__(self, key):
-        """tag[key] returns the value of the 'key' attribute for the tag,
-        and throws an exception if it's not there."""
-        return self._getAttrMap()[key]
-
-    def __iter__(self):
-        "Iterating over a tag iterates over its contents."
-        return iter(self.contents)
-
-    def __len__(self):
-        "The length of a tag is the length of its list of contents."
-        return len(self.contents)
-
-    def __contains__(self, x):
-        return x in self.contents
-
-    def __nonzero__(self):
-        "A tag is non-None even if it has no contents."
-        return True
-
-    def __setitem__(self, key, value):
-        """Setting tag[key] sets the value of the 'key' attribute for the
-        tag."""
-        self._getAttrMap()
-        self.attrMap[key] = value
-        found = False
-        for i in range(0, len(self.attrs)):
-            if self.attrs[i][0] == key:
-                self.attrs[i] = (key, value)
-                found = True
-        if not found:
-            self.attrs.append((key, value))
-        self._getAttrMap()[key] = value
-
-    def __delitem__(self, key):
-        "Deleting tag[key] deletes all 'key' attributes for the tag."
-        for item in self.attrs:
-            if item[0] == key:
-                self.attrs.remove(item)
-                #We don't break because bad HTML can define the same
-                #attribute multiple times.
-            self._getAttrMap()
-            if self.attrMap.has_key(key):
-                del self.attrMap[key]
-
-    def __call__(self, *args, **kwargs):
-        """Calling a tag like a function is the same as calling its
-        findAll() method. Eg. tag('a') returns a list of all the A tags
-        found within this tag."""
-        return apply(self.findAll, args, kwargs)
-
-    def __getattr__(self, tag):
-        #print "Getattr %s.%s" % (self.__class__, tag)
-        if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
-            return self.find(tag[:-3])
-        elif tag.find('__') != 0:
-            return self.find(tag)
-        raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__, tag)
-
-    def __eq__(self, other):
-        """Returns true iff this tag has the same name, the same attributes,
-        and the same contents (recursively) as the given tag.
-
-        NOTE: right now this will return false if two tags have the
-        same attributes in a different order. Should this be fixed?"""
-        if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
-            return False
-        for i in range(0, len(self.contents)):
-            if self.contents[i] != other.contents[i]:
-                return False
-        return True
-
-    def __ne__(self, other):
-        """Returns true iff this tag is not identical to the other tag,
-        as defined in __eq__."""
-        return not self == other
-
-    def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
-        """Renders this tag as a string."""
-        return self.decode(eventualEncoding=encoding)
-
-    BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|"
-                                           + "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)"
-                                           + ")")
-
-    def _sub_entity(self, x):
-        """Used with a regular expression to substitute the
-        appropriate XML entity for an XML special character."""
-        return "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";"
-
-    def __unicode__(self):
-        return self.decode()
-
-    def __str__(self):
-        return self.encode()
-
-    def encode(self, encoding=DEFAULT_OUTPUT_ENCODING,
-               prettyPrint=False, indentLevel=0):
-        return self.decode(prettyPrint, indentLevel, encoding).encode(encoding)
-
-    def decode(self, prettyPrint=False, indentLevel=0,
-               eventualEncoding=DEFAULT_OUTPUT_ENCODING):
-        """Returns a string or Unicode representation of this tag and
-        its contents. To get Unicode, pass None for encoding."""
-
-        attrs = []
-        if self.attrs:
-            for key, val in self.attrs:
-                fmt = '%s="%s"'
-                if isString(val):
-                    if (self.containsSubstitutions
-                        and eventualEncoding is not None
-                        and '%SOUP-ENCODING%' in val):
-                        val = self.substituteEncoding(val, eventualEncoding)
-
-                    # The attribute value either:
-                    #
-                    # * Contains no embedded double quotes or single quotes.
-                    #   No problem: we enclose it in double quotes.
-                    # * Contains embedded single quotes. No problem:
-                    #   double quotes work here too.
-                    # * Contains embedded double quotes. No problem:
-                    #   we enclose it in single quotes.
-                    # * Embeds both single _and_ double quotes. This
-                    #   can't happen naturally, but it can happen if
-                    #   you modify an attribute value after parsing
-                    #   the document. Now we have a bit of a
-                    #   problem. We solve it by enclosing the
-                    #   attribute in single quotes, and escaping any
-                    #   embedded single quotes to XML entities.
-                    if '"' in val:
-                        fmt = "%s='%s'"
-                        if "'" in val:
-                            # TODO: replace with apos when
-                            # appropriate.
-                            val = val.replace("'", "&squot;")
-
-                    # Now we're okay w/r/t quotes. But the attribute
-                    # value might also contain angle brackets, or
-                    # ampersands that aren't part of entities. We need
-                    # to escape those to XML entities too.
-                    val = self.BARE_AMPERSAND_OR_BRACKET.sub(self._sub_entity, val)
-                if val is None:
-                    # Handle boolean attributes.
-                    decoded = key
-                else:
-                    decoded = fmt % (key, val)
-                attrs.append(decoded)
-        close = ''
-        closeTag = ''
-        if self.isSelfClosing:
-            close = ' /'
-        else:
-            closeTag = '</%s>' % self.name
-
-        indentTag, indentContents = 0, 0
-        if prettyPrint:
-            indentTag = indentLevel
-            space = (' ' * (indentTag-1))
-            indentContents = indentTag + 1
-        contents = self.decodeContents(prettyPrint, indentContents,
-                                       eventualEncoding)
-        if self.hidden:
-            s = contents
-        else:
-            s = []
-            attributeString = ''
-            if attrs:
-                attributeString = ' ' + ' '.join(attrs)
-            if prettyPrint:
-                s.append(space)
-            s.append('<%s%s%s>' % (self.name, attributeString, close))
-            if prettyPrint:
-                s.append("\n")
-            s.append(contents)
-            if prettyPrint and contents and contents[-1] != "\n":
-                s.append("\n")
-            if prettyPrint and closeTag:
-                s.append(space)
-            s.append(closeTag)
-            if prettyPrint and closeTag and self.nextSibling:
-                s.append("\n")
-            s = ''.join(s)
-        return s
-
-    def decompose(self):
-        """Recursively destroys the contents of this tree."""
-        contents = [i for i in self.contents]
-        for i in contents:
-            if isinstance(i, Tag):
-                i.decompose()
-            else:
-                i.extract()
-        self.extract()
-
-    def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING):
-        return self.encode(encoding, True)
-
-    def encodeContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
-                       prettyPrint=False, indentLevel=0):
-        return self.decodeContents(prettyPrint, indentLevel).encode(encoding)
-
-    def decodeContents(self, prettyPrint=False, indentLevel=0,
-                       eventualEncoding=DEFAULT_OUTPUT_ENCODING):
-        """Renders the contents of this tag as a string in the given
-        encoding. If encoding is None, returns a Unicode string.."""
-        s=[]
-        for c in self:
-            text = None
-            if isinstance(c, NavigableString):
-                text = c.decodeGivenEventualEncoding(eventualEncoding)
-            elif isinstance(c, Tag):
-                s.append(c.decode(prettyPrint, indentLevel, eventualEncoding))
-            if text and prettyPrint:
-                text = text.strip()
-            if text:
-                if prettyPrint:
-                    s.append(" " * (indentLevel-1))
-                s.append(text)
-                if prettyPrint:
-                    s.append("\n")
-        return ''.join(s)
-
-    #Soup methods
-
-    def find(self, name=None, attrs={}, recursive=True, text=None,
-             **kwargs):
-        """Return only the first child of this Tag matching the given
-        criteria."""
-        r = None
-        l = self.findAll(name, attrs, recursive, text, 1, **kwargs)
-        if l:
-            r = l[0]
-        return r
-    findChild = find
-
-    def findAll(self, name=None, attrs={}, recursive=True, text=None,
-                limit=None, **kwargs):
-        """Extracts a list of Tag objects that match the given
-        criteria.  You can specify the name of the Tag and any
-        attributes you want the Tag to have.
-
-        The value of a key-value pair in the 'attrs' map can be a
-        string, a list of strings, a regular expression object, or a
-        callable that takes a string and returns whether or not the
-        string matches for some custom definition of 'matches'. The
-        same is true of the tag name."""
-        generator = self.recursiveChildGenerator
-        if not recursive:
-            generator = self.childGenerator
-        return self._findAll(name, attrs, text, limit, generator, **kwargs)
-    findChildren = findAll
-
-    # Pre-3.x compatibility methods. Will go away in 4.0.
-    first = find
-    fetch = findAll
-
-    def fetchText(self, text=None, recursive=True, limit=None):
-        return self.findAll(text=text, recursive=recursive, limit=limit)
-
-    def firstText(self, text=None, recursive=True):
-        return self.find(text=text, recursive=recursive)
-
-    # 3.x compatibility methods. Will go away in 4.0.
-    def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
-                       prettyPrint=False, indentLevel=0):
-        if encoding is None:
-            return self.decodeContents(prettyPrint, indentLevel, encoding)
-        else:
-            return self.encodeContents(encoding, prettyPrint, indentLevel)
-
-
-    #Private methods
-
-    def _getAttrMap(self):
-        """Initializes a map representation of this tag's attributes,
-        if not already initialized."""
-        if not getattr(self, 'attrMap'):
-            self.attrMap = {}
-            for (key, value) in self.attrs:
-                self.attrMap[key] = value
-        return self.attrMap
-
-    #Generator methods
-    def recursiveChildGenerator(self):
-        if not len(self.contents):
-            raise StopIteration
-        stopNode = self._lastRecursiveChild().next
-        current = self.contents[0]
-        while current is not stopNode:
-            yield current
-            current = current.next
-
-    def childGenerator(self):
-        if not len(self.contents):
-            raise StopIteration
-        current = self.contents[0]
-        while current:
-            yield current
-            current = current.nextSibling
-        raise StopIteration
-
-# Next, a couple classes to represent queries and their results.
-class SoupStrainer:
-    """Encapsulates a number of ways of matching a markup element (tag or
-    text)."""
-
-    def __init__(self, name=None, attrs={}, text=None, **kwargs):
-        self.name = name
-        if isString(attrs):
-            kwargs['class'] = attrs
-            attrs = None
-        if kwargs:
-            if attrs:
-                attrs = attrs.copy()
-                attrs.update(kwargs)
-            else:
-                attrs = kwargs
-        self.attrs = attrs
-        self.text = text
-
-    def __str__(self):
-        if self.text:
-            return self.text
-        else:
-            return "%s|%s" % (self.name, self.attrs)
-
-    def searchTag(self, markupName=None, markupAttrs={}):
-        found = None
-        markup = None
-        if isinstance(markupName, Tag):
-            markup = markupName
-            markupAttrs = markup
-        callFunctionWithTagData = callable(self.name) \
-                                and not isinstance(markupName, Tag)
-
-        if (not self.name) \
-               or callFunctionWithTagData \
-               or (markup and self._matches(markup, self.name)) \
-               or (not markup and self._matches(markupName, self.name)):
-            if callFunctionWithTagData:
-                match = self.name(markupName, markupAttrs)
-            else:
-                match = True
-                markupAttrMap = None
-                for attr, matchAgainst in self.attrs.items():
-                    if not markupAttrMap:
-                         if hasattr(markupAttrs, 'get'):
-                            markupAttrMap = markupAttrs
-                         else:
-                            markupAttrMap = {}
-                            for k,v in markupAttrs:
-                                markupAttrMap[k] = v
-                    attrValue = markupAttrMap.get(attr)
-                    if not self._matches(attrValue, matchAgainst):
-                        match = False
-                        break
-            if match:
-                if markup:
-                    found = markup
-                else:
-                    found = markupName
-        return found
-
-    def search(self, markup):
-        #print 'looking for %s in %s' % (self, markup)
-        found = None
-        # If given a list of items, scan it for a text element that
-        # matches.
-        if isList(markup) and not isinstance(markup, Tag):
-            for element in markup:
-                if isinstance(element, NavigableString) \
-                       and self.search(element):
-                    found = element
-                    break
-        # If it's a Tag, make sure its name or attributes match.
-        # Don't bother with Tags if we're searching for text.
-        elif isinstance(markup, Tag):
-            if not self.text:
-                found = self.searchTag(markup)
-        # If it's text, make sure the text matches.
-        elif isinstance(markup, NavigableString) or \
-                 isString(markup):
-            if self._matches(markup, self.text):
-                found = markup
-        else:
-            raise Exception, "I don't know how to match against a %s" \
-                  % markup.__class__
-        return found
-
-    def _matches(self, markup, matchAgainst):
-        #print "Matching %s against %s" % (markup, matchAgainst)
-        result = False
-        if matchAgainst == True and type(matchAgainst) == types.BooleanType:
-            result = markup != None
-        elif callable(matchAgainst):
-            result = matchAgainst(markup)
-        else:
-            #Custom match methods take the tag as an argument, but all
-            #other ways of matching match the tag name as a string.
-            if isinstance(markup, Tag):
-                markup = markup.name
-            if markup is not None and not isString(markup):
-                markup = unicode(markup)
-            #Now we know that chunk is either a string, or None.
-            if hasattr(matchAgainst, 'match'):
-                # It's a regexp object.
-                result = markup and matchAgainst.search(markup)
-            elif (isList(matchAgainst)
-                  and (markup is not None or not isString(matchAgainst))):
-                result = markup in matchAgainst
-            elif hasattr(matchAgainst, 'items'):
-                result = markup.has_key(matchAgainst)
-            elif matchAgainst and isString(markup):
-                if isinstance(markup, unicode):
-                    matchAgainst = unicode(matchAgainst)
-                else:
-                    matchAgainst = str(matchAgainst)
-
-            if not result:
-                result = matchAgainst == markup
-        return result
-
-class ResultSet(list):
-    """A ResultSet is just a list that keeps track of the SoupStrainer
-    that created it."""
-    def __init__(self, source):
-        list.__init__([])
-        self.source = source
-
-# Now, some helper functions.
-
-def isList(l):
-    """Convenience method that works with all 2.x versions of Python
-    to determine whether or not something is listlike."""
-    return ((hasattr(l, '__iter__') and not isString(l))
-            or (type(l) in (types.ListType, types.TupleType)))
-
-def isString(s):
-    """Convenience method that works with all 2.x versions of Python
-    to determine whether or not something is stringlike."""
-    try:
-        return isinstance(s, unicode) or isinstance(s, basestring)
-    except NameError:
-        return isinstance(s, str)
-
-def buildTagMap(default, *args):
-    """Turns a list of maps, lists, or scalars into a single map.
-    Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and
-    NESTING_RESET_TAGS maps out of lists and partial maps."""
-    built = {}
-    for portion in args:
-        if hasattr(portion, 'items'):
-            #It's a map. Merge it.
-            for k,v in portion.items():
-                built[k] = v
-        elif isList(portion) and not isString(portion):
-            #It's a list. Map each item to the default.
-            for k in portion:
-                built[k] = default
-        else:
-            #It's a scalar. Map it to the default.
-            built[portion] = default
-    return built
-
-# Now, the parser classes.
-
-class HTMLParserBuilder(HTMLParser):
-
-    def __init__(self, soup):
-        HTMLParser.__init__(self)
-        self.soup = soup
-
-    # We inherit feed() and reset().
-
-    def handle_starttag(self, name, attrs):
-        if name == 'meta':
-            self.soup.extractCharsetFromMeta(attrs)
-        else:
-            self.soup.unknown_starttag(name, attrs)
-
-    def handle_endtag(self, name):
-        self.soup.unknown_endtag(name)
-
-    def handle_data(self, content):
-        self.soup.handle_data(content)
-
-    def _toStringSubclass(self, text, subclass):
-        """Adds a certain piece of text to the tree as a NavigableString
-        subclass."""
-        self.soup.endData()
-        self.handle_data(text)
-        self.soup.endData(subclass)
-
-    def handle_pi(self, text):
-        """Handle a processing instruction as a ProcessingInstruction
-        object, possibly one with a %SOUP-ENCODING% slot into which an
-        encoding will be plugged later."""
-        if text[:3] == "xml":
-            text = u"xml version='1.0' encoding='%SOUP-ENCODING%'"
-        self._toStringSubclass(text, ProcessingInstruction)
-
-    def handle_comment(self, text):
-        "Handle comments as Comment objects."
-        self._toStringSubclass(text, Comment)
-
-    def handle_charref(self, ref):
-        "Handle character references as data."
-        if self.soup.convertEntities:
-            data = unichr(int(ref))
-        else:
-            data = '&#%s;' % ref
-        self.handle_data(data)
-
-    def handle_entityref(self, ref):
-        """Handle entity references as data, possibly converting known
-        HTML and/or XML entity references to the corresponding Unicode
-        characters."""
-        data = None
-        if self.soup.convertHTMLEntities:
-            try:
-                data = unichr(name2codepoint[ref])
-            except KeyError:
-                pass
-
-        if not data and self.soup.convertXMLEntities:
-                data = self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref)
-
-        if not data and self.soup.convertHTMLEntities and \
-            not self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref):
-                # TODO: We've got a problem here. We're told this is
-                # an entity reference, but it's not an XML entity
-                # reference or an HTML entity reference. Nonetheless,
-                # the logical thing to do is to pass it through as an
-                # unrecognized entity reference.
-                #
-                # Except: when the input is "&carol;" this function
-                # will be called with input "carol". When the input is
-                # "AT&T", this function will be called with input
-                # "T". We have no way of knowing whether a semicolon
-                # was present originally, so we don't know whether
-                # this is an unknown entity or just a misplaced
-                # ampersand.
-                #
-                # The more common case is a misplaced ampersand, so I
-                # escape the ampersand and omit the trailing semicolon.
-                data = "&amp;%s" % ref
-        if not data:
-            # This case is different from the one above, because we
-            # haven't already gone through a supposedly comprehensive
-            # mapping of entities to Unicode characters. We might not
-            # have gone through any mapping at all. So the chances are
-            # very high that this is a real entity, and not a
-            # misplaced ampersand.
-            data = "&%s;" % ref
-        self.handle_data(data)
-
-    def handle_decl(self, data):
-        "Handle DOCTYPEs and the like as Declaration objects."
-        self._toStringSubclass(data, Declaration)
-
-    def parse_declaration(self, i):
-        """Treat a bogus SGML declaration as raw data. Treat a CDATA
-        declaration as a CData object."""
-        j = None
-        if self.rawdata[i:i+9] == '<![CDATA[':
-             k = self.rawdata.find(']]>', i)
-             if k == -1:
-                 k = len(self.rawdata)
-             data = self.rawdata[i+9:k]
-             j = k+3
-             self._toStringSubclass(data, CData)
-        else:
-            try:
-                j = HTMLParser.parse_declaration(self, i)
-            except HTMLParseError:
-                toHandle = self.rawdata[i:]
-                self.handle_data(toHandle)
-                j = i + len(toHandle)
-        return j
-
-
-class BeautifulStoneSoup(Tag):
-
-    """This class contains the basic parser and search code. It defines
-    a parser that knows nothing about tag behavior except for the
-    following:
-
-      You can't close a tag without closing all the tags it encloses.
-      That is, "<foo><bar></foo>" actually means
-      "<foo><bar></bar></foo>".
-
-    [Another possible explanation is "<foo><bar /></foo>", but since
-    this class defines no SELF_CLOSING_TAGS, it will never use that
-    explanation.]
-
-    This class is useful for parsing XML or made-up markup languages,
-    or when BeautifulSoup makes an assumption counter to what you were
-    expecting."""
-
-    SELF_CLOSING_TAGS = {}
-    NESTABLE_TAGS = {}
-    RESET_NESTING_TAGS = {}
-    QUOTE_TAGS = {}
-    PRESERVE_WHITESPACE_TAGS = []
-
-    MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'),
-                       lambda x: x.group(1) + ' />'),
-                      (re.compile('<!\s+([^<>]*)>'),
-                       lambda x: '<!' + x.group(1) + '>')
-                      ]
-
-    ROOT_TAG_NAME = u'[document]'
-
-    HTML_ENTITIES = "html"
-    XML_ENTITIES = "xml"
-    XHTML_ENTITIES = "xhtml"
-    # TODO: This only exists for backwards-compatibility
-    ALL_ENTITIES = XHTML_ENTITIES
-
-    # Used when determining whether a text node is all whitespace and
-    # can be replaced with a single space. A text node that contains
-    # fancy Unicode spaces (usually non-breaking) should be left
-    # alone.
-    STRIP_ASCII_SPACES = { 9: None, 10: None, 12: None, 13: None, 32: None, }
-
-    def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None,
-                 markupMassage=True, smartQuotesTo=XML_ENTITIES,
-                 convertEntities=None, selfClosingTags=None, isHTML=False,
-                 builder=HTMLParserBuilder):
-        """The Soup object is initialized as the 'root tag', and the
-        provided markup (which can be a string or a file-like object)
-        is fed into the underlying parser.
-
-        HTMLParser will process most bad HTML, and the BeautifulSoup
-        class has some tricks for dealing with some HTML that kills
-        HTMLParser, but Beautiful Soup can nonetheless choke or lose data
-        if your data uses self-closing tags or declarations
-        incorrectly.
-
-        By default, Beautiful Soup uses regexes to sanitize input,
-        avoiding the vast majority of these problems. If the problems
-        don't apply to you, pass in False for markupMassage, and
-        you'll get better performance.
-
-        The default parser massage techniques fix the two most common
-        instances of invalid HTML that choke HTMLParser:
-
-         <br/> (No space between name of closing tag and tag close)
-         <! --Comment--> (Extraneous whitespace in declaration)
-
-        You can pass in a custom list of (RE object, replace method)
-        tuples to get Beautiful Soup to scrub your input the way you
-        want."""
-
-        self.parseOnlyThese = parseOnlyThese
-        self.fromEncoding = fromEncoding
-        self.smartQuotesTo = smartQuotesTo
-        self.convertEntities = convertEntities
-        # Set the rules for how we'll deal with the entities we
-        # encounter
-        if self.convertEntities:
-            # It doesn't make sense to convert encoded characters to
-            # entities even while you're converting entities to Unicode.
-            # Just convert it all to Unicode.
-            self.smartQuotesTo = None
-            if convertEntities == self.HTML_ENTITIES:
-                self.convertXMLEntities = False
-                self.convertHTMLEntities = True
-                self.escapeUnrecognizedEntities = True
-            elif convertEntities == self.XHTML_ENTITIES:
-                self.convertXMLEntities = True
-                self.convertHTMLEntities = True
-                self.escapeUnrecognizedEntities = False
-            elif convertEntities == self.XML_ENTITIES:
-                self.convertXMLEntities = True
-                self.convertHTMLEntities = False
-                self.escapeUnrecognizedEntities = False
-        else:
-            self.convertXMLEntities = False
-            self.convertHTMLEntities = False
-            self.escapeUnrecognizedEntities = False
-
-        self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags)
-        self.builder = builder(self)
-        self.reset()
-
-        if hasattr(markup, 'read'):        # It's a file-type object.
-            markup = markup.read()
-        self.markup = markup
-        self.markupMassage = markupMassage
-        try:
-            self._feed(isHTML=isHTML)
-        except StopParsing:
-            pass
-        self.markup = None                 # The markup can now be GCed.
-        self.builder = None                # So can the builder.
-
-    def _feed(self, inDocumentEncoding=None, isHTML=False):
-        # Convert the document to Unicode.
-        markup = self.markup
-        if isinstance(markup, unicode):
-            if not hasattr(self, 'originalEncoding'):
-                self.originalEncoding = None
-        else:
-            dammit = UnicodeDammit\
-                     (markup, [self.fromEncoding, inDocumentEncoding],
-                      smartQuotesTo=self.smartQuotesTo, isHTML=isHTML)
-            markup = dammit.unicode
-            self.originalEncoding = dammit.originalEncoding
-            self.declaredHTMLEncoding = dammit.declaredHTMLEncoding
-        if markup:
-            if self.markupMassage:
-                if not isList(self.markupMassage):
-                    self.markupMassage = self.MARKUP_MASSAGE
-                for fix, m in self.markupMassage:
-                    markup = fix.sub(m, markup)
-                # TODO: We get rid of markupMassage so that the
-                # soup object can be deepcopied later on. Some
-                # Python installations can't copy regexes. If anyone
-                # was relying on the existence of markupMassage, this
-                # might cause problems.
-                del(self.markupMassage)
-        self.builder.reset()
-
-        self.builder.feed(markup)
-        # Close out any unfinished strings and close all the open tags.
-        self.endData()
-        while self.currentTag.name != self.ROOT_TAG_NAME:
-            self.popTag()
-
-    def isSelfClosingTag(self, name):
-        """Returns true iff the given string is the name of a
-        self-closing tag according to this parser."""
-        return self.SELF_CLOSING_TAGS.has_key(name) \
-               or self.instanceSelfClosingTags.has_key(name)
-
-    def reset(self):
-        Tag.__init__(self, self, self.ROOT_TAG_NAME)
-        self.hidden = 1
-        self.builder.reset()
-        self.currentData = []
-        self.currentTag = None
-        self.tagStack = []
-        self.quoteStack = []
-        self.pushTag(self)
-
-    def popTag(self):
-        tag = self.tagStack.pop()
-        # Tags with just one string-owning child get the child as a
-        # 'string' property, so that soup.tag.string is shorthand for
-        # soup.tag.contents[0]
-        if len(self.currentTag.contents) == 1 and \
-           isinstance(self.currentTag.contents[0], NavigableString):
-            self.currentTag.string = self.currentTag.contents[0]
-
-        #print "Pop", tag.name
-        if self.tagStack:
-            self.currentTag = self.tagStack[-1]
-        return self.currentTag
-
-    def pushTag(self, tag):
-        #print "Push", tag.name
-        if self.currentTag:
-            self.currentTag.contents.append(tag)
-        self.tagStack.append(tag)
-        self.currentTag = self.tagStack[-1]
-
-    def endData(self, containerClass=NavigableString):
-        if self.currentData:
-            currentData = u''.join(self.currentData)
-            if (currentData.translate(self.STRIP_ASCII_SPACES) == '' and
-                not set([tag.name for tag in self.tagStack]).intersection(
-                    self.PRESERVE_WHITESPACE_TAGS)):
-                if '\n' in currentData:
-                    currentData = '\n'
-                else:
-                    currentData = ' '
-            self.currentData = []
-            if self.parseOnlyThese and len(self.tagStack) <= 1 and \
-                   (not self.parseOnlyThese.text or \
-                    not self.parseOnlyThese.search(currentData)):
-                return
-            o = containerClass(currentData)
-            o.setup(self.currentTag, self.previous)
-            if self.previous:
-                self.previous.next = o
-            self.previous = o
-            self.currentTag.contents.append(o)
-
-
-    def _popToTag(self, name, inclusivePop=True):
-        """Pops the tag stack up to and including the most recent
-        instance of the given tag. If inclusivePop is false, pops the tag
-        stack up to but *not* including the most recent instqance of
-        the given tag."""
-        #print "Popping to %s" % name
-        if name == self.ROOT_TAG_NAME:
-            return
-
-        numPops = 0
-        mostRecentTag = None
-        for i in range(len(self.tagStack)-1, 0, -1):
-            if name == self.tagStack[i].name:
-                numPops = len(self.tagStack)-i
-                break
-        if not inclusivePop:
-            numPops = numPops - 1
-
-        for i in range(0, numPops):
-            mostRecentTag = self.popTag()
-        return mostRecentTag
-
-    def _smartPop(self, name):
-
-        """We need to pop up to the previous tag of this type, unless
-        one of this tag's nesting reset triggers comes between this
-        tag and the previous tag of this type, OR unless this tag is a
-        generic nesting trigger and another generic nesting trigger
-        comes between this tag and the previous tag of this type.
-
-        Examples:
-         <p>Foo<b>Bar *<p>* should pop to 'p', not 'b'.
-         <p>Foo<table>Bar *<p>* should pop to 'table', not 'p'.
-         <p>Foo<table><tr>Bar *<p>* should pop to 'tr', not 'p'.
-
-         <li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
-         <tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
-         <td><tr><td> *<td>* should pop to 'tr', not the first 'td'
-        """
-
-        nestingResetTriggers = self.NESTABLE_TAGS.get(name)
-        isNestable = nestingResetTriggers != None
-        isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
-        popTo = None
-        inclusive = True
-        for i in range(len(self.tagStack)-1, 0, -1):
-            p = self.tagStack[i]
-            if (not p or p.name == name) and not isNestable:
-                #Non-nestable tags get popped to the top or to their
-                #last occurance.
-                popTo = name
-                break
-            if (nestingResetTriggers != None
-                and p.name in nestingResetTriggers) \
-                or (nestingResetTriggers == None and isResetNesting
-                    and self.RESET_NESTING_TAGS.has_key(p.name)):
-
-                #If we encounter one of the nesting reset triggers
-                #peculiar to this tag, or we encounter another tag
-                #that causes nesting to reset, pop up to but not
-                #including that tag.
-                popTo = p.name
-                inclusive = False
-                break
-            p = p.parent
-        if popTo:
-            self._popToTag(popTo, inclusive)
-
-    def unknown_starttag(self, name, attrs, selfClosing=0):
-        #print "Start tag %s: %s" % (name, attrs)
-        if self.quoteStack:
-            #This is not a real tag.
-            #print "<%s> is not real!" % name
-            attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs))
-            self.handle_data('<%s%s>' % (name, attrs))
-            return
-        self.endData()
-
-        if not self.isSelfClosingTag(name) and not selfClosing:
-            self._smartPop(name)
-
-        if self.parseOnlyThese and len(self.tagStack) <= 1 \
-               and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)):
-            return
-
-        tag = Tag(self, name, attrs, self.currentTag, self.previous)
-        if self.previous:
-            self.previous.next = tag
-        self.previous = tag
-        self.pushTag(tag)
-        if selfClosing or self.isSelfClosingTag(name):
-            self.popTag()
-        if name in self.QUOTE_TAGS:
-            #print "Beginning quote (%s)" % name
-            self.quoteStack.append(name)
-            self.literal = 1
-        return tag
-
-    def unknown_endtag(self, name):
-        #print "End tag %s" % name
-        if self.quoteStack and self.quoteStack[-1] != name:
-            #This is not a real end tag.
-            #print "</%s> is not real!" % name
-            self.handle_data('</%s>' % name)
-            return
-        self.endData()
-        self._popToTag(name)
-        if self.quoteStack and self.quoteStack[-1] == name:
-            self.quoteStack.pop()
-            self.literal = (len(self.quoteStack) > 0)
-
-    def handle_data(self, data):
-        self.currentData.append(data)
-
-    def extractCharsetFromMeta(self, attrs):
-        self.unknown_starttag('meta', attrs)
-
-
-class BeautifulSoup(BeautifulStoneSoup):
-
-    """This parser knows the following facts about HTML:
-
-    * Some tags have no closing tag and should be interpreted as being
-      closed as soon as they are encountered.
-
-    * The text inside some tags (ie. 'script') may contain tags which
-      are not really part of the document and which should be parsed
-      as text, not tags. If you want to parse the text as tags, you can
-      always fetch it and parse it explicitly.
-
-    * Tag nesting rules:
-
-      Most tags can't be nested at all. For instance, the occurance of
-      a <p> tag should implicitly close the previous <p> tag.
-
-       <p>Para1<p>Para2
-        should be transformed into:
-       <p>Para1</p><p>Para2
-
-      Some tags can be nested arbitrarily. For instance, the occurance
-      of a <blockquote> tag should _not_ implicitly close the previous
-      <blockquote> tag.
-
-       Alice said: <blockquote>Bob said: <blockquote>Blah
-        should NOT be transformed into:
-       Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
-
-      Some tags can be nested, but the nesting is reset by the
-      interposition of other tags. For instance, a <tr> tag should
-      implicitly close the previous <tr> tag within the same <table>,
-      but not close a <tr> tag in another table.
-
-       <table><tr>Blah<tr>Blah
-        should be transformed into:
-       <table><tr>Blah</tr><tr>Blah
-        but,
-       <tr>Blah<table><tr>Blah
-        should NOT be transformed into
-       <tr>Blah<table></tr><tr>Blah
-
-    Differing assumptions about tag nesting rules are a major source
-    of problems with the BeautifulSoup class. If BeautifulSoup is not
-    treating as nestable a tag your page author treats as nestable,
-    try ICantBelieveItsBeautifulSoup, MinimalSoup, or
-    BeautifulStoneSoup before writing your own subclass."""
-
-    def __init__(self, *args, **kwargs):
-        if not kwargs.has_key('smartQuotesTo'):
-            kwargs['smartQuotesTo'] = self.HTML_ENTITIES
-        kwargs['isHTML'] = True
-        BeautifulStoneSoup.__init__(self, *args, **kwargs)
-
-    SELF_CLOSING_TAGS = buildTagMap(None,
-                                    ['br' , 'hr', 'input', 'img', 'meta',
-                                    'spacer', 'link', 'frame', 'base'])
-
-    PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea'])
-
-    QUOTE_TAGS = {'script' : None, 'textarea' : None}
-
-    #According to the HTML standard, each of these inline tags can
-    #contain another tag of the same type. Furthermore, it's common
-    #to actually use these tags this way.
-    NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
-                            'center']
-
-    #According to the HTML standard, these block tags can contain
-    #another tag of the same type. Furthermore, it's common
-    #to actually use these tags this way.
-    NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
-
-    #Lists can contain other lists, but there are restrictions.
-    NESTABLE_LIST_TAGS = { 'ol' : [],
-                           'ul' : [],
-                           'li' : ['ul', 'ol'],
-                           'dl' : [],
-                           'dd' : ['dl'],
-                           'dt' : ['dl'] }
-
-    #Tables can contain other tables, but there are restrictions.
-    NESTABLE_TABLE_TAGS = {'table' : [],
-                           'tr' : ['table', 'tbody', 'tfoot', 'thead'],
-                           'td' : ['tr'],
-                           'th' : ['tr'],
-                           'thead' : ['table'],
-                           'tbody' : ['table'],
-                           'tfoot' : ['table'],
-                           }
-
-    NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre']
-
-    #If one of these tags is encountered, all tags up to the next tag of
-    #this type are popped.
-    RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
-                                     NON_NESTABLE_BLOCK_TAGS,
-                                     NESTABLE_LIST_TAGS,
-                                     NESTABLE_TABLE_TAGS)
-
-    NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
-                                NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
-
-    # Used to detect the charset in a META tag; see start_meta
-    CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M)
-
-    def extractCharsetFromMeta(self, attrs):
-        """Beautiful Soup can detect a charset included in a META tag,
-        try to convert the document to that charset, and re-parse the
-        document from the beginning."""
-        httpEquiv = None
-        contentType = None
-        contentTypeIndex = None
-        tagNeedsEncodingSubstitution = False
-
-        for i in range(0, len(attrs)):
-            key, value = attrs[i]
-            key = key.lower()
-            if key == 'http-equiv':
-                httpEquiv = value
-            elif key == 'content':
-                contentType = value
-                contentTypeIndex = i
-
-        if httpEquiv and contentType: # It's an interesting meta tag.
-            match = self.CHARSET_RE.search(contentType)
-            if match:
-                if (self.declaredHTMLEncoding is not None or
-                    self.originalEncoding == self.fromEncoding):
-                    # An HTML encoding was sniffed while converting
-                    # the document to Unicode, or an HTML encoding was
-                    # sniffed during a previous pass through the
-                    # document, or an encoding was specified
-                    # explicitly and it worked. Rewrite the meta tag.
-                    def rewrite(match):
-                        return match.group(1) + "%SOUP-ENCODING%"
-                    newAttr = self.CHARSET_RE.sub(rewrite, contentType)
-                    attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
-                                               newAttr)
-                    tagNeedsEncodingSubstitution = True
-                else:
-                    # This is our first pass through the document.
-                    # Go through it again with the encoding information.
-                    newCharset = match.group(3)
-                    if newCharset and newCharset != self.originalEncoding:
-                        self.declaredHTMLEncoding = newCharset
-                        self._feed(self.declaredHTMLEncoding)
-                        raise StopParsing
-                    pass
-        tag = self.unknown_starttag("meta", attrs)
-        if tag and tagNeedsEncodingSubstitution:
-            tag.containsSubstitutions = True
-
-
-class StopParsing(Exception):
-    pass
-
-class ICantBelieveItsBeautifulSoup(BeautifulSoup):
-
-    """The BeautifulSoup class is oriented towards skipping over
-    common HTML errors like unclosed tags. However, sometimes it makes
-    errors of its own. For instance, consider this fragment:
-
-     <b>Foo<b>Bar</b></b>
-
-    This is perfectly valid (if bizarre) HTML. However, the
-    BeautifulSoup class will implicitly close the first b tag when it
-    encounters the second 'b'. It will think the author wrote
-    "<b>Foo<b>Bar", and didn't close the first 'b' tag, because
-    there's no real-world reason to bold something that's already
-    bold. When it encounters '</b></b>' it will close two more 'b'
-    tags, for a grand total of three tags closed instead of two. This
-    can throw off the rest of your document structure. The same is
-    true of a number of other tags, listed below.
-
-    It's much more common for someone to forget to close a 'b' tag
-    than to actually use nested 'b' tags, and the BeautifulSoup class
-    handles the common case. This class handles the not-co-common
-    case: where you can't believe someone wrote what they did, but
-    it's valid HTML and BeautifulSoup screwed up by assuming it
-    wouldn't be."""
-
-    I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
-     ['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
-      'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
-      'big']
-
-    I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript']
-
-    NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
-                                I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
-                                I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
-
-class MinimalSoup(BeautifulSoup):
-    """The MinimalSoup class is for parsing HTML that contains
-    pathologically bad markup. It makes no assumptions about tag
-    nesting, but it does know which tags are self-closing, that
-    <script> tags contain Javascript and should not be parsed, that
-    META tags may contain encoding information, and so on.
-
-    This also makes it better for subclassing than BeautifulStoneSoup
-    or BeautifulSoup."""
-
-    RESET_NESTING_TAGS = buildTagMap('noscript')
-    NESTABLE_TAGS = {}
-
-class BeautifulSOAP(BeautifulStoneSoup):
-    """This class will push a tag with only a single string child into
-    the tag's parent as an attribute. The attribute's name is the tag
-    name, and the value is the string child. An example should give
-    the flavor of the change:
-
-    <foo><bar>baz</bar></foo>
-     =>
-    <foo bar="baz"><bar>baz</bar></foo>
-
-    You can then access fooTag['bar'] instead of fooTag.barTag.string.
-
-    This is, of course, useful for scraping structures that tend to
-    use subelements instead of attributes, such as SOAP messages. Note
-    that it modifies its input, so don't print the modified version
-    out.
-
-    I'm not sure how many people really want to use this class; let me
-    know if you do. Mainly I like the name."""
-
-    def popTag(self):
-        if len(self.tagStack) > 1:
-            tag = self.tagStack[-1]
-            parent = self.tagStack[-2]
-            parent._getAttrMap()
-            if (isinstance(tag, Tag) and len(tag.contents) == 1 and
-                isinstance(tag.contents[0], NavigableString) and
-                not parent.attrMap.has_key(tag.name)):
-                parent[tag.name] = tag.contents[0]
-        BeautifulStoneSoup.popTag(self)
-
-#Enterprise class names! It has come to our attention that some people
-#think the names of the Beautiful Soup parser classes are too silly
-#and "unprofessional" for use in enterprise screen-scraping. We feel
-#your pain! For such-minded folk, the Beautiful Soup Consortium And
-#All-Night Kosher Bakery recommends renaming this file to
-#"RobustParser.py" (or, in cases of extreme enterprisiness,
-#"RobustParserBeanInterface.class") and using the following
-#enterprise-friendly class aliases:
-class RobustXMLParser(BeautifulStoneSoup):
-    pass
-class RobustHTMLParser(BeautifulSoup):
-    pass
-class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
-    pass
-class RobustInsanelyWackAssHTMLParser(MinimalSoup):
-    pass
-class SimplifyingSOAPParser(BeautifulSOAP):
-    pass
-
-######################################################
-#
-# Bonus library: Unicode, Dammit
-#
-# This class forces XML data into a standard format (usually to UTF-8
-# or Unicode).  It is heavily based on code from Mark Pilgrim's
-# Universal Feed Parser. It does not rewrite the XML or HTML to
-# reflect a new encoding: that happens in BeautifulStoneSoup.handle_pi
-# (XML) and BeautifulSoup.start_meta (HTML).
-
-# Autodetects character encodings.
-# Download from http://chardet.feedparser.org/
-try:
-    import chardet
-#    import chardet.constants
-#    chardet.constants._debug = 1
-except ImportError:
-    chardet = None
-
-# cjkcodecs and iconv_codec make Python know about more character encodings.
-# Both are available from http://cjkpython.i18n.org/
-# They're built in if you use Python 2.4.
-try:
-    import cjkcodecs.aliases
-except ImportError:
-    pass
-try:
-    import iconv_codec
-except ImportError:
-    pass
-
-class UnicodeDammit:
-    """A class for detecting the encoding of a *ML document and
-    converting it to a Unicode string. If the source encoding is
-    windows-1252, can replace MS smart quotes with their HTML or XML
-    equivalents."""
-
-    # This dictionary maps commonly seen values for "charset" in HTML
-    # meta tags to the corresponding Python codec names. It only covers
-    # values that aren't in Python's aliases and can't be determined
-    # by the heuristics in find_codec.
-    CHARSET_ALIASES = { "macintosh" : "mac-roman",
-                        "x-sjis" : "shift-jis" }
-
-    def __init__(self, markup, overrideEncodings=[],
-                 smartQuotesTo='xml', isHTML=False):
-        self.declaredHTMLEncoding = None
-        self.markup, documentEncoding, sniffedEncoding = \
-                     self._detectEncoding(markup, isHTML)
-        self.smartQuotesTo = smartQuotesTo
-        self.triedEncodings = []
-        if markup == '' or isinstance(markup, unicode):
-            self.originalEncoding = None
-            self.unicode = unicode(markup)
-            return
-
-        u = None
-        for proposedEncoding in overrideEncodings:
-            u = self._convertFrom(proposedEncoding)
-            if u: break
-        if not u:
-            for proposedEncoding in (documentEncoding, sniffedEncoding):
-                u = self._convertFrom(proposedEncoding)
-                if u: break
-
-        # If no luck and we have auto-detection library, try that:
-        if not u and chardet and not isinstance(self.markup, unicode):
-            u = self._convertFrom(chardet.detect(self.markup)['encoding'])
-
-        # As a last resort, try utf-8 and windows-1252:
-        if not u:
-            for proposed_encoding in ("utf-8", "windows-1252"):
-                u = self._convertFrom(proposed_encoding)
-                if u: break
-
-        self.unicode = u
-        if not u: self.originalEncoding = None
-
-    def _subMSChar(self, match):
-        """Changes a MS smart quote character to an XML or HTML
-        entity."""
-        orig = match.group(1)
-        sub = self.MS_CHARS.get(orig)
-        if type(sub) == types.TupleType:
-            if self.smartQuotesTo == 'xml':
-                sub = '&#x'.encode() + sub[1].encode() + ';'.encode()
-            else:
-                sub = '&'.encode() + sub[0].encode() + ';'.encode()
-        else:
-            sub = sub.encode()
-        return sub
-
-    def _convertFrom(self, proposed):
-        proposed = self.find_codec(proposed)
-        if not proposed or proposed in self.triedEncodings:
-            return None
-        self.triedEncodings.append(proposed)
-        markup = self.markup
-
-        # Convert smart quotes to HTML if coming from an encoding
-        # that might have them.
-        if self.smartQuotesTo and proposed.lower() in("windows-1252",
-                                                      "iso-8859-1",
-                                                      "iso-8859-2"):
-            smart_quotes_re = "([\x80-\x9f])"
-            smart_quotes_compiled = re.compile(smart_quotes_re)
-            markup = smart_quotes_compiled.sub(self._subMSChar, markup)
-
-        try:
-            # print "Trying to convert document to %s" % proposed
-            u = self._toUnicode(markup, proposed)
-            self.markup = u
-            self.originalEncoding = proposed
-        except Exception, e:
-            # print "That didn't work!"
-            # print e
-            return None
-        #print "Correct encoding: %s" % proposed
-        return self.markup
-
-    def _toUnicode(self, data, encoding):
-        '''Given a string and its encoding, decodes the string into Unicode.
-        %encoding is a string recognized by encodings.aliases'''
-
-        # strip Byte Order Mark (if present)
-        if (len(data) >= 4) and (data[:2] == '\xfe\xff') \
-               and (data[2:4] != '\x00\x00'):
-            encoding = 'utf-16be'
-            data = data[2:]
-        elif (len(data) >= 4) and (data[:2] == '\xff\xfe') \
-                 and (data[2:4] != '\x00\x00'):
-            encoding = 'utf-16le'
-            data = data[2:]
-        elif data[:3] == '\xef\xbb\xbf':
-            encoding = 'utf-8'
-            data = data[3:]
-        elif data[:4] == '\x00\x00\xfe\xff':
-            encoding = 'utf-32be'
-            data = data[4:]
-        elif data[:4] == '\xff\xfe\x00\x00':
-            encoding = 'utf-32le'
-            data = data[4:]
-        newdata = unicode(data, encoding)
-        return newdata
-
-    def _detectEncoding(self, xml_data, isHTML=False):
-        """Given a document, tries to detect its XML encoding."""
-        xml_encoding = sniffed_xml_encoding = None
-        try:
-            if xml_data[:4] == '\x4c\x6f\xa7\x94':
-                # EBCDIC
-                xml_data = self._ebcdic_to_ascii(xml_data)
-            elif xml_data[:4] == '\x00\x3c\x00\x3f':
-                # UTF-16BE
-                sniffed_xml_encoding = 'utf-16be'
-                xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
-            elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') \
-                     and (xml_data[2:4] != '\x00\x00'):
-                # UTF-16BE with BOM
-                sniffed_xml_encoding = 'utf-16be'
-                xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
-            elif xml_data[:4] == '\x3c\x00\x3f\x00':
-                # UTF-16LE
-                sniffed_xml_encoding = 'utf-16le'
-                xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
-            elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and \
-                     (xml_data[2:4] != '\x00\x00'):
-                # UTF-16LE with BOM
-                sniffed_xml_encoding = 'utf-16le'
-                xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
-            elif xml_data[:4] == '\x00\x00\x00\x3c':
-                # UTF-32BE
-                sniffed_xml_encoding = 'utf-32be'
-                xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
-            elif xml_data[:4] == '\x3c\x00\x00\x00':
-                # UTF-32LE
-                sniffed_xml_encoding = 'utf-32le'
-                xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
-            elif xml_data[:4] == '\x00\x00\xfe\xff':
-                # UTF-32BE with BOM
-                sniffed_xml_encoding = 'utf-32be'
-                xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
-            elif xml_data[:4] == '\xff\xfe\x00\x00':
-                # UTF-32LE with BOM
-                sniffed_xml_encoding = 'utf-32le'
-                xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
-            elif xml_data[:3] == '\xef\xbb\xbf':
-                # UTF-8 with BOM
-                sniffed_xml_encoding = 'utf-8'
-                xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
-            else:
-                sniffed_xml_encoding = 'ascii'
-                pass
-        except:
-            xml_encoding_match = None
-        xml_encoding_re = '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode()
-        xml_encoding_match = re.compile(xml_encoding_re).match(xml_data)
-        if not xml_encoding_match and isHTML:
-            meta_re = '<\s*meta[^>]+charset=([^>]*?)[;\'">]'.encode()
-            regexp = re.compile(meta_re, re.I)
-            xml_encoding_match = regexp.search(xml_data)
-        if xml_encoding_match is not None:
-            xml_encoding = xml_encoding_match.groups()[0].decode(
-                'ascii').lower()
-            if isHTML:
-                self.declaredHTMLEncoding = xml_encoding
-            if sniffed_xml_encoding and \
-               (xml_encoding in ('iso-10646-ucs-2', 'ucs-2', 'csunicode',
-                                 'iso-10646-ucs-4', 'ucs-4', 'csucs4',
-                                 'utf-16', 'utf-32', 'utf_16', 'utf_32',
-                                 'utf16', 'u16')):
-                xml_encoding = sniffed_xml_encoding
-        return xml_data, xml_encoding, sniffed_xml_encoding
-
-
-    def find_codec(self, charset):
-        return self._codec(self.CHARSET_ALIASES.get(charset, charset)) \
-               or (charset and self._codec(charset.replace("-", ""))) \
-               or (charset and self._codec(charset.replace("-", "_"))) \
-               or charset
-
-    def _codec(self, charset):
-        if not charset: return charset
-        codec = None
-        try:
-            codecs.lookup(charset)
-            codec = charset
-        except (LookupError, ValueError):
-            pass
-        return codec
-
-    EBCDIC_TO_ASCII_MAP = None
-    def _ebcdic_to_ascii(self, s):
-        c = self.__class__
-        if not c.EBCDIC_TO_ASCII_MAP:
-            emap = (0,1,2,3,156,9,134,127,151,141,142,11,12,13,14,15,
-                    16,17,18,19,157,133,8,135,24,25,146,143,28,29,30,31,
-                    128,129,130,131,132,10,23,27,136,137,138,139,140,5,6,7,
-                    144,145,22,147,148,149,150,4,152,153,154,155,20,21,158,26,
-                    32,160,161,162,163,164,165,166,167,168,91,46,60,40,43,33,
-                    38,169,170,171,172,173,174,175,176,177,93,36,42,41,59,94,
-                    45,47,178,179,180,181,182,183,184,185,124,44,37,95,62,63,
-                    186,187,188,189,190,191,192,193,194,96,58,35,64,39,61,34,
-                    195,97,98,99,100,101,102,103,104,105,196,197,198,199,200,
-                    201,202,106,107,108,109,110,111,112,113,114,203,204,205,
-                    206,207,208,209,126,115,116,117,118,119,120,121,122,210,
-                    211,212,213,214,215,216,217,218,219,220,221,222,223,224,
-                    225,226,227,228,229,230,231,123,65,66,67,68,69,70,71,72,
-                    73,232,233,234,235,236,237,125,74,75,76,77,78,79,80,81,
-                    82,238,239,240,241,242,243,92,159,83,84,85,86,87,88,89,
-                    90,244,245,246,247,248,249,48,49,50,51,52,53,54,55,56,57,
-                    250,251,252,253,254,255)
-            import string
-            c.EBCDIC_TO_ASCII_MAP = string.maketrans( \
-            ''.join(map(chr, range(256))), ''.join(map(chr, emap)))
-        return s.translate(c.EBCDIC_TO_ASCII_MAP)
-
-    MS_CHARS = { '\x80' : ('euro', '20AC'),
-                 '\x81' : ' ',
-                 '\x82' : ('sbquo', '201A'),
-                 '\x83' : ('fnof', '192'),
-                 '\x84' : ('bdquo', '201E'),
-                 '\x85' : ('hellip', '2026'),
-                 '\x86' : ('dagger', '2020'),
-                 '\x87' : ('Dagger', '2021'),
-                 '\x88' : ('circ', '2C6'),
-                 '\x89' : ('permil', '2030'),
-                 '\x8A' : ('Scaron', '160'),
-                 '\x8B' : ('lsaquo', '2039'),
-                 '\x8C' : ('OElig', '152'),
-                 '\x8D' : '?',
-                 '\x8E' : ('#x17D', '17D'),
-                 '\x8F' : '?',
-                 '\x90' : '?',
-                 '\x91' : ('lsquo', '2018'),
-                 '\x92' : ('rsquo', '2019'),
-                 '\x93' : ('ldquo', '201C'),
-                 '\x94' : ('rdquo', '201D'),
-                 '\x95' : ('bull', '2022'),
-                 '\x96' : ('ndash', '2013'),
-                 '\x97' : ('mdash', '2014'),
-                 '\x98' : ('tilde', '2DC'),
-                 '\x99' : ('trade', '2122'),
-                 '\x9a' : ('scaron', '161'),
-                 '\x9b' : ('rsaquo', '203A'),
-                 '\x9c' : ('oelig', '153'),
-                 '\x9d' : '?',
-                 '\x9e' : ('#x17E', '17E'),
-                 '\x9f' : ('Yuml', ''),}
-
-#######################################################################
-
-
-#By default, act as an HTML pretty-printer.
-if __name__ == '__main__':
-    import sys
-    soup = BeautifulSoup(sys.stdin)
-    print soup.prettify()
--- a/scripts/python/findpackage.py	Wed Nov 18 12:21:26 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-# findpackage.py - finds which Symbian package contains a file (if any) by searching opengrok
-
-import urllib2
-import urllib
-import os.path
-import cookielib
-import sys
-import getpass
-from BeautifulSoup import BeautifulSoup
-
-user_agent = 'findpackage.py script'
-headers = { 'User-Agent' : user_agent }
-top_level_url = "http://developer.symbian.org"
-
-COOKIEFILE = 'cookies.lwp'
-# the path and filename to save your cookies in
-
-# importing cookielib worked
-urlopen = urllib2.urlopen
-Request = urllib2.Request
-cj = cookielib.LWPCookieJar()
-
-# This is a subclass of FileCookieJar
-# that has useful load and save methods
-if os.path.isfile(COOKIEFILE):
-	cj.load(COOKIEFILE)
-	
-# Now we need to get our Cookie Jar
-# installed in the opener;
-# for fetching URLs
-opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
-urllib2.install_opener(opener)
-
-def login():
-	loginurl = 'https://developer.symbian.org/main/user_profile/login.php'
-	
-	print >> sys.stderr, 'username: ',
-	username=sys.stdin.readline().strip()
-	password=getpass.getpass()
-	
-	values = {'username' : username,
-	          'password' : password,
-	          'submit': 'Login'}
-	          
-	headers = { 'User-Agent' : user_agent }
-	
-	
-	data = urllib.urlencode(values)
-	req = urllib2.Request(loginurl, data, headers)
-
-	response = urllib2.urlopen(req)
-	doc=response.read()      
-
-	if doc.find('Please try again') != -1:
-		print >> sys.stderr, 'Login failed'
-		return False
-	
-	cj.save(COOKIEFILE) 
-	return True
-
-def findpackageforlibrary(filename, project):
-
-	dotpos = filename.find('.')
-	
-	if dotpos != -1:
-		searchterm = filename[0:dotpos]
-	else:
-		searchterm = filename
-		
-	searchurl = 'https://developer.symbian.org/xref/sfl/search?q="TARGET+%s"&defs=&refs=&path=&hist=&project=%%2F%s'
-	url = searchurl % (searchterm, project)
-	req = urllib2.Request(url)
-	
-	response = urllib2.urlopen(req)
-	
-	doc=response.read()
-	
-	if doc.find('Restricted access') != -1:
-		if(login()):
-			# try again after login
-			response = urllib2.urlopen(req)
-			doc=response.read()
-		else:
-			return False
-			
-	
-	# BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
-	try:
-		bodystart=doc.find('<body>')
-		doc = doc[bodystart:]
-	except:
-		pass
-			
-	soup=BeautifulSoup(doc)
-	
-	# let's hope the HTML format never changes...
-	results=soup.findAll('div', id='results')
-	pkgname=''
-	try:
-		temp=results[0].a.string
-		fspos=temp.find('sf')
-		temp=temp[fspos+3:]
-		pkgpos=temp.find('/')
-		temp=temp[pkgpos+1:]
-	
-		endpkgpos=temp.find('/')
-		pkgname=temp[0:endpkgpos]
-	except:
-		print 'error: file \'%s\' not found in opengrok' % filename
-	else:
-		print 'first package with target %s: %s' % (searchterm,pkgname)
-	
-	return True
-			
-def findpackageforheader(filename, project):
-	searchterm=filename
-	searchurl = 'https://developer.symbian.org/xref/sfl/search?q=&defs=&refs=&path=%s&hist=&project=%%2F%s'
-	url = searchurl % (searchterm, project)
-
-	req = urllib2.Request(url)
-	
-	response = urllib2.urlopen(req)
-	
-	doc=response.read()
-	
-	if doc.find('Restricted access') != -1:
-		if(login()):
-			# try again after login
-			response = urllib2.urlopen(req)
-			doc=response.read()
-		else:
-			return False
-			
-	
-	# BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
-	try:
-		bodystart=doc.find('<body>')
-		doc = doc[bodystart:]
-	except:
-		pass
-			
-	soup=BeautifulSoup(doc)
-	
-	# let's hope the HTML format never changes...
-	results=soup.findAll('div', id='results')
-	pkgname=''
-	try:
-		temp=results[0].a.string
-		fspos=temp.find('sf')
-		temp=temp[fspos+3:]
-		pkgpos=temp.find('/')
-		temp=temp[pkgpos+1:]
-	
-		endpkgpos=temp.find('/')
-		pkgname=temp[0:endpkgpos]
-	except:
-		print 'error: file \'%s\' not found in opengrok' % filename
-	else:
-		print 'package:', pkgname
-	
-	return True
-		
-
-if len(sys.argv) < 2:
-	print 'usage: findpackage.py <filename> [project]'
-	exit()
-
-filename = sys.argv[1]
-
-if len(sys.argv) == 3:
-	project = sys.argv[2]
-else:
-	project = 'Symbian2'
-
-if filename.endswith('.lib') or filename.endswith('.dll'):
-	findpackageforlibrary(filename, project)
-else:
-	findpackageforheader(filename, project)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/findpackage/BeautifulSoup.py	Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,2000 @@
+"""Beautiful Soup
+Elixir and Tonic
+"The Screen-Scraper's Friend"
+http://www.crummy.com/software/BeautifulSoup/
+
+Beautiful Soup parses a (possibly invalid) XML or HTML document into a
+tree representation. It provides methods and Pythonic idioms that make
+it easy to navigate, search, and modify the tree.
+
+A well-formed XML/HTML document yields a well-formed data
+structure. An ill-formed XML/HTML document yields a correspondingly
+ill-formed data structure. If your document is only locally
+well-formed, you can use this library to find and process the
+well-formed part of it.
+
+Beautiful Soup works with Python 2.2 and up. It has no external
+dependencies, but you'll have more success at converting data to UTF-8
+if you also install these three packages:
+
+* chardet, for auto-detecting character encodings
+  http://chardet.feedparser.org/
+* cjkcodecs and iconv_codec, which add more encodings to the ones supported
+  by stock Python.
+  http://cjkpython.i18n.org/
+
+Beautiful Soup defines classes for two main parsing strategies:
+
+ * BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
+   language that kind of looks like XML.
+
+ * BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
+   or invalid. This class has web browser-like heuristics for
+   obtaining a sensible parse tree in the face of common HTML errors.
+
+Beautiful Soup also defines a class (UnicodeDammit) for autodetecting
+the encoding of an HTML or XML document, and converting it to
+Unicode. Much of this code is taken from Mark Pilgrim's Universal Feed Parser.
+
+For more than you ever wanted to know about Beautiful Soup, see the
+documentation:
+http://www.crummy.com/software/BeautifulSoup/documentation.html
+
+Here, have some legalese:
+
+Copyright (c) 2004-2009, Leonard Richardson
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above
+    copyright notice, this list of conditions and the following
+    disclaimer in the documentation and/or other materials provided
+    with the distribution.
+
+  * Neither the name of the the Beautiful Soup Consortium and All
+    Night Kosher Bakery nor the names of its contributors may be
+    used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE, DAMMIT.
+
+"""
+from __future__ import generators
+
+__author__ = "Leonard Richardson (leonardr@segfault.org)"
+__version__ = "3.1.0.1"
+__copyright__ = "Copyright (c) 2004-2009 Leonard Richardson"
+__license__ = "New-style BSD"
+
+import codecs
+import markupbase
+import types
+import re
+from HTMLParser import HTMLParser, HTMLParseError
+try:
+    from htmlentitydefs import name2codepoint
+except ImportError:
+    name2codepoint = {}
+try:
+    set
+except NameError:
+    from sets import Set as set
+
+#These hacks make Beautiful Soup able to parse XML with namespaces
+markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match
+
+DEFAULT_OUTPUT_ENCODING = "utf-8"
+
+# First, the classes that represent markup elements.
+
+def sob(unicode, encoding):
+    """Returns either the given Unicode string or its encoding."""
+    if encoding is None:
+        return unicode
+    else:
+        return unicode.encode(encoding)
+
+class PageElement:
+    """Contains the navigational information for some part of the page
+    (either a tag or a piece of text)"""
+
+    def setup(self, parent=None, previous=None):
+        """Sets up the initial relations between this element and
+        other elements."""
+        self.parent = parent
+        self.previous = previous
+        self.next = None
+        self.previousSibling = None
+        self.nextSibling = None
+        if self.parent and self.parent.contents:
+            self.previousSibling = self.parent.contents[-1]
+            self.previousSibling.nextSibling = self
+
+    def replaceWith(self, replaceWith):
+        oldParent = self.parent
+        myIndex = self.parent.contents.index(self)
+        if hasattr(replaceWith, 'parent') and replaceWith.parent == self.parent:
+            # We're replacing this element with one of its siblings.
+            index = self.parent.contents.index(replaceWith)
+            if index and index < myIndex:
+                # Furthermore, it comes before this element. That
+                # means that when we extract it, the index of this
+                # element will change.
+                myIndex = myIndex - 1
+        self.extract()
+        oldParent.insert(myIndex, replaceWith)
+
+    def extract(self):
+        """Destructively rips this element out of the tree."""
+        if self.parent:
+            try:
+                self.parent.contents.remove(self)
+            except ValueError:
+                pass
+
+        #Find the two elements that would be next to each other if
+        #this element (and any children) hadn't been parsed. Connect
+        #the two.
+        lastChild = self._lastRecursiveChild()
+        nextElement = lastChild.next
+
+        if self.previous:
+            self.previous.next = nextElement
+        if nextElement:
+            nextElement.previous = self.previous
+        self.previous = None
+        lastChild.next = None
+
+        self.parent = None
+        if self.previousSibling:
+            self.previousSibling.nextSibling = self.nextSibling
+        if self.nextSibling:
+            self.nextSibling.previousSibling = self.previousSibling
+        self.previousSibling = self.nextSibling = None
+        return self
+
+    def _lastRecursiveChild(self):
+        "Finds the last element beneath this object to be parsed."
+        lastChild = self
+        while hasattr(lastChild, 'contents') and lastChild.contents:
+            lastChild = lastChild.contents[-1]
+        return lastChild
+
+    def insert(self, position, newChild):
+        if (isinstance(newChild, basestring)
+            or isinstance(newChild, unicode)) \
+            and not isinstance(newChild, NavigableString):
+            newChild = NavigableString(newChild)
+
+        position =  min(position, len(self.contents))
+        if hasattr(newChild, 'parent') and newChild.parent != None:
+            # We're 'inserting' an element that's already one
+            # of this object's children.
+            if newChild.parent == self:
+                index = self.find(newChild)
+                if index and index < position:
+                    # Furthermore we're moving it further down the
+                    # list of this object's children. That means that
+                    # when we extract this element, our target index
+                    # will jump down one.
+                    position = position - 1
+            newChild.extract()
+
+        newChild.parent = self
+        previousChild = None
+        if position == 0:
+            newChild.previousSibling = None
+            newChild.previous = self
+        else:
+            previousChild = self.contents[position-1]
+            newChild.previousSibling = previousChild
+            newChild.previousSibling.nextSibling = newChild
+            newChild.previous = previousChild._lastRecursiveChild()
+        if newChild.previous:
+            newChild.previous.next = newChild
+
+        newChildsLastElement = newChild._lastRecursiveChild()
+
+        if position >= len(self.contents):
+            newChild.nextSibling = None
+
+            parent = self
+            parentsNextSibling = None
+            while not parentsNextSibling:
+                parentsNextSibling = parent.nextSibling
+                parent = parent.parent
+                if not parent: # This is the last element in the document.
+                    break
+            if parentsNextSibling:
+                newChildsLastElement.next = parentsNextSibling
+            else:
+                newChildsLastElement.next = None
+        else:
+            nextChild = self.contents[position]
+            newChild.nextSibling = nextChild
+            if newChild.nextSibling:
+                newChild.nextSibling.previousSibling = newChild
+            newChildsLastElement.next = nextChild
+
+        if newChildsLastElement.next:
+            newChildsLastElement.next.previous = newChildsLastElement
+        self.contents.insert(position, newChild)
+
+    def append(self, tag):
+        """Appends the given tag to the contents of this tag."""
+        self.insert(len(self.contents), tag)
+
+    def findNext(self, name=None, attrs={}, text=None, **kwargs):
+        """Returns the first item that matches the given criteria and
+        appears after this Tag in the document."""
+        return self._findOne(self.findAllNext, name, attrs, text, **kwargs)
+
+    def findAllNext(self, name=None, attrs={}, text=None, limit=None,
+                    **kwargs):
+        """Returns all items that match the given criteria and appear
+        after this Tag in the document."""
+        return self._findAll(name, attrs, text, limit, self.nextGenerator,
+                             **kwargs)
+
+    def findNextSibling(self, name=None, attrs={}, text=None, **kwargs):
+        """Returns the closest sibling to this Tag that matches the
+        given criteria and appears after this Tag in the document."""
+        return self._findOne(self.findNextSiblings, name, attrs, text,
+                             **kwargs)
+
+    def findNextSiblings(self, name=None, attrs={}, text=None, limit=None,
+                         **kwargs):
+        """Returns the siblings of this Tag that match the given
+        criteria and appear after this Tag in the document."""
+        return self._findAll(name, attrs, text, limit,
+                             self.nextSiblingGenerator, **kwargs)
+    fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x
+
+    def findPrevious(self, name=None, attrs={}, text=None, **kwargs):
+        """Returns the first item that matches the given criteria and
+        appears before this Tag in the document."""
+        return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs)
+
+    def findAllPrevious(self, name=None, attrs={}, text=None, limit=None,
+                        **kwargs):
+        """Returns all items that match the given criteria and appear
+        before this Tag in the document."""
+        return self._findAll(name, attrs, text, limit, self.previousGenerator,
+                           **kwargs)
+    fetchPrevious = findAllPrevious # Compatibility with pre-3.x
+
+    def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs):
+        """Returns the closest sibling to this Tag that matches the
+        given criteria and appears before this Tag in the document."""
+        return self._findOne(self.findPreviousSiblings, name, attrs, text,
+                             **kwargs)
+
+    def findPreviousSiblings(self, name=None, attrs={}, text=None,
+                             limit=None, **kwargs):
+        """Returns the siblings of this Tag that match the given
+        criteria and appear before this Tag in the document."""
+        return self._findAll(name, attrs, text, limit,
+                             self.previousSiblingGenerator, **kwargs)
+    fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x
+
+    def findParent(self, name=None, attrs={}, **kwargs):
+        """Returns the closest parent of this Tag that matches the given
+        criteria."""
+        # NOTE: We can't use _findOne because findParents takes a different
+        # set of arguments.
+        r = None
+        l = self.findParents(name, attrs, 1)
+        if l:
+            r = l[0]
+        return r
+
+    def findParents(self, name=None, attrs={}, limit=None, **kwargs):
+        """Returns the parents of this Tag that match the given
+        criteria."""
+
+        return self._findAll(name, attrs, None, limit, self.parentGenerator,
+                             **kwargs)
+    fetchParents = findParents # Compatibility with pre-3.x
+
+    #These methods do the real heavy lifting.
+
+    def _findOne(self, method, name, attrs, text, **kwargs):
+        r = None
+        l = method(name, attrs, text, 1, **kwargs)
+        if l:
+            r = l[0]
+        return r
+
+    def _findAll(self, name, attrs, text, limit, generator, **kwargs):
+        "Iterates over a generator looking for things that match."
+
+        if isinstance(name, SoupStrainer):
+            strainer = name
+        else:
+            # Build a SoupStrainer
+            strainer = SoupStrainer(name, attrs, text, **kwargs)
+        results = ResultSet(strainer)
+        g = generator()
+        while True:
+            try:
+                i = g.next()
+            except StopIteration:
+                break
+            if i:
+                found = strainer.search(i)
+                if found:
+                    results.append(found)
+                    if limit and len(results) >= limit:
+                        break
+        return results
+
+    #These Generators can be used to navigate starting from both
+    #NavigableStrings and Tags.
+    def nextGenerator(self):
+        i = self
+        while i:
+            i = i.next
+            yield i
+
+    def nextSiblingGenerator(self):
+        i = self
+        while i:
+            i = i.nextSibling
+            yield i
+
+    def previousGenerator(self):
+        i = self
+        while i:
+            i = i.previous
+            yield i
+
+    def previousSiblingGenerator(self):
+        i = self
+        while i:
+            i = i.previousSibling
+            yield i
+
+    def parentGenerator(self):
+        i = self
+        while i:
+            i = i.parent
+            yield i
+
+    # Utility methods
+    def substituteEncoding(self, str, encoding=None):
+        encoding = encoding or "utf-8"
+        return str.replace("%SOUP-ENCODING%", encoding)
+
+    def toEncoding(self, s, encoding=None):
+        """Encodes an object to a string in some encoding, or to Unicode.
+        ."""
+        if isinstance(s, unicode):
+            if encoding:
+                s = s.encode(encoding)
+        elif isinstance(s, str):
+            if encoding:
+                s = s.encode(encoding)
+            else:
+                s = unicode(s)
+        else:
+            if encoding:
+                s  = self.toEncoding(str(s), encoding)
+            else:
+                s = unicode(s)
+        return s
+
+class NavigableString(unicode, PageElement):
+
+    def __new__(cls, value):
+        """Create a new NavigableString.
+
+        When unpickling a NavigableString, this method is called with
+        the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
+        passed in to the superclass's __new__ or the superclass won't know
+        how to handle non-ASCII characters.
+        """
+        if isinstance(value, unicode):
+            return unicode.__new__(cls, value)
+        return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
+
+    def __getnewargs__(self):
+        return (unicode(self),)
+
+    def __getattr__(self, attr):
+        """text.string gives you text. This is for backwards
+        compatibility for Navigable*String, but for CData* it lets you
+        get the string without the CData wrapper."""
+        if attr == 'string':
+            return self
+        else:
+            raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
+
+    def encode(self, encoding=DEFAULT_OUTPUT_ENCODING):
+        return self.decode().encode(encoding)
+
+    def decodeGivenEventualEncoding(self, eventualEncoding):
+        return self
+
+class CData(NavigableString):
+
+    def decodeGivenEventualEncoding(self, eventualEncoding):
+        return u'<![CDATA[' + self + u']]>'
+
+class ProcessingInstruction(NavigableString):
+
+    def decodeGivenEventualEncoding(self, eventualEncoding):
+        output = self
+        if u'%SOUP-ENCODING%' in output:
+            output = self.substituteEncoding(output, eventualEncoding)
+        return u'<?' + output + u'?>'
+
+class Comment(NavigableString):
+    def decodeGivenEventualEncoding(self, eventualEncoding):
+        return u'<!--' + self + u'-->'
+
+class Declaration(NavigableString):
+    def decodeGivenEventualEncoding(self, eventualEncoding):
+        return u'<!' + self + u'>'
+
+class Tag(PageElement):
+
+    """Represents a found HTML tag with its attributes and contents."""
+
+    def _invert(h):
+        "Cheap function to invert a hash."
+        i = {}
+        for k,v in h.items():
+            i[v] = k
+        return i
+
+    XML_ENTITIES_TO_SPECIAL_CHARS = { "apos" : "'",
+                                      "quot" : '"',
+                                      "amp" : "&",
+                                      "lt" : "<",
+                                      "gt" : ">" }
+
+    XML_SPECIAL_CHARS_TO_ENTITIES = _invert(XML_ENTITIES_TO_SPECIAL_CHARS)
+
+    def _convertEntities(self, match):
+        """Used in a call to re.sub to replace HTML, XML, and numeric
+        entities with the appropriate Unicode characters. If HTML
+        entities are being converted, any unrecognized entities are
+        escaped."""
+        x = match.group(1)
+        if self.convertHTMLEntities and x in name2codepoint:
+            return unichr(name2codepoint[x])
+        elif x in self.XML_ENTITIES_TO_SPECIAL_CHARS:
+            if self.convertXMLEntities:
+                return self.XML_ENTITIES_TO_SPECIAL_CHARS[x]
+            else:
+                return u'&%s;' % x
+        elif len(x) > 0 and x[0] == '#':
+            # Handle numeric entities
+            if len(x) > 1 and x[1] == 'x':
+                return unichr(int(x[2:], 16))
+            else:
+                return unichr(int(x[1:]))
+
+        elif self.escapeUnrecognizedEntities:
+            return u'&amp;%s;' % x
+        else:
+            return u'&%s;' % x
+
+    def __init__(self, parser, name, attrs=None, parent=None,
+                 previous=None):
+        "Basic constructor."
+
+        # We don't actually store the parser object: that lets extracted
+        # chunks be garbage-collected
+        self.parserClass = parser.__class__
+        self.isSelfClosing = parser.isSelfClosingTag(name)
+        self.name = name
+        if attrs == None:
+            attrs = []
+        self.attrs = attrs
+        self.contents = []
+        self.setup(parent, previous)
+        self.hidden = False
+        self.containsSubstitutions = False
+        self.convertHTMLEntities = parser.convertHTMLEntities
+        self.convertXMLEntities = parser.convertXMLEntities
+        self.escapeUnrecognizedEntities = parser.escapeUnrecognizedEntities
+
+        def convert(kval):
+            "Converts HTML, XML and numeric entities in the attribute value."
+            k, val = kval
+            if val is None:
+                return kval
+            return (k, re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);",
+                              self._convertEntities, val))
+        self.attrs = map(convert, self.attrs)
+
+    def get(self, key, default=None):
+        """Returns the value of the 'key' attribute for the tag, or
+        the value given for 'default' if it doesn't have that
+        attribute."""
+        return self._getAttrMap().get(key, default)
+
+    def has_key(self, key):
+        return self._getAttrMap().has_key(key)
+
+    def __getitem__(self, key):
+        """tag[key] returns the value of the 'key' attribute for the tag,
+        and throws an exception if it's not there."""
+        return self._getAttrMap()[key]
+
+    def __iter__(self):
+        "Iterating over a tag iterates over its contents."
+        return iter(self.contents)
+
+    def __len__(self):
+        "The length of a tag is the length of its list of contents."
+        return len(self.contents)
+
+    def __contains__(self, x):
+        return x in self.contents
+
+    def __nonzero__(self):
+        "A tag is non-None even if it has no contents."
+        return True
+
+    def __setitem__(self, key, value):
+        """Setting tag[key] sets the value of the 'key' attribute for the
+        tag."""
+        self._getAttrMap()
+        self.attrMap[key] = value
+        found = False
+        for i in range(0, len(self.attrs)):
+            if self.attrs[i][0] == key:
+                self.attrs[i] = (key, value)
+                found = True
+        if not found:
+            self.attrs.append((key, value))
+        self._getAttrMap()[key] = value
+
+    def __delitem__(self, key):
+        "Deleting tag[key] deletes all 'key' attributes for the tag."
+        for item in self.attrs:
+            if item[0] == key:
+                self.attrs.remove(item)
+                #We don't break because bad HTML can define the same
+                #attribute multiple times.
+            self._getAttrMap()
+            if self.attrMap.has_key(key):
+                del self.attrMap[key]
+
+    def __call__(self, *args, **kwargs):
+        """Calling a tag like a function is the same as calling its
+        findAll() method. Eg. tag('a') returns a list of all the A tags
+        found within this tag."""
+        return apply(self.findAll, args, kwargs)
+
+    def __getattr__(self, tag):
+        #print "Getattr %s.%s" % (self.__class__, tag)
+        if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
+            return self.find(tag[:-3])
+        elif tag.find('__') != 0:
+            return self.find(tag)
+        raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__, tag)
+
+    def __eq__(self, other):
+        """Returns true iff this tag has the same name, the same attributes,
+        and the same contents (recursively) as the given tag.
+
+        NOTE: right now this will return false if two tags have the
+        same attributes in a different order. Should this be fixed?"""
+        if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
+            return False
+        for i in range(0, len(self.contents)):
+            if self.contents[i] != other.contents[i]:
+                return False
+        return True
+
+    def __ne__(self, other):
+        """Returns true iff this tag is not identical to the other tag,
+        as defined in __eq__."""
+        return not self == other
+
+    def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
+        """Renders this tag as a string."""
+        return self.decode(eventualEncoding=encoding)
+
+    BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|"
+                                           + "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)"
+                                           + ")")
+
+    def _sub_entity(self, x):
+        """Used with a regular expression to substitute the
+        appropriate XML entity for an XML special character."""
+        return "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";"
+
+    def __unicode__(self):
+        return self.decode()
+
+    def __str__(self):
+        return self.encode()
+
+    def encode(self, encoding=DEFAULT_OUTPUT_ENCODING,
+               prettyPrint=False, indentLevel=0):
+        return self.decode(prettyPrint, indentLevel, encoding).encode(encoding)
+
+    def decode(self, prettyPrint=False, indentLevel=0,
+               eventualEncoding=DEFAULT_OUTPUT_ENCODING):
+        """Returns a string or Unicode representation of this tag and
+        its contents. To get Unicode, pass None for encoding."""
+
+        attrs = []
+        if self.attrs:
+            for key, val in self.attrs:
+                fmt = '%s="%s"'
+                if isString(val):
+                    if (self.containsSubstitutions
+                        and eventualEncoding is not None
+                        and '%SOUP-ENCODING%' in val):
+                        val = self.substituteEncoding(val, eventualEncoding)
+
+                    # The attribute value either:
+                    #
+                    # * Contains no embedded double quotes or single quotes.
+                    #   No problem: we enclose it in double quotes.
+                    # * Contains embedded single quotes. No problem:
+                    #   double quotes work here too.
+                    # * Contains embedded double quotes. No problem:
+                    #   we enclose it in single quotes.
+                    # * Embeds both single _and_ double quotes. This
+                    #   can't happen naturally, but it can happen if
+                    #   you modify an attribute value after parsing
+                    #   the document. Now we have a bit of a
+                    #   problem. We solve it by enclosing the
+                    #   attribute in single quotes, and escaping any
+                    #   embedded single quotes to XML entities.
+                    if '"' in val:
+                        fmt = "%s='%s'"
+                        if "'" in val:
+                            # TODO: replace with apos when
+                            # appropriate.
+                            val = val.replace("'", "&squot;")
+
+                    # Now we're okay w/r/t quotes. But the attribute
+                    # value might also contain angle brackets, or
+                    # ampersands that aren't part of entities. We need
+                    # to escape those to XML entities too.
+                    val = self.BARE_AMPERSAND_OR_BRACKET.sub(self._sub_entity, val)
+                if val is None:
+                    # Handle boolean attributes.
+                    decoded = key
+                else:
+                    decoded = fmt % (key, val)
+                attrs.append(decoded)
+        close = ''
+        closeTag = ''
+        if self.isSelfClosing:
+            close = ' /'
+        else:
+            closeTag = '</%s>' % self.name
+
+        indentTag, indentContents = 0, 0
+        if prettyPrint:
+            indentTag = indentLevel
+            space = (' ' * (indentTag-1))
+            indentContents = indentTag + 1
+        contents = self.decodeContents(prettyPrint, indentContents,
+                                       eventualEncoding)
+        if self.hidden:
+            s = contents
+        else:
+            s = []
+            attributeString = ''
+            if attrs:
+                attributeString = ' ' + ' '.join(attrs)
+            if prettyPrint:
+                s.append(space)
+            s.append('<%s%s%s>' % (self.name, attributeString, close))
+            if prettyPrint:
+                s.append("\n")
+            s.append(contents)
+            if prettyPrint and contents and contents[-1] != "\n":
+                s.append("\n")
+            if prettyPrint and closeTag:
+                s.append(space)
+            s.append(closeTag)
+            if prettyPrint and closeTag and self.nextSibling:
+                s.append("\n")
+            s = ''.join(s)
+        return s
+
+    def decompose(self):
+        """Recursively destroys the contents of this tree."""
+        contents = [i for i in self.contents]
+        for i in contents:
+            if isinstance(i, Tag):
+                i.decompose()
+            else:
+                i.extract()
+        self.extract()
+
+    def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING):
+        return self.encode(encoding, True)
+
+    def encodeContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
+                       prettyPrint=False, indentLevel=0):
+        return self.decodeContents(prettyPrint, indentLevel).encode(encoding)
+
+    def decodeContents(self, prettyPrint=False, indentLevel=0,
+                       eventualEncoding=DEFAULT_OUTPUT_ENCODING):
+        """Renders the contents of this tag as a string in the given
+        encoding. If encoding is None, returns a Unicode string.."""
+        s=[]
+        for c in self:
+            text = None
+            if isinstance(c, NavigableString):
+                text = c.decodeGivenEventualEncoding(eventualEncoding)
+            elif isinstance(c, Tag):
+                s.append(c.decode(prettyPrint, indentLevel, eventualEncoding))
+            if text and prettyPrint:
+                text = text.strip()
+            if text:
+                if prettyPrint:
+                    s.append(" " * (indentLevel-1))
+                s.append(text)
+                if prettyPrint:
+                    s.append("\n")
+        return ''.join(s)
+
+    #Soup methods
+
+    def find(self, name=None, attrs={}, recursive=True, text=None,
+             **kwargs):
+        """Return only the first child of this Tag matching the given
+        criteria."""
+        r = None
+        l = self.findAll(name, attrs, recursive, text, 1, **kwargs)
+        if l:
+            r = l[0]
+        return r
+    findChild = find
+
+    def findAll(self, name=None, attrs={}, recursive=True, text=None,
+                limit=None, **kwargs):
+        """Extracts a list of Tag objects that match the given
+        criteria.  You can specify the name of the Tag and any
+        attributes you want the Tag to have.
+
+        The value of a key-value pair in the 'attrs' map can be a
+        string, a list of strings, a regular expression object, or a
+        callable that takes a string and returns whether or not the
+        string matches for some custom definition of 'matches'. The
+        same is true of the tag name."""
+        generator = self.recursiveChildGenerator
+        if not recursive:
+            generator = self.childGenerator
+        return self._findAll(name, attrs, text, limit, generator, **kwargs)
+    findChildren = findAll
+
+    # Pre-3.x compatibility methods. Will go away in 4.0.
+    first = find
+    fetch = findAll
+
+    def fetchText(self, text=None, recursive=True, limit=None):
+        return self.findAll(text=text, recursive=recursive, limit=limit)
+
+    def firstText(self, text=None, recursive=True):
+        return self.find(text=text, recursive=recursive)
+
+    # 3.x compatibility methods. Will go away in 4.0.
+    def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
+                       prettyPrint=False, indentLevel=0):
+        if encoding is None:
+            return self.decodeContents(prettyPrint, indentLevel, encoding)
+        else:
+            return self.encodeContents(encoding, prettyPrint, indentLevel)
+
+
+    #Private methods
+
+    def _getAttrMap(self):
+        """Initializes a map representation of this tag's attributes,
+        if not already initialized."""
+        if not getattr(self, 'attrMap'):
+            self.attrMap = {}
+            for (key, value) in self.attrs:
+                self.attrMap[key] = value
+        return self.attrMap
+
+    #Generator methods
+    def recursiveChildGenerator(self):
+        if not len(self.contents):
+            raise StopIteration
+        stopNode = self._lastRecursiveChild().next
+        current = self.contents[0]
+        while current is not stopNode:
+            yield current
+            current = current.next
+
+    def childGenerator(self):
+        if not len(self.contents):
+            raise StopIteration
+        current = self.contents[0]
+        while current:
+            yield current
+            current = current.nextSibling
+        raise StopIteration
+
+# Next, a couple classes to represent queries and their results.
+class SoupStrainer:
+    """Encapsulates a number of ways of matching a markup element (tag or
+    text)."""
+
+    def __init__(self, name=None, attrs={}, text=None, **kwargs):
+        self.name = name
+        if isString(attrs):
+            kwargs['class'] = attrs
+            attrs = None
+        if kwargs:
+            if attrs:
+                attrs = attrs.copy()
+                attrs.update(kwargs)
+            else:
+                attrs = kwargs
+        self.attrs = attrs
+        self.text = text
+
+    def __str__(self):
+        if self.text:
+            return self.text
+        else:
+            return "%s|%s" % (self.name, self.attrs)
+
+    def searchTag(self, markupName=None, markupAttrs={}):
+        found = None
+        markup = None
+        if isinstance(markupName, Tag):
+            markup = markupName
+            markupAttrs = markup
+        callFunctionWithTagData = callable(self.name) \
+                                and not isinstance(markupName, Tag)
+
+        if (not self.name) \
+               or callFunctionWithTagData \
+               or (markup and self._matches(markup, self.name)) \
+               or (not markup and self._matches(markupName, self.name)):
+            if callFunctionWithTagData:
+                match = self.name(markupName, markupAttrs)
+            else:
+                match = True
+                markupAttrMap = None
+                for attr, matchAgainst in self.attrs.items():
+                    if not markupAttrMap:
+                         if hasattr(markupAttrs, 'get'):
+                            markupAttrMap = markupAttrs
+                         else:
+                            markupAttrMap = {}
+                            for k,v in markupAttrs:
+                                markupAttrMap[k] = v
+                    attrValue = markupAttrMap.get(attr)
+                    if not self._matches(attrValue, matchAgainst):
+                        match = False
+                        break
+            if match:
+                if markup:
+                    found = markup
+                else:
+                    found = markupName
+        return found
+
+    def search(self, markup):
+        #print 'looking for %s in %s' % (self, markup)
+        found = None
+        # If given a list of items, scan it for a text element that
+        # matches.
+        if isList(markup) and not isinstance(markup, Tag):
+            for element in markup:
+                if isinstance(element, NavigableString) \
+                       and self.search(element):
+                    found = element
+                    break
+        # If it's a Tag, make sure its name or attributes match.
+        # Don't bother with Tags if we're searching for text.
+        elif isinstance(markup, Tag):
+            if not self.text:
+                found = self.searchTag(markup)
+        # If it's text, make sure the text matches.
+        elif isinstance(markup, NavigableString) or \
+                 isString(markup):
+            if self._matches(markup, self.text):
+                found = markup
+        else:
+            raise Exception, "I don't know how to match against a %s" \
+                  % markup.__class__
+        return found
+
+    def _matches(self, markup, matchAgainst):
+        #print "Matching %s against %s" % (markup, matchAgainst)
+        result = False
+        if matchAgainst == True and type(matchAgainst) == types.BooleanType:
+            result = markup != None
+        elif callable(matchAgainst):
+            result = matchAgainst(markup)
+        else:
+            #Custom match methods take the tag as an argument, but all
+            #other ways of matching match the tag name as a string.
+            if isinstance(markup, Tag):
+                markup = markup.name
+            if markup is not None and not isString(markup):
+                markup = unicode(markup)
+            #Now we know that chunk is either a string, or None.
+            if hasattr(matchAgainst, 'match'):
+                # It's a regexp object.
+                result = markup and matchAgainst.search(markup)
+            elif (isList(matchAgainst)
+                  and (markup is not None or not isString(matchAgainst))):
+                result = markup in matchAgainst
+            elif hasattr(matchAgainst, 'items'):
+                result = markup.has_key(matchAgainst)
+            elif matchAgainst and isString(markup):
+                if isinstance(markup, unicode):
+                    matchAgainst = unicode(matchAgainst)
+                else:
+                    matchAgainst = str(matchAgainst)
+
+            if not result:
+                result = matchAgainst == markup
+        return result
+
+class ResultSet(list):
+    """A ResultSet is just a list that keeps track of the SoupStrainer
+    that created it."""
+    def __init__(self, source):
+        list.__init__([])
+        self.source = source
+
+# Now, some helper functions.
+
+def isList(l):
+    """Convenience method that works with all 2.x versions of Python
+    to determine whether or not something is listlike."""
+    return ((hasattr(l, '__iter__') and not isString(l))
+            or (type(l) in (types.ListType, types.TupleType)))
+
+def isString(s):
+    """Convenience method that works with all 2.x versions of Python
+    to determine whether or not something is stringlike."""
+    try:
+        return isinstance(s, unicode) or isinstance(s, basestring)
+    except NameError:
+        return isinstance(s, str)
+
+def buildTagMap(default, *args):
+    """Turns a list of maps, lists, or scalars into a single map.
+    Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and
+    NESTING_RESET_TAGS maps out of lists and partial maps."""
+    built = {}
+    for portion in args:
+        if hasattr(portion, 'items'):
+            #It's a map. Merge it.
+            for k,v in portion.items():
+                built[k] = v
+        elif isList(portion) and not isString(portion):
+            #It's a list. Map each item to the default.
+            for k in portion:
+                built[k] = default
+        else:
+            #It's a scalar. Map it to the default.
+            built[portion] = default
+    return built
+
+# Now, the parser classes.
+
+class HTMLParserBuilder(HTMLParser):
+
+    def __init__(self, soup):
+        HTMLParser.__init__(self)
+        self.soup = soup
+
+    # We inherit feed() and reset().
+
+    def handle_starttag(self, name, attrs):
+        if name == 'meta':
+            self.soup.extractCharsetFromMeta(attrs)
+        else:
+            self.soup.unknown_starttag(name, attrs)
+
+    def handle_endtag(self, name):
+        self.soup.unknown_endtag(name)
+
+    def handle_data(self, content):
+        self.soup.handle_data(content)
+
+    def _toStringSubclass(self, text, subclass):
+        """Adds a certain piece of text to the tree as a NavigableString
+        subclass."""
+        self.soup.endData()
+        self.handle_data(text)
+        self.soup.endData(subclass)
+
+    def handle_pi(self, text):
+        """Handle a processing instruction as a ProcessingInstruction
+        object, possibly one with a %SOUP-ENCODING% slot into which an
+        encoding will be plugged later."""
+        if text[:3] == "xml":
+            text = u"xml version='1.0' encoding='%SOUP-ENCODING%'"
+        self._toStringSubclass(text, ProcessingInstruction)
+
+    def handle_comment(self, text):
+        "Handle comments as Comment objects."
+        self._toStringSubclass(text, Comment)
+
+    def handle_charref(self, ref):
+        "Handle character references as data."
+        if self.soup.convertEntities:
+            data = unichr(int(ref))
+        else:
+            data = '&#%s;' % ref
+        self.handle_data(data)
+
+    def handle_entityref(self, ref):
+        """Handle entity references as data, possibly converting known
+        HTML and/or XML entity references to the corresponding Unicode
+        characters."""
+        data = None
+        if self.soup.convertHTMLEntities:
+            try:
+                data = unichr(name2codepoint[ref])
+            except KeyError:
+                pass
+
+        if not data and self.soup.convertXMLEntities:
+                data = self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref)
+
+        if not data and self.soup.convertHTMLEntities and \
+            not self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref):
+                # TODO: We've got a problem here. We're told this is
+                # an entity reference, but it's not an XML entity
+                # reference or an HTML entity reference. Nonetheless,
+                # the logical thing to do is to pass it through as an
+                # unrecognized entity reference.
+                #
+                # Except: when the input is "&carol;" this function
+                # will be called with input "carol". When the input is
+                # "AT&T", this function will be called with input
+                # "T". We have no way of knowing whether a semicolon
+                # was present originally, so we don't know whether
+                # this is an unknown entity or just a misplaced
+                # ampersand.
+                #
+                # The more common case is a misplaced ampersand, so I
+                # escape the ampersand and omit the trailing semicolon.
+                data = "&amp;%s" % ref
+        if not data:
+            # This case is different from the one above, because we
+            # haven't already gone through a supposedly comprehensive
+            # mapping of entities to Unicode characters. We might not
+            # have gone through any mapping at all. So the chances are
+            # very high that this is a real entity, and not a
+            # misplaced ampersand.
+            data = "&%s;" % ref
+        self.handle_data(data)
+
+    def handle_decl(self, data):
+        "Handle DOCTYPEs and the like as Declaration objects."
+        self._toStringSubclass(data, Declaration)
+
+    def parse_declaration(self, i):
+        """Treat a bogus SGML declaration as raw data. Treat a CDATA
+        declaration as a CData object."""
+        j = None
+        if self.rawdata[i:i+9] == '<![CDATA[':
+             k = self.rawdata.find(']]>', i)
+             if k == -1:
+                 k = len(self.rawdata)
+             data = self.rawdata[i+9:k]
+             j = k+3
+             self._toStringSubclass(data, CData)
+        else:
+            try:
+                j = HTMLParser.parse_declaration(self, i)
+            except HTMLParseError:
+                toHandle = self.rawdata[i:]
+                self.handle_data(toHandle)
+                j = i + len(toHandle)
+        return j
+
+
+class BeautifulStoneSoup(Tag):
+
+    """This class contains the basic parser and search code. It defines
+    a parser that knows nothing about tag behavior except for the
+    following:
+
+      You can't close a tag without closing all the tags it encloses.
+      That is, "<foo><bar></foo>" actually means
+      "<foo><bar></bar></foo>".
+
+    [Another possible explanation is "<foo><bar /></foo>", but since
+    this class defines no SELF_CLOSING_TAGS, it will never use that
+    explanation.]
+
+    This class is useful for parsing XML or made-up markup languages,
+    or when BeautifulSoup makes an assumption counter to what you were
+    expecting."""
+
+    SELF_CLOSING_TAGS = {}
+    NESTABLE_TAGS = {}
+    RESET_NESTING_TAGS = {}
+    QUOTE_TAGS = {}
+    PRESERVE_WHITESPACE_TAGS = []
+
+    MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'),
+                       lambda x: x.group(1) + ' />'),
+                      (re.compile('<!\s+([^<>]*)>'),
+                       lambda x: '<!' + x.group(1) + '>')
+                      ]
+
+    ROOT_TAG_NAME = u'[document]'
+
+    HTML_ENTITIES = "html"
+    XML_ENTITIES = "xml"
+    XHTML_ENTITIES = "xhtml"
+    # TODO: This only exists for backwards-compatibility
+    ALL_ENTITIES = XHTML_ENTITIES
+
+    # Used when determining whether a text node is all whitespace and
+    # can be replaced with a single space. A text node that contains
+    # fancy Unicode spaces (usually non-breaking) should be left
+    # alone.
+    STRIP_ASCII_SPACES = { 9: None, 10: None, 12: None, 13: None, 32: None, }
+
+    def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None,
+                 markupMassage=True, smartQuotesTo=XML_ENTITIES,
+                 convertEntities=None, selfClosingTags=None, isHTML=False,
+                 builder=HTMLParserBuilder):
+        """The Soup object is initialized as the 'root tag', and the
+        provided markup (which can be a string or a file-like object)
+        is fed into the underlying parser.
+
+        HTMLParser will process most bad HTML, and the BeautifulSoup
+        class has some tricks for dealing with some HTML that kills
+        HTMLParser, but Beautiful Soup can nonetheless choke or lose data
+        if your data uses self-closing tags or declarations
+        incorrectly.
+
+        By default, Beautiful Soup uses regexes to sanitize input,
+        avoiding the vast majority of these problems. If the problems
+        don't apply to you, pass in False for markupMassage, and
+        you'll get better performance.
+
+        The default parser massage techniques fix the two most common
+        instances of invalid HTML that choke HTMLParser:
+
+         <br/> (No space between name of closing tag and tag close)
+         <! --Comment--> (Extraneous whitespace in declaration)
+
+        You can pass in a custom list of (RE object, replace method)
+        tuples to get Beautiful Soup to scrub your input the way you
+        want."""
+
+        self.parseOnlyThese = parseOnlyThese
+        self.fromEncoding = fromEncoding
+        self.smartQuotesTo = smartQuotesTo
+        self.convertEntities = convertEntities
+        # Set the rules for how we'll deal with the entities we
+        # encounter
+        if self.convertEntities:
+            # It doesn't make sense to convert encoded characters to
+            # entities even while you're converting entities to Unicode.
+            # Just convert it all to Unicode.
+            self.smartQuotesTo = None
+            if convertEntities == self.HTML_ENTITIES:
+                self.convertXMLEntities = False
+                self.convertHTMLEntities = True
+                self.escapeUnrecognizedEntities = True
+            elif convertEntities == self.XHTML_ENTITIES:
+                self.convertXMLEntities = True
+                self.convertHTMLEntities = True
+                self.escapeUnrecognizedEntities = False
+            elif convertEntities == self.XML_ENTITIES:
+                self.convertXMLEntities = True
+                self.convertHTMLEntities = False
+                self.escapeUnrecognizedEntities = False
+        else:
+            self.convertXMLEntities = False
+            self.convertHTMLEntities = False
+            self.escapeUnrecognizedEntities = False
+
+        self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags)
+        self.builder = builder(self)
+        self.reset()
+
+        if hasattr(markup, 'read'):        # It's a file-type object.
+            markup = markup.read()
+        self.markup = markup
+        self.markupMassage = markupMassage
+        try:
+            self._feed(isHTML=isHTML)
+        except StopParsing:
+            pass
+        self.markup = None                 # The markup can now be GCed.
+        self.builder = None                # So can the builder.
+
+    def _feed(self, inDocumentEncoding=None, isHTML=False):
+        # Convert the document to Unicode.
+        markup = self.markup
+        if isinstance(markup, unicode):
+            if not hasattr(self, 'originalEncoding'):
+                self.originalEncoding = None
+        else:
+            dammit = UnicodeDammit\
+                     (markup, [self.fromEncoding, inDocumentEncoding],
+                      smartQuotesTo=self.smartQuotesTo, isHTML=isHTML)
+            markup = dammit.unicode
+            self.originalEncoding = dammit.originalEncoding
+            self.declaredHTMLEncoding = dammit.declaredHTMLEncoding
+        if markup:
+            if self.markupMassage:
+                if not isList(self.markupMassage):
+                    self.markupMassage = self.MARKUP_MASSAGE
+                for fix, m in self.markupMassage:
+                    markup = fix.sub(m, markup)
+                # TODO: We get rid of markupMassage so that the
+                # soup object can be deepcopied later on. Some
+                # Python installations can't copy regexes. If anyone
+                # was relying on the existence of markupMassage, this
+                # might cause problems.
+                del(self.markupMassage)
+        self.builder.reset()
+
+        self.builder.feed(markup)
+        # Close out any unfinished strings and close all the open tags.
+        self.endData()
+        while self.currentTag.name != self.ROOT_TAG_NAME:
+            self.popTag()
+
+    def isSelfClosingTag(self, name):
+        """Returns true iff the given string is the name of a
+        self-closing tag according to this parser."""
+        return self.SELF_CLOSING_TAGS.has_key(name) \
+               or self.instanceSelfClosingTags.has_key(name)
+
+    def reset(self):
+        Tag.__init__(self, self, self.ROOT_TAG_NAME)
+        self.hidden = 1
+        self.builder.reset()
+        self.currentData = []
+        self.currentTag = None
+        self.tagStack = []
+        self.quoteStack = []
+        self.pushTag(self)
+
+    def popTag(self):
+        tag = self.tagStack.pop()
+        # Tags with just one string-owning child get the child as a
+        # 'string' property, so that soup.tag.string is shorthand for
+        # soup.tag.contents[0]
+        if len(self.currentTag.contents) == 1 and \
+           isinstance(self.currentTag.contents[0], NavigableString):
+            self.currentTag.string = self.currentTag.contents[0]
+
+        #print "Pop", tag.name
+        if self.tagStack:
+            self.currentTag = self.tagStack[-1]
+        return self.currentTag
+
+    def pushTag(self, tag):
+        #print "Push", tag.name
+        if self.currentTag:
+            self.currentTag.contents.append(tag)
+        self.tagStack.append(tag)
+        self.currentTag = self.tagStack[-1]
+
+    def endData(self, containerClass=NavigableString):
+        if self.currentData:
+            currentData = u''.join(self.currentData)
+            if (currentData.translate(self.STRIP_ASCII_SPACES) == '' and
+                not set([tag.name for tag in self.tagStack]).intersection(
+                    self.PRESERVE_WHITESPACE_TAGS)):
+                if '\n' in currentData:
+                    currentData = '\n'
+                else:
+                    currentData = ' '
+            self.currentData = []
+            if self.parseOnlyThese and len(self.tagStack) <= 1 and \
+                   (not self.parseOnlyThese.text or \
+                    not self.parseOnlyThese.search(currentData)):
+                return
+            o = containerClass(currentData)
+            o.setup(self.currentTag, self.previous)
+            if self.previous:
+                self.previous.next = o
+            self.previous = o
+            self.currentTag.contents.append(o)
+
+
+    def _popToTag(self, name, inclusivePop=True):
+        """Pops the tag stack up to and including the most recent
+        instance of the given tag. If inclusivePop is false, pops the tag
+        stack up to but *not* including the most recent instqance of
+        the given tag."""
+        #print "Popping to %s" % name
+        if name == self.ROOT_TAG_NAME:
+            return
+
+        numPops = 0
+        mostRecentTag = None
+        for i in range(len(self.tagStack)-1, 0, -1):
+            if name == self.tagStack[i].name:
+                numPops = len(self.tagStack)-i
+                break
+        if not inclusivePop:
+            numPops = numPops - 1
+
+        for i in range(0, numPops):
+            mostRecentTag = self.popTag()
+        return mostRecentTag
+
+    def _smartPop(self, name):
+
+        """We need to pop up to the previous tag of this type, unless
+        one of this tag's nesting reset triggers comes between this
+        tag and the previous tag of this type, OR unless this tag is a
+        generic nesting trigger and another generic nesting trigger
+        comes between this tag and the previous tag of this type.
+
+        Examples:
+         <p>Foo<b>Bar *<p>* should pop to 'p', not 'b'.
+         <p>Foo<table>Bar *<p>* should pop to 'table', not 'p'.
+         <p>Foo<table><tr>Bar *<p>* should pop to 'tr', not 'p'.
+
+         <li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
+         <tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
+         <td><tr><td> *<td>* should pop to 'tr', not the first 'td'
+        """
+
+        nestingResetTriggers = self.NESTABLE_TAGS.get(name)
+        isNestable = nestingResetTriggers != None
+        isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
+        popTo = None
+        inclusive = True
+        for i in range(len(self.tagStack)-1, 0, -1):
+            p = self.tagStack[i]
+            if (not p or p.name == name) and not isNestable:
+                #Non-nestable tags get popped to the top or to their
+                #last occurance.
+                popTo = name
+                break
+            if (nestingResetTriggers != None
+                and p.name in nestingResetTriggers) \
+                or (nestingResetTriggers == None and isResetNesting
+                    and self.RESET_NESTING_TAGS.has_key(p.name)):
+
+                #If we encounter one of the nesting reset triggers
+                #peculiar to this tag, or we encounter another tag
+                #that causes nesting to reset, pop up to but not
+                #including that tag.
+                popTo = p.name
+                inclusive = False
+                break
+            p = p.parent
+        if popTo:
+            self._popToTag(popTo, inclusive)
+
+    def unknown_starttag(self, name, attrs, selfClosing=0):
+        #print "Start tag %s: %s" % (name, attrs)
+        if self.quoteStack:
+            #This is not a real tag.
+            #print "<%s> is not real!" % name
+            attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs))
+            self.handle_data('<%s%s>' % (name, attrs))
+            return
+        self.endData()
+
+        if not self.isSelfClosingTag(name) and not selfClosing:
+            self._smartPop(name)
+
+        if self.parseOnlyThese and len(self.tagStack) <= 1 \
+               and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)):
+            return
+
+        tag = Tag(self, name, attrs, self.currentTag, self.previous)
+        if self.previous:
+            self.previous.next = tag
+        self.previous = tag
+        self.pushTag(tag)
+        if selfClosing or self.isSelfClosingTag(name):
+            self.popTag()
+        if name in self.QUOTE_TAGS:
+            #print "Beginning quote (%s)" % name
+            self.quoteStack.append(name)
+            self.literal = 1
+        return tag
+
+    def unknown_endtag(self, name):
+        #print "End tag %s" % name
+        if self.quoteStack and self.quoteStack[-1] != name:
+            #This is not a real end tag.
+            #print "</%s> is not real!" % name
+            self.handle_data('</%s>' % name)
+            return
+        self.endData()
+        self._popToTag(name)
+        if self.quoteStack and self.quoteStack[-1] == name:
+            self.quoteStack.pop()
+            self.literal = (len(self.quoteStack) > 0)
+
+    def handle_data(self, data):
+        self.currentData.append(data)
+
+    def extractCharsetFromMeta(self, attrs):
+        self.unknown_starttag('meta', attrs)
+
+
+class BeautifulSoup(BeautifulStoneSoup):
+
+    """This parser knows the following facts about HTML:
+
+    * Some tags have no closing tag and should be interpreted as being
+      closed as soon as they are encountered.
+
+    * The text inside some tags (ie. 'script') may contain tags which
+      are not really part of the document and which should be parsed
+      as text, not tags. If you want to parse the text as tags, you can
+      always fetch it and parse it explicitly.
+
+    * Tag nesting rules:
+
+      Most tags can't be nested at all. For instance, the occurance of
+      a <p> tag should implicitly close the previous <p> tag.
+
+       <p>Para1<p>Para2
+        should be transformed into:
+       <p>Para1</p><p>Para2
+
+      Some tags can be nested arbitrarily. For instance, the occurance
+      of a <blockquote> tag should _not_ implicitly close the previous
+      <blockquote> tag.
+
+       Alice said: <blockquote>Bob said: <blockquote>Blah
+        should NOT be transformed into:
+       Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
+
+      Some tags can be nested, but the nesting is reset by the
+      interposition of other tags. For instance, a <tr> tag should
+      implicitly close the previous <tr> tag within the same <table>,
+      but not close a <tr> tag in another table.
+
+       <table><tr>Blah<tr>Blah
+        should be transformed into:
+       <table><tr>Blah</tr><tr>Blah
+        but,
+       <tr>Blah<table><tr>Blah
+        should NOT be transformed into
+       <tr>Blah<table></tr><tr>Blah
+
+    Differing assumptions about tag nesting rules are a major source
+    of problems with the BeautifulSoup class. If BeautifulSoup is not
+    treating as nestable a tag your page author treats as nestable,
+    try ICantBelieveItsBeautifulSoup, MinimalSoup, or
+    BeautifulStoneSoup before writing your own subclass."""
+
+    def __init__(self, *args, **kwargs):
+        if not kwargs.has_key('smartQuotesTo'):
+            kwargs['smartQuotesTo'] = self.HTML_ENTITIES
+        kwargs['isHTML'] = True
+        BeautifulStoneSoup.__init__(self, *args, **kwargs)
+
+    SELF_CLOSING_TAGS = buildTagMap(None,
+                                    ['br' , 'hr', 'input', 'img', 'meta',
+                                    'spacer', 'link', 'frame', 'base'])
+
+    PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea'])
+
+    QUOTE_TAGS = {'script' : None, 'textarea' : None}
+
+    #According to the HTML standard, each of these inline tags can
+    #contain another tag of the same type. Furthermore, it's common
+    #to actually use these tags this way.
+    NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
+                            'center']
+
+    #According to the HTML standard, these block tags can contain
+    #another tag of the same type. Furthermore, it's common
+    #to actually use these tags this way.
+    NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
+
+    #Lists can contain other lists, but there are restrictions.
+    NESTABLE_LIST_TAGS = { 'ol' : [],
+                           'ul' : [],
+                           'li' : ['ul', 'ol'],
+                           'dl' : [],
+                           'dd' : ['dl'],
+                           'dt' : ['dl'] }
+
+    #Tables can contain other tables, but there are restrictions.
+    NESTABLE_TABLE_TAGS = {'table' : [],
+                           'tr' : ['table', 'tbody', 'tfoot', 'thead'],
+                           'td' : ['tr'],
+                           'th' : ['tr'],
+                           'thead' : ['table'],
+                           'tbody' : ['table'],
+                           'tfoot' : ['table'],
+                           }
+
+    NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre']
+
+    #If one of these tags is encountered, all tags up to the next tag of
+    #this type are popped.
+    RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
+                                     NON_NESTABLE_BLOCK_TAGS,
+                                     NESTABLE_LIST_TAGS,
+                                     NESTABLE_TABLE_TAGS)
+
+    NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
+                                NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
+
+    # Used to detect the charset in a META tag; see start_meta
+    CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M)
+
+    def extractCharsetFromMeta(self, attrs):
+        """Beautiful Soup can detect a charset included in a META tag,
+        try to convert the document to that charset, and re-parse the
+        document from the beginning."""
+        httpEquiv = None
+        contentType = None
+        contentTypeIndex = None
+        tagNeedsEncodingSubstitution = False
+
+        for i in range(0, len(attrs)):
+            key, value = attrs[i]
+            key = key.lower()
+            if key == 'http-equiv':
+                httpEquiv = value
+            elif key == 'content':
+                contentType = value
+                contentTypeIndex = i
+
+        if httpEquiv and contentType: # It's an interesting meta tag.
+            match = self.CHARSET_RE.search(contentType)
+            if match:
+                if (self.declaredHTMLEncoding is not None or
+                    self.originalEncoding == self.fromEncoding):
+                    # An HTML encoding was sniffed while converting
+                    # the document to Unicode, or an HTML encoding was
+                    # sniffed during a previous pass through the
+                    # document, or an encoding was specified
+                    # explicitly and it worked. Rewrite the meta tag.
+                    def rewrite(match):
+                        return match.group(1) + "%SOUP-ENCODING%"
+                    newAttr = self.CHARSET_RE.sub(rewrite, contentType)
+                    attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
+                                               newAttr)
+                    tagNeedsEncodingSubstitution = True
+                else:
+                    # This is our first pass through the document.
+                    # Go through it again with the encoding information.
+                    newCharset = match.group(3)
+                    if newCharset and newCharset != self.originalEncoding:
+                        self.declaredHTMLEncoding = newCharset
+                        self._feed(self.declaredHTMLEncoding)
+                        raise StopParsing
+                    pass
+        tag = self.unknown_starttag("meta", attrs)
+        if tag and tagNeedsEncodingSubstitution:
+            tag.containsSubstitutions = True
+
+
+class StopParsing(Exception):
+    pass
+
+class ICantBelieveItsBeautifulSoup(BeautifulSoup):
+
+    """The BeautifulSoup class is oriented towards skipping over
+    common HTML errors like unclosed tags. However, sometimes it makes
+    errors of its own. For instance, consider this fragment:
+
+     <b>Foo<b>Bar</b></b>
+
+    This is perfectly valid (if bizarre) HTML. However, the
+    BeautifulSoup class will implicitly close the first b tag when it
+    encounters the second 'b'. It will think the author wrote
+    "<b>Foo<b>Bar", and didn't close the first 'b' tag, because
+    there's no real-world reason to bold something that's already
+    bold. When it encounters '</b></b>' it will close two more 'b'
+    tags, for a grand total of three tags closed instead of two. This
+    can throw off the rest of your document structure. The same is
+    true of a number of other tags, listed below.
+
+    It's much more common for someone to forget to close a 'b' tag
+    than to actually use nested 'b' tags, and the BeautifulSoup class
+    handles the common case. This class handles the not-co-common
+    case: where you can't believe someone wrote what they did, but
+    it's valid HTML and BeautifulSoup screwed up by assuming it
+    wouldn't be."""
+
+    I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
+     ['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
+      'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
+      'big']
+
+    I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript']
+
+    NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
+                                I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
+                                I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
+
+class MinimalSoup(BeautifulSoup):
+    """The MinimalSoup class is for parsing HTML that contains
+    pathologically bad markup. It makes no assumptions about tag
+    nesting, but it does know which tags are self-closing, that
+    <script> tags contain Javascript and should not be parsed, that
+    META tags may contain encoding information, and so on.
+
+    This also makes it better for subclassing than BeautifulStoneSoup
+    or BeautifulSoup."""
+
+    RESET_NESTING_TAGS = buildTagMap('noscript')
+    NESTABLE_TAGS = {}
+
+class BeautifulSOAP(BeautifulStoneSoup):
+    """This class will push a tag with only a single string child into
+    the tag's parent as an attribute. The attribute's name is the tag
+    name, and the value is the string child. An example should give
+    the flavor of the change:
+
+    <foo><bar>baz</bar></foo>
+     =>
+    <foo bar="baz"><bar>baz</bar></foo>
+
+    You can then access fooTag['bar'] instead of fooTag.barTag.string.
+
+    This is, of course, useful for scraping structures that tend to
+    use subelements instead of attributes, such as SOAP messages. Note
+    that it modifies its input, so don't print the modified version
+    out.
+
+    I'm not sure how many people really want to use this class; let me
+    know if you do. Mainly I like the name."""
+
+    def popTag(self):
+        if len(self.tagStack) > 1:
+            tag = self.tagStack[-1]
+            parent = self.tagStack[-2]
+            parent._getAttrMap()
+            if (isinstance(tag, Tag) and len(tag.contents) == 1 and
+                isinstance(tag.contents[0], NavigableString) and
+                not parent.attrMap.has_key(tag.name)):
+                parent[tag.name] = tag.contents[0]
+        BeautifulStoneSoup.popTag(self)
+
+#Enterprise class names! It has come to our attention that some people
+#think the names of the Beautiful Soup parser classes are too silly
+#and "unprofessional" for use in enterprise screen-scraping. We feel
+#your pain! For such-minded folk, the Beautiful Soup Consortium And
+#All-Night Kosher Bakery recommends renaming this file to
+#"RobustParser.py" (or, in cases of extreme enterprisiness,
+#"RobustParserBeanInterface.class") and using the following
+#enterprise-friendly class aliases:
+class RobustXMLParser(BeautifulStoneSoup):
+    pass
+class RobustHTMLParser(BeautifulSoup):
+    pass
+class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
+    pass
+class RobustInsanelyWackAssHTMLParser(MinimalSoup):
+    pass
+class SimplifyingSOAPParser(BeautifulSOAP):
+    pass
+
+######################################################
+#
+# Bonus library: Unicode, Dammit
+#
+# This class forces XML data into a standard format (usually to UTF-8
+# or Unicode).  It is heavily based on code from Mark Pilgrim's
+# Universal Feed Parser. It does not rewrite the XML or HTML to
+# reflect a new encoding: that happens in BeautifulStoneSoup.handle_pi
+# (XML) and BeautifulSoup.start_meta (HTML).
+
+# Autodetects character encodings.
+# Download from http://chardet.feedparser.org/
+try:
+    import chardet
+#    import chardet.constants
+#    chardet.constants._debug = 1
+except ImportError:
+    chardet = None
+
+# cjkcodecs and iconv_codec make Python know about more character encodings.
+# Both are available from http://cjkpython.i18n.org/
+# They're built in if you use Python 2.4.
+try:
+    import cjkcodecs.aliases
+except ImportError:
+    pass
+try:
+    import iconv_codec
+except ImportError:
+    pass
+
+class UnicodeDammit:
+    """A class for detecting the encoding of a *ML document and
+    converting it to a Unicode string. If the source encoding is
+    windows-1252, can replace MS smart quotes with their HTML or XML
+    equivalents."""
+
+    # This dictionary maps commonly seen values for "charset" in HTML
+    # meta tags to the corresponding Python codec names. It only covers
+    # values that aren't in Python's aliases and can't be determined
+    # by the heuristics in find_codec.
+    CHARSET_ALIASES = { "macintosh" : "mac-roman",
+                        "x-sjis" : "shift-jis" }
+
+    def __init__(self, markup, overrideEncodings=[],
+                 smartQuotesTo='xml', isHTML=False):
+        self.declaredHTMLEncoding = None
+        self.markup, documentEncoding, sniffedEncoding = \
+                     self._detectEncoding(markup, isHTML)
+        self.smartQuotesTo = smartQuotesTo
+        self.triedEncodings = []
+        if markup == '' or isinstance(markup, unicode):
+            self.originalEncoding = None
+            self.unicode = unicode(markup)
+            return
+
+        u = None
+        for proposedEncoding in overrideEncodings:
+            u = self._convertFrom(proposedEncoding)
+            if u: break
+        if not u:
+            for proposedEncoding in (documentEncoding, sniffedEncoding):
+                u = self._convertFrom(proposedEncoding)
+                if u: break
+
+        # If no luck and we have auto-detection library, try that:
+        if not u and chardet and not isinstance(self.markup, unicode):
+            u = self._convertFrom(chardet.detect(self.markup)['encoding'])
+
+        # As a last resort, try utf-8 and windows-1252:
+        if not u:
+            for proposed_encoding in ("utf-8", "windows-1252"):
+                u = self._convertFrom(proposed_encoding)
+                if u: break
+
+        self.unicode = u
+        if not u: self.originalEncoding = None
+
+    def _subMSChar(self, match):
+        """Changes a MS smart quote character to an XML or HTML
+        entity."""
+        orig = match.group(1)
+        sub = self.MS_CHARS.get(orig)
+        if type(sub) == types.TupleType:
+            if self.smartQuotesTo == 'xml':
+                sub = '&#x'.encode() + sub[1].encode() + ';'.encode()
+            else:
+                sub = '&'.encode() + sub[0].encode() + ';'.encode()
+        else:
+            sub = sub.encode()
+        return sub
+
+    def _convertFrom(self, proposed):
+        proposed = self.find_codec(proposed)
+        if not proposed or proposed in self.triedEncodings:
+            return None
+        self.triedEncodings.append(proposed)
+        markup = self.markup
+
+        # Convert smart quotes to HTML if coming from an encoding
+        # that might have them.
+        if self.smartQuotesTo and proposed.lower() in("windows-1252",
+                                                      "iso-8859-1",
+                                                      "iso-8859-2"):
+            smart_quotes_re = "([\x80-\x9f])"
+            smart_quotes_compiled = re.compile(smart_quotes_re)
+            markup = smart_quotes_compiled.sub(self._subMSChar, markup)
+
+        try:
+            # print "Trying to convert document to %s" % proposed
+            u = self._toUnicode(markup, proposed)
+            self.markup = u
+            self.originalEncoding = proposed
+        except Exception, e:
+            # print "That didn't work!"
+            # print e
+            return None
+        #print "Correct encoding: %s" % proposed
+        return self.markup
+
+    def _toUnicode(self, data, encoding):
+        '''Given a string and its encoding, decodes the string into Unicode.
+        %encoding is a string recognized by encodings.aliases'''
+
+        # strip Byte Order Mark (if present)
+        if (len(data) >= 4) and (data[:2] == '\xfe\xff') \
+               and (data[2:4] != '\x00\x00'):
+            encoding = 'utf-16be'
+            data = data[2:]
+        elif (len(data) >= 4) and (data[:2] == '\xff\xfe') \
+                 and (data[2:4] != '\x00\x00'):
+            encoding = 'utf-16le'
+            data = data[2:]
+        elif data[:3] == '\xef\xbb\xbf':
+            encoding = 'utf-8'
+            data = data[3:]
+        elif data[:4] == '\x00\x00\xfe\xff':
+            encoding = 'utf-32be'
+            data = data[4:]
+        elif data[:4] == '\xff\xfe\x00\x00':
+            encoding = 'utf-32le'
+            data = data[4:]
+        newdata = unicode(data, encoding)
+        return newdata
+
+    def _detectEncoding(self, xml_data, isHTML=False):
+        """Given a document, tries to detect its XML encoding."""
+        xml_encoding = sniffed_xml_encoding = None
+        try:
+            if xml_data[:4] == '\x4c\x6f\xa7\x94':
+                # EBCDIC
+                xml_data = self._ebcdic_to_ascii(xml_data)
+            elif xml_data[:4] == '\x00\x3c\x00\x3f':
+                # UTF-16BE
+                sniffed_xml_encoding = 'utf-16be'
+                xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
+            elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') \
+                     and (xml_data[2:4] != '\x00\x00'):
+                # UTF-16BE with BOM
+                sniffed_xml_encoding = 'utf-16be'
+                xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
+            elif xml_data[:4] == '\x3c\x00\x3f\x00':
+                # UTF-16LE
+                sniffed_xml_encoding = 'utf-16le'
+                xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
+            elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and \
+                     (xml_data[2:4] != '\x00\x00'):
+                # UTF-16LE with BOM
+                sniffed_xml_encoding = 'utf-16le'
+                xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
+            elif xml_data[:4] == '\x00\x00\x00\x3c':
+                # UTF-32BE
+                sniffed_xml_encoding = 'utf-32be'
+                xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
+            elif xml_data[:4] == '\x3c\x00\x00\x00':
+                # UTF-32LE
+                sniffed_xml_encoding = 'utf-32le'
+                xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
+            elif xml_data[:4] == '\x00\x00\xfe\xff':
+                # UTF-32BE with BOM
+                sniffed_xml_encoding = 'utf-32be'
+                xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
+            elif xml_data[:4] == '\xff\xfe\x00\x00':
+                # UTF-32LE with BOM
+                sniffed_xml_encoding = 'utf-32le'
+                xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
+            elif xml_data[:3] == '\xef\xbb\xbf':
+                # UTF-8 with BOM
+                sniffed_xml_encoding = 'utf-8'
+                xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
+            else:
+                sniffed_xml_encoding = 'ascii'
+                pass
+        except:
+            xml_encoding_match = None
+        xml_encoding_re = '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode()
+        xml_encoding_match = re.compile(xml_encoding_re).match(xml_data)
+        if not xml_encoding_match and isHTML:
+            meta_re = '<\s*meta[^>]+charset=([^>]*?)[;\'">]'.encode()
+            regexp = re.compile(meta_re, re.I)
+            xml_encoding_match = regexp.search(xml_data)
+        if xml_encoding_match is not None:
+            xml_encoding = xml_encoding_match.groups()[0].decode(
+                'ascii').lower()
+            if isHTML:
+                self.declaredHTMLEncoding = xml_encoding
+            if sniffed_xml_encoding and \
+               (xml_encoding in ('iso-10646-ucs-2', 'ucs-2', 'csunicode',
+                                 'iso-10646-ucs-4', 'ucs-4', 'csucs4',
+                                 'utf-16', 'utf-32', 'utf_16', 'utf_32',
+                                 'utf16', 'u16')):
+                xml_encoding = sniffed_xml_encoding
+        return xml_data, xml_encoding, sniffed_xml_encoding
+
+
+    def find_codec(self, charset):
+        return self._codec(self.CHARSET_ALIASES.get(charset, charset)) \
+               or (charset and self._codec(charset.replace("-", ""))) \
+               or (charset and self._codec(charset.replace("-", "_"))) \
+               or charset
+
+    def _codec(self, charset):
+        if not charset: return charset
+        codec = None
+        try:
+            codecs.lookup(charset)
+            codec = charset
+        except (LookupError, ValueError):
+            pass
+        return codec
+
+    EBCDIC_TO_ASCII_MAP = None
+    def _ebcdic_to_ascii(self, s):
+        c = self.__class__
+        if not c.EBCDIC_TO_ASCII_MAP:
+            emap = (0,1,2,3,156,9,134,127,151,141,142,11,12,13,14,15,
+                    16,17,18,19,157,133,8,135,24,25,146,143,28,29,30,31,
+                    128,129,130,131,132,10,23,27,136,137,138,139,140,5,6,7,
+                    144,145,22,147,148,149,150,4,152,153,154,155,20,21,158,26,
+                    32,160,161,162,163,164,165,166,167,168,91,46,60,40,43,33,
+                    38,169,170,171,172,173,174,175,176,177,93,36,42,41,59,94,
+                    45,47,178,179,180,181,182,183,184,185,124,44,37,95,62,63,
+                    186,187,188,189,190,191,192,193,194,96,58,35,64,39,61,34,
+                    195,97,98,99,100,101,102,103,104,105,196,197,198,199,200,
+                    201,202,106,107,108,109,110,111,112,113,114,203,204,205,
+                    206,207,208,209,126,115,116,117,118,119,120,121,122,210,
+                    211,212,213,214,215,216,217,218,219,220,221,222,223,224,
+                    225,226,227,228,229,230,231,123,65,66,67,68,69,70,71,72,
+                    73,232,233,234,235,236,237,125,74,75,76,77,78,79,80,81,
+                    82,238,239,240,241,242,243,92,159,83,84,85,86,87,88,89,
+                    90,244,245,246,247,248,249,48,49,50,51,52,53,54,55,56,57,
+                    250,251,252,253,254,255)
+            import string
+            c.EBCDIC_TO_ASCII_MAP = string.maketrans( \
+            ''.join(map(chr, range(256))), ''.join(map(chr, emap)))
+        return s.translate(c.EBCDIC_TO_ASCII_MAP)
+
+    MS_CHARS = { '\x80' : ('euro', '20AC'),
+                 '\x81' : ' ',
+                 '\x82' : ('sbquo', '201A'),
+                 '\x83' : ('fnof', '192'),
+                 '\x84' : ('bdquo', '201E'),
+                 '\x85' : ('hellip', '2026'),
+                 '\x86' : ('dagger', '2020'),
+                 '\x87' : ('Dagger', '2021'),
+                 '\x88' : ('circ', '2C6'),
+                 '\x89' : ('permil', '2030'),
+                 '\x8A' : ('Scaron', '160'),
+                 '\x8B' : ('lsaquo', '2039'),
+                 '\x8C' : ('OElig', '152'),
+                 '\x8D' : '?',
+                 '\x8E' : ('#x17D', '17D'),
+                 '\x8F' : '?',
+                 '\x90' : '?',
+                 '\x91' : ('lsquo', '2018'),
+                 '\x92' : ('rsquo', '2019'),
+                 '\x93' : ('ldquo', '201C'),
+                 '\x94' : ('rdquo', '201D'),
+                 '\x95' : ('bull', '2022'),
+                 '\x96' : ('ndash', '2013'),
+                 '\x97' : ('mdash', '2014'),
+                 '\x98' : ('tilde', '2DC'),
+                 '\x99' : ('trade', '2122'),
+                 '\x9a' : ('scaron', '161'),
+                 '\x9b' : ('rsaquo', '203A'),
+                 '\x9c' : ('oelig', '153'),
+                 '\x9d' : '?',
+                 '\x9e' : ('#x17E', '17E'),
+                 '\x9f' : ('Yuml', ''),}
+
+#######################################################################
+
+
+#By default, act as an HTML pretty-printer.
+if __name__ == '__main__':
+    import sys
+    soup = BeautifulSoup(sys.stdin)
+    print soup.prettify()
Binary file scripts/python/findpackage/BeautifulSoup.pyc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/findpackage/findpackage.py	Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,178 @@
+# findpackage.py - finds which Symbian package contains a file (if any) by searching opengrok
+
+import urllib2
+import urllib
+import os.path
+import cookielib
+import sys
+import getpass
+from BeautifulSoup import BeautifulSoup
+
+user_agent = 'findpackage.py script'
+headers = { 'User-Agent' : user_agent }
+top_level_url = "http://developer.symbian.org"
+
+COOKIEFILE = 'cookies.lwp'
+# the path and filename to save your cookies in
+
+# importing cookielib worked
+urlopen = urllib2.urlopen
+Request = urllib2.Request
+cj = cookielib.LWPCookieJar()
+
+# This is a subclass of FileCookieJar
+# that has useful load and save methods
+if os.path.isfile(COOKIEFILE):
+	cj.load(COOKIEFILE)
+	
+# Now we need to get our Cookie Jar
+# installed in the opener;
+# for fetching URLs
+opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
+urllib2.install_opener(opener)
+
+def login():
+	loginurl = 'https://developer.symbian.org/main/user_profile/login.php'
+	
+	print >> sys.stderr, 'username: ',
+	username=sys.stdin.readline().strip()
+	password=getpass.getpass()
+	
+	values = {'username' : username,
+	          'password' : password,
+	          'submit': 'Login'}
+	          
+	headers = { 'User-Agent' : user_agent }
+	
+	
+	data = urllib.urlencode(values)
+	req = urllib2.Request(loginurl, data, headers)
+
+	response = urllib2.urlopen(req)
+	doc=response.read()      
+
+	if doc.find('Please try again') != -1:
+		print >> sys.stderr, 'Login failed'
+		return False
+	
+	cj.save(COOKIEFILE) 
+	return True
+
+def findpackageforlibrary(filename, project):
+
+	dotpos = filename.find('.')
+	
+	if dotpos != -1:
+		searchterm = filename[0:dotpos]
+	else:
+		searchterm = filename
+		
+	searchurl = 'https://developer.symbian.org/xref/sfl/search?q="TARGET+%s"&defs=&refs=&path=&hist=&project=%%2F%s'
+	url = searchurl % (searchterm, project)
+	req = urllib2.Request(url)
+	
+	response = urllib2.urlopen(req)
+	
+	doc=response.read()
+	
+	if doc.find('Restricted access') != -1:
+		if(login()):
+			# try again after login
+			response = urllib2.urlopen(req)
+			doc=response.read()
+		else:
+			return False
+			
+	
+	# BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
+	try:
+		bodystart=doc.find('<body>')
+		doc = doc[bodystart:]
+	except:
+		pass
+			
+	soup=BeautifulSoup(doc)
+	
+	# let's hope the HTML format never changes...
+	results=soup.findAll('div', id='results')
+	pkgname=''
+	try:
+		temp=results[0].a.string
+		fspos=temp.find('sf')
+		temp=temp[fspos+3:]
+		pkgpos=temp.find('/')
+		temp=temp[pkgpos+1:]
+	
+		endpkgpos=temp.find('/')
+		pkgname=temp[0:endpkgpos]
+	except:
+		print 'error: file \'%s\' not found in opengrok' % filename
+	else:
+		print 'first package with target %s: %s' % (searchterm,pkgname)
+	
+	return True
+			
+def findpackageforheader(filename, project):
+	searchterm=filename
+	searchurl = 'https://developer.symbian.org/xref/sfl/search?q=&defs=&refs=&path=%s&hist=&project=%%2F%s'
+	url = searchurl % (searchterm, project)
+
+	req = urllib2.Request(url)
+	
+	response = urllib2.urlopen(req)
+	
+	doc=response.read()
+	
+	if doc.find('Restricted access') != -1:
+		if(login()):
+			# try again after login
+			response = urllib2.urlopen(req)
+			doc=response.read()
+		else:
+			return False
+			
+	
+	# BeatifulSoup chokes on some javascript, so we cut away everything before the <body>
+	try:
+		bodystart=doc.find('<body>')
+		doc = doc[bodystart:]
+	except:
+		pass
+			
+	soup=BeautifulSoup(doc)
+	
+	# let's hope the HTML format never changes...
+	results=soup.findAll('div', id='results')
+	pkgname=''
+	try:
+		temp=results[0].a.string
+		fspos=temp.find('sf')
+		temp=temp[fspos+3:]
+		pkgpos=temp.find('/')
+		temp=temp[pkgpos+1:]
+	
+		endpkgpos=temp.find('/')
+		pkgname=temp[0:endpkgpos]
+	except:
+		print 'error: file \'%s\' not found in opengrok' % filename
+	else:
+		print 'package:', pkgname
+	
+	return True
+		
+
+if len(sys.argv) < 2:
+	print 'usage: findpackage.py <filename> [project]'
+	exit()
+
+filename = sys.argv[1]
+
+if len(sys.argv) == 3:
+	project = sys.argv[2]
+else:
+	project = 'Symbian2'
+
+if filename.endswith('.lib') or filename.endswith('.dll'):
+	findpackageforlibrary(filename, project)
+else:
+	findpackageforheader(filename, project)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/ispublic/ispublic.py	Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,38 @@
+import sys
+
+def strip_path(pathname):
+	pathname = pathname.strip()
+	while pathname.find('/') != -1:
+		x=pathname.find('/')
+		pathname = pathname[x+1:]
+
+	while pathname.find('\\') != -1:
+		x=pathname.find('\\')
+		pathname = pathname[x+1:]		
+	
+	#print 'strip_path returning %s' % pathname
+	return pathname
+
+
+res_f = open('symbian_2_public_api_list.txt')
+
+pubapis=[]
+
+for line in res_f:
+	pathname = line[0:len(line)-1]
+	
+	filename = strip_path(pathname).lower()
+	pubapis.append(filename)
+	
+
+	
+def is_public(shortname):
+	fname=strip_path(shortname).lower()
+	#print 'finding %s in public apis' % fname
+	
+	return fname in pubapis
+
+if (is_public(sys.argv[1])):
+	print 'Public'
+else:
+	print 'Platform'
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/python/ispublic/symbian_2_public_api_list.txt	Wed Nov 18 14:00:16 2009 +0000
@@ -0,0 +1,3648 @@
+epoc32/include/_sdpdefs.h
+epoc32/include/_sipcodecdefs.h
+epoc32/include/accmonitor.h
+epoc32/include/accmonitorcapabilities.h
+epoc32/include/accmonitorinfo.h
+epoc32/include/accmonitorinfo.inl
+epoc32/include/activeapdb.h
+epoc32/include/activefavouritesdbnotifier.h
+epoc32/include/aiftool.rh
+epoc32/include/aiwcommon.h
+epoc32/include/aiwcommon.hrh
+epoc32/include/aiwcommon.rh
+epoc32/include/aiwgenericparam.h
+epoc32/include/aiwgenericparam.hrh
+epoc32/include/aiwgenericparam.inl
+epoc32/include/aiwservicehandler.h
+epoc32/include/aiwvariant.h
+epoc32/include/aiwvariant.inl
+epoc32/include/aiwvarianttype.hrh
+epoc32/include/aknanim.hrh
+epoc32/include/aknanim.rh
+epoc32/include/aknapp.h
+epoc32/include/aknappui.h
+epoc32/include/aknbiditextutils.h
+epoc32/include/aknbitmapanimation.h
+epoc32/include/aknborders.h
+epoc32/include/aknbutton.h
+epoc32/include/akncheckboxsettingpage.h
+epoc32/include/aknchoicelist.h
+epoc32/include/aknclearer.h
+epoc32/include/akncolourselectiongrid.h
+epoc32/include/akncommondialogs.h
+epoc32/include/akncommondialogsdynmem.h
+epoc32/include/akncontext.h
+epoc32/include/akncontrol.h
+epoc32/include/akncustomtreeordering.h
+epoc32/include/akndef.hrh
+epoc32/include/akndescarraydecorator.h
+epoc32/include/akndialog.h
+epoc32/include/akndlgshut.h
+epoc32/include/akndoc.h
+epoc32/include/akneditstateindicator.h
+epoc32/include/aknedsts.h
+epoc32/include/aknedstsobs.h
+epoc32/include/aknfontaccess.h
+epoc32/include/aknfontcategory.hrh
+epoc32/include/aknfontidoffsets.hrh
+epoc32/include/aknform.h
+epoc32/include/akngloballistmsgquery.h
+epoc32/include/akngmsstylegrid.h
+epoc32/include/akngrid.h
+epoc32/include/akngridm.h
+epoc32/include/akngridview.h
+epoc32/include/aknhlistpanic.h
+epoc32/include/akniconarray.h
+epoc32/include/akniconobserver.h
+epoc32/include/akniconsrvclient.h
+epoc32/include/akniconutils.inl
+epoc32/include/aknindicatorcontainer.h
+epoc32/include/akninfopopupnotecontroller.h
+epoc32/include/akninfrm.h
+epoc32/include/akninputlanguageinfo.h
+epoc32/include/aknintermediate.h
+epoc32/include/akninternaliconutils.h
+epoc32/include/aknipfed.h
+epoc32/include/aknlayout2id.h
+epoc32/include/aknlistboxlayoutdecorator.h
+epoc32/include/aknlistboxsettingpage.h
+epoc32/include/aknlistquerycontrol.h
+epoc32/include/aknlistquerydialog.h
+epoc32/include/aknlists.h
+epoc32/include/aknlocationed.h
+epoc32/include/aknlongtapdetector.h
+epoc32/include/aknmessagequerycontrol.h
+epoc32/include/aknmessagequerydialog.h
+epoc32/include/aknmfnecommandobserver.h
+epoc32/include/aknmfnesettingpage.h
+epoc32/include/aknmultilinequerycontrol.h
+epoc32/include/aknnavide.h
+epoc32/include/aknnavidecoratorobserver.h
+epoc32/include/aknnavilabel.h
+epoc32/include/aknnaviobserver.h
+epoc32/include/aknnotecontrol.h
+epoc32/include/aknnotedialog.h
+epoc32/include/aknnotewrappers.h
+epoc32/include/aknnumed.h
+epoc32/include/aknnumedwin.h
+epoc32/include/aknnumseced.h
+epoc32/include/aknpanic.h
+epoc32/include/aknpasswordsettingpage.h
+epoc32/include/aknpictographdrawerinterface.h
+epoc32/include/aknpictographinterface.h
+epoc32/include/aknpictographinterface.inl
+epoc32/include/aknpointereventsuppressor.h
+epoc32/include/aknpopup.h
+epoc32/include/aknpopupfader.h
+epoc32/include/aknpopupfield.h
+epoc32/include/aknpopupfieldlist.h
+epoc32/include/aknpopupfieldtext.h
+epoc32/include/aknpopupheadingpane.h
+epoc32/include/aknpopuplayout.h
+epoc32/include/aknpopupnotify.h
+epoc32/include/aknpopupsettingpage.h
+epoc32/include/aknpreviewpopupcontentprovider.h
+epoc32/include/aknpreviewpopupcontroller.h
+epoc32/include/aknpreviewpopupobserver.h
+epoc32/include/aknprogressdialog.h
+epoc32/include/aknprogresstimer.h
+epoc32/include/aknquerycontrol.h
+epoc32/include/aknquerydata.h
+epoc32/include/aknquerydialog.h
+epoc32/include/aknqueryvalue.h
+epoc32/include/aknqueryvaluedate.h
+epoc32/include/aknqueryvalueduration.h
+epoc32/include/aknqueryvaluenumber.h
+epoc32/include/aknqueryvaluephone.h
+epoc32/include/aknqueryvaluetext.h
+epoc32/include/aknqueryvaluetime.h
+epoc32/include/aknradiobuttonsettingpage.h
+epoc32/include/aknsbasicbackgroundcontrolcontext.h
+epoc32/include/aknscbut.h
+epoc32/include/aknsconstants.h
+epoc32/include/aknsconstants.hrh
+epoc32/include/aknscontrolcontext.h
+epoc32/include/aknscreenmode.h
+epoc32/include/aknscrlb.h
+epoc32/include/aknsdatacontext.h
+epoc32/include/aknsdrawutils.h
+epoc32/include/aknselectionlist.h
+epoc32/include/aknserverapp.h
+epoc32/include/aknsettingitemlist.h
+epoc32/include/aknsettingpage.h
+epoc32/include/aknsinglecolumnstyletreelist.h
+epoc32/include/aknsinglestyletreelist.h
+epoc32/include/aknsitemid.inl
+epoc32/include/aknslayeredbackgroundcontrolcontext.h
+epoc32/include/aknslider.h
+epoc32/include/aknslidersettingpage.h
+epoc32/include/aknslistboxbackgroundcontrolcontext.h
+epoc32/include/aknsoundinfo.h
+epoc32/include/aknsoundsystem.h
+epoc32/include/aknsrleffect.h
+epoc32/include/aknsrleffectcontext.h
+epoc32/include/aknsrlparameter.h
+epoc32/include/aknstaticnotedialog.h
+epoc32/include/aknstyluspopupmenu.h
+epoc32/include/aknswallpaperutils.h
+epoc32/include/akntabobserver.h
+epoc32/include/akntextsettingpage.h
+epoc32/include/akntitlepaneobserver.h
+epoc32/include/akntoolbar.h
+epoc32/include/akntoolbarextension.h
+epoc32/include/akntoolbarobserver.h
+epoc32/include/akntouchpaneobserver.h
+epoc32/include/akntreelist.h
+epoc32/include/akntreelistconstants.h
+epoc32/include/akntreelistobserver.h
+epoc32/include/aknuniteditor.h
+epoc32/include/aknview.h
+epoc32/include/aknviewappui.h
+epoc32/include/aknvolumecontrol.h
+epoc32/include/aknvolumesettingpage.h
+epoc32/include/aknwaitdialog.h
+epoc32/include/aknwaitnotewrapper.h
+epoc32/include/aknwseventobserver.h
+epoc32/include/animation.h
+epoc32/include/animationconfig.h
+epoc32/include/animationdataprovider.h
+epoc32/include/animationevents.h
+epoc32/include/animationframe.h
+epoc32/include/animationgroup.h
+epoc32/include/animationmixins.h
+epoc32/include/animationticker.h
+epoc32/include/animationtls.h
+epoc32/include/animator.h
+epoc32/include/ansicomp.h
+epoc32/include/apaccesspointitem.h
+epoc32/include/apacmdln.h
+epoc32/include/apadbase.h
+epoc32/include/apadef.h
+epoc32/include/apaflrec.h
+epoc32/include/apaid.h
+epoc32/include/apamdr.h
+epoc32/include/apasvst.h
+epoc32/include/apcaptionfile.rh
+epoc32/include/apdatahandler.h
+epoc32/include/apengineconsts.h
+epoc32/include/apenginever.h
+epoc32/include/apfctlf.h
+epoc32/include/apffndr.h
+epoc32/include/apgcli.h
+epoc32/include/apgctl.h
+epoc32/include/apgdoor.h
+epoc32/include/apgicnfl.h
+epoc32/include/apgtask.h
+epoc32/include/apgwgnam.h
+epoc32/include/aplistitem.h
+epoc32/include/aplistitemlist.h
+epoc32/include/apmrec.h
+epoc32/include/apmrec.inl
+epoc32/include/apmstd.h
+epoc32/include/apnetworkitem.h
+epoc32/include/apnetworkitemlist.h
+epoc32/include/apnetworks.h
+epoc32/include/apparc.h
+epoc32/include/appinfo.rh
+epoc32/include/apselect.h
+epoc32/include/apsettingshandlercommons.h
+epoc32/include/apsettingshandlerui.h
+epoc32/include/aputils.h
+epoc32/include/asaltdefs.h
+epoc32/include/ascliclientutils.h
+epoc32/include/asclidefinitions.h
+epoc32/include/asclisession.h
+epoc32/include/asclisoundplay.h
+epoc32/include/asn1cons.h
+epoc32/include/asn1dec.h
+epoc32/include/asn1enc.h
+epoc32/include/asshdalarm.h
+epoc32/include/asshdbitflags.h
+epoc32/include/asshddefs.h
+epoc32/include/attrlut.h
+epoc32/include/audioeffectbase.h
+epoc32/include/audioeffectdata.h
+epoc32/include/audioequalizerbase.h
+epoc32/include/audioequalizerdata.h
+epoc32/include/audioequalizerutility.h
+epoc32/include/audioequalizerutilitydata.h
+epoc32/include/authority16.h
+epoc32/include/authority8.h
+epoc32/include/authoritycommon.h
+epoc32/include/avkon.hrh
+epoc32/include/avkon.rh
+epoc32/include/avkon.rsg
+epoc32/include/avkonicons.hrh
+epoc32/include/babackup.h
+epoc32/include/babitflags.h
+epoc32/include/bacell.h
+epoc32/include/bacline.h
+epoc32/include/baclipb.h
+epoc32/include/bacntf.h
+epoc32/include/badef.rh
+epoc32/include/badesca.h
+epoc32/include/baerrrsvr.rh
+epoc32/include/bafindf.h
+epoc32/include/baliba.h
+epoc32/include/bamatch.h
+epoc32/include/bamdesca.h
+epoc32/include/banamedplugins.h
+epoc32/include/banddev.h
+epoc32/include/barsc.h
+epoc32/include/barsc2.h
+epoc32/include/barsread.h
+epoc32/include/barsread2.h
+epoc32/include/basched.h
+epoc32/include/basicanimation.h
+epoc32/include/bassboostbase.h
+epoc32/include/bassboostdata.h
+epoc32/include/bassnd.h
+epoc32/include/bautils.h
+epoc32/include/bcardeng.h
+epoc32/include/bidi.h
+epoc32/include/biditext.h
+epoc32/include/bidivisual.h
+epoc32/include/bif.h
+epoc32/include/biftool2.rh
+epoc32/include/biodb.h
+epoc32/include/biouids.h
+epoc32/include/bitdev.h
+epoc32/include/bitdev.inl
+epoc32/include/bitmap.h
+epoc32/include/bitmaptransforms.h
+epoc32/include/bitmaptransforms.inl
+epoc32/include/bitstd.h
+epoc32/include/bluetooth/hci/hcierrors.h
+epoc32/include/bmpancli.h
+epoc32/include/brctldefs.h
+epoc32/include/brctldialogsprovider.h
+epoc32/include/brctldownloadobserver.h
+epoc32/include/brctlinterface.h
+epoc32/include/brctllayoutobserver.h
+epoc32/include/brctllinkresolver.h
+epoc32/include/brctlsoftkeysobserver.h
+epoc32/include/brctlspecialloadobserver.h
+epoc32/include/brctlwindowobserver.h
+epoc32/include/browserplugininterface.h
+epoc32/include/bsp.h
+epoc32/include/bsp.inl
+epoc32/include/bt_sock.h
+epoc32/include/bt_subscribe.h
+epoc32/include/btdevice.h
+epoc32/include/btextnotifiers.h
+epoc32/include/btmanclient.h
+epoc32/include/btmsgtypeuid.h
+epoc32/include/btmtmcmds.h
+epoc32/include/btnotifierapi.h
+epoc32/include/btsdp.h
+epoc32/include/btserversdkcrkeys.h
+epoc32/include/bttypes.h
+epoc32/include/c32comm.h
+epoc32/include/c32comm.inl
+epoc32/include/cacheman.h
+epoc32/include/caf/streamableptrarray.inl
+epoc32/include/cakncommondialogsbase.h
+epoc32/include/caknfilenamepromptdialog.h
+epoc32/include/caknfileselectiondialog.h
+epoc32/include/caknmemoryselectiondialog.h
+epoc32/include/caknmemoryselectiondialogmultidrive.h
+epoc32/include/caknmemoryselectionsettingitem.h
+epoc32/include/caknmemoryselectionsettingitemmultidrive.h
+epoc32/include/caknmemoryselectionsettingpage.h
+epoc32/include/calalarm.h
+epoc32/include/calcategory.h
+epoc32/include/calcategorymanager.h
+epoc32/include/calchangecallback.h
+epoc32/include/calcommon.h
+epoc32/include/calcontent.h
+epoc32/include/caldataexchange.h
+epoc32/include/caldataformat.h
+epoc32/include/calendarconverter.h
+epoc32/include/caleninterimutils.h
+epoc32/include/caleninterimutils2.h
+epoc32/include/calentry.h
+epoc32/include/calentryview.h
+epoc32/include/calinstance.h
+epoc32/include/calinstanceview.h
+epoc32/include/caliterator.h
+epoc32/include/calnotification.h
+epoc32/include/calprogresscallback.h
+epoc32/include/calrrule.h
+epoc32/include/calsession.h
+epoc32/include/caltime.h
+epoc32/include/caluser.h
+epoc32/include/cbioasyncwaiter.h
+epoc32/include/cbnfnode.h
+epoc32/include/cbnfparser.h
+epoc32/include/ccertattributefilter.h
+epoc32/include/cctcertinfo.h
+epoc32/include/cdbcols.h
+epoc32/include/cdblen.h
+epoc32/include/cdbover.inl
+epoc32/include/cdbpreftable.h
+epoc32/include/cdbstore.h
+epoc32/include/cdbstore.inl
+epoc32/include/cdbtemp.h
+epoc32/include/cdirectorylocalizer.h
+epoc32/include/cdownloadmgruibase.h
+epoc32/include/cdownloadmgruidownloadmenu.h
+epoc32/include/cdownloadmgruidownloadslist.h
+epoc32/include/cdownloadmgruilibregistry.h
+epoc32/include/cdownloadmgruiuserinteractions.h
+epoc32/include/cdtdmodel.h
+epoc32/include/cecombrowserplugininterface.h
+epoc32/include/cemailaccounts.h
+epoc32/include/cenrepnotifyhandler.h
+epoc32/include/centralrepository.h
+epoc32/include/certificateapps.h
+epoc32/include/cfragmentedstring.h
+epoc32/include/charactersetconverter.h
+epoc32/include/charactersetconverter.inl
+epoc32/include/charconv.h
+epoc32/include/chttpformencoder.h
+epoc32/include/clfcontentlisting.h
+epoc32/include/clfcontentlisting.hrh
+epoc32/include/clfcontentlisting.rh
+epoc32/include/clkdatetimeview.h
+epoc32/include/clkmdlobserver.h
+epoc32/include/clmkcategoryselectordlg.h
+epoc32/include/clmkeditordlg.h
+epoc32/include/clmklandmarkselectordlg.h
+epoc32/include/clock.h
+epoc32/include/cmapplicationsettingsui.h
+epoc32/include/cmarkedstack.h
+epoc32/include/cmarkedstack.inl
+epoc32/include/cmconnectionmethod.h
+epoc32/include/cmconnectionmethod.inl
+epoc32/include/cmconnectionmethoddef.h
+epoc32/include/cmdefconnvalues.h
+epoc32/include/cmdestination.h
+epoc32/include/cmessageaddress.h
+epoc32/include/cmessagedata.h
+epoc32/include/cmmanager.h
+epoc32/include/cmmanager.inl
+epoc32/include/cmmanagerdef.h
+epoc32/include/cmplugincsddef.h
+epoc32/include/cmplugindialcommondefs.h
+epoc32/include/cmpluginembdestinationdef.h
+epoc32/include/cmpluginhscsddef.h
+epoc32/include/cmpluginpacketdatadef.h
+epoc32/include/cmpluginvpndef.h
+epoc32/include/cmpluginwlandef.h
+epoc32/include/cmsvattachment.h
+epoc32/include/cmsvmimeheaders.h
+epoc32/include/cmsvrecipientlist.h
+epoc32/include/cmsvtechnologytypedefaultmtmsettings.h
+epoc32/include/cnftool.rh
+epoc32/include/cnode.h
+epoc32/include/cnode.inl
+epoc32/include/cnodeleteattribute.h
+epoc32/include/cntdb.h
+epoc32/include/cntdbobs.h
+epoc32/include/cntdef.h
+epoc32/include/cntfield.h
+epoc32/include/cntfilt.h
+epoc32/include/cntfldst.h
+epoc32/include/cntitem.h
+epoc32/include/cntvcard.h
+epoc32/include/cntview.h
+epoc32/include/cntviewbase.h
+epoc32/include/cntviewfindconfig.inl
+epoc32/include/coeaui.h
+epoc32/include/coeccntx.h
+epoc32/include/coecntrl.h
+epoc32/include/coecobs.h
+epoc32/include/coecoloruse.h
+epoc32/include/coecontrolarray.h
+epoc32/include/coedef.h
+epoc32/include/coeerror.h
+epoc32/include/coefepff.h
+epoc32/include/coefont.h
+epoc32/include/coefontprovider.h
+epoc32/include/coehelp.h
+epoc32/include/coeinput.h
+epoc32/include/coemain.h
+epoc32/include/coemain.inl
+epoc32/include/coemop.h
+epoc32/include/coesndpy.h
+epoc32/include/coetextdrawer.h
+epoc32/include/coeutils.h
+epoc32/include/coeview.h
+epoc32/include/commdb.h
+epoc32/include/commdb.inl
+epoc32/include/commdbconnpref.h
+epoc32/include/commdbconnpref.inl
+epoc32/include/commondialogs.hrh
+epoc32/include/commondialogs.rh
+epoc32/include/commonphoneparser.h
+epoc32/include/comms-infras/cftransportmacro.h
+epoc32/include/comms-infras/cs_mobility_apiext.h
+epoc32/include/commsdat.h
+epoc32/include/commsdattypeinfov1_1.h
+epoc32/include/commsdattypesv1_1.h
+epoc32/include/conarc.h
+epoc32/include/concnf.h
+epoc32/include/coneresloader.h
+epoc32/include/confndr.h
+epoc32/include/conlist.h
+epoc32/include/connect/sbdefs.h
+epoc32/include/connpref.h
+epoc32/include/conplugin.rh
+epoc32/include/constd.h
+epoc32/include/contentlistingfactory.h
+epoc32/include/convgeneratedcpp.h
+epoc32/include/convnames.h
+epoc32/include/convutils.h
+epoc32/include/coreapplicationuissdkcrkeys.h
+epoc32/include/cpbkaddressselect.h
+epoc32/include/cpbkcontactchangenotifier.h
+epoc32/include/cpbkcontacteditordlg.h
+epoc32/include/cpbkcontactiter.h
+epoc32/include/cpbkdatasaveappui.h
+epoc32/include/cpbkemailaddressselect.h
+epoc32/include/cpbkemailoversmsaddressselect.h
+epoc32/include/cpbkfieldinfo.h
+epoc32/include/cpbkidlefinder.h
+epoc32/include/cpbkmmsaddressselect.h
+epoc32/include/cpbkmultipleentryfetchdlg.h
+epoc32/include/cpbkphonenumberselect.h
+epoc32/include/cpbkphonenumberselectbase.h
+epoc32/include/cpbkpocaddressselect.h
+epoc32/include/cpbkselectfielddlg.h
+epoc32/include/cpbksingleentryfetchdlg.h
+epoc32/include/cpbksingleitemfetchdlg.h
+epoc32/include/cpbksmsaddressselect.h
+epoc32/include/cpbkvideonumberselect.h
+epoc32/include/cpbkviewstate.h
+epoc32/include/cpbkvoipaddressselect.h
+epoc32/include/crichbio.h
+epoc32/include/crulemarkedstack.h
+epoc32/include/crulemarkedstack.inl
+epoc32/include/cryptopanic.h
+epoc32/include/cryptotokenregistryinfo.rh
+epoc32/include/cs_port.h
+epoc32/include/cs_subconevents.h
+epoc32/include/cs_subconevents.inl
+epoc32/include/cs_subconparams.h
+epoc32/include/cs_subconparams.inl
+epoc32/include/csatelliteinfoui.h
+epoc32/include/csch_cli.h
+epoc32/include/csendasaccounts.h
+epoc32/include/csendasmessagetypes.h
+epoc32/include/csendingserviceinfo.h
+epoc32/include/csmsaccount.h
+epoc32/include/csmsemailfields.h
+epoc32/include/cstack.h
+epoc32/include/cstack.inl
+epoc32/include/csy.rh
+epoc32/include/ct.h
+epoc32/include/ct/mcttokeninterface.h
+epoc32/include/ct/rcpointerarray.h
+epoc32/include/ct/rmpointerarray.h
+epoc32/include/ct/tcttokenhandle.h
+epoc32/include/ct/tcttokenobjecthandle.h
+epoc32/include/customcommandtypes.h
+epoc32/include/d32dbms.h
+epoc32/include/d32dbms.inl
+epoc32/include/d32locd.inl
+epoc32/include/dclcrkeys.h
+epoc32/include/delimitedparser16.h
+epoc32/include/delimitedparser8.h
+epoc32/include/delimitedparsercommon.h
+epoc32/include/delimitedpath16.h
+epoc32/include/delimitedpath8.h
+epoc32/include/delimitedpathsegment16.h
+epoc32/include/delimitedpathsegment8.h
+epoc32/include/delimitedquery16.h
+epoc32/include/delimitedquery8.h
+epoc32/include/dial.h
+epoc32/include/dial.inl
+epoc32/include/dial_consts.h
+epoc32/include/directorylocalizer.rh
+epoc32/include/distanceattenuationbase.h
+epoc32/include/distanceattenuationdata.h
+epoc32/include/dns_qry.inl
+epoc32/include/documenthandler.h
+epoc32/include/domain/applications/browseruisdkcrkeys.h
+epoc32/include/domain/browseruisdkcrkeys.h
+epoc32/include/dopplerbase.h
+epoc32/include/dopplerdata.h
+epoc32/include/downloadmgrclient.h
+epoc32/include/downloadslistdlgobserver.h
+epoc32/include/driveinfo.h
+epoc32/include/driveinfo.inl
+epoc32/include/drmaudiosampleplayer.h
+epoc32/include/drmhelper.h
+epoc32/include/drmhelperserverinternalcrkeys.h
+epoc32/include/drmlicensechecker.h
+epoc32/include/dtdnode.h
+epoc32/include/dtdnode.inl
+epoc32/include/e32base.h
+epoc32/include/e32capability.h
+epoc32/include/e32cmn.h
+epoc32/include/e32cmn.inl
+epoc32/include/e32cons.h
+epoc32/include/e32const.h
+epoc32/include/e32def.h
+epoc32/include/e32des16.h
+epoc32/include/e32des8.h
+epoc32/include/e32err.h
+epoc32/include/e32event.h
+epoc32/include/e32hashtab.h
+epoc32/include/e32keys.h
+epoc32/include/e32kpan.h
+epoc32/include/e32lang.h
+epoc32/include/e32math.h
+epoc32/include/e32math.inl
+epoc32/include/e32msgqueue.h
+epoc32/include/e32msgqueue.inl
+epoc32/include/e32panic.h
+epoc32/include/e32property.h
+epoc32/include/e32std.h
+epoc32/include/e32test.h
+epoc32/include/ecam.h
+epoc32/include/ecam/ecamconstants.h
+epoc32/include/ecamadvsettings.h
+epoc32/include/ecamadvsettingsuids.hrh
+epoc32/include/ecamimageprocessing.h
+epoc32/include/ecamuids.hrh
+epoc32/include/ecmtclient.h
+epoc32/include/ecom/ecom.h
+epoc32/include/ecom/ecomerrorcodes.h
+epoc32/include/ecom/ecomresolverparams.h
+epoc32/include/ecom/ecomresolverparams.inl
+epoc32/include/ecom/implementationinformation.h
+epoc32/include/ecom/implementationproxy.h
+epoc32/include/ecom/publicregistry.h
+epoc32/include/ecom/registryinfo.rh
+epoc32/include/ecom/registryinfov2.rh
+epoc32/include/ecom/resolver.h
+epoc32/include/eikalert.h
+epoc32/include/eikalign.h
+epoc32/include/eikamnt.h
+epoc32/include/eikapp.h
+epoc32/include/eikappui.h
+epoc32/include/eikaufty.h
+epoc32/include/eikbctrl.h
+epoc32/include/eikbgfty.h
+epoc32/include/eikbhelp.h
+epoc32/include/eikbtgpc.h
+epoc32/include/eikbtgps.h
+epoc32/include/eikbutb.h
+epoc32/include/eikcal.h
+epoc32/include/eikcapc.h
+epoc32/include/eikcapca.h
+epoc32/include/eikccpu.h
+epoc32/include/eikclb.h
+epoc32/include/eikcmbut.h
+epoc32/include/eikcmobs.h
+epoc32/include/eikcoctlpanic.h
+epoc32/include/eikcolor.hrh
+epoc32/include/eikconso.h
+epoc32/include/eikctgrp.h
+epoc32/include/eikdebug.h
+epoc32/include/eikdef.h
+epoc32/include/eikdialg.h
+epoc32/include/eikdll.h
+epoc32/include/eikdoc.h
+epoc32/include/eikdpobs.h
+epoc32/include/eikedwin.h
+epoc32/include/eikedwob.h
+epoc32/include/eikembal.h
+epoc32/include/eikenv.h
+epoc32/include/eikfctry.h
+epoc32/include/eikfnlab.h
+epoc32/include/eikfpne.h
+epoc32/include/eikfutil.h
+epoc32/include/eikgted.h
+epoc32/include/eikhfdlg.h
+epoc32/include/eikhkeyc.h
+epoc32/include/eikhkeyt.h
+epoc32/include/eikimage.h
+epoc32/include/eikinfo.h
+epoc32/include/eikkeys.h
+epoc32/include/eiklay.h
+epoc32/include/eiklbbut.h
+epoc32/include/eiklbd.h
+epoc32/include/eiklbed.h
+epoc32/include/eiklbi.h
+epoc32/include/eiklbm.h
+epoc32/include/eiklbo.h
+epoc32/include/eiklbv.h
+epoc32/include/eiklbx.h
+epoc32/include/eikmenub.h
+epoc32/include/eikmenup.h
+epoc32/include/eikmfne.h
+epoc32/include/eikmnbut.h
+epoc32/include/eikmobs.h
+epoc32/include/eikmover.h
+epoc32/include/eikmsg.h
+epoc32/include/eiknotapi.h
+epoc32/include/eikon.hrh
+epoc32/include/eikon.rh
+epoc32/include/eikpicturefactory.h
+epoc32/include/eikproc.h
+epoc32/include/eikprogi.h
+epoc32/include/eikrted.h
+epoc32/include/eikrutil.h
+epoc32/include/eiksbfrm.h
+epoc32/include/eiksbobs.h
+epoc32/include/eikscbut.h
+epoc32/include/eikscrlb.h
+epoc32/include/eikseced.h
+epoc32/include/eikslb.h
+epoc32/include/eikspace.h
+epoc32/include/eikspmod.h
+epoc32/include/eikstart.h
+epoc32/include/eikthumb.h
+epoc32/include/eiktxlbm.h
+epoc32/include/eiktxlbx.h
+epoc32/include/eikunder.h
+epoc32/include/eikvcurs.h
+epoc32/include/emsinformationelement.inl
+epoc32/include/environmentalreverbbase.h
+epoc32/include/environmentalreverbdata.h
+epoc32/include/environmentalreverbutility.h
+epoc32/include/environmentalreverbutilitydata.h
+epoc32/include/epos_cposlandmarkdatabaseextended.h
+epoc32/include/epos_cposlandmarkencoder.h
+epoc32/include/epos_cposlandmarkparser.h
+epoc32/include/epos_cposlandmarksearch.h
+epoc32/include/epos_cposlmareacriteria.h
+epoc32/include/epos_cposlmcategorycriteria.h
+epoc32/include/epos_cposlmcategorymanager.h
+epoc32/include/epos_cposlmcatnamecriteria.h
+epoc32/include/epos_cposlmcompositecriteria.h
+epoc32/include/epos_cposlmdatabasemanager.h
+epoc32/include/epos_cposlmidlistcriteria.h
+epoc32/include/epos_cposlmitemiterator.h
+epoc32/include/epos_cposlmmultidbsearch.h
+epoc32/include/epos_cposlmnearestcriteria.h
+epoc32/include/epos_cposlmoperation.h
+epoc32/include/epos_cposlmoperation.inl
+epoc32/include/epos_cposlmpartialreadparameters.h
+epoc32/include/epos_cposlmsearchcriteria.h
+epoc32/include/epos_cposlmtextcriteria.h
+epoc32/include/epos_landmarks.h
+epoc32/include/epos_poslandmarkserialization.h
+epoc32/include/epos_poslmcategoryserialization.h
+epoc32/include/epos_tposlmdatabaseevent.h
+epoc32/include/epos_tposlmdatabasesettings.h
+epoc32/include/epos_tposlmsortpref.h
+epoc32/include/errorui.h
+epoc32/include/es_enum.h
+epoc32/include/es_enum.inl
+epoc32/include/es_prot.inl
+epoc32/include/es_sock.h
+epoc32/include/es_sock.inl
+epoc32/include/escapeutils.h
+epoc32/include/estatus.h
+epoc32/include/etel.h
+epoc32/include/etel3rdparty.h
+epoc32/include/etelmm.h
+epoc32/include/etelpckt.inl
+epoc32/include/eui_addr.h
+epoc32/include/ewsd.h
+epoc32/include/exifmodify.h
+epoc32/include/exifread.h
+epoc32/include/exiftag.h
+epoc32/include/extendedmtmids.hrh
+epoc32/include/exterror.h
+epoc32/include/ezbufman.h
+epoc32/include/ezcompressor.h
+epoc32/include/ezdecompressor.h
+epoc32/include/ezfilebuffer.h
+epoc32/include/ezgzip.h
+epoc32/include/ezlib.h
+epoc32/include/ezliberrorcodes.h
+epoc32/include/ezstream.h
+epoc32/include/f32file.h
+epoc32/include/f32file.inl
+epoc32/include/f32fsys.inl
+epoc32/include/favouritesdb.h
+epoc32/include/favouritesdbincremental.h
+epoc32/include/favouritesdbnotifier.h
+epoc32/include/favouritesdbobserver.h
+epoc32/include/favouritesfile.h
+epoc32/include/favouritesfile.inl
+epoc32/include/favouriteshandle.h
+epoc32/include/favouriteshandle.inl
+epoc32/include/favouritesitem.h
+epoc32/include/favouritesitemdata.h
+epoc32/include/favouritesitemlist.h
+epoc32/include/favouriteslimits.h
+epoc32/include/favouritessession.h
+epoc32/include/favouritessession.inl
+epoc32/include/favouriteswapap.h
+epoc32/include/faxdefn.h
+epoc32/include/fbs.h
+epoc32/include/featdiscovery.h
+epoc32/include/featureinfo.h
+epoc32/include/fepbase.h
+epoc32/include/fepbconfig.h
+epoc32/include/fepbutils.h
+epoc32/include/fepitfr.h
+epoc32/include/fepplugin.h
+epoc32/include/fepplugin.inl
+epoc32/include/finditemengine.h
+epoc32/include/flash_ui.h
+epoc32/include/fldbase.h
+epoc32/include/fldbltin.h
+epoc32/include/fldinfo.h
+epoc32/include/fntstore.h
+epoc32/include/fontids.hrh
+epoc32/include/frmconst.h
+epoc32/include/frmframe.h
+epoc32/include/frmlaydt.h
+epoc32/include/frmpage.h
+epoc32/include/frmparam.h
+epoc32/include/frmprint.h
+epoc32/include/frmtlay.h
+epoc32/include/frmtview.h
+epoc32/include/frmvis.h
+epoc32/include/gcce/gcce.h
+epoc32/include/gdi.h
+epoc32/include/gdi.inl
+epoc32/include/gfxtranseffect/gfxtransadapter.h
+epoc32/include/gifscaler.h
+epoc32/include/gles/egl.h
+epoc32/include/gles/egldisplaypropertydef.h
+epoc32/include/gles/egltypes.h
+epoc32/include/gles/gl.h
+epoc32/include/graphics/blendingalgorithms.inl
+epoc32/include/graphicsaccelerator.h
+epoc32/include/grdcells.h
+epoc32/include/grddef.h
+epoc32/include/grdprint.h
+epoc32/include/grdprint.inl
+epoc32/include/grdstd.h
+epoc32/include/grdstd.inl
+epoc32/include/gsmubuf.h
+epoc32/include/gsmuelem.h
+epoc32/include/gsmuelem.inl
+epoc32/include/gsmuetel.h
+epoc32/include/gsmuetel.inl
+epoc32/include/gsmumsg.h
+epoc32/include/gsmumsg.inl
+epoc32/include/gsmunmspacemobmsg.h
+epoc32/include/gsmunmspacemobph.h
+epoc32/include/gsmunmspacemobstore.h
+epoc32/include/gsmupdu.h
+epoc32/include/gsmupdu.inl
+epoc32/include/gulalign.h
+epoc32/include/gulbordr.h
+epoc32/include/gulcolor.h
+epoc32/include/guldef.h
+epoc32/include/gulfont.h
+epoc32/include/gulfont.hrh
+epoc32/include/gulftflg.hrh
+epoc32/include/gulicon.h
+epoc32/include/gulutil.h
+epoc32/include/hash.h
+epoc32/include/hcierrors.h
+epoc32/include/hlplch.h
+epoc32/include/hlpmodel.h
+epoc32/include/http.h
+epoc32/include/http/cauthenticationfilterinterface.h
+epoc32/include/http/cecomfilter.h
+epoc32/include/http/framework/csecuritypolicy.h
+epoc32/include/http/framework/csecuritypolicy.inl
+epoc32/include/http/mhttpauthenticationcallback.h
+epoc32/include/http/mhttpdatasupplier.h
+epoc32/include/http/mhttpfilter.h
+epoc32/include/http/mhttpfilterbase.h
+epoc32/include/http/mhttpfiltercreationcallback.h
+epoc32/include/http/mhttpsessioneventcallback.h
+epoc32/include/http/mhttptransactioncallback.h
+epoc32/include/http/rhttpconnectioninfo.h
+epoc32/include/http/rhttpfiltercollection.h
+epoc32/include/http/rhttpheaders.h
+epoc32/include/http/rhttpmessage.h
+epoc32/include/http/rhttppropertyset.h
+epoc32/include/http/rhttprequest.h
+epoc32/include/http/rhttpresponse.h
+epoc32/include/http/rhttpsession.h
+epoc32/include/http/rhttptransaction.h
+epoc32/include/http/rhttptransactionpropertyset.h
+epoc32/include/http/tfilterconfigurationiter.h
+epoc32/include/http/tfilterinformation.h
+epoc32/include/http/thttpevent.h
+epoc32/include/http/thttpevent.inl
+epoc32/include/http/thttpfilterhandle.h
+epoc32/include/http/thttpfilteriterator.h
+epoc32/include/http/thttpfilterregistration.h
+epoc32/include/http/thttphdrfielditer.h
+epoc32/include/http/thttphdrval.h
+epoc32/include/httpdownloadmgrcommon.h
+epoc32/include/httperr.h
+epoc32/include/httpstd.h
+epoc32/include/httpstringconstants.h
+epoc32/include/hwrmlight.h
+epoc32/include/hwrmpowerstatesdkpskeys.h
+epoc32/include/hwrmvibra.h
+epoc32/include/hwrmvibrasdkcrkeys.h
+epoc32/include/iapprefs.h
+epoc32/include/icl/icl_uids.hrh
+epoc32/include/icl/imagecodec.h
+epoc32/include/icl/imagecodecdata.h
+epoc32/include/icl/imageconstruct.h
+epoc32/include/icl/imagedata.h
+epoc32/include/icl/imageplugin.h
+epoc32/include/icl/imageprocessor.h
+epoc32/include/icl/imagetransform.hrh
+epoc32/include/icl/imagetransformpaniccodes.h
+epoc32/include/icl/imagetransformplugin.h
+epoc32/include/icl/imagetransformpluginext.h
+epoc32/include/iclanimationdataprovider.h
+epoc32/include/imageconversion.h
+epoc32/include/imagetransform.h
+epoc32/include/imapcmds.h
+epoc32/include/imapconnectionobserver.h
+epoc32/include/imapset.h
+epoc32/include/imclient.h
+epoc32/include/imconnection.h
+epoc32/include/imconnection.inl
+epoc32/include/imcvcodc.h
+epoc32/include/imcvcodc.inl
+epoc32/include/imerrors.h
+epoc32/include/imlauncherplugin.h
+epoc32/include/imlauncherplugin.inl
+epoc32/include/impcmtm.h
+epoc32/include/imsk.h
+epoc32/include/in6_if.h
+epoc32/include/in6_opt.h
+epoc32/include/in_sock.h
+epoc32/include/inet6err.h
+epoc32/include/inetprottextutils.h
+epoc32/include/ip_subconparams.h
+epoc32/include/ip_subconparams.inl
+epoc32/include/ipaddr.h
+epoc32/include/ir_sock.h
+epoc32/include/irmsgtypeuid.h
+epoc32/include/irmtmcmds.h
+epoc32/include/jri.h
+epoc32/include/lafmain.h
+epoc32/include/lafpanic.h
+epoc32/include/lafpublc.h
+epoc32/include/lafpublc.hrh
+epoc32/include/lbs.h
+epoc32/include/lbsclasstypes.h
+epoc32/include/lbscommon.h
+epoc32/include/lbscriteria.h
+epoc32/include/lbserrors.h
+epoc32/include/lbsfieldids.h
+epoc32/include/lbsipc.h
+epoc32/include/lbsposition.h
+epoc32/include/lbspositioninfo.h
+epoc32/include/lbsrequestor.h
+epoc32/include/lbssatellite.h
+epoc32/include/libc/_ansi.h
+epoc32/include/libc/arpa/ftp.h
+epoc32/include/libc/arpa/inet.h
+epoc32/include/libc/arpa/nameser.h
+epoc32/include/libc/arpa/telnet.h
+epoc32/include/libc/arpa/tftp.h
+epoc32/include/libc/assert.h
+epoc32/include/libc/ctype.h
+epoc32/include/libc/dirent.h
+epoc32/include/libc/errno.h
+epoc32/include/libc/fcntl.h
+epoc32/include/libc/ieeefp.h
+epoc32/include/libc/limits.h
+epoc32/include/libc/locale.h
+epoc32/include/libc/machine/ieeefp.h
+epoc32/include/libc/machine/types.h
+epoc32/include/libc/math.h
+epoc32/include/libc/netdb.h
+epoc32/include/libc/netdb_r.h
+epoc32/include/libc/netinet/arp.h
+epoc32/include/libc/netinet/in.h
+epoc32/include/libc/netinet/ip.h
+epoc32/include/libc/netinet/ip_icmp.h
+epoc32/include/libc/netinet/tcp.h
+epoc32/include/libc/netinet/tcp_fsm.h
+epoc32/include/libc/netinet/tcp_seq.h
+epoc32/include/libc/netinet/udp.h
+epoc32/include/libc/process.h
+epoc32/include/libc/pwd.h
+epoc32/include/libc/reent.h
+epoc32/include/libc/setjmp.h
+epoc32/include/libc/signal.h
+epoc32/include/libc/stdarg.h
+epoc32/include/libc/stdarg_e.h
+epoc32/include/libc/stddef.h
+epoc32/include/libc/stdio.h
+epoc32/include/libc/stdio_r.h
+epoc32/include/libc/stdlib.h
+epoc32/include/libc/stdlib_r.h
+epoc32/include/libc/string.h
+epoc32/include/libc/sys/_types.h
+epoc32/include/libc/sys/config.h
+epoc32/include/libc/sys/dirent.h
+epoc32/include/libc/sys/errno.h
+epoc32/include/libc/sys/fcntl.h
+epoc32/include/libc/sys/file.h
+epoc32/include/libc/sys/ioctl.h
+epoc32/include/libc/sys/param.h
+epoc32/include/libc/sys/reent.h
+epoc32/include/libc/sys/resource.h
+epoc32/include/libc/sys/serial.h
+epoc32/include/libc/sys/signal.h
+epoc32/include/libc/sys/socket.h
+epoc32/include/libc/sys/stat.h
+epoc32/include/libc/sys/stdio_t.h
+epoc32/include/libc/sys/time.h
+epoc32/include/libc/sys/times.h
+epoc32/include/libc/sys/types.h
+epoc32/include/libc/sys/unistd.h
+epoc32/include/libc/sys/wait.h
+epoc32/include/libc/time.h
+epoc32/include/libc/unistd.h
+epoc32/include/liblogger.h
+epoc32/include/linebreak.h
+epoc32/include/listenerdopplerbase.h
+epoc32/include/listenerlocationbase.h
+epoc32/include/listenerorientationbase.h
+epoc32/include/localtypes.h
+epoc32/include/locationbase.h
+epoc32/include/locationdata.h
+epoc32/include/logcli.h
+epoc32/include/logcli.inl
+epoc32/include/logclientchangeobserver.h
+epoc32/include/logeng.h
+epoc32/include/logview.h
+epoc32/include/logview.inl
+epoc32/include/logviewchangeobserver.h
+epoc32/include/logwrap.h
+epoc32/include/logwrap.hrh
+epoc32/include/logwrap.inl
+epoc32/include/logwrap.rsg
+epoc32/include/loudnessbase.h
+epoc32/include/loudnessdata.h
+epoc32/include/maknfilefilter.h
+epoc32/include/maknfileselectionobserver.h
+epoc32/include/maknmemoryselectionobserver.h
+epoc32/include/maudioeffectobserver.h
+epoc32/include/maudioequalizerobserver.h
+epoc32/include/mbassboostobserver.h
+epoc32/include/mcertstore.h
+epoc32/include/mclfchangeditemobserver.h
+epoc32/include/mclfcontentlistingengine.h
+epoc32/include/mclfcustomgrouper.h
+epoc32/include/mclfcustomsorter.h
+epoc32/include/mclfitem.h
+epoc32/include/mclfitemlistmodel.h
+epoc32/include/mclfmodifiableitem.h
+epoc32/include/mclfoperationobserver.h
+epoc32/include/mclfpostfilter.h
+epoc32/include/mclfprocessobserver.h
+epoc32/include/mclfsortingstyle.h
+epoc32/include/mcontactbackupobserver.h
+epoc32/include/mctcertapps.h
+epoc32/include/mctwritablecertstore.inl
+epoc32/include/mcustomcommand.h
+epoc32/include/mcustominterface.h
+epoc32/include/mda/client/resource.h
+epoc32/include/mda/client/utility.h
+epoc32/include/mda/common/audio.h
+epoc32/include/mda/common/audio.hrh
+epoc32/include/mda/common/audiostream.hrh
+epoc32/include/mda/common/base.h
+epoc32/include/mda/common/base.hrh
+epoc32/include/mda/common/base.inl
+epoc32/include/mda/common/controller.h
+epoc32/include/mda/common/port.h
+epoc32/include/mda/common/port.hrh
+epoc32/include/mda/common/resource.h
+epoc32/include/mda/common/resource.hrh
+epoc32/include/mda/common/video.h
+epoc32/include/mda/common/video.hrh
+epoc32/include/mda/common/video.inl
+epoc32/include/mdaaudioinputstream.h
+epoc32/include/mdaaudiooutputstream.h
+epoc32/include/mdaaudiosampleeditor.h
+epoc32/include/mdaaudiosampleplayer.h
+epoc32/include/mdaaudiotoneplayer.h
+epoc32/include/mdaframeinfo.h
+epoc32/include/mdaimageconverter.h
+epoc32/include/mdataproviderobserver.h
+epoc32/include/mdistanceattenuationobserver.h
+epoc32/include/mdopplerobserver.h
+epoc32/include/mdptx.h
+epoc32/include/mediafiletypes.hrh
+epoc32/include/medobsrv.h
+epoc32/include/menvironmentalreverbobserver.h
+epoc32/include/messagingsdkcrkeys.h
+epoc32/include/metadatabase.h
+epoc32/include/mframeworksp.h
+epoc32/include/mgfetch.h
+epoc32/include/midiclientutility.h
+epoc32/include/miut_err.h
+epoc32/include/miutconv.h
+epoc32/include/miutdef.h
+epoc32/include/miuthdr.h
+epoc32/include/miuthdr.inl
+epoc32/include/miutmsg.h
+epoc32/include/miutpars.h
+epoc32/include/miutset.h
+epoc32/include/miutstd.hrh
+epoc32/include/mlistenerdopplerobserver.h
+epoc32/include/mlistenerlocationobserver.h
+epoc32/include/mlistenerorientationobserver.h
+epoc32/include/mlocationobserver.h
+epoc32/include/mloudnessobserver.h
+epoc32/include/mm/mmcaf.h
+epoc32/include/mmf/common/mmcaf.h
+epoc32/include/mmf/common/mmfaudio.h
+epoc32/include/mmf/common/mmfbase.h
+epoc32/include/mmf/common/mmfcontroller.h
+epoc32/include/mmf/common/mmfcontrollerframework.h
+epoc32/include/mmf/common/mmfcontrollerframeworkbase.h
+epoc32/include/mmf/common/mmfcontrollerpluginresolver.h
+epoc32/include/mmf/common/mmfdrmcustomcommands.h
+epoc32/include/mmf/common/mmfdurationinfocustomcommands.h
+epoc32/include/mmf/common/mmferrors.h
+epoc32/include/mmf/common/mmffourcc.h
+epoc32/include/mmf/common/mmfipc.inl
+epoc32/include/mmf/common/mmfmeta.h
+epoc32/include/mmf/common/mmfmididatacommon.h
+epoc32/include/mmf/common/mmfpaniccodes.h
+epoc32/include/mmf/common/mmfstandardcustomcommands.h
+epoc32/include/mmf/common/mmfutilities.h
+epoc32/include/mmf/common/mmfutilities.inl
+epoc32/include/mmf/common/mmfvideo.h
+epoc32/include/mmf/plugin/mmfplugininterfaceuids.hrh
+epoc32/include/mmf/server/mmfbuffer.h
+epoc32/include/mmf/server/mmfbuffer.hrh
+epoc32/include/mmf/server/mmfdatabuffer.h
+epoc32/include/mmf/server/mmfdatasink.h
+epoc32/include/mmf/server/mmfdatasource.h
+epoc32/include/mmf/server/mmfdatasourcesink.hrh
+epoc32/include/mmfplugininterfaceuids.hrh
+epoc32/include/mmfropcustomcommandconstants.h
+epoc32/include/mmgfetchcanceler.h
+epoc32/include/mmgfetchverifier.h
+epoc32/include/mmsclient.h
+epoc32/include/mmsclient.inl
+epoc32/include/mmsconst.h
+epoc32/include/mmserrors.h
+epoc32/include/mmsgbiocontrol.h
+epoc32/include/mmsgbiocontrolextension.h
+epoc32/include/mmsvattachmentmanager.h
+epoc32/include/mmsvattachmentmanagersync.h
+epoc32/include/mncnnotification.h
+epoc32/include/mncnnotification.inl
+epoc32/include/morientationobserver.h
+epoc32/include/mpbkcontactdbobserver.h
+epoc32/include/mpbkeditoroktoexitcallback.h
+epoc32/include/mpbkfetchcallbacks.h
+epoc32/include/mpbkfetchdlgselection.h
+epoc32/include/mpbkfielddata.h
+epoc32/include/mpbkthumbnailoperationobservers.h
+epoc32/include/mproengactiveprofileobserver.h
+epoc32/include/mproengalerttoneseeker.h
+epoc32/include/mproengalerttoneseekerobserver.h
+epoc32/include/mproengengine.h
+epoc32/include/mproengnotifyhandler.h
+epoc32/include/mproengprofile.h
+epoc32/include/mproengprofileactivationobserver.h
+epoc32/include/mproengprofilename.h
+epoc32/include/mproengprofilenamearray.h
+epoc32/include/mproengprofilenamearrayobserver.h
+epoc32/include/mproengprofileobserver.h
+epoc32/include/mproengtones.h
+epoc32/include/mproengtonesettings.h
+epoc32/include/mroomlevelobserver.h
+epoc32/include/msenauthenticationprovider.h
+epoc32/include/msenconsumerpolicy.h
+epoc32/include/msencontenthandlerclient.h
+epoc32/include/msenelement.h
+epoc32/include/msenfragment.h
+epoc32/include/msenhostlet.h
+epoc32/include/msenhostletrequest.h
+epoc32/include/msenhostletresponse.h
+epoc32/include/msenidentityprovideridarray.h
+epoc32/include/msenmessage.h
+epoc32/include/msenproperties.h
+epoc32/include/msenproperty.h
+epoc32/include/msenproviderpolicy.h
+epoc32/include/msenserviceconsumer.h
+epoc32/include/msenservicedescription.h
+epoc32/include/msenservicepolicy.h
+epoc32/include/msgbiocontrol.h
+epoc32/include/msgbiocontrolobserver.h
+epoc32/include/msgbiouids.h
+epoc32/include/msgeditor.hrh
+epoc32/include/msourcedopplerobserver.h
+epoc32/include/msourcelocationobserver.h
+epoc32/include/msourceorientationobserver.h
+epoc32/include/mstereowideningobserver.h
+epoc32/include/msvapi.h
+epoc32/include/msvapi.inl
+epoc32/include/msventry.h
+epoc32/include/msventry.inl
+epoc32/include/msvfind.h
+epoc32/include/msvfind.inl
+epoc32/include/msvftext.h
+epoc32/include/msvftext.inl
+epoc32/include/msvids.h
+epoc32/include/msvipc.h
+epoc32/include/msvipc.inl
+epoc32/include/msvrcpt.h
+epoc32/include/msvrcpt.inl
+epoc32/include/msvreg.h
+epoc32/include/msvreg.inl
+epoc32/include/msvruids.h
+epoc32/include/msvstd.h
+epoc32/include/msvstd.hrh
+epoc32/include/msvstd.inl
+epoc32/include/msvstore.h
+epoc32/include/msvuids.h
+epoc32/include/mtclbase.h
+epoc32/include/mtclreg.h
+epoc32/include/mtmconfig.rh
+epoc32/include/mtmdef.h
+epoc32/include/mtmdef.hrh
+epoc32/include/mtmuibas.h
+epoc32/include/mtmuidef.hrh
+epoc32/include/mtmuids.h
+epoc32/include/mtsr.h
+epoc32/include/mtud.hrh
+epoc32/include/mtud.rh
+epoc32/include/mtudcbas.h
+epoc32/include/mtudreg.h
+epoc32/include/mtuireg.h
+epoc32/include/mturutils.h
+epoc32/include/mwappluginsp.h
+epoc32/include/mwbxmlconverterobserver.h
+epoc32/include/networking/qos3gpp_subconparams.h
+epoc32/include/networking/qos3gpp_subconparams.inl
+epoc32/include/nifman.h
+epoc32/include/nifvar.h
+epoc32/include/np_defines.h
+epoc32/include/npapi.h
+epoc32/include/npupp.h
+epoc32/include/numberconversion.h
+epoc32/include/obex.h
+epoc32/include/obexbase.h
+epoc32/include/obexbaseobject.h
+epoc32/include/obexbttransportinfo.h
+epoc32/include/obexclient.h
+epoc32/include/obexconstants.h
+epoc32/include/obexfinalpacketobserver.h
+epoc32/include/obexheaderlist.h
+epoc32/include/obexheaders.h
+epoc32/include/obexirtransportinfo.h
+epoc32/include/obexobjects.h
+epoc32/include/obexpanics.h
+epoc32/include/obexserver.h
+epoc32/include/obextransportinfo.h
+epoc32/include/obextypes.h
+epoc32/include/obsolete/protypes.h
+epoc32/include/ocrcommon.h
+epoc32/include/ocrsrv.h
+epoc32/include/offop.inl
+epoc32/include/oma2agent.h
+epoc32/include/openfont.h
+epoc32/include/orientationbase.h
+epoc32/include/orientationdata.h
+epoc32/include/palette.h
+epoc32/include/pathconfiguration.hrh
+epoc32/include/pathinfo.h
+epoc32/include/pbkdatasaveappui.hrh
+epoc32/include/pbkfields.hrh
+epoc32/include/pbkiconid.hrh
+epoc32/include/pbkiconinfo.h
+epoc32/include/pdrport.h
+epoc32/include/pdrstore.h
+epoc32/include/pkixcertchain.h
+epoc32/include/pkixvalidationresult.h
+epoc32/include/pls.h
+epoc32/include/pluginadapterinterface.h
+epoc32/include/pop3cmds.h
+epoc32/include/pop3set.h
+epoc32/include/popcmtm.h
+epoc32/include/pragmamessage.h
+epoc32/include/prcpucfg.h
+epoc32/include/prninf.h
+epoc32/include/prnprev.h
+epoc32/include/prnsetup.h
+epoc32/include/prnuids.h
+epoc32/include/proengfactory.h
+epoc32/include/profile.hrh
+epoc32/include/profileenginesdkcrkeys.h
+epoc32/include/prtypes.h
+epoc32/include/pticompositiondataif.h
+epoc32/include/ptidefs.h
+epoc32/include/ptidefs.inl
+epoc32/include/ptiengine.h
+epoc32/include/ptikeymappings.h
+epoc32/include/ptilanguage.h
+epoc32/include/ptilanguage.inl
+epoc32/include/ptilanguagedatabase.h
+epoc32/include/ptiobserver.h
+epoc32/include/ptiuids.hrh
+epoc32/include/ptiuserdicentry.h
+epoc32/include/ptiuserdicentry.inl
+epoc32/include/ptiuserdictionary.h
+epoc32/include/ptiuserdictionary.inl
+epoc32/include/random.h
+epoc32/include/rconnmon.h
+epoc32/include/rdrmhelper.h
+epoc32/include/remconabsvolcontroller.h
+epoc32/include/remconabsvolcontrollerobserver.h
+epoc32/include/remconabsvoltarget.h
+epoc32/include/remconabsvoltargetobserver.h
+epoc32/include/remconaddress.h
+epoc32/include/remconcoreapi.h
+epoc32/include/remconcoreapicontroller.h
+epoc32/include/remconcoreapicontrollerobserver.h
+epoc32/include/remconcoreapitarget.h
+epoc32/include/remconcoreapitargetobserver.h
+epoc32/include/remconerrorobserver.h
+epoc32/include/remconinterfaceselector.h
+epoc32/include/remconserverpanic.h
+epoc32/include/remcontrackinfocontroller.h
+epoc32/include/remcontrackinfocontrollerobserver.h
+epoc32/include/remcontrackinfotarget.h
+epoc32/include/remcontrackinfotargetobserver.h
+epoc32/include/roomlevelbase.h
+epoc32/include/roomleveldata.h
+epoc32/include/rpbkviewresourcefile.h
+epoc32/include/rsendas.h
+epoc32/include/rsendasmessage.h
+epoc32/include/rsendocument.h
+epoc32/include/rtp.h
+epoc32/include/rtp.inl
+epoc32/include/rvct2_1/rvct2_1.h
+epoc32/include/rvct2_2/rvct2_2.h
+epoc32/include/s32btree.h
+epoc32/include/s32btree.inl
+epoc32/include/s32buf.h
+epoc32/include/s32buf.inl
+epoc32/include/s32cont.h
+epoc32/include/s32cont.inl
+epoc32/include/s32file.h
+epoc32/include/s32file.inl
+epoc32/include/s32mem.h
+epoc32/include/s32mem.inl
+epoc32/include/s32page.h
+epoc32/include/s32page.inl
+epoc32/include/s32share.h
+epoc32/include/s32share.inl
+epoc32/include/s32std.h
+epoc32/include/s32std.inl
+epoc32/include/s32stor.h
+epoc32/include/s32stor.inl
+epoc32/include/s32strm.h
+epoc32/include/s32strm.inl
+epoc32/include/s32ucmp.h
+epoc32/include/sacls.h
+epoc32/include/schinfo.h
+epoc32/include/schtask.h
+epoc32/include/schtime.h
+epoc32/include/screensaverplugin.h
+epoc32/include/screensaverpluginintdef.h
+epoc32/include/screensaverpluginintdef.hrh
+epoc32/include/screensaverpluginintdef.inl
+epoc32/include/sdpattributefield.h
+epoc32/include/sdpbandwidthfield.h
+epoc32/include/sdpcodecconstants.h
+epoc32/include/sdpcodecerr.h
+epoc32/include/sdpcodecstringconstants.h
+epoc32/include/sdpcodecstringpool.h
+epoc32/include/sdpconnectionfield.h
+epoc32/include/sdpdocument.h
+epoc32/include/sdpfmtattributefield.h
+epoc32/include/sdpkeyfield.h
+epoc32/include/sdpmediafield.h
+epoc32/include/sdporiginfield.h
+epoc32/include/sdprepeatfield.h
+epoc32/include/sdprtpmapvalue.h
+epoc32/include/sdptimefield.h
+epoc32/include/sdptypedtime.h
+epoc32/include/securesocket.h
+epoc32/include/securesocketinterface.h
+epoc32/include/securitydefs.h
+epoc32/include/securitydefs.inl
+epoc32/include/senbaseattribute.h
+epoc32/include/senbaseelement.h
+epoc32/include/senbasefragment.h
+epoc32/include/sencredential.h
+epoc32/include/sencredential2.h
+epoc32/include/sendas2.h
+epoc32/include/sendasserver.rh
+epoc32/include/sendateutils.h
+epoc32/include/sendomfragment.h
+epoc32/include/sendomfragmentbase.h
+epoc32/include/sendui.h
+epoc32/include/senduiconsts.h
+epoc32/include/senduimtmuids.h
+epoc32/include/senelement.h
+epoc32/include/senfacet.h
+epoc32/include/senfragment.h
+epoc32/include/senfragmentbase.h
+epoc32/include/senhostletconnection.h
+epoc32/include/senhttptransportproperties.h
+epoc32/include/senidentityprovider.h
+epoc32/include/senidentityprovideridarray8.h
+epoc32/include/sennamespace.h
+epoc32/include/senparser.h
+epoc32/include/senserviceconnection.h
+epoc32/include/senservicemanager.h
+epoc32/include/senservicepattern.h
+epoc32/include/sensoapconstants.h
+epoc32/include/sensoapenvelope.h
+epoc32/include/sensoapenvelope2.h
+epoc32/include/sensoapfault.h
+epoc32/include/sensoapfault2.h
+epoc32/include/sensoapmessage.h
+epoc32/include/sensoapmessage2.h
+epoc32/include/sensrvaccelerometersensor.h
+epoc32/include/sensrvchannel.h
+epoc32/include/sensrvchannelcondition.h
+epoc32/include/sensrvchannelconditionlistener.h
+epoc32/include/sensrvchannelconditionset.h
+epoc32/include/sensrvchannelfinder.h
+epoc32/include/sensrvchannelinfo.h
+epoc32/include/sensrvchannellistener.h
+epoc32/include/sensrvdatalistener.h
+epoc32/include/sensrvgeneralproperties.h
+epoc32/include/sensrvilluminationsensor.h
+epoc32/include/sensrvmagneticnorthsensor.h
+epoc32/include/sensrvmagnetometersensor.h
+epoc32/include/sensrvorientationsensor.h
+epoc32/include/sensrvproperty.h
+epoc32/include/sensrvpropertylistener.h
+epoc32/include/sensrvproximitysensor.h
+epoc32/include/sensrvtappingsensor.h
+epoc32/include/sensrvtypes.h
+epoc32/include/sentransportproperties.h
+epoc32/include/senwssecurityheader.h
+epoc32/include/senwssecurityheader2.h
+epoc32/include/senxmlconstants.h
+epoc32/include/senxmlelement.h
+epoc32/include/senxmlproperties.h
+epoc32/include/senxmlreader.h
+epoc32/include/senxmlservicedescription.h
+epoc32/include/senxmlutils.h
+epoc32/include/signed.h
+epoc32/include/sip.h
+epoc32/include/sipacceptcontactheader.h
+epoc32/include/sipacceptencodingheader.h
+epoc32/include/sipacceptheader.h
+epoc32/include/sipacceptlanguageheader.h
+epoc32/include/sipaddress.h
+epoc32/include/sipaddressheaderbase.h
+epoc32/include/sipalloweventsheader.h
+epoc32/include/sipallowheader.h
+epoc32/include/sipauthenticateheaderbase.h
+epoc32/include/sipauthheaderbase.h
+epoc32/include/sipcallidheader.h
+epoc32/include/sipclienttransaction.h
+epoc32/include/sipcodecerr.h
+epoc32/include/sipconcreteprofileobserver.h
+epoc32/include/sipconnection.h
+epoc32/include/sipconnectionobserver.h
+epoc32/include/sipcontactheader.h
+epoc32/include/sipcontentdispositionheader.h
+epoc32/include/sipcontentencodingheader.h
+epoc32/include/sipcontenttypeheader.h
+epoc32/include/sipcseqheader.h
+epoc32/include/sipdefs.h
+epoc32/include/sipdialog.h
+epoc32/include/sipdialogassocbase.h
+epoc32/include/siperr.h
+epoc32/include/sipeventheader.h
+epoc32/include/sipexpiresheader.h
+epoc32/include/sipextensionheader.h
+epoc32/include/sipfromheader.h
+epoc32/include/sipfromtoheaderbase.h
+epoc32/include/sipheaderbase.h
+epoc32/include/siphttpdigest.h
+epoc32/include/siphttpdigestchallengeobserver.h
+epoc32/include/siphttpdigestchallengeobserver2.h
+epoc32/include/sipinvitedialogassoc.h
+epoc32/include/sipmanagedprofile.h
+epoc32/include/sipmanagedprofileregistry.h
+epoc32/include/sipmessageelements.h
+epoc32/include/sipnotifydialogassoc.h
+epoc32/include/sipobserver.h
+epoc32/include/sipparameterheaderbase.h
+epoc32/include/sippassociateduriheader.h
+epoc32/include/sipprofile.h
+epoc32/include/sipprofileregistry.h
+epoc32/include/sipprofileregistrybase.h
+epoc32/include/sipprofileregistryobserver.h
+epoc32/include/sipprofiletypeinfo.h
+epoc32/include/sipproxyauthenticateheader.h
+epoc32/include/sipproxyrequireheader.h
+epoc32/include/siprackheader.h
+epoc32/include/sipreferdialogassoc.h
+epoc32/include/siprefertoheader.h
+epoc32/include/siprefresh.h
+epoc32/include/sipregistrationbinding.h
+epoc32/include/sipregistrationcontext.h
+epoc32/include/sipreplytoheader.h
+epoc32/include/siprequestelements.h
+epoc32/include/siprequireheader.h
+epoc32/include/sipresolvedclient.h
+epoc32/include/sipresolvedclient.inl
+epoc32/include/sipresponseelements.h
+epoc32/include/sipretryafterheader.h
+epoc32/include/siprouteheader.h
+epoc32/include/siprouteheaderbase.h
+epoc32/include/siprseqheader.h
+epoc32/include/sipsdkcrkeys.h
+epoc32/include/sipsecurityclientheader.h
+epoc32/include/sipsecurityheaderbase.h
+epoc32/include/sipservertransaction.h
+epoc32/include/sipstrconsts.h
+epoc32/include/sipstrings.h
+epoc32/include/sipsubscribedialogassoc.h
+epoc32/include/sipsubscriptionstateheader.h
+epoc32/include/sipsupportedheader.h
+epoc32/include/siptimestampheader.h
+epoc32/include/siptoheader.h
+epoc32/include/siptokenheaderbase.h
+epoc32/include/siptransactionbase.h
+epoc32/include/sipunsignedintheaderbase.h
+epoc32/include/sipunsupportedheader.h
+epoc32/include/sipwwwauthenticateheader.h
+epoc32/include/smsclnt.h
+epoc32/include/smsclnt.inl
+epoc32/include/smscmds.h
+epoc32/include/smss.hrh
+epoc32/include/smtcmtm.h
+epoc32/include/smtpcmds.h
+epoc32/include/smtpset.h
+epoc32/include/smut.h
+epoc32/include/smuthdr.h
+epoc32/include/smutset.h
+epoc32/include/smutset.inl
+epoc32/include/smutsimparam.h
+epoc32/include/sourcedopplerbase.h
+epoc32/include/sourcelocationbase.h
+epoc32/include/sourceorientationbase.h
+epoc32/include/spdiacontrol.h
+epoc32/include/spriteanimation.h
+epoc32/include/sqldb.h
+epoc32/include/ssl.h
+epoc32/include/ssl_compatibility.h
+epoc32/include/sslerr.h
+epoc32/include/startupitem.hrh
+epoc32/include/startupitem.rh
+epoc32/include/stdapis/_ansi.h
+epoc32/include/stdapis/_ctype.h
+epoc32/include/stdapis/arpa/inet.h
+epoc32/include/stdapis/arpa/nameser.h
+epoc32/include/stdapis/arpa/nameser_compat.h
+epoc32/include/stdapis/assert.h
+epoc32/include/stdapis/crypt.h
+epoc32/include/stdapis/ctype.h
+epoc32/include/stdapis/dirent.h
+epoc32/include/stdapis/dlfcn.h
+epoc32/include/stdapis/err.h
+epoc32/include/stdapis/errno.h
+epoc32/include/stdapis/fcntl.h
+epoc32/include/stdapis/fenv.h
+epoc32/include/stdapis/float.h
+epoc32/include/stdapis/getopt.h
+epoc32/include/stdapis/glib-2.0/glib-object.h
+epoc32/include/stdapis/glib-2.0/glib.h
+epoc32/include/stdapis/glib-2.0/glib/galloca.h
+epoc32/include/stdapis/glib-2.0/glib/garray.h
+epoc32/include/stdapis/glib-2.0/glib/gasyncqueue.h
+epoc32/include/stdapis/glib-2.0/glib/gatomic.h
+epoc32/include/stdapis/glib-2.0/glib/gbacktrace.h
+epoc32/include/stdapis/glib-2.0/glib/gcache.h
+epoc32/include/stdapis/glib-2.0/glib/gcompletion.h
+epoc32/include/stdapis/glib-2.0/glib/gconvert.h
+epoc32/include/stdapis/glib-2.0/glib/gdataset.h
+epoc32/include/stdapis/glib-2.0/glib/gdate.h
+epoc32/include/stdapis/glib-2.0/glib/gdir.h
+epoc32/include/stdapis/glib-2.0/glib/gerror.h
+epoc32/include/stdapis/glib-2.0/glib/gfileutils.h
+epoc32/include/stdapis/glib-2.0/glib/ghash.h
+epoc32/include/stdapis/glib-2.0/glib/ghook.h
+epoc32/include/stdapis/glib-2.0/glib/gi18n-lib.h
+epoc32/include/stdapis/glib-2.0/glib/gi18n.h
+epoc32/include/stdapis/glib-2.0/glib/giochannel.h
+epoc32/include/stdapis/glib-2.0/glib/gkeyfile.h
+epoc32/include/stdapis/glib-2.0/glib/glist.h
+epoc32/include/stdapis/glib-2.0/glib/gmacros.h
+epoc32/include/stdapis/glib-2.0/glib/gmain.h
+epoc32/include/stdapis/glib-2.0/glib/gmappedfile.h
+epoc32/include/stdapis/glib-2.0/glib/gmarkup.h
+epoc32/include/stdapis/glib-2.0/glib/gmem.h
+epoc32/include/stdapis/glib-2.0/glib/gmessages.h
+epoc32/include/stdapis/glib-2.0/glib/gnode.h
+epoc32/include/stdapis/glib-2.0/glib/goption.h
+epoc32/include/stdapis/glib-2.0/glib/gpattern.h
+epoc32/include/stdapis/glib-2.0/glib/gprimes.h
+epoc32/include/stdapis/glib-2.0/glib/gprintf.h
+epoc32/include/stdapis/glib-2.0/glib/gqsort.h
+epoc32/include/stdapis/glib-2.0/glib/gquark.h
+epoc32/include/stdapis/glib-2.0/glib/gqueue.h
+epoc32/include/stdapis/glib-2.0/glib/grand.h
+epoc32/include/stdapis/glib-2.0/glib/grel.h
+epoc32/include/stdapis/glib-2.0/glib/gscanner.h
+epoc32/include/stdapis/glib-2.0/glib/gshell.h
+epoc32/include/stdapis/glib-2.0/glib/gslice.h
+epoc32/include/stdapis/glib-2.0/glib/gslist.h
+epoc32/include/stdapis/glib-2.0/glib/gspawn.h
+epoc32/include/stdapis/glib-2.0/glib/gstdio.h
+epoc32/include/stdapis/glib-2.0/glib/gstrfuncs.h
+epoc32/include/stdapis/glib-2.0/glib/gstring.h
+epoc32/include/stdapis/glib-2.0/glib/gthread.h
+epoc32/include/stdapis/glib-2.0/glib/gthreadpool.h
+epoc32/include/stdapis/glib-2.0/glib/gtimer.h
+epoc32/include/stdapis/glib-2.0/glib/gtree.h
+epoc32/include/stdapis/glib-2.0/glib/gtypes.h
+epoc32/include/stdapis/glib-2.0/glib/gunicode.h
+epoc32/include/stdapis/glib-2.0/glib/gutils.h
+epoc32/include/stdapis/glib-2.0/glib/gwin32.h
+epoc32/include/stdapis/glib-2.0/glib_global.h
+epoc32/include/stdapis/glib-2.0/glibconfig.h
+epoc32/include/stdapis/glib-2.0/glowmem.h
+epoc32/include/stdapis/glib-2.0/gmodule.h
+epoc32/include/stdapis/glib-2.0/gobject/gboxed.h
+epoc32/include/stdapis/glib-2.0/gobject/gclosure.h
+epoc32/include/stdapis/glib-2.0/gobject/genums.h
+epoc32/include/stdapis/glib-2.0/gobject/gmarshal.h
+epoc32/include/stdapis/glib-2.0/gobject/gobject.h
+epoc32/include/stdapis/glib-2.0/gobject/gobjectnotifyqueue.c
+epoc32/include/stdapis/glib-2.0/gobject/gparam.h
+epoc32/include/stdapis/glib-2.0/gobject/gparamspecs.h
+epoc32/include/stdapis/glib-2.0/gobject/gsignal.h
+epoc32/include/stdapis/glib-2.0/gobject/gsourceclosure.h
+epoc32/include/stdapis/glib-2.0/gobject/gtype.h
+epoc32/include/stdapis/glib-2.0/gobject/gtypemodule.h
+epoc32/include/stdapis/glib-2.0/gobject/gtypeplugin.h
+epoc32/include/stdapis/glib-2.0/gobject/gvalue.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluearray.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluecollector.h
+epoc32/include/stdapis/glib-2.0/gobject/gvaluetypes.h
+epoc32/include/stdapis/glib-2.0/gobject_global.h
+epoc32/include/stdapis/glob.h
+epoc32/include/stdapis/grp.h
+epoc32/include/stdapis/iconv.h
+epoc32/include/stdapis/inttypes.h
+epoc32/include/stdapis/langinfo.h
+epoc32/include/stdapis/libm_aliases.h
+epoc32/include/stdapis/limits.h
+epoc32/include/stdapis/locale.h
+epoc32/include/stdapis/machine/_inttypes.h
+epoc32/include/stdapis/machine/_limits.h
+epoc32/include/stdapis/machine/_stdint.h
+epoc32/include/stdapis/machine/_types.h
+epoc32/include/stdapis/machine/endian.h
+epoc32/include/stdapis/machine/param.h
+epoc32/include/stdapis/machine/setjmp.h
+epoc32/include/stdapis/machine/signal.h
+epoc32/include/stdapis/math.h
+epoc32/include/stdapis/md5.h
+epoc32/include/stdapis/memory.h
+epoc32/include/stdapis/monetary.h
+epoc32/include/stdapis/net/if.h
+epoc32/include/stdapis/netconfig.h
+epoc32/include/stdapis/netdb.h
+epoc32/include/stdapis/netinet/in.h
+epoc32/include/stdapis/netinet6/in6.h
+epoc32/include/stdapis/netinet6/in6_var.h
+epoc32/include/stdapis/nsswitch.h
+epoc32/include/stdapis/openssl/aes.h
+epoc32/include/stdapis/openssl/asn1.h
+epoc32/include/stdapis/openssl/asn1_mac.h
+epoc32/include/stdapis/openssl/asn1t.h
+epoc32/include/stdapis/openssl/bio.h
+epoc32/include/stdapis/openssl/bn.h
+epoc32/include/stdapis/openssl/buffer.h
+epoc32/include/stdapis/openssl/comp.h
+epoc32/include/stdapis/openssl/conf.h
+epoc32/include/stdapis/openssl/conf_api.h
+epoc32/include/stdapis/openssl/crypto.h
+epoc32/include/stdapis/openssl/des.h
+epoc32/include/stdapis/openssl/des_old.h
+epoc32/include/stdapis/openssl/dh.h
+epoc32/include/stdapis/openssl/dsa.h
+epoc32/include/stdapis/openssl/dso.h
+epoc32/include/stdapis/openssl/dtls1.h
+epoc32/include/stdapis/openssl/e_os2.h
+epoc32/include/stdapis/openssl/engine.h
+epoc32/include/stdapis/openssl/err.h
+epoc32/include/stdapis/openssl/evp.h
+epoc32/include/stdapis/openssl/hmac.h
+epoc32/include/stdapis/openssl/kssl.h
+epoc32/include/stdapis/openssl/lhash.h
+epoc32/include/stdapis/openssl/md2.h
+epoc32/include/stdapis/openssl/md5.h
+epoc32/include/stdapis/openssl/obj_mac.h
+epoc32/include/stdapis/openssl/objects.h
+epoc32/include/stdapis/openssl/ocsp.h
+epoc32/include/stdapis/openssl/opensslconf.h
+epoc32/include/stdapis/openssl/opensslv.h
+epoc32/include/stdapis/openssl/ossl_typ.h
+epoc32/include/stdapis/openssl/pem.h
+epoc32/include/stdapis/openssl/pem2.h
+epoc32/include/stdapis/openssl/pkcs12.h
+epoc32/include/stdapis/openssl/pkcs7.h
+epoc32/include/stdapis/openssl/pq_compat.h
+epoc32/include/stdapis/openssl/pqueue.h
+epoc32/include/stdapis/openssl/rand.h
+epoc32/include/stdapis/openssl/rc2.h
+epoc32/include/stdapis/openssl/rc4.h
+epoc32/include/stdapis/openssl/rsa.h
+epoc32/include/stdapis/openssl/safestack.h
+epoc32/include/stdapis/openssl/sha.h
+epoc32/include/stdapis/openssl/ssl.h
+epoc32/include/stdapis/openssl/ssl2.h
+epoc32/include/stdapis/openssl/ssl23.h
+epoc32/include/stdapis/openssl/ssl3.h
+epoc32/include/stdapis/openssl/stack.h
+epoc32/include/stdapis/openssl/store.h
+epoc32/include/stdapis/openssl/symhacks.h
+epoc32/include/stdapis/openssl/tls1.h
+epoc32/include/stdapis/openssl/tmdiff.h
+epoc32/include/stdapis/openssl/txt_db.h
+epoc32/include/stdapis/openssl/ui.h
+epoc32/include/stdapis/openssl/ui_compat.h
+epoc32/include/stdapis/openssl/x509.h
+epoc32/include/stdapis/openssl/x509_vfy.h
+epoc32/include/stdapis/openssl/x509v3.h
+epoc32/include/stdapis/paths.h
+epoc32/include/stdapis/pthread.h
+epoc32/include/stdapis/pthreadalias.h
+epoc32/include/stdapis/pthreadtypes.h
+epoc32/include/stdapis/pwd.h
+epoc32/include/stdapis/regex.h
+epoc32/include/stdapis/resolv.h
+epoc32/include/stdapis/sched.h
+epoc32/include/stdapis/semaphore.h
+epoc32/include/stdapis/setjmp.h
+epoc32/include/stdapis/signal.h
+epoc32/include/stdapis/signgam.h
+epoc32/include/stdapis/spawn.h
+epoc32/include/stdapis/staticlibinit_gcce.h
+epoc32/include/stdapis/stdarg.h
+epoc32/include/stdapis/stdarg_e.h
+epoc32/include/stdapis/stdbool.h
+epoc32/include/stdapis/stddef.h
+epoc32/include/stdapis/stdint.h
+epoc32/include/stdapis/stdio.h
+epoc32/include/stdapis/stdlib.h
+epoc32/include/stdapis/stlport/algorithm
+epoc32/include/stdapis/stlport/bitset
+epoc32/include/stdapis/stlport/cassert
+epoc32/include/stdapis/stlport/cctype
+epoc32/include/stdapis/stlport/cerrno
+epoc32/include/stdapis/stlport/cfloat
+epoc32/include/stdapis/stlport/climits
+epoc32/include/stdapis/stlport/clocale
+epoc32/include/stdapis/stlport/cmath
+epoc32/include/stdapis/stlport/complex
+epoc32/include/stdapis/stlport/config/_epilog.h
+epoc32/include/stdapis/stlport/config/_msvc_warnings_off.h
+epoc32/include/stdapis/stlport/config/_prolog.h
+epoc32/include/stdapis/stlport/config/stl_as400.h
+epoc32/include/stdapis/stlport/config/stl_confix.h
+epoc32/include/stdapis/stlport/config/stl_epoc.h
+epoc32/include/stdapis/stlport/config/stl_gcce.h
+epoc32/include/stdapis/stlport/config/stl_msvc.h
+epoc32/include/stdapis/stlport/config/stl_mwerks.h
+epoc32/include/stdapis/stlport/config/stl_rvct.h
+epoc32/include/stdapis/stlport/config/stl_select_lib.h
+epoc32/include/stdapis/stlport/config/stl_watcom.h
+epoc32/include/stdapis/stlport/config/stl_winscw.h
+epoc32/include/stdapis/stlport/config/stlcomp.h
+epoc32/include/stdapis/stlport/csetjmp
+epoc32/include/stdapis/stlport/csignal
+epoc32/include/stdapis/stlport/cstd/cctype
+epoc32/include/stdapis/stlport/cstd/cerrno
+epoc32/include/stdapis/stlport/cstd/cfloat
+epoc32/include/stdapis/stlport/cstd/climits
+epoc32/include/stdapis/stlport/cstd/clocale
+epoc32/include/stdapis/stlport/cstd/cmath
+epoc32/include/stdapis/stlport/cstd/csetjmp
+epoc32/include/stdapis/stlport/cstd/csignal
+epoc32/include/stdapis/stlport/cstd/cstdarg
+epoc32/include/stdapis/stlport/cstd/cstddef
+epoc32/include/stdapis/stlport/cstd/cstdio
+epoc32/include/stdapis/stlport/cstd/cstdlib
+epoc32/include/stdapis/stlport/cstd/cstring
+epoc32/include/stdapis/stlport/cstd/ctime
+epoc32/include/stdapis/stlport/cstd/cwchar
+epoc32/include/stdapis/stlport/cstd/cwctype
+epoc32/include/stdapis/stlport/cstd/locale.h
+epoc32/include/stdapis/stlport/cstd/math.h
+epoc32/include/stdapis/stlport/cstd/setjmp.h
+epoc32/include/stdapis/stlport/cstd/stdarg.h
+epoc32/include/stdapis/stlport/cstd/stddef.h
+epoc32/include/stdapis/stlport/cstd/stdio.h
+epoc32/include/stdapis/stlport/cstd/stdlib.h
+epoc32/include/stdapis/stlport/cstd/string.h
+epoc32/include/stdapis/stlport/cstd/time.h
+epoc32/include/stdapis/stlport/cstd/wchar.h
+epoc32/include/stdapis/stlport/cstd/wctype.h
+epoc32/include/stdapis/stlport/cstdarg
+epoc32/include/stdapis/stlport/cstddef
+epoc32/include/stdapis/stlport/cstdio
+epoc32/include/stdapis/stlport/cstdlib
+epoc32/include/stdapis/stlport/cstring
+epoc32/include/stdapis/stlport/ctime
+epoc32/include/stdapis/stlport/ctype.h
+epoc32/include/stdapis/stlport/cwchar
+epoc32/include/stdapis/stlport/cwctype
+epoc32/include/stdapis/stlport/deque
+epoc32/include/stdapis/stlport/exception
+epoc32/include/stdapis/stlport/exception.h
+epoc32/include/stdapis/stlport/fstream
+epoc32/include/stdapis/stlport/fstream.h
+epoc32/include/stdapis/stlport/functional
+epoc32/include/stdapis/stlport/hash_map
+epoc32/include/stdapis/stlport/hash_set
+epoc32/include/stdapis/stlport/iomanip
+epoc32/include/stdapis/stlport/iomanip.h
+epoc32/include/stdapis/stlport/ios
+epoc32/include/stdapis/stlport/ios.h
+epoc32/include/stdapis/stlport/iosfwd
+epoc32/include/stdapis/stlport/iostream
+epoc32/include/stdapis/stlport/iostream.h
+epoc32/include/stdapis/stlport/istream
+epoc32/include/stdapis/stlport/istream.h
+epoc32/include/stdapis/stlport/iterator
+epoc32/include/stdapis/stlport/limits
+epoc32/include/stdapis/stlport/list
+epoc32/include/stdapis/stlport/locale
+epoc32/include/stdapis/stlport/locale.h
+epoc32/include/stdapis/stlport/map
+epoc32/include/stdapis/stlport/math.h
+epoc32/include/stdapis/stlport/mem.h
+epoc32/include/stdapis/stlport/memory
+epoc32/include/stdapis/stlport/new
+epoc32/include/stdapis/stlport/new.h
+epoc32/include/stdapis/stlport/numeric
+epoc32/include/stdapis/stlport/ostream
+epoc32/include/stdapis/stlport/ostream.h
+epoc32/include/stdapis/stlport/pthread.h
+epoc32/include/stdapis/stlport/pthread_alloc
+epoc32/include/stdapis/stlport/queue
+epoc32/include/stdapis/stlport/rope
+epoc32/include/stdapis/stlport/runtime/exception.h
+epoc32/include/stdapis/stlport/runtime/new
+epoc32/include/stdapis/stlport/runtime/new.h
+epoc32/include/stdapis/stlport/runtime/numeric
+epoc32/include/stdapis/stlport/runtime/typeinfo
+epoc32/include/stdapis/stlport/runtime/typeinfo.h
+epoc32/include/stdapis/stlport/set
+epoc32/include/stdapis/stlport/setjmp.h
+epoc32/include/stdapis/stlport/slist
+epoc32/include/stdapis/stlport/sstream
+epoc32/include/stdapis/stlport/stack
+epoc32/include/stdapis/stlport/stdarg.h
+epoc32/include/stdapis/stlport/stddef.h
+epoc32/include/stdapis/stlport/stdexcept
+epoc32/include/stdapis/stlport/stdio.h
+epoc32/include/stdapis/stlport/stdio_streambuf
+epoc32/include/stdapis/stlport/stdiostream.h
+epoc32/include/stdapis/stlport/stdlib.h
+epoc32/include/stdapis/stlport/stl/_abbrevs.h
+epoc32/include/stdapis/stlport/stl/_algo.c
+epoc32/include/stdapis/stlport/stl/_algo.h
+epoc32/include/stdapis/stlport/stl/_algobase.c
+epoc32/include/stdapis/stlport/stl/_algobase.h
+epoc32/include/stdapis/stlport/stl/_alloc.c
+epoc32/include/stdapis/stlport/stl/_alloc.h
+epoc32/include/stdapis/stlport/stl/_auto_ptr.h
+epoc32/include/stdapis/stlport/stl/_bitset.c
+epoc32/include/stdapis/stlport/stl/_bitset.h
+epoc32/include/stdapis/stlport/stl/_bvector.h
+epoc32/include/stdapis/stlport/stl/_check_config.h
+epoc32/include/stdapis/stlport/stl/_cmath.h
+epoc32/include/stdapis/stlport/stl/_codecvt.h
+epoc32/include/stdapis/stlport/stl/_collate.h
+epoc32/include/stdapis/stlport/stl/_complex.c
+epoc32/include/stdapis/stlport/stl/_complex.h
+epoc32/include/stdapis/stlport/stl/_config.h
+epoc32/include/stdapis/stlport/stl/_config_compat.h
+epoc32/include/stdapis/stlport/stl/_config_compat_post.h
+epoc32/include/stdapis/stlport/stl/_construct.h
+epoc32/include/stdapis/stlport/stl/_ctraits_fns.h
+epoc32/include/stdapis/stlport/stl/_ctype.c
+epoc32/include/stdapis/stlport/stl/_ctype.h
+epoc32/include/stdapis/stlport/stl/_cwchar.h
+epoc32/include/stdapis/stlport/stl/_deque.c
+epoc32/include/stdapis/stlport/stl/_deque.h
+epoc32/include/stdapis/stlport/stl/_epilog.h
+epoc32/include/stdapis/stlport/stl/_exception.h
+epoc32/include/stdapis/stlport/stl/_fstream.c
+epoc32/include/stdapis/stlport/stl/_fstream.h
+epoc32/include/stdapis/stlport/stl/_function.h
+epoc32/include/stdapis/stlport/stl/_function_adaptors.h
+epoc32/include/stdapis/stlport/stl/_function_base.h
+epoc32/include/stdapis/stlport/stl/_hash_fun.h
+epoc32/include/stdapis/stlport/stl/_hash_map.h
+epoc32/include/stdapis/stlport/stl/_hash_set.h
+epoc32/include/stdapis/stlport/stl/_hashtable.c
+epoc32/include/stdapis/stlport/stl/_hashtable.h
+epoc32/include/stdapis/stlport/stl/_heap.c
+epoc32/include/stdapis/stlport/stl/_heap.h
+epoc32/include/stdapis/stlport/stl/_ios.c
+epoc32/include/stdapis/stlport/stl/_ios.h
+epoc32/include/stdapis/stlport/stl/_ios_base.h
+epoc32/include/stdapis/stlport/stl/_iosfwd.h
+epoc32/include/stdapis/stlport/stl/_istream.c
+epoc32/include/stdapis/stlport/stl/_istream.h
+epoc32/include/stdapis/stlport/stl/_istreambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_iterator.h
+epoc32/include/stdapis/stlport/stl/_iterator_base.h
+epoc32/include/stdapis/stlport/stl/_iterator_old.h
+epoc32/include/stdapis/stlport/stl/_limits.c
+epoc32/include/stdapis/stlport/stl/_limits.h
+epoc32/include/stdapis/stlport/stl/_list.c
+epoc32/include/stdapis/stlport/stl/_list.h
+epoc32/include/stdapis/stlport/stl/_locale.h
+epoc32/include/stdapis/stlport/stl/_map.h
+epoc32/include/stdapis/stlport/stl/_messages_facets.h
+epoc32/include/stdapis/stlport/stl/_monetary.c
+epoc32/include/stdapis/stlport/stl/_monetary.h
+epoc32/include/stdapis/stlport/stl/_new.h
+epoc32/include/stdapis/stlport/stl/_null_stream.h
+epoc32/include/stdapis/stlport/stl/_num_get.c
+epoc32/include/stdapis/stlport/stl/_num_get.h
+epoc32/include/stdapis/stlport/stl/_num_put.c
+epoc32/include/stdapis/stlport/stl/_num_put.h
+epoc32/include/stdapis/stlport/stl/_numeric.c
+epoc32/include/stdapis/stlport/stl/_numeric.h
+epoc32/include/stdapis/stlport/stl/_numpunct.c
+epoc32/include/stdapis/stlport/stl/_numpunct.h
+epoc32/include/stdapis/stlport/stl/_ostream.c
+epoc32/include/stdapis/stlport/stl/_ostream.h
+epoc32/include/stdapis/stlport/stl/_ostreambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_pair.h
+epoc32/include/stdapis/stlport/stl/_prolog.h
+epoc32/include/stdapis/stlport/stl/_pthread_alloc.c
+epoc32/include/stdapis/stlport/stl/_pthread_alloc.h
+epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h
+epoc32/include/stdapis/stlport/stl/_queue.h
+epoc32/include/stdapis/stlport/stl/_range_errors.h
+epoc32/include/stdapis/stlport/stl/_raw_storage_iter.h
+epoc32/include/stdapis/stlport/stl/_relops.h
+epoc32/include/stdapis/stlport/stl/_relops_cont.h
+epoc32/include/stdapis/stlport/stl/_relops_hash_cont.h
+epoc32/include/stdapis/stlport/stl/_relops_template.h
+epoc32/include/stdapis/stlport/stl/_rope.c
+epoc32/include/stdapis/stlport/stl/_rope.h
+epoc32/include/stdapis/stlport/stl/_set.h
+epoc32/include/stdapis/stlport/stl/_site_config.h
+epoc32/include/stdapis/stlport/stl/_slist.c
+epoc32/include/stdapis/stlport/stl/_slist.h
+epoc32/include/stdapis/stlport/stl/_slist_base.c
+epoc32/include/stdapis/stlport/stl/_slist_base.h
+epoc32/include/stdapis/stlport/stl/_sstream.c
+epoc32/include/stdapis/stlport/stl/_sstream.h
+epoc32/include/stdapis/stlport/stl/_stack.h
+epoc32/include/stdapis/stlport/stl/_stdio_file.h
+epoc32/include/stdapis/stlport/stl/_stream_iterator.h
+epoc32/include/stdapis/stlport/stl/_streambuf.c
+epoc32/include/stdapis/stlport/stl/_streambuf.h
+epoc32/include/stdapis/stlport/stl/_streambuf_iterator.h
+epoc32/include/stdapis/stlport/stl/_string.c
+epoc32/include/stdapis/stlport/stl/_string.h
+epoc32/include/stdapis/stlport/stl/_string_fwd.c
+epoc32/include/stdapis/stlport/stl/_string_fwd.h
+epoc32/include/stdapis/stlport/stl/_string_hash.h
+epoc32/include/stdapis/stlport/stl/_string_io.c
+epoc32/include/stdapis/stlport/stl/_string_io.h
+epoc32/include/stdapis/stlport/stl/_strstream.h
+epoc32/include/stdapis/stlport/stl/_tempbuf.c
+epoc32/include/stdapis/stlport/stl/_tempbuf.h
+epoc32/include/stdapis/stlport/stl/_threads.c
+epoc32/include/stdapis/stlport/stl/_threads.h
+epoc32/include/stdapis/stlport/stl/_time_facets.c
+epoc32/include/stdapis/stlport/stl/_time_facets.h
+epoc32/include/stdapis/stlport/stl/_tree.c
+epoc32/include/stdapis/stlport/stl/_tree.h
+epoc32/include/stdapis/stlport/stl/_uninitialized.h
+epoc32/include/stdapis/stlport/stl/_valarray.c
+epoc32/include/stdapis/stlport/stl/_valarray.h
+epoc32/include/stdapis/stlport/stl/_vector.c
+epoc32/include/stdapis/stlport/stl/_vector.h
+epoc32/include/stdapis/stlport/stl/c_locale.h
+epoc32/include/stdapis/stlport/stl/char_traits.h
+epoc32/include/stdapis/stlport/stl/concept_checks.h
+epoc32/include/stdapis/stlport/stl/debug/_debug.c
+epoc32/include/stdapis/stlport/stl/debug/_debug.h
+epoc32/include/stdapis/stlport/stl/debug/_deque.h
+epoc32/include/stdapis/stlport/stl/debug/_hashtable.h
+epoc32/include/stdapis/stlport/stl/debug/_iterator.h
+epoc32/include/stdapis/stlport/stl/debug/_list.h
+epoc32/include/stdapis/stlport/stl/debug/_relops_cont.h
+epoc32/include/stdapis/stlport/stl/debug/_relops_hash_cont.h
+epoc32/include/stdapis/stlport/stl/debug/_slist.h
+epoc32/include/stdapis/stlport/stl/debug/_string.h
+epoc32/include/stdapis/stlport/stl/debug/_tree.h
+epoc32/include/stdapis/stlport/stl/debug/_vector.h
+epoc32/include/stdapis/stlport/stl/msl_string.h
+epoc32/include/stdapis/stlport/stl/type_traits.h
+epoc32/include/stdapis/stlport/stl/wrappers/_deque.h
+epoc32/include/stdapis/stlport/stl/wrappers/_hash_map.h
+epoc32/include/stdapis/stlport/stl/wrappers/_hash_set.h
+epoc32/include/stdapis/stlport/stl/wrappers/_list.h
+epoc32/include/stdapis/stlport/stl/wrappers/_map.h
+epoc32/include/stdapis/stlport/stl/wrappers/_mmap.h
+epoc32/include/stdapis/stlport/stl/wrappers/_set.h
+epoc32/include/stdapis/stlport/stl/wrappers/_slist.h
+epoc32/include/stdapis/stlport/stl/wrappers/_vector.h
+epoc32/include/stdapis/stlport/stl_user_config.h
+epoc32/include/stdapis/stlport/streambuf
+epoc32/include/stdapis/stlport/streambuf.h
+epoc32/include/stdapis/stlport/string
+epoc32/include/stdapis/stlport/string.h
+epoc32/include/stdapis/stlport/strstream
+epoc32/include/stdapis/stlport/strstream.h
+epoc32/include/stdapis/stlport/time.h
+epoc32/include/stdapis/stlport/typeinfo
+epoc32/include/stdapis/stlport/typeinfo.h
+epoc32/include/stdapis/stlport/using/cstring
+epoc32/include/stdapis/stlport/using/fstream
+epoc32/include/stdapis/stlport/using/h/fstream.h
+epoc32/include/stdapis/stlport/using/h/iomanip.h
+epoc32/include/stdapis/stlport/using/h/iostream.h
+epoc32/include/stdapis/stlport/using/h/ostream.h
+epoc32/include/stdapis/stlport/using/h/streambuf.h
+epoc32/include/stdapis/stlport/using/h/strstream.h
+epoc32/include/stdapis/stlport/using/iomanip
+epoc32/include/stdapis/stlport/using/ios
+epoc32/include/stdapis/stlport/using/iosfwd
+epoc32/include/stdapis/stlport/using/iostream
+epoc32/include/stdapis/stlport/using/istream
+epoc32/include/stdapis/stlport/using/locale
+epoc32/include/stdapis/stlport/using/ostream
+epoc32/include/stdapis/stlport/using/sstream
+epoc32/include/stdapis/stlport/using/streambuf
+epoc32/include/stdapis/stlport/using/strstream
+epoc32/include/stdapis/stlport/utility
+epoc32/include/stdapis/stlport/valarray
+epoc32/include/stdapis/stlport/vector
+epoc32/include/stdapis/stlport/wchar.h
+epoc32/include/stdapis/stlport/wctype.h
+epoc32/include/stdapis/stlport/wrap_std/complex
+epoc32/include/stdapis/stlport/wrap_std/fstream
+epoc32/include/stdapis/stlport/wrap_std/h/fstream.h
+epoc32/include/stdapis/stlport/wrap_std/h/iostream.h
+epoc32/include/stdapis/stlport/wrap_std/h/streambuf.h
+epoc32/include/stdapis/stlport/wrap_std/h/strstream.h
+epoc32/include/stdapis/stlport/wrap_std/iomanip
+epoc32/include/stdapis/stlport/wrap_std/ios
+epoc32/include/stdapis/stlport/wrap_std/iosfwd
+epoc32/include/stdapis/stlport/wrap_std/iostream
+epoc32/include/stdapis/stlport/wrap_std/istream
+epoc32/include/stdapis/stlport/wrap_std/locale
+epoc32/include/stdapis/stlport/wrap_std/ostream
+epoc32/include/stdapis/stlport/wrap_std/sstream
+epoc32/include/stdapis/stlport/wrap_std/streambuf
+epoc32/include/stdapis/stlport/wrap_std/strstream
+epoc32/include/stdapis/string.h
+epoc32/include/stdapis/strings.h
+epoc32/include/stdapis/sys/_iovec.h
+epoc32/include/stdapis/sys/_null.h
+epoc32/include/stdapis/sys/_pthreadtypes.h
+epoc32/include/stdapis/sys/_sigset.h
+epoc32/include/stdapis/sys/_timespec.h
+epoc32/include/stdapis/sys/_timeval.h
+epoc32/include/stdapis/sys/_types.h
+epoc32/include/stdapis/sys/cdefs.h
+epoc32/include/stdapis/sys/dirent.h
+epoc32/include/stdapis/sys/endian.h
+epoc32/include/stdapis/sys/errno.h
+epoc32/include/stdapis/sys/event.h
+epoc32/include/stdapis/sys/fcntl.h
+epoc32/include/stdapis/sys/file.h
+epoc32/include/stdapis/sys/filio.h
+epoc32/include/stdapis/sys/ioccom.h
+epoc32/include/stdapis/sys/ioctl.h
+epoc32/include/stdapis/sys/ipc.h
+epoc32/include/stdapis/sys/limits.h
+epoc32/include/stdapis/sys/md5.h
+epoc32/include/stdapis/sys/mman.h
+epoc32/include/stdapis/sys/msg.h
+epoc32/include/stdapis/sys/param.h
+epoc32/include/stdapis/sys/queue.h
+epoc32/include/stdapis/sys/resource.h
+epoc32/include/stdapis/sys/select.h
+epoc32/include/stdapis/sys/sem.h
+epoc32/include/stdapis/sys/serial.h
+epoc32/include/stdapis/sys/shm.h
+epoc32/include/stdapis/sys/signal.h
+epoc32/include/stdapis/sys/socket.h
+epoc32/include/stdapis/sys/sockio.h
+epoc32/include/stdapis/sys/stat.h
+epoc32/include/stdapis/sys/stdint.h
+epoc32/include/stdapis/sys/sysctl.h
+epoc32/include/stdapis/sys/syslimits.h
+epoc32/include/stdapis/sys/time.h
+epoc32/include/stdapis/sys/times.h
+epoc32/include/stdapis/sys/timespec.h
+epoc32/include/stdapis/sys/ttycom.h
+epoc32/include/stdapis/sys/types.h
+epoc32/include/stdapis/sys/uio.h
+epoc32/include/stdapis/sys/unistd.h
+epoc32/include/stdapis/sys/utsname.h
+epoc32/include/stdapis/sys/wait.h
+epoc32/include/stdapis/sysexits.h
+epoc32/include/stdapis/time.h
+epoc32/include/stdapis/unistd.h
+epoc32/include/stdapis/utime.h
+epoc32/include/stdapis/utmp.h
+epoc32/include/stdapis/wchar.h
+epoc32/include/stdapis/wctype.h
+epoc32/include/stdapis/zconf.h
+epoc32/include/stdapis/zlib.h
+epoc32/include/stereowideningbase.h
+epoc32/include/stereowideningdata.h
+epoc32/include/stereowideningutility.h
+epoc32/include/stereowideningutilitydata.h
+epoc32/include/stringloader.h
+epoc32/include/stringpool.h
+epoc32/include/stringpool.inl
+epoc32/include/symcpp.h
+epoc32/include/sysutil.h
+epoc32/include/t32wld.h
+epoc32/include/tagma.h
+epoc32/include/telephony.inl
+epoc32/include/telsess.h
+epoc32/include/textresolver.h
+epoc32/include/textresolver.hrh
+epoc32/include/thttpfields.h
+epoc32/include/tinternetdate.h
+epoc32/include/tlmkitemiddbcombiinfo.h
+epoc32/include/touchfeedback.h
+epoc32/include/touchlogicalfeedback.h
+epoc32/include/tpbkcontactitemfield.h
+epoc32/include/tranp.h
+epoc32/include/tsendasclientpanic.h
+epoc32/include/tsendasmessagetypefilter.h
+epoc32/include/tsendingcapabilities.h
+epoc32/include/tsendingcapabilities.inl
+epoc32/include/txtetext.h
+epoc32/include/txtetext.inl
+epoc32/include/txtfmlyr.h
+epoc32/include/txtfmlyr.inl
+epoc32/include/txtfrmat.h
+epoc32/include/txtfrmat.inl
+epoc32/include/txtglobl.h
+epoc32/include/txtglobl.inl
+epoc32/include/txtlaydc.h
+epoc32/include/txtmfmtx.h
+epoc32/include/txtrich.h
+epoc32/include/txtrich.inl
+epoc32/include/txtstyle.h
+epoc32/include/txtstyle.inl
+epoc32/include/tz.h
+epoc32/include/tzconverter.h
+epoc32/include/tzdefines.h
+epoc32/include/tzlocalizationdatatypes.h
+epoc32/include/tzlocalizer.h
+epoc32/include/tzupdate.h
+epoc32/include/uikon.hrh
+epoc32/include/uikon.rh
+epoc32/include/uikon/eiksvfty.h
+epoc32/include/unifiedcertstore.h
+epoc32/include/uri16.h
+epoc32/include/uri8.h
+epoc32/include/uricommon.h
+epoc32/include/uriutils.h
+epoc32/include/uriutilscommon.h
+epoc32/include/utf.h
+epoc32/include/variant/symbian_os.hrh
+epoc32/include/vcal.h
+epoc32/include/vcal.inl
+epoc32/include/vcard.h
+epoc32/include/vcard.inl
+epoc32/include/versioninfo.h
+epoc32/include/versioninfo.inl
+epoc32/include/versit.h
+epoc32/include/versit.inl
+epoc32/include/versittls.h
+epoc32/include/vibractrl.h
+epoc32/include/videoplayer.h
+epoc32/include/videorecorder.h
+epoc32/include/viewcli.h
+epoc32/include/vobserv.h
+epoc32/include/vprop.h
+epoc32/include/vprop.inl
+epoc32/include/vrecur.h
+epoc32/include/vrecur.inl
+epoc32/include/vstaticutils.h
+epoc32/include/vtoken.h
+epoc32/include/vtzrules.h
+epoc32/include/vuid.h
+epoc32/include/vutil.h
+epoc32/include/vwsdef.h
+epoc32/include/w32adll.h
+epoc32/include/w32click.h
+epoc32/include/w32std.h
+epoc32/include/wapattrdf.h
+epoc32/include/wapengstd.h
+epoc32/include/waplog.h
+epoc32/include/wapmessage.h
+epoc32/include/wapmime.h
+epoc32/include/wapmsgerr.h
+epoc32/include/waptestutils.inl
+epoc32/include/wlansdkpskeys.h
+epoc32/include/wngdoor.h
+epoc32/include/wngmodel.h
+epoc32/include/wngmodel.inl
+epoc32/include/wsp/wsptypes.h
+epoc32/include/wspdecoder.h
+epoc32/include/wspencoder.h
+epoc32/include/wtlscert.h
+epoc32/include/wtlscertchain.h
+epoc32/include/wtlsnames.h
+epoc32/include/x500dn.h
+epoc32/include/x509cert.h
+epoc32/include/x509certchain.h
+epoc32/include/x509certext.h
+epoc32/include/x509gn.h
+epoc32/include/x520ava.h
+epoc32/include/xml/attribute.h
+epoc32/include/xml/contenthandler.h
+epoc32/include/xml/contentprocessoruids.h
+epoc32/include/xml/documentparameters.h
+epoc32/include/xml/matchdata.h
+epoc32/include/xml/parser.h
+epoc32/include/xml/parserfeature.h
+epoc32/include/xml/stringdictionarycollection.h
+epoc32/include/xml/taginfo.h
+epoc32/include/xml/wbxmlextensionhandler.h
+epoc32/include/xml/xmlframeworkerrors.h
+epoc32/include/xmlengattr.h
+epoc32/include/xmlengattr.inl
+epoc32/include/xmlengbinarycontainer.h
+epoc32/include/xmlengbinarycontainer.inl
+epoc32/include/xmlengcdatasection.h
+epoc32/include/xmlengcdatasection.inl
+epoc32/include/xmlengcharacterdata.h
+epoc32/include/xmlengcharacterdata.inl
+epoc32/include/xmlengchunkcontainer.h
+epoc32/include/xmlengchunkcontainer.inl
+epoc32/include/xmlengcomment.h
+epoc32/include/xmlengcomment.inl
+epoc32/include/xmlengdatacontainer.h
+epoc32/include/xmlengdatacontainer.inl
+epoc32/include/xmlengdataserializer.h
+epoc32/include/xmlengdocument.h
+epoc32/include/xmlengdocument.inl
+epoc32/include/xmlengdocumentfragment.h
+epoc32/include/xmlengdocumentfragment.inl
+epoc32/include/xmlengdom.h
+epoc32/include/xmlengdomimplementation.h
+epoc32/include/xmlengdomparser.h
+epoc32/include/xmlengelement.h
+epoc32/include/xmlengelement.inl
+epoc32/include/xmlengentityreference.h
+epoc32/include/xmlengentityreference.inl
+epoc32/include/xmlengerrors.h
+epoc32/include/xmlengfilecontainer.h
+epoc32/include/xmlengfilecontainer.inl
+epoc32/include/xmlengnamespace.h
+epoc32/include/xmlengnamespace.inl
+epoc32/include/xmlengnode.h
+epoc32/include/xmlengnode.inl
+epoc32/include/xmlengnodefilter.h
+epoc32/include/xmlengnodelist.h
+epoc32/include/xmlengnodelist.inl
+epoc32/include/xmlengnodelist_impl.h
+epoc32/include/xmlengoutputstream.h
+epoc32/include/xmlengprocessinginstruction.h
+epoc32/include/xmlengprocessinginstruction.inl
+epoc32/include/xmlengserializationoptions.h
+epoc32/include/xmlengtext.h
+epoc32/include/xmlengtext.inl
+epoc32/include/xmlenguserdata.h
+epoc32/include/ziparchive.h
+epoc32/include/zipfile.h
+epoc32/include/zipfilemember.h
+epoc32/include/zipfilememberinputstream.h
+epoc32/include/zipfilememberiterator.h
+epoc32/include/a3f/a3f_trace_ctxt.h
+epoc32/include/arm_vfp.h
+epoc32/include/arp_hdr.h
+epoc32/include/assp/template_assp/template_assp.h
+epoc32/include/assp/template_assp/template_assp_priv.h
+epoc32/include/ataudioeventapi.h
+epoc32/include/bitmtrans/bitmtranspanic.h
+epoc32/include/bldcodeline.hrh
+epoc32/include/bldprivate.hrh
+epoc32/include/bldpublic.hrh
+epoc32/include/bldregional.hrh
+epoc32/include/bldvariant.hrh
+epoc32/include/bsul/bsul.h
+epoc32/include/bsul/ccacheddriveinfo.h
+epoc32/include/btdefcommport.h
+epoc32/include/calinterimapipanic.h
+epoc32/include/cdmasmsaddr.h
+epoc32/include/chttpresponse.h
+epoc32/include/cimattachmentwaiter.h
+epoc32/include/cimmobilitypolicyplugin.inl
+epoc32/include/cimplainbodytext.h
+epoc32/include/cmmsaccounts.h
+epoc32/include/cmmssettings.h
+epoc32/include/cmsvplainbodytext.h
+epoc32/include/coelayoutman.h
+epoc32/include/comms-infras/cftransport.inl
+epoc32/include/comms-infras/ss_roles.inl
+epoc32/include/connect/abclient.h
+epoc32/include/connectprog.h
+epoc32/include/csendaseditutils.inl
+epoc32/include/cshelp/conset.hlp.hrh
+epoc32/include/cshelp/div.hlp.hrh
+epoc32/include/cshelp/find.hlp.hrh
+epoc32/include/csmsclass0base.h
+epoc32/include/csmsgetdetdescinterface.inl
+epoc32/include/data_caging_path_literals.hrh
+epoc32/include/data_caging_paths.hrh
+epoc32/include/data_caging_paths_for_iby.hrh
+epoc32/include/data_caging_paths_strings.hrh
+epoc32/include/defaultcaps.hrh
+epoc32/include/drivers/dma.inl
+epoc32/include/drivers/pbus.inl
+epoc32/include/drivers/pccard.inl
+epoc32/include/e32modes.h
+epoc32/include/ecam/cameraoverlay.h
+epoc32/include/ecam/ecamcommonuids.hrh
+epoc32/include/ecam/ecamdirectviewfinder.h
+epoc32/include/ecam/ecamdirectviewfinderuids.hrh
+epoc32/include/ecamerrors.h
+epoc32/include/ecom/test_bed/componentinfo.inl
+epoc32/include/ecom/test_bed/transition.inl
+epoc32/include/ecom/test_bed/unittest.inl
+epoc32/include/ecom/test_bed/unittestinfo.inl
+epoc32/include/errorres.rsg
+epoc32/include/es_wsms.h
+epoc32/include/es_wsms.inl
+epoc32/include/et_clsvr.h
+epoc32/include/etbuffer.h
+epoc32/include/etelext.h
+epoc32/include/etslotnum.h
+epoc32/include/exifutility.h
+epoc32/include/ext_hdr.h
+epoc32/include/f32plugin.inl
+epoc32/include/features.hrh
+epoc32/include/featureuids.h
+epoc32/include/gcc_mingw/gcc_mingw_3_4_2.h
+epoc32/include/gles/glext.h
+epoc32/include/gles/glextplatform.h
+epoc32/include/gles/glplatform.h
+epoc32/include/gmxmlparser.h
+epoc32/include/gprsprog.h
+epoc32/include/gsmuieoperations.h
+epoc32/include/gsmunonieoperations.h
+epoc32/include/gsmuset.h
+epoc32/include/gsmuset.inl
+epoc32/include/gsmustor.h
+epoc32/include/gsmustor.inl
+epoc32/include/hsdataobserver.h
+epoc32/include/hsexception.h
+epoc32/include/hswidget.h
+epoc32/include/hswidgetpublisher.h
+epoc32/include/http/framework/cheadercodec.h
+epoc32/include/http/framework/cprotocolhandler.h
+epoc32/include/http/framework/cprottransaction.h
+epoc32/include/http/framework/crxdata.h
+epoc32/include/http/framework/ctxdata.h
+epoc32/include/http/framework/mrxdataobserver.h
+epoc32/include/http/framework/rheaderfield.h
+epoc32/include/hwrmhaptics.h
+epoc32/include/hwrmhapticsactuatorobserver.h
+epoc32/include/hwrmhapticsobserver.h
+epoc32/include/hwrmlogicalactuators.h
+epoc32/include/icl/exifimagedisplayext.h
+epoc32/include/icl/icl_propertyuids.h
+epoc32/include/icl/icl_propertyuids.hrh
+epoc32/include/icl/imageconversionextension.h
+epoc32/include/icl/imageconversionextensionintf.h
+epoc32/include/icl/imagedisplay.hrh
+epoc32/include/icl/imagedisplaypaniccodes.h
+epoc32/include/icl/imagedisplayplugin.h
+epoc32/include/icl/imagedisplaypluginext.h
+epoc32/include/iclexif.h
+epoc32/include/iclexifimageframe.h
+epoc32/include/icmp6_hdr.h
+epoc32/include/iconlocations.hrh
+epoc32/include/imagedisplay.h
+epoc32/include/imageframe.h
+epoc32/include/imageframeconst.h
+epoc32/include/imageframeconst.hrh
+epoc32/include/imageframeformats.hrh
+epoc32/include/imcmmain.h
+epoc32/include/imcvrecv.inl
+epoc32/include/imcvsend.inl
+epoc32/include/in_chk.h
+epoc32/include/in_hdr.h
+epoc32/include/in_pkt.h
+epoc32/include/ineturi.h
+epoc32/include/ineturilist.h
+epoc32/include/ineturilistdef.h
+epoc32/include/ip4_hdr.h
+epoc32/include/ip6_hdr.h
+epoc32/include/kernel/arm/vfpsupport.h
+epoc32/include/khronos_types.h
+epoc32/include/lbs.inl
+epoc32/include/lbs/lbsadmin.inl
+epoc32/include/lbs/lbsassistancedatabase.inl
+epoc32/include/lbs/lbsassistancedatabuilderset.inl
+epoc32/include/lbs/lbsassistancedatasourcemodule.inl
+epoc32/include/lbs/lbsipc.hrh
+epoc32/include/lbsfields.h
+epoc32/include/lbspositioncalc.h
+epoc32/include/libc/netinet/net_types.h
+epoc32/include/logdef.h
+epoc32/include/mateventcompleteobserver.h
+epoc32/include/mbmstypes.h
+epoc32/include/mctkeystore.inl
+epoc32/include/mda/common/gsmaudio.h
+epoc32/include/mda/common/gsmaudio.hrh
+epoc32/include/mdf/mdfprocessingunit.inl
+epoc32/include/mdf/mdfpuloader.inl
+epoc32/include/memmodel/emul/platform.h
+epoc32/include/memmodel/epoc/mmubase/kblockmap.h
+epoc32/include/mm/conversioncoefficient.h
+epoc32/include/mmf/common/midistandardcustomcommands.h
+epoc32/include/mmf/common/mmfmidi.h
+epoc32/include/mmf/common/speechrecognitioncustomcommandimplementor.h
+epoc32/include/mmf/common/speechrecognitioncustomcommandparser.h
+epoc32/include/mmf/common/speechrecognitioncustomcommands.h
+epoc32/include/mmf/common/speechrecognitiondataclient.h
+epoc32/include/mmf/common/speechrecognitiondatacommon.h
+epoc32/include/mmf/common/speechrecognitiondatadevasr.h
+epoc32/include/mmf/common/speechrecognitiondatatest.h
+epoc32/include/mmf/devasr/devasr.h
+epoc32/include/mmf/devasr/devasrcommon.h
+epoc32/include/mmf/devasr/devasruids.hrh
+epoc32/include/mmf/devvideo/avc.h
+epoc32/include/mmf/devvideo/devvideobase.h
+epoc32/include/mmf/devvideo/devvideobase.inl
+epoc32/include/mmf/devvideo/devvideoconstants.h
+epoc32/include/mmf/devvideo/devvideoplay.h
+epoc32/include/mmf/devvideo/devvideoplay.inl
+epoc32/include/mmf/devvideo/devvideoplugininterfaceuids.hrh
+epoc32/include/mmf/devvideo/devvideorecord.h
+epoc32/include/mmf/devvideo/devvideorecord.inl
+epoc32/include/mmf/devvideo/h263.h
+epoc32/include/mmf/devvideo/mpeg4visual.h
+epoc32/include/mmf/devvideo/on2vp6.h
+epoc32/include/mmf/devvideo/sorensonspark.h
+epoc32/include/mmf/devvideo/vc1.h
+epoc32/include/mmf/devvideo/videoplayhwdevice.h
+epoc32/include/mmf/devvideo/videorecordhwdevice.h
+epoc32/include/mmf/server/devsoundstandardcustominterfaces.h
+epoc32/include/mmf/server/mmfaudioinput.h
+epoc32/include/mmf/server/mmfaudiooutput.h
+epoc32/include/mmf/server/mmfclip.h
+epoc32/include/mmf/server/mmfcodec.h
+epoc32/include/mmf/server/mmfdatapath.h
+epoc32/include/mmf/server/mmfdatapathproxy.h
+epoc32/include/mmf/server/mmfdes.h
+epoc32/include/mmf/server/mmfdevsoundcustominterfacesupport.h
+epoc32/include/mmf/server/mmffile.h
+epoc32/include/mmf/server/mmfformat.h
+epoc32/include/mmf/server/mmfformat.inl
+epoc32/include/mmf/server/mmfhwdevice.inl
+epoc32/include/mmf/server/mmfsubthreadbase.h
+epoc32/include/mmf/server/mmfswcodecwrapper.h
+epoc32/include/mmf/server/mmfurl.h
+epoc32/include/mmf/server/mmfvideoframebuffer.h
+epoc32/include/mmf/server/sounddevice.h
+epoc32/include/mmf/server/sounddevice.inl
+epoc32/include/mmfformatimplementationuids.hrh
+epoc32/include/mmmssettingsobserver.h
+epoc32/include/mmssettingsproxybase.inl
+epoc32/include/msventryscheduledata.h
+epoc32/include/msvoffpeaktime.h
+epoc32/include/msvscheduledentry.h
+epoc32/include/msvscheduledentry.inl
+epoc32/include/msvschedulepackage.h
+epoc32/include/msvschedulesend.h
+epoc32/include/msvschedulesend.inl
+epoc32/include/msvschedulesettings.h
+epoc32/include/msvsenderroraction.h
+epoc32/include/msvsysagentaction.h
+epoc32/include/mw/akntouchpane.h
+epoc32/include/mw/akntouchpane.hrh
+epoc32/include/mw/browseruiinternalcrkeys.h
+epoc32/include/mw/cmsettingsui.h
+epoc32/include/mw/lbt.h
+epoc32/include/mw/lbtcommon.h
+epoc32/include/mw/lbterrors.h
+epoc32/include/mw/lbtgeoareabase.h
+epoc32/include/mw/lbtgeocell.h
+epoc32/include/mw/lbtgeocircle.h
+epoc32/include/mw/lbtgeorect.h
+epoc32/include/mw/lbtlisttriggeroptions.h
+epoc32/include/mw/lbtserver.h
+epoc32/include/mw/lbtsessiontrigger.h
+epoc32/include/mw/lbtstartuptrigger.h
+epoc32/include/mw/lbttriggerchangeevent.h
+epoc32/include/mw/lbttriggerchangeeventnotifier.h
+epoc32/include/mw/lbttriggerchangeeventobserver.h
+epoc32/include/mw/lbttriggerconditionarea.h
+epoc32/include/mw/lbttriggerconditionbase.h
+epoc32/include/mw/lbttriggerdynamicinfo.h
+epoc32/include/mw/lbttriggerentry.h
+epoc32/include/mw/lbttriggerfilterbase.h
+epoc32/include/mw/lbttriggerfilterbyarea.h
+epoc32/include/mw/lbttriggerfilterbyattribute.h
+epoc32/include/mw/lbttriggerfiltercomposite.h
+epoc32/include/mw/lbttriggerfiringeventnotifier.h
+epoc32/include/mw/lbttriggerfiringeventobserver.h
+epoc32/include/mw/lbttriggerinfo.h
+epoc32/include/mw/lbttriggeringsystemsettings.h
+epoc32/include/mw/lbttriggeringsystemsettingschangeeventnotifier.h
+epoc32/include/mw/lbttriggeringsystemsettingschangeeventobserver.h
+epoc32/include/mw/memorymanager.h
+epoc32/include/mw/pticore.h
+epoc32/include/mw/rsfwmountentry.h
+epoc32/include/mw/rsfwmountentryitem.h
+epoc32/include/mw/rsfwmountman.h
+epoc32/include/mw/seconsdkcrkeys.h
+epoc32/include/mw/sencryptoutils.h
+epoc32/include/mw/senpointermap.h
+epoc32/include/networkemulator/cnetworkemulatorsetupcommdb.h
+epoc32/include/networkemulator/cprotocoltypes.h
+epoc32/include/networkemulator/cuccsdevicecontrol.h
+epoc32/include/networkemulator/cuccsdeviceprotocol.h
+epoc32/include/networkemulator/mucctransport.h
+epoc32/include/networkemulator/networkemulatorcontrol.h
+epoc32/include/networkemulator/uccs_errorcodes.h
+epoc32/include/networking/dnd_err.h
+epoc32/include/networking/packetlogger.h
+epoc32/include/networking/vj.inl
+epoc32/include/networking/vjcomp.inl
+epoc32/include/non_foundation_paths.hrh
+epoc32/include/obexusbtransportinfo.h
+epoc32/include/panerr.h
+epoc32/include/panprog.h
+epoc32/include/pdrrecrd.h
+epoc32/include/phbksync.h
+epoc32/include/platform_paths.hrh
+epoc32/include/platformstaticfeatures.hrh
+epoc32/include/playerinformationtarget.h
+epoc32/include/playerinformationtargetobserver.h
+epoc32/include/plpsess.inl
+epoc32/include/privateruntimeids.hrh
+epoc32/include/privatestaticfeatures.hrh
+epoc32/include/productvariant.hrh
+epoc32/include/publicruntimeids.hrh
+epoc32/include/publicstaticfeatures.hrh
+epoc32/include/push/cwappushmsgutils.inl
+epoc32/include/regpsdll.inl
+epoc32/include/remconbatterytarget.h
+epoc32/include/remconbatterytargetobserver.h
+epoc32/include/remcongroupnavigationtarget.h
+epoc32/include/remcongroupnavigationtargetobserver.h
+epoc32/include/remconmediainformationtarget.h
+epoc32/include/remconmediainformationtargetobserver.h
+epoc32/include/remconstatusapicontroller.h
+epoc32/include/remconstatusapicontrollerobserver.h
+epoc32/include/s32crypt.inl
+epoc32/include/sbque.h
+epoc32/include/schedulebaseservermtm.h
+epoc32/include/schsend.hrh
+epoc32/include/schsend.rh
+epoc32/include/sensordatacompensationtypes.h
+epoc32/include/sensordatacompensator.h
+epoc32/include/shapeinfo.h
+epoc32/include/sip_subconevents.h
+epoc32/include/sip_subconevents.inl
+epoc32/include/sip_subconparams.h
+epoc32/include/sip_subconparams.inl
+epoc32/include/sipaccessnetworkinfo.inl
+epoc32/include/sipauthorizationheader.h
+epoc32/include/sipauthorizationheaderbase.h
+epoc32/include/sipbearermonitor.inl
+epoc32/include/sipclientresolverconfigcrkeys.h
+epoc32/include/sipconnpref.h
+epoc32/include/sipconnpref.inl
+epoc32/include/siphlerr.h
+epoc32/include/sipnattraversalcontroller.inl
+epoc32/include/sipnattraversalcontrollerinitparams.inl
+epoc32/include/sipprofileagent.inl
+epoc32/include/sipprofileagentinitparams.inl
+epoc32/include/sipprofilealrcontroller.h
+epoc32/include/sipprofilealrobserver.h
+epoc32/include/sipprofileservercrkeys.h
+epoc32/include/sipproxyauthorizationheader.h
+epoc32/include/sipresolvedclient2.h
+epoc32/include/sipresolvedclient2.inl
+epoc32/include/sipsystemstatemonitor.inl
+epoc32/include/smilattributes.h
+epoc32/include/smilelements.h
+epoc32/include/smilgenericelements.h
+epoc32/include/smsuact.h
+epoc32/include/smsuaddr.h
+epoc32/include/smsulog.h
+epoc32/include/smsulog.inl
+epoc32/include/smsuset.h
+epoc32/include/smsuset.inl
+epoc32/include/smsustrm.h
+epoc32/include/speechrecognitionuids.hrh
+epoc32/include/speechrecognitionutility.h
+epoc32/include/speechrecognitionutilityobserver.h
+epoc32/include/ss_std.inl
+epoc32/include/stdapis/boost/any.hpp
+epoc32/include/stdapis/boost/archive/archive_exception.hpp
+epoc32/include/stdapis/boost/archive/basic_archive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_iarchive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_iprimitive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_oarchive.hpp
+epoc32/include/stdapis/boost/archive/basic_text_oprimitive.hpp
+epoc32/include/stdapis/boost/archive/detail/archive_pointer_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/archive_pointer_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/auto_link_archive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_pointer_iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_pointer_oserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/basic_serializer.hpp
+epoc32/include/stdapis/boost/archive/detail/common_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/common_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/decl.hpp
+epoc32/include/stdapis/boost/archive/detail/interface_iarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/interface_oarchive.hpp
+epoc32/include/stdapis/boost/archive/detail/iserializer.hpp
+epoc32/include/stdapis/boost/archive/detail/known_archive_types.hpp
+epoc32/include/stdapis/boost/archive/detail/oserializer.hpp
+epoc32/include/stdapis/boost/archive/text_iarchive.hpp
+epoc32/include/stdapis/boost/archive/text_oarchive.hpp
+epoc32/include/stdapis/boost/archive/xml_iarchive.hpp
+epoc32/include/stdapis/boost/archive/xml_oarchive.hpp
+epoc32/include/stdapis/boost/assign/list_inserter.hpp
+epoc32/include/stdapis/boost/assign/std/map.hpp
+epoc32/include/stdapis/boost/bind/bind_cc.hpp
+epoc32/include/stdapis/boost/bind/bind_mf_cc.hpp
+epoc32/include/stdapis/boost/bind/bind_template.hpp
+epoc32/include/stdapis/boost/bind/mem_fn_cc.hpp
+epoc32/include/stdapis/boost/bind/mem_fn_template.hpp
+epoc32/include/stdapis/boost/bind/storage.hpp
+epoc32/include/stdapis/boost/blank.hpp
+epoc32/include/stdapis/boost/blank_fwd.hpp
+epoc32/include/stdapis/boost/checked_delete.hpp
+epoc32/include/stdapis/boost/concept_archetype.hpp
+epoc32/include/stdapis/boost/concept_check.hpp
+epoc32/include/stdapis/boost/config/abi_prefix.hpp
+epoc32/include/stdapis/boost/config/abi_suffix.hpp
+epoc32/include/stdapis/boost/config/auto_link.hpp
+epoc32/include/stdapis/boost/config/compiler/metrowerks.hpp
+epoc32/include/stdapis/boost/config/platform/win32.hpp
+epoc32/include/stdapis/boost/config/select_compiler_config.hpp
+epoc32/include/stdapis/boost/config/select_platform_config.hpp
+epoc32/include/stdapis/boost/config/select_stdlib_config.hpp
+epoc32/include/stdapis/boost/config/stdlib/stlport.hpp
+epoc32/include/stdapis/boost/config/suffix.hpp
+epoc32/include/stdapis/boost/config/user.hpp
+epoc32/include/stdapis/boost/cstdint.hpp
+epoc32/include/stdapis/boost/cstdlib.hpp
+epoc32/include/stdapis/boost/current_function.hpp
+epoc32/include/stdapis/boost/detail/allocator_utilities.hpp
+epoc32/include/stdapis/boost/detail/atomic_count.hpp
+epoc32/include/stdapis/boost/detail/atomic_count_win32.hpp
+epoc32/include/stdapis/boost/detail/bad_weak_ptr.hpp
+epoc32/include/stdapis/boost/detail/binary_search.hpp
+epoc32/include/stdapis/boost/detail/call_traits.hpp
+epoc32/include/stdapis/boost/detail/compressed_pair.hpp
+epoc32/include/stdapis/boost/detail/indirect_traits.hpp
+epoc32/include/stdapis/boost/detail/interlocked.hpp
+epoc32/include/stdapis/boost/detail/is_incrementable.hpp
+epoc32/include/stdapis/boost/detail/lightweight_mutex.hpp
+epoc32/include/stdapis/boost/detail/lightweight_test.hpp
+epoc32/include/stdapis/boost/detail/lwm_nop.hpp
+epoc32/include/stdapis/boost/detail/lwm_pthreads.hpp
+epoc32/include/stdapis/boost/detail/lwm_win32_cs.hpp
+epoc32/include/stdapis/boost/detail/no_exceptions_support.hpp
+epoc32/include/stdapis/boost/detail/numeric_traits.hpp
+epoc32/include/stdapis/boost/detail/quick_allocator.hpp
+epoc32/include/stdapis/boost/detail/reference_content.hpp
+epoc32/include/stdapis/boost/detail/select_type.hpp
+epoc32/include/stdapis/boost/detail/shared_array_nmt.hpp
+epoc32/include/stdapis/boost/detail/shared_count.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_cw_ppc.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_cw_x86.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_ia64.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_ppc.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_gcc_x86.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_nt.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_pt.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_base_w32.hpp
+epoc32/include/stdapis/boost/detail/sp_counted_impl.hpp
+epoc32/include/stdapis/boost/detail/templated_streams.hpp
+epoc32/include/stdapis/boost/dynamic_bitset/dynamic_bitset.hpp
+epoc32/include/stdapis/boost/dynamic_bitset_fwd.hpp
+epoc32/include/stdapis/boost/dynamic_property_map.hpp
+epoc32/include/stdapis/boost/enable_shared_from_this.hpp
+epoc32/include/stdapis/boost/function.hpp
+epoc32/include/stdapis/boost/function/detail/function_iterate.hpp
+epoc32/include/stdapis/boost/function/detail/maybe_include.hpp
+epoc32/include/stdapis/boost/function/detail/prologue.hpp
+epoc32/include/stdapis/boost/function/function2.hpp
+epoc32/include/stdapis/boost/function/function3.hpp
+epoc32/include/stdapis/boost/function/function_base.hpp
+epoc32/include/stdapis/boost/function/function_template.hpp
+epoc32/include/stdapis/boost/function_equal.hpp
+epoc32/include/stdapis/boost/functional.hpp
+epoc32/include/stdapis/boost/functional/detail/container_fwd.hpp
+epoc32/include/stdapis/boost/functional/detail/float_functions.hpp
+epoc32/include/stdapis/boost/functional/detail/hash_float.hpp
+epoc32/include/stdapis/boost/functional/hash/hash.hpp
+epoc32/include/stdapis/boost/functional/hash_fwd.hpp
+epoc32/include/stdapis/boost/get_pointer.hpp
+epoc32/include/stdapis/boost/graph/adj_list_serialize.hpp
+epoc32/include/stdapis/boost/graph/adjacency_iterator.hpp
+epoc32/include/stdapis/boost/graph/adjacency_list_io.hpp
+epoc32/include/stdapis/boost/graph/adjacency_matrix.hpp
+epoc32/include/stdapis/boost/graph/astar_search.hpp
+epoc32/include/stdapis/boost/graph/bandwidth.hpp
+epoc32/include/stdapis/boost/graph/bc_clustering.hpp
+epoc32/include/stdapis/boost/graph/bellman_ford_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/betweenness_centrality.hpp
+epoc32/include/stdapis/boost/graph/biconnected_components.hpp
+epoc32/include/stdapis/boost/graph/breadth_first_search.hpp
+epoc32/include/stdapis/boost/graph/circle_layout.hpp
+epoc32/include/stdapis/boost/graph/compressed_sparse_row_graph.hpp
+epoc32/include/stdapis/boost/graph/connected_components.hpp
+epoc32/include/stdapis/boost/graph/copy.hpp
+epoc32/include/stdapis/boost/graph/create_condensation_graph.hpp
+epoc32/include/stdapis/boost/graph/cuthill_mckee_ordering.hpp
+epoc32/include/stdapis/boost/graph/dag_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/depth_first_search.hpp
+epoc32/include/stdapis/boost/graph/detail/adj_list_edge_iterator.hpp
+epoc32/include/stdapis/boost/graph/detail/adjacency_list.hpp
+epoc32/include/stdapis/boost/graph/detail/array_binary_tree.hpp
+epoc32/include/stdapis/boost/graph/detail/bitset_adaptor.hpp
+epoc32/include/stdapis/boost/graph/detail/edge.hpp
+epoc32/include/stdapis/boost/graph/detail/incidence_iterator.hpp
+epoc32/include/stdapis/boost/graph/detail/indexed_properties.hpp
+epoc32/include/stdapis/boost/graph/detail/list_base.hpp
+epoc32/include/stdapis/boost/graph/detail/set_adaptor.hpp
+epoc32/include/stdapis/boost/graph/detail/sparse_ordering.hpp
+epoc32/include/stdapis/boost/graph/dijkstra_shortest_paths.hpp
+epoc32/include/stdapis/boost/graph/dominator_tree.hpp
+epoc32/include/stdapis/boost/graph/edge_connectivity.hpp
+epoc32/include/stdapis/boost/graph/edge_list.hpp
+epoc32/include/stdapis/boost/graph/edmunds_karp_max_flow.hpp
+epoc32/include/stdapis/boost/graph/erdos_renyi_generator.hpp
+epoc32/include/stdapis/boost/graph/filtered_graph.hpp
+epoc32/include/stdapis/boost/graph/floyd_warshall_shortest.hpp
+epoc32/include/stdapis/boost/graph/fruchterman_reingold.hpp
+epoc32/include/stdapis/boost/graph/graph_archetypes.hpp
+epoc32/include/stdapis/boost/graph/graph_concepts.hpp
+epoc32/include/stdapis/boost/graph/graph_selectors.hpp
+epoc32/include/stdapis/boost/graph/graph_test.hpp
+epoc32/include/stdapis/boost/graph/graph_traits.hpp
+epoc32/include/stdapis/boost/graph/graph_utility.hpp
+epoc32/include/stdapis/boost/graph/graphviz.hpp
+epoc32/include/stdapis/boost/graph/gursoy_atun_layout.hpp
+epoc32/include/stdapis/boost/graph/incremental_components.hpp
+epoc32/include/stdapis/boost/graph/isomorphism.hpp
+epoc32/include/stdapis/boost/graph/iteration_macros.hpp
+epoc32/include/stdapis/boost/graph/iteration_macros_undef.hpp
+epoc32/include/stdapis/boost/graph/johnson_all_pairs_shortest.hpp
+epoc32/include/stdapis/boost/graph/kamada_kawai_spring_layout.hpp
+epoc32/include/stdapis/boost/graph/king_ordering.hpp
+epoc32/include/stdapis/boost/graph/kruskal_min_spanning_tree.hpp
+epoc32/include/stdapis/boost/graph/leda_graph.hpp
+epoc32/include/stdapis/boost/graph/max_cardinality_matching.hpp
+epoc32/include/stdapis/boost/graph/minimum_degree_ordering.hpp
+epoc32/include/stdapis/boost/graph/named_function_params.hpp
+epoc32/include/stdapis/boost/graph/neighbor_bfs.hpp
+epoc32/include/stdapis/boost/graph/page_rank.hpp
+epoc32/include/stdapis/boost/graph/plod_generator.hpp
+epoc32/include/stdapis/boost/graph/prim_minimum_spanning_tree.hpp
+epoc32/include/stdapis/boost/graph/profile.hpp
+epoc32/include/stdapis/boost/graph/properties.hpp
+epoc32/include/stdapis/boost/graph/property_iter_range.hpp
+epoc32/include/stdapis/boost/graph/push_relabel_max_flow.hpp
+epoc32/include/stdapis/boost/graph/random_layout.hpp
+epoc32/include/stdapis/boost/graph/read_dimacs.hpp
+epoc32/include/stdapis/boost/graph/relax.hpp
+epoc32/include/stdapis/boost/graph/reverse_graph.hpp
+epoc32/include/stdapis/boost/graph/sequential_vertex_coloring.hpp
+epoc32/include/stdapis/boost/graph/simple_point.hpp
+epoc32/include/stdapis/boost/graph/sloan_ordering.hpp
+epoc32/include/stdapis/boost/graph/small_world_generator.hpp
+epoc32/include/stdapis/boost/graph/smallest_last_ordering.hpp
+epoc32/include/stdapis/boost/graph/strong_components.hpp
+epoc32/include/stdapis/boost/graph/subgraph.hpp
+epoc32/include/stdapis/boost/graph/topological_sort.hpp
+epoc32/include/stdapis/boost/graph/transitive_closure.hpp
+epoc32/include/stdapis/boost/graph/transpose_graph.hpp
+epoc32/include/stdapis/boost/graph/tree_traits.hpp
+epoc32/include/stdapis/boost/graph/two_bit_color_map.hpp
+epoc32/include/stdapis/boost/graph/undirected_dfs.hpp
+epoc32/include/stdapis/boost/graph/vector_as_graph.hpp
+epoc32/include/stdapis/boost/graph/visitors.hpp
+epoc32/include/stdapis/boost/implicit_cast.hpp
+epoc32/include/stdapis/boost/indirect_reference.hpp
+epoc32/include/stdapis/boost/integer.hpp
+epoc32/include/stdapis/boost/integer_fwd.hpp
+epoc32/include/stdapis/boost/integer_traits.hpp
+epoc32/include/stdapis/boost/intrusive_ptr.hpp
+epoc32/include/stdapis/boost/io/ios_state.hpp
+epoc32/include/stdapis/boost/io_fwd.hpp
+epoc32/include/stdapis/boost/iterator/counting_iterator.hpp
+epoc32/include/stdapis/boost/iterator/detail/config_def.hpp
+epoc32/include/stdapis/boost/iterator/detail/config_undef.hpp
+epoc32/include/stdapis/boost/iterator/detail/facade_iterator_category.hpp
+epoc32/include/stdapis/boost/iterator/filter_iterator.hpp
+epoc32/include/stdapis/boost/iterator/indirect_iterator.hpp
+epoc32/include/stdapis/boost/iterator/interoperable.hpp
+epoc32/include/stdapis/boost/iterator/iterator_adaptor.hpp
+epoc32/include/stdapis/boost/iterator/iterator_categories.hpp
+epoc32/include/stdapis/boost/iterator/iterator_concepts.hpp
+epoc32/include/stdapis/boost/iterator/iterator_facade.hpp
+epoc32/include/stdapis/boost/iterator/iterator_traits.hpp
+epoc32/include/stdapis/boost/iterator/transform_iterator.hpp
+epoc32/include/stdapis/boost/iterator_adaptors.hpp
+epoc32/include/stdapis/boost/lambda/core.hpp
+epoc32/include/stdapis/boost/lambda/detail/actions.hpp
+epoc32/include/stdapis/boost/lambda/detail/arity_code.hpp
+epoc32/include/stdapis/boost/lambda/detail/function_adaptors.hpp
+epoc32/include/stdapis/boost/lambda/detail/is_instance_of.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_config.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_functor_base.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_functors.hpp
+epoc32/include/stdapis/boost/lambda/detail/lambda_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/member_ptr.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_actions.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_lambda_func_base.hpp
+epoc32/include/stdapis/boost/lambda/detail/operator_return_type_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/ret.hpp
+epoc32/include/stdapis/boost/lambda/detail/return_type_traits.hpp
+epoc32/include/stdapis/boost/lambda/detail/select_functions.hpp
+epoc32/include/stdapis/boost/lexical_cast.hpp
+epoc32/include/stdapis/boost/math/common_factor.hpp
+epoc32/include/stdapis/boost/math/common_factor_ct.hpp
+epoc32/include/stdapis/boost/math/common_factor_rt.hpp
+epoc32/include/stdapis/boost/math/complex.hpp
+epoc32/include/stdapis/boost/math/complex/acos.hpp
+epoc32/include/stdapis/boost/math/complex/asin.hpp
+epoc32/include/stdapis/boost/math/complex/atan.hpp
+epoc32/include/stdapis/boost/math/complex/details.hpp
+epoc32/include/stdapis/boost/math/complex/fabs.hpp
+epoc32/include/stdapis/boost/math/octonion.hpp
+epoc32/include/stdapis/boost/math/quaternion.hpp
+epoc32/include/stdapis/boost/math/special_functions/acosh.hpp
+epoc32/include/stdapis/boost/math/special_functions/asinh.hpp
+epoc32/include/stdapis/boost/math/special_functions/atanh.hpp
+epoc32/include/stdapis/boost/math/special_functions/detail/series.hpp
+epoc32/include/stdapis/boost/math/special_functions/expm1.hpp
+epoc32/include/stdapis/boost/math/special_functions/hypot.hpp
+epoc32/include/stdapis/boost/math/special_functions/log1p.hpp
+epoc32/include/stdapis/boost/math/special_functions/sinc.hpp
+epoc32/include/stdapis/boost/math/special_functions/sinhc.hpp
+epoc32/include/stdapis/boost/math_fwd.hpp
+epoc32/include/stdapis/boost/mem_fn.hpp
+epoc32/include/stdapis/boost/mpl/advance.hpp
+epoc32/include/stdapis/boost/mpl/advance_fwd.hpp
+epoc32/include/stdapis/boost/mpl/always.hpp
+epoc32/include/stdapis/boost/mpl/arg_fwd.hpp
+epoc32/include/stdapis/boost/mpl/at_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/adl_barrier.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arg_typedef.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arithmetic_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/arity_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/common_name_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/comparison_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/adl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/arrays.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/compiler.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/ctps.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/dtp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/eti.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/forwarding.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/gcc.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/integral.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/intel.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/msvc.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/msvc_typename.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/nttp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/overload_resolution.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/static_constant.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/ttp.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/typeof.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/use_preprocessed.hpp
+epoc32/include/stdapis/boost/mpl/aux_/config/workaround.hpp
+epoc32/include/stdapis/boost/mpl/aux_/contains_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/find_if_pred.hpp
+epoc32/include/stdapis/boost/mpl/aux_/front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_apply.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_begin.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_size.hpp
+epoc32/include/stdapis/boost/mpl/aux_/has_type.hpp
+epoc32/include/stdapis/boost/mpl/aux_/inserter_algorithm.hpp
+epoc32/include/stdapis/boost/mpl/aux_/integral_wrapper.hpp
+epoc32/include/stdapis/boost/mpl/aux_/is_msvc_eti_arg.hpp
+epoc32/include/stdapis/boost/mpl/aux_/iter_apply.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_arity_param.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/lambda_support.hpp
+epoc32/include/stdapis/boost/mpl/aux_/largest_int.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_eti_base.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_never_true.hpp
+epoc32/include/stdapis/boost/mpl/aux_/msvc_type.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_assert.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/na_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/nested_type_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/nttp_decl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/numeric_cast_utils.hpp
+epoc32/include/stdapis/boost/mpl/aux_/numeric_op.hpp
+epoc32/include/stdapis/boost/mpl/aux_/o1_size_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/overload_names.hpp
+epoc32/include/stdapis/boost/mpl/aux_/pop_front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/arg.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/def_params_tail.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/default_params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/filter_params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/preprocessor/params.hpp
+epoc32/include/stdapis/boost/mpl/aux_/ptr_to_ref.hpp
+epoc32/include/stdapis/boost/mpl/aux_/push_back_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/push_front_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/reverse_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/reverse_iter_fold_impl.hpp
+epoc32/include/stdapis/boost/mpl/aux_/static_cast.hpp
+epoc32/include/stdapis/boost/mpl/aux_/template_arity.hpp
+epoc32/include/stdapis/boost/mpl/aux_/template_arity_fwd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/traits_lambda_spec.hpp
+epoc32/include/stdapis/boost/mpl/aux_/type_wrapper.hpp
+epoc32/include/stdapis/boost/mpl/aux_/unwrap.hpp
+epoc32/include/stdapis/boost/mpl/aux_/value_wknd.hpp
+epoc32/include/stdapis/boost/mpl/aux_/yes_no.hpp
+epoc32/include/stdapis/boost/mpl/back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/back_inserter.hpp
+epoc32/include/stdapis/boost/mpl/begin_end_fwd.hpp
+epoc32/include/stdapis/boost/mpl/bind.hpp
+epoc32/include/stdapis/boost/mpl/bind_fwd.hpp
+epoc32/include/stdapis/boost/mpl/bool_fwd.hpp
+epoc32/include/stdapis/boost/mpl/clear_fwd.hpp
+epoc32/include/stdapis/boost/mpl/contains.hpp
+epoc32/include/stdapis/boost/mpl/contains_fwd.hpp
+epoc32/include/stdapis/boost/mpl/deref.hpp
+epoc32/include/stdapis/boost/mpl/distance.hpp
+epoc32/include/stdapis/boost/mpl/distance_fwd.hpp
+epoc32/include/stdapis/boost/mpl/empty_fwd.hpp
+epoc32/include/stdapis/boost/mpl/equal_to.hpp
+epoc32/include/stdapis/boost/mpl/erase_fwd.hpp
+epoc32/include/stdapis/boost/mpl/erase_key_fwd.hpp
+epoc32/include/stdapis/boost/mpl/eval_if.hpp
+epoc32/include/stdapis/boost/mpl/find.hpp
+epoc32/include/stdapis/boost/mpl/find_if.hpp
+epoc32/include/stdapis/boost/mpl/fold.hpp
+epoc32/include/stdapis/boost/mpl/front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/front_inserter.hpp
+epoc32/include/stdapis/boost/mpl/has_key.hpp
+epoc32/include/stdapis/boost/mpl/has_key_fwd.hpp
+epoc32/include/stdapis/boost/mpl/has_xxx.hpp
+epoc32/include/stdapis/boost/mpl/insert_fwd.hpp
+epoc32/include/stdapis/boost/mpl/inserter.hpp
+epoc32/include/stdapis/boost/mpl/int.hpp
+epoc32/include/stdapis/boost/mpl/int_fwd.hpp
+epoc32/include/stdapis/boost/mpl/integral_c.hpp
+epoc32/include/stdapis/boost/mpl/integral_c_fwd.hpp
+epoc32/include/stdapis/boost/mpl/integral_c_tag.hpp
+epoc32/include/stdapis/boost/mpl/is_sequence.hpp
+epoc32/include/stdapis/boost/mpl/iter_fold.hpp
+epoc32/include/stdapis/boost/mpl/iter_fold_if.hpp
+epoc32/include/stdapis/boost/mpl/iterator_category.hpp
+epoc32/include/stdapis/boost/mpl/iterator_tags.hpp
+epoc32/include/stdapis/boost/mpl/key_type_fwd.hpp
+epoc32/include/stdapis/boost/mpl/lambda.hpp
+epoc32/include/stdapis/boost/mpl/lambda_fwd.hpp
+epoc32/include/stdapis/boost/mpl/limits/arity.hpp
+epoc32/include/stdapis/boost/mpl/list/list0.hpp
+epoc32/include/stdapis/boost/mpl/list/list10.hpp
+epoc32/include/stdapis/boost/mpl/list/list20.hpp
+epoc32/include/stdapis/boost/mpl/long.hpp
+epoc32/include/stdapis/boost/mpl/long_fwd.hpp
+epoc32/include/stdapis/boost/mpl/max_element.hpp
+epoc32/include/stdapis/boost/mpl/min_max.hpp
+epoc32/include/stdapis/boost/mpl/minus.hpp
+epoc32/include/stdapis/boost/mpl/multiplies.hpp
+epoc32/include/stdapis/boost/mpl/negate.hpp
+epoc32/include/stdapis/boost/mpl/next.hpp
+epoc32/include/stdapis/boost/mpl/numeric_cast.hpp
+epoc32/include/stdapis/boost/mpl/o1_size_fwd.hpp
+epoc32/include/stdapis/boost/mpl/pair.hpp
+epoc32/include/stdapis/boost/mpl/pair_view.hpp
+epoc32/include/stdapis/boost/mpl/placeholders.hpp
+epoc32/include/stdapis/boost/mpl/plus.hpp
+epoc32/include/stdapis/boost/mpl/pop_back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/pop_front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/prior.hpp
+epoc32/include/stdapis/boost/mpl/protect.hpp
+epoc32/include/stdapis/boost/mpl/push_back_fwd.hpp
+epoc32/include/stdapis/boost/mpl/push_front_fwd.hpp
+epoc32/include/stdapis/boost/mpl/quote.hpp
+epoc32/include/stdapis/boost/mpl/reverse_fold.hpp
+epoc32/include/stdapis/boost/mpl/reverse_iter_fold.hpp
+epoc32/include/stdapis/boost/mpl/same_as.hpp
+epoc32/include/stdapis/boost/mpl/sequence_tag.hpp
+epoc32/include/stdapis/boost/mpl/sequence_tag_fwd.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/at_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/begin_end_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/clear_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/empty_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/erase_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/erase_key_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/has_key_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/insert_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/key_type_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/size_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/aux_/value_type_impl.hpp
+epoc32/include/stdapis/boost/mpl/set/set0.hpp
+epoc32/include/stdapis/boost/mpl/size_fwd.hpp
+epoc32/include/stdapis/boost/mpl/size_t.hpp
+epoc32/include/stdapis/boost/mpl/size_t_fwd.hpp
+epoc32/include/stdapis/boost/mpl/sizeof.hpp
+epoc32/include/stdapis/boost/mpl/times.hpp
+epoc32/include/stdapis/boost/mpl/value_type_fwd.hpp
+epoc32/include/stdapis/boost/mpl/vector.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/back.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/begin_end.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/clear.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/front.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/include_preprocessed.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/item.hpp
+epoc32/include/stdapis/boost/mpl/vector/aux_/o1_size.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector0.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector10.hpp
+epoc32/include/stdapis/boost/mpl/vector/vector20.hpp
+epoc32/include/stdapis/boost/mpl/void.hpp
+epoc32/include/stdapis/boost/mpl/void_fwd.hpp
+epoc32/include/stdapis/boost/multi_array.hpp
+epoc32/include/stdapis/boost/multi_array/algorithm.hpp
+epoc32/include/stdapis/boost/multi_array/base.hpp
+epoc32/include/stdapis/boost/multi_array/collection_concept.hpp
+epoc32/include/stdapis/boost/multi_array/concept_checks.hpp
+epoc32/include/stdapis/boost/multi_array/copy_array.hpp
+epoc32/include/stdapis/boost/multi_array/extent_gen.hpp
+epoc32/include/stdapis/boost/multi_array/extent_range.hpp
+epoc32/include/stdapis/boost/multi_array/index_gen.hpp
+epoc32/include/stdapis/boost/multi_array/index_range.hpp
+epoc32/include/stdapis/boost/multi_array/multi_array_ref.hpp
+epoc32/include/stdapis/boost/multi_array/range_list.hpp
+epoc32/include/stdapis/boost/multi_array/storage_order.hpp
+epoc32/include/stdapis/boost/multi_array/subarray.hpp
+epoc32/include/stdapis/boost/multi_array/types.hpp
+epoc32/include/stdapis/boost/multi_array/view.hpp
+epoc32/include/stdapis/boost/multi_index/composite_key.hpp
+epoc32/include/stdapis/boost/multi_index/detail/access_specifier.hpp
+epoc32/include/stdapis/boost/multi_index/detail/archive_constructed.hpp
+epoc32/include/stdapis/boost/multi_index/detail/auto_space.hpp
+epoc32/include/stdapis/boost/multi_index/detail/base_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/bidir_node_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/bucket_array.hpp
+epoc32/include/stdapis/boost/multi_index/detail/copy_map.hpp
+epoc32/include/stdapis/boost/multi_index/detail/def_ctor_tuple_cons.hpp
+epoc32/include/stdapis/boost/multi_index/detail/duplicates_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/has_tag.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_args.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/hash_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/header_holder.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_base.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_loader.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_matcher.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_node_base.hpp
+epoc32/include/stdapis/boost/multi_index/detail/index_saver.hpp
+epoc32/include/stdapis/boost/multi_index/detail/invariant_assert.hpp
+epoc32/include/stdapis/boost/multi_index/detail/is_index_list.hpp
+epoc32/include/stdapis/boost/multi_index/detail/iter_adaptor.hpp
+epoc32/include/stdapis/boost/multi_index/detail/modify_key_adaptor.hpp
+epoc32/include/stdapis/boost/multi_index/detail/msvc_index_specifier.hpp
+epoc32/include/stdapis/boost/multi_index/detail/no_duplicate_tags.hpp
+epoc32/include/stdapis/boost/multi_index/detail/node_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_args.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/ord_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/prevent_eti.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_loader.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_index_ptr_array.hpp
+epoc32/include/stdapis/boost/multi_index/detail/rnd_node_iterator.hpp
+epoc32/include/stdapis/boost/multi_index/detail/safe_ctr_proxy.hpp
+epoc32/include/stdapis/boost/multi_index/detail/safe_mode.hpp
+epoc32/include/stdapis/boost/multi_index/detail/scope_guard.hpp
+epoc32/include/stdapis/boost/multi_index/detail/seq_index_node.hpp
+epoc32/include/stdapis/boost/multi_index/detail/seq_index_ops.hpp
+epoc32/include/stdapis/boost/multi_index/detail/uintptr_type.hpp
+epoc32/include/stdapis/boost/multi_index/detail/unbounded.hpp
+epoc32/include/stdapis/boost/multi_index/detail/value_compare.hpp
+epoc32/include/stdapis/boost/multi_index/hashed_index.hpp
+epoc32/include/stdapis/boost/multi_index/hashed_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/identity_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/indexed_by.hpp
+epoc32/include/stdapis/boost/multi_index/key_extractors.hpp
+epoc32/include/stdapis/boost/multi_index/mem_fun.hpp
+epoc32/include/stdapis/boost/multi_index/member.hpp
+epoc32/include/stdapis/boost/multi_index/ordered_index.hpp
+epoc32/include/stdapis/boost/multi_index/ordered_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/random_access_index.hpp
+epoc32/include/stdapis/boost/multi_index/random_access_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/safe_mode_errors.hpp
+epoc32/include/stdapis/boost/multi_index/sequenced_index.hpp
+epoc32/include/stdapis/boost/multi_index/sequenced_index_fwd.hpp
+epoc32/include/stdapis/boost/multi_index/tag.hpp
+epoc32/include/stdapis/boost/multi_index_container.hpp
+epoc32/include/stdapis/boost/multi_index_container_fwd.hpp
+epoc32/include/stdapis/boost/next_prior.hpp
+epoc32/include/stdapis/boost/noncopyable.hpp
+epoc32/include/stdapis/boost/none.hpp
+epoc32/include/stdapis/boost/numeric/conversion/cast.hpp
+epoc32/include/stdapis/boost/numeric/conversion/converter_policies.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/bounds.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/converter.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/int_float_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/is_subranged.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/meta.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/sign_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/detail/udt_builtin_mixture.hpp
+epoc32/include/stdapis/boost/numeric/conversion/int_float_mixture_enum.hpp
+epoc32/include/stdapis/boost/numeric/conversion/sign_mixture_enum.hpp
+epoc32/include/stdapis/boost/numeric/conversion/udt_builtin_mixture_enum.hpp
+epoc32/include/stdapis/boost/operators.hpp
+epoc32/include/stdapis/boost/optional/optional.hpp
+epoc32/include/stdapis/boost/optional/optional_fwd.hpp
+epoc32/include/stdapis/boost/pending/bucket_sorter.hpp
+epoc32/include/stdapis/boost/pending/container_traits.hpp
+epoc32/include/stdapis/boost/pending/cstddef.hpp
+epoc32/include/stdapis/boost/pending/ct_if.hpp
+epoc32/include/stdapis/boost/pending/disjoint_sets.hpp
+epoc32/include/stdapis/boost/pending/indirect_cmp.hpp
+epoc32/include/stdapis/boost/pending/integer_log2.hpp
+epoc32/include/stdapis/boost/pending/integer_range.hpp
+epoc32/include/stdapis/boost/pending/is_heap.hpp
+epoc32/include/stdapis/boost/pending/lowest_bit.hpp
+epoc32/include/stdapis/boost/pending/mutable_heap.hpp
+epoc32/include/stdapis/boost/pending/mutable_queue.hpp
+epoc32/include/stdapis/boost/pending/property.hpp
+epoc32/include/stdapis/boost/pending/property_serialize.hpp
+epoc32/include/stdapis/boost/pending/queue.hpp
+epoc32/include/stdapis/boost/pending/relaxed_heap.hpp
+epoc32/include/stdapis/boost/pfto.hpp
+epoc32/include/stdapis/boost/pointee.hpp
+epoc32/include/stdapis/boost/pointer_cast.hpp
+epoc32/include/stdapis/boost/pointer_to_other.hpp
+epoc32/include/stdapis/boost/preprocessor.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/add.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/dec.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/detail/div_base.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/div.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/mod.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/mul.hpp
+epoc32/include/stdapis/boost/preprocessor/arithmetic/sub.hpp
+epoc32/include/stdapis/boost/preprocessor/array.hpp
+epoc32/include/stdapis/boost/preprocessor/array/data.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/greater.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/greater_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/less.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/less_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/comparison/not_equal.hpp
+epoc32/include/stdapis/boost/preprocessor/config/limits.hpp
+epoc32/include/stdapis/boost/preprocessor/control.hpp
+epoc32/include/stdapis/boost/preprocessor/control/deduce_d.hpp
+epoc32/include/stdapis/boost/preprocessor/control/expr_if.hpp
+epoc32/include/stdapis/boost/preprocessor/control/expr_iif.hpp
+epoc32/include/stdapis/boost/preprocessor/control/if.hpp
+epoc32/include/stdapis/boost/preprocessor/control/iif.hpp
+epoc32/include/stdapis/boost/preprocessor/control/while.hpp
+epoc32/include/stdapis/boost/preprocessor/debug.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/assert.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/error.hpp
+epoc32/include/stdapis/boost/preprocessor/debug/line.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/auto_rec.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/check.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/is_binary.hpp
+epoc32/include/stdapis/boost/preprocessor/detail/is_unary.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/apply.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/expand.hpp
+epoc32/include/stdapis/boost/preprocessor/facilities/intercept.hpp
+epoc32/include/stdapis/boost/preprocessor/identity.hpp
+epoc32/include/stdapis/boost/preprocessor/inc.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/bounds/lower1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/bounds/upper1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/finish.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/iter/forward1.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/detail/start.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/iterate.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/local.hpp
+epoc32/include/stdapis/boost/preprocessor/iteration/self.hpp
+epoc32/include/stdapis/boost/preprocessor/library.hpp
+epoc32/include/stdapis/boost/preprocessor/list.hpp
+epoc32/include/stdapis/boost/preprocessor/list/adt.hpp
+epoc32/include/stdapis/boost/preprocessor/list/append.hpp
+epoc32/include/stdapis/boost/preprocessor/list/at.hpp
+epoc32/include/stdapis/boost/preprocessor/logical.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/and.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitand.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitnor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bitxor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/bool.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/compl.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/nor.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/not.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/or.hpp
+epoc32/include/stdapis/boost/preprocessor/logical/xor.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/comma.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/comma_if.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/paren.hpp
+epoc32/include/stdapis/boost/preprocessor/punctuation/paren_if.hpp
+epoc32/include/stdapis/boost/preprocessor/repeat_2nd.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/deduce_r.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/deduce_z.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params_with_a_default.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_params_with_defaults.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing_binary_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/enum_trailing_params.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/for.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/repeat.hpp
+epoc32/include/stdapis/boost/preprocessor/repetition/repeat_from_to.hpp
+epoc32/include/stdapis/boost/preprocessor/selection.hpp
+epoc32/include/stdapis/boost/preprocessor/selection/max.hpp
+epoc32/include/stdapis/boost/preprocessor/selection/min.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/cat.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/detail/split.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/enum.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/filter.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/first_n.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/fold_left.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/fold_right.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each_i.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/for_each_product.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/insert.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/pop_back.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/pop_front.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/push_back.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/push_front.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/remove.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/replace.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/rest_n.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/seq.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/subseq.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/to_array.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/to_tuple.hpp
+epoc32/include/stdapis/boost/preprocessor/seq/transform.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/detail/def.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/detail/shared.hpp
+epoc32/include/stdapis/boost/preprocessor/slot/slot.hpp
+epoc32/include/stdapis/boost/preprocessor/stringize.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/eat.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/elem.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/rem.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/reverse.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/to_list.hpp
+epoc32/include/stdapis/boost/preprocessor/tuple/to_seq.hpp
+epoc32/include/stdapis/boost/progress.hpp
+epoc32/include/stdapis/boost/property_map.hpp
+epoc32/include/stdapis/boost/property_map_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/clone_allocator.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/associative_ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/default_deleter.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/map_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/reversible_ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/scoped_deleter.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/static_move_ptr.hpp
+epoc32/include/stdapis/boost/ptr_container/detail/void_ptr_iterator.hpp
+epoc32/include/stdapis/boost/ptr_container/exception.hpp
+epoc32/include/stdapis/boost/ptr_container/indirect_fun.hpp
+epoc32/include/stdapis/boost/ptr_container/nullable.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_array.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_container.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_deque.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_list.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_map.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_map_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_sequence_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_set.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_set_adapter.hpp
+epoc32/include/stdapis/boost/ptr_container/ptr_vector.hpp
+epoc32/include/stdapis/boost/random.hpp
+epoc32/include/stdapis/boost/random/additive_combine.hpp
+epoc32/include/stdapis/boost/random/bernoulli_distribution.hpp
+epoc32/include/stdapis/boost/random/binomial_distribution.hpp
+epoc32/include/stdapis/boost/random/cauchy_distribution.hpp
+epoc32/include/stdapis/boost/random/detail/const_mod.hpp
+epoc32/include/stdapis/boost/random/detail/pass_through_engine.hpp
+epoc32/include/stdapis/boost/random/detail/ptr_helper.hpp
+epoc32/include/stdapis/boost/random/detail/signed_unsigned_compare.hpp
+epoc32/include/stdapis/boost/random/detail/uniform_int_float.hpp
+epoc32/include/stdapis/boost/random/discard_block.hpp
+epoc32/include/stdapis/boost/random/exponential_distribution.hpp
+epoc32/include/stdapis/boost/random/gamma_distribution.hpp
+epoc32/include/stdapis/boost/random/geometric_distribution.hpp
+epoc32/include/stdapis/boost/random/inversive_congruential.hpp
+epoc32/include/stdapis/boost/random/lagged_fibonacci.hpp
+epoc32/include/stdapis/boost/random/linear_congruential.hpp
+epoc32/include/stdapis/boost/random/linear_feedback_shift.hpp
+epoc32/include/stdapis/boost/random/lognormal_distribution.hpp
+epoc32/include/stdapis/boost/random/mersenne_twister.hpp
+epoc32/include/stdapis/boost/random/normal_distribution.hpp
+epoc32/include/stdapis/boost/random/poisson_distribution.hpp
+epoc32/include/stdapis/boost/random/random_number_generator.hpp
+epoc32/include/stdapis/boost/random/ranlux.hpp
+epoc32/include/stdapis/boost/random/shuffle_output.hpp
+epoc32/include/stdapis/boost/random/subtract_with_carry.hpp
+epoc32/include/stdapis/boost/random/triangle_distribution.hpp
+epoc32/include/stdapis/boost/random/uniform_01.hpp
+epoc32/include/stdapis/boost/random/uniform_int.hpp
+epoc32/include/stdapis/boost/random/uniform_on_sphere.hpp
+epoc32/include/stdapis/boost/random/uniform_real.hpp
+epoc32/include/stdapis/boost/random/uniform_smallint.hpp
+epoc32/include/stdapis/boost/random/variate_generator.hpp
+epoc32/include/stdapis/boost/random/xor_combine.hpp
+epoc32/include/stdapis/boost/range/begin.hpp
+epoc32/include/stdapis/boost/range/const_iterator.hpp
+epoc32/include/stdapis/boost/range/const_reverse_iterator.hpp
+epoc32/include/stdapis/boost/range/detail/common.hpp
+epoc32/include/stdapis/boost/range/detail/implementation_help.hpp
+epoc32/include/stdapis/boost/range/detail/sfinae.hpp
+epoc32/include/stdapis/boost/range/difference_type.hpp
+epoc32/include/stdapis/boost/range/empty.hpp
+epoc32/include/stdapis/boost/range/end.hpp
+epoc32/include/stdapis/boost/range/functions.hpp
+epoc32/include/stdapis/boost/range/iterator.hpp
+epoc32/include/stdapis/boost/range/iterator_range.hpp
+epoc32/include/stdapis/boost/range/rbegin.hpp
+epoc32/include/stdapis/boost/range/rend.hpp
+epoc32/include/stdapis/boost/range/result_iterator.hpp
+epoc32/include/stdapis/boost/range/reverse_iterator.hpp
+epoc32/include/stdapis/boost/range/reverse_result_iterator.hpp
+epoc32/include/stdapis/boost/range/size.hpp
+epoc32/include/stdapis/boost/range/size_type.hpp
+epoc32/include/stdapis/boost/range/sub_range.hpp
+epoc32/include/stdapis/boost/range/value_type.hpp
+epoc32/include/stdapis/boost/ref.hpp
+epoc32/include/stdapis/boost/scoped_array.hpp
+epoc32/include/stdapis/boost/scoped_ptr.hpp
+epoc32/include/stdapis/boost/serialization/access.hpp
+epoc32/include/stdapis/boost/serialization/base_object.hpp
+epoc32/include/stdapis/boost/serialization/binary_object.hpp
+epoc32/include/stdapis/boost/serialization/export.hpp
+epoc32/include/stdapis/boost/serialization/extended_type_info.hpp
+epoc32/include/stdapis/boost/serialization/extended_type_info_typeid.hpp
+epoc32/include/stdapis/boost/serialization/force_include.hpp
+epoc32/include/stdapis/boost/serialization/level.hpp
+epoc32/include/stdapis/boost/serialization/level_enum.hpp
+epoc32/include/stdapis/boost/serialization/nvp.hpp
+epoc32/include/stdapis/boost/serialization/serialization.hpp
+epoc32/include/stdapis/boost/serialization/split_member.hpp
+epoc32/include/stdapis/boost/serialization/string.hpp
+epoc32/include/stdapis/boost/serialization/tracking.hpp
+epoc32/include/stdapis/boost/serialization/tracking_enum.hpp
+epoc32/include/stdapis/boost/serialization/traits.hpp
+epoc32/include/stdapis/boost/serialization/type_info_implementation.hpp
+epoc32/include/stdapis/boost/serialization/void_cast.hpp
+epoc32/include/stdapis/boost/serialization/void_cast_fwd.hpp
+epoc32/include/stdapis/boost/shared_array.hpp
+epoc32/include/stdapis/boost/shared_ptr.hpp
+epoc32/include/stdapis/boost/smart_cast.hpp
+epoc32/include/stdapis/boost/static_assert.hpp
+epoc32/include/stdapis/boost/static_warning.hpp
+epoc32/include/stdapis/boost/strong_typedef.hpp
+epoc32/include/stdapis/boost/throw_exception.hpp
+epoc32/include/stdapis/boost/timer.hpp
+epoc32/include/stdapis/boost/tuple/detail/tuple_basic.hpp
+epoc32/include/stdapis/boost/tuple/tuple.hpp
+epoc32/include/stdapis/boost/type.hpp
+epoc32/include/stdapis/boost/type_traits.hpp
+epoc32/include/stdapis/boost/type_traits/add_const.hpp
+epoc32/include/stdapis/boost/type_traits/add_cv.hpp
+epoc32/include/stdapis/boost/type_traits/add_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/add_reference.hpp
+epoc32/include/stdapis/boost/type_traits/add_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/aligned_storage.hpp
+epoc32/include/stdapis/boost/type_traits/alignment_of.hpp
+epoc32/include/stdapis/boost/type_traits/broken_compiler_spec.hpp
+epoc32/include/stdapis/boost/type_traits/composite_traits.hpp
+epoc32/include/stdapis/boost/type_traits/conversion_traits.hpp
+epoc32/include/stdapis/boost/type_traits/cv_traits.hpp
+epoc32/include/stdapis/boost/type_traits/detail/cv_traits_impl.hpp
+epoc32/include/stdapis/boost/type_traits/detail/false_result.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_and.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_eq.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_not.hpp
+epoc32/include/stdapis/boost/type_traits/detail/ice_or.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_function_ptr_helper.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_function_ptr_tester.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
+epoc32/include/stdapis/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
+epoc32/include/stdapis/boost/type_traits/detail/size_t_trait_def.hpp
+epoc32/include/stdapis/boost/type_traits/detail/size_t_trait_undef.hpp
+epoc32/include/stdapis/boost/type_traits/detail/template_arity_spec.hpp
+epoc32/include/stdapis/boost/type_traits/detail/type_trait_def.hpp
+epoc32/include/stdapis/boost/type_traits/detail/type_trait_undef.hpp
+epoc32/include/stdapis/boost/type_traits/detail/yes_no_type.hpp
+epoc32/include/stdapis/boost/type_traits/extent.hpp
+epoc32/include/stdapis/boost/type_traits/function_traits.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_assign.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_constructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_copy.hpp
+epoc32/include/stdapis/boost/type_traits/has_nothrow_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_assign.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_constructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_copy.hpp
+epoc32/include/stdapis/boost/type_traits/has_trivial_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/has_virtual_destructor.hpp
+epoc32/include/stdapis/boost/type_traits/ice.hpp
+epoc32/include/stdapis/boost/type_traits/integral_constant.hpp
+epoc32/include/stdapis/boost/type_traits/intrinsics.hpp
+epoc32/include/stdapis/boost/type_traits/is_abstract.hpp
+epoc32/include/stdapis/boost/type_traits/is_arithmetic.hpp
+epoc32/include/stdapis/boost/type_traits/is_array.hpp
+epoc32/include/stdapis/boost/type_traits/is_base_and_derived.hpp
+epoc32/include/stdapis/boost/type_traits/is_base_of.hpp
+epoc32/include/stdapis/boost/type_traits/is_class.hpp
+epoc32/include/stdapis/boost/type_traits/is_compound.hpp
+epoc32/include/stdapis/boost/type_traits/is_const.hpp
+epoc32/include/stdapis/boost/type_traits/is_convertible.hpp
+epoc32/include/stdapis/boost/type_traits/is_empty.hpp
+epoc32/include/stdapis/boost/type_traits/is_enum.hpp
+epoc32/include/stdapis/boost/type_traits/is_float.hpp
+epoc32/include/stdapis/boost/type_traits/is_floating_point.hpp
+epoc32/include/stdapis/boost/type_traits/is_function.hpp
+epoc32/include/stdapis/boost/type_traits/is_fundamental.hpp
+epoc32/include/stdapis/boost/type_traits/is_integral.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_function_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_object_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_member_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_object.hpp
+epoc32/include/stdapis/boost/type_traits/is_pod.hpp
+epoc32/include/stdapis/boost/type_traits/is_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/is_polymorphic.hpp
+epoc32/include/stdapis/boost/type_traits/is_reference.hpp
+epoc32/include/stdapis/boost/type_traits/is_same.hpp
+epoc32/include/stdapis/boost/type_traits/is_scalar.hpp
+epoc32/include/stdapis/boost/type_traits/is_signed.hpp
+epoc32/include/stdapis/boost/type_traits/is_stateless.hpp
+epoc32/include/stdapis/boost/type_traits/is_union.hpp
+epoc32/include/stdapis/boost/type_traits/is_unsigned.hpp
+epoc32/include/stdapis/boost/type_traits/is_void.hpp
+epoc32/include/stdapis/boost/type_traits/is_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/object_traits.hpp
+epoc32/include/stdapis/boost/type_traits/rank.hpp
+epoc32/include/stdapis/boost/type_traits/remove_all_extents.hpp
+epoc32/include/stdapis/boost/type_traits/remove_bounds.hpp
+epoc32/include/stdapis/boost/type_traits/remove_const.hpp
+epoc32/include/stdapis/boost/type_traits/remove_cv.hpp
+epoc32/include/stdapis/boost/type_traits/remove_extent.hpp
+epoc32/include/stdapis/boost/type_traits/remove_pointer.hpp
+epoc32/include/stdapis/boost/type_traits/remove_reference.hpp
+epoc32/include/stdapis/boost/type_traits/remove_volatile.hpp
+epoc32/include/stdapis/boost/type_traits/same_traits.hpp
+epoc32/include/stdapis/boost/type_traits/transform_traits.hpp
+epoc32/include/stdapis/boost/type_traits/type_with_alignment.hpp
+epoc32/include/stdapis/boost/utility.hpp
+epoc32/include/stdapis/boost/utility/addressof.hpp
+epoc32/include/stdapis/boost/utility/base_from_member.hpp
+epoc32/include/stdapis/boost/utility/compare_pointees.hpp
+epoc32/include/stdapis/boost/utility/detail/result_of_iterate.hpp
+epoc32/include/stdapis/boost/utility/enable_if.hpp
+epoc32/include/stdapis/boost/utility/result_of.hpp
+epoc32/include/stdapis/boost/utility/value_init.hpp
+epoc32/include/stdapis/boost/variant/apply_visitor.hpp
+epoc32/include/stdapis/boost/variant/bad_visit.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_binary.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_delayed.hpp
+epoc32/include/stdapis/boost/variant/detail/apply_visitor_unary.hpp
+epoc32/include/stdapis/boost/variant/detail/backup_holder.hpp
+epoc32/include/stdapis/boost/variant/detail/bool_trait_def.hpp
+epoc32/include/stdapis/boost/variant/detail/bool_trait_undef.hpp
+epoc32/include/stdapis/boost/variant/detail/cast_storage.hpp
+epoc32/include/stdapis/boost/variant/detail/config.hpp
+epoc32/include/stdapis/boost/variant/detail/enable_recursive.hpp
+epoc32/include/stdapis/boost/variant/detail/enable_recursive_fwd.hpp
+epoc32/include/stdapis/boost/variant/detail/forced_return.hpp
+epoc32/include/stdapis/boost/variant/detail/generic_result_type.hpp
+epoc32/include/stdapis/boost/variant/detail/has_nothrow_move.hpp
+epoc32/include/stdapis/boost/variant/detail/has_trivial_move.hpp
+epoc32/include/stdapis/boost/variant/detail/initializer.hpp
+epoc32/include/stdapis/boost/variant/detail/make_variant_list.hpp
+epoc32/include/stdapis/boost/variant/detail/move.hpp
+epoc32/include/stdapis/boost/variant/detail/over_sequence.hpp
+epoc32/include/stdapis/boost/variant/detail/substitute.hpp
+epoc32/include/stdapis/boost/variant/detail/substitute_fwd.hpp
+epoc32/include/stdapis/boost/variant/detail/variant_io.hpp
+epoc32/include/stdapis/boost/variant/detail/visitation_impl.hpp
+epoc32/include/stdapis/boost/variant/get.hpp
+epoc32/include/stdapis/boost/variant/recursive_variant.hpp
+epoc32/include/stdapis/boost/variant/recursive_wrapper.hpp
+epoc32/include/stdapis/boost/variant/recursive_wrapper_fwd.hpp
+epoc32/include/stdapis/boost/variant/static_visitor.hpp
+epoc32/include/stdapis/boost/variant/variant.hpp
+epoc32/include/stdapis/boost/variant/variant_fwd.hpp
+epoc32/include/stdapis/boost/variant/visitor_ptr.hpp
+epoc32/include/stdapis/boost/vector_property_map.hpp
+epoc32/include/stdapis/boost/version.hpp
+epoc32/include/stdapis/boost/visit_each.hpp
+epoc32/include/stdapis/boost/weak_ptr.hpp
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-address.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-arch-deps.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-bus.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-connection.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-errors.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-bindings.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-error-enum.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib-lowlevel.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-glib.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-gtype-specialized.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-macros.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-memory.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-message.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-misc.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-pending-call.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-protocol.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-server.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-shared.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-signature.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-threads.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus-types.h
+epoc32/include/stdapis/dbus-1.0/dbus/dbus.h
+epoc32/include/stdapis/ftw.h
+epoc32/include/stdapis/net/if_var.h
+epoc32/include/stdapis/net/radix.h
+epoc32/include/stdapis/net/route.h
+epoc32/include/stdapis/pipsversion.h
+epoc32/include/stdapis/sys/aeselect.h
+epoc32/include/stdapis/sys/un.h
+epoc32/include/strng.inl
+epoc32/include/swi/appversion.h
+epoc32/include/swi/appversion.inl
+epoc32/include/swi/pkgremover.h
+epoc32/include/swi/pkgremovererrors.h
+epoc32/include/syncmlalertinfo.h
+epoc32/include/syncmlclient.h
+epoc32/include/syncmlclientdm.h
+epoc32/include/syncmlclientds.h
+epoc32/include/syncmlcontactsuiteprogressclient.h
+epoc32/include/syncmldatafilter.h
+epoc32/include/syncmldatafilter.hrh
+epoc32/include/syncmldatafilter.rh
+epoc32/include/syncmldef.h
+epoc32/include/syncmlerr.h
+epoc32/include/syncmlhistory.h
+epoc32/include/syncmlobservers.h
+epoc32/include/syncmltransportproperties.h
+epoc32/include/tcp_hdr.h
+epoc32/include/tcpseq.h
+epoc32/include/template/mconf.h
+epoc32/include/template/specific/iolines.h
+epoc32/include/test/datawrapper.inl
+epoc32/include/test/fileservplugin.h
+epoc32/include/test/rfileloggermacro.h
+epoc32/include/test/sysstartplugin.h
+epoc32/include/test/tefshareddata.inl
+epoc32/include/test/testblockcontroller.inl
+epoc32/include/test/testexecuteserverutils.inl
+epoc32/include/test/testshareddata.inl
+epoc32/include/testconfigfileparser.inl
+epoc32/include/tia637.h
+epoc32/include/tmsvsystemprogress.h
+epoc32/include/tools/certapp-api.h
+epoc32/include/tools/elfdefs.h
+epoc32/include/tools/stlport/ciso646
+epoc32/include/tools/stlport/iso646.h
+epoc32/include/tools/stlport/rlocks.h
+epoc32/include/tools/stlport/stl/_alloc_old.h
+epoc32/include/tools/stlport/stl/_carray.h
+epoc32/include/tools/stlport/stl/_cctype.h
+epoc32/include/tools/stlport/stl/_clocale.h
+epoc32/include/tools/stlport/stl/_csetjmp.h
+epoc32/include/tools/stlport/stl/_csignal.h
+epoc32/include/tools/stlport/stl/_cstdarg.h
+epoc32/include/tools/stlport/stl/_cstddef.h
+epoc32/include/tools/stlport/stl/_cstdio.h
+epoc32/include/tools/stlport/stl/_cstdlib.h
+epoc32/include/tools/stlport/stl/_cstring.h
+epoc32/include/tools/stlport/stl/_ctime.h
+epoc32/include/tools/stlport/stl/_cwctype.h
+epoc32/include/tools/stlport/stl/_ioserr.h
+epoc32/include/tools/stlport/stl/_iostream_string.h
+epoc32/include/tools/stlport/stl/_mbstate_t.h
+epoc32/include/tools/stlport/stl/_move_construct_fwk.h
+epoc32/include/tools/stlport/stl/_sparc_atomic.h
+epoc32/include/tools/stlport/stl/_stdexcept.h
+epoc32/include/tools/stlport/stl/_stdexcept_base.h
+epoc32/include/tools/stlport/stl/_stlport_version.h
+epoc32/include/tools/stlport/stl/_string_base.h
+epoc32/include/tools/stlport/stl/_string_npos.h
+epoc32/include/tools/stlport/stl/_string_operators.h
+epoc32/include/tools/stlport/stl/_string_sum.h
+epoc32/include/tools/stlport/stl/_string_workaround.h
+epoc32/include/tools/stlport/stl/_typeinfo.h
+epoc32/include/tools/stlport/stl/_unordered_map.h
+epoc32/include/tools/stlport/stl/_unordered_set.h
+epoc32/include/tools/stlport/stl/boost_type_traits.h
+epoc32/include/tools/stlport/stl/config/_aix.h
+epoc32/include/tools/stlport/stl/config/_apcc.h
+epoc32/include/tools/stlport/stl/config/_apple.h
+epoc32/include/tools/stlport/stl/config/_as400.h
+epoc32/include/tools/stlport/stl/config/_auto_link.h
+epoc32/include/tools/stlport/stl/config/_bc.h
+epoc32/include/tools/stlport/stl/config/_como.h
+epoc32/include/tools/stlport/stl/config/_cray.h
+epoc32/include/tools/stlport/stl/config/_cygwin.h
+epoc32/include/tools/stlport/stl/config/_dec.h
+epoc32/include/tools/stlport/stl/config/_dec_vms.h
+epoc32/include/tools/stlport/stl/config/_detect_dll_or_lib.h
+epoc32/include/tools/stlport/stl/config/_dm.h
+epoc32/include/tools/stlport/stl/config/_evc.h
+epoc32/include/tools/stlport/stl/config/_freebsd.h
+epoc32/include/tools/stlport/stl/config/_fujitsu.h
+epoc32/include/tools/stlport/stl/config/_gcc.h
+epoc32/include/tools/stlport/stl/config/_hpacc.h
+epoc32/include/tools/stlport/stl/config/_hpux.h
+epoc32/include/tools/stlport/stl/config/_ibm.h
+epoc32/include/tools/stlport/stl/config/_icc.h
+epoc32/include/tools/stlport/stl/config/_intel.h
+epoc32/include/tools/stlport/stl/config/_kai.h
+epoc32/include/tools/stlport/stl/config/_linux.h
+epoc32/include/tools/stlport/stl/config/_mac.h
+epoc32/include/tools/stlport/stl/config/_macosx.h
+epoc32/include/tools/stlport/stl/config/_mlc.h
+epoc32/include/tools/stlport/stl/config/_msvc.h
+epoc32/include/tools/stlport/stl/config/_mwccnlm.h
+epoc32/include/tools/stlport/stl/config/_mwerks.h
+epoc32/include/tools/stlport/stl/config/_native_headers.h
+epoc32/include/tools/stlport/stl/config/_netware.h
+epoc32/include/tools/stlport/stl/config/_openbsd.h
+epoc32/include/tools/stlport/stl/config/_sgi.h
+epoc32/include/tools/stlport/stl/config/_solaris.h
+epoc32/include/tools/stlport/stl/config/_sunprocc.h
+epoc32/include/tools/stlport/stl/config/_symantec.h
+epoc32/include/tools/stlport/stl/config/_system.h
+epoc32/include/tools/stlport/stl/config/_warnings_off.h
+epoc32/include/tools/stlport/stl/config/_watcom.h
+epoc32/include/tools/stlport/stl/config/_windows.h
+epoc32/include/tools/stlport/stl/config/compat.h
+epoc32/include/tools/stlport/stl/config/features.h
+epoc32/include/tools/stlport/stl/config/host.h
+epoc32/include/tools/stlport/stl/config/stl_mycomp.h
+epoc32/include/tools/stlport/stl/config/user_config.h
+epoc32/include/tools/stlport/stl/debug/_string_sum_methods.h
+epoc32/include/tools/stlport/stl/pointers/_tools.h
+epoc32/include/tools/stlport/stl/type_manips.h
+epoc32/include/tools/stlport/unordered_map
+epoc32/include/tools/stlport/unordered_set
+epoc32/include/tools/stlport/using/export
+epoc32/include/tsy.hrh
+epoc32/include/tsy.rh
+epoc32/include/tuladdressstringtokenizer.h
+epoc32/include/tulpanics.h
+epoc32/include/tulphonenumberutils.h
+epoc32/include/tulstringresourcereader.h
+epoc32/include/tultextresourceutils.h
+epoc32/include/udp_hdr.h
+epoc32/include/vg/1.1/openvg.h
+epoc32/include/vg/1.1/vgu.h
+epoc32/include/w32stdgraphic.h
+epoc32/include/wap_sock.h
+epoc32/include/wappdef.h
+epoc32/include/waptestutils.h
+epoc32/include/wbconverter.h
+epoc32/include/wins/variantmediadef.h
+epoc32/include/wins/winscomm.h
+epoc32/include/wins/winscomm.inl
+epoc32/include/wtlskeys.h
+epoc32/include/x509keys.h
+epoc32/include/xmlelemt.h
+epoc32/include/xmlentityreferences.h
+epoc32/include/xmllib.h