'The bottle WSGI-interface.'

def wsgi(self, environ, start_response):

    try:
        out = self._cast(self._handle(environ))
        if ((response._status_code in (100, 101, 204, 304)) or (environ['REQUEST_METHOD'] == 'HEAD')):
            if hasattr(out, 'close'):
                out.close()
            out = []
        start_response(response._status_line, response.headerlist)
        return out
    except (KeyboardInterrupt, SystemExit, MemoryError):
        raise
    except:
        if (not self.catchall):
            raise
        err = ('<h1>Critical    error    while    processing    request:    %s</h1>' % html_escape(environ.get('PATH_INFO', '/')))
        if DEBUG:
            err += ('<h2>Error:</h2>\n<pre>\n%s\n</pre>\n<h2>Traceback:</h2>\n<pre>\n%s\n</pre>\n' % (html_escape(repr(_e())), html_escape(format_exc())))
        environ['wsgi.errors'].write(err)
        headers = [('Content-Type', 'text/html;    charset=UTF-8')]
        start_response('500    INTERNAL    SERVER    ERROR', headers, sys.exc_info())
        return [tob(err)]
